From 415bf078cb4f9615e9090663b7880e35817fd036 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期六, 11 五月 2024 18:54:26 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java |  177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 167 insertions(+), 10 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 72e455e..65ac052 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -14,7 +14,9 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.UserAddRequest;
 import com.doumee.core.haikang.model.param.request.UserDelRequest;
+import com.doumee.core.haikang.model.param.respose.UserAddResponse;
 import com.doumee.core.haikang.model.param.respose.UserDelResponse;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.model.LoginUserInfo;
@@ -32,11 +34,16 @@
 import com.doumee.dao.admin.response.MemberInfoDTO;
 import com.doumee.dao.admin.response.StagingDataVO;
 import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.CompanyMapper;
 import com.doumee.dao.business.join.MemberJoinMapper;
 import com.doumee.dao.business.join.RetentionJoinMapper;
 import com.doumee.dao.business.join.UserActionJoinMapper;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemDepartment;
+import com.doumee.dao.system.model.SystemDepartmentUser;
 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;
@@ -51,6 +58,7 @@
 import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
@@ -111,20 +119,166 @@
 
     @Autowired
     private VisitsMapper visitsMapper;
+    @Autowired
+    private SystemUserMapper systemUserMapper;
 
 
     @Override
-    public Integer create(Member member) {
-        memberMapper.insert(member);
-        return member.getId();
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public Member create(Member member) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(loginUserInfo == null){
+            loginUserInfo = member.getLoginUserInfo();
+        }
+        isMemberParamValid(member);
+        //鑾峰彇鍑虹敓鏃ユ湡
+        //鑴辨晱鎿嶄綔
+        Member insert = initAddMemberModel(member,loginUserInfo);
+        //娴峰悍浜哄憳鏂板涓氬姟
+        if(dealHkUserBiz(insert)){
+            try {
+                memberMapper.insert(insert);
+                //鍒涘缓绯荤粺鐧婚檰璐﹀彿锛堥粯璁ゆ棤浠讳綍瑙掕壊锛�
+                createSystemUser(insert);
+            }catch (Exception e){
+                //濡傛灉鍙戠敓寮傚父锛屽垹闄ゅ凡缁忓垱寤虹殑浜哄憳淇℃伅
+                deleteHkUserBiz(insert.getHkId());
+                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鏂板缓澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+            }
+        }else{
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍛樺伐淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+        }
+        return insert;
+    }
+    private void createSystemUser(Member insert) {
+        SystemUser user = new SystemUser();
+        // 鐢熸垚瀵嗙爜鐩�
+        String salt = RandomStringUtils.randomAlphabetic(6);
+        // 鐢熸垚瀵嗙爜
+        user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
+        user.setSalt(salt);
+
+        // 鍒涘缓鐢ㄦ埛璁板綍
+        user.setType(insert.getType());
+        user.setUsername(insert.getPhone());
+        user.setEmpNo(insert.getCode());
+        user.setRealname(insert.getName());
+        user.setCompanyId(insert.getCompanyId());
+        user.setMobile(insert.getPhone());
+        user.setCreateTime(insert.getCreateDate());
+        user.setCreateUser(insert.getCreator());
+        user.setUpdateUser(insert.getEditor());
+        user.setUpdateTime(insert.getEditDate());
+        user.setMemberId(insert.getId());
+        user.setDeleted(Boolean.FALSE);
+        user.setFixed(Boolean.FALSE);
+        user.setStatus(Constants.ZERO);
+        systemUserMapper.insert(user);
+    }
+
+    private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) {
+        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.setCode(member.getCode());
+        insert.setType(Constants.TWO);
+        insert.setHkDate(new Date());
+        insert.setName(member.getName());
+        insert.setHkStatus(Constants.ONE);
+        insert.setSex(IdcardUtil.getGenderByIdCard(member.getIdcardNo()) ==1?Constants.TWO:Constants.ONE);//鏍规嵁韬唤璇佸彿鑾峰彇鎬у埆
+        insert.setBirthday( DateUtil.parse(IdcardUtil.getBirthByIdCard(member.getIdcardNo()), "yyyyMMdd"));
+        insert.setPhone(member.getPhone());
+        insert.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo()));//韬唤璇佸彿鍔犲瘑
+        insert.setIdcardDecode( Constants.getTuominStr(member.getIdcardNo()));
+        insert.setStatus(Constants.ZERO);
+        return  insert;
+    }
+
+    /**
+     * 鍒犻櫎娴峰悍浜哄憳淇℃伅
+     * @param hkId
+     */
+    private void deleteHkUserBiz(String hkId) {
+        UserDelRequest request = new UserDelRequest();
+        request.setPersonIds(new String[]{hkId});
+        BaseResponse<List<UserDelResponse>> result =  HKService.delBatchUser(request);
+    }
+
+    /**
+     * 娴峰悍浜哄憳鏂板涓氬姟
+     * @param insert
+     * @return
+     */
+    private boolean dealHkUserBiz(Member insert) {
+        String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+        Company company = companyMapper.selectById(insert.getCompanyId());
+        if(company == null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭凡琚垹闄わ紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
+        }
+        if(StringUtils.isBlank(company.getHkId())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ョ粍缁囦俊鎭湭鍚屾瀹夐槻骞冲彴锛岃鍏堝墠寰�銆愮粍缁囩鐞嗐�戣彍鍗曡繘琛岀淮鎶わ紒");
+        }
+        insert.setHkOrgId(company.getHkId());
+        UserAddRequest hkAddRequest = HkSyncOrgUserToHKServiceImpl.getUserAddModel(insert,path,Constants.ZERO);
+        if(hkAddRequest == null){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜鸿劯鐓х墖鏈夎锛岃灏濊瘯閲嶆柊涓婁紶锛�");
+        }
+        //澶勭悊鏂板鏁版嵁
+        BaseResponse<UserAddResponse> result =  HKService.addUser(hkAddRequest);
+        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
+            insert.setHkId(hkAddRequest.getPersonId());
+            insert.setFaceId(result.getData().getFaceId());
+            if(StringUtils.isNotBlank(insert.getFaceId())){
+                insert.setFaceStatus(Constants.ONE);
+            }else{
+                insert.setFaceStatus(Constants.ZERO);
+            }
+            return  true;
+        }else  if(result!=null ){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍚屾瀹夐槻骞冲彴澶辫触銆�"+result.getMsg()+"銆戯紝璇疯仈绯荤鐞嗗憳锛�");
+        }
+        return false;
+    }
+
+    private void isMemberParamValid(Member member) {
+        if (!PhoneUtil.isPhone(member.getPhone())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎");
+        }
+        if (!IdcardUtil.isValidCard(member.getIdcardNo())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"韬唤璇佸彿鏍煎紡鏈夎");
+        }
+
+        SystemUser systemUser = new SystemUser();
+        SystemUser queryUserDto = new SystemUser();
+        queryUserDto.setUsername(member.getPhone());
+        queryUserDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+        if (user != null) {
+            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+systemUser.getUsername()+"銆戝凡琚娇鐢紝涓嶈兘閲嶅");
+        }
+        // 楠岃瘉宸ュ彿
+        if (StringUtils.isNotBlank(member.getCode())) {
+            queryUserDto = new SystemUser();
+            queryUserDto.setDeleted(Boolean.FALSE);
+            queryUserDto.setEmpNo(member.getCode());
+            user = systemUserMapper.selectOne(new QueryWrapper<>(queryUserDto).last("limit 1"));
+            if (user != null) {
+                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "宸ュ彿銆�"+member.getCode()+"銆戝凡瀛樺湪");
+            }
+        }
     }
 
     @Transactional
     @Override
     public Integer laborMemberCreate(LaborMemberDTO member) {
-
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-
         if (PhoneUtil.isPhone(member.getPhone())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鐢佃瘽鍙风爜鏍煎紡鏈夎");
         }
@@ -296,7 +450,7 @@
         memberMapper.updateById(member);
     }
     @Override
