WechatUser.php 13 KB

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