User.php 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030
  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' => ''
  364. // 'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):''
  365. ];
  366. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  367. }
  368. /**
  369. * 直推列表
  370. * @param Request $request
  371. * @param UserModel $model
  372. * @return \think\Response
  373. */
  374. public function directListData(Request $request, UserModel $model){
  375. try {
  376. return api_succ_return(['msg'=>'成功', 'data'=>$model->getDirectDataList($request->uid, $request->post('is_auth'), $request->post('limit'), $request->post('keyworld'))]);
  377. }catch (Exception $e){
  378. return api_error_return($e->getMessage());
  379. }
  380. }
  381. /**
  382. * 活跃点明细
  383. * @param Request $request
  384. * @param ActiveLogModel $model
  385. * @return \think\Response
  386. */
  387. public function activeLog(Request $request, ActiveLogModel $model){
  388. try {
  389. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  390. }catch (Exception $e){
  391. return api_error_return($e->getMessage());
  392. }
  393. }
  394. /**
  395. * 反馈建议
  396. * @param Request $request
  397. * @param SuggestModel $model
  398. * @return \think\Response
  399. */
  400. public function suggestSubmit(Request $request, SuggestModel $model){
  401. $post = $request->post();
  402. Db::startTrans();
  403. try {
  404. $model->insert([
  405. 'type'=>2,
  406. 'uid'=>$request->uid,
  407. 'created_time'=>sr_getcurtime(time()),
  408. 'content'=>$post['content']
  409. ]);
  410. Db::commit();
  411. }catch (\Exception $e){
  412. Db::rollback();
  413. return api_error_return('失败'.$e->getMessage());
  414. }
  415. return api_succ_return('成功');
  416. }
  417. /**
  418. * 用户升星
  419. * @param Request $request
  420. * @param UserServices $services
  421. * @return \think\Response
  422. */
  423. public function upgradeLevel (Request $request, UserServices $services)
  424. {
  425. try {
  426. if($result = UserService::make()->upgradeLevel($request->uid, $request->post('type', 2))){
  427. return api_succ_return($result);
  428. }
  429. } catch (Exception $e) {
  430. return api_succ_return(['code'=>$e->getCode(), 'msg'=>$e->getMessage()]);
  431. }
  432. }
  433. /**
  434. * 余额兑换成积分
  435. * @param Request $request
  436. * @param UserModel $model
  437. * @return \think\Response
  438. */
  439. public function moneyExchangeScore(Request $request, UserModel $model){
  440. Db::startTrans();
  441. try {
  442. $model->moneyExchangescore($request->uid, $request->post('money'));
  443. Db::commit();
  444. }catch (\Exception $e){
  445. Db::rollback();
  446. return api_error_return($e->getMessage());
  447. }
  448. return api_succ_return('兑换成功');
  449. }
  450. /**
  451. * 今日播放视频数据
  452. * @param Request $request
  453. * @return \think\Response
  454. */
  455. public function openAdTodayData(Request $request){
  456. $type = $request->post('type');
  457. if (!in_array($type, [1,2])){
  458. return api_error_return('参数错误');
  459. }
  460. return api_succ_return(['msg'=>'成功', 'data'=>['total'=>env('AD.ONE_DAY_TASK_NUM'),'today_count'=>env('AD.ONE_DAY_TASK_NUM')]]);
  461. }
  462. /**
  463. * 提现记录
  464. * @param Request $request
  465. * @param WithDrawLogModel $model
  466. * @return \think\Response
  467. */
  468. public function withdrawLog (Request $request, WithDrawLogModel $model)
  469. {
  470. try {
  471. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]);
  472. } catch (\Exception $e) {
  473. return api_error_return($e->getMessage());
  474. }
  475. }
  476. // 绑定提现账号
  477. public function bangWithdrawInfo(Request $request, UserServices $service)
  478. {
  479. Db::startTrans();
  480. try {
  481. $service->bangWithdrawInfo($request->uid, $request->post('type'), $request->post('number'), $request->post('name'));
  482. Db::commit();
  483. }catch (Exception $e){
  484. Db::rollback();
  485. return api_error_return($e->getMessage());
  486. }
  487. return api_succ_return('绑定成功');
  488. }
  489. // 解绑提现账号
  490. public function unBangWithdrawInfo(Request $request, UserServices $service)
  491. {
  492. Db::startTrans();
  493. try {
  494. $service->unbangWithdrawInfo($request->uid, $request->post('type'));
  495. Db::commit();
  496. }catch (Exception $e){
  497. Db::rollback();
  498. return api_error_return($e->getMessage());
  499. }
  500. return api_succ_return('解绑成功');
  501. }
  502. // 用户转赠提交
  503. public function exchargeSubmit(Request $request, UserServices $service){
  504. return api_error_return("星钻转赠以下线");
  505. $post = $request->post();
  506. if ($request->user['mobile'] == $post['mobile']){
  507. return api_error_return('不能给自己转赠');
  508. }
  509. Db::startTrans();
  510. try {
  511. $info = $service->exchargeSubmit($request->uid, $post['xz_num'], $post['mobile']);
  512. Db::commit();
  513. }catch (Exception $e){
  514. Db::rollback();
  515. return api_error_return($e->getMessage());
  516. }
  517. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  518. }
  519. // 用户转赠确认
  520. public function exchargeDone(Request $request, UserServices $service){
  521. $post = $request->post();
  522. Db::startTrans();
  523. try {
  524. getActionSecury($request->uid, $request->post('security_pass', ''));
  525. $info = $service->exchargeDone($request->uid, $post['xz_num'], $post['mobile']);
  526. Db::commit();
  527. }catch (Exception $e){
  528. Db::rollback();
  529. return api_error_return($e->getMessage());
  530. }
  531. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  532. }
  533. // 用户转赠提交
  534. public function exchargeMedalSubmit(Request $request, UserServices $service){
  535. $post = $request->post();
  536. if ($request->user['mobile'] == $post['mobile']){
  537. return api_error_return('不能给自己转赠');
  538. }
  539. Db::startTrans();
  540. try {
  541. $info = $service->exchargeMedalSubmit($request->uid, $post['medal_num'], $post['mobile']);
  542. Db::commit();
  543. }catch (Exception $e){
  544. Db::rollback();
  545. return api_error_return($e->getMessage());
  546. }
  547. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  548. }
  549. // 用户转赠确认
  550. public function exchargeMedalDone(Request $request, UserServices $service){
  551. $post = $request->post();
  552. Db::startTrans();
  553. try {
  554. getActionSecury($request->uid, $request->post('security_pass', ''));
  555. $info = $service->exchargeMedalDone($request->uid, $post['medal_num'], $post['mobile']);
  556. Db::commit();
  557. }catch (Exception $e){
  558. Db::rollback();
  559. // if ($e->getCode() == 399){
  560. // return api_error_return(['msg'=>'请设置安全密码', 'code'=>399]);
  561. // }
  562. return api_error_return($e->getMessage());
  563. }
  564. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  565. }
  566. // 用户播放视频报错
  567. public function watchAdError(Request $request, UserServices $service){
  568. $code = $request->post('error', '');
  569. $message = $request->post('error1', '');
  570. Db::startTrans();
  571. try {
  572. $error_codes = explode(',', env('APP.AD_ERROR_CODE'));
  573. $error_msgs = explode(',', env('APP.AD_ERROR_MESSAGE'));
  574. if (!(in_array($code, $error_codes) && in_array($message, $error_msgs))){
  575. if (!Db::name('ad_error_records')->where('uid', $request->uid)->where('error_code', $code)->where('status', 1)->find()){
  576. Db::name('ad_error_records')->insert([
  577. 'uid'=>$request->uid,
  578. 'error_code'=>$code,
  579. 'error_msg'=>$message,
  580. 'create_time'=>sr_getcurtime(time())
  581. ]);
  582. }
  583. }else{
  584. throw new Exception('请求失败');
  585. }
  586. Db::commit();
  587. }catch (\Exception $e){
  588. Db::rollback();
  589. return api_error_return($e->getMessage());
  590. }
  591. return api_succ_return(['msg'=>'加载广告失败,请直接领取任务包奖励', 'code'=>200]);
  592. }
  593. // 首页必读公告获取
  594. public function getHomeMsg(Request $request){
  595. $list = Db::name('system_article')->where('type', 9)->order('create_time desc')->select();
  596. $user = Db::name('user')->where('id', $request->uid)->find();
  597. foreach ($list as $key=>$val){
  598. if (!Db::name('article_get')->where('uid', $request->uid)->where('article_id', $val['id'])->find()){
  599. if ($user['reg_time'] < $val['create_time']){
  600. return api_succ_return(['msg'=>'成功','data'=> [$val]]);
  601. }
  602. }
  603. }
  604. return api_succ_return('成功');
  605. }
  606. // 用户消息已读
  607. public function getMsgDown(Request $request){
  608. $article_id = $request->post('article_id');
  609. if (Db::name('system_article')->where('id', $article_id)->where('type', 9)->find()){
  610. Db::name('article_get')->insert([
  611. 'uid'=>$request->uid,
  612. 'article_id'=>$article_id,
  613. 'create_time'=>sr_getcurtime(time())
  614. ]);
  615. }
  616. return api_succ_return('成功');
  617. }
  618. // 用户通知信息列表
  619. public function messageList(Request $request){
  620. $page = $request->post('page', 1);
  621. $limit = $request->post('limit', 10);
  622. 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()]);
  623. }
  624. // 用户余额转赠提交
  625. public function moneyExchargeSubmit(Request $request, UserServices $service){
  626. $post = $request->post();
  627. if ($request->user['mobile'] == $post['mobile']){
  628. return api_error_return('不能给自己转赠');
  629. }
  630. Db::startTrans();
  631. try {
  632. $info = $service->exchargeMoneySubmit($request->uid, $post['money'], $post['mobile']);
  633. Db::commit();
  634. }catch (Exception $e){
  635. Db::rollback();
  636. return api_error_return($e->getMessage());
  637. }
  638. return api_succ_return(['msg'=>'请求成功', 'data'=>$info]);
  639. }
  640. /**
  641. * 取消收藏商品
  642. * @param Request $request
  643. * @return \think\Response
  644. */
  645. public function cancelAttension(Request $request){
  646. $goodsId = $request->post('goods_id');
  647. if(ShopGoodsService::make()->cancelAttension($request->uid, $goodsId)){
  648. return api_succ_return('成功');
  649. }else{
  650. return api_error_return('失败');
  651. }
  652. }
  653. /**
  654. * 商品收藏列表
  655. * @param Request $request
  656. * @return \think\Response
  657. * @throws \think\db\exception\DataNotFoundException
  658. * @throws \think\db\exception\DbException
  659. * @throws \think\db\exception\ModelNotFoundException
  660. */
  661. public function goodsAttList(Request $request){
  662. $post = $request->post();
  663. $list = GoodsAttensionModel::alias('a')
  664. ->where('a.uid', '=', $request->uid)
  665. ->leftJoin('shop_goods g', 'g.goods_id = a.goods_id')
  666. ->withAttr('goods_img', function ($value) {
  667. return getPreviewUrl($value);
  668. })
  669. ->field('a.id,a.goods_id, g.goods_img, g.goods_name,g.goods_sn, g.attension_count,g.price, g.rebate_score')
  670. ->page($post['page'], $post['limit'])
  671. ->select()->toArray();
  672. return api_succ_return(['msg'=>'成功', 'data'=>$list]);
  673. }
  674. /**
  675. * 用户注销
  676. * @param Request $request
  677. * @return \think\Response
  678. */
  679. public function denyOff(Request $request){
  680. return api_succ_return('功能暂未开放');
  681. }
  682. /**
  683. * 回收卡信息
  684. * @param Request $request
  685. * @return \think\Response
  686. * @throws \think\db\exception\DataNotFoundException
  687. * @throws \think\db\exception\DbException
  688. * @throws \think\db\exception\ModelNotFoundException
  689. */
  690. public function recycleCardInfo(Request $request){
  691. $data = [];
  692. $user_info = Db::name('user')->where('id', $request->uid)->field('today_money,todayaward_money,store_type')->find();
  693. $data['every_day_recycle_count'] = $user_info['store_type'] == 1?120:20;
  694. $zt_numcount = Db::name('user')->where('pid', $request->uid)->where('has_fd', 1)->count();
  695. $data['zt_count'] = $zt_numcount * env('boxsetting.ONE_DIRECT_RECYCLE_COUNT');
  696. $has_get = Db::name('recyclecard_log')->where('type', 1)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  697. $has_ztget = Db::name('recyclecard_log')->where('type', 2)->where('uid', $request->uid)->whereDay('create_at', 'today')->find();
  698. $data['has_today_get'] = $has_get?1:0;
  699. $data['has_today_ztget'] = $has_ztget?1:0;
  700. $data['todayaward_money'] = $user_info['todayaward_money'];
  701. $data['today_money']=$user_info['today_money'];
  702. $data['services_store_price']=env('boxsetting.SERVICES_STORE_OPEN_PRICE');
  703. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  704. }
  705. /**
  706. * 领取回收卡
  707. * @param Request $request
  708. * @return \think\Response
  709. */
  710. public function getRecycleCard(Request $request){
  711. $type = $request->post('type');
  712. $model = new UserModel();
  713. Db::startTrans();
  714. try {
  715. $model->getRecycleCard($request->uid, $type, $request->user);
  716. Db::commit();
  717. }catch (\Exception $e){
  718. Db::rollback();
  719. return api_error_return($e->getMessage());
  720. }
  721. return api_succ_return('领取成功');
  722. }
  723. /**
  724. * 领取每日奖金
  725. * @param Request $request
  726. * @return \think\Response
  727. */
  728. public function getUserTeamMoney(Request $request){
  729. $model = new UserModel();
  730. return api_error_return('奖金已在每天21后自动领取');
  731. Db::startTrans();
  732. try {
  733. $model->getUserTeamMoney($request->uid);
  734. Db::commit();
  735. }catch (\Exception $e){
  736. Db::rollback();
  737. return api_error_return($e->getMessage());
  738. }
  739. return api_succ_return('领取成功');
  740. }
  741. /**
  742. * 今日奖金记录
  743. * @param Request $request
  744. * @return \think\Response
  745. */
  746. public function todayTeamMoneyLog(Request $request){
  747. $model = new MoneyLogModel();
  748. try {
  749. return api_succ_return(['msg'=>'成功', 'data'=>$model->getTeamMoneyLog($request)]);
  750. } catch (\Exception $e) {
  751. return api_error_return('失败');
  752. }
  753. }
  754. /**
  755. * 利润结算到余额
  756. * @param Request $request
  757. * @return \think\Response
  758. */
  759. public function getUserIncomeTeam(Request $request){
  760. $model = new UserModel();
  761. Db::startTrans();
  762. try {
  763. $cacheKey = "caches:profits:settles:{$request->uid}";
  764. if(RedisCache::get($cacheKey)){
  765. return api_error_return('请不要频繁提交');
  766. }
  767. RedisCache::setnx($cacheKey, 1, rand(2,3));
  768. UserService::make()->switchProfitToMoney($request->uid);
  769. Db::commit();
  770. }catch (\Exception $e){
  771. Db::rollback();
  772. RedisCache::clear($cacheKey);
  773. return api_error_return('结算失败'.$e->getMessage());
  774. }
  775. return api_succ_return('结算成功');
  776. }
  777. /**
  778. * 消费记录
  779. * @param Request $request
  780. * @return \think\Response
  781. */
  782. public function consumeLog(Request $request){
  783. $model = new PaymentModel();
  784. try {
  785. return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]);
  786. } catch (\Exception $e) {
  787. return api_error_return('失败'.$e->getMessage());
  788. }
  789. }
  790. /**
  791. * 商务合作申请
  792. * @param Request $request
  793. * @return \think\Response
  794. */
  795. public function bussinessApply(Request $request){
  796. $model = new UserModel();
  797. Db::startTrans();
  798. try {
  799. $model->bussinessApply($request->uid, $request->post());
  800. Db::commit();
  801. }catch (\Exception $e){
  802. Db::rollback();
  803. return api_error_return($e->getMessage());
  804. }
  805. return api_succ_return('申请成功');
  806. }
  807. /**
  808. * 用户利润信息用户利润信息
  809. * @param Request $request
  810. * @return \think\Response
  811. * @throws \think\db\exception\DataNotFoundException
  812. * @throws \think\db\exception\DbException
  813. * @throws \think\db\exception\ModelNotFoundException
  814. */
  815. public function userProfitInfo(Request $request){
  816. $user_info = Db::name('user')->where('id', $request->uid)->find();
  817. return api_succ_return(['msg'=>'成功', 'data'=>[
  818. 'total'=>$user_info['total_profit_money'],
  819. 'cur_profit'=>$user_info['profit_money'],
  820. 'desc'=>'按照100的倍数结算到余额'
  821. ]]);
  822. }
  823. /**
  824. * 邀请好友 绑定上级好友
  825. * @param Request $request
  826. * @return \think\Response
  827. */
  828. public function bangUpFriend(Request $request){
  829. $model = new UserModel();
  830. Db::startTrans();
  831. try {
  832. $model->bangUpFriend($request->uid, $request->post());
  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. * 获得直推上级信息
  842. * @param Request $request
  843. * @return \think\Response
  844. * @throws \think\db\exception\DataNotFoundException
  845. * @throws \think\db\exception\DbException
  846. * @throws \think\db\exception\ModelNotFoundException
  847. */
  848. public function getUpUserInfo(Request $request){
  849. $user_info = $request->user_info;
  850. if ($user_info['pid'] > 0){
  851. $pid_info = Db::name('user')->where('id', $user_info['pid'])->field('nickname,mobile,id')->find();
  852. $pid_info['mobile'] = substr($pid_info['mobile'], 0, 3).'****'.substr($pid_info['mobile'], 7);
  853. return api_succ_return(['msg'=>'成功', 'data'=>$pid_info]);
  854. }else{
  855. return api_succ_return(['msg'=>'成功', 'data'=>[]]);
  856. }
  857. }
  858. /**
  859. * 获取用户订单状态 处理
  860. * @param Request $request
  861. * @return \think\Response
  862. */
  863. public function orderUnreadInfo(Request $request){
  864. $data = [];
  865. Db::startTrans();
  866. try {
  867. $count1 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 0)->count();
  868. $count2 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 1)->count();
  869. $count3 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 2)->count();
  870. $data = [$count1, $count2, $count3, 0];
  871. Db::commit();
  872. }catch (\Exception $e){
  873. Db::rollback();
  874. return api_error_return('接口请求失败');
  875. }
  876. return api_succ_return(['msg'=>'成功', 'data'=>$data]);
  877. }
  878. }