User.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\store\shopapi\controller;
  13. use app\model\site\Site;
  14. use app\model\system\Group;
  15. use app\model\system\Menu;
  16. use app\model\system\User as UserModel;
  17. /**
  18. * 用户控制器
  19. * Class User
  20. * @package addon\shop\siteapi\controller
  21. */
  22. class User extends BaseStoreApi
  23. {
  24. /**
  25. * 用户列表
  26. * @return mixed
  27. */
  28. public function lists()
  29. {
  30. $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  31. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  32. $status = isset($this->params[ 'status' ]) ? $this->params[ 'status' ] : '';
  33. $username = isset($this->params[ 'username' ]) ? $this->params[ 'username' ] : '';
  34. $condition = [];
  35. $condition[] = [ "site_id", "=", $this->site_id ];
  36. $condition[] = [ "app_module", "=", $this->app_module ];
  37. if (!empty($username)) {
  38. $condition[] = [ 'username', 'like', '%' . $username . '%' ];
  39. }
  40. if ($status != "") {
  41. $condition[ "status" ] = [ "status", "=", $status ];
  42. }
  43. $user_model = new UserModel();
  44. $list = $user_model->getUserPageList($condition, $page, $page_size, "is_admin desc,create_time desc");
  45. return $this->response($list);
  46. }
  47. /**
  48. * 添加用户
  49. * @return mixed
  50. */
  51. public function addUser()
  52. {
  53. $mobile = isset($this->params[ 'mobile' ]) ? $this->params[ 'mobile' ] : '';
  54. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : '';
  55. $user_model = new UserModel();
  56. $data = array (
  57. "mobile" => $mobile,
  58. "group_id" => $group_id,
  59. "app_module" => $this->app_module,
  60. "site_id" => $this->site_id
  61. );
  62. $result = $user_model->addUser($data);
  63. return $this->response($result);
  64. }
  65. /**
  66. * 获取用户组列表
  67. */
  68. public function groupList()
  69. {
  70. $group_model = new Group();
  71. $group_list = $group_model->getGroupList([ [ "site_id", "=", $this->site_id ], [ "app_module", "=", $this->app_module ] ]);
  72. return $this->response($group_list);
  73. }
  74. /**
  75. * 用户详情
  76. */
  77. public function userInfo()
  78. {
  79. $uid = isset($this->params[ 'uid' ]) ? $this->params[ 'uid' ] : 0;
  80. $user_model = new UserModel();
  81. $user_condition = [
  82. [ 'uid', '=', $uid ]
  83. ];
  84. $user_info = $user_model->getUserInfo($user_condition);
  85. return $this->response($user_info);
  86. }
  87. /**
  88. * 编辑用户
  89. * @return mixed
  90. */
  91. public function editUser()
  92. {
  93. $user_model = new UserModel();
  94. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : '';
  95. $status = isset($this->params[ 'status' ]) ? $this->params[ 'status' ] : '';
  96. $uid = isset($this->params[ 'uid' ]) ? $this->params[ 'uid' ] : 0;
  97. $condition = array (
  98. [ "uid", "=", $uid ],
  99. [ "site_id", "=", $this->site_id ],
  100. [ "app_module", "=", $this->app_module ],
  101. );
  102. $data = array (
  103. "group_id" => $group_id,
  104. "status" => $status
  105. );
  106. $this->addLog("编辑用户:" . $uid);
  107. $result = $user_model->editUser($data, $condition);
  108. return $this->response($result);
  109. }
  110. /**
  111. * 删除用户
  112. */
  113. public function deleteUser()
  114. {
  115. $uid = isset($this->params[ 'uid' ]) ? $this->params[ 'uid' ] : 0;
  116. $user_model = new UserModel();
  117. $condition = array (
  118. [ "uid", "=", $uid ],
  119. [ "app_module", "=", $this->app_module ],
  120. [ "site_id", "=", $this->site_id ],
  121. );
  122. $result = $user_model->deleteUser($condition);
  123. return $this->response($result);
  124. }
  125. /**
  126. * 编辑管理员状态
  127. */
  128. public function modifyUserStatus()
  129. {
  130. $status = isset($this->params[ 'status' ]) ? $this->params[ 'status' ] : '';
  131. $uid = isset($this->params[ 'uid' ]) ? $this->params[ 'uid' ] : 0;
  132. $user_model = new UserModel();
  133. $condition = array (
  134. [ "uid", "=", $uid ],
  135. [ "site_id", "=", $this->site_id ],
  136. [ "app_module", "=", $this->app_module ],
  137. );
  138. $result = $user_model->modifyUserStatus($status, $condition);
  139. return $this->response($result);
  140. }
  141. /**
  142. * 管理组列表
  143. * @return mixed
  144. */
  145. public function group()
  146. {
  147. $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  148. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  149. $search_keys = isset($this->params[ 'search_keys' ]) ? $this->params[ 'search_keys' ] : '';
  150. $condition = array (
  151. [ 'site_id', "=", $this->site_id ],
  152. [ "app_module", "=", $this->app_module ]
  153. );
  154. if (!empty($search_keys)) {
  155. $condition[] = [ 'desc', 'like', '%' . $search_keys . '%' ];
  156. }
  157. $group_model = new Group();
  158. $list = $group_model->getGroupPageList($condition, $page, $page_size);
  159. return $this->response($list);
  160. }
  161. /**
  162. * 添加用户组
  163. * @return mixed
  164. */
  165. public function addGroup()
  166. {
  167. $group_name = isset($this->params[ 'group_name' ]) ? $this->params[ 'group_name' ] : '';
  168. $menu_array = isset($this->params[ 'menu_array' ]) ? $this->params[ 'menu_array' ] : '';
  169. $desc = isset($this->params[ 'desc' ]) ? $this->params[ 'desc' ] : '';
  170. $group_model = new Group();
  171. $data = array (
  172. "group_name" => $group_name,
  173. "site_id" => $this->site_id,
  174. "app_module" => $this->app_module,
  175. "group_status" => 1,
  176. "menu_array" => $menu_array,
  177. "desc" => $desc,
  178. "is_system" => 0
  179. );
  180. $result = $group_model->addGroup($data);
  181. return $this->response($result);
  182. }
  183. /*
  184. * 菜单列表
  185. */
  186. public function menuList()
  187. {
  188. $menu_model = new Menu();
  189. // 查询站点的插件
  190. $site_model = new Site();
  191. $site_addon = $site_info = $site_model->getSiteAddonStr($this->site_id)[ 'data' ];
  192. $menu_list = $menu_model->getMenuList([ [ 'addon', 'in', $site_addon ], [ 'app_module', "=", $this->app_module ], [ 'is_control', "=", 1 ] ], '*', 'sort asc');
  193. $menu_tree = list_to_tree($menu_list[ 'data' ], 'name', 'parent', 'child_list', '');
  194. return $this->response($this->success($menu_tree));
  195. }
  196. /**
  197. * 编辑用户组
  198. * @return mixed
  199. */
  200. public function editGroup()
  201. {
  202. $group_model = new Group();
  203. $group_name = isset($this->params[ 'group_name' ]) ? $this->params[ 'group_name' ] : '';
  204. $menu_array = isset($this->params[ 'menu_array' ]) ? $this->params[ 'menu_array' ] : '';
  205. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;
  206. $desc = isset($this->params[ 'desc' ]) ? $this->params[ 'desc' ] : '';
  207. $data = array (
  208. "group_name" => $group_name,
  209. "menu_array" => $menu_array,
  210. "desc" => $desc,
  211. );
  212. $condition = array (
  213. [ "group_id", "=", $group_id ],
  214. [ "site_id", "=", $this->site_id ],
  215. [ "app_module", "=", $this->app_module ]
  216. );
  217. $result = $group_model->editGroup($data, $condition);
  218. return $this->response($result);
  219. }
  220. /**
  221. * 编辑用户组菜单信息
  222. */
  223. public function editGroupMenuInfo()
  224. {
  225. $group_model = new Group();
  226. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : '';
  227. $condition = array (
  228. [ "group_id", "=", $group_id ],
  229. [ "site_id", "=", $this->site_id ],
  230. [ "app_module", "=", $this->app_module ]
  231. );
  232. $group_info_result = $group_model->getGroupInfo($condition);
  233. $group_info = $group_info_result[ "data" ];
  234. if (empty($group_info)) return $this->response($this->error([], "未获取到用户分组信息!"));
  235. $menu_model = new Menu();
  236. // 查询站点的插件
  237. $site_model = new Site();
  238. $site_addon = $site_info = $site_model->getSiteAddonStr($this->site_id);
  239. $site_addon = $site_addon[ 'data' ];
  240. $menu_list = $menu_model->getMenuList([ [ 'addon', 'in', $site_addon ], [ 'app_module', "=", $this->app_module ], [ 'is_control', "=", 1 ] ], '*', 'sort asc');
  241. //处理选中数据
  242. $group_array = $group_info[ 'menu_array' ];
  243. $checked_array = explode(',', $group_array);
  244. foreach ($menu_list[ 'data' ] as $key => $val) {
  245. if (in_array($val[ 'name' ], $checked_array)) {
  246. $menu_list[ 'data' ][ $key ][ 'checked' ] = true;
  247. } else {
  248. $menu_list[ 'data' ][ $key ][ 'checked' ] = false;
  249. }
  250. }
  251. $menu_tree = list_to_tree($menu_list[ 'data' ], 'name', 'parent', 'child_list', '');
  252. return $this->response($this->success($menu_tree));
  253. }
  254. /**
  255. * 删除用户组
  256. */
  257. public function deleteGroup()
  258. {
  259. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : '';
  260. $condition = array (
  261. [ "group_id", "=", $group_id ],
  262. [ "site_id", "=", $this->site_id ],
  263. [ "app_module", "=", $this->app_module ],
  264. );
  265. $group_model = new Group();
  266. $result = $group_model->deleteGroup($condition);
  267. return $this->response($result);
  268. }
  269. /**
  270. * 用户组状态
  271. */
  272. public function modifyGroupStatus()
  273. {
  274. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;
  275. $status = isset($this->params[ 'status' ]) ? $this->params[ 'status' ] : 0;
  276. $group_model = new Group();
  277. $condition = array (
  278. [ "group_id", "=", $group_id ],
  279. [ "site_id", "=", $this->site_id ],
  280. [ "app_module", "=", $this->app_module ],
  281. );
  282. $result = $group_model->modifyGroupStatus($status, $condition);
  283. return $this->response($result);
  284. }
  285. /**
  286. * 用户日志
  287. */
  288. public function userLog()
  289. {
  290. $user_model = new UserModel();
  291. $page = isset($this->params[ 'page' ]) ? $this->params[ 'page' ] : 1;
  292. $page_size = isset($this->params[ 'page_size' ]) ? $this->params[ 'page_size' ] : PAGE_LIST_ROWS;
  293. $uid = isset($this->params[ 'uid' ]) ? $this->params[ 'uid' ] : 0;
  294. $search_keys = isset($this->params[ 'search_keys' ]) ? $this->params[ 'search_keys' ] : '';
  295. $condition = [];
  296. $condition[] = [ "site_id", "=", $this->site_id ];
  297. if (!empty($search_keys)) {
  298. $condition[] = [ 'action_name', 'like', '%' . $search_keys . '%' ];
  299. }
  300. if ($uid > 0) {
  301. $condition[] = [ 'uid', '=', $uid ];
  302. }
  303. $list = $user_model->getUserlogPageList($condition, $page, $page_size, "create_time desc");
  304. return $this->response($list);
  305. }
  306. /**
  307. * 获取站点所有用户
  308. */
  309. public function userList()
  310. {
  311. $user_model = new UserModel();
  312. //获取站点所有用户
  313. $condition = [];
  314. $condition[] = [ "site_id", "=", $this->site_id ];
  315. $condition[] = [ "app_module", "=", $this->app_module ];
  316. $user_list = $user_model->getUserList($condition);
  317. return $this->response($user_list);
  318. }
  319. /**
  320. * 批量删除日志
  321. */
  322. public function deleteUserLog()
  323. {
  324. $user_model = new UserModel();
  325. $id = isset($this->params[ 'id' ]) ? $this->params[ 'id' ] : '';
  326. $condition = array (
  327. [ "id", "in", $id ],
  328. [ "site_id", '=', $this->site_id ],
  329. );
  330. $res = $user_model->deleteUserLog($condition);
  331. return $this->response($res);
  332. }
  333. /**
  334. * 获取菜单根据用户组
  335. */
  336. public function getMenuByGroup()
  337. {
  338. $group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : 0;
  339. $condition = array (
  340. [ "group_id", "=", $group_id ],
  341. [ "site_id", "=", $this->site_id ],
  342. [ "app_module", "=", $this->app_module ]
  343. );
  344. $group_info_result = ( new Group() )->getGroupInfo($condition);
  345. $group_info = $group_info_result[ "data" ];
  346. if (empty($group_info)) return error();
  347. $menu_model = new Menu();
  348. // 查询站点的插件
  349. $site_model = new Site();
  350. $site_addon = $site_info = $site_model->getSiteAddonStr($this->site_id);
  351. $site_addon = $site_addon[ 'data' ];
  352. $menu_list = $menu_model->getMenuList([ [ 'addon', 'in', $site_addon ], [ 'app_module', "=", $this->app_module ], [ 'is_control', "=", 1 ] ], '*', 'sort asc');
  353. //处理选中数据
  354. $group_array = $group_info[ 'menu_array' ];
  355. $checked_array = empty($group_array) ? [] : explode(',', $group_array);
  356. foreach ($menu_list[ 'data' ] as $key => $val) {
  357. if (empty($checked_array) || in_array($val[ 'name' ], $checked_array)) {
  358. $menu_list[ 'data' ][ $key ][ 'checked' ] = true;
  359. } else {
  360. $menu_list[ 'data' ][ $key ][ 'checked' ] = false;
  361. }
  362. }
  363. $menu_tree = list_to_tree($menu_list[ 'data' ], 'name', 'parent', 'child_list', '');
  364. return $this->response($this->success($menu_tree));
  365. }
  366. }