From 7fa292ef97ba73d89e02a15da4c35a8a32de1a92 Mon Sep 17 00:00:00 2001 From: huanghongfa <huanghongfa123456> Date: 星期一, 13 九月 2021 16:47:07 +0800 Subject: [PATCH] 修改活动报名bug --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java | 202 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 157 insertions(+), 45 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 70f92c8..f8ea3ea 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 @@ -2,16 +2,20 @@ import java.text.DecimalFormat; import java.util.*; +import java.util.concurrent.TimeUnit; 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; @@ -26,16 +30,26 @@ 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.*; 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.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.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 @@ -47,6 +61,8 @@ @Service public class ComActActivityServiceImpl extends ServiceImpl<ComActActivityDAO, ComActActivityDO> implements ComActActivityService { + private static final String DELIMITER = ":"; + private static final String ACTIVITY_SIGN_IN = "ACTIVITY:SIGN:IN"; @Resource private ComActActivityDAO comActActivityDAO; @Resource @@ -57,6 +73,8 @@ private ComActActEvaluateDAO comActActEvaluateDAO; @Resource private ComActActRegistDAO comActActRegistDAO; + @Resource + private StringRedisTemplate stringRedisTemplate; @Resource private ComActActPictureDAO comActActPictureDAO; @@ -101,6 +119,7 @@ comActActPictureDO.setActivityId(activityId); comActActPictureDO.setUserId(comActActivityVO.getUserId()); comActActPictureDO.setUploadPicture(comActActivityVO.getCover()); + comActActPictureDO.setSysFlag(0); comActActPictureDAO.insert(comActActPictureDO); return R.ok(activityId); } @@ -203,9 +222,20 @@ @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()); + 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(); @@ -311,7 +341,7 @@ @Override public R getNoRegistLists(ComActActRegistVO comActActRegistVO) { - return null; + return R.ok(comActActRegistDAO.getNoRegistLists(comActActRegistVO)); } @Override @@ -338,6 +368,21 @@ List<ComActActPictureVO> comActActPictureVOS = new ArrayList<>(); List<ComActActPictureDO> comActActPictureDOS = comActActPictureDAO.selectList(new QueryWrapper<ComActActPictureDO>().lambda(). eq(ComActActPictureDO::getUserId, userId)); + if (comActActPictureDOS != null && comActActPictureDOS.size() != 0) { + comActActPictureDOS.forEach(comActActPictureDO -> { + ComActActPictureVO comActActPictureVO = new ComActActPictureVO(); + BeanUtils.copyProperties(comActActPictureDO, comActActPictureVO); + comActActPictureVOS.add(comActActPictureVO); + }); + } + return R.ok(comActActPictureVOS); + } + + @Override + public R getSysPictureList(Integer type) { + List<ComActActPictureVO> comActActPictureVOS = new ArrayList<>(); + List<ComActActPictureDO> comActActPictureDOS = comActActPictureDAO.selectList(new QueryWrapper<ComActActPictureDO>().lambda(). + eq(ComActActPictureDO::getSysFlag, 1).eq(ComActActPictureDO :: getType, type)); if (comActActPictureDOS != null && comActActPictureDOS.size() != 0) { comActActPictureDOS.forEach(comActActPictureDO -> { ComActActPictureVO comActActPictureVO = new ComActActPictureVO(); @@ -385,7 +430,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)); @@ -396,21 +445,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 (isVolunteer.intValue() == 0 && 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(); @@ -499,33 +558,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(); } /** @@ -704,4 +764,56 @@ return decimalFormat.format(d1 / d2); } + /** + * 用户签到 + * + * @param comActActRegistVO 签到参数 + * @return 签到结果 + */ + @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)) { + return R.fail("你已签到,如要再次签到请三十分钟后尝试!"); + } + ComActActRegistDO comActActRegistDO = new ComActActRegistDO(); + comActActRegistDO.setActivityId(activityId); + comActActRegistDO.setUserId(userId); + comActActRegistDO.setIsVolunteer(comActActRegistVO.getIsVolunteer()); + comActActRegistDO.setCreateAt(new Date()); + int result = comActActRegistDAO.insert(comActActRegistDO); + if (result > 0) { + ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); + opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS); + } + return R.ok(); + } + + /** + *用户签到记录列表 + * + * @param userId 用id + * @return 用户签到列表 + */ + @Override + public R listSignInActivity(Long userId) { + List<ComActActRegistDO> comActActRegistDOS = comActActRegistDAO.selectList(new QueryWrapper<ComActActRegistDO>() + .lambda().eq(ComActActRegistDO::getUserId, userId)); + ArrayList<ComActActRegistVO> comActActRegistVOS = new ArrayList<>(); + comActActRegistDOS.forEach(comActActRegistDO -> { + ComActActRegistVO comActActRegistVO = new ComActActRegistVO(); + BeanUtils.copyProperties(comActActRegistDO, comActActRegistVO); + comActActRegistVOS.add(comActActRegistVO); + }); + return R.ok(comActActRegistVOS); + } } -- Gitblit v1.7.1