From 8dd5c057222ea4f6d22d6bc3fba468600f14a330 Mon Sep 17 00:00:00 2001
From: huanghongfa <huanghongfa123456>
Date: 星期二, 28 十二月 2021 16:28:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java |  447 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 347 insertions(+), 100 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 e3eb9f9..1a640df 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
@@ -1,14 +1,18 @@
 package com.panzhihua.service_community.service.impl;
 
 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;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -28,8 +32,10 @@
 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.constants.HttpStatus;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityListDTO;
 import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO;
+import com.panzhihua.common.model.dtos.community.integral.admin.AddComActIntegralUserDTO;
 import com.panzhihua.common.model.vos.IndexDataVO;
 import com.panzhihua.common.model.vos.LoginUserInfoVO;
 import com.panzhihua.common.model.vos.R;
@@ -38,6 +44,7 @@
 import com.panzhihua.common.model.vos.community.ComActActPictureVO;
 import com.panzhihua.common.model.vos.community.ComActActRegistVO;
 import com.panzhihua.common.model.vos.community.ComActActivityStatisticsVO;
+import com.panzhihua.common.model.vos.community.ComActActivityTypeVO;
 import com.panzhihua.common.model.vos.community.ComActActivityVO;
 import com.panzhihua.common.model.vos.community.CommunityActivitiesVO;
 import com.panzhihua.common.model.vos.community.CommunityGovernanceTrendsVO;
@@ -50,13 +57,18 @@
 import com.panzhihua.service_community.dao.ComActActPictureDAO;
 import com.panzhihua.service_community.dao.ComActActRegistDAO;
 import com.panzhihua.service_community.dao.ComActActSignDAO;
+import com.panzhihua.service_community.dao.ComActActivityCodeDao;
 import com.panzhihua.service_community.dao.ComActActivityDAO;
+import com.panzhihua.service_community.dao.ComBpActivityDAO;
+import com.panzhihua.service_community.entity.ComActActivityCode;
 import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
 import com.panzhihua.service_community.model.dos.ComActActPictureDO;
 import com.panzhihua.service_community.model.dos.ComActActRegistDO;
 import com.panzhihua.service_community.model.dos.ComActActSignDO;
 import com.panzhihua.service_community.model.dos.ComActActivityDO;
+import com.panzhihua.service_community.service.ComActActivityCodeService;
 import com.panzhihua.service_community.service.ComActActivityService;
+import com.panzhihua.service_community.service.ComActIntegralUserTradeService;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -86,6 +98,14 @@
     private StringRedisTemplate stringRedisTemplate;
     @Resource
     private ComActActPictureDAO comActActPictureDAO;
+    @Resource
+    private ComActActivityCodeDao comActActivityCodeDao;
+    @Resource
+    private ComBpActivityDAO comBpActivityDAO;
+    @Resource
+    private ComActIntegralUserTradeService comActIntegralUserTradeService;
+    @Resource
+    private ComActActivityCodeService comActActivityCodeService;
 
     /**
      * 新增社区活动
@@ -96,6 +116,9 @@
      */
     @Override
     public R addActivity(ComActActivityVO comActActivityVO) {
+        if (comActActivityVO.getHaveIntegralReward().intValue() == 2) {
+            comActActivityVO.setRewardWay(null);
+        }
         ComActActivityDO comActActivityDO = new ComActActivityDO();
         BeanUtils.copyProperties(comActActivityVO, comActActivityDO);
         Integer status = comActActivityVO.getStatus();
@@ -130,6 +153,13 @@
         comActActPictureDO.setUploadPicture(comActActivityVO.getCover());
         comActActPictureDO.setSysFlag(0);
         comActActPictureDAO.insert(comActActPictureDO);
+
+        ComActActivityCode comActActivityCode = new ComActActivityCode();
+        comActActivityCode.setActivityId(comActActivityDO.getId().longValue());
+        comActActivityCode.setCreateTime(new Date());
+        comActActivityCode.setType(1);
+        comActActivityCode.setStatus(1);
+        comActActivityCodeService.save(comActActivityCode);
         return R.ok(activityId);
     }
 
@@ -174,11 +204,15 @@
                 }
             }
         }
+        if (comActActivityVO.getHaveIntegralReward().intValue() == 2) {
+            comActActivityVO.setRewardWay(null);
+        }
         BeanUtils.copyProperties(comActActivityVO, comActActivityDO);
 
         // 结束时间大于当前时间则设置为“进行中”
         Date now = new Date();
