User.php 9.6 KB

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