WechatUser.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. <?php
  2. namespace app\admin\controller\wechat;
  3. use app\admin\controller\AuthController;
  4. use service\FormBuilder as Form;
  5. use app\admin\model\user\User;
  6. use app\admin\model\wechat\WechatUser as UserModel;
  7. use app\wap\model\user\UserBill;
  8. use service\JsonService;
  9. use service\UtilService as Util;
  10. use service\WechatService;
  11. use think\Collection;
  12. use think\Request;
  13. use think\Url;
  14. /**
  15. * 管理员操作记录表控制器
  16. * Class WechatUser
  17. * @package app\admin\controller\wechat
  18. */
  19. class WechatUser extends AuthController
  20. {
  21. /**
  22. * 显示操作记录
  23. */
  24. public function index(){
  25. $where = Util::getMore([
  26. ['nickname',''],
  27. ['data',''],
  28. ['tagid_list',''],
  29. ['groupid','-1'],
  30. ['sex',''],
  31. ['export',''],
  32. ['stair',''],
  33. ['second',''],
  34. ['order_stair',''],
  35. ['order_second',''],
  36. ['subscribe',''],
  37. ['now_money',''],
  38. ['is_promoter',''],
  39. ],$this->request);
  40. $tagidList = explode(',',$where['tagid_list']);
  41. foreach ($tagidList as $k=>$v){
  42. if(!$v){
  43. unset($tagidList[$k]);
  44. }
  45. }
  46. $tagidList = array_unique($tagidList);
  47. $where['tagid_list'] = implode(',',$tagidList);
  48. $this->assign([
  49. 'where'=>$where,
  50. 'groupList'=>UserModel::getUserGroup(),
  51. 'tagList'=>UserModel::getUserTag()
  52. ]);
  53. $limitTimeList = [
  54. 'today'=>implode(' - ',[date('Y/m/d'),date('Y/m/d',strtotime('+1 day'))]),
  55. 'week'=>implode(' - ',[
  56. date('Y/m/d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)),
  57. date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600))
  58. ]),
  59. 'month'=>implode(' - ',[date('Y/m').'/01',date('Y/m').'/'.date('t')]),
  60. 'quarter'=>implode(' - ',[
  61. date('Y').'/'.(ceil((date('n'))/3)*3-3+1).'/01',
  62. date('Y').'/'.(ceil((date('n'))/3)*3).'/'.date('t',mktime(0,0,0,(ceil((date('n'))/3)*3),1,date('Y')))
  63. ]),
  64. 'year'=>implode(' - ',[
  65. date('Y').'/01/01',date('Y/m/d',strtotime(date('Y').'/01/01 + 1year -1 day'))
  66. ])
  67. ];
  68. $uidAll = UserModel::getAll($where);
  69. $this->assign(compact('limitTimeList','uidAll'));
  70. $this->assign(UserModel::systemPage($where));
  71. return $this->fetch();
  72. }
  73. public function edit_user_tag($openid)
  74. {
  75. if(!$openid) return JsonService::fail('参数错误!');
  76. $list = Collection::make(UserModel::getUserTag())->each(function($item){
  77. return ['value'=>$item['id'],'label'=>$item['name']];
  78. });
  79. $tagList = UserModel::where('openid',$openid)->value('tagid_list');
  80. $tagList = explode(',',$tagList)?:[];
  81. $f = [Form::select('tag_id','用户标签',$tagList)->setOptions($list->toArray())->multiple(1)];
  82. $form = Form::make_post_form('标签名称',$f,Url::build('update_user_tag',compact('openid')));
  83. $this->assign(compact('form'));
  84. return $this->fetch('public/form-builder');
  85. }
  86. public function update_user_tag(Request $request,$openid)
  87. {
  88. if(!$openid) return JsonService::fail('参数错误!');
  89. $tagId = $request->post('tag_id/a',[]);
  90. if(!$tagId) return JsonService::fail('请选择用户标签!');
  91. $tagList = explode(',',UserModel::where('openid',$openid)->value('tagid_list'))?:[];
  92. UserModel::edit(['tagid_list'=>$tagId],$openid,'openid');
  93. if(!$tagId[0])unset($tagId[0]);
  94. UserModel::edit(['tagid_list'=>$tagId],$openid,'openid');
  95. try{
  96. foreach ($tagList as $tag){
  97. if($tag) WechatService::userTagService()->batchUntagUsers([$openid],$tag);
  98. }
  99. foreach ($tagId as $tag){
  100. WechatService::userTagService()->batchTagUsers([$openid],$tag);
  101. }
  102. }catch (\Exception $e){
  103. UserModel::rollbackTrans();
  104. return JsonService::fail($e->getMessage());
  105. }
  106. UserModel::commitTrans();
  107. return JsonService::successful('修改成功!');
  108. }
  109. public function edit_user_group($openid)
  110. {
  111. if(!$openid) return JsonService::fail('参数错误!');
  112. $list = Collection::make(UserModel::getUserGroup())->each(function($item){
  113. return ['value'=>$item['id'],'label'=>$item['name']];
  114. });
  115. $groupId = UserModel::where('openid',$openid)->value('groupid');
  116. $f = [Form::select('group_id','用户分组',(string)$groupId)->setOptions($list->toArray())];
  117. $form = Form::make_post_form('用户分组',$f,Url::build('update_user_group',compact('openid')));
  118. $this->assign(compact('form'));
  119. return $this->fetch('public/form-builder');
  120. }
  121. public function update_user_group(Request $request,$openid)
  122. {
  123. if(!$openid) return JsonService::fail('参数错误!');
  124. $groupId = $request->post('group_id');
  125. // if(!$groupId) return JsonService::fail('请选择用户分组!');
  126. UserModel::beginTrans();
  127. UserModel::edit(['groupid'=>$groupId],$openid,'openid');
  128. try{
  129. WechatService::userGroupService()->moveUser($openid,$groupId);
  130. }catch (\Exception $e){
  131. UserModel::rollbackTrans();
  132. return JsonService::fail($e->getMessage());
  133. }
  134. UserModel::commitTrans();
  135. return JsonService::successful('修改成功!');
  136. }
  137. /**
  138. * 用户标签列表
  139. */
  140. public function tag($refresh = 0)
  141. {
  142. if($refresh == 1) {
  143. UserModel::clearUserTag();
  144. $this->redirect(Url::build('tag'));
  145. }
  146. $list = UserModel::getUserTag();
  147. $this->assign(compact('list'));
  148. return $this->fetch();
  149. }
  150. /**
  151. * 添加标签
  152. * @return mixed
  153. */
  154. public function create_tag()
  155. {
  156. $f = [Form::input('name','标签名称')];
  157. $form = Form::make_post_form('标签名称',$f,Url::build('save_tag'));
  158. $this->assign(compact('form'));
  159. return $this->fetch('public/form-builder');
  160. }
  161. /**
  162. * 添加
  163. * @param Request $request
  164. * @return \think\response\Json
  165. */
  166. public function save_tag(Request $request)
  167. {
  168. $tagName = $request->post('name');
  169. if(!$tagName) return JsonService::fail('请输入标签名称!');
  170. try{
  171. WechatService::userTagService()->create($tagName);
  172. }catch (\Exception $e){
  173. return JsonService::fail($e->getMessage());
  174. }
  175. UserModel::clearUserTag();
  176. return JsonService::successful('添加标签成功!');
  177. }
  178. /**
  179. * 修改标签
  180. * @param $id
  181. * @return mixed
  182. */
  183. public function edit_tag($id)
  184. {
  185. $f = [Form::input('name','标签名称')];
  186. $form = Form::make_post_form('标签名称',$f,Url::build('update_tag',['id'=>$id]));
  187. $this->assign(compact('form'));
  188. return $this->fetch('public/form-builder');
  189. }
  190. /**
  191. * 修改标签
  192. * @param Request $request
  193. * @param $id
  194. * @return \think\response\Json
  195. */
  196. public function update_tag(Request $request, $id)
  197. {
  198. $tagName = $request->post('name');
  199. if(!$tagName) return JsonService::fail('请输入标签名称!');
  200. try{
  201. WechatService::userTagService()->update($id,$tagName);
  202. }catch (\Exception $e){
  203. return JsonService::fail($e->getMessage());
  204. }
  205. UserModel::clearUserTag();
  206. return JsonService::successful('修改标签成功!');
  207. }
  208. /**
  209. * 删除标签
  210. * @param $id
  211. * @return \think\response\Json
  212. */
  213. public function delete_tag($id)
  214. {
  215. try{
  216. WechatService::userTagService()->delete($id);
  217. }catch (\Exception $e){
  218. return JsonService::fail($e->getMessage());
  219. }
  220. UserModel::clearUserTag();
  221. return JsonService::successful('删除标签成功!');
  222. }
  223. /**
  224. * 用户分组列表
  225. */
  226. public function group($refresh = 0)
  227. {
  228. if($refresh == 1) {
  229. UserModel::clearUserGroup();
  230. $this->redirect(Url::build('group'));
  231. }
  232. $list = UserModel::getUserGroup();
  233. $this->assign(compact('list'));
  234. return $this->fetch();
  235. }
  236. /**
  237. * 添加分组
  238. * @return mixed
  239. */
  240. public function create_group()
  241. {
  242. $f = [Form::input('name','分组名称')];
  243. $form = Form::make_post_form('标签名称',$f,Url::build('save_group'));
  244. $this->assign(compact('form'));
  245. return $this->fetch('public/form-builder');
  246. }
  247. /**
  248. * 添加
  249. * @param Request $request
  250. * @return \think\response\Json
  251. */
  252. public function save_group(Request $request)
  253. {
  254. $tagName = $request->post('name');
  255. if(!$tagName) return JsonService::fail('请输入分组名称!');
  256. try{
  257. WechatService::userGroupService()->create($tagName);
  258. }catch (\Exception $e){
  259. return JsonService::fail($e->getMessage());
  260. }
  261. UserModel::clearUserGroup();
  262. return JsonService::successful('添加分组成功!');
  263. }
  264. /**
  265. * 修改分组
  266. * @param $id
  267. * @return mixed
  268. */
  269. public function edit_group($id)
  270. {
  271. $f = [Form::input('name','分组名称')];
  272. $form = Form::make_post_form('标签名称',$f,Url::build('update_group',compact('id')));
  273. $this->assign(compact('form'));
  274. return $this->fetch('public/form-builder');
  275. }
  276. /**
  277. * 修改分组
  278. * @param Request $request
  279. * @param $id
  280. * @return \think\response\Json
  281. */
  282. public function update_group(Request $request, $id)
  283. {
  284. $tagName = $request->post('name');
  285. if(!$tagName) return JsonService::fail('请输入分组名称!');
  286. try{
  287. WechatService::userGroupService()->update($id,$tagName);
  288. }catch (\Exception $e){
  289. return JsonService::fail($e->getMessage());
  290. }
  291. UserModel::clearUserGroup();
  292. return JsonService::successful('修改分组成功!');
  293. }
  294. /**
  295. * 删除分组
  296. * @param $id
  297. * @return \think\response\Json
  298. */
  299. public function delete_group($id)
  300. {
  301. try{
  302. WechatService::userTagService()->delete($id);
  303. }catch (\Exception $e){
  304. return JsonService::fail($e->getMessage());
  305. }
  306. UserModel::clearUserGroup();
  307. return JsonService::successful('删除分组成功!');
  308. }
  309. public function synchro_tag($openid){
  310. if(!$openid) return JsonService::fail('参数错误!');
  311. $data = array();
  312. if(UserModel::be($openid,'openid')){
  313. try{
  314. $tag = WechatService::userTagService()->userTags($openid)->toArray();
  315. }catch (\Exception $e) {
  316. return JsonService::fail($e->getMessage());
  317. }
  318. if($tag['tagid_list']) $data['tagid_list'] = implode(',',$tag['tagid_list']);
  319. else $data['tagid_list'] = '';
  320. $res = UserModel::edit($data,$openid,'openid');
  321. if($res) return JsonService::successful('同步成功');
  322. else return JsonService::fail('同步失败!');
  323. }else return JsonService::fail('参数错误!');
  324. }
  325. /**
  326. * 一级推荐人页面
  327. * @return mixed
  328. */
  329. public function stair($uid = ''){
  330. if($uid == '') return $this->failed('参数错误');
  331. $list = User::alias('u')
  332. ->where('u.spread_uid',$uid)
  333. ->field('u.avatar,u.nickname,u.now_money,u.add_time,u.uid')
  334. ->where('u.status',1)
  335. ->order('u.add_time DESC')
  336. ->select()
  337. ->toArray();
  338. foreach ($list as $key=>$value) $list[$key]['orderCount'] = StoreOrder::getOrderCount($value['uid']);
  339. $this->assign('list',$list);
  340. return $this->fetch();
  341. }
  342. /**
  343. * 个人资金详情页面
  344. * @return mixed
  345. */
  346. public function now_money($uid = ''){
  347. if($uid == '') return $this->failed('参数错误');
  348. $list = UserBill::where('uid',$uid)->where('category','now_money')
  349. ->field('mark,pm,number,add_time')
  350. ->where('status',1)->order('add_time DESC')->select()->toArray();
  351. foreach ($list as &$v){
  352. $v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
  353. }
  354. $this->assign('list',$list);
  355. return $this->fetch();
  356. }
  357. }