-    public void updateFace(Member member) {
+    public boolean updateFace(Member member) {
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         wrapper.lambda().ne(Member::getRemark,"浜鸿劯宸插悓姝ユ渶鏂�");
         List<Member> list =memberMapper.selectList(wrapper);
@@ -312,9 +466,11 @@
                  update.setRemark("浜鸿劯宸插悓姝ユ渶鏂�");
                  update.setFaceStatus(Constants.ONE);
                  memberMapper.updateById(update);
+                 return true;
              }
            }
        }
+       return false;
     }
     @Override
     public void delHkForce(Member member) {
@@ -460,7 +616,6 @@
             queryWrapper.eq(Member::getCompanyId,member.getCompanyId());
         }
         queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
-
         List<Member> list =  memberJoinMapper.selectJoinList(Member.class,queryWrapper);
         if(list!=null){
             for(Member m : list){
@@ -654,7 +809,7 @@
                     .having(pageWrap.getModel().getTrainTimeEndTime()!=null,"trainTimeEndTime < "+ DateUtil.format(end,"yyyy-MM-dd HH:mm:ss"));
         IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
         if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
-            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
+            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode()) ==1?Constants.TWO:Constants.ONE));
         }
         return PageData.from(memberIPage);
     }
@@ -690,6 +845,8 @@
 
         queryWrapper.selectAll(Member.class);
         queryWrapper.selectAs(Company::getName,Member::getCompanyName);
+        queryWrapper.selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath);
+        queryWrapper.selectAs(Company::getCompanyPath,Member::getCompanyPath);
         queryWrapper.select(" ( select count(1) from member_card mc where mc.isdeleted = 0 and  mc.member_id = t.id ) as  memberCardCount ");
         queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
         queryWrapper.in(Objects.nonNull(pageWrap.getModel().getCompanyIds())&&pageWrap.getModel().getCompanyIds().size()>0,
@@ -731,10 +888,10 @@
                 memberInfoDTO.setRoleNames(this.dealRoleDatas(memberInfoDTO.getRoleId(),deviceRoleList));
                 //鎷兼帴鍓嶇紑
                 if(StringUtils.isNotBlank(memberInfoDTO.getFaceImg())){
-                    memberInfoDTO.setFaceImg(prefixUrl + memberInfoDTO.getFaceImg());
+                    memberInfoDTO.setFaceImgFull(prefixUrl + memberInfoDTO.getFaceImg());
                 }
                 if(StringUtils.isNotBlank(memberInfoDTO.getImgurl())){
-                    memberInfoDTO.setImgurl(prefixUrl + memberInfoDTO.getImgurl());
+                    memberInfoDTO.setImgurlFull(prefixUrl + memberInfoDTO.getImgurl());
                 }
             }
         }

--
Gitblit v1.9.3