-        if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()) {
+        if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()
+        && now.getTime() > comActActivityVO.getSignUpBegin().getTime()) {
             comActActivityDO.setStatus(3);
         }
         boolean b = this.updateById(comActActivityDO);
@@ -252,8 +286,7 @@
      */
     @Override
     public R cancelActivity(ComActActivityVO comActActivityVO) {
-        ComActActivityDO comActActivityDO = new ComActActivityDO();
-        comActActivityDO.setId(comActActivityVO.getId());
+        ComActActivityDO comActActivityDO = comActActivityDAO.selectById(comActActivityVO.getId());
         comActActivityDO.setStatus(comActActivityVO.getStatus());
         comActActivityDO.setCancelReason(comActActivityVO.getCancelReason());
         int update = comActActivityDAO.updateById(comActActivityDO);
@@ -279,13 +312,21 @@
                 LambdaQueryWrapper<ComActActSignDO> actSignQuery = new LambdaQueryWrapper<>();
                 actSignQuery.eq(ComActActSignDO::getActivityId, id);
                 actSignQuery.eq(ComActActSignDO::getUserId, userId);
+                actSignQuery.eq(ComActActSignDO::getStatus, 1);
                 ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(actSignQuery);
                 if (!ObjectUtils.isEmpty(comActActSignDO)) {
                     comActActivityVO.setIsSign(1);
                     comActActivityVO.setIsVolunteer(comActActSignDO.getIsVolunteer());
                 }
+                List<ComActActRegistDO> regList = comActActRegistDAO.selectList(new QueryWrapper<ComActActRegistDO>().lambda()
+                        .eq(ComActActRegistDO::getUserId, userId).eq(ComActActRegistDO::getActivityId, id).eq(ComActActRegistDO::getType, 1));
+                if (!regList.isEmpty()) {
+                    List<ComActActRegistDO> collect = regList.stream().sorted(Comparator.comparing(ComActActRegistDO::getId).reversed()).collect(Collectors.toList());
+                    comActActivityVO.setTimes(collect.get(0).getTimes());
+                }
             }
         }
+        comActActivityVO.setCodeType(1);
         return comActActivityVO;
     }
 
@@ -429,70 +470,124 @@
         Long activityId = signactivityVO.getActivityId();
         Integer type = signactivityVO.getType();
         Long userId = signactivityVO.getUserId();
-        Integer isVolunteer = signactivityVO.getIsVolunteer();
+        Integer isVolunteer = 0;
         // 查询社区活动
         ComActActivityDO actActivityDO = this.baseMapper.selectById(activityId);
         if (isNull(actActivityDO)) {
             return R.fail("活动不存在");
         }
         int num = 0;
