From 6424521a768125e66b64a23d2094e05eb95b105f Mon Sep 17 00:00:00 2001 From: huanghongfa <huanghongfa123456> Date: 星期五, 08 十月 2021 11:30:14 +0800 Subject: [PATCH] bug修复 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java | 181 +++++++++++++++++++++++++++------------------ 1 files changed, 109 insertions(+), 72 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 9c7d622..e4b3bba 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,21 +1,24 @@ 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.math.BigDecimal; +import java.math.RoundingMode; 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 +33,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 @@ -101,7 +110,7 @@ if (status.intValue() == 2) {// 点击‘保存并发布’ 按钮 // 报名结束时间大于当前时间则设置为“进行中” if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()) { - comActActivityDO.setStatus(4); + comActActivityDO.setStatus(3); } } @@ -170,7 +179,7 @@ // 结束时间大于当前时间则设置为“进行中” Date now = new Date(); if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()) { - comActActivityDO.setStatus(4); + comActActivityDO.setStatus(3); } boolean b = this.updateById(comActActivityDO); if (b) { @@ -200,15 +209,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); } @@ -221,10 +230,12 @@ */ @Override public R releaseActivity(ComActActivityVO comActActivityVO) { - ComActActivityDO comActActivityDO = new ComActActivityDO(); - comActActivityDO.setId(comActActivityVO.getId()); + ComActActivityDO comActActivityDO = comActActivityDAO.selectById(comActActivityVO.getId()); comActActivityDO.setPublishAt(comActActivityVO.getPublishAt()); - comActActivityDO.setStatus(comActActivityVO.getStatus()); + comActActivityDO.setStatus(3); + if (comActActivityVO.getPublishAt().after(comActActivityDO.getSignUpEnd())) { + comActActivityVO.setStatus(4); + } int update = comActActivityDAO.updateById(comActActivityDO); if (update > 0) { return R.ok(); @@ -445,7 +456,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 +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(); } /** @@ -587,15 +599,15 @@ int num = comActActivityDAO.updateStatusToNotBegin(); log.info("定时任务--修改社区活动发布状态活动数量【{}】", num); // 修改报名状态 变为报名中 - int num1 = comActActivityDAO.updateStatusToBeginSign(); - log.info("定时任务--修改社区活动报名状态活动数量【{}】", num1); +// int num1 = comActActivityDAO.updateStatusToBeginSign(); +// log.info("定时任务--修改社区活动报名状态活动数量【{}】", num1); + int num3 = comActActivityDAO.updateStatusToBeginAfterSingEnd(); + log.info("定时任务--报名结束修改社区活动进行状态活动数量【{}】", num3); // 查询已经结束的活动,需要计算积分 List<Long> activityEndIds = comActActivityDAO.getActivityEndIds(); // 修改进行状态 变为进行中或者已结束 int num2 = comActActivityDAO.updateStatusToBeginActiveOrEnd(); log.info("定时任务--修改社区活动进行状态活动数量【{}】", num2); - int num3 = comActActivityDAO.updateStatusToBeginAfterSingEnd(); - log.info("定时任务--报名结束修改社区活动进行状态活动数量【{}】", num3); return R.ok(activityEndIds); } @@ -623,11 +635,20 @@ iPage.getRecords().forEach(vo ->{ List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateDAO .selectList(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, vo.getId())); - if (comActActEvaluateDOList != null && comActActEvaluateDOList.size() != 0) { + if (comActActEvaluateDOList != null && comActActEvaluateDOList.size() > 0) { + BigDecimal starNum = BigDecimal.ZERO; //总星级 - int starNum = comActActEvaluateDOList.stream().mapToInt(ComActActEvaluateDO::getStarLevel).sum(); - //评分星级=总星级/总评价人数 - vo.setEvaluateLevel(Double.valueOf(starNum/comActActEvaluateDOList.size())); + for (ComActActEvaluateDO evaluateDO:comActActEvaluateDOList) { + starNum = starNum.add(BigDecimal.valueOf(evaluateDO.getStarLevel()==null?0:evaluateDO.getStarLevel())); + } + //评分星级(如果无评分默认5分)=总星级/总评价人数 + if(starNum.compareTo(BigDecimal.ZERO) == 0){ + vo.setEvaluateLevel(BigDecimal.valueOf(5)); + }else{ + vo.setEvaluateLevel(starNum.divide(BigDecimal.valueOf(comActActEvaluateDOList.size()),2, RoundingMode.HALF_UP)); + } + }else{ + vo.setEvaluateLevel(BigDecimal.valueOf(5)); } }); return R.ok(iPage); @@ -708,7 +729,7 @@ // 查询所有即将开始的活动 List<ComActActivityDO> actActivityList = comActActivityDAO.selectList(new QueryWrapper<ComActActivityDO>() .lambda().le(ComActActivityDO::getBeginAt, DateUtils.addDays(new Date(), 1)) - .ge(ComActActivityDO::getBeginAt, new Date())); + .ge(ComActActivityDO::getBeginAt, new Date()).notIn(ComActActivityDO::getStatus,5,6)); if (!actActivityList.isEmpty()) { WxXCXTempSend util = new WxXCXTempSend(); try { @@ -761,6 +782,7 @@ @Override public R activitySignIn(ComActActRegistVO comActActRegistVO) { Long activityId = comActActRegistVO.getActivityId(); + Long userId = comActActRegistVO.getUserId(); if (isNull(activityId)) { return R.fail("签到所属活动id不能为空!"); } @@ -768,22 +790,37 @@ 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.ok(); + return R.fail("网络错误,请重试"); } /** -- Gitblit v1.7.1