UserInfo.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\controller;
  4. use app\BaseController;
  5. use app\model\Account;
  6. use app\model\AccountCompany;
  7. use app\model\AccountPlat;use think\App;
  8. use think\Exception;
  9. use think\facade\Db;
  10. use think\facade\Validate;
  11. class UserInfo extends BaseController
  12. {
  13. public function __construct(App $app)
  14. {
  15. parent::__construct($app);
  16. }
  17. /**
  18. * @param string $nickname
  19. * @param string $username
  20. * @param int $status
  21. * @param array $uid
  22. * @param array $nuid
  23. * @param int $page
  24. * @param int $size
  25. * @param string $nickname
  26. * @return \think\response\Json
  27. * @throws \think\db\exception\DbException
  28. */
  29. public function UserList()
  30. {
  31. $post = $this->request->only(["nickname" => "", "username" => "", "status" => "", "companyNo" => "", "uid" => [], "nuid" => [], "page" => 1, "size" => 10, 'level' => ''], "post");
  32. $condition = [["a.is_del", "=", 0]];
  33. isset($post['nickname']) && $post['nickname'] != "" ? $condition[] = ["nickname", "like", "%{$post['nickname']}%"] : "";
  34. isset($post['username']) && $post['username'] != "" ? $condition[] = ["username", "like", "%{$post['username']}%"] : "";
  35. isset($post['status']) && $post['status'] !== "" ? $condition[] = ["a.status", "=", $post['status']] : "";
  36. isset($post['uid']) && !empty($post['uid']) ? $condition[] = ["a.id", "in", $post['uid']] : "";
  37. isset($post['nuid']) && !empty($post['nuid']) ? $condition[] = ["a.id", "not in", $post['nuid']] : "";
  38. isset($post['level']) && !empty($post['level']) ? $condition[] = ["a.level", '=', $post['level']] : "";
  39. if ($post['companyNo'] != "") {
  40. $uid = Db::name("account_company")->where(["companyCode" => $post['companyNo'], "is_del" => 0])->column("account_id");
  41. $condition[] = ["a.id", "in", $uid];
  42. }
  43. $page = isset($post['page']) && $post['page'] !== "" ? intval($post['page']) : 1;
  44. $size = isset($post['size']) && $post['size'] !== "" ? intval($post['size']) : 10;
  45. $count = Db::name("account")
  46. ->alias("a")
  47. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  48. ->where($condition)
  49. ->count('a.id');
  50. $total = intval(ceil($count / $size));
  51. $page = $total >= $page ? $page : $total;
  52. $list = Db::name("account")
  53. ->alias("a")
  54. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  55. ->append(['plat', 'company_relaton'])
  56. // ->withAttr('plat', function ($val, $da) {
  57. // return Db::name("account_plat")
  58. // ->alias("a")
  59. // ->leftJoin("platform b", "a.plat_code=b.plat_code and b.is_del=0 and b.status=1")
  60. // ->where(["a.status" => 1, "a.is_del" => 0, "a.account_id" => $da['id']])
  61. // ->field("a.plat_code,plat_name")
  62. // ->select()
  63. // ->toArray();
  64. // })
  65. ->withAttr('company_relaton', function ($val, $da) {
  66. return Db::name("account_company")
  67. ->where(["account_id" => $da['id'], "is_del" => 0])
  68. ->field("companyCode,companyName,company_type,is_main,status")
  69. ->select()
  70. ->toArray();
  71. })
  72. ->where($condition)
  73. ->page($page, $size)
  74. ->order("a.id desc")
  75. ->field("a.id,a.username,a.mobile,a.source,a.status,b.nickname,b.sex,b.email,a.addtime,a.updatetime,a.level")
  76. ->select()
  77. ->toArray();
  78. return json_show(0, "获取成功", ["list" => $list, "count" => $count]);
  79. }
  80. /** @param int $id 账户id
  81. * @return \think\response\Json
  82. */
  83. public function info()
  84. {
  85. $post = $this->request->only(["id" => ""], "post", "intval");
  86. if ($post['id'] == "") {
  87. return json_show(1003, "参数 id 不能为空");
  88. }
  89. $list = Db::name("account")->alias("a")
  90. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  91. ->where(["a.id" => $post['id'], "a.is_del" => 0])
  92. ->field("a.id,a.username,a.mobile,a.source,a.status,b.nickname,b.sex,b.email,a.addtime,a.updatetime,a.level")
  93. ->findOrEmpty();
  94. if (empty($list)) {
  95. return json_show(1004, "未找到用户信息");
  96. }
  97. $list['system_version']=(new AccountPlat())->where(['account_id'=>$list['id']])->column('system_version','plat_code')
  98. $list['company_relaton'] = Db::name("account_company")->where(["account_id" => $list['id'], "is_del" => 0, "status" => 1])
  99. ->column("companyCode,companyName,company_type,is_main,status");
  100. return json_show(0, "获取成功", $list);
  101. }
  102. /**
  103. * @return \think\response\Json|void
  104. * @throws \think\db\exception\DataNotFoundException
  105. * @throws \think\db\exception\DbException
  106. * @throws \think\db\exception\ModelNotFoundException
  107. */
  108. public function PassSet()
  109. {
  110. $post = $this->request->only(["id" => "", "password" => ""], "post", "trim");
  111. $validate = Validate::rule([
  112. 'id|账户ID' => 'require|number',
  113. 'password|密码' => 'require|min:6|max:200',
  114. ]);
  115. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  116. $account = Db::name("account")->where([["id", "=", $post['id']], ["is_del", "=", "0"]])->find();
  117. if (empty($account)) {
  118. return json_show(1003, "账户不存在");
  119. }
  120. $salt = makeSalt();
  121. $password = sha1($post['password'] . $salt);
  122. $account['password'] = $password;
  123. $account['salt'] = $salt;
  124. $account['is_pass'] = 1;
  125. $account['updatetime'] = date("Y-m-d H:i:s");
  126. $up = Db::name("account")->save($account);
  127. return $up ? json_show(0, "密码修改成功") : json_show(1005, "密码修改失败");
  128. }
  129. /**@param int $id
  130. * @param array $company
  131. * @return \think\response\Json
  132. */
  133. public function setCompany()
  134. {
  135. $post = $this->request->only(["id" => "", "company" => []], "post");
  136. $validate = Validate::rule([
  137. 'id|账户ID' => 'require|number|gt:0',
  138. 'company|业务公司' => 'require|array',
  139. ]);
  140. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  141. $company_insert = [];
  142. $acount = new AccountCompany();
  143. foreach ($post['company'] as $company) {
  144. $ist = $acount->where(["account_id" => $post['id'], "companyCode" => $company['companyCode'], "is_del" => 0])->find();
  145. if ($ist != false) $company['id'] = $ist['id'];
  146. $company_insert[] = [
  147. "id" => $company['id'] ?? null,
  148. "account_id" => $post['id'],
  149. "companyCode" => $company['companyCode'],
  150. "companyName" => $company['companyName'],
  151. "company_type" => $company['company_type'],
  152. "is_main" => $company['is_main'],
  153. "status" => 1,
  154. "is_del" => $company['is_del'] ?? 0,
  155. "addtime" => date("Y-m-d H:i:s"),
  156. "updatetime" => date("Y-m-d H:i:s"),
  157. ];
  158. }
  159. $inser = $acount->saveAll($company_insert);
  160. return $inser ? json_show(0, "关联企业设置成功") : json_show(1005, "关联企业设置失败");
  161. }
  162. /**
  163. * @param int $id
  164. * @param int $status
  165. * @return \think\response\Json
  166. * @throws \think\exception\DbException
  167. */
  168. public function setCompanyStatus()
  169. {
  170. $post = $this->request->only(["account_id" => "", "companyCode" => '', "status" => ""], "post");
  171. $validate = Validate::rule([
  172. 'account_id|账户id' => 'require|number|gt:0',
  173. 'status|状态' => 'require|number|in:0,1',
  174. 'companyCode|公司编号' => 'require',
  175. ]);
  176. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  177. $account = Db::name("account")->where(["id" => $post['account_id'], "is_del" => 0])->findOrEmpty();
  178. if (empty($account)) return json_show(1004, "未找账户到数据");
  179. $acc = new AccountCompany();
  180. $info = $acc->where(["account_id" => $post['account_id'], "companyCode" => $post['companyCode'], "is_del" => 0])
  181. ->findOrEmpty();
  182. if ($info->isEmpty()) {
  183. return json_show(1004, "未找账户到数据");
  184. }
  185. $upda = ["status" => $post['status'], "updatetime" => date("Y-m-d H:i:s")];
  186. $inser = $acc->update($upda, ["account_id" => $post['account_id'], "companyCode" => $post['companyCode'], "is_del" => 0]);
  187. if ($inser == false) return json_show(1005, "关联企业状态设置失败");
  188. $count = $acc->where([["account_id", "=", $post['account_id']], ["status", "<>", $post['status']], ["is_del", "=", 0]])->count();
  189. if ($count == 0 && $account['status'] != $post['status']) Db::name("account")->where(["id" => $post['account_id'], "is_del" => 0])->update($upda);
  190. return json_show(0, "关联企业状态设置成功");
  191. }
  192. /**
  193. * @param int $id
  194. * @param string $nickname
  195. * @param int $mobile
  196. * @param string $email
  197. * @param string $portrait
  198. * @param int $sex
  199. * @return \think\response\Json
  200. */
  201. public function UserSave()
  202. {
  203. $post = $this->request->only([
  204. "id" => "",
  205. "nickname" => "",
  206. "mobile" => "",
  207. "email" => "",
  208. "portrait" => "",
  209. "sex" => "",
  210. ], "post");
  211. $validate = Validate::rule([
  212. 'id|主键ID' => 'require|number|gt:0',
  213. 'nickname|名称' => 'require|max:255',
  214. 'mobile|手机号' => 'require|number|length:11|mobile',
  215. 'email|名称' => 'email',
  216. 'sex|性别' => 'number|in:0,1,2',
  217. ]);
  218. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  219. $account = Db::name("account")->where([["id", "=", $post['id']], ["is_del", "=", 0]])->findOrEmpty();
  220. if (empty($account)) {
  221. return json_show(1003, "账户不存在");
  222. }
  223. $accountinfo = Db::name("user")->where([["account_id", "=", $post['id']]])->findOrEmpty();
  224. if (empty($accountinfo)) {
  225. return json_show(1003, "账户信息不存在");
  226. }
  227. $uiq = Db::table("sys_account")->where([["mobile", "=", $post['mobile']], ["id", "<>", $post['id']], ["is_del", "=", 0]])->find();
  228. if ($uiq) {
  229. return json_show(1002, "手机号已存在!");
  230. }
  231. Db::startTrans();
  232. try {
  233. $userinfo = [
  234. "nickname" => $post['nickname'],
  235. "mobile" => $post['mobile'],
  236. "email" => $post['email'],
  237. "portrait" => $post['portrait'],
  238. "sex" => $post['sex'],
  239. "updatetime" => date("Y-m-d H:i:s")
  240. ];
  241. $dat = Db::name("user")->where($accountinfo)->update($userinfo);
  242. if ($dat == false) {
  243. Db::rollback();
  244. return json_show(1004, "信息修改失败");
  245. }
  246. $acc = [
  247. "id" => $post['id'],
  248. "mobile" => $post['mobile'],
  249. "username" => $post['mobile'],
  250. "updatetime" => date("Y-m-d H:i:s"),
  251. ];
  252. $nu = Db::name("account")->save($acc);
  253. if ($nu) {
  254. Db::commit();
  255. return json_show(0, "信息修改成功");
  256. } else {
  257. Db::rollback();
  258. return json_show(1004, "账户信息修改失败");
  259. }
  260. } catch (\Exception $e) {
  261. Db::rollback();
  262. return json_show(1005, $e->getMessage());
  263. }
  264. }
  265. /**
  266. * @param int $id
  267. * @param int $status
  268. * @return \think\response\Json
  269. * @throws \think\exception\DbException
  270. */
  271. public function UserStatus()
  272. {
  273. $post = $this->request->only(["id" => "", "status" => ""], "post", "trim");
  274. $validate = Validate::rule([
  275. 'id|主键ID' => 'require|number|gt:0',
  276. 'status|状态' => 'require|number|in:0,1',
  277. ]);
  278. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  279. $account = Account::where("id", $post['id'])->findOrEmpty();
  280. if ($account->isEmpty()) {
  281. return json_show(1003, "账户不存在");
  282. }
  283. if ($account['status'] == $post['status']) {
  284. return json_show(1004, "数据已更新");
  285. }
  286. $message = $post['status'] == 1 ? "启用" : "禁用";
  287. Db::startTrans();
  288. try {
  289. $result = Db::name("account")->where("id", "=", $post['id'])->save(['status' => $post['status'], "updatetime" => date("Y-m-d H:i:s")]);
  290. if ($result) {
  291. $ip = AccountCompany::update(['status' => $post['status'], "updatetime" => date("Y-m-d H:i:s")], ["account_id" => $post['id'], "is_del" => 0]);
  292. if ($ip) {
  293. Db::commit();
  294. return json_show(0, "账户{$message}成功");
  295. }
  296. }
  297. Db::rollback();
  298. return json_show(1005, "账户{$message}失败");
  299. } catch (\Exception $e) {
  300. Db::rollback();
  301. return json_show(1004, $e->getMessage());
  302. }
  303. }
  304. //根据业务公司获取用户数据
  305. public function UserListByCompany()
  306. {
  307. $post = $this->request->only(["nickname" => "", "username" => "", "status" => "", "uid" => [], "nuid" => [], "companyNo" => "", "page" => 1, "size" => 10,'level' => ''], "post");
  308. $condition = [["a.is_del", "=", 0]];
  309. // $whereor = [];
  310. isset($post['nickname']) && $post['nickname'] != "" ? $condition[] = ["nickname", "like", "%{$post['nickname']}%"] : "";
  311. isset($post['username']) && $post['username'] != "" ? $condition[] = ["username", "like", "%{$post['username']}%"] : "";
  312. isset($post['status']) && $post['status'] !== "" ? $condition[] = ["a.status", "=", $post['status']] : "";
  313. isset($post['uid']) && !empty($post['uid']) && !empty($post['uid']) ? $condition[] = ["a.id", "in", $post['uid']] : "";
  314. isset($post['nuid']) && !empty($post['nuid']) && !empty($post['nuid']) ? $condition[] = ["a.id", "not in", $post['nuid']] : "";
  315. isset($post['companyNo']) && $post['companyNo'] !== "" ? $condition[] = ["c.companyCode", "=", $post['companyNo']] : '';//$whereor[] = ["c.companyCode", "=", null];
  316. if ($post['level'] !== '') $condition[] = ['a.level', '=', $post['level']];
  317. $page = isset($post['page']) && $post['page'] !== "" ? intval($post['page']) : 1;
  318. $size = isset($post['size']) && $post['size'] !== "" ? intval($post['size']) : 10;
  319. $count = Db::name("account")
  320. ->alias("a")
  321. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  322. ->leftJoin("account_company c", "a.id=c.account_id and c.status=1 and c.is_del=0")
  323. ->where($condition)
  324. // ->whereOr($whereor)
  325. ->count();
  326. $total = intval(ceil($count / $size));
  327. $page = $total >= $page ? $page : $total;
  328. $list = Db::name("account")
  329. ->alias("a")
  330. ->field("a.id,a.username,a.mobile,a.source,a.status,b.nickname,b.sex,b.email,a.addtime,a.updatetime,companyCode,companyName,company_type,is_main,c.status as com_status,a.level")
  331. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  332. ->leftJoin("account_company c", "a.id=c.account_id and c.is_del=0")
  333. ->where($condition)
  334. // ->whereOr($whereor)
  335. ->page($page, $size)
  336. ->append(['plat', 'company_relaton'])
  337. // ->withAttr('plat', function ($val, $da) {
  338. // return Db::name("account_plat")
  339. // ->alias("a")
  340. // ->leftJoin("platform b", "a.plat_code=b.plat_code and b.is_del=0 and b.status=1")
  341. // ->where(["a.status" => 1, "a.is_del" => 0, "a.account_id" => $da['id']])
  342. // ->field("a.plat_code,plat_name")
  343. // ->select()
  344. // ->toArray();
  345. // })
  346. ->withAttr('company_relaton', function ($val, $da) {
  347. return Db::name("account_company")
  348. ->where(["account_id" => $da['id'], "is_del" => 0])
  349. ->field("companyCode,companyName,company_type,is_main,status")
  350. ->select()
  351. ->toArray();
  352. })
  353. ->order("a.addtime desc")
  354. ->select()
  355. ->toArray();
  356. return json_show(0, "获取成功", ["list" => $list, "count" => $count]);
  357. }
  358. /**
  359. * @return \think\response\Json
  360. * @throws \think\db\exception\DataNotFoundException
  361. * @throws \think\db\exception\DbException
  362. * @throws \think\db\exception\ModelNotFoundException
  363. */
  364. public function userAdd()
  365. {
  366. $post = $this->request->only(["nickname" => "", "mobile" => "", "email" => "", "companyArr" => [],'level'], "post", "trim");
  367. $validate = Validate::rule([
  368. 'nickname|真实姓名' => 'require|min:2|max:200',
  369. 'mobile|手机号' => 'require|number|length:11|mobile',
  370. 'email|邮箱' => 'email',
  371. 'level|账号等级' => 'require|number|in:1,2,3',
  372. 'companyArr|关联公司' => 'requireIf:level,2|requireIf:level,3|array',
  373. ]);
  374. if ($validate->check($post) == false) return json_show(1004, $validate->getError());
  375. $uiq = Db::table("sys_account")->field('id')->where(["mobile" => $post['mobile']])->find();
  376. if ($uiq) return json_show(1002, "手机号已注册!");
  377. Db::startTrans();
  378. try {
  379. $date = date('Y-m-d H:i:s');
  380. $salt = makeSalt();
  381. $password = sha1("dingding123" . $salt);
  382. $da = [
  383. 'username' => $post['mobile'],
  384. "password" => $password,
  385. "salt" => $salt,
  386. "mobile" => $post['mobile'],
  387. "source" => "paltadd",
  388. "status" => 1,
  389. 'level'=>$post['level'],
  390. "addtime" => $date,
  391. "updatetime" => $date
  392. ];
  393. $reuslt = Db::table('sys_account')->insert($da, true);
  394. if ($reuslt) {
  395. $data = [
  396. "nickname" => $post['nickname'],
  397. "mobile" => $post['mobile'],
  398. "email" => $post['email'],
  399. "portrait" => "",
  400. "sex" => 1,
  401. "post" => "",
  402. "department" => "",
  403. "account_id" => $reuslt,
  404. "status" => 1,
  405. "addtime" => $date,
  406. "updatetime" => $date
  407. ];
  408. $user = Db::table("sys_user")->insert($data);
  409. if ($user != false) {
  410. $acount = new AccountCompany();
  411. if (!empty($post['companyArr'])) {
  412. // //判断关联条件是否都是供应商
  413. // $all_companyNo = array_column($post['companyArr'], 'companyCode');
  414. //
  415. // $tmp = Db::name('headquarters')
  416. // ->where(['is_del' => 0, 'status' => 1])
  417. // ->whereFindInSet('type', '1')
  418. // ->column('code');
  419. // $temp = array_diff($all_companyNo, $tmp);
  420. // if (!empty($temp)) throw new Exception(implode(',', $temp) . '不是业务公司');
  421. $company_insert = [];
  422. foreach ($post['companyArr'] as $company) {
  423. $company_insert[] = [
  424. "account_id" => $reuslt,
  425. "companyCode" => $company['companyCode'],
  426. "companyName" => $company['companyName'],
  427. "company_type" => $company['company_type'],
  428. "is_main" => $company['is_main'],
  429. "status" => 1,
  430. "is_del" => 0,
  431. "addtime" => $date,
  432. "updatetime" => $date,
  433. ];
  434. }
  435. $u = $acount->saveAll($company_insert);
  436. } else {
  437. $company_insert = [
  438. "account_id" => $reuslt,
  439. "companyCode" => '',
  440. "companyName" => '',
  441. "company_type" => '0',
  442. "is_main" => 1,
  443. "status" => 1,
  444. "is_del" => 0,
  445. "addtime" => date("Y-m-d H:i:s"),
  446. "updatetime" => date("Y-m-d H:i:s"),
  447. ];
  448. $u = $acount->save($company_insert);
  449. }
  450. if ($u == false) throw new Exception("账户新建失败");
  451. Db::commit();
  452. return json_show(0, "账户注册成功", ["userid" => $reuslt, "nickname" => $post['nickname']]);
  453. }
  454. }
  455. Db::rollback();
  456. return json_show(1002, "账户注册失败");
  457. } catch (\Exception $e) {
  458. Db::rollback();
  459. return json_show(1002, "账户注册失败," . $e->getMessage());
  460. }
  461. }
  462. //添加超管账号
  463. // public function addAdminAccount()
  464. // {
  465. //
  466. // $post = $this->request->filter('trim')->post();
  467. //
  468. // $tmp = Db::table("sys_account")
  469. // ->field('id')
  470. // ->where(["mobile" => $post['mobile'], 'is_del' => 0])
  471. // ->findOrEmpty();
  472. // if ($tmp) return json_show(1002, "手机号已注册");
  473. //
  474. // Db::startTrans();
  475. // try {
  476. // $date = date("Y-m-d H:i:s");
  477. // $salt = makeSalt();
  478. // $password = sha1("dingding123" . $salt);
  479. // $da = [
  480. // 'username' => $post['mobile'],
  481. // "password" => $password,
  482. // "salt" => $salt,
  483. // "mobile" => $post['mobile'],
  484. // "source" => "paltadd",
  485. // "status" => 1,
  486. // "level" => 1,
  487. // "addtime" => date("Y-m-d H:i:s"),
  488. // "updatetime" => date("Y-m-d H:i:s")
  489. // ];
  490. // $reuslt = Db::table('sys_account')->insert($da, true);
  491. // if ($reuslt) {
  492. // $data = [
  493. // "nickname" => $post['nickname'],
  494. // "mobile" => $post['mobile'],
  495. // "email" => $post['email'],
  496. // "portrait" => "",
  497. // "sex" => 1,
  498. // "post" => "",
  499. // "department" => "",
  500. // "account_id" => $reuslt,
  501. // "status" => 1,
  502. // "addtime" => $date,
  503. // "updatetime" => $date
  504. // ];
  505. // $user = Db::table("sys_user")->insert($data);
  506. // if ($user != false) {
  507. // $acount = new AccountCompany();
  508. // if (!empty($post['companyArr'])) {
  509. // $company_insert = [];
  510. // foreach ($post['companyArr'] as $company) {
  511. // $company_insert[] = [
  512. // "account_id" => $reuslt,
  513. // "companyCode" => $company['companyCode'],
  514. // "companyName" => $company['companyName'],
  515. // "company_type" => $company['company_type'],
  516. // "is_main" => $company['is_main'],
  517. // "status" => 1,
  518. // "is_del" => 0,
  519. // "addtime" => $date,
  520. // "updatetime" => $date,
  521. // ];
  522. // }
  523. // $u = $acount->saveAll($company_insert);
  524. // } else {
  525. // $company_insert = [
  526. // "account_id" => $reuslt,
  527. // "companyCode" => '',
  528. // "companyName" => '',
  529. // "company_type" => '0',
  530. // "is_main" => 1,
  531. // "status" => 1,
  532. // "is_del" => 0,
  533. // "addtime" => $date,
  534. // "updatetime" => $date,
  535. // ];
  536. // $u = $acount->save($company_insert);
  537. // }
  538. //
  539. // if ($u == false) throw new Exception("账户新建失败");
  540. // Db::commit();
  541. // return json_show(0, "账户注册成功", ["userid" => $reuslt, "nickname" => $post['nickname']]);
  542. // }
  543. // }
  544. // Db::rollback();
  545. // return json_show(1002, "账户注册失败");
  546. //
  547. // } catch (\Exception $e) {
  548. // Db::rollback();
  549. // return json_show(1002, "账户注册失败" . $e->getMessage());
  550. // }
  551. //
  552. // }
  553. //添加供应商账号
  554. // public function addSupplierAccount()
  555. // {
  556. //
  557. // $post = $this->request->filter('trim')->post();
  558. //
  559. // $tmp = Db::table("sys_account")
  560. // ->field('id')
  561. // ->where(["mobile" => $post['mobile'], 'is_del' => 0])
  562. // ->findOrEmpty();
  563. // if ($tmp) return json_show(1002, "手机号已注册");
  564. //
  565. // Db::startTrans();
  566. //
  567. // try {
  568. // $date = date("Y-m-d H:i:s");
  569. // $salt = makeSalt();
  570. // $password = sha1("dingding123" . $salt);
  571. // $da = [
  572. // 'username' => $post['mobile'],
  573. // "password" => $password,
  574. // "salt" => $salt,
  575. // "mobile" => $post['mobile'],
  576. // "source" => "paltadd",
  577. // "status" => 1,
  578. // "level" => 3,//供应商端账号
  579. // "addtime" => date("Y-m-d H:i:s"),
  580. // "updatetime" => date("Y-m-d H:i:s")
  581. // ];
  582. // $reuslt = Db::table('sys_account')->insert($da, true);
  583. // if ($reuslt) {
  584. // $data = [
  585. // "nickname" => $post['nickname'],
  586. // "mobile" => $post['mobile'],
  587. // "email" => $post['email'],
  588. // "portrait" => "",
  589. // "sex" => 1,
  590. // "post" => "",
  591. // "department" => "",
  592. // "account_id" => $reuslt,
  593. // "status" => 1,
  594. // "addtime" => $date,
  595. // "updatetime" => $date
  596. // ];
  597. // $user = Db::table("sys_user")->insert($data);
  598. // if ($user != false) {
  599. //
  600. // //判断关联条件是否都是供应商
  601. // $all_companyNo = array_column($post['companyArr'], 'companyCode');
  602. //
  603. // $tmp = Db::name('headquarters')
  604. // ->where(['is_del' => 0, 'status' => 1])
  605. // ->whereFindInSet('type', '3')
  606. // ->column('code');
  607. // $temp = array_diff($all_companyNo, $tmp);
  608. // if (!empty($temp)) throw new Exception(implode(',', $temp) . '不是供应商');
  609. //
  610. // $company_insert = [];
  611. // foreach ($post['companyArr'] as $company) {
  612. // $company_insert[] = [
  613. // "account_id" => $reuslt,
  614. // "companyCode" => $company['companyCode'],
  615. // "companyName" => $company['companyName'],
  616. // "company_type" => 1,
  617. // "is_main" => $company['is_main'],
  618. // "status" => 1,
  619. // "is_del" => 0,
  620. // "addtime" => $date,
  621. // "updatetime" => $date,
  622. // ];
  623. // }
  624. //
  625. // if ($company_insert) Db::name('account_company')->insertAll($company_insert);
  626. //
  627. // Db::commit();
  628. // return json_show(0, "添加供应商账号成功", ["userid" => $reuslt, "nickname" => $post['nickname']]);
  629. // }
  630. // }
  631. // Db::rollback();
  632. // return json_show(1002, "添加供应商账号失败");
  633. //
  634. // } catch (Exception $e) {
  635. // Db::rollback();
  636. // return json_show(1002, "添加供应商账号失败," . $e->getMessage());
  637. // }
  638. //
  639. // }
  640. //修改密码通过旧密码
  641. public function passSetByPassword()
  642. {
  643. $param = $this->request->only(['uid', 'old_pass', 'new_pass'], 'post', 'trim');
  644. $val = Validate::rule([
  645. 'uid|用户ID' => 'require|number|gt:0',
  646. 'old_pass|旧密码' => 'require|max:255',
  647. 'new_pass|新密码' => 'require|min:6|max:255',
  648. ]);
  649. if ($val->check($param) == false) return json_show(1004, $val->getError());
  650. $acc = Db::name("account")
  651. ->field('id,password,salt,status')
  652. ->where(['id' => $param['uid'], "is_del" => Account::$account_del])
  653. ->findOrEmpty();
  654. if (empty($acc)) return json_show(1003, '账户不存在');
  655. if ($acc['status'] == Account::$account_end) return json_show(1003, '账户已禁用');
  656. $sha1 = sha1($param['old_pass'] . $acc['salt']);
  657. if ($sha1 != $acc['password']) return json_show(1003, '密码错误');
  658. $salt = makeSalt();
  659. $password = sha1($param['new_pass'] . $salt);
  660. $rs = Db::name('account')
  661. ->where(['id' => $param['uid'], "is_del" => Account::$account_del])
  662. ->update([
  663. 'password' => $password,
  664. 'salt' => $salt,
  665. 'updatetime' => date('Y-m-d H:i:s')
  666. ]);
  667. return $rs ? json_show(0, '修改密码成功') : json_show(1004, '修改密码失败');
  668. }
  669. //获取用户所绑定的公司列表
  670. public function getCompanyList(){
  671. $post = $this->request->only(["uid" => 0, "companyCode" => "","companyName" => "", "page" => 1, "size" => 20], "post", "trim");
  672. $where=[['a.is_del','=',0],['a.account_id','=',$post['uid']]];
  673. if($post['companyCode']!='') $where[]=['a.companyCode','like','%'.$post['companyCode'].'%'];
  674. if($post['companyName']!='') $where[]=['a.companyName','like','%'.$post['companyName'].'%'];
  675. $count = Db::name('account_company')
  676. ->alias('a')
  677. ->where($where)
  678. ->count('a.id');
  679. $list = Db::name('account_company')
  680. ->alias('a')
  681. ->field('a.*,b.level')
  682. ->where($where)
  683. ->leftJoin('account b','b.id=a.account_id')
  684. ->order(['a.id' => 'asc'])
  685. ->page(intval($post['page']), intval($post['size']))
  686. ->select()
  687. ->toArray();
  688. return json_show(0, '获取用户所绑定的公司列表成功', ['count' => $count, 'list' => $list]);
  689. }
  690. //所有账号
  691. public function userAll()
  692. {
  693. $post = $this->request->filter('trim')->post();
  694. $condition = [["a.is_del", "=", 0]];
  695. isset($post['nickname']) && $post['nickname'] != "" ? $condition[] = ["nickname", "like", "%{$post['nickname']}%"] : "";
  696. isset($post['username']) && $post['username'] != "" ? $condition[] = ["username", "like", "%{$post['username']}%"] : "";
  697. // isset($post['status']) && $post['status'] !== "" ? $condition[] = ["a.status", "=", $post['status']] : "";
  698. // isset($post['uid']) && !empty($post['uid']) ? $condition[] = ["a.id", "in", $post['uid']] : "";
  699. // isset($post['nuid']) && !empty($post['nuid']) ? $condition[] = ["a.id", "not in", $post['nuid']] : "";
  700. isset($post['level']) && !empty($post['level']) ? $condition[] = ["a.level", '=', $post['level']] : "";
  701. $list = Db::name("account")
  702. ->field("a.id,a.username,a.mobile,a.status,b.nickname,a.level")
  703. ->alias("a")
  704. ->leftJoin("user b", "a.id=b.account_id and b.status=1")
  705. ->where($condition)
  706. ->order(['a.id' => 'desc'])
  707. ->select()
  708. ->toArray();
  709. return json_show(0, "获取成功", $list);
  710. }
  711. //检查供应商是否有开通账号
  712. public function checkHasAccountBySupplierNos()
  713. {
  714. $supplierNos = $this->request->post('supplierNo', '', 'trim');
  715. $where = [
  716. ['a.is_del', '=', 0],
  717. ['a.status', '=', 1],
  718. ['b.level', '=', 3],
  719. ['a.companyCode', 'like', 'QS%']
  720. ];
  721. if ($supplierNos !== '') $where[] = ['a.companyCode', 'in', $supplierNos];
  722. $list = Db::name('account_company')
  723. ->alias('a')
  724. ->leftJoin('account b', 'b.id=a.account_id')
  725. ->where($where)
  726. ->column('a.account_id', 'a.companyCode');
  727. return json_show(0, '获取供应商账号开通情况成功', $list);
  728. }
  729. }