+        ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(new QueryWrapper<ComActActSignDO>()
+                .lambda().eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getUserId, userId));
         if (1 == type) {
+            if (nonNull(comActActSignDO) && comActActSignDO.getStatus().equals(1)) {
+                return R.fail("已经报名过了,请勿重复提交");
+            }
+            Integer volunteerMax = actActivityDO.getVolunteerMax();
+            Integer residentMax = actActivityDO.getParticipantMax();
             R<LoginUserInfoVO> userInfoR = userService.getUserInfoByUserId(String.valueOf(userId));
             LoginUserInfoVO loginUserInfoVO =
-                JSONObject.parseObject(JSONObject.toJSONString(userInfoR.getData()), LoginUserInfoVO.class);
-            boolean userNotVolunteer = !(loginUserInfoVO.getIsVolunteer() == 1);
-            if (isVolunteer == 1 && userNotVolunteer) {
-                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("志愿者报名人数已满");
-            }
-
-            //审查用户是否有该活动报名权限(是否活动指定参与人群)
-            String currentUserTags = loginUserInfoVO.getTags();
-            String attendPeople = actActivityDO.getAattendPeople();
-            if (isVolunteer.intValue() == 0 && isNotBlank(attendPeople)) {
-                if (isBlank(currentUserTags)) {
-                    currentUserTags = "全部居民";
+                    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::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::getStatus, 1));
+                if (userIsVolunteer) {
+                    //用户是志愿者以志愿者身份参加
+                    if (volunteerMax > volunteerCount || volunteerMax.equals(-1)) {
+                        //以志愿者身份报名
+                        isVolunteer = 1;
+                    } else if (nonNull(residentMax) && (residentMax > residentCount || residentMax.equals(-1))) {
+                        //志愿者报名人数已满,再以居民身份报名参加
+                        isVolunteer = 0;
+                    } else {
+                        return R.fail("报名人数已满");
+                    }
                 } else {
-                    currentUserTags = currentUserTags.concat(",全部居民");
+                    //用户是普通居民已居民身份参加
+                    if (nonNull(residentMax) && (residentMax > residentCount || residentMax.equals(-1))) {
+                        //以居民身份报名参加
+                        isVolunteer = 0;
+                    } else if (volunteerMax > volunteerCount || volunteerMax.equals(-1)) {
+                        return R.fail(HttpStatus.NOT_ACCEPTABLE, "您还不是志愿者哦~");
+                    } else {
+                        return R.fail("报名人数已满");
+                    }
                 }
-                List<String> currentUserTagList = Arrays.asList(currentUserTags.split(","));
-                boolean checkResult = currentUserTagList.stream().anyMatch(currentUserTag -> attendPeople.contains(currentUserTag));
-                if (!checkResult) {
-                    return R.fail("您不是指定参与人群!");
+            } else {
+                //普通居民活动
+                //审查用户是否有该活动报名权限(是否活动指定参与人群)
+                String currentUserTags = loginUserInfoVO.getTags();
+                String attendPeople = actActivityDO.getAattendPeople();
+                if (isNotBlank(attendPeople)) {
+                    if (isBlank(currentUserTags)) {
+                        currentUserTags = "全部居民";
+                    } else {
+                        currentUserTags = currentUserTags.concat(",全部居民");
+                    }
+                    List<String> currentUserTagList = Arrays.asList(currentUserTags.split(","));
+                    boolean checkResult = currentUserTagList.stream().anyMatch(currentUserTag -> attendPeople.contains(currentUserTag));
+                    if (!checkResult) {
+                        return R.fail("您不是指定参与人群!");
+                    }
+                }
+                if (residentMax > residentCount || residentMax.equals(-1)) {
+                    //用户参加居民活动
+                    isVolunteer = 0;
+                } else {
+                    return R.fail("报名人数已满");
                 }
             }
-
-            if (isVolunteer.equals(0) && actActivityDO.getParticipantMax() <= count
-                && !actActivityDO.getParticipantMax().equals(-1)) {
-                return R.fail("居民报名人数已满");
-            }
-
-            ComActActSignDO comActActSignDO = new ComActActSignDO();
-            comActActSignDO.setActivityId(activityId);
-            comActActSignDO.setUserId(userId);
-            comActActSignDO.setIsVolunteer(isVolunteer);
-            try {
+            if (nonNull(comActActSignDO)) {
+                comActActSignDO.setStatus(1);
+                comActActSignDO.setCreateAt(new Date());
+                comActActSignDO.setReason(null);
+                comActActSignDO.setIsVolunteer(isVolunteer);
+                num = comActActSignDAO.updateById(comActActSignDO);
+            } else {
+                comActActSignDO = new ComActActSignDO();
+                comActActSignDO.setActivityId(activityId);
+                comActActSignDO.setUserId(userId);
+                comActActSignDO.setIsVolunteer(isVolunteer);
                 num = comActActSignDAO.insert(comActActSignDO);
-            } catch (Exception e) {
-                if (e.getMessage().contains("unique_activity_id_user_id")) {
-                    return R.fail("已经报名过了,请勿重复提交");
-                }
-                log.error(e.getMessage());
             }
         } else {
-            num = comActActSignDAO
-                .delete(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId)
-                    .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, isVolunteer));
+            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("缺少取消原因");
+            }
+            if (isNull(comActActSignDO)) {
+                return R.fail("未报名");
+            }
+            comActActSignDO.setStatus(0);
+            comActActSignDO.setReason(signactivityVO.getReason());
+            num = comActActSignDAO.updateById(comActActSignDO);
+            if (num > 0) {
+                AddComActIntegralUserDTO addComActIntegralUserDTO = new AddComActIntegralUserDTO();
+                addComActIntegralUserDTO.setUserId(userId);
+                addComActIntegralUserDTO.setIntegralType(8);
+                addComActIntegralUserDTO.setActivityType(1);
+                addComActIntegralUserDTO.setIsVolunteer(comActActSignDO.getIsVolunteer());
+                addComActIntegralUserDTO.setCommunityId(actActivityDO.getCommunityId());
+                addComActIntegralUserDTO.setServiceId(activityId);
+                comActIntegralUserTradeService.addIntegralTradeAdmin(addComActIntegralUserDTO);
+            }
         }
         if (num > 0) {
-            return R.ok();
+            return R.ok(isVolunteer);
         }
         return R.fail();
     }
