From 70d2a5d0f9c6951b2d4cac954041ed73582ff7eb Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 六月 2025 11:54:00 +0800
Subject: [PATCH] 6.9新增登录失败冻结逻辑

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java |  157 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 115 insertions(+), 42 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
index 6baec52..ab6d0ff 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComPensionAuthRecordServiceImpl.java
@@ -15,9 +15,12 @@
 
 import javax.annotation.Resource;
 
-import com.panzhihua.common.utlis.WxUtil;
-import com.panzhihua.common.utlis.WxXCXTempSend;
-import com.panzhihua.service_community.dao.ComActActSignDAO;
+import com.panzhihua.common.model.vos.community.*;
+import com.panzhihua.common.model.vos.user.SysTemplateConfigVO;
+import com.panzhihua.common.service.user.UserService;
+import com.panzhihua.service_community.dao.*;
+import com.panzhihua.service_community.model.dos.*;
+import com.panzhihua.service_community.service.ComPensionAuthPensionerService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -29,7 +32,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.panzhihua.common.enums.PopulHouseUseEnum;
 import com.panzhihua.common.exceptions.ServiceException;
 import com.panzhihua.common.model.dtos.community.AddIdentityAuthDTO;
 import com.panzhihua.common.model.dtos.community.EldersAuthTypeQueryDTO;
@@ -37,30 +39,14 @@
 import com.panzhihua.common.model.dtos.community.PageIdentityAuthRecordDTO;
 import com.panzhihua.common.model.helper.AESUtil;
 import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.model.vos.community.ComPensionAuthRecordExcleVO;
-import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportExcelVO;
-import com.panzhihua.common.model.vos.community.ComPensionAuthRecordImportMistakeExcelVO;
-import com.panzhihua.common.model.vos.community.ComPensionAuthRecordStatisticExcleVO;
-import com.panzhihua.common.model.vos.community.ComPensionAuthRecordVO;
-import com.panzhihua.common.model.vos.community.SysConfVO;
 import com.panzhihua.common.utlis.AgeUtils;
 import com.panzhihua.common.utlis.DateUtils;
-import com.panzhihua.common.utlis.Snowflake;
 import com.panzhihua.common.utlis.StringUtils;
-import com.panzhihua.service_community.dao.ComActDAO;
-import com.panzhihua.service_community.dao.ComMngPopulationDAO;
-import com.panzhihua.service_community.dao.ComPensionAuthPensionerDAO;
-import com.panzhihua.service_community.dao.ComPensionAuthRecordDAO;
-import com.panzhihua.service_community.dao.ComPensionAuthStatisticsDAO;
-import com.panzhihua.service_community.dao.SysConfMapper;
-import com.panzhihua.service_community.model.dos.ComActDO;
-import com.panzhihua.service_community.model.dos.ComMngPopulationDO;
-import com.panzhihua.service_community.model.dos.ComPensionAuthPensionerDO;
-import com.panzhihua.service_community.model.dos.ComPensionAuthRecordDO;
-import com.panzhihua.service_community.model.dos.ComPensionAuthStatisticsDO;
-import com.panzhihua.service_community.model.dos.SysConfDO;
+import com.panzhihua.common.utlis.WxUtil;
+import com.panzhihua.common.utlis.WxXCXTempSend;
 import com.panzhihua.service_community.service.ComPensionAuthRecordService;
 
+import cn.hutool.core.util.IdcardUtil;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -91,6 +77,12 @@
     private ComActActSignDAO comActActSignDAO;
     @Value("${domain.aesKey:}")
     private String aesKey;
+    @Resource
+    private ComPensionAuthPensionerService comPensionAuthPensionerService;
+    @Resource
+    private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
+    @Resource
+    private UserService userService;
 
     @Override
     public R pagePensionAuthRecords(PageElderAuthRecordsDTO pageElderAuthRecordsDTO) {
@@ -105,6 +97,13 @@
         }
         page.setSize(pageSize);
         page.setCurrent(pageNum);
