User.php 31 KB

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