@@ -502,41 +597,60 @@
      *
      * @param userId
      *            用户id
+     * @param status
      * @return 活动列表
      */
     @Override
-    public R listActivity(Long userId) {
-        List<ComActActSignDO> comActActSignDOS = comActActSignDAO
-            .selectList(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId));
-        if (ObjectUtils.isEmpty(comActActSignDOS)) {
+    public R listActivity(Long userId, Integer status) {
+        List<ActivitySignVO> activitySignVOList = comActActSignDAO.selectList(userId);
+        if (ObjectUtils.isEmpty(activitySignVOList)) {
             return R.fail();
         }
-        List<Long> longs = comActActSignDOS.stream().map(comActActSignDO -> comActActSignDO.getActivityId())
+        List<Long> longs = activitySignVOList.stream().map(activitySignVO -> activitySignVO.getActivityId())
             .collect(Collectors.toList());
         List<ComActActivityDO> comActActivityDOS = comActActivityDAO.selectBatchIds(longs);
         List<ComActActivityVO> comActActivityVOS = new ArrayList<>();
-        comActActivityDOS.forEach(comActActivityDO -> {
-            ComActActivityVO comActActivityVO = new ComActActivityVO();
-            BeanUtils.copyProperties(comActActivityDO, comActActivityVO);
-            List<ComActActSignDO> collect = comActActSignDOS.stream()
-                .filter(comActActSignDO -> comActActSignDO.getActivityId().equals(comActActivityVO.getId())).limit(1)
-                .collect(Collectors.toList());
-            ComActActSignDO comActActSignDO = collect.get(0);
-            Integer isVolunteer = comActActSignDO.getIsVolunteer();
-            if (isVolunteer.intValue() == 1) {
-                comActActivityVO.setType(1);
-            } else {
-                comActActivityVO.setType(2);
+        if (nonNull(status)) {
+            if(status.equals(4)){
+                comActActivityDOS = comActActivityDOS.stream()
+                        .filter(activityDO -> activityDO.getStatus().equals(3)||activityDO.getStatus().equals(4)).collect(Collectors.toList());
+            }else{
+                comActActivityDOS = comActActivityDOS.stream()
+                        .filter(activityDO -> activityDO.getStatus().equals(status)).collect(Collectors.toList());
             }
-            Integer status = comActActivityVO.getStatus();
-            if (status.intValue() == 3) {
-                comActActivityVO.setStatus(4);
-            }
-            comActActivityVO.setSingDate(comActActSignDOS.stream()
-                .filter(comActActSignDO1 -> comActActSignDO1.getActivityId().equals(comActActivityVO.getId()))
-                .collect(Collectors.toList()).get(0).getCreateAt());
-            comActActivityVOS.add(comActActivityVO);
-        });
+        }
+        if (!comActActivityDOS.isEmpty()) {
+            comActActivityDOS.forEach(comActActivityDO -> {
+                ComActActivityVO comActActivityVO = new ComActActivityVO();
+                BeanUtils.copyProperties(comActActivityDO, comActActivityVO);
+                List<ActivitySignVO> collect = activitySignVOList.stream()
+                        .filter(activitySignVO -> activitySignVO.getActivityId().equals(comActActivityVO.getId())).limit(1)
+                        .collect(Collectors.toList());
+                ActivitySignVO activitySignVO = collect.get(0);
+                Integer isVolunteer = activitySignVO.getIsVolunteer();
+                if (isVolunteer.intValue() == 1) {
+                    comActActivityVO.setType(1);
+                } else {
+                    comActActivityVO.setType(2);
+                }
+                Integer activityStatus = comActActivityVO.getStatus();
+                if (activityStatus.intValue() == 3) {
+                    comActActivityVO.setStatus(4);
+                }
+                Date createAt = null;
+                try {
+                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    createAt = simpleDateFormat.parse(activitySignVO.getCreateAt());
+                } catch (ParseException e) {
+                    log.error("时间转换异常【{}】", e.getMessage());
+                }
+                comActActivityVO.setSingDate(createAt);
+                comActActivityVO.setTimes(activitySignVO.getTimes());
+                Integer totalAward = comActActRegistDAO.selectTotalAwardWithRegist(activitySignVO.getActivityId(), userId);
+                comActActivityVO.setAward(totalAward);
+                comActActivityVOS.add(comActActivityVO);
+            });
+        }
         return R.ok(comActActivityVOS);
     }
 
@@ -788,40 +902,125 @@
         if (isNull(activityId)) {
             return R.fail("签到所属活动id不能为空!");
         }
-        ComActActivityDO comActActivityDO = comActActivityDAO.selectById(activityId);
-        if (isNull(comActActivityDO)) {
-            return R.fail("活动不存在!");
-        }
+        if(comActActRegistVO.getActivityType()==1){
+            ComActActivityDO comActActivityDO = comActActivityDAO.selectById(activityId);
+            if (isNull(comActActivityDO)) {
+                return R.fail("活动不存在!");
+            }
 
-        Date beginAt = comActActivityDO.getBeginAt();
-        Date endAt = comActActivityDO.getEndAt();
-        Date nowDate = new Date();
-        if (nowDate.before(beginAt) || nowDate.after(endAt)) {
-            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("活动未报名");
+            }
 
-        int signCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
-                .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId));
+            Date beginAt = comActActivityDO.getBeginAt();
+            Date endAt = comActActivityDO.getEndAt();
+            Date nowDate = new Date();
+            if (nowDate.before(beginAt) || nowDate.after(endAt)) {
+                return R.fail("不在活动时间范围内");
+            }
 
-        if (signCount > 0) {
-            return R.fail("请勿重复签到");
-        }
+            int signDayCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
+                    .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId).eq(ComActActRegistDO::getCodeId,comActActRegistVO.getCodeId()));
+            int signAllCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
+                    .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId));
+            if (signDayCount > 0) {
+                return R.fail("请扫描新的签到码");
+            }
+            Integer haveIntegralReward = comActActivityDO.getHaveIntegralReward();
+            boolean isHave = nonNull(haveIntegralReward) && haveIntegralReward.equals(1);
+            if (isHave) {
+                int limit = comActActivityDO.getLimit().intValue();
+                if(limit != -1 && signAllCount >= limit){
+                    return R.fail("签到次数上限");
+                }
+            }
 
 //        String activitySignInKey = String.join(DELIMITER, ACTIVITY_SIGN_IN, userId.toString(), activityId.toString());
 //        if (stringRedisTemplate.hasKey(activitySignInKey)) {
 //            return R.fail("你已签到,如要再次签到请三十分钟后尝试!");
 //        }
