From 4b6ea168bfa6fdfd2486c9342ac8b3d0a6b63acf Mon Sep 17 00:00:00 2001
From: puhanshu <a9236326>
Date: 星期三, 08 九月 2021 14:27:12 +0800
Subject: [PATCH] 活动报名指定参与人群限制

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java |   45 +++++++++++++++++++++++++++++++--------------
 1 files changed, 31 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 6fa5fc0..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
@@ -47,6 +47,9 @@
 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
@@ -416,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));
@@ -427,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();

--
Gitblit v1.7.1