UserServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. package com.hz.employmentsite.services.impl;
  2. import com.hz.employmentsite.enums.DataRangeEnum;
  3. import com.hz.employmentsite.mapper.*;
  4. import com.hz.employmentsite.mapper.cquery.SysUserCQuery;
  5. import com.hz.employmentsite.model.*;
  6. import com.hz.employmentsite.services.service.UserService;
  7. import com.hz.employmentsite.services.service.system.RoleService;
  8. import com.hz.employmentsite.util.DateUtils;
  9. import com.hz.employmentsite.util.StringUtils;
  10. import com.hz.employmentsite.vo.user.DataRange;
  11. import com.hz.employmentsite.vo.user.UserEditVo;
  12. import com.hz.employmentsite.vo.user.UserInfoModel;
  13. import com.github.pagehelper.PageHelper;
  14. import com.github.pagehelper.PageInfo;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import org.springframework.util.DigestUtils;
  18. import java.util.*;
  19. import java.util.concurrent.atomic.AtomicInteger;
  20. import java.util.stream.Collectors;
  21. @Component
  22. public class UserServiceImpl implements UserService {
  23. @Autowired
  24. SysUserCQuery sysUserCQuery;
  25. @Autowired
  26. SysUserMapper sysUserMapper;
  27. @Autowired
  28. private DateUtils dateUtils;
  29. @Autowired
  30. private StringUtils stringUtils;
  31. @Autowired
  32. private SysUserDatarangeMapper sysUserDatarangeMapper;
  33. @Autowired
  34. private PcSiteUserMapper pcSiteUserMapper;
  35. @Autowired
  36. private SysUserSysRoleMapper sysUserSysRoleMapper;
  37. @Autowired
  38. private RoleService roleService;
  39. private String defaultPassword = "52653B706ADC444F6660FAB66D6DC210";//Hjy@2024
  40. private String siteRoleId = "10a12f77-0958-4220-b9ce-07b9215046f2"; //驿站工作者
  41. @Override
  42. public List<SysRole> getUserRole(String userID) {
  43. return null;
  44. }
  45. @Override
  46. public List<DataRange> getUserDataRange(String userID) {
  47. List<HashMap<String, Object>> dataRangeList = sysUserCQuery.selectUserDataRange(userID);
  48. List<String> userCompanyList = sysUserCQuery.selectUserCompany(userID);
  49. List<String> userSiteList = sysUserCQuery.selectUserSite(userID);
  50. List<String> userInstitutionList = sysUserCQuery.selectUserInstitution(userID);
  51. List<String> userRegionList = sysUserCQuery.selectUserRegion(userID);
  52. List<String> userCityList = sysUserCQuery.selectUserCity(userID);
  53. List<DataRange> result = new ArrayList<>();
  54. Map<String, List<HashMap<String, Object>>> menuGrouping = dataRangeList.stream()
  55. .collect(Collectors.groupingBy(x -> x.get("MenuNo").toString()));
  56. for (String key : menuGrouping.keySet()) {
  57. List<HashMap<String, Object>> valueList = menuGrouping.get(key);
  58. valueList.sort(Comparator.comparing(x -> ((Long) x.get("OrderNo")).intValue()));
  59. int minOrderNo = valueList.stream()
  60. .map(x -> ((Long) x.get("OrderNo")).intValue())
  61. .min(Integer::compareTo).orElse(0);
  62. for (HashMap<String, Object> value : valueList) {
  63. if (((Long) value.get("OrderNo")).intValue() == minOrderNo) {
  64. int dataRangeID = (int) value.get("DataRangeID");
  65. DataRange menuDataRange = new DataRange();
  66. menuDataRange.setMenuNo(key);
  67. menuDataRange.setRange(dataRangeID);
  68. DataRangeEnum dataRangeEnum = DataRangeEnum.getDataRangeByValue(dataRangeID);
  69. switch (dataRangeEnum) {
  70. case ALL:
  71. break;
  72. case City:
  73. menuDataRange.setRangeIDList(userCityList);
  74. break;
  75. case Region:
  76. menuDataRange.setRangeIDList(userRegionList);
  77. break;
  78. case Institution:
  79. menuDataRange.setRangeIDList(userInstitutionList);
  80. break;
  81. case Site:
  82. menuDataRange.setRangeIDList(userSiteList);
  83. break;
  84. case Company:
  85. menuDataRange.setRangeIDList(userCompanyList);
  86. break;
  87. case SELF:
  88. menuDataRange.setRangeIDList(List.of(userID));
  89. break;
  90. default:
  91. break;
  92. }
  93. result.add(menuDataRange);
  94. }
  95. }
  96. }
  97. return result;
  98. }
  99. @Override
  100. public PageInfo<HashMap<String, Object>> getUserList(int page, int rows, String name, String loginID, Integer sex, Integer recordStatus, Integer userType) {
  101. PageHelper.startPage(page, rows);
  102. List<HashMap<String, Object>> list = sysUserCQuery.selectUserList(name, loginID, sex, recordStatus, userType);
  103. PageInfo<HashMap<String, Object>> result = new PageInfo(list);
  104. return result;
  105. }
  106. @Override
  107. public int updateUserStatus(String userId, Integer status) {
  108. SysUser user = sysUserMapper.selectByPrimaryKey(userId);
  109. user.setRecordStatus(status);
  110. return sysUserMapper.updateByPrimaryKey(user);
  111. }
  112. @Override
  113. public UserInfoModel getUserInfo(String userId) {
  114. if (stringUtils.IsNullOrEmpty(userId)) {
  115. return null;
  116. } else {
  117. return sysUserCQuery.selectUserInfo(userId);
  118. }
  119. }
  120. @Override
  121. public Integer save(UserEditVo data, String userId) throws Exception {
  122. AtomicInteger result = new AtomicInteger();
  123. if (data.getUserTypeID().equals(3) && data.isAdd) {//驿站工作者
  124. if (data.getSiteUserIdList() != null && data.getSiteUserIdList().size() > 0) {
  125. PcSiteUserExample exp = new PcSiteUserExample();
  126. PcSiteUserExample.Criteria cri = exp.or();
  127. cri.andSiteUserIDIn(data.getSiteUserIdList());
  128. List<PcSiteUser> pcSiteUserList = pcSiteUserMapper.selectByExample(exp);
  129. List<String> userIdList = new ArrayList<>();
  130. pcSiteUserList.forEach(siteUser -> {
  131. SysUserExample uExp = new SysUserExample();
  132. SysUserExample.Criteria uCri = uExp.or();
  133. uCri.andLoginIDEqualTo(siteUser.getUserNo());
  134. SysUser dbUser = sysUserMapper.selectByExample(uExp).stream().findFirst().orElse(null);
  135. if (dbUser == null) {
  136. dbUser = new SysUser();
  137. dbUser.setUserID(UUID.randomUUID().toString());
  138. dbUser.setName(siteUser.getSiteUserName());
  139. dbUser.setLoginID(siteUser.getUserNo());
  140. dbUser.setPassword(data.getPassword() == null ? defaultPassword : DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
  141. dbUser.setUserTypeID(data.getUserTypeID());
  142. dbUser.setRecordStatus(data.getRecordStatus());
  143. dbUser.setCreateBy(userId);
  144. dbUser.setCreateTime(new Date());
  145. result.set(result.get() + sysUserMapper.insert(dbUser));
  146. userIdList.add(dbUser.getUserID());
  147. }
  148. siteUser.setUserID(dbUser.getUserID());
  149. pcSiteUserMapper.updateByPrimaryKey(siteUser);
  150. });
  151. roleService.saveRoleUser(siteRoleId, userIdList);
  152. }
  153. } else {
  154. SysUserExample uExp = new SysUserExample();
  155. SysUserExample.Criteria uCri = uExp.or();
  156. uCri.andLoginIDEqualTo(data.getLoginID());
  157. SysUser dbUser = sysUserMapper.selectByExample(uExp).stream().findFirst().orElse(null);
  158. if (dbUser != null && !dbUser.getUserID().equals(data.getUserID()))
  159. throw new Exception("该账号已录入系统,请勿重复录入");
  160. UserInfoModel record = getUserInfo(data.getUserID());
  161. SysUser dbData = record == null ? null : sysUserMapper.selectByPrimaryKey(record.userID);
  162. Boolean isExist = dbData != null;
  163. if (!isExist) {
  164. //添加
  165. dbData = new SysUser();
  166. dbData.setUserID(data.getUserID());
  167. dbData.setName(data.getName());
  168. dbData.setLoginID(data.getLoginID());
  169. if (data.getPassword() == null) {
  170. dbData.setPassword(defaultPassword);
  171. } else {
  172. dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
  173. }
  174. dbData.setUserTypeID(data.getUserTypeID());
  175. dbData.setRecordStatus(data.getRecordStatus());
  176. dbData.setCreateBy(userId);
  177. dbData.setCreateTime(new Date());
  178. result.set(sysUserMapper.insert(dbData));
  179. } else {
  180. //修改
  181. dbData.setName(data.getName());
  182. /*dbData.setLoginID(data.getLoginID());*/
  183. /*if (data.getPassword() == null) {
  184. dbData.setPassword(defaultPassword);
  185. } else {
  186. dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
  187. }*/
  188. /*dbData.setUserTypeID(data.getUserTypeID());*/
  189. dbData.setRecordStatus(data.getRecordStatus());
  190. dbData.setUpdateBy(userId);
  191. dbData.setUpdateTime(new Date());
  192. result.set(sysUserMapper.updateByPrimaryKey(dbData));
  193. }
  194. SysUserDatarangeExample udExp = new SysUserDatarangeExample();
  195. SysUserDatarangeExample.Criteria udCri = udExp.or();
  196. udCri.andUserIdEqualTo(data.getUserID());
  197. sysUserDatarangeMapper.deleteByExample(udExp);
  198. if (data.datarangeIdList != null) {
  199. data.datarangeIdList.forEach(datarangeId -> {
  200. SysUserDatarangeKey sysUserDatarange = new SysUserDatarangeKey();
  201. sysUserDatarange.setUserId(data.getUserID());
  202. sysUserDatarange.setDatarangeId(datarangeId);
  203. sysUserDatarangeMapper.insert(sysUserDatarange);
  204. });
  205. }
  206. }
  207. return result.get();
  208. }
  209. @Override
  210. public SysUser getIsCacheUserInfoByID(String userId) {
  211. SysUser userInfoVo = sysUserMapper.selectByPrimaryKey(userId);
  212. if (userInfoVo == null) {
  213. userInfoVo = new SysUser();
  214. userInfoVo.setName("");
  215. userInfoVo.setUserID("");
  216. }
  217. return userInfoVo;
  218. }
  219. @Override
  220. public String getRandomLoginID() {
  221. String loginID = randomLoginID();
  222. Integer count = 1; //验证次数
  223. while (count <= 3) {
  224. count--;
  225. //验证帐号是否存在
  226. if (sysUserCQuery.selectUserByLoginID(loginID).size() > 0) {
  227. loginID = randomLoginID();
  228. } else {
  229. return loginID;
  230. }
  231. }
  232. return loginID;
  233. }
  234. private String randomLoginID() {
  235. return dateUtils.dateToStrFormat(new Date(), "yyyyMMdd") + UUID.randomUUID().toString().substring(0, 4);
  236. }
  237. @Override
  238. public SysUser addUser(String loginID, String userName, Integer userTypeID, String createBy) {
  239. if (sysUserCQuery.selectUserByLoginID(loginID).size() > 0)
  240. return null;
  241. SysUser user = new SysUser();
  242. user.setUserID(UUID.randomUUID().toString());
  243. user.setLoginID(loginID);
  244. user.setName(userName);
  245. user.setUserTypeID(userTypeID);
  246. user.setRecordStatus(1);
  247. user.setCreateBy(createBy);
  248. user.setCreateTime(new Date());
  249. user.setPassword(this.defaultPassword);
  250. sysUserMapper.insert(user);
  251. return user;
  252. }
  253. @Override
  254. public Integer updateUser(String userID, String userName, String updateBy) {
  255. SysUser user = sysUserMapper.selectByPrimaryKey(userID);
  256. user.setName(userName);
  257. user.setUpdateBy(updateBy);
  258. user.setUpdateTime(new Date());
  259. return sysUserMapper.updateByPrimaryKey(user);
  260. }
  261. public Integer updatePassword(String userID, String newPassword, String updateBy) {
  262. SysUser user = sysUserMapper.selectByPrimaryKey(userID);
  263. user.setPassword(newPassword);
  264. user.setUpdateBy(updateBy);
  265. user.setUpdateTime(new Date());
  266. return sysUserMapper.updateByPrimaryKey(user);
  267. }
  268. @Override
  269. public List<SysMenu> getUserShortcutMenuList(String userID) {
  270. return sysUserCQuery.selectUserShortcutMenuList(userID);
  271. }
  272. public SysUser getUserByLoginID(String loginID) {
  273. SysUserExample exp = new SysUserExample();
  274. SysUserExample.Criteria criteria = exp.or();
  275. criteria.andLoginIDEqualTo(loginID);
  276. return sysUserMapper.selectByExample(exp).stream().findFirst().orElse(null);
  277. }
  278. /*
  279. * 添加驿站工作者
  280. * @params loginId,name
  281. */
  282. @Override
  283. public SysUser addSiteUser(String userId, String loginId, String name, String createUserId) {
  284. if (stringUtils.IsNullOrEmpty(loginId))
  285. return null;
  286. SysUser dbUserByUserId = null;
  287. SysUser dbUserByLoginId = null;
  288. if (!stringUtils.IsNullOrEmpty(userId)) {
  289. dbUserByUserId = sysUserMapper.selectByPrimaryKey(userId);
  290. }
  291. if (!stringUtils.IsNullOrEmpty(loginId)) {
  292. SysUserExample uExp = new SysUserExample();
  293. SysUserExample.Criteria uCri = uExp.or();
  294. uCri.andLoginIDEqualTo(loginId);
  295. dbUserByLoginId = sysUserMapper.selectByExample(uExp).stream().findFirst().orElse(null);
  296. }
  297. if (dbUserByUserId != null && dbUserByLoginId != null && !dbUserByUserId.getUserID().equals(dbUserByLoginId.getUserID())) {
  298. return null;
  299. }
  300. SysUser dbData = dbUserByUserId != null ? dbUserByUserId : dbUserByLoginId;
  301. if (dbData == null) {
  302. dbData = new SysUser();
  303. dbData.setUserID(UUID.randomUUID().toString());
  304. dbData.setName(name);
  305. dbData.setLoginID(loginId);
  306. dbData.setPassword(defaultPassword);
  307. dbData.setUserTypeID(3);
  308. dbData.setRecordStatus(1);
  309. dbData.setCreateBy(createUserId);
  310. dbData.setCreateTime(new Date());
  311. sysUserMapper.insert(dbData);
  312. } else {
  313. dbData.setName(name);
  314. dbData.setLoginID(loginId);
  315. dbData.setUpdateBy(createUserId);
  316. dbData.setUpdateTime(new Date());
  317. sysUserMapper.updateByPrimaryKey(dbData);
  318. }
  319. roleService.saveRoleUser(siteRoleId, Arrays.asList(dbData.getUserID()));
  320. return dbData;
  321. }
  322. }