UserCompanyBasic.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. use app\model\Account;
  5. use app\model\AccountCompany;
  6. use think\Exception;
  7. use think\facade\Db;
  8. use think\facade\Validate;
  9. //【公司账号管理】
  10. class UserCompanyBasic extends BaseController
  11. {
  12. //列表
  13. public function getList()
  14. {
  15. $post = $this->request->only(['nickname' => '', 'username' => '', 'status' => '', 'page' => 1, 'size' => 10, 'islevel' => 1], 'post');
  16. $condition = [['a.is_del', '=', 0]];
  17. if ($post['nickname'] != '') $condition[] = ['nickname', 'like', "%{$post['nickname']}%"];
  18. if ($post['username'] != '') $condition[] = ['username', 'like', "%{$post['username']}%"];
  19. if ($post['status'] != '') $condition[] = ['a.status', '=', $post['status']];
  20. if ($post['islevel'] == 1) $condition[] = ['a.level', '=', 1];
  21. else $condition[] = ['a.level', '<>', 1];
  22. $count = Db::name('account')
  23. ->alias('a')
  24. ->leftJoin('user b', 'a.id=b.account_id and b.status=1')
  25. ->where($condition)
  26. ->count('a.id');
  27. $list = Db::name('account')
  28. ->alias('a')
  29. ->field('a.id,a.username,a.mobile,a.source,a.status,b.nickname,b.sex,b.email,a.addtime,a.updatetime')
  30. ->leftJoin('user b', 'a.id=b.account_id and b.status=1')
  31. ->where($condition)
  32. ->page($post['page'], $post['size'])
  33. ->append(['plat', 'company_relaton'])
  34. // ->withAttr('plat', function ($val, $da) {
  35. // return Db::name('account_plat')
  36. // ->alias('a')
  37. // ->leftJoin('platform b', 'a.plat_code=b.plat_code and b.is_del=0 and b.status=1')
  38. // ->where(['a.status' => 1, 'a.is_del' => 0, 'a.account_id' => $da['id']])
  39. // ->field('a.plat_code,plat_name')
  40. // ->select()
  41. // ->toArray();
  42. // })
  43. ->withAttr('company_relaton', function ($val, $da) {
  44. return Db::name('account_company')
  45. ->where(['account_id' => $da['id'], 'is_del' => 0])
  46. ->field('companyCode,companyName,company_type,is_main,status')
  47. ->select()
  48. ->toArray();
  49. })
  50. ->order('a.addtime desc')
  51. ->select()
  52. ->toArray();
  53. return json_show(0, '获取成功', ['list' => $list, 'count' => $count]);
  54. }
  55. //注册
  56. public function add()
  57. {
  58. $post = $this->request->only(['nickname' => '', 'mobile' => '', 'email' => '', 'level' => 2, 'companyArr' => []], 'post', 'trim');
  59. $validate = Validate::rule([
  60. 'nickname|真实姓名' => 'require|min:2|max:200',
  61. 'mobile|手机号' => 'require|number|length:11|mobile',
  62. 'email|邮箱' => 'email',
  63. 'level|账号等级' => 'number|in:1,2',
  64. 'companyArr|关联业务公司' => 'require|array|max:100',
  65. ]);
  66. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  67. Db::startTrans();
  68. try {
  69. $uiq = Db::table('sys_account')
  70. ->field('id')
  71. ->where(['mobile' => $post['mobile']])
  72. ->findOrEmpty();
  73. if ($uiq) throw new Exception('手机号已注册!');
  74. $date = date('Y-m-d H:i:s');
  75. $salt = makeSalt();
  76. $password = sha1('dingding123' . $salt);
  77. $data = [
  78. 'username' => $post['mobile'],
  79. 'password' => $password,
  80. 'salt' => $salt,
  81. 'status' => 1,
  82. 'mobile' => $post['mobile'],
  83. 'level' => $post['level'],
  84. 'source' => 'paltadd',
  85. 'addtime' => $date,
  86. 'updatetime' => $date
  87. ];
  88. $reuslt = Db::table('sys_account')->insertGetId($data);
  89. if ($reuslt) {
  90. $data = [
  91. 'nickname' => $post['nickname'],
  92. 'mobile' => $post['mobile'],
  93. 'email' => $post['email'],
  94. 'portrait' => '',
  95. 'sex' => 1,
  96. 'post' => '',
  97. 'department' => '',
  98. 'account_id' => $reuslt,
  99. 'status' => 1,
  100. 'addtime' => $date,
  101. 'updatetime' => $date
  102. ];
  103. $user = Db::table('sys_user')->insert($data);
  104. if ($user != false) {
  105. if (!empty($post['companyArr'])) {
  106. $company_insert = [];
  107. $acount = new AccountCompany();
  108. foreach ($post['companyArr'] as $company) {
  109. $company_insert[] = [
  110. 'account_id' => $reuslt,
  111. 'companyCode' => $company['companyCode'],
  112. 'companyName' => $company['companyName'],
  113. 'company_type' => $company['company_type'],
  114. 'is_main' => $company['is_main'],
  115. 'status' => 1,
  116. 'is_del' => 0,
  117. 'addtime' => $date,
  118. 'updatetime' => $date,
  119. ];
  120. }
  121. $acount->saveAll($company_insert);
  122. }
  123. Db::commit();
  124. return json_show(0, '账户注册成功', ['uid' => $reuslt]);
  125. }
  126. } else throw new Exception();
  127. } catch (Exception $e) {
  128. Db::rollback();
  129. return json_show(1002, '账户注册失败,' . $e->getMessage());
  130. }
  131. }
  132. //删除
  133. public function delete()
  134. {
  135. $param = $this->request->only(['ids'], 'post', 'trim');
  136. $val = Validate::rule([
  137. 'ids' => 'require|array|max:100',
  138. ]);
  139. if (!$val->check($param)) return json_show(1004, $val->getError());
  140. Db::startTrans();
  141. try {
  142. Db::name('account')
  143. ->where(['is_del' => 0])
  144. ->whereIn('id', $param['ids'])
  145. ->update([
  146. 'is_del' => 1,
  147. 'updatetime' => date('Y-m-d H:i:s')
  148. ]);
  149. Db::name('account_company')
  150. ->where(['is_del' => 0])
  151. ->whereIn('account_id', $param['ids'])
  152. ->update([
  153. 'is_del' => 1,
  154. 'updatetime' => date('Y-m-d H:i:s')
  155. ]);
  156. Db::commit();
  157. return json_show(0, '删除成功');
  158. } catch (Exception $exception) {
  159. Db::rollback();
  160. return json_show(1005, '删除失败,' . $exception->getMessage());
  161. }
  162. }
  163. //编辑
  164. public function update()
  165. {
  166. $post = $this->request->only(['id', 'itemid'], 'post');
  167. $validate = Validate::rule([
  168. 'id|主键ID' => 'require|number|gt:0',
  169. 'itemid|部门ID' => 'require|number|gt:0',
  170. ]);
  171. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  172. $account = Db::name('account')
  173. ->field('id')
  174. ->where([['id', '=', $post['id']], ['is_del', '=', 0]])
  175. ->findOrEmpty();
  176. if (empty($account)) return json_show(1003, '账户不存在');
  177. $tmp = Db::name('account_item')
  178. ->field('id')
  179. ->where(['account_id' => $post['id']])
  180. ->findOrEmpty();
  181. $date = date('Y-m-d H:i:s');
  182. if (empty($tmp)) $rs = Db::name('account_item')
  183. ->insert([
  184. 'account_id' => $post['id'],
  185. 'itemid' => $post['itemid'],
  186. 'addtime' => $date,
  187. 'updatetime' => $date,
  188. ]);
  189. else $rs = Db::name('account_item')
  190. ->where(['id' => $tmp['id']])
  191. ->update([
  192. 'itemid' => $post['itemid'],
  193. 'updatetime' => $date
  194. ]);
  195. return $rs ? json_show(0, '信息修改成功') : json_show(0, '信息修改失败');;
  196. // $accountinfo = Db::name('user')
  197. // ->field('id')
  198. // ->where([['account_id', '=', $post['id']]])
  199. // ->findOrEmpty();
  200. // if (empty($accountinfo)) return json_show(1003, '账户信息不存在');
  201. // Db::startTrans();
  202. // try {
  203. // Db::name('user')
  204. // ->where($accountinfo)
  205. // ->update([
  206. // 'nickname' => $post['nickname'],
  207. // 'mobile' => $post['mobile'],
  208. // 'email' => $post['email'],
  209. // 'portrait' => $post['portrait'],
  210. // 'sex' => $post['sex'],
  211. // 'updatetime' => date('Y-m-d H:i:s')
  212. // ]);
  213. //
  214. // Db::name('account')
  215. // ->where('id', $post['id'])
  216. // ->update([
  217. // 'id' => $post['id'],
  218. // 'mobile' => $post['mobile'],
  219. // 'username' => $post['mobile'],
  220. // 'updatetime' => date('Y-m-d H:i:s'),
  221. // ]);
  222. // Db::commit();
  223. // return json_show(0, '信息修改成功');
  224. // } catch (Exception $exception) {
  225. // Db::rollback();
  226. // return json_show(1005, '信息修改失败,' . $exception->getMessage());
  227. // }
  228. }
  229. //启禁用
  230. public function status()
  231. {
  232. $post = $this->request->only(['id', 'status'], 'post', 'trim');
  233. $validate = Validate::rule(['id|主键ID' => 'require|number|gt:0', 'status|状态' => 'require|number|in:0,1']);
  234. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  235. Db::startTrans();
  236. try {
  237. $account = Account::where(['id' => $post['id'], 'is_del' => 0])
  238. ->field('id,status')
  239. ->findOrEmpty();
  240. if (empty($account)) throw new Exception('账户不存在');
  241. if ($account['status'] == $post['status']) throw new Exception('重复操作');
  242. $message = $post['status'] == 1 ? '启用' : '禁用';
  243. Db::name('account')
  244. ->where('status', '<>', $post['status'])
  245. ->where(['id' => $post['id'], 'is_del' => 0])
  246. ->save(['status' => $post['status'], 'updatetime' => date('Y-m-d H:i:s')]);
  247. Db::name('account_company')
  248. ->where('status', '<>', $post['status'])
  249. ->where(['account_id' => $post['id'], 'is_del' => 0])
  250. ->save(['status' => $post['status'], 'updatetime' => date('Y-m-d H:i:s')]);
  251. Db::commit();
  252. return json_show(0, "账户{$message}成功");
  253. } catch (Exception $exception) {
  254. Db::rollback();
  255. return json_show(1004, '操作失败,' . $exception->getMessage());
  256. }
  257. }
  258. //详情
  259. public function info()
  260. {
  261. $id = $this->request->post('id/d', 0, 'trim');
  262. if ($id == 0) return json_show(1003, "参数 id 不能为空");
  263. $list = Db::name('account')
  264. ->alias('a')
  265. ->field('a.id,a.username,a.mobile,a.source,a.status,b.nickname,b.sex,b.email,a.addtime,a.updatetime,c.itemid,d.name item_name')
  266. ->leftJoin('user b', 'a.id=b.account_id')
  267. ->leftJoin('account_item c', 'c.account_id=a.id')
  268. ->leftJoin('company_item d', 'd.id=c.itemid')
  269. ->append(['plat', 'company_relaton'])
  270. // ->withAttr('plat', function ($val, $da) {
  271. // return Db::name('account_plat')
  272. // ->alias('a')
  273. // ->leftJoin('platform b', 'a.plat_code=b.plat_code and b.status=1')
  274. // ->where(['a.status' => 1, 'a.is_del' => 0, 'a.account_id' => $da['id']])
  275. // ->column('a.plat_code,plat_name');
  276. // })
  277. ->withAttr('company_relaton', function ($val, $da) {
  278. return Db::name('account_company')
  279. ->where(['account_id' => $da['id'], 'is_del' => 0, 'status' => 1])
  280. ->column('companyCode,companyName,company_type,is_main,status');
  281. })
  282. ->where(['a.id' => $id, 'a.is_del' => 0])
  283. ->findOrEmpty();
  284. if (empty($list)) return json_show(1004, '未找到用户信息');
  285. // $list['plat'] = Db::name('account_plat')->alias('a')
  286. // ->leftJoin('platform b', 'a.plat_code=b.plat_code and b.status=1')
  287. // ->where(['a.status' => 1, 'a.is_del' => 0, 'a.account_id' => $list['id']])->column('a.plat_code,plat_name');
  288. // $list['company_relaton'] = Db::name('account_company')->where(['account_id' => $list['id'], 'is_del' => 0, 'status' => 1])
  289. // ->column('companyCode,companyName,company_type,is_main,status');
  290. return json_show(0, '获取成功', $list);
  291. }
  292. }