-        ComActActRegistDO comActActRegistDO = new ComActActRegistDO();
-        comActActRegistDO.setActivityId(activityId);
-        comActActRegistDO.setUserId(userId);
-        comActActRegistDO.setIsVolunteer(comActActRegistVO.getIsVolunteer());
-        comActActRegistDO.setCreateAt(nowDate);
-        int result = comActActRegistDAO.insert(comActActRegistDO);
-        if (result > 0) {
-//            ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
-//            opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS);
-            return R.ok();
+            ComActActRegistDO comActActRegistDO = new ComActActRegistDO();
+            comActActRegistDO.setActivityId(activityId);
+            comActActRegistDO.setType(1);
+            comActActRegistDO.setUserId(userId);
+            comActActRegistDO.setIsVolunteer(comActActSignDO.getIsVolunteer());
+            comActActRegistDO.setCreateAt(nowDate);
+            comActActRegistDO.setCodeId(comActActRegistVO.getCodeId());
+            comActActRegistDO.setAward(isHave ? comActActivityDO.getRewardIntegral() : 0);
+            comActActRegistDO.setPosition(comActActRegistVO.getPosition());
+            comActActRegistDO.setTimes(signAllCount+1);
+            int result = comActActRegistDAO.insert(comActActRegistDO);
+            if (result > 0) {
+                if (isHave) {
+                    boolean isVolunteerAct = comActActivityDO.getVolunteerMax() != 0;
+                    AddComActIntegralUserDTO addComActIntegralUserDTO=new AddComActIntegralUserDTO();
+                    addComActIntegralUserDTO.setUserId(userId);
+                    addComActIntegralUserDTO.setIntegralType(isVolunteerAct ? 5 : 4);
+                    addComActIntegralUserDTO.setActivityType(1);
+                    addComActIntegralUserDTO.setIsVolunteer(comActActSignDO.getIsVolunteer());
+                    addComActIntegralUserDTO.setCommunityId(comActActivityDO.getCommunityId());
+                    addComActIntegralUserDTO.setServiceId(activityId);
+                    comActIntegralUserTradeService.addIntegralTradeAdmin(addComActIntegralUserDTO);
+                    return R.ok(comActActivityDO.getRewardIntegral());
+                } else {
+                    return R.ok();
+                }
+            }
+            return R.fail("网络错误,请重试");
         }
