From 5a8a90c095280fbd2106869ecd2bad10e01a57a6 Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期四, 23 十二月 2021 18:10:22 +0800 Subject: [PATCH] 12/23 大屏修改 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActActivityServiceImpl.java | 704 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 589 insertions(+), 115 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 d61ac21..e3eb9f9 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,31 +1,64 @@ 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.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 org.apache.commons.lang3.time.DateUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.model.dtos.community.bigscreen.work.ScreenActActivityListDTO; +import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenActActivityPeopleListDTO; +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.ComActEasyPhotoVO; +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.dao.ComActDiscussOptionUserDAO; +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 org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.util.ObjectUtils; -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import lombok.extern.slf4j.Slf4j; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -35,44 +68,119 @@ **/ @Slf4j @Service -public class ComActActivityServiceImpl extends ServiceImpl<ComActActivityDAO, ComActActivityDO> implements ComActActivityService { +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 private ComActActSignDAO comActActSignDAO; + @Resource + private UserService userService; + @Resource + private ComActActEvaluateDAO comActActEvaluateDAO; + @Resource + private ComActActRegistDAO comActActRegistDAO; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private ComActActPictureDAO comActActPictureDAO; /** * 新增社区活动 - * @param comActActivityVO 新增信息 + * + * @param comActActivityVO + * 新增信息 * @return 新增结果 */ @Override public R addActivity(ComActActivityVO comActActivityVO) { - ComActActivityDO comActActivityDO=new ComActActivityDO(); - BeanUtils.copyProperties(comActActivityVO,comActActivityDO); + ComActActivityDO comActActivityDO = new ComActActivityDO(); + BeanUtils.copyProperties(comActActivityVO, comActActivityDO); Integer status = comActActivityVO.getStatus(); - if (status.intValue()!=1) { - comActActivityDO.setPublishAt(new Date());//发布时间 + Date now = new Date(); + if (status.intValue() != 1) { + comActActivityDO.setPublishAt(now);// 发布时间 } + // 如果发布时间大于现在时间状态改为进行中 + /*if(now.getTime()<comActActivityVO.getBeginAt().getTime()){ + comActActivityDO.setStatus(3); + }*/ + if (status.intValue() == 2) {// 点击‘保存并发布’ 按钮 + // 报名结束时间大于当前时间则设置为“进行中” + if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()) { + comActActivityDO.setStatus(3); + } + } + boolean save = this.save(comActActivityDO); - if(!save){ + if (!save) { return R.fail(); } - ComActActivityDO one = this.getOne(new QueryWrapper<ComActActivityDO>().lambda().eq(ComActActivityDO::getActivityName, comActActivityDO.getActivityName()).orderByDesc(ComActActivityDO::getCreateAt).last(" limit 1 ")); + ComActActivityDO one = this.getOne(new QueryWrapper<ComActActivityDO>().lambda() + .eq(ComActActivityDO::getActivityName, comActActivityDO.getActivityName()) + .orderByDesc(ComActActivityDO::getCreateAt).last(" limit 1 ")); Long activityId = one.getId(); + + //保存上传照片 + ComActActPictureDO comActActPictureDO = new ComActActPictureDO(); + comActActPictureDO.setActivityId(activityId); + comActActPictureDO.setUserId(comActActivityVO.getUserId()); + comActActPictureDO.setUploadPicture(comActActivityVO.getCover()); + comActActPictureDO.setSysFlag(0); + comActActPictureDAO.insert(comActActPictureDO); return R.ok(activityId); } /** * 编辑社区活动 * - * @param comActActivityVO 编辑内容 + * @param comActActivityVO + * 编辑内容 * @return 编辑结果 */ @Override public R putActivity(ComActActivityVO comActActivityVO) { - ComActActivityDO comActActivityDO=new ComActActivityDO(); - BeanUtils.copyProperties(comActActivityVO,comActActivityDO); + ComActActivityDO comActActivityDO = this.comActActivityDAO.selectById(comActActivityVO.getId()); + if (comActActivityDO == null) { + return R.fail("未找到社区活动"); + } + + if (!comActActivityDO.getActivityAddr().equals(comActActivityVO.getActivityAddr()) + || !comActActivityDO.getBeginAt().equals(comActActivityVO.getBeginAt())) { + // 修改活动开始时间与活动地点需要推送订阅消息给用户 + ActivitySignVO activitySignVO = new ActivitySignVO(); + activitySignVO.setActivityId(comActActivityVO.getId()); + List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySigns(activitySignVO); + if (!activitySignVOS.isEmpty()) { + try { + WxXCXTempSend util = new WxXCXTempSend(); + String accessToken = util.getAppAccessToken(); + + activitySignVOS.forEach(activitySignVO1 -> { + // 变更社区活动推送订阅消息给用户 + WxUtil.sendSubscribeHDBG(activitySignVO1.getOpenid(), accessToken, + comActActivityVO.getActivityName(), + com.panzhihua.common.utlis.DateUtils.format( + comActActivityDO.getBeginAt(), com.panzhihua.common.utlis.DateUtils.ymdhms_format), + comActActivityDO.getActivityAddr(), + com.panzhihua.common.utlis.DateUtils.format(comActActivityVO.getBeginAt(), + com.panzhihua.common.utlis.DateUtils.ymdhms_format), + comActActivityVO.getActivityAddr()); + }); + } catch (Exception e) { + log.error("消息推送失败,失败原因:" + e.getMessage()); + } + } + } + BeanUtils.copyProperties(comActActivityVO, comActActivityDO); + + // 结束时间大于当前时间则设置为“进行中” + Date now = new Date(); + if (comActActivityVO.getSignUpEnd() != null && now.getTime() < comActActivityVO.getSignUpEnd().getTime()) { + comActActivityDO.setStatus(3); + } boolean b = this.updateById(comActActivityDO); if (b) { return R.ok(); @@ -83,7 +191,8 @@ /** * 分页查询社区活动 * - * @param comActActivityVO 查询参数 + * @param comActActivityVO + * 查询参数 * @return 分页集合 */ @Override @@ -91,41 +200,44 @@ Page page = new Page<>(); Long pageNum = comActActivityVO.getPageNum(); Long pageSize = comActActivityVO.getPageSize(); - if (null==pageNum||0==pageNum) { + if (null == pageNum || 0 == pageNum) { pageNum = 1l; } - if (null==pageSize||0==pageSize) { + if (null == pageSize || 0 == pageSize) { pageSize = 10l; } 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); } /** * 发布活动 * - * @param comActActivityVO 主键id 发布时间 + * @param comActActivityVO + * 主键id 发布时间 * @return 发布结果 */ @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) { + if (update > 0) { return R.ok(); } return R.fail(); @@ -134,17 +246,18 @@ /** * 取消活动 * - * @param comActActivityVO 取消原因 + * @param comActActivityVO + * 取消原因 * @return 取消结果 */ @Override public R cancelActivity(ComActActivityVO comActActivityVO) { - ComActActivityDO comActActivityDO=new ComActActivityDO(); + ComActActivityDO comActActivityDO = new ComActActivityDO(); comActActivityDO.setId(comActActivityVO.getId()); comActActivityDO.setStatus(comActActivityVO.getStatus()); comActActivityDO.setCancelReason(comActActivityVO.getCancelReason()); int update = comActActivityDAO.updateById(comActActivityDO); - if (update>0) { + if (update > 0) { return R.ok(); } return R.fail(); @@ -153,20 +266,24 @@ /** * 活动详情 * - * @param id 活动id + * @param id + * 活动id * @param userId * @return 详情 */ @Override public ComActActivityVO inforActivity(Long id, Long userId) { - ComActActivityVO comActActivityVO=comActActivityDAO.inforActivity(id); + ComActActivityVO comActActivityVO = comActActivityDAO.inforActivity(id); if (!ObjectUtils.isEmpty(comActActivityVO)) { - ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getActivityId, id).eq(ComActActSignDO::getUserId, userId)); - if (!ObjectUtils.isEmpty(comActActSignDO)) { - comActActivityVO.setIsSign(1); - comActActivityVO.setIsVolunteer(comActActSignDO.getIsVolunteer()); - }else { - + if (userId != null) { + LambdaQueryWrapper<ComActActSignDO> actSignQuery = new LambdaQueryWrapper<>(); + actSignQuery.eq(ComActActSignDO::getActivityId, id); + actSignQuery.eq(ComActActSignDO::getUserId, userId); + ComActActSignDO comActActSignDO = comActActSignDAO.selectOne(actSignQuery); + if (!ObjectUtils.isEmpty(comActActSignDO)) { + comActActivityVO.setIsSign(1); + comActActivityVO.setIsVolunteer(comActActSignDO.getIsVolunteer()); + } } } return comActActivityVO; @@ -175,19 +292,112 @@ /** * 活动报名名单 * - * @param activitySignVO 查询参数 + * @param activitySignVO + * 查询参数 * @return 报名人员集合 */ @Override public R listActivitySign(ActivitySignVO activitySignVO) { - List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySign(activitySignVO); + + IPage<ActivitySignVO> activitySignVOS = comActActSignDAO + .listActivitySign(new Page(activitySignVO.getPageNum(), activitySignVO.getPageSize()), activitySignVO); + // List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySign(activitySignVO); return R.ok(activitySignVOS); + } + + @Override + public R listActivitySigns(ActivitySignVO activitySignVO) { + List<ActivitySignVO> activitySignVOS = comActActSignDAO.listActivitySigns(activitySignVO); + return R.ok(activitySignVOS); + } + + @Override + public R getSignLists(ActivitySignVO activitySignVO) { + return R.ok(comActActSignDAO.getSignLists(activitySignVO)); + } + + @Override + public R pageActivityEvaluates(ComActActEvaluateVO comActActEvaluateVO) { + IPage<ComActActEvaluateVO> comActActEvaluateVOIPage = comActActEvaluateDAO + .pageActivityEvaluates(new Page(comActActEvaluateVO.getPageNum(), comActActEvaluateVO.getPageSize()), comActActEvaluateVO); + return R.ok(comActActEvaluateVOIPage); + } + + @Override + public R getEvaluateLists(ComActActEvaluateVO comActActEvaluateVO) { + return R.ok(comActActEvaluateDAO.getEvaluateLists(comActActEvaluateVO)); + } + + @Override + public R pageActivityRegists(ComActActRegistVO comActActRegistVO) { + IPage<ComActActRegistVO> comActActRegistVOIPage = comActActRegistDAO.pageActivityRegists(new Page(comActActRegistVO.getPageNum(), comActActRegistVO.getPageSize()), comActActRegistVO); + return R.ok(comActActRegistVOIPage); + } + + @Override + public R getRegistLists(ComActActRegistVO comActActRegistVO) { + return R.ok(comActActRegistDAO.getRegistLists(comActActRegistVO)); + } + + @Override + public R getNoRegistLists(ComActActRegistVO comActActRegistVO) { + return R.ok(comActActRegistDAO.getNoRegistLists(comActActRegistVO)); + } + + @Override + public R activityStatistics(Long activityId) { + ComActActivityStatisticsVO comActActivityStatisticsVO = comActActivityDAO.activityStatistics(activityId); + if (comActActivityStatisticsVO != null) { + if (comActActivityStatisticsVO.getSignTotal().equals(0)){ + comActActivityStatisticsVO.setSignTotalStr("不限"); + comActActivityStatisticsVO.setNoSignTotalStr(""); + comActActivityStatisticsVO.setSignPersent(""); + }else { + comActActivityStatisticsVO.setSignTotalStr(String.valueOf(comActActivityStatisticsVO.getSignTotal())); + comActActivityStatisticsVO.setNoSignTotalStr(String.valueOf(Integer.valueOf(comActActivityStatisticsVO.getSignTotalStr()) - comActActivityStatisticsVO.getReallySignTotal())); + comActActivityStatisticsVO.setSignPersent(getPersent(comActActivityStatisticsVO.getReallySignTotal(),comActActivityStatisticsVO.getSignTotal())); + } + comActActivityStatisticsVO.setRegistPersent(getPersent(comActActivityStatisticsVO.getReallyRegistTotal(),comActActivityStatisticsVO.getRegistTotal())); + comActActivityStatisticsVO.setEvaluatePersent(getPersent(comActActivityStatisticsVO.getReallyEvaluateTotal(),comActActivityStatisticsVO.getEvaluateTotal())); + } + return R.ok(comActActivityStatisticsVO); + } + + @Override + public R getPictureList(Long userId) { + 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(); + BeanUtils.copyProperties(comActActPictureDO, comActActPictureVO); + comActActPictureVOS.add(comActActPictureVO); + }); + } + return R.ok(comActActPictureVOS); } /** * 分页展示我的所有活动 时间倒序排列 * - * @param comActActivityVO 分页参数 + * @param comActActivityVO + * 分页参数 * @return 分页集合 */ @Override @@ -195,10 +405,10 @@ Page page = new Page<>(); Long pageNum = comActActivityVO.getPageNum(); Long pageSize = comActActivityVO.getPageSize(); - if (null==pageNum||0==pageNum) { + if (null == pageNum || 0 == pageNum) { pageNum = 1l; } - if (null==pageSize||0==pageSize) { + if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); @@ -210,7 +420,8 @@ /** * 报名/取消报名社区活动 * - * @param signactivityVO 报名参数 + * @param signactivityVO + * 报名参数 * @return 报名 取消报名 结果 */ @Override @@ -219,9 +430,51 @@ Integer type = signactivityVO.getType(); Long userId = signactivityVO.getUserId(); Integer isVolunteer = signactivityVO.getIsVolunteer(); - int num=0; - if (1==type) { - ComActActSignDO comActActSignDO=new ComActActSignDO(); + // 查询社区活动 + 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)); + 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 = "全部居民"; + } 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 (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); @@ -234,9 +487,11 @@ log.error(e.getMessage()); } } else { - num = comActActSignDAO.delete(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId).eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, isVolunteer)); + num = comActActSignDAO + .delete(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId) + .eq(ComActActSignDO::getActivityId, activityId).eq(ComActActSignDO::getIsVolunteer, isVolunteer)); } - if (num>0) { + if (num > 0) { return R.ok(); } return R.fail(); @@ -245,33 +500,41 @@ /** * 用户参加的所有社区活动 * - * @param userId 用户id + * @param userId + * 用户id * @return 活动列表 */ @Override public R listActivity(Long userId) { - List<ComActActSignDO> comActActSignDOS = comActActSignDAO.selectList(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId)); + List<ComActActSignDO> comActActSignDOS = comActActSignDAO + .selectList(new QueryWrapper<ComActActSignDO>().lambda().eq(ComActActSignDO::getUserId, userId)); if (ObjectUtils.isEmpty(comActActSignDOS)) { return R.fail(); } - List<Long> longs = comActActSignDOS.stream().map(comActActSignDO -> comActActSignDO.getActivityId()).collect(Collectors.toList()); + List<Long> longs = comActActSignDOS.stream().map(comActActSignDO -> comActActSignDO.getActivityId()) + .collect(Collectors.toList()); List<ComActActivityDO> comActActivityDOS = comActActivityDAO.selectBatchIds(longs); - List<ComActActivityVO>comActActivityVOS=new ArrayList<>(); + 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()); + 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) { + if (isVolunteer.intValue() == 1) { comActActivityVO.setType(1); - }else{ + } else { comActActivityVO.setType(2); } Integer status = comActActivityVO.getStatus(); - if (status.intValue()==3) { + 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); }); return R.ok(comActActivityVOS); @@ -280,12 +543,13 @@ /** * 查询志愿者参与的所有已经完成的活动 * - * @param phone 用户手机号 + * @param phone + * 用户手机号 * @return 所有活动集合 */ @Override public List<ComActActivityVO> listActivityByPhone(String phone) { - List<ComActActivityVO> comActActivityVOS=comActActivityDAO.listActivityByPhone(phone); + List<ComActActivityVO> comActActivityVOS = comActActivityDAO.listActivityByPhone(phone); return comActActivityVOS; } @@ -296,32 +560,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(); } /** @@ -331,24 +597,27 @@ */ @Override public R timedTaskActActivityAll() { -// 修改发布状态 变为未开始 - int num=comActActivityDAO.updateStatusToNotBegin(); - log.info("定时任务--修改社区活动发布状态活动数量【{}】",num); -// 修改报名状态 变为报名中 - int num1=comActActivityDAO.updateStatusToBeginSign(); - log.info("定时任务--修改社区活动报名状态活动数量【{}】",num1); -// 修改进行状态 变为进行中或者已结束 - int num2=comActActivityDAO.updateStatusToBeginActiveOrEnd(); - log.info("定时任务--修改社区活动进行状态活动数量【{}】",num2); - int num3=comActActivityDAO.updateStatusToBeginAfterSingEnd(); - log.info("定时任务--报名结束修改社区活动进行状态活动数量【{}】",num3); - return R.ok(); + // 修改发布状态 变为未开始 + int num = comActActivityDAO.updateStatusToNotBegin(); + log.info("定时任务--修改社区活动发布状态活动数量【{}】", num); + // 修改报名状态 变为报名中 +// 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); + return R.ok(activityEndIds); } /** * 社区后台分页查询社区活动 * - * @param comActActivityVO 查询参数 + * @param comActActivityVO + * 查询参数 * @return 返回结果 */ @Override @@ -356,17 +625,222 @@ Page page = new Page<>(); Long pageNum = comActActivityVO.getPageNum(); Long pageSize = comActActivityVO.getPageSize(); - if (null==pageNum||0==pageNum) { + if (null == pageNum || 0 == pageNum) { pageNum = 1l; } - if (null==pageSize||0==pageSize) { + if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage<ComActActivityVO> iPage = comActActivityDAO.pageActivityCommunityBack(page, comActActivityVO); + iPage.getRecords().forEach(vo ->{ + List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateDAO + .selectList(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, vo.getId())); + if (comActActEvaluateDOList != null && comActActEvaluateDOList.size() > 0) { + BigDecimal starNum = BigDecimal.ZERO; + //总星级 + 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); } + /** + * 首页图表数据汇总 + * + * @param communityId + * 社区id + * @return 图表数据 IndexDataVO + */ + @Override + public R indexDataCommunityBackstageEchart(Long communityId) { + IndexDataVO indexDataVO = new IndexDataVO(); + CommunityGovernanceTrendsVO communityGovernanceTrendsVO = new CommunityGovernanceTrendsVO(); + List<CommunityActivitiesVO> communityActivitiesVOS = new ArrayList<>(); + List<Date> dates = this.getServenDays(); + String s = comActActivityDAO.selectCommunityGovernanceTrendsVO(communityId); + List<String> y = Arrays.asList(s.split(",")); + communityGovernanceTrendsVO.setY(y); + communityGovernanceTrendsVO.setX(Arrays.asList("一起议", "微心愿", "随手拍", "社区活动")); + dates.forEach(date -> { + CommunityActivitiesVO communityActivitiesVO = + comActActivityDAO.selectCommunityActivitiesVO(communityId, date); + communityActivitiesVO.setDate(date); + communityActivitiesVOS.add(communityActivitiesVO); + }); + indexDataVO.setCommunityGovernanceTrendsVO(communityGovernanceTrendsVO); + indexDataVO.setCommunityActivitiesVOS(communityActivitiesVOS); + return R.ok(indexDataVO); + } + + @Override + public R getScreenActActivityList(ScreenActActivityListDTO actActivityListDTO) { + IPage<ActActivityListVO> actActivityListVOIPage = comActActivityDAO.getScreenActActivityList( + new Page(actActivityListDTO.getPageNum(), actActivityListDTO.getPageSize()), actActivityListDTO); + if (!actActivityListVOIPage.getRecords().isEmpty()) { + actActivityListVOIPage.getRecords().forEach(actActivityListVO -> { + ActActivityListVO activityListVO = + comActActivityDAO.getScreenActActivityPeopleCount(actActivityListVO.getId()); + if (activityListVO != null) { + actActivityListVO.setParticipantCount(activityListVO.getParticipantCount()); + actActivityListVO.setVolunteerCount(activityListVO.getVolunteerCount()); + } + }); + } + return R.ok(actActivityListVOIPage); + } + + @Override + public R getActActivityPeopleList(ScreenActActivityPeopleListDTO activityPeopleListDTO) { + return R.ok(comActActSignDAO.getActActivityPeopleList( + new Page(activityPeopleListDTO.getPageNum(), activityPeopleListDTO.getPageSize()), activityPeopleListDTO)); + } + + /** + * 获取最近七天的时间 + * + * @return + */ + private List<Date> getServenDays() { + List<Date> dates = new ArrayList<>(); + Date date = new Date(); + for (int i = 6; i >= 0; i--) { + Date date1 = DateUtils.addDays(date, -i); + dates.add(date1); + } + return dates; + } + + /** + * 定时任务检测即将开始的社区活动,并使用订阅消息通知用户 + */ + @Override + public R timedTaskActivityNotice() { + // 查询所有即将开始的活动 + List<ComActActivityDO> actActivityList = comActActivityDAO.selectList(new QueryWrapper<ComActActivityDO>() + .lambda().le(ComActActivityDO::getBeginAt, DateUtils.addDays(new Date(), 1)) + .ge(ComActActivityDO::getBeginAt, new Date()).notIn(ComActActivityDO::getStatus,5,6)); + if (!actActivityList.isEmpty()) { + WxXCXTempSend util = new WxXCXTempSend(); + try { + String accessToken = util.getAppAccessToken(); + actActivityList.forEach(actActivity -> { + // 查询报名活动人员列表 + List<ComActActSignDO> actSignList = comActActSignDAO.selectList(new QueryWrapper<ComActActSignDO>() + .lambda().eq(ComActActSignDO::getActivityId, actActivity.getId())); + actSignList.forEach(actSign -> { + // 查询用户openId + Map<String, String> map = comActActSignDAO.getUserOpenId(actSign.getUserId()); + if (map != null) { + String openid = map.get("openid"); + // 推送消息 + WxUtil.sendSubscribeHDJJKS(openid, accessToken, actActivity.getActivityName(), + com.panzhihua.common.utlis.DateUtils.format(actActivity.getBeginAt(), + com.panzhihua.common.utlis.DateUtils.ymdhms_format), + actActivity.getActivityAddr(), actSignList.size() + ""); + } + + }); + + }); + } catch (Exception e) { + log.error("推送失败,错误原因:" + e.getMessage()); + } + } + return R.ok(); + } + + private String getPersent(int x, int y){ + if (y == 0) { + return ""; + } + if (x == 0) { + return "0.00%"; + } + double d1 = x * 1.0; + double d2 = y * 1.0; + DecimalFormat decimalFormat = new DecimalFormat("##.00%"); + return decimalFormat.format(d1 / d2); + } + + /** + * 用户签到 + * + * @param comActActRegistVO 签到参数 + * @return 签到结果 + */ + @Override + public R activitySignIn(ComActActRegistVO comActActRegistVO) { + Long activityId = comActActRegistVO.getActivityId(); + Long userId = comActActRegistVO.getUserId(); + if (isNull(activityId)) { + return R.fail("签到所属活动id不能为空!"); + } + 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("不在活动时间范围内"); + } + + 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(nowDate); + int result = comActActRegistDAO.insert(comActActRegistDO); + if (result > 0) { +// ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue(); +// opsForValue.set(activitySignInKey, "", 1800L, TimeUnit.SECONDS); + return R.ok(); + } + return R.fail("网络错误,请重试"); + } + + /** + *用户签到记录列表 + * + * @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