User.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Models\Consultants;
  4. use App\Models\Institution;
  5. use App\Models\Order;
  6. use App\Models\Review;
  7. use App\Services\ToolsServices;
  8. use App\Services\UserService;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Cache;
  11. use Illuminate\Support\Facades\Log;
  12. use Yansongda\LaravelPay\Facades\Pay;
  13. class User
  14. {
  15. public static function login(Request $request)
  16. {
  17. $code = $request->input('code');
  18. if (empty($code)) {
  19. return ToolsServices::error('code');
  20. }
  21. $appid = 'wxfb03a1f6f60d6471';
  22. $appsecret = 'd4dbcb5db48fdb2a09727518f68a6cb1';
  23. $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$appsecret&js_code=$code&grant_type=authorization_code";
  24. $result = file_get_contents($url);
  25. $result = json_decode($result, true);
  26. Log::info('sss', ['result' => $result]);
  27. if (isset($result['errcode']) && $result['errcode'] != 0) {
  28. return ToolsServices::error($result['errmsg']);
  29. }
  30. if (!isset($result['session_key'])){
  31. return ToolsServices::error('登录失败');
  32. }
  33. $openid = $result['openid'];
  34. $session_key = $result['session_key'];
  35. $info = \App\Models\User::getInfoByOpenid($openid);
  36. if ($info) {
  37. if ($info['session_key'] != $session_key) {
  38. \App\Models\User::updateByOpenid($openid,['session_key'=>$session_key]);
  39. $request->session()->forget(md5($info['session_key']));
  40. }
  41. unset($info['session_key']);
  42. }else{
  43. $data = [
  44. 'nickname' => 'XL'.time().mt_rand(1000,9999),
  45. 'openid' => $openid,
  46. 'session_key' => $session_key,
  47. 'avater' => 'https://ocr.lfwhzb.com/image/avater.jpeg',
  48. ];
  49. $id = \App\Models\User::insert($data);
  50. $info = \App\Models\User::getInfoById($id);
  51. }
  52. $token = md5($session_key);
  53. $info['token'] = $token;
  54. Cache::put($token,$info['id'],86400);
  55. return ToolsServices::returnAdmin(0,$info);
  56. }
  57. public static function modifyUserInfo(Request $request){
  58. $save = [];
  59. $nickname = $request->input('nickname');
  60. if (!empty($nickname)){
  61. $save['nickname'] = $nickname;
  62. }
  63. $avatar = $request->file('avater');
  64. Log::info('sss', ['avatar' => $avatar]);
  65. if (!empty($avatar)){
  66. $avatar = $avatar->store('image');
  67. $save['avater'] = 'https://ocr.lfwhzb.com/'.$avatar;
  68. }else{
  69. $avatar = $request->input('avater');
  70. if (!empty($avatar)){
  71. $save['avater'] = $avatar;
  72. }
  73. }
  74. $desc = $request->input('desc');
  75. if (!empty($desc)){
  76. $save['desc'] = $desc;
  77. }
  78. $id = Cache::get($request->header('token'));
  79. if (!empty($save)){
  80. \App\Models\User::updateById($id,$save);
  81. }
  82. $info = \App\Models\User::getInfoById($id);
  83. return ToolsServices::returnAdmin(0,$info);
  84. }
  85. public static function getUserInfo(Request $request){
  86. $id = $request->post('id',Cache::get($request->header('token')));
  87. $info = UserService::getUserInfoByUserId($id);
  88. return ToolsServices::returnAdmin(0,$info);
  89. }
  90. public static function focus(Request $request){
  91. $id = $request->post('id',Cache::get($request->header('token')));
  92. $user_id = $request->input('user_id');
  93. UserService::focus($id,$user_id);
  94. return ToolsServices::returnAdmin(0,[]);
  95. }
  96. public static function delFocus(Request $request){
  97. $id = $request->post('id',Cache::get($request->header('token')));
  98. $user_id = $request->input('user_id');
  99. UserService::delFocus($id,$user_id);
  100. return ToolsServices::returnAdmin(0,[]);
  101. }
  102. public static function switchIdentity(Request $request){
  103. $id = $request->post('id',Cache::get($request->header('token')));
  104. $identity = $request->input('identity',0);
  105. if ($identity == 1){
  106. $info = Consultants::checkConsultants($id);
  107. if (empty($info)){
  108. return ToolsServices::returnAdmin(0,['result'=>false]);
  109. }
  110. }
  111. if ($identity == 2) {
  112. $info = Institution::checkInstitution($id);
  113. if (empty($info)){
  114. return ToolsServices::returnAdmin(0,['result'=>false]);
  115. }
  116. }
  117. \App\Models\User::updateById($id,['identity'=>$identity]);
  118. return ToolsServices::returnAdmin(0,['result'=>true]);
  119. }
  120. public function pay(Request $request)
  121. {
  122. $id = $request->post('id',Cache::get($request->header('token')));
  123. $order_id = $request->input('order_id');
  124. $orderInfo = Order::getOrderInfoByOutTradeNo($order_id);
  125. if (empty($orderInfo)){
  126. return ToolsServices::returnAdmin(0,['result'=>false]);
  127. }
  128. $info = UserService::getUserInfoByUserId($id);
  129. $order = [
  130. 'openid' => $info["openid"],
  131. 'out_trade_no' => $orderInfo["out_trade_no"],
  132. 'total_fee' => $orderInfo["total_fee"], // **单位:分**
  133. 'body' => "订阅",
  134. ];
  135. $result = Pay::wechat()->miniapp($order)->toArray();
  136. return ToolsServices::returnAdmin(0, $result);
  137. }
  138. public static function reviewLog(Request $request)
  139. {
  140. $id = $request->post('id',Cache::get($request->header('token')));
  141. $page = $request->input('page', 1);
  142. $limit = $request->input('limit', 10);
  143. $los = Review::getList($id,$page,$limit);
  144. return ToolsServices::returnAdmin(0,$los);
  145. }
  146. public static function review(Request $request)
  147. {
  148. $id = $request->post('id',Cache::get($request->header('token')));
  149. $file = $request->file('file');
  150. $file = $file->store('review');
  151. $data = [
  152. 'user_id' => $id,
  153. 'file_name' => $file
  154. ];
  155. $pay_id = $request->input('pay_id');
  156. $priceList = array_column(self::$price,null,'id');
  157. if (Review::insertData($data)){
  158. $price = $priceList[$pay_id]['total_fee'];
  159. $orderId = 'XL-'.time().'-'.mt_rand(1000,9999);
  160. $orderInfo = [
  161. 'user_id' => $id,
  162. 'out_trade_no' => $orderId,
  163. 'total_fee' => $price,
  164. ];
  165. Order::insertData($orderInfo);
  166. return ToolsServices::returnAdmin(0,['result'=>true,'order_id'=>$orderId]);
  167. }else{
  168. return ToolsServices::returnAdmin(0,['result'=>false,'order_id' => '']);
  169. }
  170. }
  171. static $price = [
  172. [
  173. 'id' => 1,
  174. 'type' => 1,
  175. 'price' => 29,
  176. 'total_fee' => 2900,
  177. 'original_price' => 39,
  178. 'title' => '试一下',
  179. 'desc' => '近测评本次',
  180. ],[
  181. 'id' => 2,
  182. 'type' => 2,
  183. 'price' => 79,
  184. 'total_fee' => 7900,
  185. 'original_price' => 156,
  186. 'title' => '包年会员',
  187. 'desc' => '一年可测评4次',
  188. ],[
  189. 'id' => 3,
  190. 'type' => 1,
  191. 'price' => 59,
  192. 'total_fee' => 5900,
  193. 'original_price' => 99,
  194. 'title' => '人工解读',
  195. 'desc' => '仅限本次',
  196. ],
  197. ];
  198. public static function getPrice(Request $request)
  199. {
  200. return ToolsServices::returnAdmin(0,['result'=>self::$price]);
  201. }
  202. public static function getResult(Request $request) {
  203. $id = $request->post('id',Cache::get($request->header('token')));
  204. $logId = $request->post('log_id');
  205. $log = Review::getInfoById($logId,$id);
  206. $text = $log['result'];
  207. if (empty($text)){
  208. $text = '正在处理中。。。';
  209. }
  210. return ToolsServices::returnAdmin(0,['text'=>$text]);
  211. }
  212. }