package com.ruoyi.system.service.impl; import java.sql.SQLException; import java.sql.SQLIntegrityConstraintViolationException; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; import javax.validation.Validator; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.enums.UserRolesType; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.project.bo.ProjectStaffRecordInput; import com.ruoyi.project.bo.ProjectStaffRecordOut; import com.ruoyi.project.domain.ProjectStaff; import com.ruoyi.project.domain.ProjectStaffRecord; import com.ruoyi.project.domain.ProjectTask; import com.ruoyi.project.mapper.ProjectStaffMapper; import com.ruoyi.project.mapper.ProjectStaffRecordMapper; import com.ruoyi.project.mapper.ProjectTaskMapper; import com.ruoyi.project.service.ProjectStaffRecordService; import com.ruoyi.system.domain.*; import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.weChat.service.WeChatService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; /** * 用户 业务层处理 * */ @Service public class SysUserServiceImpl implements ISysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @Autowired private SysUserMapper userMapper; @Autowired private SysRoleMapper roleMapper; @Autowired private SysPostMapper postMapper; @Autowired private SysUserRoleMapper userRoleMapper; @Autowired private SysUserPostMapper userPostMapper; @Autowired private ISysConfigService configService; @Autowired private ISysDeptService deptService; @Autowired private WeChatService weChatService; @Autowired protected Validator validator; @Autowired private ProjectStaffMapper projectStaffMapper; @Autowired private ProjectStaffRecordMapper projectStaffRecordMapper; @Autowired private ProjectTaskMapper projectTaskMapper; @Autowired private UserRecordMapper userRecordMapper; @Autowired private ProjectStaffRecordService projectStaffRecordService; /** * 根据条件分页查询用户列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectUserList(SysUser user) { Long companyId = deptService.selectCompanyByDeptId(); if (companyId!=null)user.setCompanyId(companyId); return userMapper.selectUserList(user); } /** * 根据条件分页查询已分配用户角色列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectAllocatedList(SysUser user) { return userMapper.selectAllocatedList(user); } /** * 根据条件分页查询未分配用户角色列表 * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") public List selectUnallocatedList(SysUser user) { return userMapper.selectUnallocatedList(user); } /** * 通过用户名查询用户 * * @param userName 用户名 * @return 用户对象信息 */ @Override public SysUser selectUserByUserName(String userName) { return userMapper.selectUserByUserName(userName); } /** * 通过用户ID查询用户 * * @param userId 用户ID * @return 用户对象信息 */ @Override public SysUser selectUserById(Long userId) { return userMapper.selectUserById(userId); } /** * 查询用户所属角色组 * * @param userName 用户名 * @return 结果 */ @Override public String selectUserRoleGroup(String userName) { List list = roleMapper.selectRolesByUserName(userName); if (CollectionUtils.isEmpty(list)) { return StringUtils.EMPTY; } return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); } /** * 查询用户所属岗位组 * * @param userName 用户名 * @return 结果 */ @Override public String selectUserPostGroup(String userName) { List list = postMapper.selectPostsByUserName(userName); if (CollectionUtils.isEmpty(list)) { return StringUtils.EMPTY; } return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); } /** * 校验用户名称是否唯一 * * @param user 用户信息 * @return 结果 */ @Override public boolean checkUserNameUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkUserNameUnique(user.getUserName()); if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } /** * 校验手机号码是否唯一 * * @param user 用户信息 * @return */ @Override public boolean checkPhoneUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } /** * 校验email是否唯一 * * @param user 用户信息 * @return */ @Override public boolean checkEmailUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkEmailUnique(user.getEmail()); if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; } /** * 校验用户是否允许操作 * * @param user 用户信息 */ @Override public void checkUserAllowed(SysUser user) { if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) { throw new ServiceException("不允许操作超级管理员用户"); } } /** * 校验用户是否有数据权限 * * @param userId 用户id */ @Override public void checkUserDataScope(Long userId) { if (!SysUser.isAdmin(SecurityUtils.getUserId())) { SysUser user = new SysUser(); user.setUserId(userId); List users = SpringUtils.getAopProxy(this).selectUserList(user); if (StringUtils.isEmpty(users)) { throw new ServiceException("没有权限访问用户数据!"); } } } /** * 新增保存用户信息 * * @param user 用户信息 * @return 结果 */ @Override @Transactional public int insertUser(SysUser user) { // 新增用户信息 int rows = userMapper.insertUser(user); // 新增用户岗位关联 insertUserPost(user); // 新增用户与角色管理 insertUserRole(user); return rows; } /** * 注册用户信息 * * @param user 用户信息 * @return 结果 */ @Override public boolean registerUser(SysUser user) { return userMapper.insertUser(user) > 0; } /** * 修改保存用户信息 * * @param user 用户信息 * @return 结果 */ @Override @Transactional public int updateUser(SysUser user) { Long userId = user.getUserId(); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 新增用户与角色管理 insertUserRole(user); // 删除用户与岗位关联 userPostMapper.deleteUserPostByUserId(userId); // 新增用户与岗位管理 insertUserPost(user); //修改关联名称 updateUserName(user); return userMapper.updateUser(user); } private void updateUserName(SysUser user) { SysUser sysUser = userMapper.selectUserById(user.getUserId()); if (!sysUser.getNickName().equals(user.getNickName())){ //修改所有名字 projectStaffMapper.updateNameByAid(user); projectStaffRecordMapper.updateNameByAid(user); projectTaskMapper.updateAdminNameByAid(user); List projectStaffs = projectStaffMapper.selectByAid(user.getUserId()); for (ProjectStaff projectStaff : projectStaffs) { projectTaskMapper.updateStaffName(projectStaff.getPid()); } } } /** * 用户授权角色 * * @param userId 用户ID * @param roleIds 角色组 */ @Override @Transactional public void insertUserAuth(Long userId, Long[] roleIds) { userRoleMapper.deleteUserRoleByUserId(userId); insertUserRole(userId, roleIds); } /** * 修改用户状态 * * @param user 用户信息 * @return 结果 */ @Override public int updateUserStatus(SysUser user) { return userMapper.updateUser(user); } /** * 修改用户基本信息 * * @param user 用户信息 * @return 结果 */ @Override public int updateUserProfile(SysUser user) { return userMapper.updateUser(user); } /** * 修改用户头像 * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 */ @Override public boolean updateUserAvatar(String userName, String avatar) { return userMapper.updateUserAvatar(userName, avatar) > 0; } /** * 重置用户密码 * * @param user 用户信息 * @return 结果 */ @Override public int resetPwd(SysUser user) { return userMapper.updateUser(user); } /** * 重置用户密码 * * @param userName 用户名 * @param password 密码 * @return 结果 */ @Override public int resetUserPwd(String userName, String password) { return userMapper.resetUserPwd(userName, password); } /** * 新增用户角色信息 * * @param user 用户对象 */ public void insertUserRole(SysUser user) { this.insertUserRole(user.getUserId(), user.getRoleIds()); } /** * 新增用户岗位信息 * * @param user 用户对象 */ public void insertUserPost(SysUser user) { Long[] posts = user.getPostIds(); if (StringUtils.isNotEmpty(posts)) { // 新增用户与岗位管理 List list = new ArrayList(posts.length); for (Long postId : posts) { SysUserPost up = new SysUserPost(); up.setUserId(user.getUserId()); up.setPostId(postId); list.add(up); } userPostMapper.batchUserPost(list); } } /** * 新增用户角色信息 * * @param userId 用户ID * @param roleIds 角色组 */ public void insertUserRole(Long userId, Long[] roleIds) { if (StringUtils.isNotEmpty(roleIds)) { // 新增用户与角色管理 List list = new ArrayList(roleIds.length); for (Long roleId : roleIds) { SysUserRole ur = new SysUserRole(); ur.setUserId(userId); ur.setRoleId(roleId); list.add(ur); } userRoleMapper.batchUserRole(list); } } /** * 通过用户ID删除用户 * * @param userId 用户ID * @return 结果 */ @Override @Transactional public int deleteUserById(Long userId) { // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 删除用户与岗位表 userPostMapper.deleteUserPostByUserId(userId); return userMapper.deleteUserById(userId); } /** * 批量删除用户信息 * * @param userIds 需要删除的用户ID * @return 结果 */ @Override @Transactional public int deleteUserByIds(Long[] userIds) { for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); checkUserDataScope(userId); } // 删除用户与角色关联 userRoleMapper.deleteUserRole(userIds); // 删除用户与岗位关联 userPostMapper.deleteUserPost(userIds); return userMapper.deleteUserByIds(userIds); } /** * 导入用户数据 * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 * @return 结果 */ @Override public String importUser(List userList, Boolean isUpdateSupport, String operName) { if (StringUtils.isNull(userList) || userList.size() == 0) { throw new ServiceException("导入用户数据不能为空!"); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); String password = configService.selectConfigByKey("sys.user.initPassword"); Long company = deptService.selectCompanyByDeptId(); for (SysUser user : userList) { try { if (StringUtils.isEmpty(user.getDeptName())){ throw new ServiceException("部门数据异常"); } if (StringUtils.isEmpty(user.getFullJob())){ throw new ServiceException("全职/兼职数据异常"); } // 验证是否存在这个用户 SysUser u = userMapper.checkJobNumber(user.getJobNumber(),company); if (StringUtils.isNull(u)){ SysUser sysUser1 = userMapper.selectUserByUserName(user.getUserName()); if (sysUser1 != null){ throw new ServiceException("用户名(账号)已存在"); } user.setPassword(SecurityUtils.encryptPassword(password)); user.setCreateBy(operName); user.setUserId(null); if (user.getSuperiorName()!=null){ SysUser sysUser = userMapper.selectByNikeName(user.getSuperiorName(),company); if (sysUser != null){ user.setSuperiorId(sysUser.getUserId()); } } if (user.getDeptName()!=null){ SysDept sysDept = deptService.selectByDepName(user.getDeptName(), company); if (sysDept ==null){ throw new ServiceException("部门数据异常,找不到部门"); }else { user.setDeptId(sysDept.getDeptId()); } } userMapper.insertUser(user); if (user.getRoleName()!=null){ SysRole sysRole = roleMapper.selectByRoleName(user.getRoleName()); if (sysRole !=null){ List list=new ArrayList<>(); SysUserRole sur = new SysUserRole(); sur.setUserId(user.getUserId()); sur.setRoleId(sysRole.getRoleId()); list.add(sur); userRoleMapper.batchUserRole(list); } } successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); } else if (isUpdateSupport) { // BeanValidators.validateWithException(validator, user); checkUserAllowed(u); checkUserDataScope(u.getUserId()); user.setUserId(u.getUserId()); user.setUpdateBy(operName); if (user.getSuperiorName()!=null&&!user.getSuperiorName().equals(u.getSuperiorName())){ SysUser sysUser = userMapper.selectByNikeName(user.getSuperiorName(),company); if (sysUser != null){ user.setSuperiorId(sysUser.getUserId()); } } if (user.getDeptName()!=null&&!user.getDeptName().equals(u.getDeptName())){ SysDept sysDept = deptService.selectByDepName(user.getDeptName(), company); if (sysDept ==null){ throw new ServiceException("部门数据异常,找不到部门"); }else { user.setDeptId(sysDept.getDeptId()); } } if (user.getRoleName()!=null&&!user.getRoleName().equals(u.getRoleName())){ SysRole sysRole = roleMapper.selectByRoleName(user.getRoleName()); if (sysRole !=null){ userRoleMapper.deleteUserRoleByUserId(user.getUserId()); List list=new ArrayList<>(); SysUserRole sur = new SysUserRole(); sur.setUserId(user.getUserId()); sur.setRoleId(sysRole.getRoleId()); list.add(sur); userRoleMapper.batchUserRole(list); } } userMapper.updateUser(user); successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); } else { failureNum++; failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; if (e instanceof ServiceException){ failureMsg.append(msg + e.getMessage()); }else if (e instanceof SQLException){ failureMsg.append("数据异常"); } log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } @Override public Object selectName(String name,Integer type){ if (name==null||name.length()<2)return new ArrayList<>(); Long roleId=null; if (type==null)type=0; if (type==0)roleId= UserRolesType.COMMON.getCode(); else if (type==1)roleId=UserRolesType.MANAGE.getCode(); if (SecurityUtils.isSuperAdmin()){ roleId=UserRolesType.ADMIN.getCode();; } Long companyId = deptService.selectCompanyByDeptId(); return userMapper.selectName(name,roleId,companyId); } @Override public String setOpenId(String code) { System.out.println(code); String openId = weChatService.getOpenId(code); SysUser user = new SysUser(); user.setUserId(SecurityUtils.getUserId()); user.setOpenId(openId); userMapper.updateUser(user); return openId; } @Override public boolean checkJobNumber(SysUser user) { Long companyId = getCompany(user.getDeptId()); log.debug("company="+companyId); SysUser sysUser = userMapper.checkJobNumber(user.getJobNumber(),companyId); if (sysUser==null){ return false; }else if (StringUtils.isNotNull(user.getUserId())&&user.getUserId().equals(sysUser.getUserId())){ return false; } return true; } @Override public boolean checkProject(Long[] userIds) { for (Long userId : userIds) { int i = userMapper.selectParticipateProjectSum(userId); if (i>0){ return true; } } return false; } private Long getCompany(Long deptId) { log.debug("depID="+deptId); SysDept sysDept = deptService.selectDeptById(deptId); String ancestors = sysDept.getAncestors(); log.debug("anc="+ancestors); String[] split = ancestors.split(","); if (split.length>2)return Long.valueOf(split[2]); else return deptId; } @Override public void pushUserClock(List> maps) { List list=new ArrayList<>(); int month =0; int year =0; int days=0; Map hand=new HashMap<>(); String startClockTime=null; String endClockTime=null; if (!maps.isEmpty()){ for (int i = 0; i < maps.size(); i++) { //获取头部 if (i==0){ Map map = maps.get(i); String head = map.get(0); int i1 = head.indexOf(":")+1; int i2 = head.indexOf("至"); startClockTime = head.substring(i1, i2).trim(); endClockTime = head.substring(i2+1).trim(); LocalDate date = LocalDate.parse(startClockTime, DateTimeFormatter.ISO_DATE); month=date.getMonthValue(); year = date.getYear(); }else if (i==2){ hand=maps.get(2); }else { Map map = maps.get(i); UserClockDtails userClockDtails=new UserClockDtails(); //每一条是一个人的当月打卡 for (int j = 0; j < map.size(); j++) { String s = map.get(j); if (j==0)userClockDtails.setName(s); else if (j==1)userClockDtails.setGroupName(s.replace("\n","-").replace(" ","")); else if (j==2)userClockDtails.setDepName(s.replace("\n","-")); else if (j==3)userClockDtails.setJobNumber(s); else if (j==4)userClockDtails.setPosition(s); else if (j==5)userClockDtails.setUserId(s); //前5为基本信息,后面则是打卡信息 else { UserClockDtails newUserlock=new UserClockDtails(userClockDtails); if(StringUtils.isNotEmpty(s)){ String[] split = s.split("\n"); if (split.length==1){ newUserlock.setStauts(1); } String regex = "\\d+"; if (hand.get(j).matches(regex)){ days=Integer.parseInt(hand.get(j)); }else { days++; } newUserlock.setClockDate(s); newUserlock.setClockTime(LocalDate.of(year,month,days)); int startHour = Integer.parseInt(getTime(split[0].split(":")[0])); int startMinute = Integer.parseInt(getTime(split[0].split(":")[1])); LocalDateTime startTime=LocalDateTime.of(year,month,days,startHour,startMinute); newUserlock.setStartTime(startTime); if (newUserlock.getStauts()==0){ int endHour = Integer.parseInt(getTime(split[split.length - 1].split(":")[0])); int endMinute = Integer.parseInt(getTime(split[split.length - 1].split(":")[1])); LocalDateTime endTime=LocalDateTime.of(year,month,days,endHour,endMinute); newUserlock.setEndTime(endTime); Double hours = getHuors(startTime, endTime); newUserlock.setDuration(hours); }else { newUserlock.setDuration(0.0); } list.add(newUserlock); } } } } } } List userRecordList = new ArrayList<>(); for (UserClockDtails e:list){ Long ddUserId = Long.valueOf(e.getUserId()); List projectStaffRecords = projectStaffRecordMapper.selectByDDUidAndTime(ddUserId, e.getClockTime()); UserRecordOut ur=new UserRecordOut(); ur.setName(e.getName()); ur.setDdUserId(Long.valueOf(e.getUserId())); ur.setCheckDuration(e.getDuration()); ur.setSumDuration(e.getDuration()); ur.setContent(e.getClockDate()); ur.setStartTime(Date.from(e.getStartTime().atZone(ZoneId.systemDefault()).toInstant())); if (e.getEndTime() != null){ ur.setEndTime(Date.from(e.getEndTime().atZone(ZoneId.systemDefault()).toInstant())); ur.setStatus(0); }else { ur.setStatus(1); } ur.setRecordTime(Date.from(e.getClockTime().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); if (projectStaffRecords.isEmpty()){ ur.setClockStatus(2); }else if (projectStaffRecords.size()==1){ ur.setClockStatus(0); ur.setPsrId(projectStaffRecords.get(0).getId()); }else if (projectStaffRecords.size()>1){ ur.setClockStatus(1); ur.setList(projectStaffRecords); } ur.setCreateId(SecurityUtils.getUserId()); userRecordList.add(ur); } if (!userRecordList.isEmpty()){ for (UserRecordOut userRecordOut : userRecordList) { userRecordMapper.insertSelective(userRecordOut); } } } @Override public List selectUserClock(selectUserClockInput in) { in.setUserId(SecurityUtils.getUserId()); return userRecordMapper.selectUserClock(in); } private String getTime(String s) { return s.replace("外勤","").trim(); } private Double getHuors(LocalDateTime startTime, LocalDateTime endTime) { //打卡时间处理 if (startTime.getHour()<=8&&startTime.getMinute()<30){ startTime=startTime.withHour(8); startTime=startTime.withMinute(30); }else if (startTime.getHour()>8&&startTime.getMinute()>30){ startTime=startTime.withMinute(startTime.getHour()+1); startTime=startTime.withMinute(0); }else if (startTime.getHour()>8&&startTime.getMinute()<30){ startTime=startTime.withMinute(30); } if (endTime.getHour()<18 &&endTime.getMinute()<30){ endTime=endTime.withMinute(0); }else if (endTime.getHour()>=18&&endTime.getMinute()<30){ endTime=endTime.withMinute(0); }else if (endTime.getHour()>=18&&endTime.getMinute()>30){ endTime=endTime.withMinute(30); } Duration duration = Duration.between(startTime, endTime); long minutes = duration.toMinutes(); long l = minutes / 30; double l1 = (double) (l / 2); long l2 = l % 2; if (l2==1){ l1+=0.5; } //在12点之前 if (startTime.getHour()<13&&endTime.getHour()>13&&endTime.getHour()<18){ l1=l1-1.5; }else if (startTime.getHour()<13&&endTime.getHour()>17){ l1=l1-2; }else if (startTime.getHour()>=13&&endTime.getHour()>17){ l1=l1-0.5; } return l1; } @Override public UserRecordOut UserClockDetails(Long id) { UserRecord userRecord = userRecordMapper.selectByPrimaryKey(id); UserRecordOut out=new UserRecordOut(); BeanUtils.copyProperties(userRecord, out); LocalDate localDate =userRecord.getRecordTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); List projectStaffRecords = projectStaffRecordMapper.selectByDDUidAndTime(out.getDdUserId(), localDate); out.setList(projectStaffRecords); return out; } @Override public void updateAllUserClock(Integer type) { userRecordMapper.updateTypeDuration(SecurityUtils.getUserId(),type); } @Override public void updateUserClockDetails(UserClockDetailsInput in) { for (ProjectStaffRecord projectStaffRecord : in.getList()) { projectStaffRecordMapper.updateByPrimaryKeySelective(projectStaffRecord); } UserRecord ur =new UserRecord(); ur.setId(in.getId()); ur.setStatus(2); userRecordMapper.updateByPrimaryKeySelective(ur); } @Override public void updateUserRecord(UserRecord in) { UserRecord ur=new UserRecord(); ur.setId(in.getId()); ur.setCheckDuration(in.getCheckDuration()); ur.setStatus(2); userRecordMapper.updateByPrimaryKeySelective(ur); } @Override public void userRecordMerge() { Long userId = SecurityUtils.getUserId(); //合并到打卡表 userRecordMapper.userRecordMerge(userId); //清楚考勤合并数据 userRecordMapper.deleteByUserId(userId); } @Override public AjaxResult userRecordMergeCheck() { Long userId = SecurityUtils.getUserId(); int i = userRecordMapper.checkUserRecord(userId,1); if (i>0){ return AjaxResult.error("当前用户存在缺卡的考勤,请处理后再提交"); } int x = userRecordMapper.checkClockUserRecord(userId); if (x>0){ return AjaxResult.error("当前用户存的考勤存在多打卡,请处理后再提交"); } return AjaxResult.success(); } }