101captain
2021-12-27 75206d4e4ecd2a7789a21362b85906463d3f2c3d
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();
    }
}