From d7e663d304a2ccb565a24362b116ddaa9da9941a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 09 一月 2024 13:56:43 +0800
Subject: [PATCH] 整理

---
 server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  132 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 126 insertions(+), 6 deletions(-)

diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index f448df3..99374b6 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/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;
@@ -45,9 +51,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateUtils;
 import org.apache.shiro.SecurityUtils;
-import org.checkerframework.checker.units.qual.A;
 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;
 
@@ -87,6 +93,10 @@
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private UserActionJoinMapper userActionJoinMapper;
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
 
     @Override
     public Integer create(Member member) {
@@ -326,6 +336,10 @@
     @Override
     public List<Member> findList(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
+        if(null != member.getType()) {
+            wrapper.lambda().eq(Member::getType,member.getType());
+        }
+        wrapper.lambda().eq(Member::getIsdeleted,Constants.ZERO);
         return memberMapper.selectList(wrapper);
     }
 
@@ -620,7 +634,8 @@
                 .like(StringUtils.isNotBlank(pageWrap.getModel().getPhone()),Member::getPhone,pageWrap.getModel().getPhone())
                 .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName())
                 .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo())
-                .eq(Member::getStatus,Constants.Status.ENABLE.getValue())
+                .eq(Objects.isNull(pageWrap.getModel().getStatus()),Member::getStatus,Constants.Status.ENABLE.getValue())
+                .eq(!Objects.isNull(pageWrap.getModel().getStatus()),Member::getStatus,pageWrap.getModel().getStatus())
                 .eq(Member::getType,Constants.memberType.visitor)
                 .eq(Member::getIsdeleted,Constants.ZERO)
                 .orderByDesc(Member::getCreateDate);
@@ -640,7 +655,7 @@
         queryWrapper.selectAll(Member.class)
                 .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
                 .select(" (select ua.CREATE_DATE from user_action ua where ua.MEMBER_ID=t.id and ua.ISDELETED=0 and ua.type=1 order by ua.CREATE_DATE limit 1) as userActionType1")
-                .select(" (select su.remark from user_action uac  where uac.MEMBER_ID=t.id and uac.ISDELETED=0 and uac.type=1 order by uac.CREATE_DATE limit 1) as creatorName")
+                .select(" (select uac.remark from user_action uac  where uac.MEMBER_ID=t.id and uac.ISDELETED=0 and uac.type=1 order by uac.CREATE_DATE limit 1) as creatorName")
              /*   .select(" (select count(v.id) from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0) as visitsCount")*/
                 .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE limit 1) as visitsLastDate");
 
@@ -738,8 +753,9 @@
         List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>()
                 .lambda().eq(Member::getIsdeleted,Constants.ZERO)
                 .eq(Member::getType,Constants.memberType.internal)
+                .eq(Member::getStatus,Constants.ZERO)
                 .isNotNull(Member::getHkId)
-                .notExists(" SELECT 1 FROM device_event b WHERE b.ext_event_person_no =  HK_ID AND TO_DAYS( NOW()) - TO_DAYS( b.CREATE_DATE ) > "+systemDictData.getCode()+"  ")
+                .exists(" SELECT 1 FROM device_event b WHERE b.ext_event_person_no =  HK_ID AND TO_DAYS( NOW()) - TO_DAYS( b.CREATE_DATE ) > "+systemDictData.getCode()+"  ")
         );
         if(CollectionUtils.isEmpty(memberList)){
            return;
@@ -749,6 +765,7 @@
         //鍐荤粨鐘舵��
         memberMapper.update(null,new UpdateWrapper<Member>()
                 .lambda().set(Member::getStatus,Constants.TWO)
+                .set(Member::getEditDate,new Date())
                 .in(Member::getId,memberIds)
         );
         //澶勭悊涓嬪彂鏁版嵁
@@ -771,7 +788,6 @@
     /********************************************鍏紬鍙锋帴鍙�***********************************************************************/
 
 
-
     /**
      * 寰俊鎺堟潈鎺ュ彛
      * @param code
@@ -790,8 +806,30 @@
         }
         WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
         wxAuthorizeVO.setOpenid(openId);
+        //鏍规嵁openId 鏌ヨ鐢ㄦ埛淇℃伅
+        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鑷硆edis
+            RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
+            wxAuthorizeVO.setToken(token);
+        }
         return wxAuthorizeVO;
     }
+
+
 
 
     @Override
@@ -810,14 +848,96 @@
                 .last(" limit 1 ")
         );
         MemberVO memberVO = new MemberVO();
-        BeanUtils.copyProperties(member,memberVO);
+        if(!Objects.isNull(member)){
+            BeanUtils.copyProperties(member,memberVO);
+        }else{
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
         return memberVO;
     }
 
 
 
 
+    @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鑷硆edis
+        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
+        wxAuthorizeVO.setToken(token);
+        return wxAuthorizeVO;
+    }
 
 
 

--
Gitblit v1.9.3