User.php 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248
  1. <?php
  2. namespace app\api\controller\v1;
  3. use app\api\services\UserServices;
  4. use app\common\model\ActiveLogModel;
  5. use app\common\model\BoxRecordModel;
  6. use app\common\model\CouponnumLogModel;
  7. use app\common\model\MedalLogModel;
  8. use app\common\model\MoneyLogModel;
  9. use app\common\model\PaymentModel;
  10. use app\common\model\RedStorePoolModel;
  11. use app\common\model\ScoreAwayLogModel;
  12. use app\common\model\ScoreLock1LogModel;
  13. use app\common\model\ScorelockLogModel;
  14. use app\common\model\ScoreLog;
  15. use app\common\model\ScoreLogModel;
  16. use app\common\model\SuggestModel;
  17. use app\common\model\TzLogModel;
  18. use app\common\model\UserDataModel;
  19. use app\common\model\UserModel;
  20. use app\common\model\UserMoneyModel;
  21. use app\common\model\UserUnmoneyModel;
  22. use app\common\model\WithDrawLogModel;
  23. use app\common\model\XzLogModel;
  24. use app\model\UserWithdrawalModel;
  25. use app\Request;
  26. use app\api\validate\UserValidate;
  27. use jobs\UserJobs;
  28. use think\cache\driver\Redis;
  29. use think\Exception;
  30. use think\exception\ValidateException;
  31. use think\facade\Db;
  32. use utils\Queue;
  33. use function Sodium\library_version_minor;
  34. class User
  35. {
  36. protected $service = null;
  37. public function __construct( UserServices $services)
  38. {
  39. $this->service = $services;
  40. }
  41. // 用户注册
  42. public function register(Request $request)
  43. {
  44. // 这是测试 上线要干掉
  45. // echo '网站正在更新';
  46. // die();
  47. $params = $request->post();
  48. try {
  49. validate(UserValidate::class)->scene('register')->check($params);
  50. if (!vertifyPass(AESjiemi($params['password']))){
  51. throw new Exception('密码必须包含字母和数字,长度大于8位');
  52. }
  53. if (!vertifyUserName($params['user_name'])){
  54. throw new Exception('用户名必须包含字母和数字,长度大于6位小于15位');
  55. }
  56. $params['password'] = AESjiemi($params['password']);
  57. return api_succ_return($this->service->userRegister($params));
  58. }catch (ValidateException $e){
  59. return api_error_return($e->getMessage());
  60. }catch (Exception $e){
  61. return api_error_return($e->getMessage());
  62. }
  63. }
  64. // 注册获取上级信息
  65. public function registerUpUser(Request $request, UserModel $model){
  66. Db::startTrans();
  67. try {
  68. $scanCode = $request->post('scan_code');
  69. if (empty($scanCode) || !$scanCode){
  70. return api_error_return('参数错误');
  71. }
  72. $params = getUrlParams($scanCode);
  73. $is_px = false;
  74. $upuser = $model->where('code', $params['code'])->field('nickname,mobile,px_code,code,avatar')->withAttr('avatar', function($val, $data){
  75. return __HTTPIMG($val);
  76. })->find();
  77. if (!$upuser){
  78. $upuser = $model->where('px_code', $params['code'])->field('nickname,px_code,code,avatar,mobile')->withAttr('avatar', function($val, $data){
  79. return __HTTPIMG($val);
  80. })->find();
  81. $is_px = true;
  82. }
  83. if (!$upuser){
  84. return api_error_return('查询失败,暂无用户');
  85. }
  86. $upuser['mobile'] = substr($upuser['mobile'], 0, 3).'****'.substr($upuser['mobile'], 7);
  87. $upuser['share_way'] = $is_px?2:1;
  88. Db::commit();
  89. }catch (\Exception $e){
  90. Db::rollback();
  91. return api_error_return($e->getMessage());
  92. }
  93. return api_succ_return(['msg'=>'成功', 'data'=>['user'=>$upuser]]);
  94. }
  95. // 退出登录
  96. public function logout(Request $request){
  97. Db::startTrans();
  98. try {
  99. Db::commit();
  100. }catch (\Exception $e){
  101. Db::rollback();
  102. }
  103. return api_succ_return('成功');
  104. }
  105. // 登录
  106. public function login(Request $request){
  107. $curandroid = env('app.CUR_ANDROID_VERSION', '');
  108. $curios = env('app.CUR_IOS_VERSION', '');;
  109. $curAndroidVersion = str_replace('.', '', $curandroid);
  110. $curAndroidVersion = dispRepair($curAndroidVersion, 4, '0', '0');
  111. $curIosVersion = str_replace('.', '', $curios);
  112. $curIosVersion = dispRepair($curIosVersion, 4, '0', '0');
  113. $app_sources = $request->param('app_sources');
  114. $app_version = $request->param('app_version');
  115. $app_version = str_replace('.', '', $app_version);
  116. $app_version = dispRepair($app_version, 4, '0', '0');
  117. $param = $request->param();
  118. Db::startTrans();
  119. try {
  120. validate(UserValidate::class)->scene('login')->check($param);
  121. $data = $this->service->userLogin($param);
  122. Db::commit();
  123. return api_succ_return($data);
  124. }catch (ValidateException $e){
  125. Db::rollback();
  126. return api_error_return($e->getMessage());
  127. }catch (Exception $e){
  128. Db::rollback();
  129. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  130. }
  131. }
  132. // 编辑用户信息
  133. public function editUserInfo(Request $request){
  134. $param = $request->param();
  135. try {
  136. return api_succ_return($this->service->setUserInfo($request->uid, $param));
  137. }catch (Exception $e){
  138. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  139. }
  140. }
  141. // 编辑用户信息
  142. public function setSellerPayWay(Request $request){
  143. $param = $request->param();
  144. try {
  145. return api_succ_return($this->service->setSellerPayWay($request->uid, $param));
  146. }catch (Exception $e){
  147. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  148. }
  149. }
  150. // 用户信息
  151. public function userInfo(Request $request, UserModel $model)
  152. {
  153. Db::startTrans();
  154. try {
  155. $post = $request->param();
  156. $user = $model->getUserDetailByUid($request->uid);
  157. $time = time();
  158. unset($user['password']);
  159. unset($user['status']);
  160. unset($user['login_count']);
  161. unset($user['login_ip']);
  162. unset($user['login_time']);
  163. Db::commit();
  164. return api_succ_return(['msg'=>'个人信息获取成功', 'data'=>$user]);
  165. }catch (\Exception $e){
  166. Db::rollback();
  167. return api_error_return($e->getMessage());
  168. }
  169. }
  170. // 修改登录密码
  171. public function editLoginPass(Request $request, UserModel $model)
  172. {
  173. try {
  174. return $model->editLoginPass($request);
  175. }catch (\Exception $e){
  176. return api_error_return($e->getMessage());
  177. }
  178. }
  179. // 修改安全密码
  180. public function editSecurityPass(Request $request, UserModel $model)
  181. {
  182. try {
  183. return $model->editSecurityPass($request);
  184. }catch (\Exception $e){
  185. return api_error_return($e->getMessage());
  186. }
  187. }
  188. // 余额记录
  189. public function moneyLog (Request $request, MoneyLogModel $model)
  190. {
  191. try {
  192. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  193. } catch (\Exception $e) {
  194. return api_error_return('失败');
  195. }
  196. }
  197. // 积分记录
  198. public function scoreLog (Request $request, ScoreLogModel $model)
  199. {
  200. try {
  201. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  202. } catch (\Exception $e) {
  203. return api_error_return('失败');
  204. }
  205. }
  206. // jh记录
  207. public function jhLog (Request $request, TzLogModel $model)
  208. {
  209. try {
  210. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  211. } catch (\Exception $e) {
  212. return api_error_return('失败');
  213. }
  214. }
  215. // 福利积分记录
  216. public function scoreAwayLog (Request $request, ScoreAwayLogModel $model)
  217. {
  218. try {
  219. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  220. } catch (\Exception $e) {
  221. return api_error_return('失败');
  222. }
  223. }
  224. public function scoreLockLog (Request $request, ScoreLock1LogModel $model)
  225. {
  226. try {
  227. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  228. } catch (\Exception $e) {
  229. return api_error_return('失败');
  230. }
  231. }
  232. // 抢购值记录
  233. public function couponNumLog (Request $request, CouponnumLogModel $model)
  234. {
  235. try {
  236. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  237. } catch (\Exception $e) {
  238. return api_error_return('失败');
  239. }
  240. }
  241. // 星钻记录
  242. public function xzLog (Request $request, XzLogModel $model)
  243. {
  244. try {
  245. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  246. } catch (\Exception $e) {
  247. return api_error_return('失败');
  248. }
  249. }
  250. // 勋章记录
  251. public function medalLog (Request $request, MedalLogModel $model)
  252. {
  253. try {
  254. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  255. } catch (\Exception $e) {
  256. return api_error_return('失败');
  257. }
  258. }
  259. // 团队数据
  260. public function teamData(Request $request, UserModel $model){
  261. try {
  262. return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansData($request->uid)]);
  263. } catch (\Exception $e) {
  264. return api_error_return($e->getMessage());
  265. }
  266. }
  267. // 团队列表
  268. public function teamList(Request $request, UserModel $model){
  269. try {
  270. return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansList($request->uid, $request->post('limit'), $request->post('type'), $request->post('keyword'))]);
  271. } catch (\Exception $e) {
  272. return api_error_return($e->getMessage());
  273. }
  274. }
  275. // 团队信息
  276. public function teamInfo(Request $request){
  277. $uid = $request->uid;
  278. $display_ids = env('app.NOT_OPEN_GOODS_ID');
  279. $has_display = false;
  280. if (strpos($display_ids, strval($uid)) !== false){
  281. $has_display = true;
  282. }
  283. $data = [
  284. 'zt_valid'=>Db::name('user')->where('pid', $uid)->where('has_fd', 1)->count('id'),
  285. 'zt_total'=>Db::name('user')->where('pid', $uid)->count('id'),
  286. 'zt_teamtotal'=>Db::name('user')->whereFindInSet('path', $uid)->count('id'),
  287. 'zt_teamvalid'=>Db::name('user')->whereFindInSet('path', $uid)->where('has_fd', 1)->count('id'),
  288. 'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):''
  289. ];
  290. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  291. }
  292. // 直推列表
  293. public function directListData(Request $request, UserModel $model){
  294. try {
  295. return api_succ_return(['msg'=>'成功', 'data'=>$model->getDirectDataList($request->uid, $request->post('is_auth'), $request->post('limit'), $request->post('keyworld'))]);
  296. }catch (Exception $e){
  297. return api_error_return($e->getMessage());
  298. }
  299. }
  300. // 活跃点明细
  301. public function activeLog(Request $request, ActiveLogModel $model){
  302. try {
  303. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  304. }catch (Exception $e){
  305. return api_error_return($e->getMessage());
  306. }
  307. }
  308. // 反馈建议
  309. public function suggestSubmit(Request $request, SuggestModel $model){
  310. $post = $request->post();
  311. Db::startTrans();
  312. try {
  313. $model->insert([
  314. 'type'=>2,
  315. 'uid'=>$request->uid,
  316. 'created_time'=>sr_getcurtime(time()),
  317. 'content'=>$post['content']
  318. ]);
  319. Db::commit();
  320. }catch (\Exception $e){
  321. Db::rollback();
  322. return api_error_return('失败'.$e->getMessage());
  323. }
  324. return api_succ_return('成功');
  325. }
  326. // 用户升星
  327. public function upgradeLevel (Request $request, UserServices $services)
  328. {
  329. try {
  330. return $services->upgradeStar($request);
  331. } catch (Exception $e) {
  332. return api_succ_return(['code'=>$e->getCode(), 'msg'=>$e->getMessage()]);
  333. }
  334. }
  335. // 用户星钻升星
  336. public function upgradeXzLevel (Request $request, UserServices $services)
  337. {
  338. return api_error_return('success');
  339. if (!getServiceTop()){
  340. return api_error_return('success');
  341. }
  342. try {
  343. return $services->upgradeXzStar($request);
  344. } catch (Exception $e) {
  345. return api_succ_return(['code'=>$e->getCode(), 'msg'=>$e->getMessage()]);
  346. }
  347. }
  348. // 勋章兑换
  349. public function medalExchange (Request $request, UserModel $model)
  350. {
  351. $post = $request->post();
  352. Db::startTrans();
  353. try {
  354. $model->medalExchange($request->uid, $post['number']);
  355. Db::commit();
  356. }catch (\Exception $e){
  357. Db::rollback();
  358. // if ($e->getCode() == 399){
  359. // return api_error_return(['msg'=>'请设置安全密码', 'code'=>399]);
  360. // }
  361. return api_error_return($e->getMessage());
  362. }
  363. return api_succ_return('兑换成功');
  364. }
  365. // redPoolList
  366. public function redStorePoolList(Request $request, RedStorePoolModel $model)
  367. {
  368. try {
  369. // return $model->getUserStoreRedPoolList($request->uid, $request->post('limit'), $request, $request->post('page'));
  370. return api_succ_return(['msg'=>'获取成功', 'data'=>$model->getUserStoreRedPoolList($request->uid, $request->post('limit'), $request, $request->post('page'))]);
  371. } catch (\Exception $e) {
  372. return api_error_return('获取失败'.$e->getMessage());
  373. }
  374. }
  375. // 获取红包
  376. public function getStoreRed(Request $request, RedStorePoolModel $model)
  377. {
  378. if (!$request->data['id']){
  379. return api_error_return('参数错误');
  380. }
  381. Db::startTrans();
  382. try {
  383. $model->getStoreRed($request);
  384. Db::commit();
  385. } catch (Exception $e){
  386. Db::rollback();
  387. return api_error_return($e->getMessage());
  388. }
  389. return api_succ_return('领取成功');
  390. }
  391. // 提货券列表
  392. public function getLockScoreLog(Request $request, ScorelockLogModel $model){
  393. try {
  394. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  395. } catch (\Exception $e) {
  396. return api_error_return('失败');
  397. }
  398. }
  399. // 积分兑换成余额
  400. public function scoreExchangeMoney(Request $request, UserModel $model){
  401. return api_error_return('兑换失败,此功能将在后续关闭');
  402. // 校验订单是否正确
  403. if (getSysOrderStatusBackError()){
  404. return api_error_return('订单校验失败,请联系客服');
  405. }
  406. Db::startTrans();
  407. try {
  408. $model->scoreExchangeMoney($request->uid, $request->post('score'));
  409. Db::commit();
  410. }catch (\Exception $e){
  411. Db::rollback();
  412. return api_error_return($e->getMessage());
  413. }
  414. return api_succ_return('兑换成功');
  415. }
  416. /**
  417. * 余额兑换成积分
  418. * @param Request $request
  419. * @param UserModel $model
  420. * @return \think\Response
  421. */
  422. public function moneyExchangeScore(Request $request, UserModel $model){
  423. Db::startTrans();
  424. try {
  425. $model->moneyExchangescore($request->uid, $request->post('money'));
  426. Db::commit();
  427. }catch (\Exception $e){
  428. Db::rollback();
  429. return api_error_return($e->getMessage());
  430. }
  431. return api_succ_return('兑换成功');
  432. }
  433. /**
  434. * 分红任务包分红记录
  435. * @param Request $request
  436. * @param UserMoneyModel $model
  437. * @return \think\Response
  438. * @throws \think\db\exception\DbException
  439. */
  440. public function getRwMoneyLog(Request $request, UserMoneyModel $model){
  441. $type_conf = config('type.money');
  442. $list = $model->where('uid', $request->uid)
  443. ->where('type', 5)
  444. ->field('money,id,type,create_at,state')
  445. ->withAttr('type', function ($value, $data) use ($type_conf) {
  446. return isset($type_conf[$value]) ? $type_conf[$value] : '未知类型';
  447. })
  448. ->withAttr('create_at', function ($value, $data){
  449. return date("Y-m-d",strtotime($value));
  450. })
  451. ->order('create_at', 'desc')
  452. ->paginate($request->data['limit'])
  453. ->toArray();
  454. return api_succ_return(['msg'=>'成功', 'data'=>$list['data']]);
  455. }
  456. /**
  457. * 提现记录
  458. * @param Request $request
  459. * @param WithDrawLogModel $model
  460. * @return \think\Response
  461. */
  462. public function withdrawLog (Request $request, WithDrawLogModel $model)
  463. {
  464. try {
  465. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  466. } catch (\Exception $e) {
  467. return api_error_return($e->getMessage());
  468. }
  469. }
  470. /**
  471. * 绑定提现账号
  472. * @param Request $request
  473. * @param UserServices $service
  474. * @return \think\Response
  475. */
  476. public function bangWithdrawInfo(Request $request, UserServices $service)
  477. {
  478. Db::startTrans();
  479. try {
  480. $service->bangWithdrawInfo($request->uid, $request->post('type'), $request->post('number'), $request->post('name'));
  481. Db::commit();
  482. }catch (Exception $e){
  483. Db::rollback();
  484. return api_error_return($e->getMessage());
  485. }
  486. return api_succ_return('绑定成功');
  487. }
  488. /**
  489. * 解绑提现账号
  490. * @param Request $request
  491. * @param UserServices $service
  492. * @return \think\Response
  493. */
  494. public function unBangWithdrawInfo(Request $request, UserServices $service)
  495. {
  496. Db::startTrans();
  497. try {
  498. $service->unbangWithdrawInfo($request->uid, $request->post('type'));
  499. Db::commit();
  500. }catch (Exception $e){
  501. Db::rollback();
  502. return api_error_return($e->getMessage());
  503. }
  504. return api_succ_return('解绑成功');
  505. }
  506. /**
  507. * 用户转赠提交
  508. * @param Request $request
  509. * @param UserServices $service
  510. * @return \think\Response
  511. */
  512. public function exchargeSubmit(Request $request, UserServices $service){
  513. return api_error_return("星钻转赠以下线");
  514. $post = $request->post();
  515. if ($request->user['mobile'] == $post['mobile']){
  516. return api_error_return('不能给自己转赠');
  517. }
  518. Db::startTrans();
  519. try {
  520. $info = $service->exchargeSubmit($request->uid, $post['xz_num'], $post['mobile']);
  521. Db::commit();
  522. }catch (Exception $e){
  523. Db::rollback();
  524. return api_error_return($e->getMessage());
  525. }
  526. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  527. }
  528. /**
  529. * 用户转赠确认
  530. * @param Request $request
  531. * @param UserServices $service
  532. * @return \think\Response
  533. */
  534. public function exchargeDone(Request $request, UserServices $service)
  535. {
  536. $post = $request->post();
  537. Db::startTrans();
  538. try {
  539. getActionSecury($request->uid, $request->post('security_pass', ''));
  540. $info = $service->exchargeDone($request->uid, $post['xz_num'], $post['mobile']);
  541. Db::commit();
  542. }catch (Exception $e){
  543. Db::rollback();
  544. return api_error_return($e->getMessage());
  545. }
  546. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  547. }
  548. /**
  549. * 用户转赠提交
  550. * @param Request $request
  551. * @param UserServices $service
  552. * @return \think\Response
  553. */
  554. public function exchargeMedalSubmit(Request $request, UserServices $service)
  555. {
  556. $post = $request->post();
  557. if ($request->user['mobile'] == $post['mobile']){
  558. return api_error_return('不能给自己转赠');
  559. }
  560. Db::startTrans();
  561. try {
  562. $info = $service->exchargeMedalSubmit($request->uid, $post['medal_num'], $post['mobile']);
  563. Db::commit();
  564. }catch (Exception $e){
  565. Db::rollback();
  566. return api_error_return($e->getMessage());
  567. }
  568. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  569. }
  570. /**
  571. * 用户转赠确认
  572. * @param Request $request
  573. * @param UserServices $service
  574. * @return \think\Response
  575. */
  576. public function exchargeMedalDone(Request $request, UserServices $service)
  577. {
  578. $post = $request->post();
  579. Db::startTrans();
  580. try {
  581. getActionSecury($request->uid, $request->post('security_pass', ''));
  582. $info = $service->exchargeMedalDone($request->uid, $post['medal_num'], $post['mobile']);
  583. Db::commit();
  584. }catch (Exception $e){
  585. Db::rollback();
  586. return api_error_return($e->getMessage());
  587. }
  588. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  589. }
  590. // 用户播放视频报错
  591. public function watchAdError(Request $request, UserServices $service){
  592. $code = $request->post('error', '');
  593. $message = $request->post('error1', '');
  594. Db::startTrans();
  595. try {
  596. $error_codes = explode(',', env('APP.AD_ERROR_CODE'));
  597. $error_msgs = explode(',', env('APP.AD_ERROR_MESSAGE'));
  598. if (!(in_array($code, $error_codes) && in_array($message, $error_msgs))){
  599. if (!Db::name('ad_error_records')->where('uid', $request->uid)->where('error_code', $code)->where('status', 1)->find()){
  600. Db::name('ad_error_records')->insert([
  601. 'uid'=>$request->uid,
  602. 'error_code'=>$code,
  603. 'error_msg'=>$message,
  604. 'create_time'=>sr_getcurtime(time())
  605. ]);
  606. }
  607. }else{
  608. throw new Exception('请求失败');
  609. }
  610. Db::commit();
  611. }catch (\Exception $e){
  612. Db::rollback();
  613. return api_error_return($e->getMessage());
  614. }
  615. return api_succ_return(['msg'=>'加载广告失败,请直接领取任务包奖励', 'code'=>200]);
  616. }
  617. // 首页必读公告获取
  618. public function getHomeMsg(Request $request){
  619. $list = Db::name('system_article')->where('type', 9)->order('create_time desc')->select();
  620. $user = Db::name('user')->where('id', $request->uid)->find();
  621. foreach ($list as $key=>$val){
  622. if (!Db::name('article_get')->where('uid', $request->uid)->where('article_id', $val['id'])->find()){
  623. if ($user['reg_time'] < $val['create_time']){
  624. return api_succ_return(['msg'=>'成功','data'=> [$val]]);
  625. }
  626. }
  627. }
  628. return api_succ_return('成功');
  629. }
  630. // 用户消息已读
  631. public function getMsgDown(Request $request){
  632. $article_id = $request->post('article_id');
  633. if (Db::name('system_article')->where('id', $article_id)->where('type', 9)->find()){
  634. Db::name('article_get')->insert([
  635. 'uid'=>$request->uid,
  636. 'article_id'=>$article_id,
  637. 'create_time'=>sr_getcurtime(time())
  638. ]);
  639. }
  640. return api_succ_return('成功');
  641. }
  642. // 用户通知信息列表
  643. public function messageList(Request $request){
  644. $page = $request->post('page', 1);
  645. $limit = $request->post('limit', 10);
  646. return api_succ_return(['msg'=>'成功', 'data'=>Db::name('user_message')->where('uid', $request->uid)->page($page, $limit)->field('title,type,banner_desc,create_time,uid')->select()->toArray()]);
  647. }
  648. // 用户余额转赠提交
  649. public function moneyExchargeSubmit(Request $request, UserServices $service){
  650. $post = $request->post();
  651. if ($request->user['mobile'] == $post['mobile']){
  652. return api_error_return('不能给自己转赠');
  653. }
  654. Db::startTrans();
  655. try {
  656. $info = $service->exchargeMoneySubmit($request->uid, $post['money'], $post['mobile']);
  657. Db::commit();
  658. }catch (Exception $e){
  659. Db::rollback();
  660. return api_error_return($e->getMessage());
  661. }
  662. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  663. }
  664. // 余额赠送
  665. public function moneyExcharge(Request $request, UserServices $service){
  666. $post = $request->post();
  667. Db::startTrans();
  668. try {
  669. getActionSecury($request->uid, $request->post('security_pass', ''));
  670. $info = $service->exchargeMoneyDone($request->uid, $post['money'], $post['mobile'], $request->user['mobile']);
  671. Db::commit();
  672. }catch (Exception $e){
  673. Db::rollback();
  674. return api_error_return($e->getMessage());
  675. }
  676. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  677. }
  678. // 用户余额转赠提交
  679. public function jhExchargeSubmit(Request $request, UserServices $service){
  680. $post = $request->post();
  681. if ($request->user['mobile'] == $post['mobile']){
  682. return api_error_return('不能给自己转赠');
  683. }
  684. Db::startTrans();
  685. try {
  686. $info = $service->exchargeJhSubmit($request->uid, $post['money'], $post['mobile']);
  687. Db::commit();
  688. }catch (Exception $e){
  689. Db::rollback();
  690. return api_error_return($e->getMessage());
  691. }
  692. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  693. }
  694. // JH转赠
  695. public function jhExcharge(Request $request, UserServices $service){
  696. $post = $request->post();
  697. Db::startTrans();
  698. try {
  699. getActionSecury($request->uid, $request->post('security_pass', ''));
  700. $info = $service->exchargeJHDone($request->uid, $post['money'], $post['mobile']);
  701. Db::commit();
  702. }catch (Exception $e){
  703. Db::rollback();
  704. return api_error_return($e->getMessage());
  705. }
  706. return api_succ_return('赠送成功');
  707. }
  708. // jh购买
  709. public function jhBuy(Request $request, UserServices $service){
  710. $post = $request->post();
  711. // return api_error_return('暂未开放');
  712. // return api_error_return("由于系统更新 暂不支持兑换 开放时间另行通知");
  713. Db::startTrans();
  714. try {
  715. getActionSecury($request->uid, $request->post('security_pass', ''));
  716. $info = $service->JHBuy($request->uid, $post['count']);
  717. Db::commit();
  718. }catch (Exception $e){
  719. Db::rollback();
  720. return api_error_return($e->getMessage());
  721. }
  722. return api_succ_return(['msg'=>'购买成功,本期剩余'.$info]);
  723. }
  724. // 取消收藏商品
  725. public function cancelAttension(Request $request){
  726. $goods_id = $request->post('goods_id');
  727. Db::name('goods_attension')->where('uid', $request->uid)->where('goods_id', $goods_id)->delete();
  728. return api_succ_return('成功');
  729. }
  730. // 商品收藏列表
  731. public function goodsAttList(Request $request){
  732. $post = $request->post();
  733. $list = Db::name('goods_attension')
  734. ->alias('a')
  735. ->where('a.uid', '=', $request->uid)
  736. ->leftJoin('shop_goods g', 'g.goods_id = a.goods_id')
  737. ->field('a.id,a.goods_id, g.goods_img, g.goods_name,g.goods_sn, g.attension_count,g.price, g.rebate_score')
  738. ->page($post['page'], $post['limit'])
  739. ->select()->toArray();
  740. return api_succ_return(['msg'=>'成功', 'data'=>$list]);
  741. }
  742. // 用户注销
  743. public function denyOff(Request $request){
  744. // Db::startTrans();
  745. // try {
  746. //
  747. // if ($request->user['status'] != 1){
  748. // sr_throw('用户状态错误');
  749. // }
  750. //
  751. // Db::name('user')->where('id', $request->uid)->save(['status'=>3, 'mobile'=>'12345678', 'desc'=>'之前手机号:'.$request->user['mobile'], 'user_name'=>'已注销'.$request->user['user_name']]);
  752. //
  753. // Db::commit();
  754. // }catch (\Exception $e){
  755. // Db::rollback();
  756. // return api_error_return($e->getMessage());
  757. // }
  758. return api_succ_return('注销成功');
  759. }
  760. public function rechargeOrderList(Request $request){
  761. $post = $request->post();
  762. $list = Db::name('recharge_order')->where('user_id', $request->uid)->page($post['page'], $post['limit'])->order('order_id desc')->select()->toArray();
  763. return api_succ_return(['msg'=>'成功', 'data'=>$list]);
  764. }
  765. public function rechargeUsdtVerify(Request $request){
  766. $post = $request->post();
  767. Db::startTrans();
  768. try {
  769. $orderinfo = Db::name('recharge_order')->where('recharge_sn', $post['recharge_id'])->find();
  770. if (!$orderinfo){
  771. sr_throw('参数错误');
  772. }
  773. if ($orderinfo['user_id'] != $request->uid){
  774. sr_throw('不是你的订单');
  775. }
  776. if ($orderinfo['pay_type'] != 19){
  777. sr_throw("充值类型错误");
  778. }
  779. if ($orderinfo['status'] != 1){
  780. sr_throw('状态错误');
  781. }
  782. Db::name('recharge_order')->where('order_id', $orderinfo['order_id'])->save([
  783. 'charge_img'=>env('app.API_WEB_URL').'/'.$post['img'],
  784. 'status'=>3
  785. ]);
  786. Db::commit();
  787. }catch (\Exception $e){
  788. Db::rollback();
  789. return api_error_return($e->getMessage());
  790. }
  791. return api_succ_return('提交成功');
  792. }
  793. public function getSellerPayWay(Request $request){
  794. return api_succ_return(['msg'=>'成功', 'data'=>getUserPayWay($request->uid)]);
  795. }
  796. // 用户签到
  797. public function daySign(Request $request){
  798. Db::startTrans();
  799. try {
  800. // Db::name('user')->where('id', $request->uid)->save(['today_task_down'=>2]);
  801. if (!Db::name('ad_finishlog')->where('uid', $request->uid)->where('type', 1)->whereDay('create_time', 'today')->find()){
  802. // 每日完成任务日志
  803. Db::name('ad_finishlog')->insert([
  804. 'uid'=>$request->uid,
  805. 'create_time'=>sr_getcurtime(time()),
  806. 'type'=>1
  807. ]);
  808. }
  809. Db::commit();
  810. }catch (\Exception $e){
  811. Db::rollback();
  812. return api_error_return($e->getMessage());
  813. }
  814. return api_succ_return('签到成功');
  815. }
  816. // 省代理购买
  817. public function provinceAgentBuy(Request $request){
  818. return ;
  819. Db::startTrans();
  820. try {
  821. getActionSecury($request->uid, $request->post('security_pass', ''));
  822. $price = 175000;
  823. $user = Db::name('user')->where('id', $request->uid)->find();
  824. if ($user['money'] < $price){
  825. sr_throw('余额不足');
  826. }
  827. if ($user['agent_type'] != 0){
  828. sr_throw('购买失败,已是代理');
  829. }
  830. edit_user_money(15, $request->uid, $price);
  831. // edit_user_tz(13, $request->uid, 20000);
  832. Db::name('user')->where('id', $request->uid)->save(['agent_type'=>1]);
  833. Db::commit();
  834. }catch (\Exception $e){
  835. Db::rollback();
  836. return api_error_return($e->getMessage());
  837. }
  838. return api_succ_return('购买成功');
  839. }
  840. // 市代理购买
  841. public function cityAgentBuy(Request $request){
  842. return ;
  843. Db::startTrans();
  844. try {
  845. getActionSecury($request->uid, $request->post('security_pass', ''));
  846. $price = 56000;
  847. $user = Db::name('user')->where('id', $request->uid)->find();
  848. if ($user['money'] < $price){
  849. sr_throw('余额不足');
  850. }
  851. if ($user['agent_type'] != 0){
  852. sr_throw('购买失败,已是代理');
  853. }
  854. edit_user_money(16, $request->uid, $price);
  855. // edit_user_tz(14, $request->uid, 8000);
  856. Db::name('user')->where('id', $request->uid)->save(['agent_type'=>2]);
  857. Db::commit();
  858. }catch (\Exception $e){
  859. Db::rollback();
  860. return api_error_return($e->getMessage());
  861. }
  862. return api_succ_return('购买成功');
  863. }
  864. // 回收卡信息
  865. public function recycleCardInfo(Request $request){
  866. $data = [];
  867. $user_info = Db::name('user')->where('id', $request->uid)->field('today_money,todayaward_money,store_type')->find();
  868. $data['every_day_recycle_count'] = $user_info['store_type'] == 1?120:20;
  869. $zt_numcount = Db::name('user')->where('pid', $request->uid)->where('has_fd', 1)->count();
  870. $data['zt_count'] = $zt_numcount * env('boxsetting.ONE_DIRECT_RECYCLE_COUNT');
  871. $has_get = Db::name('recyclecard_log')->where('type', 1)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  872. $has_ztget = Db::name('recyclecard_log')->where('type', 2)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  873. $data['has_today_get'] = $has_get?1:0;
  874. $data['has_today_ztget'] = $has_ztget?1:0;
  875. // $data['has_today_get'] = 0;
  876. // $data['has_today_ztget'] = 0;
  877. $data['todayaward_money'] = $user_info['todayaward_money'];
  878. $data['today_money']=$user_info['today_money'];
  879. $data['services_store_price']=env('boxsetting.SERVICES_STORE_OPEN_PRICE');
  880. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  881. }
  882. // 领取回收卡
  883. public function getRecycleCard(Request $request){
  884. $type = $request->post('type');
  885. $model = new UserModel();
  886. Db::startTrans();
  887. try {
  888. $model->getRecycleCard($request->uid, $type, $request->user);
  889. Db::commit();
  890. }catch (\Exception $e){
  891. Db::rollback();
  892. return api_error_return($e->getMessage());
  893. }
  894. return api_succ_return('领取成功');
  895. }
  896. // 领取每日奖金
  897. public function getUserTeamMoney(Request $request){
  898. $model = new UserModel();
  899. return api_error_return('奖金已在每天21后自动领取');
  900. Db::startTrans();
  901. try {
  902. // getActionBefore(6);
  903. $model->getUserTeamMoney($request->uid);
  904. Db::commit();
  905. }catch (\Exception $e){
  906. Db::rollback();
  907. return api_error_return($e->getMessage());
  908. }
  909. return api_succ_return('领取成功');
  910. }
  911. // 今日奖金记录
  912. public function todayTeamMoneyLog(Request $request){
  913. $model = new MoneyLogModel();
  914. try {
  915. return api_succ_return(['msg'=>'成功', 'data'=>$model->getTeamMoneyLog($request)]);
  916. } catch (\Exception $e) {
  917. return api_error_return('失败');
  918. }
  919. }
  920. // 利润结算记录
  921. public function incomeMoneyLog(Request $request){
  922. $model = new MoneyLogModel();
  923. try {
  924. // $request->data['type'] = 8;
  925. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]);
  926. } catch (\Exception $e) {
  927. return api_error_return('失败'.$e->getMessage());
  928. }
  929. }
  930. // 利润结算
  931. public function getUserIncomeTeam(Request $request){
  932. $model = new UserModel();
  933. Db::startTrans();
  934. try {
  935. $model->getUserIncomeTeam($request->uid);
  936. Db::commit();
  937. }catch (\Exception $e){
  938. Db::rollback();
  939. return api_error_return('结算失败'.$e->getMessage());
  940. // return api_error_return($e->getMessage());
  941. }
  942. return api_succ_return('结算成功');
  943. }
  944. // 消费记录
  945. public function consumeLog(Request $request){
  946. $model = new PaymentModel();
  947. try {
  948. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]);
  949. } catch (\Exception $e) {
  950. return api_error_return('失败'.$e->getMessage());
  951. }
  952. }
  953. // 商务合作申请
  954. public function bussinessApply(Request $request){
  955. $model = new UserModel();
  956. Db::startTrans();
  957. try {
  958. $model->bussinessApply($request->uid, $request->post());
  959. Db::commit();
  960. }catch (\Exception $e){
  961. Db::rollback();
  962. return api_error_return($e->getMessage());
  963. }
  964. return api_succ_return('申请成功');
  965. }
  966. // 用户利润信息
  967. public function userProfitInfo(Request $request){
  968. $user_info = Db::name('user')->where('id', $request->uid)->find();
  969. return api_succ_return(['msg'=>'成功', 'data'=>[
  970. 'total'=>$user_info['total_profit_money'],
  971. 'cur_profit'=>$user_info['profit_money'],
  972. 'desc'=>'按照100的倍数结算到余额'
  973. ]]);
  974. }
  975. // 邀请好友 绑定上级好友
  976. public function bangUpFriend(Request $request){
  977. $model = new UserModel();
  978. Db::startTrans();
  979. try {
  980. $model->bangUpFriend($request->uid, $request->post());
  981. Db::commit();
  982. }catch (\Exception $e){
  983. Db::rollback();
  984. return api_error_return($e->getMessage());
  985. }
  986. return api_succ_return('绑定成功');
  987. }
  988. // 获得直推上级信息
  989. public function getUpUserInfo(Request $request){
  990. $user_info = $request->user_info;
  991. if ($user_info['pid'] > 0){
  992. $pid_info = Db::name('user')->where('id', $user_info['pid'])->field('nickname,mobile,id')->find();
  993. $pid_info['mobile'] = substr($pid_info['mobile'], 0, 3).'****'.substr($pid_info['mobile'], 7);
  994. return api_succ_return(['msg'=>'成功', 'data'=>$pid_info]);
  995. }else{
  996. return api_succ_return(['msg'=>'成功', 'data'=>[]]);
  997. }
  998. }
  999. // 获取用户订单状态 处理
  1000. public function orderUnreadInfo(Request $request){
  1001. $data = [];
  1002. Db::startTrans();
  1003. try {
  1004. $count1 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 0)->count();
  1005. $count2 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 1)->count();
  1006. $count3 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 2)->count();
  1007. $data = [$count1, $count2, $count3, 0];
  1008. Db::commit();
  1009. }catch (\Exception $e){
  1010. Db::rollback();
  1011. return api_error_return('接口请求失败');
  1012. }
  1013. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  1014. }
  1015. }