广州市综治平台后端
xusd
2 days ago e9de6064cc94d6bc63685c5e62046ff810b96dab
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
@@ -1,6 +1,5 @@
package cn.huge.module.ctuser.service;
import cn.huge.base.common.bo.R;
import cn.huge.base.common.bo.ReturnBO;
import cn.huge.base.common.exception.ServiceException;
import cn.huge.base.common.utils.*;
@@ -10,32 +9,27 @@
import cn.huge.module.ctuser.domain.po.*;
import cn.huge.module.ctuser.dto.*;
import cn.huge.module.cust.constant.UserBaseConsts;
import cn.huge.module.rsoper.domain.po.RsRole;
import cn.huge.module.sys.dto.GridTokenBaseDTO;
import cn.huge.module.sys.dto.GridUserBaseDTO;
import cn.huge.module.sys.dto.GridUserRoleDTO;
import cn.huge.module.sys.vo.GridRoleMenuVo;
import cn.huge.module.sys.vo.GridUserRoleVo;
import cn.huge.module.utils.JwtUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * @author liyj
@@ -204,7 +198,7 @@
    public Boolean checkCredential(String cipher, CtAccount ctAccount) {
        String credentialMd5 = DigestUtils.md5DigestAsHex(cipher.getBytes());
        log.info("xsd:{}", credentialMd5);
        if (StringUtils.equals(credentialMd5, ctAccount.getCipher())) {
        if (StringUtils.equals(cipher, ctAccount.getCipher())) {
            return true;
        } else {
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -238,9 +232,9 @@
            // 判断账号是否存在
            CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1);
            if (ObjectUtils.isNotEmpty(ctAccount)) {
                Date nowDate = new Date();
                // 判断账号是否被锁定
                if (ObjectUtils.isNotEmpty(ctAccount.getLimitTime())) {
                    Date nowDate = new Date();
                    if (nowDate.before(ctAccount.getLimitTime())) {
                        SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分");
                        return ReturnFailUtils.getRepInfo("账号已锁定,请于" + sdf.format(ctAccount.getLimitTime()) + "后重试,或者请联系管理员解锁!");
@@ -248,6 +242,13 @@
                }
                // 判断密码是否正确
                if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) {
                    // 密码正确:重置错误次数
                    UpdateWrapper<CtAccount> resetPwdErr = new UpdateWrapper<>();
                    resetPwdErr.set("pwd_error_count", 0)
                            .set("limit_time", null)
                            .set("login_time", DateUtils.getNowDate())
                            .eq("id", ctAccount.getId());
                    this.update(resetPwdErr);
                    //返回结果
                    UserLoginDTO userLoginDTO = new UserLoginDTO();
                    CtUser ctUser = ctUserService.getById(ctAccount.getUserId());
@@ -265,7 +266,8 @@
                    CtUnit ctUnit = ctUnitService.getById(ctUser.getUnitId());
                    if (ObjectUtils.isNotEmpty(ctUnit)) {
                        if (ctUnit.getUnitGrade() == UserBaseConsts.UNIT_GRADE_3 && ctUnit.getUnitType() == UserBaseConsts.UNIT_TYPE_102) {
                            userLoginDTO.setUnit(ctUnit.getUnitDes());
                            userLoginDTO.setUnit(ctUnit.getUnitName());
                            userLoginDTO.setUnitType(ctUnit.getUnitType());
//                            CtUnit parentCtUnit = ctUnitService.getById(ctUnit.getParentId());
//                            if (ObjectUtils.isNotEmpty(parentCtUnit)) {1
//                                userLoginDTO.setUnit(parentCtUnit.getUnitName());
@@ -274,6 +276,7 @@
//                            }
                        } else {
                            userLoginDTO.setUnit(ctUnit.getUnitName());
                            userLoginDTO.setUnitType(ctUnit.getUnitType());
                        }
                    } else {
                        userLoginDTO.setUnit(ctUser.getUnitName());
@@ -308,7 +311,25 @@
                    this.update(accountUpdateWrapper);
                    return ReturnSucUtils.getRepInfo(userLoginDTO);
                } else {
                    return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
                    // 密码错误:增加错误次数,必要时冻结
                    int currentErrCount = ctAccount.getPwdErrorCount() == null ? 0 : ctAccount.getPwdErrorCount();
                    currentErrCount++;
                    UpdateWrapper<CtAccount> updateWrapper = new UpdateWrapper<>();
                    updateWrapper.set("pwd_error_count", currentErrCount).eq("id", ctAccount.getId());
                    if (currentErrCount >= 5) {
                        // 冻结5分钟
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(nowDate);
                        cal.add(Calendar.MINUTE, 5);
                        updateWrapper.set("limit_time", cal.getTime());
                        this.update(updateWrapper);
                        return ReturnFailUtils.getRepInfo("密码错误已达5次,账号已锁定5分钟,请稍后再试!");
                    } else {
                        this.update(updateWrapper);
                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!(" + currentErrCount + "/5)");
                    }
                }
            } else {
                return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
@@ -498,8 +519,10 @@
                CtUnit ctUnit = ctUnitService.selectUnitByGridId(userRoleDTO.getOrgId());
                if (ctUnit != null) {
                    userLoginDTO.setUnit(ctUnit.getUnitName());
                    userLoginDTO.setUnitType(ctUnit.getUnitType());
                    ctUser.setUnitName(ctUnit.getUnitName());
                    ctUser.setUnitId(ctUnit.getId());
                    ctUserService.updateCtUser(ctUser);
                } else {
                    int grade = userRoleDTO.getGrade() - 1;
@@ -581,6 +604,7 @@
                    log.info("xsdctUnit:{}", ctUnit);
                    ctUnitService.saveCtUnit(ctUnit);
                    userLoginDTO.setUnit(ctUnit.getUnitName());
                    userLoginDTO.setUnitType(ctUnit.getUnitType());
                    ctUser.setUnitName(ctUnit.getUnitName());
                    ctUser.setUnitId(ctUnit.getId());
                    ctUserService.updateCtUser(ctUser);
@@ -629,7 +653,7 @@
        } else if (parts.length >= 4) {
            return parts[0] + parts[1] + parts[2] + "-" + parts[3];
        } else if (parts.length >= 5) {
            return parts[0] + parts[1] + parts[2] + "-" + parts[3]+"-" + parts[4];
            return parts[0] + parts[1] + parts[2] + "-" + parts[3] + "-" + parts[4];
        } else {
            return input; // 或抛出异常
        }
@@ -642,6 +666,10 @@
        userLoginDTO.setUserId(ctUser.getId());
        userLoginDTO.setTrueName(ctUser.getTrueName());
        userLoginDTO.setUnit(ctUser.getUnitName());
        CtUnit byId = ctUnitService.getById(ctUser.getUnitId());
        if (byId != null) {
            userLoginDTO.setUnitType(byId.getUnitType());
        }
        userLoginDTO.setDept(ctUser.getDeptName());
        userLoginDTO.setPhone(ctUser.getMobile());
        userLoginDTO.setCustId(ctUser.getCustId());
@@ -677,7 +705,7 @@
        GridUserRoleVo gridUserRoleVo = new GridUserRoleVo();
        gridUserRoleVo.setUserId(userId);
        GridUserRoleDTO userRoleDTO = sysClient.getUserRoleList(gridUserRoleVo);
        if (StringUtils.isEmpty(userRoleDTO.getRoleName()) || !userRoleDTO.getRoleName().contains("(M)")) {
        if (StringUtils.isEmpty(userRoleDTO.getRoleName()) || (!userRoleDTO.getRoleName().contains("(M)") && !userRoleDTO.getRoleName().contains("领导") && !userRoleDTO.getRoleName().contains("调度干部"))) {
            return ReturnFailUtils.getRepInfo("该用户没有矛调系统的权限");
        }
        CtUserole ctUserole = new CtUserole();
@@ -733,7 +761,7 @@
            switch (grade) {
                case 1:
                    //市级级
                    ctUnit.setLevel(grade );
                    ctUnit.setLevel(grade);
                    ctUnit.setUnitGrade(grade);
                    ctUnit.setUnitType(UserBaseConsts.UNIT_TYPE_102);
                    ctUnit.setParentId("2024000000000001");