User.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <?php
  2. namespace app\agent\controller;
  3. use think\facade\Session;
  4. use app\agent\BaseController;
  5. use app\common\model\User as UserModel;
  6. use app\common\model\UserAuths as UserAuthsModel;
  7. use app\common\model\UserFollow as UserFollowModel;
  8. use app\common\model\UserGroups as UserGroupsModel;
  9. use app\common\model\Broker as BrokerModel;
  10. use app\common\validate\User as UserValidate;
  11. use think\exception\ValidateException;
  12. use PHPExcel_IOFactory;
  13. use PHPExcel;
  14. class User extends BaseController
  15. {
  16. // 用户跟进记录
  17. public function follow()
  18. {
  19. $userid = input('userid/d');
  20. $user = UserModel::findOrEmpty($userid);
  21. $followlist = UserFollowModel::where('userid',$userid)->order('id','desc')->limit(100)->select();
  22. return view('user/follow',[
  23. 'user' => $user,
  24. 'followlist' => $followlist
  25. ]);
  26. }
  27. public function editFollow()
  28. {
  29. $userid = input('userid/d', 0);
  30. $user = UserModel::findOrEmpty($userid);
  31. if ($user->isEmpty()){
  32. exit(json_encode(array(
  33. 'code' => 1,
  34. 'msg' => "用户信息不存在。"
  35. )));
  36. }
  37. $agent = $this->access_agent;
  38. $broker = BrokerModel::where('agentid','=',$agent['id'])->findOrEmpty($user->brokerid);
  39. if ($broker->isEmpty()){
  40. exit(json_encode(array(
  41. 'code' => 1,
  42. 'msg' => "你无权限上报该用户跟进记录。"
  43. )));
  44. }
  45. UserFollowModel::create([
  46. 'userid' => $userid,
  47. 'ftype' => input('ftype/s', ""),
  48. 'remark' => input('remark/s', ""),
  49. 'createtime' => time()
  50. ]);
  51. $followstatus = input('followstatus/d', 1);
  52. $user->save([
  53. 'followstatus' => $followstatus
  54. ]);
  55. exit(json_encode(array(
  56. 'code' => 0
  57. )));
  58. }
  59. // 用户授权
  60. public function authsList()
  61. {
  62. $userid = input('userid/d');
  63. return view('user/authslist',[
  64. 'userid' => $userid
  65. ]);
  66. }
  67. public function listAuths()
  68. {
  69. $userid = input('userid/d');
  70. $list = UserAuthsModel::where('userid',$userid)->order('id','asc')->append(['identitytype_text'])->select();
  71. $count = UserAuthsModel::where('userid',$userid)->count();
  72. if ($count==0){
  73. exit(json_encode(array(
  74. 'code' => 1,
  75. 'msg' => "未查询到数据"
  76. )));
  77. }
  78. exit(json_encode(array(
  79. 'code' => 0,
  80. 'msg' => "",
  81. 'count' => $count,
  82. 'data' => $list
  83. )));
  84. }
  85. public function delAuths()
  86. {
  87. $id = input('id/d');
  88. $auths = UserAuthsModel::find($id);
  89. if ($auths->identitytype == 'mobile'){
  90. exit(json_encode(array(
  91. 'code' => 1,
  92. 'msg' => "手机号授权方式不允许删除"
  93. )));
  94. }
  95. $result = $auths->delete();
  96. if ($result){
  97. exit(json_encode(array(
  98. 'code' => 0
  99. )));
  100. }
  101. exit(json_encode(array(
  102. 'code' => 1,
  103. 'msg' => "删除失败,请稍后重试"
  104. )));
  105. }
  106. // 用户
  107. public function userList()
  108. {
  109. $agentid = $this->access_agent['id'];
  110. $groupslist = UserGroupsModel::order(['isdefault'=>'desc','id'=>'asc'])->select();
  111. $brokerlist = BrokerModel::where('agentid', '=', $agentid)->order(['id'=>'desc'])->select();
  112. return view('user/userlist',[
  113. 'groupslist' => $groupslist,
  114. 'brokerlist' => $brokerlist
  115. ]);
  116. }
  117. public function userForm()
  118. {
  119. $agentid = $this->access_agent['id'];
  120. $brokeridarr = BrokerModel::where('agentid','=',$agentid)->column('id');
  121. $id = input('id/d', 0);
  122. $user = UserModel::whereIn('brokerid',$brokeridarr)->where('brokerid','<>', 0)->findOrEmpty($id);
  123. $agent = $this->access_agent;
  124. $groupslist = UserGroupsModel::order(['isdefault'=>'desc','id'=>'asc'])->select();
  125. $brokerlist = BrokerModel::where('agentid', '=', $agentid)->order(['id'=>'desc'])->select();
  126. return view('user/userform',[
  127. 'brokerlist' => $brokerlist,
  128. 'groupslist' => $groupslist,
  129. 'agent' => $agent,
  130. 'user' => $user
  131. ]);
  132. }
  133. public function fieldUser()
  134. {
  135. $agentid = $this->access_agent['id'];
  136. $brokeridarr = BrokerModel::where('agentid','=',$agentid)->column('id');
  137. $id = input('id/d',0);
  138. $user = UserModel::whereIn('brokerid',$brokeridarr)->where('brokerid','<>', 0)->findOrEmpty($id);
  139. if ($user->isEmpty()){
  140. exit(json_encode(array(
  141. 'code' => 1,
  142. 'msg' => "信息不存在"
  143. )));
  144. }else{
  145. $user->save([
  146. input('field/s') => input('value/s')
  147. ]);
  148. }
  149. exit(json_encode(array(
  150. 'code' => 0
  151. )));
  152. }
  153. public function listUser()
  154. {
  155. $agentid = $this->access_agent['id'];
  156. $limit = input('limit', 20);
  157. $page = input('page', 1);
  158. $map = array();
  159. $brokeridarr = BrokerModel::where('agentid','=',$agentid)->column('id');
  160. $map[] = ['brokerid', 'in', $brokeridarr];
  161. $map[] = ['brokerid', '<>', 0];
  162. $keywords = input('keywords/s');
  163. if (!empty($keywords)){
  164. $map[] =['nickname|realname|mobile', 'like', '%'.$keywords.'%', 'or'];
  165. }
  166. $groupsid = input('groupsid/d');
  167. if (!empty($groupsid)){
  168. $map[] = ['groupsid', '=', $groupsid];
  169. }
  170. $brokerid = input('brokerid/d');
  171. if (!empty($brokerid)){
  172. $map[] = ['brokerid', '=', $brokerid];
  173. }
  174. $status = input('status/d');
  175. if (!empty($status)){
  176. $map[] = ['status', '=', $status];
  177. }
  178. $authstatus = input('authstatus/d');
  179. if (!empty($authstatus)){
  180. $map[] = ['authstatus', '=', $authstatus];
  181. }
  182. $followstatus = input('followstatus/d');
  183. if (!empty($followstatus)){
  184. $map[] = ['followstatus', '=', $followstatus];
  185. }
  186. $list = UserModel::with(['userGroups','broker'])->where($map)->order('id','desc')->limit($limit)->page($page)->append(['status_text','isvip_text','authstatus_text','followstatus_text'])->select();
  187. $count = UserModel::where($map)->count();
  188. if ($count==0){
  189. exit(json_encode(array(
  190. 'code' => 1,
  191. 'msg' => "未查询到数据"
  192. )));
  193. }
  194. exit(json_encode(array(
  195. 'code' => 0,
  196. 'msg' => "",
  197. 'count' => $count,
  198. 'data' => $list
  199. )));
  200. }
  201. public function exportUser()
  202. {
  203. $agentid = $this->access_agent['id'];
  204. $map = array();
  205. $brokeridarr = BrokerModel::where('agentid','=',$agentid)->column('id');
  206. $map[] = ['brokerid', 'in', $brokeridarr];
  207. $map[] = ['brokerid', '<>', 0];
  208. $keywords = input('keywords/s');
  209. if (!empty($keywords)){
  210. $map[] =['nickname|realname|mobile', 'like', '%'.$keywords.'%', 'or'];
  211. }
  212. $groupsid = input('groupsid/d');
  213. if (!empty($groupsid)){
  214. $map[] = ['groupsid', '=', $groupsid];
  215. }
  216. $brokerid = input('brokerid/d');
  217. if (!empty($brokerid)){
  218. $map[] = ['brokerid', '=', $brokerid];
  219. }
  220. $status = input('status/d');
  221. if (!empty($status)){
  222. $map[] = ['status', '=', $status];
  223. }
  224. $authstatus = input('authstatus/d');
  225. if (!empty($authstatus)){
  226. $map[] = ['authstatus', '=', $authstatus];
  227. }
  228. $followstatus = input('followstatus/d');
  229. if (!empty($followstatus)){
  230. $map[] = ['followstatus', '=', $followstatus];
  231. }
  232. $xlsData = UserModel::with(['userGroups','broker'])->where($map)->order('id','desc')->append(['status_text','isvip_text','authstatus_text','followstatus_text'])->select()->toArray();
  233. $xlsCell = array(
  234. array('id','表ID'),
  235. array('nickname','昵称'),
  236. array('realname','姓名'),
  237. array('mobile','手机号'),
  238. array('status_text','状态'),
  239. array('isvip_text','是否VIP'),
  240. array('authstatus_text','是否实名认证'),
  241. array('idcard','身份证号'),
  242. array('gender','性别',array(1=>'男',2=>'女')),
  243. array('birthday','出生日期'),
  244. array('address','现居住地'),
  245. array('education','学历'),
  246. array('bankcard.openbank','开户行'),
  247. array('bankcard.account','账户名'),
  248. array('bankcard.number','账户号'),
  249. array('followstatus_text','跟进状态'),
  250. array('userGroups.title','用户组'),
  251. array('broker.title','职业顾问'),
  252. array('createtime','注册时间'),
  253. );
  254. export_excel("系统用户",$xlsCell,$xlsData);
  255. }
  256. public function delUser()
  257. {
  258. $agentid = $this->access_agent['id'];
  259. $idarr = input('idarr/a');
  260. $brokeridarr = BrokerModel::where('agentid','=',$agentid)->column('id');
  261. UserModel::whereIn('brokerid',$brokeridarr)->where('brokerid','<>', 0)->whereIn('id',$idarr)->delete();
  262. exit(json_encode(array(
  263. 'code' => 0,
  264. 'msg' => ""
  265. )));
  266. }
  267. public function editUser()
  268. {
  269. $id = input('id/d');
  270. $mobile = input('mobile/s');
  271. $vdata = array(
  272. 'id' => $id,
  273. 'mobile' => $mobile
  274. );
  275. try {
  276. validate(UserValidate::class)->check($vdata);
  277. } catch (ValidateException $e) {
  278. exit(json_encode(array(
  279. 'code' => 1,
  280. 'msg' => $e->getError()
  281. )));
  282. }
  283. $data = array(
  284. 'groupsid' => input('groupsid/d', 0),
  285. 'brokerid' => input('brokerid/d', 0),
  286. 'nickname' => input('nickname/s', ""),
  287. 'avatar' => input('avatar/s', ""),
  288. 'realname' => input('realname/s', ""),
  289. 'mobile' => $mobile,
  290. 'status' => input('status/d', 1),
  291. 'isvip' => input('isvip/d', 1),
  292. 'authstatus' => input('authstatus/d', 1),
  293. 'authremark' => input('authremark/s', ""),
  294. 'idcardzpic' => input('idcardzpic/s', ""),
  295. 'idcardfpic' => input('idcardfpic/s', ""),
  296. 'idcard' => input('idcard/s', ""),
  297. 'gender' => input('gender/d', 1),
  298. 'birthday' => input('birthday/s', ""),
  299. 'address' => input('address/s', ""),
  300. 'education' => input('education/s', ""),
  301. 'jobintention' => input('jobintention/s', ""),
  302. 'workexperience' => input('workexperience/s', ""),
  303. 'eduexperience' => input('eduexperience/s', ""),
  304. 'followstatus' => input('followstatus/d', 1),
  305. 'bankcard' => input('bankcard/a', array()),
  306. );
  307. $password = input('password/s');
  308. if (empty($id)){
  309. $data['integral'] = 0;
  310. $data['inttotal'] = 0;
  311. $data['createtime'] = time();
  312. $user = UserModel::create($data);
  313. $auths = UserAuthsModel::create([
  314. 'userid' => $user->id,
  315. 'identitytype' => "mobile",
  316. 'identifier' => $mobile,
  317. 'password' => empty($password) ? md5("123456789") : md5($password),
  318. 'logintime' => time(),
  319. 'loginip' => $_SERVER['SERVER_ADDR'],
  320. 'wxampcode' => ""
  321. ]);
  322. }else{
  323. $data['id'] = $id;
  324. $user = UserModel::update($data);
  325. $adata = ['identifier'=>$mobile];
  326. if (!empty($password)){
  327. $adata['password'] = md5($password);
  328. }
  329. UserAuthsModel::update($adata, ['userid'=>$id,'identitytype'=>'mobile']);
  330. }
  331. exit(json_encode(array(
  332. 'code' => 0
  333. )));
  334. }
  335. }