User.php 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029
  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\GoodsAttensionModel;
  6. use app\common\model\GreenScoreLogModel;
  7. use app\common\model\MoneyLogModel;
  8. use app\common\model\PaymentModel;
  9. use app\common\model\ScoreAwayLogModel;
  10. use app\common\model\ScoreLock1LogModel;
  11. use app\common\model\ScoreLogModel;
  12. use app\common\model\SuggestModel;
  13. use app\common\model\TzLogModel;
  14. use app\common\model\UserModel;
  15. use app\common\model\WithDrawLogModel;
  16. use app\common\service\ShopGoodsService;
  17. use app\common\service\UserService;
  18. use app\common\service\UserUnmoneyService;
  19. use app\Request;
  20. use app\api\validate\UserValidate;
  21. use services\CacheServices;
  22. use think\Exception;
  23. use think\exception\ValidateException;
  24. use think\facade\Db;
  25. use utils\RedisCache;
  26. class User
  27. {
  28. protected $service = null;
  29. public function __construct( UserServices $services)
  30. {
  31. $this->service = $services;
  32. }
  33. /**
  34. * 用户注册
  35. * @param Request $request
  36. * @return \think\Response
  37. */
  38. public function register(Request $request)
  39. {
  40. $params = $request->post();
  41. try {
  42. validate(UserValidate::class)->scene('register')->check($params);
  43. if (!vertifyPass(AESjiemi($params['password']))){
  44. throw new Exception('密码必须包含字母和数字,长度大于8位');
  45. }
  46. if (!vertifyUserName($params['user_name'])){
  47. throw new Exception('用户名必须包含字母和数字,长度大于6位小于15位');
  48. }
  49. $params['password'] = AESjiemi($params['password']);
  50. if($uid = $this->service->userRegister($params)){
  51. return api_succ_return(['msg'=>'注册成功', 'data'=> ['uid'=>$uid]]);
  52. }else{
  53. return api_error_return('注册失败');
  54. }
  55. }catch (ValidateException $e){
  56. return api_error_return($e->getMessage());
  57. }catch (Exception $e){
  58. return api_error_return($e->getMessage());
  59. }
  60. }
  61. /**
  62. * 注册获取上级信息
  63. * @param Request $request
  64. * @param UserModel $model
  65. * @return \think\Response
  66. */
  67. public function registerUpUser(Request $request, UserModel $model){
  68. Db::startTrans();
  69. try {
  70. $scanCode = $request->post('scan_code');
  71. if (empty($scanCode) || !$scanCode){
  72. return api_error_return('参数错误');
  73. }
  74. $params = getUrlParams($scanCode);
  75. $is_px = false;
  76. $upuser = $model->where('code', $params['code'])
  77. ->field('nickname,mobile,px_code,code,avatar')
  78. ->withAttr('avatar', function($val, $data){
  79. return __HTTPIMG($val);
  80. })->find();
  81. if (!$upuser){
  82. $upuser = $model->where('px_code', $params['code'])
  83. ->field('nickname,px_code,code,avatar,mobile')
  84. ->withAttr('avatar', function($val, $data){
  85. return __HTTPIMG($val);
  86. })->find();
  87. $is_px = true;
  88. }
  89. if (!$upuser){
  90. return api_error_return('查询失败,暂无用户');
  91. }
  92. $upuser['mobile'] = substr($upuser['mobile'], 0, 3).'****'.substr($upuser['mobile'], 7);
  93. $upuser['share_way'] = $is_px?2:1;
  94. Db::commit();
  95. }catch (\Exception $e){
  96. Db::rollback();
  97. return api_error_return($e->getMessage());
  98. }
  99. return api_succ_return(['msg'=>'成功', 'data'=>['user'=>$upuser]]);
  100. }
  101. /**
  102. * 退出登录
  103. * @param Request $request
  104. * @return \think\Response
  105. */
  106. public function logout(Request $request){
  107. CacheServices::delete('auth:'.md5('yjbuy:' . $request->uid));
  108. return api_succ_return('成功');
  109. }
  110. /**
  111. * 登录
  112. * @param Request $request
  113. * @return \think\Response
  114. */
  115. public function login(Request $request)
  116. {
  117. $curandroid = env('app.CUR_ANDROID_VERSION', '');
  118. $curios = env('app.CUR_IOS_VERSION', '');;
  119. $curAndroidVersion = str_replace('.', '', $curandroid);
  120. $curAndroidVersion = dispRepair($curAndroidVersion, 4, '0', '0');
  121. $curIosVersion = str_replace('.', '', $curios);
  122. $curIosVersion = dispRepair($curIosVersion, 4, '0', '0');
  123. $app_sources = $request->param('app_sources');
  124. $app_version = $request->param('app_version');
  125. $app_version = str_replace('.', '', $app_version);
  126. $app_version = dispRepair($app_version, 4, '0', '0');
  127. $param = $request->param();
  128. Db::startTrans();
  129. try {
  130. validate(UserValidate::class)->scene('login')->check($param);
  131. $data = $this->service->userLogin($param);
  132. Db::commit();
  133. return api_succ_return($data);
  134. }catch (ValidateException $e){
  135. Db::rollback();
  136. return api_error_return($e->getMessage());
  137. }catch (Exception $e){
  138. Db::rollback();
  139. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  140. }
  141. }
  142. /**
  143. * 编辑用户信息
  144. * @param Request $request
  145. * @return \think\Response
  146. */
  147. public function editUserInfo(Request $request){
  148. $param = $request->param();
  149. try {
  150. return api_succ_return($this->service->setUserInfo($request->uid, $param));
  151. }catch (Exception $e){
  152. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  153. }
  154. }
  155. /**
  156. * 编辑用户信息
  157. * @param Request $request
  158. * @return \think\Response
  159. */
  160. public function setSellerPayWay(Request $request){
  161. $param = $request->param();
  162. try {
  163. return api_succ_return($this->service->setSellerPayWay($request->uid, $param));
  164. }catch (Exception $e){
  165. return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]);
  166. }
  167. }
  168. /**
  169. * 用户信息
  170. * @param Request $request
  171. * @param UserModel $model
  172. * @return \think\Response
  173. */
  174. public function userInfo(Request $request, UserModel $model)
  175. {
  176. Db::startTrans();
  177. try {
  178. $user = $model->getUserDetailByUid($request->uid);
  179. unset($user['password']);
  180. unset($user['status']);
  181. unset($user['login_count']);
  182. unset($user['login_ip']);
  183. unset($user['login_time']);
  184. Db::commit();
  185. return api_succ_return(['msg'=>'个人信息获取成功', 'data'=>$user]);
  186. }catch (\Exception $e){
  187. Db::rollback();
  188. return api_error_return($e->getMessage());
  189. }
  190. }
  191. /**
  192. * 修改登录密码
  193. * @param Request $request
  194. * @param UserModel $model
  195. * @return \think\Response
  196. */
  197. public function editLoginPass(Request $request, UserModel $model)
  198. {
  199. try {
  200. return $model->editLoginPass($request);
  201. }catch (\Exception $e){
  202. return api_error_return($e->getMessage());
  203. }
  204. }
  205. /**
  206. * 修改安全密码
  207. * @param Request $request
  208. * @param UserModel $model
  209. * @return \think\Response
  210. */
  211. public function editSecurityPass(Request $request, UserModel $model)
  212. {
  213. try {
  214. return $model->editSecurityPass($request);
  215. }catch (\Exception $e){
  216. return api_error_return($e->getMessage());
  217. }
  218. }
  219. /**
  220. * 余额记录
  221. * @param Request $request
  222. * @param MoneyLogModel $model
  223. * @return \think\Response
  224. */
  225. public function moneyLog(Request $request, MoneyLogModel $model)
  226. {
  227. try {
  228. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  229. } catch (\Exception $e) {
  230. return api_error_return('失败');
  231. }
  232. }
  233. /**
  234. * 绿色积分记录
  235. * @param Request $request
  236. * @param GreenScoreLogModel $model
  237. * @return \think\Response
  238. */
  239. public function greenScoreLog (Request $request, GreenScoreLogModel $model)
  240. {
  241. try {
  242. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  243. } catch (\Exception $e) {
  244. return api_error_return('失败');
  245. }
  246. }
  247. /**
  248. * 利润结算记录
  249. * @param Request $request
  250. * @return \think\Response
  251. */
  252. public function incomeMoneyLog(Request $request,MoneyLogModel $model){
  253. try {
  254. $pageSize = $request->post('limit', 10);
  255. $post = $request->post();
  256. $post['uid'] = $request->uid;
  257. // return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]);
  258. return api_succ_return(['msg'=>'成功', 'data'=>UserUnmoneyService::make()->getList($post, $pageSize)]);
  259. } catch (\Exception $e) {
  260. return api_error_return('失败'.$e->getMessage());
  261. }
  262. }
  263. /**
  264. * 积分记录
  265. * @param Request $request
  266. * @param ScoreLogModel $model
  267. * @return \think\Response
  268. */
  269. public function scoreLog (Request $request, ScoreLogModel $model)
  270. {
  271. try {
  272. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  273. } catch (\Exception $e) {
  274. return api_error_return('失败');
  275. }
  276. }
  277. /**
  278. * jh记录
  279. * @param Request $request
  280. * @param TzLogModel $model
  281. * @return \think\Response
  282. */
  283. public function jhLog (Request $request, TzLogModel $model)
  284. {
  285. try {
  286. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  287. } catch (\Exception $e) {
  288. return api_error_return('失败');
  289. }
  290. }
  291. /**
  292. * 福利积分记录
  293. * @param Request $request
  294. * @param ScoreAwayLogModel $model
  295. * @return \think\Response
  296. */
  297. public function scoreAwayLog (Request $request, ScoreAwayLogModel $model)
  298. {
  299. try {
  300. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  301. } catch (\Exception $e) {
  302. return api_error_return('失败');
  303. }
  304. }
  305. /**
  306. * 锁存积分记录
  307. * @param Request $request
  308. * @param ScoreLock1LogModel $model
  309. * @return \think\Response
  310. */
  311. public function scoreLockLog (Request $request, ScoreLock1LogModel $model)
  312. {
  313. try {
  314. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  315. } catch (\Exception $e) {
  316. return api_error_return('失败');
  317. }
  318. }
  319. /**
  320. * 团队数据
  321. * @param Request $request
  322. * @param UserModel $model
  323. * @return \think\Response
  324. */
  325. public function teamData(Request $request, UserModel $model){
  326. try {
  327. return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansData($request->uid)]);
  328. } catch (\Exception $e) {
  329. return api_error_return($e->getMessage());
  330. }
  331. }
  332. /**
  333. * 团队列表
  334. * @param Request $request
  335. * @param UserModel $model
  336. * @return \think\Response
  337. */
  338. public function teamList(Request $request, UserModel $model){
  339. try {
  340. return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansList($request->uid, $request->post('limit'), $request->post('type'), $request->post('keyword'))]);
  341. } catch (\Exception $e) {
  342. return api_error_return($e->getMessage());
  343. }
  344. }
  345. /**
  346. * 团队信息
  347. * @param Request $request
  348. * @return \think\Response
  349. * @throws \think\db\exception\DbException
  350. */
  351. public function teamInfo(Request $request){
  352. $uid = $request->uid;
  353. $display_ids = env('app.NOT_OPEN_GOODS_ID');
  354. $has_display = false;
  355. if (strpos($display_ids, strval($uid)) !== false){
  356. $has_display = true;
  357. }
  358. $data = [
  359. 'zt_valid'=> UserModel::where('pid', $uid)->where('has_fd', 1)->count('id'),
  360. 'zt_total'=> UserModel::where('pid', $uid)->count('id'),
  361. 'zt_teamtotal'=> UserModel::whereFindInSet('path', $uid)->count('id'),
  362. 'zt_teamvalid'=> UserModel::whereFindInSet('path', $uid)->where('has_fd', 1)->count('id'),
  363. 'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):''
  364. ];
  365. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  366. }
  367. /**
  368. * 直推列表
  369. * @param Request $request
  370. * @param UserModel $model
  371. * @return \think\Response
  372. */
  373. public function directListData(Request $request, UserModel $model){
  374. try {
  375. return api_succ_return(['msg'=>'成功', 'data'=>$model->getDirectDataList($request->uid, $request->post('is_auth'), $request->post('limit'), $request->post('keyworld'))]);
  376. }catch (Exception $e){
  377. return api_error_return($e->getMessage());
  378. }
  379. }
  380. /**
  381. * 活跃点明细
  382. * @param Request $request
  383. * @param ActiveLogModel $model
  384. * @return \think\Response
  385. */
  386. public function activeLog(Request $request, ActiveLogModel $model){
  387. try {
  388. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  389. }catch (Exception $e){
  390. return api_error_return($e->getMessage());
  391. }
  392. }
  393. /**
  394. * 反馈建议
  395. * @param Request $request
  396. * @param SuggestModel $model
  397. * @return \think\Response
  398. */
  399. public function suggestSubmit(Request $request, SuggestModel $model){
  400. $post = $request->post();
  401. Db::startTrans();
  402. try {
  403. $model->insert([
  404. 'type'=>2,
  405. 'uid'=>$request->uid,
  406. 'created_time'=>sr_getcurtime(time()),
  407. 'content'=>$post['content']
  408. ]);
  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 UserServices $services
  420. * @return \think\Response
  421. */
  422. public function upgradeLevel (Request $request, UserServices $services)
  423. {
  424. try {
  425. if($result = UserService::make()->upgradeLevel($request->uid, $request->post('type', 2))){
  426. return api_succ_return($result);
  427. }
  428. } catch (Exception $e) {
  429. return api_succ_return(['code'=>$e->getCode(), 'msg'=>$e->getMessage()]);
  430. }
  431. }
  432. /**
  433. * 余额兑换成积分
  434. * @param Request $request
  435. * @param UserModel $model
  436. * @return \think\Response
  437. */
  438. public function moneyExchangeScore(Request $request, UserModel $model){
  439. Db::startTrans();
  440. try {
  441. $model->moneyExchangescore($request->uid, $request->post('money'));
  442. Db::commit();
  443. }catch (\Exception $e){
  444. Db::rollback();
  445. return api_error_return($e->getMessage());
  446. }
  447. return api_succ_return('兑换成功');
  448. }
  449. /**
  450. * 今日播放视频数据
  451. * @param Request $request
  452. * @return \think\Response
  453. */
  454. public function openAdTodayData(Request $request){
  455. $type = $request->post('type');
  456. if (!in_array($type, [1,2])){
  457. return api_error_return('参数错误');
  458. }
  459. return api_succ_return(['msg'=>'成功', 'data'=>['total'=>env('AD.ONE_DAY_TASK_NUM'),'today_count'=>env('AD.ONE_DAY_TASK_NUM')]]);
  460. }
  461. /**
  462. * 提现记录
  463. * @param Request $request
  464. * @param WithDrawLogModel $model
  465. * @return \think\Response
  466. */
  467. public function withdrawLog (Request $request, WithDrawLogModel $model)
  468. {
  469. try {
  470. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  471. } catch (\Exception $e) {
  472. return api_error_return($e->getMessage());
  473. }
  474. }
  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. public function unBangWithdrawInfo(Request $request, UserServices $service)
  490. {
  491. Db::startTrans();
  492. try {
  493. $service->unbangWithdrawInfo($request->uid, $request->post('type'));
  494. Db::commit();
  495. }catch (Exception $e){
  496. Db::rollback();
  497. return api_error_return($e->getMessage());
  498. }
  499. return api_succ_return('解绑成功');
  500. }
  501. // 用户转赠提交
  502. public function exchargeSubmit(Request $request, UserServices $service){
  503. return api_error_return("星钻转赠以下线");
  504. $post = $request->post();
  505. if ($request->user['mobile'] == $post['mobile']){
  506. return api_error_return('不能给自己转赠');
  507. }
  508. Db::startTrans();
  509. try {
  510. $info = $service->exchargeSubmit($request->uid, $post['xz_num'], $post['mobile']);
  511. Db::commit();
  512. }catch (Exception $e){
  513. Db::rollback();
  514. return api_error_return($e->getMessage());
  515. }
  516. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  517. }
  518. // 用户转赠确认
  519. public function exchargeDone(Request $request, UserServices $service){
  520. $post = $request->post();
  521. Db::startTrans();
  522. try {
  523. getActionSecury($request->uid, $request->post('security_pass', ''));
  524. $info = $service->exchargeDone($request->uid, $post['xz_num'], $post['mobile']);
  525. Db::commit();
  526. }catch (Exception $e){
  527. Db::rollback();
  528. return api_error_return($e->getMessage());
  529. }
  530. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  531. }
  532. // 用户转赠提交
  533. public function exchargeMedalSubmit(Request $request, UserServices $service){
  534. $post = $request->post();
  535. if ($request->user['mobile'] == $post['mobile']){
  536. return api_error_return('不能给自己转赠');
  537. }
  538. Db::startTrans();
  539. try {
  540. $info = $service->exchargeMedalSubmit($request->uid, $post['medal_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. public function exchargeMedalDone(Request $request, UserServices $service){
  550. $post = $request->post();
  551. Db::startTrans();
  552. try {
  553. getActionSecury($request->uid, $request->post('security_pass', ''));
  554. $info = $service->exchargeMedalDone($request->uid, $post['medal_num'], $post['mobile']);
  555. Db::commit();
  556. }catch (Exception $e){
  557. Db::rollback();
  558. // if ($e->getCode() == 399){
  559. // return api_error_return(['msg'=>'请设置安全密码', 'code'=>399]);
  560. // }
  561. return api_error_return($e->getMessage());
  562. }
  563. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  564. }
  565. // 用户播放视频报错
  566. public function watchAdError(Request $request, UserServices $service){
  567. $code = $request->post('error', '');
  568. $message = $request->post('error1', '');
  569. Db::startTrans();
  570. try {
  571. $error_codes = explode(',', env('APP.AD_ERROR_CODE'));
  572. $error_msgs = explode(',', env('APP.AD_ERROR_MESSAGE'));
  573. if (!(in_array($code, $error_codes) && in_array($message, $error_msgs))){
  574. if (!Db::name('ad_error_records')->where('uid', $request->uid)->where('error_code', $code)->where('status', 1)->find()){
  575. Db::name('ad_error_records')->insert([
  576. 'uid'=>$request->uid,
  577. 'error_code'=>$code,
  578. 'error_msg'=>$message,
  579. 'create_time'=>sr_getcurtime(time())
  580. ]);
  581. }
  582. }else{
  583. throw new Exception('请求失败');
  584. }
  585. Db::commit();
  586. }catch (\Exception $e){
  587. Db::rollback();
  588. return api_error_return($e->getMessage());
  589. }
  590. return api_succ_return(['msg'=>'加载广告失败,请直接领取任务包奖励', 'code'=>200]);
  591. }
  592. // 首页必读公告获取
  593. public function getHomeMsg(Request $request){
  594. $list = Db::name('system_article')->where('type', 9)->order('create_time desc')->select();
  595. $user = Db::name('user')->where('id', $request->uid)->find();
  596. foreach ($list as $key=>$val){
  597. if (!Db::name('article_get')->where('uid', $request->uid)->where('article_id', $val['id'])->find()){
  598. if ($user['reg_time'] < $val['create_time']){
  599. return api_succ_return(['msg'=>'成功','data'=> [$val]]);
  600. }
  601. }
  602. }
  603. return api_succ_return('成功');
  604. }
  605. // 用户消息已读
  606. public function getMsgDown(Request $request){
  607. $article_id = $request->post('article_id');
  608. if (Db::name('system_article')->where('id', $article_id)->where('type', 9)->find()){
  609. Db::name('article_get')->insert([
  610. 'uid'=>$request->uid,
  611. 'article_id'=>$article_id,
  612. 'create_time'=>sr_getcurtime(time())
  613. ]);
  614. }
  615. return api_succ_return('成功');
  616. }
  617. // 用户通知信息列表
  618. public function messageList(Request $request){
  619. $page = $request->post('page', 1);
  620. $limit = $request->post('limit', 10);
  621. 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()]);
  622. }
  623. // 用户余额转赠提交
  624. public function moneyExchargeSubmit(Request $request, UserServices $service){
  625. $post = $request->post();
  626. if ($request->user['mobile'] == $post['mobile']){
  627. return api_error_return('不能给自己转赠');
  628. }
  629. Db::startTrans();
  630. try {
  631. $info = $service->exchargeMoneySubmit($request->uid, $post['money'], $post['mobile']);
  632. Db::commit();
  633. }catch (Exception $e){
  634. Db::rollback();
  635. return api_error_return($e->getMessage());
  636. }
  637. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  638. }
  639. /**
  640. * 取消收藏商品
  641. * @param Request $request
  642. * @return \think\Response
  643. */
  644. public function cancelAttension(Request $request){
  645. $goodsId = $request->post('goods_id');
  646. if(ShopGoodsService::make()->cancelAttension($request->uid, $goodsId)){
  647. return api_succ_return('成功');
  648. }else{
  649. return api_error_return('失败');
  650. }
  651. }
  652. /**
  653. * 商品收藏列表
  654. * @param Request $request
  655. * @return \think\Response
  656. * @throws \think\db\exception\DataNotFoundException
  657. * @throws \think\db\exception\DbException
  658. * @throws \think\db\exception\ModelNotFoundException
  659. */
  660. public function goodsAttList(Request $request){
  661. $post = $request->post();
  662. $list = GoodsAttensionModel::alias('a')
  663. ->where('a.uid', '=', $request->uid)
  664. ->leftJoin('shop_goods g', 'g.goods_id = a.goods_id')
  665. ->withAttr('goods_img', function ($value) {
  666. return getPreviewUrl($value);
  667. })
  668. ->field('a.id,a.goods_id, g.goods_img, g.goods_name,g.goods_sn, g.attension_count,g.price, g.rebate_score')
  669. ->page($post['page'], $post['limit'])
  670. ->select()->toArray();
  671. return api_succ_return(['msg'=>'成功', 'data'=>$list]);
  672. }
  673. /**
  674. * 用户注销
  675. * @param Request $request
  676. * @return \think\Response
  677. */
  678. public function denyOff(Request $request){
  679. return api_succ_return('功能暂未开放');
  680. }
  681. /**
  682. * 回收卡信息
  683. * @param Request $request
  684. * @return \think\Response
  685. * @throws \think\db\exception\DataNotFoundException
  686. * @throws \think\db\exception\DbException
  687. * @throws \think\db\exception\ModelNotFoundException
  688. */
  689. public function recycleCardInfo(Request $request){
  690. $data = [];
  691. $user_info = Db::name('user')->where('id', $request->uid)->field('today_money,todayaward_money,store_type')->find();
  692. $data['every_day_recycle_count'] = $user_info['store_type'] == 1?120:20;
  693. $zt_numcount = Db::name('user')->where('pid', $request->uid)->where('has_fd', 1)->count();
  694. $data['zt_count'] = $zt_numcount * env('boxsetting.ONE_DIRECT_RECYCLE_COUNT');
  695. $has_get = Db::name('recyclecard_log')->where('type', 1)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  696. $has_ztget = Db::name('recyclecard_log')->where('type', 2)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  697. $data['has_today_get'] = $has_get?1:0;
  698. $data['has_today_ztget'] = $has_ztget?1:0;
  699. $data['todayaward_money'] = $user_info['todayaward_money'];
  700. $data['today_money']=$user_info['today_money'];
  701. $data['services_store_price']=env('boxsetting.SERVICES_STORE_OPEN_PRICE');
  702. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  703. }
  704. /**
  705. * 领取回收卡
  706. * @param Request $request
  707. * @return \think\Response
  708. */
  709. public function getRecycleCard(Request $request){
  710. $type = $request->post('type');
  711. $model = new UserModel();
  712. Db::startTrans();
  713. try {
  714. $model->getRecycleCard($request->uid, $type, $request->user);
  715. Db::commit();
  716. }catch (\Exception $e){
  717. Db::rollback();
  718. return api_error_return($e->getMessage());
  719. }
  720. return api_succ_return('领取成功');
  721. }
  722. /**
  723. * 领取每日奖金
  724. * @param Request $request
  725. * @return \think\Response
  726. */
  727. public function getUserTeamMoney(Request $request){
  728. $model = new UserModel();
  729. return api_error_return('奖金已在每天21后自动领取');
  730. Db::startTrans();
  731. try {
  732. $model->getUserTeamMoney($request->uid);
  733. Db::commit();
  734. }catch (\Exception $e){
  735. Db::rollback();
  736. return api_error_return($e->getMessage());
  737. }
  738. return api_succ_return('领取成功');
  739. }
  740. /**
  741. * 今日奖金记录
  742. * @param Request $request
  743. * @return \think\Response
  744. */
  745. public function todayTeamMoneyLog(Request $request){
  746. $model = new MoneyLogModel();
  747. try {
  748. return api_succ_return(['msg'=>'成功', 'data'=>$model->getTeamMoneyLog($request)]);
  749. } catch (\Exception $e) {
  750. return api_error_return('失败');
  751. }
  752. }
  753. /**
  754. * 利润结算到余额
  755. * @param Request $request
  756. * @return \think\Response
  757. */
  758. public function getUserIncomeTeam(Request $request){
  759. $model = new UserModel();
  760. Db::startTrans();
  761. try {
  762. $cacheKey = "caches:profits:settles:{$request->uid}";
  763. if(RedisCache::get($cacheKey)){
  764. return api_error_return('请不要频繁提交');
  765. }
  766. RedisCache::setnx($cacheKey, 1, rand(2,3));
  767. UserService::make()->switchProfitToMoney($request->uid);
  768. Db::commit();
  769. }catch (\Exception $e){
  770. Db::rollback();
  771. RedisCache::clear($cacheKey);
  772. return api_error_return('结算失败'.$e->getMessage());
  773. }
  774. return api_succ_return('结算成功');
  775. }
  776. /**
  777. * 消费记录
  778. * @param Request $request
  779. * @return \think\Response
  780. */
  781. public function consumeLog(Request $request){
  782. $model = new PaymentModel();
  783. try {
  784. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]);
  785. } catch (\Exception $e) {
  786. return api_error_return('失败'.$e->getMessage());
  787. }
  788. }
  789. /**
  790. * 商务合作申请
  791. * @param Request $request
  792. * @return \think\Response
  793. */
  794. public function bussinessApply(Request $request){
  795. $model = new UserModel();
  796. Db::startTrans();
  797. try {
  798. $model->bussinessApply($request->uid, $request->post());
  799. Db::commit();
  800. }catch (\Exception $e){
  801. Db::rollback();
  802. return api_error_return($e->getMessage());
  803. }
  804. return api_succ_return('申请成功');
  805. }
  806. /**
  807. * 用户利润信息用户利润信息
  808. * @param Request $request
  809. * @return \think\Response
  810. * @throws \think\db\exception\DataNotFoundException
  811. * @throws \think\db\exception\DbException
  812. * @throws \think\db\exception\ModelNotFoundException
  813. */
  814. public function userProfitInfo(Request $request){
  815. $user_info = Db::name('user')->where('id', $request->uid)->find();
  816. return api_succ_return(['msg'=>'成功', 'data'=>[
  817. 'total'=>$user_info['total_profit_money'],
  818. 'cur_profit'=>$user_info['profit_money'],
  819. 'desc'=>'按照100的倍数结算到余额'
  820. ]]);
  821. }
  822. /**
  823. * 邀请好友 绑定上级好友
  824. * @param Request $request
  825. * @return \think\Response
  826. */
  827. public function bangUpFriend(Request $request){
  828. $model = new UserModel();
  829. Db::startTrans();
  830. try {
  831. $model->bangUpFriend($request->uid, $request->post());
  832. Db::commit();
  833. }catch (\Exception $e){
  834. Db::rollback();
  835. return api_error_return($e->getMessage());
  836. }
  837. return api_succ_return('绑定成功');
  838. }
  839. /**
  840. * 获得直推上级信息
  841. * @param Request $request
  842. * @return \think\Response
  843. * @throws \think\db\exception\DataNotFoundException
  844. * @throws \think\db\exception\DbException
  845. * @throws \think\db\exception\ModelNotFoundException
  846. */
  847. public function getUpUserInfo(Request $request){
  848. $user_info = $request->user_info;
  849. if ($user_info['pid'] > 0){
  850. $pid_info = Db::name('user')->where('id', $user_info['pid'])->field('nickname,mobile,id')->find();
  851. $pid_info['mobile'] = substr($pid_info['mobile'], 0, 3).'****'.substr($pid_info['mobile'], 7);
  852. return api_succ_return(['msg'=>'成功', 'data'=>$pid_info]);
  853. }else{
  854. return api_succ_return(['msg'=>'成功', 'data'=>[]]);
  855. }
  856. }
  857. /**
  858. * 获取用户订单状态 处理
  859. * @param Request $request
  860. * @return \think\Response
  861. */
  862. public function orderUnreadInfo(Request $request){
  863. $data = [];
  864. Db::startTrans();
  865. try {
  866. $count1 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 0)->count();
  867. $count2 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 1)->count();
  868. $count3 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 2)->count();
  869. $data = [$count1, $count2, $count3, 0];
  870. Db::commit();
  871. }catch (\Exception $e){
  872. Db::rollback();
  873. return api_error_return('接口请求失败');
  874. }
  875. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  876. }
  877. }