From a2484b2ba1d7cc230f73bd013477d329e4faed6b Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期三, 08 九月 2021 14:32:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/test' into test

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java |   54 ++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 40 insertions(+), 14 deletions(-)

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 288a8d7..9c7d622 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
@@ -46,6 +46,11 @@
 
 import lombok.extern.slf4j.Slf4j;
 
+import static java.util.Objects.isNull;
+import static java.util.Objects.nonNull;
+import static org.apache.commons.lang3.StringUtils.isBlank;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
+
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
  * @description: 社区活动
@@ -414,7 +419,11 @@
         Integer type = signactivityVO.getType();
         Long userId = signactivityVO.getUserId();
         Integer isVolunteer = signactivityVO.getIsVolunteer();
-
+        // 查询社区活动
+        ComActActivityDO actActivityDO = this.baseMapper.selectById(activityId);
+        if (isNull(actActivityDO)) {
+            return R.fail("活动不存在");
+        }
         int num = 0;
         if (1 == type) {
             R<LoginUserInfoVO> userInfoR = userService.getUserInfoByUserId(String.valueOf(userId));
@@ -425,21 +434,31 @@
                 return R.fail("只有志愿者才能报名");
             }
 
-            // 查询社区活动
-            ComActActivityDO actActivityDO = this.baseMapper.selectById(activityId);
-            if (actActivityDO != null) {
-                // 查询当前活动下参与志愿者/居民数量
-                Integer count = comActActSignDAO.selectCount(new QueryWrapper<ComActActSignDO>().lambda()
-                    .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, isVolunteer));
-                if (isVolunteer.equals(1) && actActivityDO.getVolunteerMax() <= count
-                    && !actActivityDO.getVolunteerMax().equals(-1)) {
-                    return R.fail("志愿者报名人数已满");
-                }
+            // 查询当前活动下参与志愿者/居民数量
+            Integer count = comActActSignDAO.selectCount(new QueryWrapper<ComActActSignDO>().lambda()
+                .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, isVolunteer));
+            if (isVolunteer.equals(1) && actActivityDO.getVolunteerMax() <= count
+                && !actActivityDO.getVolunteerMax().equals(-1)) {
+                return R.fail("志愿者报名人数已满");
+            }
 
-                if (isVolunteer.equals(0) && actActivityDO.getParticipantMax() <= count
-                    && !actActivityDO.getParticipantMax().equals(-1)) {
-                    return R.fail("居民报名人数已满");
+            //审查用户是否有该活动报名权限(是否活动指定参与人群)
+            String currentUserTags = loginUserInfoVO.getTags();
+            String attendPeople = actActivityDO.getAattendPeople();
+            if (isNotBlank(attendPeople)) {
+                if (isBlank(currentUserTags)) {
+                    return R.fail("您不是指定参与人群!");
                 }
+                List<String> currentUserTagList = Arrays.asList(currentUserTags.split(","));
+                boolean checkResult = currentUserTagList.stream().anyMatch(currentUserTag -> attendPeople.contains(currentUserTag));
+                if (!checkResult) {
+                    return R.fail("您不是指定参与人群!");
+                }
+            }
+
+            if (isVolunteer.equals(0) && actActivityDO.getParticipantMax() <= count
+                && !actActivityDO.getParticipantMax().equals(-1)) {
+                return R.fail("居民报名人数已满");
             }
 
             ComActActSignDO comActActSignDO = new ComActActSignDO();
@@ -742,6 +761,13 @@
     @Override
     public R activitySignIn(ComActActRegistVO comActActRegistVO) {
         Long activityId = comActActRegistVO.getActivityId();
+        if (isNull(activityId)) {
+            return R.fail("签到所属活动id不能为空!");
+        }
+        ComActActivityDO comActActivityDO = comActActivityDAO.selectById(activityId);
+        if (isNull(comActActivityDO)) {
+            return R.fail("活动不存在!");
+        }
         Long userId = comActActRegistVO.getUserId();
         String activitySignInKey = String.join(DELIMITER, ACTIVITY_SIGN_IN, userId.toString(), activityId.toString());
         if (stringRedisTemplate.hasKey(activitySignInKey)) {

--
Gitblit v1.7.1