package com.panzhihua.service_community.service.impl; import java.util.Date; import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.common.model.dtos.community.easyPhoto.AddEasyPhotoActivityDTO; import com.panzhihua.common.model.dtos.community.easyPhoto.EditEasyPhotoActivityDTO; import com.panzhihua.common.model.dtos.community.easyPhoto.PageEasyPhotoActivityDTO; import com.panzhihua.common.model.dtos.community.easyPhoto.PageEasyPhotoActivityUserDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComActEasyPhotoActivityVO; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.service_community.dao.ComActEasyPhotoActivityMapper; import com.panzhihua.service_community.model.dos.ComActEasyPhotoActivityDO; import com.panzhihua.service_community.service.ComActEasyPhotoActivityService; import lombok.extern.slf4j.Slf4j; /** * @auther lyq * @create 2021-06-25 10:34:16 * @describe 随手拍活动表服务实现类 */ @Slf4j @Service public class ComActEasyPhotoActivityServiceImpl extends ServiceImpl implements ComActEasyPhotoActivityService { /** * 查询随手拍是否有活动 * * @return 活动详情 */ @Override public R getEasyPhotoActivity(Long communityId) { ComActEasyPhotoActivityVO photoActivityVO = new ComActEasyPhotoActivityVO(); Date nowDate = DateUtils.getCurrentDate(DateUtils.ymdhms_format); List photoActivityDOS = this.baseMapper.selectList(new QueryWrapper().lambda() .eq(ComActEasyPhotoActivityDO::getCommunityId, communityId) .eq(ComActEasyPhotoActivityDO::getStatus, ComActEasyPhotoActivityDO.status.jxz) .le(ComActEasyPhotoActivityDO::getActivityStartAt, nowDate) .ge(ComActEasyPhotoActivityDO::getActivityEndAt, nowDate)); if (!photoActivityDOS.isEmpty()) { ComActEasyPhotoActivityDO photoActivityDO = photoActivityDOS.get(0); BeanUtils.copyProperties(photoActivityDO, photoActivityVO); return R.ok(photoActivityVO); } return R.ok(); } /** * 社区后台-分页查询随手拍活动列表 * * @param pageEasyPhotoActivityDTO * 请求参数 * @return 随手拍活动列表 */ @Override public R pageActivity(PageEasyPhotoActivityDTO pageEasyPhotoActivityDTO) { return R.ok(this.baseMapper.pageActivity( new Page(pageEasyPhotoActivityDTO.getPageNum(), pageEasyPhotoActivityDTO.getPageSize()), pageEasyPhotoActivityDTO)); } /** * 社区后台-添加随手拍活动 * * @param addEasyPhotoActivityDTO * 请求参数 * @return 添加结果 */ @Override public R addActivity(AddEasyPhotoActivityDTO addEasyPhotoActivityDTO) { // 判断当前活动时间是否与其他时间有冲突 Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(addEasyPhotoActivityDTO.getActivityStartAt(), addEasyPhotoActivityDTO.getActivityEndAt(), null, addEasyPhotoActivityDTO.getCommunityId()); if (count > 0) { return R.fail("在此期间已有活动,请勿重复添加"); } Date nowDate = new Date(); ComActEasyPhotoActivityDO photoActivityDO = new ComActEasyPhotoActivityDO(); BeanUtils.copyProperties(addEasyPhotoActivityDTO, photoActivityDO); photoActivityDO.setActivityStartAt( DateUtils.stringToDate(addEasyPhotoActivityDTO.getActivityStartAt(), DateUtils.ymdhm_format)); photoActivityDO.setActivityEndAt( DateUtils.stringToDate(addEasyPhotoActivityDTO.getActivityEndAt(), DateUtils.ymdhm_format)); photoActivityDO.setCreateAt(new Date()); photoActivityDO.setReleaseAt(new Date()); if (photoActivityDO.getActivityEndAt().getTime() <= nowDate.getTime()) { return R.fail("活动结束时间不可小于当前时间"); } if (nowDate.getTime() >= photoActivityDO.getActivityStartAt().getTime()) { photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.jxz); } else { photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.dks); } photoActivityDO.setCount(0); if (this.baseMapper.insert(photoActivityDO) > 0) { return R.ok(); } return R.fail("添加失败"); } /** * 社区后台-编辑随手拍活动 * * @param editEasyPhotoActivityDTO * 请求参数 * @return 编辑结果 */ @Override public R editActivity(EditEasyPhotoActivityDTO editEasyPhotoActivityDTO) { ComActEasyPhotoActivityDO photoActivityDO = this.baseMapper.selectById(editEasyPhotoActivityDTO.getId()); if (photoActivityDO == null) { return R.fail("未查询到活动记录"); } Integer count = this.baseMapper.getEasyPhotoActivityTimeConflict(editEasyPhotoActivityDTO.getActivityStartAt(), editEasyPhotoActivityDTO.getActivityEndAt(), editEasyPhotoActivityDTO.getId(), photoActivityDO.getCommunityId()); if (count > 0) { return R.fail("在此期间已有活动,请勿重复添加"); } BeanUtils.copyProperties(editEasyPhotoActivityDTO, photoActivityDO); photoActivityDO.setActivityStartAt( DateUtils.stringToDate(editEasyPhotoActivityDTO.getActivityStartAt(), DateUtils.ymdhm_format)); photoActivityDO.setActivityEndAt( DateUtils.stringToDate(editEasyPhotoActivityDTO.getActivityEndAt(), DateUtils.ymdhm_format)); if (new Date().getTime() > photoActivityDO.getActivityStartAt().getTime()) { photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.jxz); } else { photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.dks); } if (new Date().getTime() > photoActivityDO.getActivityEndAt().getTime()) { photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.yjs); } if (this.baseMapper.updateById(photoActivityDO) > 0) { return R.ok(); } return R.fail("编辑失败"); } /** * 社区后台-取消随手拍活动 * * @param id * 随手拍活动id * @return 取消结果 */ @Override public R cancelActivity(Long id) { ComActEasyPhotoActivityDO photoActivityDO = this.baseMapper.selectById(id); if (photoActivityDO == null) { return R.fail("未查询到活动记录"); } photoActivityDO.setStatus(ComActEasyPhotoActivityDO.status.yqx); if (this.baseMapper.updateById(photoActivityDO) > 0) { return R.ok(); } return R.fail("取消失败"); } /** * 分页查询随手拍活动下居民参与记录 * * @param activityUserDTO * 请求参数 * @return 居民参与记录 */ @Override public R pageActivityUser(PageEasyPhotoActivityUserDTO activityUserDTO) { return R.ok(this.baseMapper .pageActivityUser(new Page(activityUserDTO.getPageNum(), activityUserDTO.getPageSize()), activityUserDTO)); } /** * 随手拍活动定时任务 * * @return 执行结果 */ @Override public R timeTaskEasyPhotoActivity() { // 定时任务扫描未开始活动,如果开始时间大于当前时间则更新活动状态 log.info("定时任务检测未开始的随手拍活动,判断是否开始"); List photoActivityDOS = this.baseMapper.selectList(new QueryWrapper().lambda() .eq(ComActEasyPhotoActivityDO::getStatus, ComActEasyPhotoActivityDO.status.dks)); if (!photoActivityDOS.isEmpty()) { Date nowDate = new Date(); photoActivityDOS.forEach(photoActivity -> { if (photoActivity.getActivityStartAt().getTime() <= nowDate.getTime()) { photoActivity.setStatus(ComActEasyPhotoActivityDO.status.jxz); this.baseMapper.updateById(photoActivity); } }); } // 定时任务扫描已开始活动,如果结束时间大于当前时间则更新活动状态 log.info("定时任务检测已开始的随手拍活动,判断活动是否已结束"); List oldPhotoActivityDOS = this.baseMapper.selectList(new QueryWrapper().lambda() .eq(ComActEasyPhotoActivityDO::getStatus, ComActEasyPhotoActivityDO.status.jxz)); if (!oldPhotoActivityDOS.isEmpty()) { Date nowDate = new Date(); oldPhotoActivityDOS.forEach(photoActivity -> { if (photoActivity.getActivityEndAt().getTime() <= nowDate.getTime()) { photoActivity.setStatus(ComActEasyPhotoActivityDO.status.yjs); this.baseMapper.updateById(photoActivity); } }); } return R.ok(); } }