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/ComActReserveRecordServiceImpl.java |   64 +++++++++++++++++++++++++++++++-
 1 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java
index e8a53c8..137c772 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActReserveRecordServiceImpl.java
@@ -7,11 +7,16 @@
 import com.panzhihua.common.model.dtos.community.reserve.*;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.common.model.vos.community.reserve.*;
+import com.panzhihua.common.model.vos.user.SysTemplateConfigVO;
+import com.panzhihua.common.service.user.UserService;
 import com.panzhihua.common.utlis.DateUtils;
+import com.panzhihua.common.utlis.WxUtil;
+import com.panzhihua.common.utlis.WxXCXTempSend;
 import com.panzhihua.service_community.dao.*;
 import com.panzhihua.common.model.dtos.community.CancelRecordDTO;
 import com.panzhihua.common.model.vos.R;
 import com.panzhihua.service_community.dao.ComActReserveOperationRecordMapper;
+import com.panzhihua.service_community.model.dos.ComActReserveDO;
 import com.panzhihua.service_community.model.dos.ComActReserveOperationRecordDO;
 import com.panzhihua.service_community.model.dos.ComActReserveRecordDO;
 import com.panzhihua.service_community.service.ComActReserveOperationRecordService;
@@ -26,6 +31,8 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -48,6 +55,10 @@
     private ComActReserveOperationRecordMapper comActReserveOperationRecordMapper;
     @Resource
     private ComActReserveOperationRecordService comActReserveOperationRecordService;
+    @Resource
+    private ComActActSignDAO comActActSignDAO;
+    @Resource
+    private UserService userService;
 
     private final static String CANCEL="用户取消";
     @Override
@@ -63,7 +74,13 @@
                 int result =comActReserveRecordMapper.updateById(comActReserveRecordDO);
                 //判断取消状态并添加操作记录
                 if(result>0){
+                    //更新回答用户数量
+                    ComActReserveDO comActReserveDO=comActReserveMapper.selectById(comActReserveRecordDO.getReserveId());
+                    Integer joinCount = comActReserveDO.getJoinCount();
+                    comActReserveDO.setJoinCount(joinCount != null ? joinCount - 1 : 0);
+                    comActReserveMapper.updateById(comActReserveDO);
                     ComActReserveOperationRecordDO comActReserveOperationRecordDO=new ComActReserveOperationRecordDO();
+                    comActReserveOperationRecordDO.setRemark(comActReserveRecord.getContent());
                     comActReserveOperationRecordDO.setReserveId(comActReserveRecordDO.getReserveId());
                     comActReserveOperationRecordDO.setReserveRecordId(comActReserveRecordDO.getId());
                     comActReserveOperationRecordDO.setType(ComActReserveOperationRecordDO.type.br);
@@ -71,7 +88,7 @@
                     comActReserveOperationRecordDO.setReserveContent(CANCEL);
                     comActReserveOperationRecordDO.setPhone(comActReserveRecordDO.getPhone());
                     comActReserveOperationRecordDO.setStatus(ComActReserveOperationRecordDO.status.qx);
-                    comActReserveOperationRecordDO.setUserId(comActReserveRecordDO.getUserId());
+                    comActReserveOperationRecordDO.setUserId(comActReserveRecord.getUserId());
                     comActReserveOperationRecordDO.setReserveTime(DateUtil.date());
                     comActReserveOperationRecordMapper.insert(comActReserveOperationRecordDO);
                     return R.ok();
@@ -127,12 +144,16 @@
             reserveRecordDTO.getIds().forEach(id -> {
                 ComActReserveRecordDO reserveRecordDO = comActReserveRecordMapper.selectById(id);
                 if(reserveRecordDO != null){
+                    //更新预约记录社区备注字段
+                    reserveRecordDO.setActRemark(reserveRecordDTO.getRemark());
+                    reserveRecordDO.setHandleId(userId);
+                    comActReserveRecordMapper.updateById(reserveRecordDO);
                     //取消预约返还可参加名额
                     comActReserveMapper.addReserveCountById(reserveRecordDO.getReserveId());
                     //添加操作记录
                     comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
                             ,reserveRecordDO.getId(),reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
-                            ,"社区管理员取消预约",reserveRecordDTO.getRemark(),ComActReserveOperationRecordDO.status.qx,userId,null);
+                            ,"社区管理员取消预约",reserveRecordDTO.getRemark(),ComActReserveOperationRecordDO.status.qx,userId,new Date());
                 }
             });
             return R.ok();
