AgentManage.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <?php
  2. namespace app\admin\controller\agent;
  3. use app\admin\controller\AuthController;
  4. use app\admin\model\order\StoreOrder;
  5. use app\admin\model\system\SystemAttachment;
  6. use app\admin\model\user\User;
  7. use app\admin\model\wechat\WechatUser as UserModel;
  8. use app\models\routine\RoutineQrcode;
  9. use app\models\user\UserBill;
  10. use crmeb\services\JsonService;
  11. use crmeb\services\UploadService;
  12. use crmeb\services\UtilService as Util;
  13. /**
  14. * 分销商管理控制器
  15. * Class AgentManage
  16. * @package app\admin\controller\agent
  17. */
  18. class AgentManage extends AuthController
  19. {
  20. /**
  21. * @return mixed
  22. */
  23. public function index()
  24. {
  25. $this->assign( 'year',getMonth());
  26. $this->assign('store_brokerage_statu',sysConfig('store_brokerage_statu'));
  27. return $this->fetch();
  28. }
  29. public function get_spread_list()
  30. {
  31. $where=Util::getMore([
  32. ['nickname',''],
  33. ['start_time',''],
  34. ['end_time',''],
  35. ['sex',''],
  36. ['excel',''],
  37. ['subscribe',''],
  38. ['order',''],
  39. ['page',1],
  40. ['limit',20],
  41. ['user_type',''],
  42. ]);
  43. return JsonService::successlayui(UserModel::agentSystemPage($where));
  44. }
  45. public function get_badge()
  46. {
  47. $where = Util::postMore([
  48. ['data',''],
  49. ['nickname',''],
  50. ['excel',''],
  51. ]);
  52. return JsonService::successful(UserModel::getSpreadBadge($where));
  53. }
  54. /**
  55. * 一级推荐人页面
  56. * @return mixed
  57. */
  58. public function stair($uid = ''){
  59. if($uid == '') return $this->failed('参数错误');
  60. $this->assign('uid',$uid ? : 0);
  61. $this->assign( 'year',getMonth());
  62. return $this->fetch();
  63. }
  64. /*
  65. * 统计推广订单
  66. * @param int $uid
  67. * */
  68. public function stair_order($uid = 0)
  69. {
  70. if($uid == '') return $this->failed('参数错误');
  71. $this->assign('uid',$uid ? : 0);
  72. $this->assign( 'year',getMonth());
  73. return $this->fetch();
  74. }
  75. public function get_stair_order_list(){
  76. $where = Util::getMore([
  77. ['uid',$this->request->param('uid',0)],
  78. ['data',''],
  79. ['order_id',''],
  80. ['type',''],
  81. ['page',1],
  82. ['limit',20],
  83. ]);
  84. return JsonService::successlayui(UserModel::getStairOrderList($where));
  85. }
  86. public function get_stair_order_badge()
  87. {
  88. $where = Util::getMore([
  89. ['uid',''],
  90. ['data',''],
  91. ['order_id',''],
  92. ['type',''],
  93. ]);
  94. return JsonService::successful(UserModel::getStairOrderBadge($where));
  95. }
  96. public function get_stair_list()
  97. {
  98. $where = Util::getMore([
  99. ['uid',$this->request->param('uid',0)],
  100. ['data',''],
  101. ['nickname',''],
  102. ['type',''],
  103. ['page',1],
  104. ['limit',20],
  105. ]);
  106. return JsonService::successlayui(UserModel::getStairList($where));
  107. }
  108. public function get_stair_badge()
  109. {
  110. $where = Util::getMore([
  111. ['uid',''],
  112. ['data',''],
  113. ['nickname',''],
  114. ['type',''],
  115. ]);
  116. return JsonService::successful(UserModel::getSairBadge($where));
  117. }
  118. /**
  119. * 二级推荐人页面
  120. * @return mixed
  121. */
  122. public function stair_two($uid = '')
  123. {
  124. if($uid == '') return $this->failed('参数错误');
  125. $spread_uid=User::where('spread_uid',$uid)->column('uid','uid');
  126. if(count($spread_uid))
  127. $spread_uid_two=User::where('spread_uid','in',$spread_uid)->column('uid','uid');
  128. else
  129. $spread_uid_two=[0];
  130. $list = User::alias('u')
  131. ->where('u.uid','in',$spread_uid_two)
  132. ->field('u.avatar,u.nickname,u.now_money,u.spread_time,u.uid')
  133. ->where('u.status',1)
  134. ->order('u.add_time DESC')
  135. ->select()
  136. ->toArray();
  137. foreach ($list as $key=>$value) $list[$key]['orderCount'] = StoreOrder::getOrderCount($value['uid'])?:0;
  138. $this->assign('list',$list);
  139. return $this->fetch('stair');
  140. }
  141. /*
  142. * 批量清除推广权限
  143. * */
  144. public function delete_promoter()
  145. {
  146. list($uids)=Util::postMore([
  147. ['uids',[]]
  148. ],$this->request,true);
  149. if(!count($uids)) return JsonService::fail('请选择需要解除推广权限的用户!');
  150. User::beginTrans();
  151. try{
  152. if(User::where('uid','in',$uids)->update(['is_promoter'=>0])){
  153. User::commitTrans();
  154. return JsonService::successful('解除成功');
  155. }else{
  156. User::rollbackTrans();
  157. return JsonService::fail('解除失败');
  158. }
  159. }catch (\PDOException $e){
  160. User::rollbackTrans();
  161. return JsonService::fail('数据库操作错误',['line'=>$e->getLine(),'message'=>$e->getMessage()]);
  162. }catch (\Exception $e){
  163. User::rollbackTrans();
  164. return JsonService::fail('系统错误',['line'=>$e->getLine(),'message'=>$e->getMessage()]);
  165. }
  166. }
  167. /*
  168. * 查看公众号推广二维码
  169. * @param int $uid
  170. * @return json
  171. * */
  172. public function look_code($uid='',$action='')
  173. {
  174. if(!$uid || !$action) return JsonService::fail('缺少参数');
  175. try{
  176. if(method_exists($this,$action)){
  177. $res = $this->$action($uid);
  178. if($res)
  179. return JsonService::successful($res);
  180. else
  181. return JsonService::fail(isset($res['msg']) ? $res['msg'] : '获取失败,请稍后再试!' );
  182. }else
  183. return JsonService::fail('暂无此方法');
  184. }catch (\Exception $e){
  185. return JsonService::fail('获取推广二维码失败,请检查您的微信配置',['line'=>$e->getLine(),'messag'=>$e->getMessage()]);
  186. }
  187. }
  188. /*
  189. * 获取小程序二维码
  190. * */
  191. public function routine_code($uid)
  192. {
  193. $userInfo = User::getUserInfos($uid);
  194. $name = $userInfo['uid'].'_'.$userInfo['is_promoter'].'_user.jpg';
  195. $imageInfo = SystemAttachment::getInfo($name,'name');
  196. if(!$imageInfo){
  197. $res = \app\models\routine\RoutineCode::getShareCode($uid, 'spread', '', '');
  198. if(!$res) throw new \think\Exception('二维码生成失败');
  199. $imageInfo = UploadService::getInstance()->setUploadPath('routine/spread/code')->imageStream($name,$res['res']);
  200. if(!is_array($imageInfo)) return $imageInfo;
  201. SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time']);
  202. RoutineQrcode::setRoutineQrcodeFind($res['id'],['status'=>1,'time'=>time(),'qrcode_url'=>$imageInfo['dir']]);
  203. $urlCode = $imageInfo['dir'];
  204. }else $urlCode = $imageInfo['att_dir'];
  205. return ['code_src'=>$urlCode];
  206. }
  207. /*
  208. *
  209. * */
  210. public function wechant_code($uid)
  211. {
  212. $qr_code = \crmeb\services\QrcodeService::getTemporaryQrcode('spread',$uid);
  213. if(isset($qr_code['url']))
  214. return ['code_src'=>$qr_code['url']];
  215. else
  216. throw new \think\Exception('获取失败,请稍后再试!');
  217. }
  218. /**
  219. * TODO 查看小程序推广二维码
  220. * @param string $uid
  221. */
  222. public function look_xcx_code($uid = '')
  223. {
  224. if(!strlen(trim($uid))) return JsonService::fail('缺少参数');
  225. try{
  226. $userInfo = User::getUserInfos($uid);
  227. $name = $userInfo['uid'].'_'.$userInfo['is_promoter'].'_user.jpg';
  228. $imageInfo = SystemAttachment::getInfo($name,'name');
  229. if(!$imageInfo){
  230. $res = \app\models\routine\RoutineCode::getShareCode($uid, 'spread', '', '');
  231. if(!$res) return JsonService::fail('二维码生成失败');
  232. $imageInfo = UploadService::getInstance()->setUploadPath('routine/spread/code')->imageStream($name,$res['res']);
  233. if(!is_array($imageInfo)) return JsonService::fail($imageInfo);
  234. SystemAttachment::attachmentAdd($imageInfo['name'],$imageInfo['size'],$imageInfo['type'],$imageInfo['dir'],$imageInfo['thumb_path'],1,$imageInfo['image_type'],$imageInfo['time']);
  235. RoutineQrcode::setRoutineQrcodeFind($res['id'],['status'=>1,'time'=>time(),'qrcode_url'=>$imageInfo['dir']]);
  236. $urlCode = $imageInfo['dir'];
  237. }else $urlCode = $imageInfo['att_dir'];
  238. return JsonService::successful(['code_src'=>$urlCode]);
  239. }catch (\Exception $e){
  240. return JsonService::fail('查看推广二维码失败!',['line'=>$e->getLine(),'meassge'=>$e->getMessage()]);
  241. }
  242. }
  243. /*
  244. * 解除单个用户的推广权限
  245. * @param int $uid
  246. * */
  247. public function delete_spread($uid=0)
  248. {
  249. if(!$uid) return JsonService::fail('缺少参数');
  250. if(User::where('uid',$uid)->update(['is_promoter'=>0]))
  251. return JsonService::successful('解除成功');
  252. else
  253. return JsonService::fail('解除失败');
  254. }
  255. /*
  256. * 清除推广人
  257. * */
  258. public function empty_spread($uid=0)
  259. {
  260. if(!$uid) return JsonService::fail('缺少参数');
  261. $res = User::where('uid',$uid)->update(['spread_uid'=>0]);
  262. if($res)
  263. return JsonService::successful('清除成功');
  264. else
  265. return JsonService::fail('清除失败');
  266. }
  267. /**
  268. * 个人资金详情页面
  269. * @return mixed
  270. */
  271. public function now_money($uid = ''){
  272. if($uid == '') return $this->failed('参数错误');
  273. $list = UserBill::where('uid',$uid)->where('category','now_money')
  274. ->field('mark,pm,number,add_time')
  275. ->where('status',1)->order('add_time DESC')->select()->toArray();
  276. foreach ($list as &$v){
  277. $v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
  278. }
  279. $this->assign('list',$list);
  280. return $this->fetch();
  281. }
  282. }