jiangping
2024-05-29 76a7156b6908bf4b0a3d0b2ee18ceefacb510383
Merge remote-tracking branch 'origin/master'
已修改12个文件
149 ■■■■ 文件已修改
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/system/SystemController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ApproveDataVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -72,6 +72,26 @@
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("H5业务登录")
    @PostMapping("/loginH5")
    @LoginNoRequired
    public ApiResponse<String> loginH5 (@Validated @RequestBody LoginDTO dto, ServerWebExchange serverWebExchange) {
        try {
            ServerHttpRequest request = serverWebExchange.getRequest();
            dto.setCheckCode(false);
            LoginUserInfo user = systemLoginService.loginByPasswordNew(dto,request);
            String token = jwtTokenUtil.generateToken(user);
            return ApiResponse.success(token);
        }catch (BusinessException e){
            return ApiResponse.failed(e.getCode(),e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
        }
    }
    /**
     * 刷新JWT令牌,用旧的令牌换新的令牌
     */
server/system_service/src/main/java/com/doumee/api/system/SystemController.java
@@ -42,6 +42,7 @@
    @ApiOperation("登录")
    @PostMapping("/login")
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        dto.setCheckCode(true);
        return ApiResponse.success(systemLoginService.loginByPassword(dto, request));
    }
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -1,5 +1,6 @@
package com.doumee.core.model;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.system.model.SystemPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemUser;
@@ -42,15 +43,17 @@
    private List<String> permissions;
    private List<Integer> companyIdList;
    private Company company;
    //jwt登录设置
    public static LoginUserInfo from(SystemUser user, List<SystemRole> roles, List<SystemPermission> permissions,String sessionId) {
    public static LoginUserInfo from(SystemUser user, List<SystemRole> roles, List<SystemPermission> permissions,Company company,String sessionId) {
        if (user == null) {
            return null;
        }
        // 拷贝用户信息
        LoginUserInfo loginUserInfo = new LoginUserInfo();
        BeanUtils.copyProperties(user, loginUserInfo);
        loginUserInfo.setCompany(company);
        // 设置角色信息
        List<String> rs = new ArrayList<>();
        for (SystemRole role : roles) {
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java
@@ -30,4 +30,7 @@
    @NotBlank(message = "验证码UUID不能为空")
    @ApiModelProperty(value = "验证码UUID")
    private String uuid;
    @ApiModelProperty(value = "是否验证验证码" , hidden = true)
    private Boolean checkCode;
}
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -4,6 +4,8 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.model.*;
import com.doumee.service.common.CaptchaService;
@@ -23,6 +25,7 @@
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
@@ -53,6 +56,9 @@
    @Autowired
    private SystemLoginLogService systemLoginLogService;
    @Autowired
    private CompanyMapper companyMapper;
    @Override
    public String loginByPassword(LoginDTO dto, HttpServletRequest request) {
        SystemLoginLog loginLog = new SystemLoginLog();
@@ -65,7 +71,7 @@
        loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
        loginLog.setOsInfo(Utils.User_Client.getOS(request));
        loginLog.setServerIp(Utils.Server.getIP());
        if(isDebug == null  || !isDebug){
        if((isDebug == null  || !isDebug) && (Objects.isNull(dto.getCheckCode()) || dto.getCheckCode()) ){
            // 校验验证码
            try {
                captchaService.check(dto.getUuid(), dto.getCode());
@@ -135,6 +141,10 @@
        if( !StringUtils.equals(pwd, user.getPassword())){
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        Company company = new Company();
        if(Objects.nonNull(user.getCompanyId())){
            company = companyMapper.selectById(user.getCompanyId());
        }
        // 获取登录用户信息
        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
@@ -144,7 +154,7 @@
        //数据部门权限集合
        user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,null);
        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null);
        return  userInfo;
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -130,8 +130,6 @@
        return ApiResponse.success("查询成功", visitsService.visitReporting(visits));
    }
    @LoginNoRequired
    @ApiOperation("重置密码")
    @PostMapping("/resetPassword")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
@@ -1,13 +1,19 @@
package com.doumee.cloud.web;
import com.doumee.api.BaseController;
import com.doumee.cloud.web.ApiController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.web.reqeust.AccountLoginDTO;
import com.doumee.dao.web.reqeust.AuditApproveDTO;
import com.doumee.dao.web.reqeust.VisitMemberDTO;
@@ -16,13 +22,19 @@
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.MemberService;
import com.doumee.service.business.VisitsService;
import com.doumee.service.system.SystemLoginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ServerWebExchange;
import javax.annotation.Resource;
/**
 * Created by IntelliJ IDEA.
@@ -37,7 +49,7 @@
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/member")
@Slf4j
@LoginNoRequired
public class InternalWebController extends ApiController {
public class InternalWebController extends BaseController {
    @Autowired
    private MemberService memberService;
@@ -48,30 +60,17 @@
    @Autowired
    private ApproveService approveService;
    @ApiOperation(value = "人员登录", notes = "H5")
    @PostMapping("/accountLogin")
    public ApiResponse<WxAuthorizeVO> accountLogin(@RequestBody AccountLoginDTO accountLoginDTO) {
        WxAuthorizeVO wxAuthorizeVO = memberService.accountLogin(accountLoginDTO);
        return ApiResponse.success("登录成功",wxAuthorizeVO);
    }
    @ApiOperation(value = "内部人员首页", notes = "H5")
    @GetMapping("/internalHome")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<InternalHomeVO> internalHome() {
        return ApiResponse.success("查询成功",approveService.getHomeData(getMemberId()));
    public ApiResponse<InternalHomeVO> internalHome(@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success("查询成功",approveService.getHomeData(getLoginUser(token).getMemberId()));
    }
    @ApiOperation("任务中心")
    @PostMapping("/taskCenter")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<PageData<VisitRecordVO>> taskCenter (@RequestBody PageWrap<VisitRecordDTO> pageWrap) {
        pageWrap.getModel().setMemberId(getMemberId());
    public ApiResponse<PageData<VisitRecordVO>> taskCenter (@RequestBody PageWrap<VisitRecordDTO> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setMemberId(getLoginUser(token).getMemberId());
        return ApiResponse.success(visitsService.taskCenter(pageWrap));
    }
@@ -88,29 +87,20 @@
    @ApiOperation(value = "人员分页",notes = "可拜访内部人员")
    @PostMapping("/memberList")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<PageData<MemberVO>> memberList (@RequestBody PageWrap<VisitMemberDTO> pageWrap) {
    public ApiResponse<PageData<MemberVO>> memberList (@RequestBody PageWrap<VisitMemberDTO> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(memberService.getVisitedMemberList(pageWrap));
    }
    @ApiOperation(value = "访客记录提交", notes = "内部人员提交")
    @PostMapping("/createVisit")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse createVisit(@RequestBody Visits visits) {
        visits.setCreateMemberId(getMemberId());
    public ApiResponse createVisit(@RequestBody Visits visits,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        visits.setCreateMemberId(getLoginUser(token).getMemberId());
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false));
    }
    @ApiOperation(value = "审批流记录审批", notes = "内部人员")
    @PostMapping("/auditApprove")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse auditApprove(@RequestBody AuditApproveDTO auditApproveDTO) {
    public ApiResponse auditApprove(@RequestBody AuditApproveDTO auditApproveDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        visitsService.auditApprove(auditApproveDTO);
        return ApiResponse.success("操作成功");
    }
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -124,6 +124,9 @@
    @ApiModelProperty(value = "人脸图片", example = "1")
    @TableField(exist = false)
    private String faceImg;
    @ApiModelProperty(value = "姓名", example = "1")
    @ExcelColumn(name="姓名")
@@ -141,6 +144,7 @@
    private String companyName;
    @ApiModelProperty(value = "待审批记录", example = "1")
    @TableField(exist = false)
    private List<Approve> approveList;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/ApproveDataVO.java
@@ -21,6 +21,9 @@
    @ApiModelProperty(value = "是否可以审批 0=不可以;1=可以")
    private Integer canBeApproved;
    @ApiModelProperty(value = "是否指定司机项 0不指定 1指定")
    private Integer driverParam;
    @ApiModelProperty(value = "抄送记录")
    private List<Approve> copyList;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.system.NoticesService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
@@ -294,8 +295,13 @@
        for (int i = 0; i < approveParamList.size(); i++) {
            ApproveParam approveParam = approveParamList.get(i);
            List<Integer> ids = this.getApproveUserIds(approveParam,createMember);
            //生成待办 notices 表数据
            if(i==0){
            }
            for (Integer memberId:ids) {
                Approve approve = new Approve();
                approve.setRemark(approveParam.getRemark());
                approve.setCreateDate(new Date());
                approve.setIsdeleted(Constants.ZERO);
                approve.setTemplatId(approveTempl.getId());
@@ -464,6 +470,7 @@
                        .selectAll(Approve.class)
                        .selectAs(Member::getName,Approve::getMemberName)
                        .selectAs(Member::getPhone,Approve::getMemberPhone)
                        .selectAs(Member::getFaceImg,Approve::getFaceImg)
                        .selectAs(Company::getName,Approve::getCompanyName)
                        .leftJoin(Member.class,Member::getId,Approve::getChekorId)
                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
@@ -475,6 +482,16 @@
                        .orderByAsc(Approve::getLevel)
                        .orderByAsc(Approve::getId)
        );
        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
        for (Approve approve:approveAllList ) {
            if(StringUtils.isNotBlank(approve.getFaceImg())){
                approve.setFaceImg(path + approve.getFaceImg());
            }
        }
        if(CollectionUtils.isEmpty(approveAllList)){
            return approveDateVO;
        }
@@ -483,6 +500,7 @@
            return approveDateVO;
        }
        approveDateVO.setCanBeApproved(this.canBeApproved(approveList,memberId));
        approveDateVO.setDriverParam(this.canDriverParam(approveList,memberId));
        //根据审批级别 处理数据
        for (Approve approve:approveGroupList) {
            approve.setApproveList(
@@ -511,6 +529,24 @@
        return Constants.ZERO;
    }
    public Integer canDriverParam(List<Approve> approveList,Integer memberId){
        //获取所有待审批的数据
        List<Approve> waitApprovedList = approveList.stream().filter(i->i.getType().equals(Constants.ZERO)&&i.getStatus().equals(Constants.ZERO)).collect(Collectors.toList());
        if(CollectionUtils.isNotEmpty(waitApprovedList)){
            //下个审批流程等级
            Integer nextApprovedLevel = waitApprovedList.get(Constants.ZERO).getLevel();
            //下个审批流程的 所有数据
            List<Approve> nextApprovedList = waitApprovedList.stream().filter(i->i.getStatus().equals(Constants.ZERO)&&i.getLevel().equals(nextApprovedLevel)).collect(Collectors.toList());
            //下个审批流程内 如果存在当前 用户的抓紧 则可以进行审批
            List<Approve> auditApproveList  = nextApprovedList.stream().filter(i->i.getChekorId().equals(memberId)).collect(Collectors.toList());
            if(auditApproveList.size() >0){
                Approve auditApprove = auditApproveList.get(Constants.ZERO);
                return auditApprove.getDriverParam();
            }
        }
        return Constants.ZERO;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -323,13 +323,13 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到隐患数据");
        }
        if (!model.getStatus().equals(Constants.ZERO)) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转!");
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转,请刷新查看!");
        }
        if (!model.getCheckUserId().equals(hiddenDanger.getLoginUserInfo().getMemberId())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"处理人非当前人员!");
        }
        if(!(hiddenDanger.getStatus().equals(Constants.ONE)||hiddenDanger.getStatus().equals(Constants.TWO))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态错误!");
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态错误,请刷新查看!");
        }
    }
@@ -406,7 +406,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到隐患数据");
        }
        if (!Constants.equalsInteger(model.getStatus(),Constants.ZERO)) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转!");
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转,请刷新查看!");
        }
        if (!Constants.equalsInteger(model.getCheckUserId(),hiddenDanger.getLoginUserInfo().getMemberId())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"处理人非当前人员!");
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -52,6 +52,8 @@
import com.doumee.service.business.SmsEmailService;
import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl;
import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
import com.doumee.service.system.SystemLoginService;
import com.doumee.service.system.SystemUserService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
@@ -1715,6 +1717,7 @@
    @Override
    public WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO){
        System.out.println(DESUtil.decrypt(Constants.EDS_PWD,"eIaPD5AR5DBuTBE9MW14QRG07IDKXCdh"));
        if(accountLoginDTO.getAccount().length()!=18
            //&&!IdcardUtil.isValidCard(accountLoginDTO.getAccount())
        ){