package com.hz.employmentsite.services.impl; import com.hz.employmentsite.enums.DataRangeEnum; import com.hz.employmentsite.mapper.*; import com.hz.employmentsite.mapper.cquery.SysUserCQuery; import com.hz.employmentsite.model.*; import com.hz.employmentsite.services.service.UserService; import com.hz.employmentsite.util.DateUtils; import com.hz.employmentsite.util.StringUtils; import com.hz.employmentsite.vo.user.DataRange; import com.hz.employmentsite.vo.user.UserInfoModel; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.DigestUtils; import java.util.*; import java.util.stream.Collectors; @Component public class UserServiceImpl implements UserService { @Autowired SysUserCQuery sysUserCQuery; @Autowired SysUserMapper sysUserMapper; @Autowired private DateUtils dateUtils; @Autowired private StringUtils stringUtils; private String defaultPassword = "52653B706ADC444F6660FAB66D6DC210";//Hjy@2024 @Override public List getUserRole(String userID) { return null; } @Override public List getUserDataRange(String userID) { List> dataRangeList = sysUserCQuery.selectUserDataRange(userID); List userCompanyList = sysUserCQuery.selectUserCompany(userID); List userSiteList = sysUserCQuery.selectUserSite(userID); List userInstitutionList = sysUserCQuery.selectUserInstitution(userID); List userRegionList = sysUserCQuery.selectUserRegion(userID); List userCityList = sysUserCQuery.selectUserCity(userID); List result = new ArrayList<>(); Map>> menuGrouping = dataRangeList.stream() .collect(Collectors.groupingBy(x -> x.get("MenuNo").toString())); for (String key : menuGrouping.keySet()) { List> valueList = menuGrouping.get(key); valueList.sort(Comparator.comparing(x -> ((Long) x.get("OrderNo")).intValue())); int minOrderNo = valueList.stream() .map(x -> ((Long) x.get("OrderNo")).intValue()) .min(Integer::compareTo).orElse(0); for (HashMap value : valueList) { if (((Long) value.get("OrderNo")).intValue() == minOrderNo) { int dataRangeID = (int) value.get("DataRangeID"); DataRange menuDataRange = new DataRange(); menuDataRange.setMenuNo(key); menuDataRange.setRange(dataRangeID); DataRangeEnum dataRangeEnum = DataRangeEnum.getDataRangeByValue(dataRangeID); switch (dataRangeEnum) { case ALL: break; case City: menuDataRange.setRangeIDList(userCityList); break; case Region: menuDataRange.setRangeIDList(userRegionList); break; case Institution: menuDataRange.setRangeIDList(userInstitutionList); break; case Site: menuDataRange.setRangeIDList(userSiteList); break; case Company: menuDataRange.setRangeIDList(userCompanyList); break; case SELF: menuDataRange.setRangeIDList(List.of(userID)); break; default: break; } result.add(menuDataRange); } } } return result; } @Override public PageInfo> getUserList(int page, int rows, String name, String loginID, Integer sex, Integer recordStatus, Integer userType) { PageHelper.startPage(page, rows); List> list = sysUserCQuery.selectUserList(name, loginID, sex, recordStatus, userType); PageInfo> result = new PageInfo(list); return result; } @Override public int updateUserStatus(String userId, Integer status) { SysUser user = sysUserMapper.selectByPrimaryKey(userId); user.setRecordStatus(status); return sysUserMapper.updateByPrimaryKey(user); } @Override public UserInfoModel getUserInfo(String userId) { if (stringUtils.IsNullOrEmpty(userId)) { return null; }else{ return sysUserCQuery.selectUserInfo(userId); } } @Override public Integer save(SysUser data, String userId) { int result = 0; UserInfoModel record = getUserInfo(data.getUserID()); SysUser dbData = record == null ? null : sysUserMapper.selectByPrimaryKey(record.userID); Boolean isExist = dbData != null; if (!isExist) { //添加 dbData = new SysUser(); dbData.setUserID(data.getUserID()); dbData.setName(data.getName()); dbData.setLoginID(data.getLoginID()); if(data.getPassword()==null){ dbData.setPassword(defaultPassword); }else{ dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase()); } dbData.setUserTypeID(data.getUserTypeID()); dbData.setRecordStatus(data.getRecordStatus()); dbData.setCreateBy(userId); dbData.setCreateTime(new Date()); result = sysUserMapper.insert(dbData); } else { //修改 dbData.setName(data.getName()); dbData.setLoginID(data.getLoginID()); if(data.getPassword()==null){ dbData.setPassword(defaultPassword); }else{ dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase()); } dbData.setUserTypeID(data.getUserTypeID()); dbData.setRecordStatus(data.getRecordStatus()); dbData.setUpdateBy(userId); dbData.setUpdateTime(new Date()); result = sysUserMapper.updateByPrimaryKey(dbData); } return result; } @Override public SysUser getIsCacheUserInfoByID(String userId) { SysUser userInfoVo = sysUserMapper.selectByPrimaryKey(userId); if (userInfoVo == null) { userInfoVo = new SysUser(); userInfoVo.setName(""); userInfoVo.setUserID(""); } return userInfoVo; } @Override public String getRandomLoginID() { String loginID = randomLoginID(); Integer count = 1; //验证次数 while (count <= 3) { count--; //验证帐号是否存在 if (sysUserCQuery.selectUserByLoginID(loginID).size() > 0) { loginID = randomLoginID(); } else { return loginID; } } return loginID; } private String randomLoginID() { return dateUtils.dateToStrFormat(new Date(), "yyyyMMdd") + UUID.randomUUID().toString().substring(0, 4); } @Override public SysUser addUser(String loginID, String userName, Integer userTypeID, String createBy) { if (sysUserCQuery.selectUserByLoginID(loginID).size() > 0) return null; SysUser user = new SysUser(); user.setUserID(UUID.randomUUID().toString()); user.setLoginID(loginID); user.setName(userName); user.setUserTypeID(userTypeID); user.setRecordStatus(1); user.setCreateBy(createBy); user.setCreateTime(new Date()); user.setPassword(this.defaultPassword); sysUserMapper.insert(user); return user; } @Override public Integer updateUser(String userID, String userName, String updateBy) { SysUser user = sysUserMapper.selectByPrimaryKey(userID); user.setName(userName); user.setUpdateBy(updateBy); user.setUpdateTime(new Date()); return sysUserMapper.updateByPrimaryKey(user); } public Integer updatePassword(String userID, String newPassword, String updateBy) { SysUser user = sysUserMapper.selectByPrimaryKey(userID); user.setPassword(newPassword); user.setUpdateBy(updateBy); user.setUpdateTime(new Date()); return sysUserMapper.updateByPrimaryKey(user); } @Override public List getUserShortcutMenuList(String userID) { return sysUserCQuery.selectUserShortcutMenuList(userID); } public SysUser getUserByLoginID(String loginID) { SysUserExample exp = new SysUserExample(); SysUserExample.Criteria criteria = exp.or(); criteria.andLoginIDEqualTo(loginID); return sysUserMapper.selectByExample(exp).stream().findFirst().orElse(null); } }