@@ -216,27 +237,56 @@
         Date nowDate = new Date();
         Long userId = makeHandleDTO.getUserId();
         String remark = makeHandleDTO.getRemark();
+        WxXCXTempSend util = new WxXCXTempSend();
         List<ComActReserveRecordDO> updateList = new ArrayList<>();
         makeHandleDTO.getIds().forEach(id -> {
             ComActReserveRecordDO reserveRecordDO = this.baseMapper.selectById(id);
             if(reserveRecordDO != null){
                 Date reserveTime = DateUtils.stringToDate(makeHandleDTO.getMakeTime(),DateUtils.ymdhms_format);
+
+                //查询预约登记信息
+                ComActReserveDO reserveDO = comActReserveMapper.selectById(reserveRecordDO.getReserveId());
+                // 预约以后给用户推送消息
+                Map<String, String> map = comActActSignDAO.getUserOpenId(reserveRecordDO.getUserId());
+                R<SysTemplateConfigVO> sysTemplateConfigVO=userService.selectTemplate(makeHandleDTO.getAreaCode(),10);
                 //判断处理是否通过
                 if(makeHandleDTO.getIsOk().equals(MakeHandleAdminDTO.isOk.yes)){
                     reserveRecordDO.setStatus(ComActReserveRecordDO.status.cg);
                     comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
                             ,id,reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
                             ,"社区管理员处理预约成功",remark,ComActReserveOperationRecordDO.status.cg,userId,reserveTime);
+                    if (map != null) {
+                        String openid = map.get("openid");
+                        try {
+                            WxUtil.sendSubscribeYYTX(openid, util.getAccessToken(), "预约成功",
+                                    reserveDO.getTitle(), reserveRecordDO.getName(), makeHandleDTO.getMakeTime(),sysTemplateConfigVO.getData().getTemplateId());
+                        } catch (Exception e) {
+                            log.error("消息推送失败,失败原因:" + e.getMessage());
+                        }
+                    }
                 }else if(makeHandleDTO.getIsOk().equals(MakeHandleAdminDTO.isOk.no)){
                     reserveRecordDO.setStatus(ComActReserveRecordDO.status.sb);
                     comActReserveOperationRecordService.addReserveOperationRecord(reserveRecordDO.getReserveId()
                             ,id,reserveRecordDO.getUserId(),ComActReserveOperationRecordDO.type.sq,null
                             ,"社区管理员处理预约失败",remark,ComActReserveOperationRecordDO.status.sb,userId,null);
+
+                    if (map != null) {
+                        String openid = map.get("openid");
+                        try {
+                            WxUtil.sendSubscribeYYTX(openid, util.getAccessToken(), "预约失败",
+                                    reserveDO.getTitle(), reserveRecordDO.getName(), DateUtils.format(reserveRecordDO.getReserveTime(),DateUtils.ymdhms_format),sysTemplateConfigVO.getData().getTemplateId());
+                        } catch (Exception e) {
+                            log.error("消息推送失败,失败原因:" + e.getMessage());
+                        }
+                    }
+                    //预约失败时需要更新预约登记参与人数
+                    comActReserveMapper.addReserveCountById(reserveRecordDO.getReserveId());
                 }
                 reserveRecordDO.setActRemark(remark);
                 reserveRecordDO.setReserveTime(reserveTime);
                 reserveRecordDO.setUpdateAt(nowDate);
                 reserveRecordDO.setUpdateBy(userId);
+                reserveRecordDO.setHandleId(userId);
                 updateList.add(reserveRecordDO);
             }
         });
@@ -277,9 +327,19 @@
             registerDetailedVO.setIdentity(identity.substring(0,identity.length()-1));
             //查询答题数据
             List<ComActReserveRegisterDetailedAnswerVO> answerList = comActReserveAnswerContentMapper.getRegisterDetailedAnswerList(reserveRecordId);
+            answerList.forEach(answer ->{
+                if(answer.getType()==4){
+                    answer.setAnswerContent(answer.getAnswerContent().replaceAll("(?<=\\w{3})\\w(?=\\w{4})", "*"));
+                }
+            });
             registerDetailedVO.setAnswerList(answerList);
         }
         return R.ok(registerDetailedVO);
     }
 
+    @Override
+    public R fiveCount(Long reserveId) {
+        return R.ok(comActReserveAnswerContentMapper.fiveCount(reserveId));
+    }
+
 }

--
Gitblit v1.7.1