server/dmvisit_admin/src/main/resources/application.yml
@@ -10,7 +10,7 @@ # application: # name: doumeemes profiles: active: pro active: dev # JSONè¿åé ç½® jackson: @@ -75,4 +75,4 @@ max-swallow-size: -1 servlet: session: timeout: PT3H #表示12å°æ¶ timeout: PT3H #表示12å°æ¶ server/dmvisit_service/src/main/java/com/doumee/core/utils/Date.java
@@ -25,6 +25,16 @@ return calendar.getTime(); } public java.util.Date getDayEnd (java.util.Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * è·åæ¥æçç»ææ¶é´ * @param date æ¥æ server/dmvisit_service/src/main/java/com/doumee/core/utils/Secure.java
@@ -1,6 +1,10 @@ package com.doumee.core.utils; import org.apache.commons.lang3.StringUtils; import org.springframework.util.DigestUtils; import java.util.Arrays; import java.util.stream.Collectors; /** * å®å ¨å¤çå·¥å ·ç±» @@ -19,4 +23,14 @@ public String encryptPassword(String password, String salt) { return DigestUtils.md5DigestAsHex((password + salt).getBytes()); } /** * å符串æºå¯ * @param strings * @return */ public String encryptString(String... strings) { String collect = Arrays.asList(strings).stream().filter(s -> StringUtils.isBlank(s)).collect(Collectors.joining()); return DigestUtils.md5DigestAsHex((collect).getBytes()); } } server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborMemberDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ package com.doumee.dao.admin.request; import com.doumee.core.annotation.excel.ExcelColumn; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author T14 */ @Data public class LaborMemberDTO { @ApiModelProperty(value = "æå±ç»ç»ç¼ç (å ³ècompany表)") private Integer companyId; @ApiModelProperty(value = "人è¸ç §ç") private String faceImg; @ApiModelProperty(value = "å¥åº·ç ") private String imgurl; @ApiModelProperty(value = "ç±»å 0å³å¡è®¿å®¢ 1æ®é访客 2å é¨äººå") private Integer type; @ApiModelProperty(value = "访客åç§°") private String name; @ApiModelProperty(value = "ææºå·") private String phone; @ApiModelProperty(value = "身份è¯å·") private String idcardNo; @ApiModelProperty(value = "è¯ä»¶æ¾ç¤ºä¿¡æ¯") private String idcardDecode; @ApiModelProperty(value = "å¹è®æææèµ·å§") private Date startTime; @ApiModelProperty(value = "å¹è®æææç»æ") private Date endTime; @ApiModelProperty(value = "æ§å« 1 : ç· ï¼ 0 : 女") private Integer sex; @ApiModelProperty(value = "æ·»å 人ç¼ç ï¼èªå ³èï¼", example = "1") private Integer parentId; } server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.doumee.dao.admin.response; 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 T14 */ @Data @ApiModel("å³å¡äººåä¿¡æ¯è¡¨") public class MemberInfoDTO { @ApiModelProperty(value = "主é®") private Integer id; @ApiModelProperty(value = "å建人ç¼ç ") private Integer creator; @ApiModelProperty(value = "å建人ç¼ç ") private String creatorName; @ApiModelProperty(value = "夿³¨") private String remark; @ApiModelProperty(value = "æå±ç»ç»ç¼ç (å ³ècompany表)") private Integer companyId; @ApiModelProperty(value = "å ¬å¸åç§°") private String companyName; @ApiModelProperty(value = "å ¬å¸è´è´£äºº") private String linkName; @ApiModelProperty(value = "å ¬å¸è´è´£äººèç³»çµè¯") @ExcelColumn(name="èç³»çµè¯") private String linkPhone; @ApiModelProperty(value = "人è¸ç §ç") private String faceImg; @ApiModelProperty(value = "å¥åº·ç ") private String imgurl; @ApiModelProperty(value = "ç±»å 0å³å¡è®¿å®¢ 1æ®é访客 2å é¨äººå") private Integer type; @ApiModelProperty(value = "访客åç§°") private String name; @ApiModelProperty(value = "访客年é¾") private Date birthday; @ApiModelProperty(value = "ææºå·") private String phone; @ApiModelProperty(value = "身份è¯å·ï¼MD4å å¯ï¼") private String idcardNo; @ApiModelProperty(value = "è¯ä»¶æ¾ç¤ºä¿¡æ¯") private String idcardDecode; @ApiModelProperty(value = "å·¥å·") private String code; @ApiModelProperty(value = "çæ¬¡") private String classes; @ApiModelProperty(value = "ç¶æ 0æ£å¸¸ 1ç¦ç¨ 2æé»/å»ç»") private Integer status; @ApiModelProperty(value = "æ·»å 人ç¼ç ï¼èªå ³èï¼") private Integer parentId; @ApiModelProperty(value = "微信openid") private String openid; @ApiModelProperty(value = "å¹è®æææç»ææ¶é´") @JsonFormat(pattern = "yyyy-MM-dd") private Date trainTimeEndTime; @ApiModelProperty(value = "é¨ç¦æææç»æ") @JsonFormat(pattern = "yyyy-MM-dd") private Date empowerEndTime; } server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberJoinMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ package com.doumee.dao.business.join; import com.doumee.dao.business.model.Member; import com.github.yulichang.base.mapper.MPJJoinMapper; import org.springframework.stereotype.Repository; /** * @author T14 */ @Repository public interface MemberJoinMapper extends MPJJoinMapper<Member> { } server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -32,7 +32,7 @@ @ApiModelProperty(value = "å建人åç§°") @TableField(exist = false) private Integer creatorName; private String creatorName; @ApiModelProperty(value = "å建æ¶é´") @ExcelColumn(name="å建æ¶é´") @@ -66,6 +66,10 @@ @ExcelColumn(name="æåºç ") private Integer sortnum; @ApiModelProperty(value = "å³å¡äººæ°") @TableField(exist = false) private Integer countNum; @ApiModelProperty(value = "徿 ") @ExcelColumn(name="徿 ") private String imgurl; @@ -80,7 +84,7 @@ @ApiModelProperty(value = "åç±»ç¼ç åç§°") @TableField(exist = false) private Integer categoryName; private String categoryName; @ApiModelProperty(value = "ä¼ä¸ä»£ç ") @ExcelColumn(name="ä¼ä¸ä»£ç ") server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -65,11 +65,11 @@ @ApiModelProperty(value = "é¨ç¦æææå¼å§") @ExcelColumn(name="é¨ç¦æææå¼å§") private String startTime; private Date startTime; @ApiModelProperty(value = "é¨ç¦æææç»æ", example = "1") @ExcelColumn(name="é¨ç¦æææç»æ") private Integer endTime; private Date endTime; @ApiModelProperty(value = "å¯¼å ¥ç¶æ", example = "1") @ExcelColumn(name="å¯¼å ¥ç¶æ") server/dmvisit_service/src/main/java/com/doumee/dao/business/model/TrainTime.java
@@ -57,11 +57,11 @@ @ApiModelProperty(value = "æææå¼å§") @ExcelColumn(name="æææå¼å§") private String startTime; private Date startTime; @ApiModelProperty(value = "æææç»æ", example = "1") @ExcelColumn(name="æææç»æ") private Integer endTime; private Date endTime; @ApiModelProperty(value = "å¯¼å ¥ç¶æ", example = "1") @ExcelColumn(name="å¯¼å ¥ç¶æ") server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -2,6 +2,8 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.admin.request.LaborMemberDTO; import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.business.model.Member; import java.util.List; @@ -14,11 +16,19 @@ /** * å建 * * * @param member å®ä½å¯¹è±¡ * @return Integer */ Integer create(Member member); /** * * å建å³å¡äººåä¿¡æ¯ * @param member * @return */ Integer laborMemberCreate(LaborMemberDTO member); /** * 主é®å é¤ @@ -78,7 +88,7 @@ * @return List<Member> */ List<Member> findList(Member member); /** * å页æ¥è¯¢ * @@ -87,6 +97,16 @@ */ PageData<Member> findPage(PageWrap<Member> pageWrap); /** * å页å³å¡ç¨æ·ä¿¡æ¯æ¥è¯¢ * * @param pageWrap å页对象 * @return PageData<Member> */ PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap); /** * æ¡ä»¶ç»è®¡ * server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -50,7 +50,6 @@ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); checkUnique(company); Company insert = new Company(); insert.setCreator(loginUserInfo.getId()); insert.setCreateDate(new Date()); @@ -233,6 +232,7 @@ .leftJoin(SystemUser.class,SystemUser::getId,Company::getCreator); queryWrapper.selectAll(Company.class) .selectAs(Category::getName,Company::getCategoryName) .select("count(t1.id) as countNum") .selectAs(SystemUser::getRealname,Company::getCreatorName); IPage<Company> companyIPage = companyJoinMapper.selectJoinPage(page, Company.class, queryWrapper); return PageData.from(companyIPage); server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,20 +1,40 @@ package com.doumee.service.business.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdcardUtil; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; 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.core.utils.Utils; import com.doumee.dao.admin.request.LaborMemberDTO; import com.doumee.dao.admin.response.MemberInfoDTO; import com.doumee.dao.business.MemberMapper; import com.doumee.dao.business.TrainTimeMapper; import com.doumee.dao.business.join.MemberJoinMapper; import com.doumee.dao.business.model.Company; import com.doumee.dao.business.model.Empower; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.TrainTime; import com.doumee.service.business.MemberService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 人åä¿¡æ¯è¡¨Serviceå®ç° @@ -27,10 +47,70 @@ @Autowired private MemberMapper memberMapper; @Autowired private MemberJoinMapper memberJoinMapper; @Autowired private TrainTimeMapper trainTimeMapper; @Override public Integer create(Member member) { memberMapper.insert(member); return member.getId(); } @Transactional @Override public Integer laborMemberCreate(LaborMemberDTO member) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (IdcardUtil.isValidCard(member.getIdcardNo())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份è¯å·æ ¼å¼æè¯¯"); } if (IdcardUtil.getGenderByIdCard(member.getIdcardNo()) == member.getSex()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"æ§å«æè¯¯"); } //è·ååºçæ¥æ String birthByIdCard = IdcardUtil.getBirthByIdCard(member.getIdcardNo()); //è±ææä½ String hide = IdcardUtil.hide(member.getIdcardNo(), 6, 14); //è½¬æ¢æ¥æ DateTime yyyyMMdd = DateUtil.parse(birthByIdCard, "yyyyMMdd"); Member insert = new Member(); insert.setCreator(loginUserInfo.getId()); insert.setCreateDate(new Date()); insert.setEditor(loginUserInfo.getId()); insert.setEditDate(new Date()); insert.setIsdeleted(Constants.ZERO); insert.setCompanyId(member.getCompanyId()); insert.setFaceImg(member.getFaceImg()); insert.setImgurl(member.getImgurl()); insert.setType(Constants.ZERO); insert.setName(member.getName()); insert.setBirthday(yyyyMMdd); insert.setPhone(member.getPhone()); insert.setIdcardNo(Utils.Secure.encryptString(member.getIdcardNo())); IdcardUtil.isValidCard(member.getIdcardNo()); insert.setIdcardDecode(hide); insert.setStatus(Constants.ZERO); insert.setParentId(member.getParentId()); memberMapper.insert(insert); TrainTime trainTime = new TrainTime(); trainTime.setCreator(loginUserInfo.getId().toString()); trainTime.setCreateDate(new Date()); trainTime.setEdirot(loginUserInfo.getId().toString()); trainTime.setEditDate(new Date()); trainTime.setIsdeleted(Constants.ZERO); trainTime.setMemberId(insert.getId()); trainTime.setStartTime(Utils.Date.getStart(member.getStartTime())); trainTime.setEndTime(Utils.Date.getDayEnd(member.getEndTime())); // trainTime.setImportStatus(); // trainTime.setImportInfo(); trainTimeMapper.insert(trainTime); return insert.getId(); } @Override @@ -83,7 +163,7 @@ QueryWrapper<Member> wrapper = new QueryWrapper<>(member); return memberMapper.selectList(wrapper); } @Override public PageData<Member> findPage(PageWrap<Member> pageWrap) { IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -225,6 +305,32 @@ } @Override public PageData<MemberInfoDTO> findLaborMemberInfoPage(PageWrap<MemberInfoDTO> pageWrap) { IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); MemberInfoDTO model = pageWrap.getModel(); Utils.MP.blankToNull(model); Date end = Utils.Date.getEnd(pageWrap.getModel().getTrainTimeEndTime()); queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId) .leftJoin(TrainTime.class,TrainTime::getMemberId,Member::getId) .leftJoin(Empower.class,Empower::getMemberId,Member::getId); queryWrapper.selectAll(Member.class) .selectAs(Company::getName,MemberInfoDTO::getCompanyName) .selectAs(Company::getLinkName,MemberInfoDTO::getLinkName) .select("Max(t1.endTime)","trainTimeEndTime") .select("Max(t2.endTime)","empowerEndTime"); queryWrapper.eq(Objects.nonNull(model.getCompanyId()),Member::getCompanyId,model.getCompanyId()) .like(StringUtils.isNotBlank(model.getName()),Member::getName,model.getName()) .like(StringUtils.isNotBlank(model.getPhone()),Member::getPhone,model.getPhone()) .like(StringUtils.isNotBlank(model.getIdcardDecode()),Member::getIdcardDecode,model.getIdcardDecode()) .having("trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss")); IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper); return PageData.from(memberIPage); } @Override public long count(Member member) { QueryWrapper<Member> wrapper = new QueryWrapper<>(member); return memberMapper.selectCount(wrapper);