+        try {
+            //关键词为空时需要进行加密,通过加密去检索身份证号筛选高龄认证记录
+            String idCard = AESUtil.encrypt128(pageElderAuthRecordsDTO.getSearchKey(), aesKey);
+            pageElderAuthRecordsDTO.setIdCard(idCard);
+        }catch (Exception e){
+            log.error("查询高龄认证记录转换身份证号失败");
+        }
         IPage<ComPensionAuthRecordVO> iPage = comPensionAuthRecordDAO.pagePensionAuthRecords(page, pageElderAuthRecordsDTO);
         if (!iPage.getRecords().isEmpty()) {
             iPage.getRecords().forEach(comPensionAuthRecordVO -> {
@@ -120,6 +119,11 @@
     public R detailPensionAuthRecords(Long authRecordId) {
         ComPensionAuthRecordVO comPensionAuthRecordVO = comPensionAuthRecordDAO.detailPensionAuthRecords(authRecordId);
         comPensionAuthRecordVO.setNextIds(comPensionAuthRecordDAO.getNextIds(comPensionAuthRecordVO.getCommunityId(),authRecordId));
+        try {
+            comPensionAuthRecordVO.setAge(IdcardUtil.getAgeByIdCard(comPensionAuthRecordVO.getIdCard()));
+        }catch (Exception e){
+            log.error("身份证转换失败");
+        }
         return R.ok(comPensionAuthRecordVO);
     }
 
@@ -129,12 +133,21 @@
         if (comPensionAuthRecordDO == null) {
             return R.fail("未查询到养老认证记录");
         }
+
+        ComPensionAuthPensionerDO authPensionerDO = comPensionAuthPensionerDAO.selectById(comPensionAuthRecordDO.getPensionerId());
+        if(authPensionerDO == null){
+            return R.fail("未查询到老人信息");
+        }
+
         BeanUtils.copyProperties(comPensionAuthRecordVO, comPensionAuthRecordDO);
         if (comPensionAuthRecordVO.getApprovalStatus().equals(PASS_THROUGH.getStatus())) {
             comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
-            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!");
+            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!", comPensionAuthRecordVO.getAreaCode());
+
+            authPensionerDO.setAddress(comPensionAuthRecordVO.getAddress());
+            comPensionAuthPensionerDAO.updateById(authPensionerDO);
         } else {
-            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", comPensionAuthRecordVO.getRejectReason());
+            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", comPensionAuthRecordVO.getRejectReason(),comPensionAuthRecordVO.getAreaCode());
         }
         comPensionAuthRecordDO.setApprovalDate(new Date());
         int nub = comPensionAuthRecordDAO.updateById(comPensionAuthRecordDO);
@@ -144,17 +157,18 @@
         return R.ok();
     }
 
-    private void sendAuthSubscribe(Long userId, String name, String result) {
+    private void sendAuthSubscribe(Long userId, String name, String result,String areaCode) {
         //发送订阅通知
         Map<String, String> map = comActActSignDAO.getUserOpenId(userId);
         if (map != null) {
             String openid = map.get("openid");
             try {
                 WxXCXTempSend util = new WxXCXTempSend();
-                String accessToken = util.getAppAccessToken();
+                String accessToken = util.getAccessToken();
+                R<SysTemplateConfigVO> sysTemplateConfigVO=userService.selectTemplate(areaCode,5);
                 WxUtil.sendSubscribeRZSH(openid, accessToken, name,
                         DateUtils.format(new Date(), DateUtils.ymdhms_format),
-                        result);
+                        result,sysTemplateConfigVO.getData().getTemplateId());
             } catch (Exception e) {
                 log.error("推送审核状态订阅消息失败,失败原因:" + e.getMessage());
             }
@@ -188,6 +202,8 @@
         List<ComPensionAuthRecordDO> saveList = new ArrayList<>();
         // 需要修改的认证记录集合
         List<ComPensionAuthRecordDO> updateList = new ArrayList<>();
+        // 需要更新的老人信息
+        List<ComPensionAuthPensionerDO> updatePensionerList = new ArrayList<>();
         log.info("开始处理导入数据");
         Date nowDate = new Date();
         List<ComPensionAuthRecordImportMistakeExcelVO> mistakes = new ArrayList<>();
@@ -247,15 +263,30 @@
                                     //存在待审核记录,进行更新认证信息
                                     comPensionAuthRecordDO = updatePensionAuthRecordsDO(vo, comPensionAuthRecordDO, userId,communityId,nowDate);
                                     updateList.add(comPensionAuthRecordDO);
+
+                                    if(StringUtils.isNotEmpty(vo.getAddress())){
+                                        comPensionAuthPensionerDO.setAddress(vo.getAddress());
+                                        updatePensionerList.add(comPensionAuthPensionerDO);
+                                    }
                                 }else {
                                     // 不存在记录,则新增
                                     comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
                                     saveList.add(comPensionAuthRecordDO);
+
+                                    if(StringUtils.isNotEmpty(vo.getAddress())){
+                                        comPensionAuthPensionerDO.setAddress(vo.getAddress());
+                                        updatePensionerList.add(comPensionAuthPensionerDO);
+                                    }
                                 }
                             }else {
                                 // 不存在记录,则新增
                                 comPensionAuthRecordDO = savePensionAuthRecordsDO(vo, comPensionAuthPensionerDO, authPeriod, userId,communityId,nowDate);
                                 saveList.add(comPensionAuthRecordDO);
+
+                                if(StringUtils.isNotEmpty(vo.getAddress())){
+                                    comPensionAuthPensionerDO.setAddress(vo.getAddress());
+                                    updatePensionerList.add(comPensionAuthPensionerDO);
+                                }
                             }
                         }
                     }
