罗元桥
2021-09-13 e23107ef049fefa00cd54a4a2271513da81644f7
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java
@@ -1,21 +1,22 @@
package com.panzhihua.service_community.service.impl;
import static java.util.Objects.isNull;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.text.DecimalFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.panzhihua.common.model.vos.community.*;
import com.panzhihua.common.model.vos.screen.ComActPopulationCultureVO;
import com.panzhihua.service_community.dao.*;
import com.panzhihua.service_community.model.dos.ComActActEvaluateDO;
import com.panzhihua.service_community.model.dos.ComActActPictureDO;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -30,26 +31,32 @@
import com.panzhihua.common.model.vos.IndexDataVO;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.community.ActivitySignVO;
import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
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.ComActActivityVO;
import com.panzhihua.common.model.vos.community.CommunityActivitiesVO;
import com.panzhihua.common.model.vos.community.CommunityGovernanceTrendsVO;
import com.panzhihua.common.model.vos.community.SignactivityVO;
import com.panzhihua.common.model.vos.community.screen.work.ActActivityListVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.WxUtil;
import com.panzhihua.common.utlis.WxXCXTempSend;
import com.panzhihua.service_community.dao.ComActActEvaluateDAO;
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.ComActActivityDAO;
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.ComActActivityService;
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
@@ -200,15 +207,15 @@
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActActivityVO> iPage = comActActivityDAO.pageActivity(page, comActActivityVO);
        List<ComActActivityVO> records = iPage.getRecords();
        if (!ObjectUtils.isEmpty(records)) {
            records.forEach(comActActivityVO1 -> {
                Integer status = comActActivityVO1.getStatus();
                if (status.intValue() == 3) {
                    comActActivityVO1.setStatus(4);
                }
            });
        }
//        List<ComActActivityVO> records = iPage.getRecords();
//        if (!ObjectUtils.isEmpty(records)) {
//            records.forEach(comActActivityVO1 -> {
//                Integer status = comActActivityVO1.getStatus();
//                if (status.intValue() == 3) {
//                    comActActivityVO1.setStatus(4);
//                }
//            });
//        }
        return R.ok(iPage);
    }
