RoleUserEndPoint.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. package com.yihu.ehr.basic.user.controller;
  2. import com.fasterxml.jackson.core.type.TypeReference;
  3. import com.yihu.ehr.basic.apps.model.UserApp;
  4. import com.yihu.ehr.basic.apps.service.UserAppService;
  5. import com.yihu.ehr.basic.org.model.OrgDept;
  6. import com.yihu.ehr.basic.org.model.OrgMemberRelation;
  7. import com.yihu.ehr.basic.org.model.Organization;
  8. import com.yihu.ehr.basic.org.service.OrgDeptService;
  9. import com.yihu.ehr.basic.org.service.OrgMemberRelationService;
  10. import com.yihu.ehr.basic.org.service.OrgService;
  11. import com.yihu.ehr.basic.user.dao.XUserTypeRepository;
  12. import com.yihu.ehr.basic.user.dao.XUserTypeRolesRepository;
  13. import com.yihu.ehr.basic.user.entity.*;
  14. import com.yihu.ehr.basic.user.service.*;
  15. import com.yihu.ehr.commons.model.MOrgMemberRlaJson;
  16. import com.yihu.ehr.constants.ApiVersion;
  17. import com.yihu.ehr.constants.ServiceApi;
  18. import com.yihu.ehr.controller.EnvelopRestEndPoint;
  19. import com.yihu.ehr.model.user.MRoleOrg;
  20. import com.yihu.ehr.model.user.MRoleUser;
  21. import com.yihu.ehr.util.rest.Envelop;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import io.swagger.annotations.ApiParam;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.http.MediaType;
  27. import org.springframework.transaction.annotation.Propagation;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import org.springframework.util.StringUtils;
  30. import org.springframework.web.bind.annotation.*;
  31. import javax.servlet.http.HttpServletRequest;
  32. import javax.servlet.http.HttpServletResponse;
  33. import java.io.IOException;
  34. import java.text.ParseException;
  35. import java.util.*;
  36. /**
  37. * Created by yww on 2016/7/7.
  38. */
  39. @RestController
  40. @RequestMapping(ApiVersion.Version1_0)
  41. @Api(value = "roles", description = "角色管理", tags = {"安全管理-角色管理"})
  42. public class RoleUserEndPoint extends EnvelopRestEndPoint {
  43. @Autowired
  44. private RoleUserService roleUserService;
  45. @Autowired
  46. private RolesService rolesService;
  47. @Autowired
  48. private UserAppService userAppService;
  49. @Autowired
  50. private RoleOrgService roleOrgService;
  51. @Autowired
  52. private UserService userService;
  53. @Autowired
  54. private OrgMemberRelationService orgMemberRelationService;
  55. @Autowired
  56. private XUserTypeRepository xUserTypeRepository;
  57. @Autowired
  58. private UserTypeService userTypeService;
  59. @Autowired
  60. private XUserTypeRolesRepository xUserTypeRolesRepository;
  61. @Autowired
  62. private OrgDeptService orgDeptService;
  63. @Autowired
  64. private OrgService orgService;
  65. @RequestMapping(value = ServiceApi.Roles.RoleUser, method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
  66. @ApiOperation(value = "为角色组配置人员,单个")
  67. public MRoleUser createRoleUser(
  68. @ApiParam(name = "data_json", value = "角色组-人员关系Json串")
  69. @RequestBody String dataJson) throws IOException {
  70. RoleUser roleUser = toEntity(dataJson, RoleUser.class);
  71. String[] fields = {"userId", "roleId"};
  72. String[] values = {roleUser.getUserId(), roleUser.getRoleId() + ""};
  73. List<RoleUser> roleUserList = roleUserService.findByFields(fields, values);
  74. if (roleUserList != null && roleUserList.size() > 0) {
  75. return convertToModel(roleUserList.get(0), MRoleUser.class);
  76. }
  77. // RoleUser roleUserNew = roleUserService.save(roleUser);
  78. RoleUser roleUserNew = roleUserService.createRoleUser(roleUser);
  79. return convertToModel(roleUserNew, MRoleUser.class);
  80. }
  81. @RequestMapping(value = ServiceApi.Roles.RoleUser, method = RequestMethod.DELETE)
  82. @ApiOperation(value = "根据角色组id,人员Id删除角色组人员")
  83. public boolean deleteRoleUser(
  84. @ApiParam(name = "user_id", value = "人员id")
  85. @RequestParam(value = "user_id") String userId,
  86. @ApiParam(name = "role_id", value = "角色组id")
  87. @RequestParam(value = "role_id") String roleId) {
  88. //删除角色组内成员
  89. RoleUser roleUser = roleUserService.findRelation(userId, Long.parseLong(roleId));
  90. if (null != roleUser) {
  91. roleUserService.delete(roleUser.getId());
  92. //roleUserService.deleteRoleUser(roleUser);
  93. }
  94. //根据角色、应用、用户三者,判断该用户是否在该应用的其他角色组中存在授权:
  95. //若存在,则不做任何操作,若不存在则需要变更USERAPP表中的状态 0 -> 1
  96. String appId = "";
  97. boolean result = false;
  98. Roles roles = rolesService.getRoleByRoleId(Long.parseLong(roleId));
  99. if (roles != null) {
  100. appId = roles.getAppId();
  101. List<Roles> rolesRe = rolesService.getRoleByAppId(appId);
  102. if (rolesRe != null && rolesRe.size() > 0) {
  103. for (Roles ra : rolesRe) {
  104. long roleIdRe = ra.getId();
  105. RoleUser roleUserRe = roleUserService.findRelation(userId, roleIdRe);
  106. if (roleUserRe == null) {
  107. continue;
  108. } else {
  109. result = true;
  110. break;
  111. }
  112. }
  113. }
  114. //当该用户确实无授权的情况,删除数据
  115. if (!result) {
  116. UserApp userApp = userAppService.findByAppIdAndUserId(appId, userId);
  117. if (userApp != null) {
  118. userAppService.delete(userApp);
  119. return true;
  120. }
  121. }
  122. }
  123. return true;
  124. }
  125. @RequestMapping(value = ServiceApi.Roles.RoleUserByUserId, method = RequestMethod.DELETE)
  126. @ApiOperation(value = "根据人员id,删除其与所有角色组关系")
  127. public boolean deleteRoleUserBuUserId(
  128. @ApiParam(name = "user_id", value = "人员id")
  129. @RequestParam(value = "user_id") String userId) throws Exception {
  130. Collection<RoleUser> roleUsers = roleUserService.search("userId=" + userId);
  131. List<Long> ids = new ArrayList<>();
  132. for (RoleUser roleUser : roleUsers) {
  133. ids.add(roleUser.getId());
  134. }
  135. roleUserService.delete(ids);
  136. return true;
  137. }
  138. @RequestMapping(value = ServiceApi.Roles.RoleUsers, method = RequestMethod.DELETE)
  139. @ApiOperation(value = "人员id,角色组ids,批量删除人员-角色组关系")
  140. public boolean batchDeleteRoleUserRelation(
  141. @ApiParam(name = "user_id", value = "人员id")
  142. @RequestParam(value = "user_id") String userId,
  143. @ApiParam(name = "role_ids", value = "角色组ids")
  144. @RequestParam(value = "role_ids") String roleIds) throws Exception {
  145. return roleUserService.batchDeleteRoleUserRelation(userId, roleIds);
  146. }
  147. @RequestMapping(value = ServiceApi.Roles.RoleUsers, method = RequestMethod.POST)
  148. @ApiOperation(value = "批量新增人员所属角色组,一对多")
  149. public boolean batchCreateRolUsersRelation(
  150. @ApiParam(name = "user_id", value = "人员id")
  151. @RequestParam(value = "user_id") String userId,
  152. @ApiParam(name = "role_ids", value = "角色组ids,多个用逗号隔开")
  153. @RequestParam(value = "role_ids") String roleIds) throws Exception {
  154. roleUserService.batchCreateRoleUsersRelation(userId, roleIds);
  155. return true;
  156. }
  157. @RequestMapping(value = ServiceApi.Roles.RoleUsers, method = RequestMethod.PUT)
  158. @ApiOperation(value = "批量修改人员所属角色组关系,一对多")
  159. public boolean batchUpdateRoleUsersRelation(
  160. @ApiParam(name = "user_id", value = "人员id")
  161. @RequestParam(value = "user_id") String userId,
  162. @ApiParam(name = "role_ids", value = "角色组ids,多个用逗号隔开")
  163. @RequestParam(value = "role_ids") String roleIds) throws Exception {
  164. roleUserService.batchUpdateRoleUsersRelation(userId, roleIds);
  165. return true;
  166. }
  167. @RequestMapping(value = ServiceApi.Roles.RoleUsers, method = RequestMethod.GET)
  168. @ApiOperation(value = "查询角色组人员关系列表---分页")
  169. public Collection<MRoleUser> searchRoleUser(
  170. @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,roleId,userId")
  171. @RequestParam(value = "fields", required = false) String fields,
  172. @ApiParam(name = "filters", value = "过滤器,为空检索所有信息", defaultValue = "")
  173. @RequestParam(value = "filters", required = false) String filters,
  174. @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+id")
  175. @RequestParam(value = "sorts", required = false) String sorts,
  176. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  177. @RequestParam(value = "size", required = false) int size,
  178. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  179. @RequestParam(value = "page", required = false) int page,
  180. HttpServletRequest request,
  181. HttpServletResponse response) throws Exception {
  182. List<RoleUser> roleUserList = roleUserService.search(fields, filters, sorts, page, size);
  183. pagedResponse(request, response, roleUserService.getCount(filters), page, size);
  184. return convertToModels(roleUserList, new ArrayList<>(roleUserList.size()), MRoleUser.class, fields);
  185. }
  186. @RequestMapping(value = ServiceApi.Roles.RoleUsersNoPage, method = RequestMethod.GET)
  187. @ApiOperation(value = "查询角色组人员关系列表---不分页")
  188. public Collection<MRoleUser> searchRoleUserNoPaging(
  189. @ApiParam(name = "filters", value = "过滤条件,为空检索全部", defaultValue = "")
  190. @RequestParam(value = "filters", required = false) String filters) throws Exception {
  191. List<RoleUser> roleUserList = roleUserService.search(filters);
  192. return convertToModels(roleUserList, new ArrayList<MRoleUser>(roleUserList.size()), MRoleUser.class, "");
  193. }
  194. @RequestMapping(value = ServiceApi.Roles.RoleOrg, method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
  195. @ApiOperation(value = "为角色组配置机构,单个")
  196. public MRoleOrg createRoleOrg(
  197. @ApiParam(name = "data_json", value = "角色组-机构关系Json串")
  198. @RequestBody String dataJson) throws IOException {
  199. RoleOrg roleOrg = toEntity(dataJson, RoleOrg.class);
  200. roleOrg = roleOrgService.save(roleOrg);
  201. return convertToModel(roleOrg, MRoleOrg.class);
  202. }
  203. @RequestMapping(value = ServiceApi.Roles.RoleOrg, method = RequestMethod.DELETE)
  204. @ApiOperation(value = "根据角色组id,删除角色组机构")
  205. public boolean deleteRoleOrg(
  206. @ApiParam(name = "role_id", value = "角色组id")
  207. @RequestParam(value = "role_id") String roleId,
  208. @ApiParam(name = "org_code", value = "角色组id")
  209. @RequestParam(value = "org_code") String orgCode) {
  210. //删除角色组内机构
  211. RoleOrg roleOrg = roleOrgService.findRelation(roleId, orgCode);
  212. if (null != roleOrg) {
  213. roleOrgService.deleteRoleOrg(roleOrg.getId());
  214. }
  215. return true;
  216. }
  217. @RequestMapping(value = ServiceApi.Roles.RoleOrgs, method = RequestMethod.GET)
  218. @ApiOperation(value = "查询角色组机构列表---分页")
  219. public Collection<MRoleOrg> searchRoleOrg(
  220. @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,roleId,orgId")
  221. @RequestParam(value = "fields", required = false) String fields,
  222. @ApiParam(name = "filters", value = "过滤器,为空检索所有信息", defaultValue = "")
  223. @RequestParam(value = "filters", required = false) String filters,
  224. @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+id")
  225. @RequestParam(value = "sorts", required = false) String sorts,
  226. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  227. @RequestParam(value = "size", required = false) int size,
  228. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  229. @RequestParam(value = "page", required = false) int page,
  230. HttpServletRequest request,
  231. HttpServletResponse response) throws Exception {
  232. List<RoleOrg> roleOrgList = roleOrgService.search(fields, filters, sorts, page, size);
  233. pagedResponse(request, response, roleOrgService.getCount(filters), page, size);
  234. return convertToModels(roleOrgList, new ArrayList<>(roleOrgList.size()), MRoleOrg.class, fields);
  235. }
  236. @RequestMapping(value = ServiceApi.Roles.RoleOrgsNoPage, method = RequestMethod.GET)
  237. @ApiOperation(value = "查询角色组机构列表---不分页")
  238. public Collection<MRoleOrg> searchRoleOrgsNoPaging(
  239. @ApiParam(name = "filters", value = "过滤条件,为空检索全部", defaultValue = "")
  240. @RequestParam(value = "filters", required = false) String filters) throws Exception {
  241. List<RoleOrg> roleOrgList = roleOrgService.search(filters);
  242. return convertToModels(roleOrgList, new ArrayList<MRoleOrg>(roleOrgList.size()), MRoleOrg.class, "");
  243. }
  244. @RequestMapping(value = ServiceApi.Roles.ClientRole, method = RequestMethod.GET)
  245. @ApiOperation(value = "查询应用角色ID列表")
  246. public List<String> clientRole(
  247. @ApiParam(name = "clientId", value = "应用ID", required = true)
  248. @RequestParam(value = "clientId") String clientId,
  249. @ApiParam(name = "userId", value = "用户ID", required = true)
  250. @RequestParam(value = "userId") String userId) throws Exception {
  251. List<Integer> list = roleUserService.userClientRole(clientId, userId);
  252. List<String> roles = new ArrayList<>();
  253. list.forEach(item -> {
  254. roles.add(item.toString());
  255. });
  256. return roles;
  257. }
  258. /**
  259. * 基于用户ID及用户类型进行授权清理及授权更新
  260. *
  261. * @param userId
  262. * @param userType
  263. * @return Envelop
  264. * @throws Exception
  265. */
  266. @RequestMapping(value = ServiceApi.Roles.RoleUserTypeUpdate, method = RequestMethod.POST)
  267. @ApiOperation(value = "基于用户ID&用户类型进行授权更新")
  268. public Envelop setUserRolesForUpdate(
  269. @ApiParam(name = "userId", value = "用户ID", required = true)
  270. @RequestParam(value = "userId") String userId,
  271. @ApiParam(name = "userType", value = "变更后用户类型", required = true)
  272. @RequestParam(value = "userType") int userType
  273. /*@ApiParam(name = "flag", value = "更新类型,当0-删除所有的旧有授权,1-不删除旧有授权", required = true)
  274. @RequestParam(value = "flag") int flag*/
  275. /*@ApiParam(name = "orgModel", value = "所属机构JSON串", required = false)
  276. @RequestParam(value = "orgModel") String orgModel*/) throws Exception {
  277. Envelop envelop = new Envelop();
  278. //删除当前用户,所有的角色授权,并重新按新的用户类型进行授权
  279. Collection<RoleUser> roleUsers = roleUserService.search("userId=" + userId);
  280. List<Long> ids = new ArrayList<>();
  281. for (RoleUser roleUser : roleUsers) {
  282. ids.add(roleUser.getId());
  283. }
  284. //删除该用户所有的角色授权
  285. roleUserService.delete(ids);
  286. //删除该用户所有的应用授权
  287. userAppService.delUserAppByUserId(userId);
  288. //基于变更后的用户类型进行角色的初始化授权
  289. List<UserTypeRoles> userTypeRoles = new ArrayList<>();
  290. userTypeRoles = userService.getUserTypeRoles(userType);
  291. if (userTypeRoles != null && userTypeRoles.size() > 0) {
  292. envelop = setUserRoles(userTypeRoles, userId);
  293. }
  294. return envelop;
  295. }
  296. /**
  297. * 基于用户ID及用户类型进行授权清理及授权更新
  298. */
  299. @RequestMapping(value = ServiceApi.Roles.UserOrgRela, method = RequestMethod.POST)
  300. @ApiOperation(value = "基于用户ID&用户所属机构进行机构及部门间的对应关系")
  301. public Envelop setUserRolesForUpdate(
  302. @ApiParam(name = "userId", value = "用户ID", required = true)
  303. @RequestParam(value = "userId") String userId,
  304. @ApiParam(name = "orgModel", value = "所属机构JSON串", required = false)
  305. @RequestParam(value = "orgModel") String orgModel) throws Exception {
  306. Envelop envelop = new Envelop();
  307. envelop = setOrgDeptRelation(orgModel, userId);
  308. return envelop;
  309. }
  310. /**
  311. * 用户新增初始化用户角色授权
  312. */
  313. public Envelop setUserRoles(List<UserTypeRoles> userTypeRoles, String userId) {
  314. long roleId = 0;
  315. String appId = "";
  316. Map<String, String> result = new HashMap<>();
  317. RoleUser roleUser =null;
  318. Envelop envelop = new Envelop();
  319. envelop.setSuccessFlg(false);
  320. for (UserTypeRoles userTypeRoles1 : userTypeRoles) {
  321. roleUser = new RoleUser();
  322. roleId = userTypeRoles1.getRoleId();
  323. appId = userTypeRoles1.getClientId().toString();
  324. roleUser.setRoleId(roleId);
  325. roleUser.setUserId(userId);
  326. //更新用户角色授权(role_user表的维护)
  327. if (roleUserService.findRelation(userId, roleId) != null) {
  328. continue;
  329. }
  330. roleUser = roleUserService.createRoleUser(roleUser);
  331. if (roleUser == null) {
  332. envelop.setSuccessFlg(false);
  333. envelop.setErrorMsg("新增角色授权失败!");
  334. return envelop;
  335. } else {
  336. envelop.setSuccessFlg(true);
  337. }
  338. //更新用户应用授权(user_app表的维护)
  339. UserApp userApp = new UserApp();
  340. userApp = userAppService.findByAppIdAndUserId(appId, userId);
  341. if (userApp != null) {
  342. continue;
  343. }
  344. userApp.setUserId(userId);
  345. userApp.setAppId(appId);
  346. userApp.setStatus(0);
  347. userApp.setShowFlag(1);
  348. userApp = userAppService.save(userApp);
  349. if (userApp == null) {
  350. envelop.setSuccessFlg(false);
  351. envelop.setErrorMsg("新增用户应用授权失败!");
  352. return envelop;
  353. } else {
  354. envelop.setSuccessFlg(true);
  355. }
  356. }
  357. return envelop;
  358. }
  359. /**
  360. * 用户新增初始化用户所属机构(机构部门人员关系维护)
  361. */
  362. public Envelop setOrgDeptRelation(String orgModel, String userId) throws Exception {
  363. Envelop envelop = new Envelop();
  364. //删除该用户所有的机构授权信息,基于新传入的机构部门信息进行重新生成。
  365. orgMemberRelationService.deleteOrgMemberRelationByUserId(userId);
  366. String orgId = "";
  367. List<String> deptIds = new ArrayList<>();
  368. String dutyId="";
  369. OrgMemberRelation orgMemberRelation = null ;
  370. List<MOrgMemberRlaJson> orgDeptJsonList = objectMapper.readValue(orgModel, new TypeReference<List<MOrgMemberRlaJson>>() {
  371. });
  372. if (orgDeptJsonList != null && orgDeptJsonList.size() > 0) {
  373. for (MOrgMemberRlaJson mOrgDeptJson : orgDeptJsonList) {
  374. orgId = mOrgDeptJson.getOrgId().toString();
  375. deptIds = Arrays.asList(mOrgDeptJson.getDeptIds().split(","));
  376. dutyId = mOrgDeptJson.getDutyId().toString();
  377. if (deptIds.size() > 0) {
  378. for (String deptId : deptIds) {
  379. int deptIdInt = Integer.parseInt(deptId);
  380. //验证用户机构关联是否已存在
  381. int res = orgMemberRelationService.getCountByOrgIdAndUserId(orgId, userId, deptIdInt);
  382. if (res == 0) {
  383. orgMemberRelation = new OrgMemberRelation();
  384. orgMemberRelation.setUserId(userId);
  385. //存储的是资源字典中行政业务管理职称的编码
  386. orgMemberRelation.setDutyName(dutyId);
  387. //TODO 验证数据存储
  388. // 获取机构关联信息 - 名称
  389. orgMemberRelation.setOrgId(orgId);
  390. Organization org = orgService.getOrgById(orgId);
  391. if(org != null){
  392. orgMemberRelation.setOrgName(org.getFullName());
  393. }
  394. // 获取部门关联信息 - 名称
  395. orgMemberRelation.setDeptId(deptIdInt);
  396. OrgDept orgDept = orgDeptService.searchBydeptId(deptIdInt);
  397. if(orgDept!= null){
  398. orgMemberRelation.setDeptName(orgDept.getName());
  399. }
  400. orgMemberRelation.setStatus(0);
  401. orgMemberRelation = orgMemberRelationService.save(orgMemberRelation);
  402. if (orgMemberRelation != null) {
  403. //新增成功,继续循环
  404. continue;
  405. } else {
  406. envelop.setSuccessFlg(false);
  407. envelop.setErrorMsg("新增用户的机构科室关联失败。");
  408. return envelop;
  409. }
  410. } else {
  411. //用户与机构关系已存在,继续循环
  412. continue;
  413. }
  414. }
  415. }
  416. }
  417. // List<OrgMemberRelation> memberRelationList = orgMemberRelationService.findByField("userId", userId);
  418. // envelop.setDetailModelList(memberRelationList);
  419. }
  420. envelop.setSuccessFlg(true);
  421. return envelop;
  422. }
  423. /**
  424. * 新增用户类型
  425. */
  426. @RequestMapping(value = ServiceApi.Roles.CreateUserType, method = RequestMethod.POST)
  427. @ApiOperation(value = "新增用户类别")
  428. public Envelop createUserType(
  429. @ApiParam(name = "code", value = "用户类别编码", required = true)
  430. @RequestParam(value = "code") String code,
  431. @ApiParam(name = "name", value = "用户类别名称", required = false)
  432. @RequestParam(value = "name") String name) throws Exception {
  433. Envelop envelop = new Envelop();
  434. UserType userType = new UserType();
  435. userType.setCode(code);
  436. userType.setName(name);
  437. userType.setActiveFlag("1");
  438. userType = xUserTypeRepository.save(userType);
  439. if (userType != null) {
  440. envelop.setSuccessFlg(true);
  441. envelop.setObj(userType);
  442. } else {
  443. envelop.setSuccessFlg(false);
  444. envelop.setErrorMsg("新增用户类别失败,请重试!");
  445. }
  446. return envelop;
  447. }
  448. @RequestMapping(value = ServiceApi.Roles.SearchUserType, method = RequestMethod.GET)
  449. @ApiOperation(value = "查询用户类别列表---分页")
  450. public Envelop searchUserType(
  451. @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
  452. @RequestParam(value = "fields", required = false) String fields,
  453. @ApiParam(name = "filters", value = "过滤器,为空检索所有信息")
  454. @RequestParam(value = "filters", required = false) String filters,
  455. @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "-createDate")
  456. @RequestParam(value = "sorts", required = false) String sorts,
  457. @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
  458. @RequestParam(value = "size", required = false) int size,
  459. @ApiParam(name = "page", value = "页码", defaultValue = "1")
  460. @RequestParam(value = "page", required = false) int page,
  461. HttpServletRequest request, HttpServletResponse response) {
  462. Envelop envelop = new Envelop();
  463. try {
  464. List<UserType> roleUserList = userTypeService.search(fields, filters, sorts, page, size);
  465. envelop.setSuccessFlg(true);
  466. envelop.setDetailModelList(roleUserList);
  467. envelop.setTotalCount((int) userTypeService.getCount(filters));
  468. envelop.setCurrPage(page);
  469. envelop.setPageSize(size);
  470. } catch (ParseException e) {
  471. envelop.setSuccessFlg(false);
  472. envelop.setErrorMsg(e.getMessage());
  473. e.printStackTrace();
  474. }
  475. return envelop;
  476. }
  477. @RequestMapping(value = ServiceApi.Roles.UpdateUserType, method = RequestMethod.POST)
  478. @ApiOperation(value = "用户类型变更")
  479. public Envelop updateUserType(
  480. @ApiParam(name = "userTypeJson", value = "用户类型json串")
  481. @RequestParam(value = "userTypeJson") String userTypeJson) {
  482. Envelop envelop = new Envelop();
  483. UserType userType = null;
  484. try {
  485. userType = toEntity(userTypeJson, UserType.class);
  486. if (null != userType && !userType.getActiveFlag().equals("0")) {
  487. userType.setActiveFlag("1");
  488. }
  489. List<UserType> userTList = new ArrayList<>();
  490. userTList = xUserTypeRepository.findByCode(userType.getCode());
  491. if (null != userTList && userTList.size() > 0 && !userTList.get(0).getId().equals(userType.getId())) {
  492. envelop.setSuccessFlg(false);
  493. envelop.setErrorMsg("用户类型编码已存在!");
  494. return envelop;
  495. } else {
  496. userTList = xUserTypeRepository.findByName(userType.getName());
  497. if (null != userTList && userTList.size() > 0&& !userTList.get(0).getId().equals(userType.getId())) {
  498. envelop.setSuccessFlg(false);
  499. envelop.setErrorMsg("用户类型名称已存在!");
  500. return envelop;
  501. }
  502. }
  503. userType = userTypeService.save(userType);
  504. envelop.setSuccessFlg(true);
  505. envelop.setObj(userType);
  506. } catch (IOException e) {
  507. envelop.setSuccessFlg(false);
  508. envelop.setErrorMsg(e.getMessage());
  509. e.printStackTrace();
  510. }
  511. return envelop;
  512. }
  513. /**
  514. * 根据用户类型,获取初始化的角色组列表
  515. */
  516. @RequestMapping(value = ServiceApi.Roles.GetUserTypeRoles, method = RequestMethod.POST)
  517. @ApiOperation(value = "基于用户类型的内码,进行用户初始化角色列表的查询")
  518. public Envelop getUserTypeRolesByUserType(
  519. @ApiParam(name = "userTypeId", value = "用户类别内码", required = true)
  520. @RequestParam(value = "userTypeId") String userTypeId) throws Exception {
  521. Envelop envelop = new Envelop();
  522. List<UserTypeRoles> userTypeRoles = new ArrayList<>();
  523. userTypeRoles = xUserTypeRolesRepository.findByTypeId(Integer.parseInt(userTypeId));
  524. if (userTypeRoles != null && userTypeRoles.size() > 0) {
  525. envelop.setSuccessFlg(true);
  526. envelop.setDetailModelList(userTypeRoles);
  527. } else {
  528. // 当查询无数据时,不返回报错信息,界面直接展示为空即可
  529. envelop.setSuccessFlg(true);
  530. }
  531. return envelop;
  532. }
  533. @RequestMapping(value = ServiceApi.Roles.GetUserTypeById, method = RequestMethod.GET)
  534. @ApiOperation(value = "根据id获取用户类型")
  535. public Envelop GetUserTypeById(
  536. @ApiParam(name = "userTypeId", value = "用户类型ID")
  537. @RequestParam(value = "userTypeId") int userTypeId) {
  538. Envelop envelop = new Envelop();
  539. UserType userType = null;
  540. List<UserTypeRoles> userTypeRoles = null;
  541. try {
  542. userType = xUserTypeRepository.findById(userTypeId);
  543. userTypeRoles = xUserTypeRolesRepository.findByTypeId(userTypeId);
  544. envelop.setSuccessFlg(true);
  545. envelop.setDetailModelList(userTypeRoles);
  546. envelop.setObj(userType);
  547. } catch (Exception e) {
  548. envelop.setSuccessFlg(false);
  549. envelop.setErrorMsg(e.getMessage());
  550. e.printStackTrace();
  551. }
  552. return envelop;
  553. }
  554. @RequestMapping(value = ServiceApi.Roles.SaveUserTypeRoles, method = RequestMethod.POST)
  555. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  556. @ApiOperation(value = "保存用户类型-角色组关联关系")
  557. public Envelop saveUserTypeRoles(
  558. @ApiParam(name = "userTypeJson", value = "用户类型json串")
  559. @RequestParam(value = "userTypeJson") String userTypeJson,
  560. @ApiParam(name = "typeRolesJson", value = "用户类型-角色组json串")
  561. @RequestParam(value = "typeRolesJson") String typeRolesJson) {
  562. //判断用户类型的id是否存在,如果存在,则视为变更与角色组关联关系。如果不存在则视为新的用户类型
  563. Envelop envelop = new Envelop();
  564. UserType userType = null;
  565. try {
  566. List<UserTypeRoles> models = objectMapper.readValue(typeRolesJson, new TypeReference<List<UserTypeRoles>>() {
  567. });
  568. userType = toEntity(userTypeJson, UserType.class);
  569. if (null != userType && null != userType.getId() && userType.getId() > 0) {
  570. //变更 用户类型
  571. List<UserType> userTList = new ArrayList<>();
  572. userTList = xUserTypeRepository.findByCode(userType.getCode());
  573. if (null != userTList && userTList.size() > 0 && !userTList.get(0).getId().equals(userType.getId())) {
  574. envelop.setSuccessFlg(false);
  575. envelop.setErrorMsg("用户类型编码已存在!");
  576. return envelop;
  577. } else {
  578. userTList = xUserTypeRepository.findByName(userType.getName());
  579. if (null != userTList && userTList.size() > 0&& !userTList.get(0).getId().equals(userType.getId())) {
  580. envelop.setSuccessFlg(false);
  581. envelop.setErrorMsg("用户类型名称已存在!");
  582. return envelop;
  583. }
  584. }
  585. userType = userTypeService.save(userType);
  586. Integer userTypeId = userType.getId();
  587. String userTypeName = userType.getName();
  588. //变更与角色组的关联关系
  589. xUserTypeRolesRepository.deleteUserTypeRolesByTypeId(userTypeId);
  590. models.forEach(userTypeRoles -> {
  591. userTypeRoles.setTypeId(userTypeId);
  592. userTypeRoles.setTypeName(userTypeName);
  593. userTypeRoles.setId(null);
  594. xUserTypeRolesRepository.save(userTypeRoles);
  595. });
  596. } else {
  597. if (null != userType && !userType.getActiveFlag().equals("0")) {
  598. userType.setActiveFlag("1");
  599. }
  600. List<UserType> userTList = new ArrayList<>();
  601. userTList = xUserTypeRepository.findByCode(userType.getCode());
  602. if (null != userTList && userTList.size() > 0) {
  603. envelop.setSuccessFlg(false);
  604. envelop.setErrorMsg("用户类型编码已存在!");
  605. return envelop;
  606. } else {
  607. userTList = xUserTypeRepository.findByName(userType.getName());
  608. if (null != userTList && userTList.size() > 0) {
  609. envelop.setSuccessFlg(false);
  610. envelop.setErrorMsg("用户类型名称已存在!");
  611. return envelop;
  612. }
  613. }
  614. UserType userTypeBak = userTypeService.save(userType);
  615. models.forEach(userTypeRoles -> {
  616. userTypeRoles.setTypeId(userTypeBak.getId());
  617. userTypeRoles.setTypeName(userTypeBak.getName());
  618. userTypeRoles.setId(null);
  619. xUserTypeRolesRepository.save(userTypeRoles);
  620. });
  621. }
  622. envelop.setDetailModelList(models);
  623. envelop.setSuccessFlg(true);
  624. envelop.setObj(userType);
  625. } catch (IOException e) {
  626. envelop.setSuccessFlg(false);
  627. envelop.setErrorMsg(e.getMessage());
  628. e.printStackTrace();
  629. }
  630. return envelop;
  631. }
  632. @RequestMapping(value = ServiceApi.Roles.ValidateUserType, method = RequestMethod.POST)
  633. @ApiOperation(value = "验证用户类别是否关联用户")
  634. public Envelop alidateUserType(
  635. @ApiParam(name = "userTypeId", value = "用户类型id")
  636. @RequestParam(value = "userTypeId",required = true) String userTypeId) {
  637. Envelop envelop = new Envelop();
  638. try {
  639. //失效-需要验证用户类别是否有用户使用
  640. StringBuffer stringBuffer = new StringBuffer();
  641. stringBuffer.append("activated=true;");
  642. if (!StringUtils.isEmpty(userTypeId)) {
  643. stringBuffer.append("userType=" + userTypeId + ";");
  644. }
  645. String filters=stringBuffer.toString();
  646. List<User> list = userService.search(filters);
  647. if (null != list && list.size() > 0) {
  648. envelop.setSuccessFlg(true);
  649. envelop.setDetailModelList(list);
  650. }else{
  651. //未关联用户返回空list
  652. envelop.setSuccessFlg(true);
  653. }
  654. } catch (ParseException e) {
  655. envelop.setSuccessFlg(false);
  656. envelop.setErrorMsg("查询异常"+e.getMessage());
  657. e.printStackTrace();
  658. }
  659. return envelop;
  660. }
  661. }