UserController.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\api\controller\v1\user;
  12. use app\model\user\CertType;
  13. use app\model\member\MemberCheck;
  14. use app\Request;
  15. use app\services\order\StoreOrderSuccessServices;
  16. use app\services\product\product\StoreProductLogServices;
  17. use app\services\user\UserCancelServices;
  18. use app\services\user\UserServices;
  19. use app\services\wechat\WechatUserServices;
  20. //use crmeb\repositories\OrderRepository;
  21. /**
  22. * 用户类
  23. * Class UserController
  24. * @package app\api\controller\store
  25. */
  26. class UserController
  27. {
  28. protected $services = NUll;
  29. /**
  30. * UserController constructor.
  31. * @param UserServices $services
  32. */
  33. public function __construct(UserServices $services)
  34. {
  35. $this->services = $services;
  36. }
  37. /**
  38. * 获取用户信息
  39. * @param Request $request
  40. * @return mixed
  41. */
  42. public function userInfo(Request $request)
  43. {
  44. $info = $request->user()->toArray();
  45. return app('json')->success($this->services->userInfo($info));
  46. }
  47. /**
  48. * 用户资金统计
  49. * @param Request $request
  50. * @return mixed
  51. */
  52. public function balance(Request $request)
  53. {
  54. $uid = (int)$request->uid();
  55. return app('json')->success($this->services->balance($uid));
  56. }
  57. /**
  58. * 个人中心
  59. * @param Request $request
  60. * @return mixed
  61. */
  62. public function user(Request $request)
  63. {
  64. $user = $request->user()->toArray();
  65. return app('json')->success($this->services->personalHome($user, $request->tokenData()));
  66. }
  67. /**
  68. * 获取活动状态
  69. * @return mixed
  70. */
  71. public function activity()
  72. {
  73. return app('json')->success($this->services->activity());
  74. }
  75. /**
  76. * 用户修改信息
  77. * @param Request $request
  78. * @return mixed
  79. */
  80. public function edit(Request $request)
  81. {
  82. list($avatar, $nickname) = $request->postMore([
  83. ['avatar', ''],
  84. ['nickname', ''],
  85. ], true);
  86. if (!$avatar && $nickname == '') {
  87. return app('json')->fail(410134);
  88. }
  89. $uid = (int)$request->uid();
  90. if ($this->services->eidtNickname($uid, ['avatar' => $avatar, 'nickname' => $nickname])) {
  91. return app('json')->success(100014);
  92. }
  93. return app('json')->fail(100015);
  94. }
  95. /**
  96. * 推广人排行
  97. * @param Request $request
  98. * @return mixed
  99. * @throws \think\db\exception\DataNotFoundException
  100. * @throws \think\db\exception\ModelNotFoundException
  101. */
  102. public function rank(Request $request)
  103. {
  104. $data = $request->getMore([
  105. ['page', ''],
  106. ['limit', ''],
  107. ['type', '']
  108. ]);
  109. return app('json')->success($this->services->getRankList($data));
  110. }
  111. /**
  112. * 添加访问记录
  113. * @param Request $request
  114. * @return mixed
  115. */
  116. public function set_visit(Request $request)
  117. {
  118. $data = $request->postMore([
  119. ['url', ''],
  120. ['stay_time', 0]
  121. ]);
  122. if ($data['url'] == '') return app('json')->fail(100100);
  123. $data['uid'] = (int)$request->uid();
  124. $data['ip'] = $request->ip();
  125. if ($this->services->setVisit($data)) {
  126. return app('json')->success(100021);
  127. } else {
  128. return app('json')->fail(100022);
  129. }
  130. }
  131. /**
  132. * 静默绑定推广人
  133. * @param Request $request
  134. * @return mixed
  135. * @throws \think\db\exception\DataNotFoundException
  136. * @throws \think\db\exception\DbException
  137. * @throws \think\db\exception\ModelNotFoundException
  138. */
  139. public function spread(Request $request)
  140. {
  141. [$spreadUid, $code] = $request->postMore([
  142. ['puid', 0],
  143. ['code', 0]
  144. ], true);
  145. $uid = (int)$request->uid();
  146. $res = $this->services->spread($uid, (int)$spreadUid, $code);
  147. return app('json')->success($res);
  148. }
  149. /**
  150. * 推荐用户
  151. * @param Request $request
  152. * @return mixed
  153. */
  154. public function spread_people(Request $request)
  155. {
  156. $spreadInfo = $request->postMore([
  157. ['grade', 0],
  158. ['keyword', ''],
  159. ['sort', ''],
  160. ]);
  161. if (!in_array($spreadInfo['grade'], [0, 1])) {
  162. return app('json')->fail(100100);
  163. }
  164. $uid = $request->uid();
  165. return app('json')->success($this->services->getUserSpreadGrade($uid, $spreadInfo['grade'], $spreadInfo['sort'], $spreadInfo['keyword']));
  166. }
  167. /**
  168. * 是否关注
  169. * @param Request $request
  170. * @return mixed
  171. */
  172. public function subscribe(Request $request)
  173. {
  174. if ($request->uid()) {
  175. /** @var WechatUserServices $wechatUserService */
  176. $wechatUserService = app()->make(WechatUserServices::class);
  177. $subscribe = (bool)$wechatUserService->value(['uid' => $request->uid()], 'subscribe');
  178. return app('json')->success(['subscribe' => $subscribe]);
  179. } else {
  180. return app('json')->success(['subscribe' => true]);
  181. }
  182. }
  183. /**
  184. * 用户注销
  185. * @param Request $request
  186. * @return mixed
  187. */
  188. public function SetUserCancel(Request $request)
  189. {
  190. /** @var UserCancelServices $userCancelServices */
  191. $userCancelServices = app()->make(UserCancelServices::class);
  192. $userCancelServices->SetUserCancel($request->uid());
  193. return app('json')->success(410135);
  194. }
  195. /**
  196. * 商品浏览记录
  197. * @param Request $request
  198. * @param StoreProductLogServices $services
  199. * @return mixed
  200. * @throws \think\db\exception\DataNotFoundException
  201. * @throws \think\db\exception\DbException
  202. * @throws \think\db\exception\ModelNotFoundException
  203. */
  204. public function visitList(Request $request, StoreProductLogServices $services)
  205. {
  206. $where['uid'] = (int)$request->uid();
  207. $where['type'] = 'visit';
  208. $result = $services->getList($where, 'product_id', 'id,product_id,max(add_time) as add_time');
  209. $time_data = [];
  210. if ($result['list']) {
  211. foreach ($result['list'] as $key => &$item) {
  212. $add_time = strtotime($item['add_time']);
  213. if (date('Y') == date('Y', $add_time)) {//今年
  214. $item['time_key'] = date('m-d', $add_time);
  215. } else {
  216. $item['time_key'] = date('Y-m-d', $add_time);
  217. }
  218. }
  219. $time_data = array_merge(array_unique(array_column($result['list'], 'time_key')));
  220. }
  221. $result['time'] = $time_data;
  222. return app('json')->success($result);
  223. }
  224. /**
  225. * 商品浏览记录删除
  226. * @param Request $request
  227. * @param StoreProductLogServices $services
  228. * @return mixed
  229. * @throws \think\db\exception\DataNotFoundException
  230. * @throws \think\db\exception\DbException
  231. * @throws \think\db\exception\ModelNotFoundException
  232. */
  233. public function visitDelete(Request $request, StoreProductLogServices $services)
  234. {
  235. $uid = (int)$request->uid();
  236. [$ids] = $request->postMore([
  237. ['ids', []],
  238. ], true);
  239. if ($ids) {
  240. $where = ['uid' => $uid, 'product_id' => $ids];
  241. $services->delete($where);
  242. }
  243. return app('json')->success('删除成功');
  244. }
  245. //定时任务 发放V3分销等级奖励
  246. public function jobs()
  247. {
  248. // 获取分销等级表中等级最高的分销等级ID(grade字段最大的)
  249. $highestGrade = \app\model\agent\AgentLevel::where('is_del', 0)
  250. ->where('status', 1)
  251. ->max('grade');
  252. if (!$highestGrade) {
  253. return app('json')->success('ok');
  254. }
  255. // 获取所有等级等于最高等级的用户
  256. $highestGradeLevels = \app\model\agent\AgentLevel::where('is_del', 0)
  257. ->where('status', 1)
  258. ->where('grade', $highestGrade)
  259. ->column('id');
  260. @file_put_contents("quanju.txt", json_encode($highestGradeLevels) . "获取所有等级等于最高等级的用户\r\n", 8);
  261. if (empty($highestGradeLevels)) {
  262. return app('json')->success('ok');
  263. }
  264. // 获取所有分销等级ID在这些等级中的用户
  265. $userIds = \app\model\user\User::whereIn('agent_level', $highestGradeLevels)->column('uid');
  266. @file_put_contents("quanju.txt", json_encode($userIds) . "获取所有分销等级ID在这些等级中的用户\r\n", 8);
  267. if (empty($userIds)) {
  268. return app('json')->success('ok');
  269. }
  270. /** @var StoreOrderSuccessServices $storeOrderSuccessServices */
  271. $storeOrderSuccessServices = app()->make(StoreOrderSuccessServices::class);
  272. // 循环调用verifyLineReward方法
  273. foreach ($userIds as $uid) {
  274. @file_put_contents("quanju.txt", $uid . "V3用户会员\r\n", 8);
  275. $storeOrderSuccessServices->verifyLineReward($uid);
  276. }
  277. return app('json')->success('ok');
  278. }
  279. }