@@ -222,9 +229,21 @@
    @Override
    public R releaseActivity(ComActActivityVO comActActivityVO) {
        ComActActivityDO comActActivityDO = new ComActActivityDO();
        comActActivityDO.setId(comActActivityVO.getId());
//        comActActivityDO.setId(comActActivityVO.getId());
//        comActActivityDO.setPublishAt(comActActivityVO.getPublishAt());
//        comActActivityDO.setStatus(comActActivityVO.getStatus());
        comActActivityDO = comActActivityDAO.selectById(comActActivityVO.getId());
        comActActivityDO.setPublishAt(comActActivityVO.getPublishAt());
        comActActivityDO.setStatus(comActActivityVO.getStatus());
        comActActivityVO.setStatus(2);
//        if (comActActivityVO.getPublishAt().before(comActActivityDO.getSignUpBegin())) {
//            comActActivityVO.setStatus(2);
//        }
        if (comActActivityVO.getPublishAt().after(comActActivityDO.getSignUpEnd())) {
            comActActivityVO.setStatus(5);
        }
        if (comActActivityVO.getPublishAt().after(comActActivityDO.getSignUpBegin()) && comActActivityVO.getPublishAt().before(comActActivityDO.getSignUpEnd())) {
            comActActivityVO.setStatus(3);
        }
        int update = comActActivityDAO.updateById(comActActivityDO);
        if (update > 0) {
            return R.ok();
@@ -445,7 +464,7 @@
            //审查用户是否有该活动报名权限(是否活动指定参与人群)
            String currentUserTags = loginUserInfoVO.getTags();
            String attendPeople = actActivityDO.getAattendPeople();
            if (isNotBlank(attendPeople)) {
            if (isVolunteer.intValue() == 0 && isNotBlank(attendPeople)) {
                if (isBlank(currentUserTags)) {
                    return R.fail("您不是指定参与人群!");
                }
@@ -547,33 +566,34 @@
     */
    @Override
    public R timedTaskActActivity() {
        List<Long> longs = comActActivityDAO.selectTimedTaskActActivity();
        if (ObjectUtils.isEmpty(longs)) {
            return R.fail("没有需要取消的社区活动");
        }
        List<ComActActivityDO> comActActivityDOS = comActActivityDAO.selectBatchIds(longs);
        List<ComActActivityVO> comActActivityVOS = new ArrayList<>();
        if (!ObjectUtils.isEmpty(comActActivityDOS)) {
            comActActivityDOS.forEach(comActActivityDO -> {
                ComActActivityVO comActActivityVO = new ComActActivityVO();
                BeanUtils.copyProperties(comActActivityDO, comActActivityVO);
                List<ComActActSignDO> comActActSignDOS = comActActSignDAO.selectList(new QueryWrapper<ComActActSignDO>()
                    .lambda().eq(ComActActSignDO::getActivityId, comActActivityDO.getId()));
                if (!ObjectUtils.isEmpty(comActActSignDOS)) {
                    List<ActivitySignVO> activitySignVOList = new ArrayList<>();
                    comActActSignDOS.forEach(comActActSignDO -> {
                        ActivitySignVO activitySignVO = new ActivitySignVO();
                        BeanUtils.copyProperties(comActActSignDO, activitySignVO);
                        activitySignVOList.add(activitySignVO);
                        comActActivityVO.setActivitySignVOList(activitySignVOList);
                    });
                }
                comActActivityVOS.add(comActActivityVO);
            });
            int num = comActActivityDAO.updateIdBatch(longs);
            log.info("定时任务--一共取消社区活动数量【{}】", num);
        }
        return R.ok(comActActivityVOS);
//        List<Long> longs = comActActivityDAO.selectTimedTaskActActivity();
//        if (ObjectUtils.isEmpty(longs)) {
//            return R.fail("没有需要取消的社区活动");
//        }
//        List<ComActActivityDO> comActActivityDOS = comActActivityDAO.selectBatchIds(longs);
//        List<ComActActivityVO> comActActivityVOS = new ArrayList<>();
//        if (!ObjectUtils.isEmpty(comActActivityDOS)) {
//            comActActivityDOS.forEach(comActActivityDO -> {
//                ComActActivityVO comActActivityVO = new ComActActivityVO();
//                BeanUtils.copyProperties(comActActivityDO, comActActivityVO);
//                List<ComActActSignDO> comActActSignDOS = comActActSignDAO.selectList(new QueryWrapper<ComActActSignDO>()
//                    .lambda().eq(ComActActSignDO::getActivityId, comActActivityDO.getId()));
//                if (!ObjectUtils.isEmpty(comActActSignDOS)) {
//                    List<ActivitySignVO> activitySignVOList = new ArrayList<>();
//                    comActActSignDOS.forEach(comActActSignDO -> {
//                        ActivitySignVO activitySignVO = new ActivitySignVO();
//                        BeanUtils.copyProperties(comActActSignDO, activitySignVO);
//                        activitySignVOList.add(activitySignVO);
//                        comActActivityVO.setActivitySignVOList(activitySignVOList);
//                    });
//                }
//                comActActivityVOS.add(comActActivityVO);
//            });
//            int num = comActActivityDAO.updateIdBatch(longs);
//            log.info("定时任务--一共取消社区活动数量【{}】", num);
//        }
//        return R.ok(comActActivityVOS);
        return R.ok();
    }
    /**
@@ -761,6 +781,7 @@
    @Override
    public R activitySignIn(ComActActRegistVO comActActRegistVO) {
        Long activityId = comActActRegistVO.getActivityId();
        Long userId = comActActRegistVO.getUserId();
        if (isNull(activityId)) {
            return R.fail("签到所属活动id不能为空!");
        }
@@ -768,23 +789,38 @@
        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)) {
            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("不在活动时间范围内");
        }
        int signCount = comActActRegistDAO.selectCount(new QueryWrapper<ComActActRegistDO>()
                .lambda().eq(ComActActRegistDO::getActivityId, activityId).eq(ComActActRegistDO::getUserId, userId));
        if (signCount > 0) {
            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(new Date());
        comActActRegistDO.setCreateAt(nowDate);
        int result = comActActRegistDAO.insert(comActActRegistDO);
        if (result > 0) {
            ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
            opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS);
        }
//            ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
//            opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS);
        return R.ok();
    }
        return R.fail("网络错误,请重试");
    }
    /**
     *用户签到记录列表