server/dmvisit_admin/src/main/java/com/doumee/api/business/ApproveParamController.java
@@ -7,6 +7,7 @@ import com.doumee.core.model.PageWrap; import com.doumee.core.model.PageData; import com.doumee.dao.business.model.ApproveParam; import com.doumee.dao.system.vo.ApproveParamDataVO; import com.doumee.service.business.ApproveParamService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -87,4 +88,14 @@ public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(approveParamService.findById(id)); } @ApiOperation("è·åé 置信æ¯") @GetMapping("/getApproveParamData") @RequiresPermissions("business:approveparam:query") public ApiResponse<ApproveParamDataVO> getApproveParamData() { return ApiResponse.success(approveParamService.getApproveParamData()); } } server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
@@ -12,6 +12,7 @@ import com.doumee.dao.business.model.Company; import com.doumee.dao.system.dto.UpdateSystemMenuSortDTO; import com.doumee.service.business.CompanyService; import com.doumee.service.business.ERPSyncService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -36,6 +37,9 @@ @Autowired private CompanyService companyService; @Autowired private ERPSyncService erpSyncService; @PreventRepeat @ApiOperation("æ°å»º") @@ -150,7 +154,7 @@ */ @ApiOperation("æ ¹æ®ç±»åæ¥è¯¢ç»ç»ä¿¡æ¯") @GetMapping("/findCompanyTreePage") // @RequiresPermissions("business:company:query") @RequiresPermissions("business:company:query") public ApiResponse<List<CompanyDTO>> findCompanyTreePage(Integer type){ return ApiResponse.success(companyService.findCompanyTreePage(type)); } @@ -159,9 +163,9 @@ @ApiOperation("é¨é¨ä¿¡æ¯åæ¥") @PostMapping("/sync") // @RequiresPermissions("business:company:sync") @RequiresPermissions("business:company:sync") public ApiResponse sync(){ //TODO æå¨åæ¥ é¨é¨ä¿¡æ¯ erpSyncService.syncCompany(null); return ApiResponse.success("忥æå"); } } server/dmvisit_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
@@ -43,6 +43,8 @@ public static final String HEADER_KEY = "token"; //åå¼åç§° public static final String UserId_Name = "AppUserId"; //åå¼åç§° public static final String MEMBER = "MEMBER"; //å å¯å¯é¥ private final static String jwtSecret = "MhAjU9poLf8ko54K25XBDtonaL33vtt1"; //è¿ææ¶é´(s) 86400L=1天 604800L=7天 server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -7,6 +7,7 @@ import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; import com.doumee.core.utils.redis.RedisUtil; import com.doumee.dao.business.model.Member; import io.jsonwebtoken.JwtException; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -14,6 +15,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.client.RestTemplate; import org.springframework.web.method.HandlerMethod; @@ -24,6 +26,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; import java.util.Objects; @Configuration public class WebMvcConfig implements WebMvcConfigurer { @@ -98,21 +101,19 @@ } //è·åè´¦å·ID String memberId = JwtTokenUtil.getJwtPayLoad(token).getMemberId(); Integer isDeleted = dao.queryForObject(" select COALESCE(DELETED,1) from `system_user` where id = ?", Integer.class, memberId); if(isDeleted== Constants.ONE){ Member member = dao.queryForObject(" select * from `member` where id = ? limit 1 ", new BeanPropertyRowMapper<>(Member.class),memberId ); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(member.getIsdeleted()== Constants.ONE){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²å é¤,请è系管çå"); } Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,1) from `system_user` where id = ?", Integer.class, memberId); if(isForbidden== Constants.ONE){ if(member.getStatus() != Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²ç¦ç¨,请è系管çå"); } Integer count = dao.queryForObject("select count(1) from `system_user` where id = ?", Integer.class, memberId); if (count != null && count > 0) { request.setAttribute(JwtTokenUtil.UserId_Name, memberId); request.setAttribute(JwtTokenUtil.MEMBER, member); return true; }else{ throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"ç¨æ·ä¿¡æ¯åºé"); } } catch (IllegalArgumentException | JwtException e) { throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"æªç»å½"); } server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -207,6 +207,7 @@ public static final String COFFEE_BEAN_TASK ="COFFEE_BEAN_TASK"; public static final String HOME_IMAGE ="HOME_IMAGE"; @@ -226,6 +227,8 @@ public interface RedisKeys { public static final String ERP_TOKEN ="ERP_TOKEN"; public static final long EXPIRE_TIME = 7200; public static final String INTERNAL_TOKEN ="INTERNAL_TOKEN"; public static final String GOODSORDER_KEY = "ordercode_"; public static final String ACTIVITY_SIGN_KEY = "actcode_"; @@ -288,6 +291,17 @@ int visitor = 1;//æ®é访客 int internal = 2;//å é¨äººå } public interface approveStatus{ int wait = 0;//å¾ å®¡æ¹ int auditIng = 1;//审æ¹ä¸ int pass = 2;//审æ¹éè¿ int unPass = 3;//å®¡æ¹æªéè¿ int otherDeal = 4;//ä»äººå·²å¤ç } public static void main(String[] args) { String t = URLDecoder.decode("https://lsqw.gtja.com/qwcos/v-index.html#/loginforProperty?corpId=ww4b7aefafeb430e4b&corpId=ww4b7aefafeb430e4b&agentId=1000005&agentId=1000005&fromRoute=&userCode=013561&userCode=&userId=zz&userId=&encryptUserCode=&custQwId=wmIUuSDgAAR8MhtVY8w90EyKltvoK5fA&custCode=&openId=op1wZwD1dKuBQywmWWS5957zUOJI&name=%E8%B9%84%E8%B9%84&headUrl=http%3A%2F%2Fwx.qlogo.cn%2Fmmhead%2FQ3auHgzwzM4QlibSOAvYcvRMdsoyF3Ua7duLOYSJfB3dsGsYxIYonBw%2F0&dbHeadUrl=https%3A%2F%2Ftgf.gtja.com%2Ff%2F%2Fqwoms%2F2022512%2Fqwoms_1652332606613_8.jpg"); System.out.println(t); server/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveMapper.java
@@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.doumee.dao.business.model.Approve; import com.doumee.dao.business.model.Member; import java.util.List; /** * @author æ±è¹è¹ @@ -9,4 +12,7 @@ */ public interface ApproveMapper extends BaseMapper<Approve> { void insertBatchSomeColumn(List<Approve> list); } server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Approve.java
@@ -61,14 +61,14 @@ @ApiModelProperty(value = "å®¡æ¹æ¨¡æ¿ç¼ç ") @ExcelColumn(name="å®¡æ¹æ¨¡æ¿ç¼ç ") private String templatId; private Integer templatId; @ApiModelProperty(value = "ERP审æ¹ç¼ç ") @ExcelColumn(name="ERP审æ¹ç¼ç ") private String erpId; @ApiModelProperty(value = "审æ¹ç¶æ 0å¾ å®¡æ¹ 1审æ¹ä¸ 2审æ¹éè¿ 3å®¡æ¹æªéè¿", example = "1") @ExcelColumn(name="审æ¹ç¶æ 0å¾ å®¡æ¹ 1审æ¹ä¸ 2审æ¹éè¿ 3å®¡æ¹æªéè¿") @ApiModelProperty(value = "审æ¹ç¶æ 0å¾ å®¡æ¹ 1审æ¹ä¸ 2审æ¹éè¿ 3å®¡æ¹æªéè¿ 4ä»äººå·²å¤ç", example = "1") @ExcelColumn(name="审æ¹ç¶æ 0å¾ å®¡æ¹ 1审æ¹ä¸ 2审æ¹éè¿ 3å®¡æ¹æªéè¿ 4ä»äººå·²å¤ç") private Integer status; @ApiModelProperty(value = "ç¶æä¿¡æ¯") @@ -103,4 +103,7 @@ @ExcelColumn(name="å¤äººå®¡æ¹æ¹å¼ 0æç¾ 1ä¼ç¾") private Integer approveType; @ApiModelProperty(value = "ç±»å 0å®¡æ¹ 1æé", example = "1") @ExcelColumn(name="ç±»å 0å®¡æ¹ 1æé") private Integer type; } server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ApproveParam.java
@@ -57,7 +57,7 @@ @ApiModelProperty(value = "审æ¹äººç±»å 0被访人 1æå®äººå 2é¨é¨ä¸»ç®¡") @ExcelColumn(name="审æ¹äººç±»å 0被访人 1æå®äººå 2é¨é¨ä¸»ç®¡") private String memberType; private Integer memberType; @ApiModelProperty(value = "ç级", example = "1") @ExcelColumn(name="ç级") server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -223,6 +223,12 @@ @ExcelColumn(name="ERPç³è¯·è®°å½ç¼ç ") private String erpId; @ApiModelProperty(value = "å建人ç¼ç ï¼å ³èmember表)", example = "1") @ExcelColumn(name="å建人ç¼ç ï¼å ³èmember表)") private Integer createMemberId; @ApiModelProperty(value = "æ®é访客ç³è¯·é访人å") @TableField(exist = false) private List<Visits> withUserList; server/dmvisit_service/src/main/java/com/doumee/dao/system/vo/ApproveParamDataVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ package com.doumee.dao.system.vo; import com.doumee.dao.business.model.ApproveParam; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * å®¡æ¹æ¨¡çé 置信æ¯è¡¨ * @author æ±è¹è¹ * @date 2023/12/28 11:46 */ @Data public class ApproveParamDataVO { @ApiModelProperty(value = "审æ¹äººåé 置信æ¯") private List<ApproveParam> auditApproveList; @ApiModelProperty(value = "æé人åé 置信æ¯") private ApproveParam copyForConfig; } server/dmvisit_service/src/main/java/com/doumee/dao/system/vo/ApproveParamVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.doumee.dao.system.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.doumee.core.annotation.excel.ExcelColumn; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * å®¡æ¹æ¨¡çé 置信æ¯è¡¨ * @author æ±è¹è¹ * @date 2023/12/28 11:46 */ @Data public class ApproveParamVO { @ApiModelProperty(value = "主é®", example = "1") private Integer id; @ApiModelProperty(value = "ç±»å", example = "1") private Integer type; @ApiModelProperty(value = "审æ¹äººç±»å 0被访人 1æå®äººå 2é¨é¨ä¸»ç®¡") private Integer memberType; @ApiModelProperty(value = "ç级", example = "1") private Integer level; @ApiModelProperty(value = "审æ¹äººå§åï¼å¤ä¸ªç¨è±æéå·éå¼") private String objNames; @ApiModelProperty(value = "审æ¹äººç¼ç ï¼å¤ä¸ªç¨è±æéå·éå¼") private String objIds; @ApiModelProperty(value = "审æ¹ä¸»ç®¡ç级 0ç´æ¥ä¸»ç®¡ 1äºçº§ä¸»ç®¡ 2ä¸çº§ä¸»ç®¡ 4å级主管", example = "1") private Integer objLevel; @ApiModelProperty(value = "å¤äººå®¡æ¹æ¹å¼ 0æç¾ 1ä¼ç¾", example = "1") private Integer approveType; @ApiModelProperty(value = "æ 主管é项 0æµç¨ç»æ 1ç±ä¸çº§ä¸»ç®¡ä»£æ¿å®¡æ ¸", example = "1") private Integer noleaderOpt; } server/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/AccountLoginDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.doumee.dao.web.reqeust; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/12/7 11:19 */ @Data public class AccountLoginDTO { @NotBlank(message = "身份è¯å·ç æªå½å ¥") @ApiModelProperty(value = "身份è¯å·ç ") private String account; @NotBlank(message = "å¯ç æªå½å ¥") @ApiModelProperty(value = "å¯ç ") private String password; @ApiModelProperty(value = "openId") private String openId; } server/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/AuditApproveDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.doumee.dao.web.reqeust; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/1/4 16:17 */ @Data public class AuditApproveDTO { @ApiModelProperty(value = "审æ¹è®°å½ä¸»é®") private Integer id; @ApiModelProperty(value = "审æ¹ç¶æï¼2=éè¿ï¼3=æªéè¿") private Integer status; @ApiModelProperty(value = "审æ¹å¤æ³¨") private String checkInfo; @ApiModelProperty(value = "å®¡æ¹æä½äºº", hidden = true ) private Integer memberId; } server/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/VisitMemberDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.doumee.dao.web.reqeust; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/12/7 11:19 */ @Data public class VisitMemberDTO { @ApiModelProperty(value = "åç§°") private String name; @ApiModelProperty(value = "ææºå·") private String phone; } server/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/VisitRecordDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.doumee.dao.web.reqeust; import com.doumee.core.utils.Date; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/12/7 11:19 */ @Data public class VisitRecordDTO { @ApiModelProperty(value = "æ¥è®¿äººååç§°") private String name; @ApiModelProperty(value = "å建æ¶é´å¼å§ yyyy-MM-dd HH:mm:ss") private String createTimeS; @ApiModelProperty(value = "å建æ¶é´ç»æ yyyy-MM-dd HH:mm:ss") private String createTimeE; @ApiModelProperty(value = "访客记å½ç±»å: 0å³å¡è®¿å®¢ 1æ®é访客") private Integer type; @ApiModelProperty(value = "æ¥è¯¢ç¶æï¼0=å¾ å®¡æ¹ï¼1=已审æ¹ï¼2=æåèµ·ç") private Integer state; @ApiModelProperty(value = "ç¨æ·ä¸»é®",hidden = true) private Integer memberId; } server/dmvisit_service/src/main/java/com/doumee/dao/web/response/InternalHomeVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.doumee.dao.web.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class InternalHomeVO { @ApiModelProperty(value = "主页å¾ç") private String homeImg; @ApiModelProperty(value = "å¾ å¤ç任塿°é") private Integer taskNum; } server/dmvisit_service/src/main/java/com/doumee/dao/web/response/MemberVO.java
@@ -32,4 +32,9 @@ @ApiModelProperty(value = "ææºå·") private String phone; @ApiModelProperty(value = "人è¸å¾ç") private String faceImg; @ApiModelProperty(value = "å¾çåç¼") private String prefixUrl; } server/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitDetailVO.java
@@ -36,4 +36,29 @@ @ApiModelProperty(value = "é访人åä¿¡æ¯") private List<Visits> withVisitsList; @ApiModelProperty(value = "头ååç¼") private String prefix; @ApiModelProperty(value = "æ¥è®¿äººå§å") private String name; @ApiModelProperty(value = "å¥åº·è¯") private String imgUrl; @ApiModelProperty(value = "人è¸ç §ç") private String faceImg; @ApiModelProperty(value = "è¯ä»¶æ¾ç¤ºä¿¡æ¯") private String idCardDecode; @ApiModelProperty(value = "æ¥è®¿äººå ¬å¸") private String companyName; @ApiModelProperty(value = "被访人é¨é¨") private String visitUserCompany; } server/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitRecordVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.doumee.dao.web.response; import com.doumee.core.utils.Date; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/1/2 9:51 */ @Data public class VisitRecordVO { @ApiModelProperty(value = "主é®") private Integer id; @ApiModelProperty(value = "访客å§å") private String name; @ApiModelProperty(value = "è¿åæ¥æ") private String startTime; @ApiModelProperty(value = "åºåæ¥æ") private String endTime; @ApiModelProperty(value = "å ¥å人æ°") private Integer inNum; @ApiModelProperty(value = "æ¥è®¿äºç±") private String reason; @ApiModelProperty(value = "å建æ¶é´") private String createDate; } server/dmvisit_service/src/main/java/com/doumee/dao/web/response/WxAuthorizeVO.java
@@ -15,4 +15,7 @@ @ApiModelProperty(value = "ææOPENID") private String openid; @ApiModelProperty(value = "ç¨æ·token") private String token; } server/dmvisit_service/src/main/java/com/doumee/service/business/ApproveParamService.java
@@ -3,6 +3,8 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.ApproveParam; import com.doumee.dao.system.vo.ApproveParamDataVO; import java.util.List; /** @@ -94,4 +96,11 @@ * @return long */ long count(ApproveParam approveParam); /** * è·åé ç½®ä¿¡æ¯ * @return */ ApproveParamDataVO getApproveParamData(); } server/dmvisit_service/src/main/java/com/doumee/service/business/ApproveService.java
@@ -3,6 +3,8 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Approve; import com.doumee.dao.web.response.InternalHomeVO; import java.util.List; /** @@ -94,4 +96,12 @@ * @return long */ long count(Approve approve); /** * è·åå é¨äººåé¦é¡µæ°æ® * @param memberId * @return */ InternalHomeVO getHomeData(Integer memberId); } server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -9,7 +9,9 @@ import com.doumee.dao.admin.request.MemberQuery; import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.reqeust.AccountLoginDTO; import com.doumee.dao.web.reqeust.CheckVisitedDTO; import com.doumee.dao.web.reqeust.VisitMemberDTO; import com.doumee.dao.web.response.MemberVO; import com.doumee.dao.web.response.WxAuthorizeVO; @@ -178,5 +180,18 @@ MemberVO getVisitedMember(CheckVisitedDTO checkVisitedDTO); /** * è´¦å·å¯ç * å é¨äººå/å³å¡è®¿å®¢ç»å½ * @param accountLoginDTO * @return */ WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO); /** * å é¨å¯æè®¿äººåå页 * @param param * @return */ PageData<MemberVO> getVisitedMemberList(PageWrap<VisitMemberDTO> param); } server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -3,7 +3,10 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Visits; import com.doumee.dao.web.reqeust.AuditApproveDTO; import com.doumee.dao.web.reqeust.VisitRecordDTO; import com.doumee.dao.web.response.VisitDetailVO; import com.doumee.dao.web.response.VisitRecordVO; import java.util.List; @@ -107,4 +110,18 @@ * @return */ VisitDetailVO getVisitDetail(Integer id); /** * å é¨äººå ä»»å¡ä¸å¿ * @param param * @return */ PageData<VisitRecordVO> taskCenter(PageWrap<VisitRecordDTO> param); /** * 访客记å½å®¡æ¹æµå®¡æ¹ * @param auditApproveDTO */ void auditApprove(AuditApproveDTO auditApproveDTO); } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveParamServiceImpl.java
@@ -1,10 +1,14 @@ package com.doumee.service.business.impl; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.ApproveParamMapper; import com.doumee.dao.business.model.ApproveParam; import com.doumee.dao.system.vo.ApproveParamDataVO; import com.doumee.service.business.ApproveParamService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -15,6 +19,9 @@ import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; /** * å®¡æ¹æ¨¡çé 置信æ¯è¡¨Serviceå®ç° @@ -29,9 +36,62 @@ @Override public Integer create(ApproveParam approveParam) { this.checkData(approveParam); approveParamMapper.insert(approveParam); return approveParam.getId(); } /** * éªè¯æ°æ®å¿ å¡« * @param approveParam */ public void checkData(ApproveParam approveParam){ if(Objects.isNull(approveParam) ||Objects.isNull(approveParam.getType()) ||Objects.isNull(approveParam.getMemberType()) ||Objects.isNull(approveParam.getLevel()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(approveParam.getType().equals(Constants.ZERO)){ if(approveParam.getMemberType().equals(Constants.ONE) && (Objects.isNull(approveParam.getObjIds())||Objects.isNull(approveParam.getObjNames())) ){ //æå®äººåç±»å å¤ææ°æ®å¿ å¡« throw new BusinessException(ResponseStatus.BAD_REQUEST); }else if(approveParam.getMemberType().equals(Constants.TWO) && (Objects.isNull(approveParam.getObjLevel())||Objects.isNull(approveParam.getNoleaderOpt())) ){ //æå®é¨é¨ä¸»ç®¡ å¤ææ°æ®å¿ å¡« throw new BusinessException(ResponseStatus.BAD_REQUEST); } }else{ if(Objects.isNull(approveParam.getObjIds())||Objects.isNull(approveParam.getObjNames())){ //æå®äººåç±»å å¤ææ°æ®å¿ å¡« throw new BusinessException(ResponseStatus.BAD_REQUEST); } } } @Override public ApproveParamDataVO getApproveParamData(){ ApproveParamDataVO approveParamDataVO = new ApproveParamDataVO(); List<ApproveParam> approveParamList = approveParamMapper.selectList(new QueryWrapper<ApproveParam>() .lambda().eq(ApproveParam::getIsdeleted,Constants.ZERO) .orderByAsc(ApproveParam::getLevel) ); approveParamDataVO.setAuditApproveList(approveParamList.stream().filter(m->m.getType().equals(Constants.ZERO)).collect(Collectors.toList())); Optional<ApproveParam> paramOptional = approveParamList.stream().filter(m->m.getType().equals(Constants.ONE)).findFirst(); if(paramOptional.isPresent()){ approveParamDataVO.setCopyForConfig(paramOptional.get()); } return approveParamDataVO; } @Override public void deleteById(Integer id) { @@ -54,6 +114,7 @@ @Override public void updateById(ApproveParam approveParam) { this.checkData(approveParam); approveParamMapper.updateById(approveParam); } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1,10 +1,13 @@ package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.ApproveMapper; import com.doumee.dao.business.model.Approve; import com.doumee.dao.web.response.InternalHomeVO; import com.doumee.service.business.ApproveService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -26,6 +29,9 @@ @Autowired private ApproveMapper approveMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(Approve approve) { @@ -166,4 +172,24 @@ QueryWrapper<Approve> wrapper = new QueryWrapper<>(approve); return approveMapper.selectCount(wrapper); } /** * å é¨äººåH5页é¢é¦é¡µ * @param memberId * @return */ @Override public InternalHomeVO getHomeData(Integer memberId){ InternalHomeVO internalHomeVO = new InternalHomeVO(); internalHomeVO.setHomeImg(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.HOME_IMAGE).getCode()); internalHomeVO.setTaskNum(approveMapper.selectCount(new QueryWrapper<Approve>().lambda().eq(Approve::getChekorId,memberId).eq(Approve::getStatus,Constants.ZERO))); return internalHomeVO; } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -19,8 +19,10 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.HttpsUtil; import com.doumee.core.utils.Utils; import com.doumee.core.utils.redis.RedisUtil; import com.doumee.core.wx.WXConstant; import com.doumee.dao.admin.request.LaborEmpowerDTO; import com.doumee.dao.admin.request.LaborMemberDTO; @@ -32,8 +34,12 @@ import com.doumee.dao.business.model.*; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.web.reqeust.AccountLoginDTO; import com.doumee.dao.web.reqeust.CheckVisitedDTO; import com.doumee.dao.web.reqeust.VisitMemberDTO; import com.doumee.dao.web.reqeust.VisitRecordDTO; import com.doumee.dao.web.response.MemberVO; import com.doumee.dao.web.response.VisitRecordVO; import com.doumee.dao.web.response.WxAuthorizeVO; import com.doumee.service.business.MemberService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -47,6 +53,7 @@ import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -86,6 +93,10 @@ private SystemDictDataBiz systemDictDataBiz; @Autowired private UserActionJoinMapper userActionJoinMapper; @Autowired private RedisTemplate<String, Object> redisTemplate; @Override public Integer create(Member member) { @@ -799,17 +810,24 @@ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() .eq(Member::getOpenid,openId) .eq(Member::getIsdeleted,Constants.ZERO) .ne(Member::getType,Constants.memberType.visitor) ); //éè®¿å®¢ç¨æ· è¿è¡å¤ææ¯å¦åå¨ç¨æ· if(Objects.isNull(member)&&!member.getType().equals(Constants.memberType.visitor)){ if(member.getIsdeleted() == Constants.ONE){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²å é¤,请è系管çå"); } if(member.getStatus() != Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²ç¦ç¨,请è系管çå"); } JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId())); String token = JwtTokenUtil.generateToken(payLoad); //åå¨tokenè³redis RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME); wxAuthorizeVO.setToken(token); } return wxAuthorizeVO; } @@ -841,7 +859,85 @@ @Override public PageData<MemberVO> getVisitedMemberList(PageWrap<VisitMemberDTO> param) { VisitMemberDTO visitMemberDTO = param.getModel(); IPage<Member> page = new Page<>(param.getPage(), param.getCapacity()); MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(visitMemberDTO); queryWrapper.selectAs(Member::getId,MemberVO::getId); queryWrapper.selectAs(Member::getName,MemberVO::getName); queryWrapper.selectAs(Member::getPhone,MemberVO::getPhone); queryWrapper.selectAs(Member::getCompanyId,MemberVO::getCompanyId); queryWrapper.selectAs(Member::getFaceImg,MemberVO::getFaceImg); queryWrapper.eq(Member::getIsdeleted,Constants.ZERO); queryWrapper.eq(Member::getStatus,Constants.ZERO); queryWrapper.eq(Member::getCanVisit,Constants.ONE); queryWrapper.eq(Member::getType,Constants.memberType.internal); if(!Objects.isNull(visitMemberDTO)){ queryWrapper.and(StringUtils.isNotBlank(visitMemberDTO.getName()), ms->ms.like(Member::getPhone,visitMemberDTO.getName()) .or().like(Member::getPhone,visitMemberDTO.getName())); } queryWrapper.orderByDesc(Visits::getCreateDate); IPage<MemberVO> result = memberJoinMapper.selectJoinPage(page, MemberVO.class,queryWrapper); String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); result.getRecords().forEach(i->{ i.setPrefixUrl(prefixUrl); }); return PageData.from(result); } @Override public WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO){ if(accountLoginDTO.getAccount().length()!=18 //&&!IdcardUtil.isValidCard(accountLoginDTO.getAccount()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对ä¸èµ·ï¼èº«ä»½è¯å·ç æè¯¯ï¼è¯·æ ¸å®åéè¯ï¼"); } Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() .eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getAccount())) .ne(Member::getType,Constants.memberType.visitor) ); if(Objects.isNull(member)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æªæ¥è¯¢å°ç¨æ·,请è系管çå"); } if(member.getIsdeleted() == Constants.ONE){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²å é¤,请è系管çå"); } if(member.getStatus() != Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"ç¨æ·å·²ç¦ç¨,请è系管çå"); } String md5Password = DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getPassword()); if(!md5Password.equals(member.getPassward())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è´¦æ·å¯ç é误!"); } if(StringUtils.isNotBlank(accountLoginDTO.getOpenId())){ //å æ¸ 空åæè®¿å®¢çopenidç»å®å ³ç³» memberMapper.update(null, new UpdateWrapper<Member>().lambda() .ne(Member::getType,Constants.memberType.visitor) .eq(Member::getOpenid,accountLoginDTO.getOpenId()) .set(Member::getOpenid,null) ); //æ´æ°å½åç»å½ç¨æ· openId member.setOpenid(accountLoginDTO.getOpenId()); memberMapper.updateById(member); } WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO(); JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId())); String token = JwtTokenUtil.generateToken(payLoad); //åå¨tokenè³redis RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME); wxAuthorizeVO.setToken(token); return wxAuthorizeVO; } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1,12 +1,15 @@ package com.doumee.service.business.impl; import cn.hutool.core.util.IdcardUtil; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.erp.ErpConstants; import com.doumee.core.erp.ErpTool; import com.doumee.core.erp.model.openapi.request.VisitListRequest; import com.doumee.core.erp.model.openapi.request.erp.ApproveAddRequest; import com.doumee.core.erp.model.openapi.request.erp.UserInfoRequest; import com.doumee.core.erp.model.openapi.response.VisitEventListResponse; import com.doumee.core.erp.model.openapi.response.erp.ApproveInfoResponse; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; @@ -24,14 +27,17 @@ import com.doumee.core.utils.Utils; import com.doumee.core.wx.wxPlat.WxPlatNotice; import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.business.DeviceRoleMapper; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.ProblemLogMapper; import com.doumee.dao.business.VisitsMapper; import com.doumee.dao.business.*; import com.doumee.dao.business.join.DeviceJoinMapper; import com.doumee.dao.business.join.VisitEventJoinMapper; import com.doumee.dao.business.join.VisitsJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.web.reqeust.AuditApproveDTO; import com.doumee.dao.web.reqeust.VisitRecordDTO; import com.doumee.dao.web.response.InternalHomeVO; import com.doumee.dao.web.response.VisitDetailVO; import com.doumee.dao.web.response.VisitRecordVO; import com.doumee.service.business.ApproveService; import com.doumee.service.business.VisitsService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -61,6 +67,10 @@ @Autowired private VisitsMapper visitsMapper; @Autowired private ApproveMapper approveMapper; @Autowired private ApproveParamMapper approveParamMapper; @Autowired private DeviceRoleMapper deviceRoleMapper; @Autowired private ProblemLogMapper problemLogMapper ; @@ -68,7 +78,8 @@ private MemberMapper memberMapper ; @Autowired private VisitsJoinMapper visitsJoinMapper; @Autowired private CompanyMapper companyMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired @@ -125,12 +136,333 @@ visitsMapper.insert(visits); initWithVisitInfo(visits); updateProblemLog(visits,problemLog,member); //å建审æ¹è®°å½ createApprove(visits,visitMember); //åéå¾®ä¿¡å ¬ä¼å·éç¥ wxPlatNotice.sendVisitAuditTemplateNotice(visits, systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(), systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode()); return visits.getId(); } /** * å建审æ¹è®°å½ * @param visits * @param visitMember */ public void createApprove(Visits visits,Member visitMember){ List<Integer> approveIds = new ArrayList<>(); ApproveParam approveParam = null;//this.getApproveIds(1,visitMember,approveIds); //åå»ºå¾ å®¡æ¹è®°å½ //è·å审æ¹é ç½®ä¸»é® Integer firstApproveId = this.checkFirstAudit(); //å é¨äººåå建 ä¸å建人ä¸è¢«è®¿é®äººç¸å if(!Objects.isNull(visits.getCreateMemberId())//å é¨äººååå¸ &&visits.getCreateMemberId().equals(visitMember.getId())//å建人åä¸è¢«è®¿é®äººåæ¯å¦æ¯åä¸äºº &&!Objects.isNull(firstApproveId)//审æ¹é 置第ä¸çº§ä¸º 被访é®äººå®¡æ¹ ){ approveParam = this.getApproveIds(2,visitMember,approveIds); Approve approve = new Approve(); approve.setCreateDate(new Date()); approve.setIsdeleted(Constants.ZERO); approve.setCheckInfo("èªå¨å®¡æ¹"); approve.setTemplatId(firstApproveId); approve.setIsEndCheck(Constants.ZERO); approve.setType(Constants.ZERO); approve.setLevel(Constants.ONE); approve.setVisitId(visits.getId()); approveMapper.insert(approve); if(!CollectionUtils.isNotEmpty(approveIds)){ approve.setIsEndCheck(Constants.ONE); visits.setStatus(Constants.TWO); visitsMapper.updateById(visits); //å卿éè®°å½ this.saveCopyFor(visits.getId()); } }else{ approveParam = this.getApproveIds(null,visitMember,approveIds); if(!CollectionUtils.isNotEmpty(approveIds)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ ææç审æ¹é ç½®ï¼è¯·è系管çå"); } } if(!Objects.isNull(approveIds)){ //å建ä¸ä¸çº§å®¡æ¹è®°å½ this.saveAuditRecord(visits.getId(),approveIds,approveParam); } } /** * å®¡æ¹ å®¡æ¹è®°å½ æç¾ 审æ¹éè¿è¿å ¥ä¸ä¸æ¥ ä¼ç¾ æ£æµæ¯å¦æ¯æå䏿¡å¾ å®¡æ¹ * @param auditApproveDTO */ @Override public void auditApprove(AuditApproveDTO auditApproveDTO){ Approve approve = approveMapper.selectById(auditApproveDTO.getId()); if(Objects.isNull(approve)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(approve.getStatus().equals(Constants.approveStatus.wait)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审æ¹è®°å½å·²å¤ç!"); } Visits visits = visitsMapper.selectById(approve.getVisitId()); if(Objects.isNull(visits)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(!auditApproveDTO.getMemberId().equals(approve.getChekorId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"人åä¿¡æ¯å¹é é误!"); } //被访人 Member visitMember = memberMapper.selectById(visits.getReceptMemberId()); List<Integer> approveIds = new ArrayList<>(); ApproveParam approveParam = this.getApproveIds(approve.getLevel()+1,visitMember,approveIds); approve.setStatus(auditApproveDTO.getStatus()); approve.setEditDate(new Date()); approve.setChekorId(auditApproveDTO.getMemberId()); approve.setCheckInfo(auditApproveDTO.getCheckInfo()); approveMapper.updateById(approve); if(auditApproveDTO.getStatus().equals(Constants.approveStatus.pass)){ if(approve.getApproveType().equals(Constants.ONE)){ //ä¼ç¾ æ¥è¯¢æ¯å¦æ¯æå䏿¡è®°å½ å¦ææ¯æå䏿¡è®°å½ åçæä¸çº§å®¡æ¹è®°å½ å¦ææ¯æåä¸çº§ï¼åè¿è¡å®¡æ¹ç¡®è®¤ if(approveMapper.selectCount(new QueryWrapper<Approve>().lambda() .eq(Approve::getVisitId,visits.getId()) .eq(Approve::getLevel,approve.getLevel()) .ne(Approve::getId,approve.getId()) )<=Constants.ZERO){ //å½å审æ¹çº§å« æå䏿¡å¾ 审æ¹è®°å½ if(!CollectionUtils.isNotEmpty(approveIds)){ //没æä¸çº§å®¡æ¹æµå ä¿®æ¹è®¿å®¢è®°å½ä¸»é® visits.setStatus(auditApproveDTO.getStatus()); visits.setCheckDate(new Date()); visits.setCheckorId(auditApproveDTO.getMemberId()); visitsMapper.updateById(visits); }else{ this.saveAuditRecord(visits.getId(),approveIds,approveParam); } } }else{ //æç¾ approveMapper.update(null,new UpdateWrapper<Approve>().lambda() .set(Approve::getStatus,Constants.approveStatus.otherDeal) .set(Approve::getEditDate,new Date()) .set(Approve::getCheorId,auditApproveDTO.getMemberId()) .eq(Approve::getVisitId,visits.getId()) .eq(Approve::getStatus,Constants.approveStatus.wait) .ne(Approve::getId,approve.getId()) .eq(Approve::getLevel,approve.getLevel()) ); if(!CollectionUtils.isNotEmpty(approveIds)){ //没æä¸çº§å®¡æ¹æµå ä¿®æ¹è®¿å®¢è®°å½ä¸»é® visits.setStatus(auditApproveDTO.getStatus()); visits.setCheckDate(new Date()); visits.setCheckorId(auditApproveDTO.getMemberId()); visitsMapper.updateById(visits); }else{ this.saveAuditRecord(visits.getId(),approveIds,approveParam); } } }else if(auditApproveDTO.getStatus().equals(Constants.approveStatus.unPass)){ visits.setStatus(auditApproveDTO.getStatus()); visits.setCheckDate(new Date()); visits.setCheckorId(auditApproveDTO.getMemberId()); visitsMapper.updateById(visits); approveMapper.update(null,new UpdateWrapper<Approve>().lambda() .set(Approve::getStatus,Constants.approveStatus.otherDeal) .set(Approve::getEditDate,new Date()) .set(Approve::getCheorId,auditApproveDTO.getMemberId()) .eq(Approve::getVisitId,visits.getId()) .eq(Approve::getStatus,Constants.approveStatus.wait) .ne(Approve::getId,approve.getId()) .eq(Approve::getLevel,approve.getLevel()) ); }else{ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审æ¹ç¶æé误!"); } } /** * å卿éè®°å½ * @param visitId */ public void saveCopyFor(Integer visitId){ ApproveParam approveParam = approveParamMapper.selectOne(new QueryWrapper<ApproveParam>().lambda() .eq(ApproveParam::getIsdeleted,Constants.ZERO) .eq(ApproveParam::getType,Constants.ONE) .eq(ApproveParam::getLevel,Constants.ONE) .last("limit 1")); if(Objects.isNull(approveParam)){ return; } if(StringUtils.isNotBlank(approveParam.getObjIds())){ String [] ids = approveParam.getObjIds().split(","); List<Approve> approveList = new ArrayList<>(); for (String id:ids) { Approve approve = new Approve(); approve.setCreateDate(new Date()); approve.setIsdeleted(Constants.ZERO); approve.setCheckInfo("æéè®°å½"); approve.setTemplatId(approveParam.getId()); approve.setChekorId(Integer.valueOf(id)); approve.setType(Constants.ONE); approve.setVisitId(visitId); approveList.add(approve); } approveMapper.insertBatchSomeColumn(approveList); } } /** * åå¨ä¸çº§å®¡æ¹è®°å½ * @param visitId * @param ids * @param approveParam */ public void saveAuditRecord(Integer visitId,List<Integer> ids,ApproveParam approveParam){ if(CollectionUtils.isNotEmpty(ids)) { List<Approve> approveList = new ArrayList<>(); for (Integer id:ids) { Approve approve = new Approve(); approve.setCreateDate(new Date()); approve.setIsdeleted(Constants.ZERO); approve.setStatus(Constants.ZERO); approve.setCheckInfo("æéè®°å½"); approve.setTemplatId(approveParam.getId()); approve.setLevel(approveParam.getLevel()); approve.setApproveType(approveParam.getApproveType()); approve.setChekorId(id); approve.setType(Constants.ONE); approve.setVisitId(visitId); approveList.add(approve); } approveMapper.insertBatchSomeColumn(approveList); } } /** * 夿ä¸çº§å®¡æ¹äººæ¯å¦æ¯å建人 * @return */ public Integer checkFirstAudit(){ ApproveParam approveParam = approveParamMapper.selectOne(new QueryWrapper<ApproveParam>().lambda() .eq(ApproveParam::getIsdeleted,Constants.ZERO) .eq(ApproveParam::getType,Constants.ZERO) .eq(ApproveParam::getLevel,Constants.ONE) .eq(ApproveParam::getMemberType,Constants.ZERO) .last("limit 1")); return Objects.isNull(approveParam)?null:approveParam.getId(); } /** * å建审æ¹äººåä¿¡æ¯ è¥è¿åå¾ å®¡æ¹äººå主é®å表为空ï¼åæ 审æ¹äººå æåºå¯¹åºå¼å¸¸ * @param level å¤ççº§å« * @param visitMember 被访人 */ public ApproveParam getApproveIds(Integer level,Member visitMember,List<Integer> ids){ //æ¥è¯¢å®¡æ¹é 置项 List<ApproveParam> allParam = approveParamMapper.selectList(new QueryWrapper<ApproveParam>().lambda() .eq(ApproveParam::getIsdeleted,Constants.ZERO) .eq(ApproveParam::getType,Constants.ZERO) .ge(!Objects.isNull(level),ApproveParam::getLevel,level) .orderByAsc(ApproveParam::getLevel)); ApproveParam approveParam = new ApproveParam(); //åé审æ¹/æéè®°å½çç¨æ·ä¸»é®éå ids.clear(); if(Objects.isNull(allParam)){ if(Objects.isNull(level)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æªé 置访客记å½å®¡æ¹æµï¼è¯·è系管çå"); } }else{ approveParam = allParam.get(0); if(approveParam.getMemberType().equals(Constants.ZERO)){ //è¢«è®¿äººå®¡æ¹ //æ·»å 审æ¹äºº ids.add(visitMember.getId()); }else if(approveParam.getMemberType().equals(Constants.ONE)){ //æå®äººåå®¡æ¹ String [] objIds = approveParam.getObjIds().split(","); for (String id:objIds) { //æ·»å 审æ¹äºº ids.add(Integer.valueOf(id)); } }else if(approveParam.getMemberType().equals(Constants.TWO)){ //é¨é¨ä¸»ç®¡å®¡æ¹ //审æ¹é¨é¨ Company auditCompany = this.getAuditCompanyHead(visitMember.getCompanyId(),approveParam.getObjLevel()); if(Objects.isNull(auditCompany)){ //审æ¹é¨é¨ä¸ºç©º èªå¨æµè½¬ä¸ä¸çº§å®¡æ¹é ç½® level = level + 1; return this.getApproveIds(level,visitMember,ids); }else{ //æ¥è¯¢é¨é¨è´è´£äºº Member headMember = memberMapper.selectById(auditCompany.getHeadId()); if(Objects.isNull(headMember)){ //æªæ¥è¯¢å°é¨é¨è´è´£äºº if(approveParam.getNoleaderOpt().equals(Constants.ONE)&&!Objects.isNull(auditCompany.getParentId())){ //ç±ä¸çº§ä¸»ç®¡ä»£æ¿å®¡æ ¸ auditCompany = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getId,auditCompany.getParentId())); if(Objects.isNull(auditCompany)){ //审æ¹é¨é¨ä¸ºç©º èªå¨æµè½¬ä¸ä¸çº§å®¡æ¹é ç½® level = level + 1; this.getApproveIds(level,visitMember,ids); }else{ headMember = memberMapper.selectById(auditCompany.getHeadId()); if(Objects.isNull(headMember)){ //æ¥è¯¢é¨é¨è´è´£äºº 为空 èªå¨æµè½¬ä¸ä¸çº§å®¡æ¹é ç½® level = level + 1; return this.getApproveIds(level,visitMember,ids); }else{ //æ·»å 审æ¹äºº ids.add(headMember.getId()); } } }else{ level = level + 1; return this.getApproveIds(level,visitMember,ids); } }else{ //æ·»å 审æ¹äºº ids.add(headMember.getId()); } } } } return approveParam; } /** * æ ¹æ®é ç½®æ¥è¯¢ä¸çº§æ°æ® * @param companyId ç´æ¥é¨é¨ * @param objLevel æ¥è¯¢çº§å« */ public Company getAuditCompanyHead(Integer companyId,Integer objLevel){ Integer queryLevel = Constants.ONE; Integer nextCompanyId = companyId; Company auditCompany = new Company(); while(queryLevel.equals(objLevel)){ auditCompany = companyMapper.selectById(nextCompanyId); if(Objects.isNull(auditCompany)){ return null; } nextCompanyId = auditCompany.getParentId(); } return auditCompany; } /** * æ ¡éªå¿ å¡«é¡¹æ°æ®æ¯å¦åæ³ @@ -692,6 +1024,18 @@ visitDetailVO.setVisitUserName(member.getName()); visitDetailVO.setVisitReason(visits.getReason()); visitDetailVO.setVisitTime(DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm") + " è³ " + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm") ); //被访人åé¨é¨ Company company = companyMapper.selectById(member.getCompanyId()); if(!Objects.isNull(company)){ visitDetailVO.setVisitUserCompany(company.getName()); } visitDetailVO.setName(visits.getName()); visitDetailVO.setCompanyName(visits.getCompanyName()); visitDetailVO.setFaceImg(visits.getFaceImg()); visitDetailVO.setImgUrl(visits.getImgurl()); visitDetailVO.setIdCardDecode(visits.getIdcardDecode()); visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode()); if(StringUtils.isNotBlank(visits.getDoors())){ List<DeviceRole> deviceRoleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() .select(DeviceRole::getName) @@ -703,8 +1047,9 @@ ); } } visitDetailVO.setWithVisitsList(visitsMapper.selectList(new QueryWrapper<Visits>().lambda() .select(Visits::getName,Visits::getPhone) visitDetailVO.setWithVisitsList( visitsMapper.selectList(new QueryWrapper<Visits>().lambda() .select(Visits::getName,Visits::getPhone,Visits::getFaceImg,Visits::getImgurl,Visits::getIdcardDecode) .eq(Visits::getParentId,id))); return visitDetailVO; } @@ -712,5 +1057,39 @@ @Override public PageData<VisitRecordVO> taskCenter(PageWrap<VisitRecordDTO> param) { VisitRecordDTO visitRecordDTO = param.getModel(); IPage<Visits> page = new Page<>(param.getPage(), param.getCapacity()); MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(visitRecordDTO); queryWrapper.selectAs(Visits::getId,VisitRecordVO::getId); queryWrapper.selectAs(Visits::getName,VisitRecordVO::getName); queryWrapper.selectAs(Visits::getStarttime,VisitRecordVO::getStartTime); queryWrapper.selectAs(Visits::getEndtime,VisitRecordVO::getEndTime); queryWrapper.selectAs(Visits::getReason,VisitRecordVO::getReason); queryWrapper.selectAs(Visits::getMemberNum,VisitRecordVO::getInNum); queryWrapper.selectAs(Visits::getCreateDate,VisitRecordVO::getCreateDate); queryWrapper.leftJoin(Approve.class,Approve::getId,Visits::getId); if(!Objects.isNull(visitRecordDTO)){ queryWrapper.like(StringUtils.isNotBlank(visitRecordDTO.getName()),Visits::getName,visitRecordDTO.getName()); queryWrapper.le(!Objects.isNull(visitRecordDTO.getCreateTimeS()),Visits::getCreateDate,visitRecordDTO.getCreateTimeS()); queryWrapper.ge(!Objects.isNull(visitRecordDTO.getCreateTimeE()),Visits::getCreateDate,visitRecordDTO.getCreateTimeE()); queryWrapper.eq(!Objects.isNull(visitRecordDTO.getType()),Visits::getType,visitRecordDTO.getType()); if(!Objects.isNull(visitRecordDTO.getState())&&visitRecordDTO.getState()<Constants.TWO){ queryWrapper.eq(Approve::getStatus,visitRecordDTO.getState()); queryWrapper.eq(Approve::getChekorId,visitRecordDTO.getMemberId()); }else if(!Objects.isNull(visitRecordDTO.getState())&&visitRecordDTO.getState()==Constants.TWO){ queryWrapper.eq(Visits::getMemberId,visitRecordDTO.getMemberId()); } } queryWrapper.orderByDesc(Visits::getCreateDate); IPage<VisitRecordVO> result = visitsJoinMapper.selectJoinPage(page, VisitRecordVO.class,queryWrapper); return PageData.from(result); } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -222,13 +222,16 @@ */ private Company getAddCompanyModel(ErpOrgListResponse respone, Date date) { Company company = new Company(); company.setStatus(respone.getStatus()); company.setIsdeleted(Constants.ZERO); company.setName(respone.getName()); company.setErpId(respone.getId()); company.setCreateDate(date); company.setType(Constants.ONE); company.setCode(respone.getCode()); if(StringUtils.isNotBlank(respone.getParentOrgId())&&!respone.getParentOrgId().equals("orgRoot")){ company.setErpParentId(respone.getParentOrgId()); } company.setErpDate(date); company.setHkStatus(Constants.ZERO); return company; server/dmvisit_service/src/main/java/com/doumee/service/common/tree/CompanyTree.java
@@ -46,7 +46,7 @@ rootNodeList.add(treeNode); } }else{ if (Objects.isNull(treeNode.getErpId())) { if (Objects.isNull(treeNode.getErpParentId())) { // æ¯ï¼æ·»å rootNodeList.add(treeNode); } server/dmvisit_web/src/main/java/com/doumee/api/web/ApiController.java
@@ -2,6 +2,7 @@ import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.core.model.PageData; import com.doumee.dao.business.model.Member; import lombok.extern.slf4j.Slf4j; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -34,7 +35,15 @@ */ protected Integer getMemberId() { Object obj = this.getRequest().getAttribute(JwtTokenUtil.UserId_Name); return obj != null ? (Integer) obj : null; return obj != null ? Integer.valueOf( obj.toString() ): null; } /** * è·åç¨æ· * * @return */ protected Member getMember() { Member member = (Member) this.getRequest().getAttribute(JwtTokenUtil.MEMBER); return member != null ? member : null; } } server/dmvisit_web/src/main/java/com/doumee/api/web/InternalController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,125 @@ package com.doumee.api.web; import com.alibaba.fastjson.JSONObject; import com.doumee.config.annotation.LoginRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.Visits; import com.doumee.dao.web.reqeust.AccountLoginDTO; import com.doumee.dao.web.reqeust.AuditApproveDTO; import com.doumee.dao.web.reqeust.VisitMemberDTO; import com.doumee.dao.web.reqeust.VisitRecordDTO; import com.doumee.dao.web.response.*; import com.doumee.service.business.ApproveService; import com.doumee.service.business.MemberService; import com.doumee.service.business.VisitsService; 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.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/12/28 14:31 */ @Api(tags = "3ãå é¨å³å¡äººå") @Trace(exclude = true) @RestController @RequestMapping("/web/internal") @Slf4j public class InternalController extends ApiController{ @Autowired private MemberService memberService; @Autowired private VisitsService visitsService; @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); } @LoginRequired @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())); } @LoginRequired @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()); return ApiResponse.success(visitsService.taskCenter(pageWrap)); } @LoginRequired @ApiOperation("访客记å½è¯¦æ ") @GetMapping("/visitDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "è®°å½ä¸»é®", required = true) }) public ApiResponse<VisitDetailVO> visitDetail (@RequestParam Integer id) { return ApiResponse.success(visitsService.getVisitDetail(id)); } @LoginRequired @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) { return ApiResponse.success(memberService.getVisitedMemberList(pageWrap)); } @LoginRequired @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()); return ApiResponse.success("æ¥è¯¢æå", visitsService.createFk(visits)); } @LoginRequired @ApiOperation(value = "å®¡æ¹æµè®°å½å®¡æ¹", notes = "å é¨äººå") @PostMapping("/auditApprove") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "ç¨æ·tokenå¼", required = true), }) public ApiResponse auditApprove(@RequestBody AuditApproveDTO auditApproveDTO) { visitsService.auditApprove(auditApproveDTO); return ApiResponse.success("æä½æå"); } } server/dmvisit_web/src/main/java/com/doumee/api/web/VisitorController.java
@@ -60,7 +60,7 @@ } @ApiOperation(value = "è®¿å®¢è®°å½æäº¤", notes = "è®¿å®¢è®°å½æäº¤") @ApiOperation(value = "è®¿å®¢è®°å½æäº¤", notes = "访客æäº¤") @PostMapping("/createFk") public ApiResponse createFk(@RequestBody Visits visits) { return ApiResponse.success("æ¥è¯¢æå", visitsService.createFk(visits));