+//        else {
+//            ComPbActivityDO comPbActivityDO=comBpActivityDAO.selectById(activityId);
+//            if (isNull(comPbActivityDO)) {
+//                return R.fail("活动不存在!");
+//            }
+//
+//            Date beginAt = comPbActivityDO.getActivityTimeBegin();
+//            Date endAt = comPbActivityDO.getActivityTimeEnd();
+//            Date nowDate = new Date();
+//            if (nowDate.before(beginAt) || nowDate.after(endAt)) {
+//                return R.fail("不在活动时间范围内");
+//            }
+//
+//            int signDayCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
+//                    .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId).eq(ComActActRegistDO::getCodeId,comActActRegistVO.getCodeId()));
+//            int signAllCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
+//                    .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId));
+//            if (signDayCount >= 0) {
+//                return R.fail("请扫描新的签到码");
+//            }
+//            int limit = comPbActivityDO.getLimit().intValue();
+//            if(limit != -1 && signAllCount >= limit){
+//                return R.fail("签到次数上限");
+//            }
+//
+//            ComActActRegistDO comActActRegistDO = new ComActActRegistDO();
+//            comActActRegistDO.setActivityId(activityId);
+//            comActActRegistDO.setType(2);
+//            comActActRegistDO.setUserId(userId);
+//            comActActRegistDO.setIsVolunteer(comActActRegistVO.getIsVolunteer());
+//            comActActRegistDO.setCreateAt(nowDate);
+//            comActActRegistDO.setCodeId(comActActRegistVO.getCodeId());
+//            comActActRegistDO.setAward(comPbActivityDO.getRewardIntegral());
+//            comActActRegistDO.setPosition(comActActRegistVO.getPosition());
+//            comActActRegistDO.setTimes(signAllCount+1);
+//            int result = comActActRegistDAO.insert(comActActRegistDO);
+//            if (result > 0) {
+//                AddComActIntegralUserDTO addComActIntegralUserDTO=new AddComActIntegralUserDTO();
+//                addComActIntegralUserDTO.setUserId(userId);
+//                addComActIntegralUserDTO.setIntegralType(8);
+//                addComActIntegralUserDTO.setActivityType(2);
+//                addComActIntegralUserDTO.setCommunityId(comPbActivityDO.getCommunityId());
+//                addComActIntegralUserDTO.setServiceId(activityId);
+//                comActIntegralUserTradeService.addIntegralTradeAdmin(addComActIntegralUserDTO);
+////            ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
+////            opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS);
+//                return R.ok();
+//            }
+//            return R.fail("网络错误,请重试");
+//        }
+
         return R.fail("网络错误,请重试");
     }
 
@@ -843,4 +1042,52 @@
         });
         return R.ok(comActActRegistVOS);
     }
+
+    /**
+     * 获取活动报名签到记录
+     * @param id 活动主键id
+     * @return
+     */
+    @Override
+    public R listSignInRecord(Long id) {
+        return R.ok(comActActSignDAO.listSignInRecord(id));
+    }
+
+    /**
+     * 活动签到记录
+     * @param id 活动主键
+     * @param userId 用户id
+     * @return
+     */
+    @Override
+    public R listRegistRecord(Long id, Long userId) {
+        return R.ok(comActActRegistDAO.listRegistRecord(id, userId));
+    }
+
+    /**
+     * 获取活动类型(目前只有志愿者活动需要获取)
+     * @param communityId
+     * @param type
+     * @return
+     */
+    @Override
+    public R listActivityType(Long communityId, Integer type) {
+        return R.ok(this.baseMapper.listActivityType(communityId, type));
+    }
+
+    /**
+     * 添加活动类型
+     * @param comActActivityTypeVO
+     * @return
+     */
+    @Override
+    public R addActivityType(ComActActivityTypeVO comActActivityTypeVO) {
+        try {
+            this.baseMapper.addActivityType(comActActivityTypeVO);
+        } catch (Exception e) {
+            log.error("添加活动类型错误【{}】", e.getMessage());
+            return R.fail("活动类型已存在");
+        }
+        return R.ok();
+    }
 }

--
Gitblit v1.7.1