@@ -284,6 +315,9 @@
             log.info("执行数据库更新线下认证记录");
             comPensionAuthRecordDAO.updateAll(updateList);
             log.info("数据库更新线下认证记录完成");
+        }
+        if(!updatePensionerList.isEmpty()){
+            comPensionAuthPensionerService.updateBatchById(updatePensionerList);
         }
         log.info("执行数据库导入完成");
 
@@ -369,14 +403,9 @@
                 comPensionAuthStatisticsDO.setSum(comPensionAuthPensionerDOS.size());
             }
             comPensionAuthStatisticsDAO.insert(comPensionAuthStatisticsDO);
-            //上期已认证人数
-            int authSum = comPensionAuthPensionerDAO.havePensionAuthPensionerAmount(act.getCommunityId(), String.valueOf(year - 1));
-            ComPensionAuthStatisticsDO comPensionAuthStatisticsDO1 = comPensionAuthStatisticsDAO.selectOne(new QueryWrapper<ComPensionAuthStatisticsDO>()
-                    .lambda().eq(ComPensionAuthStatisticsDO::getCommunityId, act.getCommunityId()).eq(ComPensionAuthStatisticsDO::getYear, year - 1));
-            comPensionAuthStatisticsDO1.setAuthSum(authSum);
-            comPensionAuthStatisticsDO1.setNoAuthSum(comPensionAuthStatisticsDO1.getSum() - comPensionAuthStatisticsDO1.getAuthSum());
-            comPensionAuthStatisticsDAO.updateById(comPensionAuthStatisticsDO1);
         });
+
+
         return R.ok();
     }
 
@@ -398,7 +427,6 @@
             ,  ComPensionAuthPensionerDO comPensionAuthPensionerDO, String authPeriod, Long userId, Long communityId,Date date) {
         ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO();
         BeanUtils.copyProperties(vo, comPensionAuthRecordDO);
-        comPensionAuthRecordDO.setId(Snowflake.getId());
         comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
         comPensionAuthRecordDO.setAuthPeriod(authPeriod);
         comPensionAuthRecordDO.setSubmitUserId(userId);
@@ -453,16 +481,15 @@
             return R.fail("信息有误,请检查!");
         }
         Date dateNow = new Date();
-        String currentAuthPeriod = new SimpleDateFormat("yyyy").format(dateNow);
         List<ComPensionAuthRecordDO> currentAuthPeriodRecords = comPensionAuthRecordDAO
                 .selectList(new QueryWrapper<ComPensionAuthRecordDO>().lambda()
-                        .eq(ComPensionAuthRecordDO::getAuthPeriod, currentAuthPeriod)
+                        .eq(ComPensionAuthRecordDO::getAuthPeriod, comPensionAuthPensionerDO)
                         .eq(ComPensionAuthRecordDO::getPensionerId, comPensionAuthPensionerDO.getId()));
         if (!currentAuthPeriodRecords.isEmpty()) {
             boolean alreadyAuth = currentAuthPeriodRecords.stream()
                     .filter(record -> record.getAuthStatus().equals(CERTIFIED.getStatus())).findFirst().isPresent();
             if (alreadyAuth) {
-                return R.fail(String.format("该人员%s期已认证无需重复认证", currentAuthPeriod));
+                return R.fail(String.format("该人员%s期已认证无需重复认证", addIdentityAuthDTO.getAuthPeriod()));
             }
             boolean isPendingReview = currentAuthPeriodRecords.stream()
                     .filter(record -> record.getApprovalStatus().intValue() == PENDING_REVIEW.getStatus()).findFirst().isPresent();
@@ -473,8 +500,8 @@
         ComPensionAuthRecordDO comPensionAuthRecordDO = new ComPensionAuthRecordDO();
         BeanUtils.copyProperties(addIdentityAuthDTO, comPensionAuthRecordDO);
         comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
-        comPensionAuthRecordDO.setAuthDate(dateNow);
-        comPensionAuthRecordDO.setAuthPeriod(currentAuthPeriod);
+        comPensionAuthRecordDO.setAuthDate(addIdentityAuthDTO.getAuthTime());
+        comPensionAuthRecordDO.setAuthPeriod(addIdentityAuthDTO.getAuthPeriod());
         if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) {
             comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus());
             comPensionAuthRecordDO.setApprovalDate(dateNow);
