From 40ff51856a11151ab3f0154a1ae3530e00dafff7 Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期四, 23 十二月 2021 13:52:31 +0800
Subject: [PATCH] 修改活动bug

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml                                                |    8 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java |  137 +++++++++++++++-----------
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActIntegralUserMapper.java                    |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml                                                 |   10 +-
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/integral/admin/AddComActIntegralUserDTO.java          |   14 +-
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActIntegralUserApi.java                       |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserServiceImpl.java      |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActIntegralUserDOMapper.xml                                           |    6 +
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java                                    |    4 
 springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java                                      |   19 +--
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActIntegralUserService.java               |    4 
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java                           |   16 +-
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java                                 |    8 +
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java          |   24 +++-
 14 files changed, 158 insertions(+), 104 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/integral/admin/AddComActIntegralUserDTO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/integral/admin/AddComActIntegralUserDTO.java
index 279d8f8..2167b83 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/integral/admin/AddComActIntegralUserDTO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/integral/admin/AddComActIntegralUserDTO.java
@@ -11,7 +11,7 @@
     @ApiModelProperty("业务id")
     private Long serviceId;
 
-    @ApiModelProperty("积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷 8.活动签到 9.取消活动)")
+    @ApiModelProperty("积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参加居民活动 5.参加志愿者活动 6.参与党员活动 7.参与调查问卷 8.取消活动 )")
     private Integer integralType;
 
     @ApiModelProperty(value = "社区id")
@@ -26,6 +26,9 @@
     @ApiModelProperty(value = "签到类型 1居民 志愿者签到 2党员签到")
     private Integer activityType;
 
