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()) ){