UserController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. package com.huaxu.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.huaxu.common.FileUploadUtil;
  7. import com.huaxu.dto.UserListDto;
  8. import com.huaxu.entity.App;
  9. import com.huaxu.entity.MenuEntity;
  10. import com.huaxu.entity.UserTagEntity;
  11. import com.huaxu.logAdvice.LogAnnotation;
  12. import com.huaxu.model.AjaxMessage;
  13. import com.huaxu.model.LoginUser;
  14. import com.huaxu.model.Pagination;
  15. import com.huaxu.model.ResultStatus;
  16. import com.huaxu.service.MenuService;
  17. import com.huaxu.service.UserTagService;
  18. import com.huaxu.util.UserUtil;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import io.swagger.annotations.ApiParam;
  22. import org.apache.ibatis.annotations.Param;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.stereotype.Controller;
  26. import org.springframework.validation.annotation.Validated;
  27. import org.springframework.ui.ModelMap;
  28. import java.util.*;
  29. import java.io.IOException;
  30. import org.springframework.web.bind.annotation.*;
  31. import com.huaxu.entity.UserEntity;
  32. import com.huaxu.service.UserService;
  33. import org.springframework.web.multipart.MultipartFile;
  34. /**
  35. * 用户页面控制器
  36. * @author WYY
  37. * @date 2020-10-22 17:35
  38. */
  39. @RestController
  40. @RequestMapping("/user")
  41. @Api(tags = "用户管理")
  42. public class UserController {
  43. @Autowired
  44. private UserService userService;
  45. @Autowired
  46. private MenuService menuService;
  47. @Value("${UMIS.sys_config_path}")
  48. private String baseDir;
  49. @ApiOperation(value = "分页查询用户信息(按参数)")
  50. @RequestMapping(value = "/selectPageByParm", method = RequestMethod.POST)
  51. public AjaxMessage<Pagination<UserEntity>> list(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam(value = "contion", required = false) String contion, @RequestParam(value = "deptId", required = false) Long deptId) {
  52. IPage<UserEntity> iPage = new Page<>(pageNum, pageSize);
  53. UserEntity userEntity = new UserEntity();
  54. if (contion != null && contion != "") {
  55. userEntity.setUsername(contion.trim());
  56. userEntity.setPhone(contion.trim());
  57. }
  58. userEntity.setCompanyOrgId(deptId);
  59. userEntity.setDeptOrgId(deptId);
  60. iPage = userService.findPage(iPage, userEntity);
  61. Pagination<UserEntity> pages = new Pagination<>(iPage);
  62. return new AjaxMessage<>(ResultStatus.OK, pages);
  63. }
  64. @ApiOperation(value = "分页查询用户信息")
  65. @RequestMapping(value = "/selectPage", method = RequestMethod.POST)
  66. public AjaxMessage<Pagination<UserEntity>> selectPageByParm(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @ApiParam(value = "", required = false) @RequestBody UserEntity userEntity) {
  67. IPage<UserEntity> iPage = new Page<>(pageNum, pageSize);
  68. iPage = userService.findPage(iPage, userEntity);
  69. Pagination<UserEntity> pages = new Pagination<>(iPage);
  70. return new AjaxMessage<>(ResultStatus.OK, pages);
  71. }
  72. /**
  73. * 查询
  74. */
  75. @ApiOperation(value = "获取当前登录用户信息")
  76. @RequestMapping(value = "/findLoginUserById", method = RequestMethod.POST)
  77. public AjaxMessage<UserEntity> findLoginUserById() {
  78. LoginUser currentUser = UserUtil.getCurrentUser();
  79. UserEntity userEntity = userService.findUserById(Long.valueOf(currentUser.getId()));
  80. return new AjaxMessage<>(ResultStatus.OK, userEntity);
  81. }
  82. /**
  83. * 查询
  84. */
  85. @ApiOperation(value = "按ID查询用户信息")
  86. @RequestMapping(value = "/findUserById", method = RequestMethod.POST)
  87. public AjaxMessage<UserEntity> findUserById(@ApiParam(value = "用户ID", required = true) @RequestParam Long id) {
  88. UserEntity userEntity = userService.findUserById(id);
  89. return new AjaxMessage<>(ResultStatus.OK, userEntity);
  90. }
  91. /**
  92. * 按用户查询一级菜单信息(入口菜单)
  93. */
  94. @ApiOperation(value = "查询用户一级菜单信息(入口菜单-用户)")
  95. @RequestMapping(value = "/findUserFirstMenu", method = RequestMethod.GET)
  96. public AjaxMessage<List<MenuEntity>> findUserFirstMenu() {
  97. List<MenuEntity> menuEntityList = menuService.findUserFirstMenu();
  98. return new AjaxMessage<>(ResultStatus.OK, menuEntityList);
  99. }
  100. /**
  101. * 按应用查询菜单信息(系统菜单-用户)
  102. */
  103. @ApiOperation(value = "查询应用菜单信息")
  104. @RequestMapping(value = "/findUserMenu", method = RequestMethod.GET)
  105. public AjaxMessage<List<MenuEntity>> findUserMenu(@ApiParam(value = "应用ID", required = true) @RequestParam String appId) {
  106. List<MenuEntity> menuEntityList = menuService.findUserMenu(appId);
  107. return new AjaxMessage<>(ResultStatus.OK, menuEntityList);
  108. }
  109. /**
  110. * 按应用查询菜单信息(所有租户菜单:isTenant=1)
  111. */
  112. @ApiOperation(value = "查询所有菜单信息")
  113. @RequestMapping(value = "/findTenantMenu", method = RequestMethod.GET)
  114. public AjaxMessage<List<MenuEntity>> findTenantMenu() {
  115. List<MenuEntity> menuEntityList = menuService.findTenantMenu();
  116. return new AjaxMessage<>(ResultStatus.OK, menuEntityList);
  117. }
  118. /**
  119. * 新增
  120. */
  121. @ApiOperation(value = "用户头像")
  122. @RequestMapping(value = "addUserPhoto", method = RequestMethod.POST)
  123. public AjaxMessage<String> addUserPhoto(@ApiParam(value = "用户头像", required = true) @RequestParam("avatarfile") MultipartFile file) {
  124. String avatar = "";
  125. if (!file.isEmpty()) {
  126. try {
  127. avatar = FileUploadUtil.uploadWeb(baseDir, file);
  128. } catch (IOException e) {
  129. return new AjaxMessage<>(ResultStatus.ERROR, e.getMessage());
  130. }
  131. }
  132. return new AjaxMessage<>(ResultStatus.OK, avatar);
  133. }
  134. /**
  135. * 新增
  136. */
  137. @LogAnnotation(module = "【用户管理】新增")
  138. @ApiOperation(value = "新增用户信息")
  139. @RequestMapping(value = "addUser", method = RequestMethod.POST)
  140. public AjaxMessage<Integer> addUser(@ApiParam(value = "用户信息", required = true) @RequestBody UserEntity user) {
  141. if (user.getPhone() != null) {
  142. boolean isExsit = userService.checkMobileUnique(user.getPhone());
  143. if (isExsit) {
  144. return new AjaxMessage<>(ResultStatus.MEMBER_TELPHONE_ALREADY_EXISTS, 0);
  145. }
  146. }
  147. LoginUser currentUser = UserUtil.getCurrentUser();
  148. if (currentUser != null) {
  149. user.setUpdateBy(currentUser.getUsername());
  150. user.setCreateBy(currentUser.getUsername());
  151. user.setDateCreate(new Date());
  152. user.setDateUpdate(new Date());
  153. user.setTenantId(currentUser.getTenantId());
  154. }
  155. user.setStatus(1);
  156. if (user.getDeptOrgId() != null && user.getDeptOrgId() == 0) {
  157. user.setDeptOrgId(null);
  158. }
  159. int result = userService.addUser(user) ? 1 : 0;
  160. return new AjaxMessage<>(ResultStatus.OK, result);
  161. }
  162. /**
  163. * 修改保存用户
  164. */
  165. @LogAnnotation(module = "【用户管理】修改")
  166. @ApiOperation(value = "更新用户信息")
  167. @RequestMapping(value = "/updateUserById", method = RequestMethod.POST)
  168. public AjaxMessage<Integer> editUser(@ApiParam(value = "用户信息", required = true) @RequestBody UserEntity user) {
  169. if (user.getPhone() != null) {
  170. boolean isExsit = userService.checkMobileUnique(user);
  171. if (isExsit) {
  172. return new AjaxMessage<>(ResultStatus.MEMBER_TELPHONE_ALREADY_EXISTS, 0);
  173. }
  174. }
  175. LoginUser currentUser = UserUtil.getCurrentUser();
  176. if (currentUser != null) {
  177. user.setUpdateBy(currentUser.getUsername());
  178. user.setDateUpdate(new Date());
  179. user.setTenantId(currentUser.getTenantId());
  180. }
  181. int result = userService.updateUserById(user) ? 1 : 0;
  182. return new AjaxMessage<>(ResultStatus.OK, result);
  183. }
  184. /**
  185. * 删除
  186. */
  187. @LogAnnotation(module = "【用户管理】批量删除")
  188. @ApiOperation(value = "按ID进行批量删除")
  189. @RequestMapping(value = "/deleteUserByIds", method = RequestMethod.POST)
  190. public AjaxMessage<Integer> deleteUserByIds(@ApiParam(value = "用户ID", required = true) @RequestBody Long[] ids) {
  191. LoginUser currentUser = UserUtil.getCurrentUser();
  192. Integer userId = currentUser.getId();
  193. boolean isOk = true;
  194. for (Long id : ids) {
  195. if (userId.toString().equals(id.toString())) {
  196. isOk = false;
  197. }
  198. }
  199. //租户管理员不能删除限制
  200. // boolean isDelete = true;
  201. // for (Long id : ids) {
  202. // UserEntity userEntity = userService.findUserById(id);
  203. // if (userEntity.getUserType().equals("-999")) {
  204. // isDelete = false;
  205. // }
  206. // }
  207. if (!isOk) {
  208. return new AjaxMessage<>(ResultStatus.EXSIT_IS_ACCOUNT_ERROR, 0);
  209. }
  210. // if (!isDelete) {
  211. // return new AjaxMessage<>(ResultStatus.DELETE_IS_ACCOUNT_ERROR, 0);
  212. // }
  213. int result = userService.delUserByIds(ids) ? 1 : 0;
  214. return new AjaxMessage<>(ResultStatus.OK, result);
  215. }
  216. /**
  217. * 删除
  218. */
  219. @LogAnnotation(module = "【用户管理】单条删除")
  220. @ApiOperation(value = "按ID进行单个删除")
  221. @RequestMapping(value = "/deleteUserById", method = RequestMethod.POST)
  222. public AjaxMessage<Integer> deleteUserById(@ApiParam(value = "用户ID", required = true) @RequestParam Long id) {
  223. LoginUser currentUser = UserUtil.getCurrentUser();
  224. Integer userId = currentUser.getId();
  225. System.out.println("userId" + userId);
  226. if (userId.toString().equals(id.toString())) {
  227. return new AjaxMessage<>(ResultStatus.EXSIT_IS_ACCOUNT_ERROR, 0);
  228. }
  229. //租户管理员不能删除限制
  230. // UserEntity userEntity = userService.findUserById(id);
  231. // if (userEntity.getUserType().equals("-999")) {
  232. // return new AjaxMessage<>(ResultStatus.DELETE_IS_ACCOUNT_ERROR, 0);
  233. // }
  234. int result = userService.delUserById(id) ? 1 : 0;
  235. return new AjaxMessage<>(ResultStatus.OK, result);
  236. }
  237. @RequestMapping(value = "/getUserIdsByOrgId", method = RequestMethod.POST)
  238. public List<Integer>getUserIdsByOrgId(String ids) {
  239. List list = JSONObject.parseObject(ids, List.class);
  240. List<Integer> result = userService.getUserIdsByOrgId(list);
  241. return result;
  242. }
  243. @RequestMapping(value = "/findUserIdsByOrgId", method = RequestMethod.GET)
  244. public AjaxMessage<List<UserEntity>> findUserIdsByOrgId(String ids) {
  245. List list = JSONObject.parseObject(ids, List.class);
  246. List<UserEntity> result = userService.findUserIdsByOrgId(list);
  247. return new AjaxMessage<>(ResultStatus.OK,result);
  248. }
  249. @RequestMapping(value = "/findUserList", method = RequestMethod.GET)
  250. public AjaxMessage<List<UserListDto>> findUserList(Integer type) {
  251. List<UserListDto> userList = userService.findUserList(type);
  252. return new AjaxMessage<>(ResultStatus.OK,userList);
  253. }
  254. /**
  255. * 查询运维人员信息
  256. * @return
  257. */
  258. @RequestMapping(value = "/findUserListByType", method = RequestMethod.GET)
  259. public AjaxMessage<List<UserEntity>> findUserListByType() {
  260. List<UserEntity> userList = userService.findUserListBytype(3);
  261. return new AjaxMessage<>(ResultStatus.OK, userList);
  262. }
  263. @RequestMapping(value = "/findUserIdsByUserIds", method = RequestMethod.POST)
  264. public List<UserEntity> findUserIdsByUserIds(Long[] ids) {
  265. List list = Arrays.asList(ids.clone());
  266. List<UserEntity> result = userService.findUserIdsByUserIds(list);
  267. return result;
  268. }
  269. @ApiOperation(value = "获取登录用户所属机构及其上级机构用户信息")
  270. @RequestMapping(value = "/findUserIdsForOrg", method = RequestMethod.GET)
  271. public List<Long> findUserIdsForOrg() {
  272. List<Long> ids = new ArrayList<>();
  273. List<UserEntity> result = userService.findUserIdsForOrg();
  274. for (UserEntity item : result) {
  275. ids.add(item.getId());
  276. }
  277. return ids;
  278. }
  279. @ApiOperation(value = "查询拥有此机构权限的用户")
  280. @RequestMapping(value = "/findUserIdsByPermissonOrg", method = RequestMethod.POST)
  281. public List<Integer> findUserIdsByPermissonOrg(
  282. @RequestParam(value = "tenantId", required = false) String tenantId,
  283. @RequestParam(value = "companyOrgId", required = false)Integer companyOrgId,
  284. @RequestParam(value = "deptOrgId", required = false)Integer deptOrgId){
  285. return userService.findUserIdsByPermissonOrg(tenantId,companyOrgId,deptOrgId);
  286. }
  287. }