+    @ApiModelProperty(value = "是否是志愿者 0 不是 1 是")
+    private Integer isVolunteer;
+
     public AddComActIntegralUserDTO(Long serviceId, Integer integralType, Long communityId, Long userId) {
         this.serviceId = serviceId;
         this.integralType = integralType;
@@ -36,17 +39,16 @@
     public AddComActIntegralUserDTO() {}
 
     /**
-     * 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷 8.活动签到 9.取消活动)
+     * 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参加居民活动 5.参加志愿者活动 6.参与党员活动 7.参与调查问卷 8.取消活动 )
      */
     public interface integralType {
         int fbssp = 1;
         int fbwxy = 2;
         int cyystp = 3;
-        int cyzyzhd = 4;
-        int cysqhd = 5;
+        int cyjmhd = 4;
+        int cyzyzhd = 5;
         int cydyhd = 6;
         int cydcwj = 7;
-        int hdqd = 8;
-        int qxhd = 9;
+        int qxhd = 8;
     }
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java
index 29bb739..05a20af 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActActRegistVO.java
@@ -80,4 +80,12 @@
 
     @ApiModelProperty(value = "活动类型 1居民,志愿者 2党员")
     private Integer activityType;
+
+    @ApiModelProperty("签到开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty("签到结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
 }
\ No newline at end of file
diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
index c0c4557..ad1e46c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -5304,11 +5304,11 @@
     R addIntegralTradeAdmin(@RequestBody AddComActIntegralUserDTO integralUserDTO);
 
     /**
-     * 根据社区活动id查询社区活动报名人员列表
+     * 根据社区活动id查询社区活动报名且未参与人员列表
      *
      * @param activityId
      *            活动id
-     * @return 社区活动报名人员列表
+     * @return 社区活动报名且未参与人员列表
      */
     @PostMapping("/integral/act/activity/admin")
     R getTaskActivityPeopleList(@RequestParam("activityId") Long activityId);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActIntegralUserApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActIntegralUserApi.java
index acb283b..33e02ca 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActIntegralUserApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComActIntegralUserApi.java
@@ -142,11 +142,11 @@
     }
 
     /**
-     * 根据社区活动id查询社区活动报名人员列表
+     * 根据社区活动id查询社区活动报名且未参与人员列表
      * 
      * @param activityId
      *            活动id
-     * @return 社区活动报名人员列表
+     * @return 社区活动报名且未参与人员列表
      */
     @PostMapping("/act/activity/admin")
     public R getTaskActivityPeopleList(@RequestParam("activityId") Long activityId) {
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
index f3ab2fb..82d3d98 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActActivityDAO.java
@@ -45,7 +45,7 @@
         + "count(if(s.is_volunteer=1,s.id,null))volunteer_now, "
         + "count(if(s.is_volunteer=0,s.id,null))participant_now, " + "a.participant_max, " + "a.sign_up_begin, "
         + "a.sign_up_end, " + "ca.name as communityName  " + "FROM " + "com_act_activity a  "
-        + "left join sys_user u on a.sponsor_id=u.user_id " + "left join com_act_act_sign s on a.id=s.activity_id  "
+        + "left join sys_user u on a.sponsor_id=u.user_id " + "left join (select * from com_act_act_sign where `status` = 1) s on a.id=s.activity_id  "
         + "left join com_act ca on a.community_id=ca.community_id  " + " where 1=1 " +
 
         "<if test='comActActivityVO.choice == 0 '>" + "AND a.community_id=#{comActActivityVO.communityId} " + " </if> "
@@ -79,12 +79,12 @@
      */
     ComActActivityVO inforActivity(@Param("id") Long id);
 
-    @Select("SELECT " + "a.*  " + "FROM " + "com_act_act_sign s " + "JOIN com_act_activity a ON s.activity_id = a.id  "
+    @Select("SELECT " + "a.*  " + "FROM " + "(select * from com_act_act_sign where `status` = 1) s " + "JOIN com_act_activity a ON s.activity_id = a.id  "
         + "WHERE " + "s.user_id = #{comActActivityVO.sponsorId}  " + "ORDER BY " + "s.create_at DESC")
     IPage<ComActActivityVO> pageMyActivity(Page page, @Param("comActActivityVO") ComActActivityVO comActActivityVO);
 
     @Select("select " + "t.activity_name," + "t.id," + "t.end_at," + "t.begin_at," + "t.cover," + "t.status "
-        + "from com_act_act_sign s  "
+        + "from (select * from com_act_act_sign where `status` = 1) s  "
         + "join sys_user u on s.user_id=u.user_id and u.phone=#{phone} and s.is_volunteer=1 "
         + "join com_act_activity t on s.activity_id=t.id and t.status=5")
     List<ComActActivityVO> listActivityByPhone(String phone);
@@ -92,7 +92,7 @@
     @Select("select t.id from ( " + "SELECT  " + "a.id, " + "a.activity_name, "
         + "COUNT(case when s.is_volunteer=1 then s.id else null end )volunteernum, "
         + "COUNT(case when s.is_volunteer=0 then s.id else null end)usernum, " + "a.participant_min, "
-        + "a.volunteer_min " + "FROM " + "com_act_activity a  " + "LEFT JOIN com_act_act_sign s on a.id=s.activity_id  "
+        + "a.volunteer_min " + "FROM " + "com_act_activity a  " + "LEFT JOIN (select * from com_act_act_sign where `status` = 1) s on a.id=s.activity_id  "
         + "WHERE " + "a.`status` in(3,4) and TIMESTAMPDIFF(MINUTE,SYSDATE(),a.sign_up_end)<=0 "
         + "GROUP BY a.id)t WHERE t.usernum<participant_min or t.volunteernum<volunteer_min")
     List<Long> selectTimedTaskActActivity();
@@ -170,8 +170,8 @@
     @Select("SELECT " + " count( caa.id ) as totalNum, "
         + " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and volunteer_min = 0 and community_id = #{communityId}) as commonNum, "
         + " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and volunteer_min > 0 and community_id = #{communityId}) as volunteerNum, "
-        + " (select count(caas.user_id) from com_act_act_sign as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 0 and caa.community_id = #{communityId}) as commonPeopleNum, "
-        + " (select count(caas.user_id) from com_act_act_sign as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 1 and caa.community_id = #{communityId}) as volunteerPeopleNum, "
+        + " (select count(caas.user_id) from (select * from com_act_act_sign where `status` = 1) as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 0 and caa.community_id = #{communityId}) as commonPeopleNum, "
+        + " (select count(caas.user_id) from (select * from com_act_act_sign where `status` = 1) as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.`status` IN (1,2,3,4,5) and is_volunteer = 1 and caa.community_id = #{communityId}) as volunteerPeopleNum, "
         + " (select count(id) from com_act_activity where `status` IN (1,2,3,4,5) and community_id = #{communityId} and create_at between date_sub(curdate() - day(curdate()) +1,interval 1 month) and now()) as currentNum "
         + "FROM " + " com_act_activity AS caa  " + "WHERE "
         + " caa.`status` IN (1,2,3,4,5) and community_id = #{communityId}")
@@ -202,9 +202,9 @@
         @Param("actActivityListDTO") ScreenActActivityListDTO actActivityListDTO);
 
     @Select("SELECT " + " count( caas.id ) AS volunteerCount,( " + " SELECT " + "  count( caas1.id )  " + " FROM "
-        + "  com_act_act_sign AS caas1 " + "  LEFT JOIN sys_user AS su1 ON su1.user_id = caas1.user_id  " + " WHERE "
+        + "  (select * from com_act_act_sign where `status` = 1) AS caas1 " + "  LEFT JOIN sys_user AS su1 ON su1.user_id = caas1.user_id  " + " WHERE "
         + "  su1.is_volunteer = 0  " + "  AND caas1.activity_id = #{activityId}  " + " ) AS participantCount  "
-        + "FROM " + " com_act_act_sign AS caas " + " LEFT JOIN sys_user AS su ON su.user_id = caas.user_id  " + "WHERE "
+        + "FROM " + " (select * from com_act_act_sign where `status` = 1) AS caas " + " LEFT JOIN sys_user AS su ON su.user_id = caas.user_id  " + "WHERE "
         + " su.is_volunteer = 1  " + " AND activity_id = #{activityId} ")
     ActActivityListVO getScreenActActivityPeopleCount(@Param("activityId") Long activityId);
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActIntegralUserMapper.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActIntegralUserMapper.java
index 89e712a..fdb7d7d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActIntegralUserMapper.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActIntegralUserMapper.java
@@ -54,11 +54,11 @@
         @Param("communityRankDTO") ComActIntegralCommunityRankDTO communityRankDTO);
 
     /**
-     * 根据社区活动id查询社区活动报名人员列表
+     * 根据社区活动id查询社区活动报名且未参与人员列表
      * 
      * @param activityId
      *            活动id
-     * @return 社区活动报名人员列表
+     * @return 社区活动报名且未参与人员列表
      */
     List<ComActActivityPeopleVO> getTaskActivityPeopleList(@Param("activityId") Long activityId);
 }
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActIntegralUserService.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActIntegralUserService.java
index 2d3bf99..95d1c0c 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActIntegralUserService.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActIntegralUserService.java
@@ -49,11 +49,11 @@
     R getIntegralCommunityRankApplets(ComActIntegralCommunityRankDTO communityRankDTO);
 
     /**
-     * 根据社区活动id查询社区活动报名人员列表
+     * 根据社区活动id查询社区活动报名且未参与人员列表
      * 
      * @param activityId
      *            活动id
-     * @return 社区活动报名人员列表
+     * @return 社区活动报名且未参与人员列表
      */
     R getTaskActivityPeopleList(Long activityId);
 
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
index af68555..dd45bcc 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
@@ -483,13 +483,13 @@
                     JSONObject.parseObject(JSONObject.toJSONString(userInfoR.getData()), LoginUserInfoVO.class);
             // 查询当前活动下参与居民
             Integer residentCount = comActActSignDAO.selectCount(new QueryWrapper<ComActActSignDO>().lambda()
-                    .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, 0));
+                    .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, 0).eq(ComActActSignDO::getStatus, 1));
             if (volunteerMax != 0) {
                 //志愿者活动
                 boolean userIsVolunteer = loginUserInfoVO.getIsVolunteer() == 1;
                 // 查询当前活动下参与志愿者
                 Integer volunteerCount = comActActSignDAO.selectCount(new QueryWrapper<ComActActSignDO>().lambda()
-                        .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, 1));
+                        .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, 1).eq(ComActActSignDO::getStatus, 1));
                 if (userIsVolunteer) {
                     //用户是志愿者以志愿者身份参加
                     if (volunteerMax > volunteerCount || volunteerMax.equals(-1)) {
@@ -550,9 +550,14 @@
                 num = comActActSignDAO.insert(comActActSignDO);
             }
         } else {
+            Integer regTimes = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>().lambda()
+                    .eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId).eq(ComActActRegistDO::getType, 1));
             Integer canCancel = actActivityDO.getCanCancel();
             if (nonNull(canCancel) && canCancel.equals(2)) {
                 return R.fail("该活动暂不支持取消");
+            }
+            if (regTimes > 0) {
+                return R.fail("您已参与活动,不可取消");
             }
             if (isNull(signactivityVO.getReason())) {
                 return R.fail("缺少取消原因");
@@ -566,8 +571,9 @@
             if (num > 0) {
                 AddComActIntegralUserDTO addComActIntegralUserDTO = new AddComActIntegralUserDTO();
                 addComActIntegralUserDTO.setUserId(userId);
-                addComActIntegralUserDTO.setIntegralType(9);
+                addComActIntegralUserDTO.setIntegralType(8);
                 addComActIntegralUserDTO.setActivityType(1);
+                addComActIntegralUserDTO.setIsVolunteer(comActActSignDO.getIsVolunteer());
                 addComActIntegralUserDTO.setCommunityId(actActivityDO.getCommunityId());
                 addComActIntegralUserDTO.setServiceId(activityId);
                 comActIntegralUserTradeService.addIntegralTradeAdmin(addComActIntegralUserDTO);
@@ -895,6 +901,12 @@
                 return R.fail("活动不存在!");
             }
 
+            ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(new QueryWrapper<ComActActSignDO>().lambda()
+                    .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getUserId, userId).eq(ComActActSignDO::getStatus, 1));
+            if (isNull(comActActSignDO)) {
+                return R.fail("活动未报名");
+            }
+
             Date beginAt = comActActivityDO.getBeginAt();
             Date endAt = comActActivityDO.getEndAt();
             Date nowDate = new Date();