@@ -484,7 +511,7 @@
             return R.fail("认证失败,请重新尝试");
         }
         if (addIdentityAuthDTO.getAuthMethod().intValue() == FACE_AUTH.getMethod()) {
-            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!");
+            sendAuthSubscribe(comPensionAuthRecordDO.getSubmitUserId(), "养老认证", "认证成功!", addIdentityAuthDTO.getAreaCode());
         }
         return R.ok();
     }
@@ -509,4 +536,50 @@
     public R retrievePensionAuthDetail(Long identityAuthId) {
         return R.ok(comPensionAuthRecordDAO.findById(identityAuthId));
     }
+
+    @Override
+    public R add(ComElderAuthRecordVO comElderAuthRecordVO) {
+        if(!comElderAuthRecordVO.getIdCard().isEmpty()){
+            List<ComMngPopulationDO>  comMngPopulationDOS=comMngPopulationDAO.selectList(new QueryWrapper<ComMngPopulationDO>().lambda().eq(ComMngPopulationDO::getCardNoStr,comElderAuthRecordVO.getIdCard()).orderByDesc(ComMngPopulationDO::getCreateAt));
+            if(!comMngPopulationDOS.isEmpty()){
+                ComMngPopulationDO comMngPopulationDO=comMngPopulationDOS.get(0);
+                ComPensionAuthPensionerDO comPensionAuthPensionerDO=comPensionAuthPensionerDAO.selectOne(new QueryWrapper<ComPensionAuthPensionerDO>().lambda().eq(ComPensionAuthPensionerDO::getPopulationId,comMngPopulationDO.getId()));
+                if(comPensionAuthPensionerDO!=null){
+                   Integer count=comPensionAuthRecordDAO.selectCount(new QueryWrapper<ComPensionAuthRecordDO>().lambda().eq(ComPensionAuthRecordDO::getPensionerId,comPensionAuthPensionerDO.getId()).eq(ComPensionAuthRecordDO::getAuthPeriod,comElderAuthRecordVO.getAuthPeriod()));
+                   if(count==0){
+                       ComPensionAuthRecordDO comPensionAuthRecordDO=new ComPensionAuthRecordDO();
+                       BeanUtils.copyProperties(comElderAuthRecordVO,comPensionAuthRecordDO);
+                       comPensionAuthRecordDO.setApprovalStatus(PASS_THROUGH.getStatus());
+                       comPensionAuthRecordDO.setApprovalDate(new Date());
+                       comPensionAuthRecordDO.setAuthStatus(CERTIFIED.getStatus());
+                       comPensionAuthRecordDO.setAuthMethod(ComPensionAuthRecordDO.authMethod.xxrz);
+                       comPensionAuthRecordDO.setPensionerId(comPensionAuthPensionerDO.getId());
+                       comPensionAuthRecordDO.setSubmitUserId(comElderAuthRecordVO.getSubmitUserId());
+                       comPensionAuthRecordDO.setApproverId(comElderAuthRecordVO.getSubmitUserId());
+                       if (this.baseMapper.insert(comPensionAuthRecordDO) < 0) {
+                           return R.fail("认证失败,请重新尝试");
+                       }
+                       comMngPopulationDO.setPhone(comElderAuthRecordVO.getPhone());
+                       comMngPopulationDAO.updateById(comMngPopulationDO);
+                       comPensionAuthPensionerDO.setAddress(comElderAuthRecordVO.getAddress());
+                       comPensionAuthPensionerDO.setPhone(comElderAuthRecordVO.getPhone());
+                       comPensionAuthPensionerDO.setIdCard(null);
+                       comPensionAuthPensionerDAO.updateById(comPensionAuthPensionerDO);
+                       ComElderAuthElderliesDO comElderAuthElderliesDO=comElderAuthElderliesDAO.selectOne(new QueryWrapper<ComElderAuthElderliesDO>().lambda().eq(ComElderAuthElderliesDO::getPopulationId,comMngPopulationDO.getId()));
+                       if(comElderAuthElderliesDO!=null){
+                           comElderAuthElderliesDO.setAddress(comElderAuthRecordVO.getAddress());
+                           comElderAuthElderliesDO.setPhone(comElderAuthRecordVO.getPhone());
+                           comElderAuthElderliesDO.setIdCard(null);
+                           comElderAuthElderliesDAO.updateById(comElderAuthElderliesDO);
+                       }
+                       return R.ok();
+                   }
+                   return R.fail("当前期数已认证,请勿重复认证");
+                }
+                return R.fail("无养老认证数据");
+            }
+            return R.fail("该身份证无实有人口信息");
+        }
+        return R.fail("身份证不能为空");
+    }
 }

--
Gitblit v1.7.1