User.php 31 KB

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