@@ -926,7 +938,7 @@
             comActActRegistDO.setActivityId(activityId);
             comActActRegistDO.setType(1);
             comActActRegistDO.setUserId(userId);
-            comActActRegistDO.setIsVolunteer(comActActRegistVO.getIsVolunteer());
+            comActActRegistDO.setIsVolunteer(comActActSignDO.getIsVolunteer());
             comActActRegistDO.setCreateAt(nowDate);
             comActActRegistDO.setCodeId(comActActRegistVO.getCodeId());
             comActActRegistDO.setAward(isHave ? comActActivityDO.getRewardIntegral() : 0);
@@ -935,10 +947,12 @@
             int result = comActActRegistDAO.insert(comActActRegistDO);
             if (result > 0) {
                 if (isHave) {
+                    boolean isVolunteerAct = comActActivityDO.getVolunteerMax() != 0;
                     AddComActIntegralUserDTO addComActIntegralUserDTO=new AddComActIntegralUserDTO();
                     addComActIntegralUserDTO.setUserId(userId);
-                    addComActIntegralUserDTO.setIntegralType(8);
+                    addComActIntegralUserDTO.setIntegralType(isVolunteerAct ? 5 : 4);
                     addComActIntegralUserDTO.setActivityType(1);
+                    addComActIntegralUserDTO.setIsVolunteer(comActActSignDO.getIsVolunteer());
                     addComActIntegralUserDTO.setCommunityId(comActActivityDO.getCommunityId());
                     addComActIntegralUserDTO.setServiceId(activityId);
                     comActIntegralUserTradeService.addIntegralTradeAdmin(addComActIntegralUserDTO);
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserServiceImpl.java
index 27f2dde..e5b9d4d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserServiceImpl.java
@@ -186,11 +186,11 @@
     }
 
     /**
-     * 根据社区活动id查询社区活动报名人员列表
+     * 根据社区活动id查询社区活动报名且未参与人员列表
      * 
      * @param activityId
      *            活动id
-     * @return 社区活动报名人员列表
+     * @return 社区活动报名且未参与人员列表
      */
     @Override
     public R getTaskActivityPeopleList(Long activityId) {
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
index 2609a25..e35bdb4 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActIntegralUserTradeServiceImpl.java
@@ -29,6 +29,8 @@
 
 import lombok.extern.slf4j.Slf4j;
 
+import static java.util.Objects.nonNull;
+
 /**
  * @auther lyq
  * @create 2021-07-28 16:03:18
@@ -177,7 +179,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R addIntegralTradeAdmin(AddComActIntegralUserDTO integralUserDTO) {
-        // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参与志愿者活动 5.参与社区活动 6.参与党员活动 7.参与调查问卷 8.活动签到 9.取消活动)
+        // 判断增加积分类型 积分任务类型(1.发布随手拍 2.发布微心愿 3.参与议事投票 4.参加居民活动 5.参加志愿者活动 6.参与党员活动 7.参与调查问卷 8.取消活动)
         Integer type = integralUserDTO.getIntegralType();
         // 业务id
         Long serviceId = integralUserDTO.getServiceId();
@@ -194,24 +196,28 @@
         // 当前时间
         Date nowDate = new Date();
 
-        // 查询随手拍增加积分数量
-        ComActIntegralRuleDO integralRuleDO =
-            comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda()
-                .eq(ComActIntegralRuleDO::getIntegralType, type).eq(ComActIntegralRuleDO::getCommunityId, communityId));
-        if (integralRuleDO == null) {
-            log.error("未查询到该社区积分规则,社区id:" + communityId);
-            return R.fail("未查询到该社区积分规则,社区id:" + communityId);
-        }
-        // 判断规则是否有次数限制
-        if (integralRuleDO.getIsRestrict().equals(ComActIntegralRuleDO.isRestrict.yes)) {
-            Integer count = this.baseMapper.getIntegralCount(
-                getIntegralCountDTO(integralRuleDO.getType(), userId, communityId, integralRuleDO.getIntegralType()));
-            if (count >= integralRuleDO.getCount()) {
-                log.error("该用户参加任务次数已达上限");
-                return R.fail("该用户参加任务次数已达上限");
+        Integer isVolunteer = integralUserDTO.getIsVolunteer();
+
+        if (!type.equals(8)) {
+            // 查询随手拍增加积分数量
+            ComActIntegralRuleDO integralRuleDO =
+                    comActIntegralRuleService.getOne(new QueryWrapper<ComActIntegralRuleDO>().lambda()
+                            .eq(ComActIntegralRuleDO::getIntegralType, type).eq(ComActIntegralRuleDO::getCommunityId, communityId));
+            if (integralRuleDO == null) {
+                log.error("未查询到该社区积分规则,社区id:" + communityId);
+                return R.fail("未查询到该社区积分规则,社区id:" + communityId);
             }
+            // 判断规则是否有次数限制
+            if (integralRuleDO.getIsRestrict().equals(ComActIntegralRuleDO.isRestrict.yes)) {
+                Integer count = this.baseMapper.getIntegralCount(
+                        getIntegralCountDTO(integralRuleDO.getType(), userId, communityId, integralRuleDO.getIntegralType()));
+                if (count >= integralRuleDO.getCount()) {
+                    log.error("该用户参加任务次数已达上限");
+                    return R.fail("该用户参加任务次数已达上限");
+                }
+            }
+            amount = integralRuleDO.getAmount();
         }
-        amount = integralRuleDO.getAmount();
 
         switch (type) {
             case 1:
@@ -254,27 +260,32 @@
                 }
                 break;
             case 4:
-                identityType = 3;
-                remark.append("参与志愿者活动奖励积分");
-                ComActActivityDO actActivityZYZDO = comActActivityService.getById(serviceId);
-                if (actActivityZYZDO != null) {
-                    remark.append("【");
-                    remark.append(actActivityZYZDO.getActivityName());
-                    remark.append("】");
+                if (nonNull(isVolunteer) && isVolunteer.equals(1)) {
+                    identityType = 3;
+                } else {
+                    identityType = 1;
+                }
+                remark.append("成功参加居民活动奖励积分");
+                ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
+                if(actActivityDO1 != null) {
+                    amount = actActivityDO1.getRewardIntegral();
                 }
                 break;
             case 5:
-                remark.append("参与社区活动奖励积分");
+                if (nonNull(isVolunteer) && isVolunteer.equals(0)) {
+                    identityType = 1;
+                } else {
+                    identityType = 3;
+                }
+                remark.append("成功参加志愿者活动奖励积分");
                 ComActActivityDO actActivityDO = comActActivityService.getById(serviceId);
-                if (actActivityDO != null) {
-                    remark.append("【");
-                    remark.append(actActivityDO.getActivityName());
-                    remark.append("】");
+                if(actActivityDO != null) {
+                    amount = actActivityDO.getRewardIntegral();
                 }
                 break;
             case 6:
                 identityType = 2;
-                remark.append("参与党员活动奖励积分");
+                remark.append("参与党员活动");
                 break;
             case 7:
                 // 查询调查问卷
@@ -305,16 +316,20 @@
                 remark.append("】");
                 break;
             case 8:
-                remark.append("成功参加活动奖励积分");
-                if(integralUserDTO.getActivityType()==1){
-                    ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
-                    if(actActivityDO1!=null){
-                        amount=actActivityDO1.getRewardIntegral();
-                        if(actActivityDO1.getVolunteerMax()!=0){
-                            identityType=3;
-                        }else {
-                            identityType=1;
+                if (integralUserDTO.getActivityType() == 1) {
+                    ComActActivityDO actActivityDO2 = comActActivityService.getById(serviceId);
+                    if (actActivityDO2 != null) {
+                        amount = -actActivityDO2.getCancelDeduct();
+                        if (actActivityDO2.getVolunteerMax() != 0) {
+                            remark.append("取消志愿者活动扣除积分");
+                        } else {
+                            remark.append("取消居民活动扣除积分");
                         }
+                    }
+                    if (nonNull(isVolunteer) && isVolunteer.equals(1)) {
+                        identityType = 3;
+                    } else {
+                        identityType = 1;
                     }
                 }
 //                else {
@@ -325,19 +340,6 @@
 //                    }
 //                }
                 break;
-            case 9:
-                remark.append("取消活动扣除积分");
-                if (integralUserDTO.getActivityType() == 1) {
-                    ComActActivityDO actActivityDO1 = comActActivityService.getById(serviceId);
-                    if (actActivityDO1 != null) {
-                        amount = -actActivityDO1.getCancelDeduct();
-                        if (actActivityDO1.getVolunteerMax() != 0) {
-                            identityType = 3;
-                        } else {
-                            identityType = 1;
-                        }
-                    }
-                }
             default:
                 break;
         }
@@ -385,20 +387,39 @@
         Integer integralAvailableResident = integralUserDO.getIntegralAvailableResident();
         Integer integralFrozenResident = integralUserDO.getIntegralFrozenResident();
 
-        integralUserDO.setIntegralSum(addIntegral(integralUserDO.getIntegralSum() + amount));
-        integralUserDO.setIntegralAvailableSum(addIntegral(integralUserDO.getIntegralAvailableSum() + amount));
-        integralUserDO.setUpdateAt(nowDate);
         // 根据不同身份,计算钱包金额
+        int reduceAmount = 0;
         if (identityType.equals(ComActIntegralUserTradeDO.identityType.jm)) {
-            integralUserDO.setIntegralResident(addIntegral(integralUserDO.getIntegralResident() + amount));
+            int integralResidentNow = addIntegral(integralResident + amount);
+            if (amount < 0) {
+                reduceAmount = integralResident - integralResidentNow;
+            }
+            integralUserDO.setIntegralResident(integralResidentNow);
             integralUserDO.setIntegralAvailableResident(addIntegral(integralUserDO.getIntegralAvailableResident() + amount));
         } else if (identityType.equals(ComActIntegralUserTradeDO.identityType.dy)) {
-            integralUserDO.setIntegralParty(addIntegral(integralUserDO.getIntegralParty() + amount));
+            int integralPartyNow = addIntegral(integralParty + amount);
+            if (amount < 0) {
+                reduceAmount = integralParty - integralPartyNow;
+            }
+            integralUserDO.setIntegralParty(integralPartyNow);
             integralUserDO.setIntegralAvailableParty(addIntegral(integralUserDO.getIntegralAvailableParty() + amount));
         } else if (identityType.equals(ComActIntegralUserTradeDO.identityType.zyz)) {
-            integralUserDO.setIntegralVolunteer(addIntegral(integralUserDO.getIntegralVolunteer() + amount));
+            int integralVolunteerNow = addIntegral(integralVolunteer + amount);
+            if (amount < 0) {
+                reduceAmount = integralVolunteer - integralVolunteerNow;
+            }
+            integralUserDO.setIntegralVolunteer(integralVolunteerNow);
             integralUserDO.setIntegralAvailableVolunteer(addIntegral(integralUserDO.getIntegralAvailableVolunteer() + amount));
         }
+        if (reduceAmount > 0) {
+            integralUserDO.setIntegralSum(addIntegral(integralSum + reduceAmount));
+            integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum + reduceAmount));
+        } else {
+            integralUserDO.setIntegralSum(addIntegral(integralSum + amount));
+            integralUserDO.setIntegralAvailableSum(addIntegral(integralAvailableSum + amount));
+        }
+        integralUserDO.setUpdateAt(nowDate);
+
         // 更新钱包
         comActIntegralUserService.updateById(integralUserDO);
         // 增加积分账户交易记录
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml
index 0d83e0f..fe6b4e3 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActRegistMapper.xml
@@ -55,6 +55,12 @@
         <if test="comActActRegistVO.createAt != null">
             AND caar.create_at = #{comActActRegistVO.createAt}
         </if>
+        <if test="comActActRegistVO.startTime != null">
+            AND caar.create_at &gt;= #{comActActRegistVO.startTime}
+        </if>
+        <if test="comActActRegistVO.endTime != null">
+            AND caar.create_at &lt;= #{comActActRegistVO.endTime}
+        </if>
         <if test="comActActRegistVO.type != null">
             AND caar.type = #{comActActRegistVO.type}
         </if>
@@ -117,7 +123,7 @@
                 '志愿者' ELSE '居民'
             END identity
         FROM
-        `com_act_act_sign` caas
+        (SELECT * FROM com_act_act_sign WHERE `status` = 1) caas
         LEFT JOIN sys_user su ON caas.user_id = su.user_id
         WHERE NOT EXISTS ( SELECT 1 FROM com_act_act_regist caar WHERE caas.user_id = caar.user_id )
         AND caas.activity_id = #{comActActRegistVO.activityId}
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
index 1fc34df..bdf1b9d 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActActivityMapper.xml
@@ -55,13 +55,13 @@
 
     <select id="activityStatistics" resultType="com.panzhihua.common.model.vos.community.ComActActivityStatisticsVO">
         SELECT IFNULL(volunteer_max,0) + IFNULL(participant_max,0) as signTotal
-             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as reallySignTotal
-             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as registTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId} AND `status` = 1) as reallySignTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId} AND `status` = 1) as registTotal
              ,(SELECT count(id) FROM com_act_act_regist WHERE activity_id = #{activityId}) as reallyRegistTotal
-             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) - (SELECT count(id) FROM com_act_act_regist WHERE activity_id = #{activityId})) as noRegistTotal
-             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) as evaluateTotal
+             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId} AND `status` = 1) - (SELECT count(id) FROM com_act_act_regist WHERE activity_id = #{activityId})) as noRegistTotal
+             ,(SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId} AND `status` = 1) as evaluateTotal
              ,(SELECT count(id) FROM com_act_act_evaluate WHERE activity_id = #{activityId}) as reallyEvaluateTotal
-             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId}) - (SELECT count(id) FROM com_act_act_evaluate WHERE activity_id = #{activityId})) as noEvaluateTotal
+             ,((SELECT count(id) FROM com_act_act_sign WHERE activity_id = #{activityId} AND `status` = 1) - (SELECT count(id) FROM com_act_act_evaluate WHERE activity_id = #{activityId})) as noEvaluateTotal
         FROM com_act_activity where id = #{activityId}
     </select>
     <select id="getIndexTopActivityList" resultMap="BaseResultMap">
diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActIntegralUserDOMapper.xml b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActIntegralUserDOMapper.xml
index b3bb72c..30c966e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActIntegralUserDOMapper.xml
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActIntegralUserDOMapper.xml
@@ -114,7 +114,11 @@
     </select>
 
     <select id="getTaskActivityPeopleList" resultType="com.panzhihua.common.model.vos.community.integral.admin.ComActActivityPeopleVO">
-        select caas.user_id,caas.activity_id,caa.community_id,caas.is_volunteer from com_act_act_sign as caas left join com_act_activity as caa on caa.id = caas.activity_id where caa.id = #{activityId}
+        select caas.user_id,caas.activity_id,caa.community_id,caas.is_volunteer
+        from (SELECT * FROM com_act_act_sign WHERE `status` = 1) as caas
+        left join com_act_activity as caa on caa.id = caas.activity_id
+        left join com_act_act_regist AS caar ON caas.user_id = caar.user_id AND caas.activity_id = caar.activity_id
+        where caa.id = #{activityId}  AND caar.id IS NULL
     </select>
 
 </mapper>
diff --git a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
index 8ba0e72..bf2c965 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
@@ -130,7 +130,7 @@
             // 获取待结束的活动列表
             List<Long> activityList = JSONArray.parseArray(JSONArray.toJSONString(r.getData()), Long.class);
             if (!activityList.isEmpty()) {
-                log.info("社区活动结束时计算积分");
+                log.info("社区活动结束时扣减未参与用户积分");
                 activityList.forEach(activityId -> {
                     R r1 = communityService.getTaskActivityPeopleList(activityId);
                     if (R.isOk(r1)) {
@@ -138,15 +138,14 @@
                             JSONArray.parseArray(JSONArray.toJSONString(r1.getData()), ComActActivityPeopleVO.class);
                         if (!peopleList.isEmpty()) {
                             peopleList.forEach(people -> {
-                                if (people.getIsVolunteer().equals(1)) {
-                                    communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(
-                                        people.getActivityId(), AddComActIntegralUserDTO.integralType.cyzyzhd,
-                                        people.getCommunityId(), people.getUserId()));
-                                } else {
-                                    communityService.addIntegralTradeAdmin(new AddComActIntegralUserDTO(
-                                        people.getActivityId(), AddComActIntegralUserDTO.integralType.cysqhd,
-                                        people.getCommunityId(), people.getUserId()));
-                                }
+                                AddComActIntegralUserDTO addComActIntegralUserDTO = new AddComActIntegralUserDTO();
+                                addComActIntegralUserDTO.setUserId(people.getUserId());
+                                addComActIntegralUserDTO.setIntegralType(AddComActIntegralUserDTO.integralType.qxhd);
+                                addComActIntegralUserDTO.setActivityType(1);
+                                addComActIntegralUserDTO.setIsVolunteer(people.getIsVolunteer());
+                                addComActIntegralUserDTO.setCommunityId(people.getCommunityId());
+                                addComActIntegralUserDTO.setServiceId(activityId);
+                                communityService.addIntegralTradeAdmin(addComActIntegralUserDTO);
                             });
                         }
                     }

--
Gitblit v1.7.1