package com.panzhihua.service_community.service.impl;
|
|
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;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @auther lyq
|
* @create 2021-06-25 10:34:16
|
* @describe 随手拍活动表服务实现类
|
*/
|
@Slf4j
|
@Service
|
public class ComActEasyPhotoActivityServiceImpl extends ServiceImpl<ComActEasyPhotoActivityMapper, ComActEasyPhotoActivityDO> implements ComActEasyPhotoActivityService {
|
|
/**
|
* 查询随手拍是否有活动
|
* @return 活动详情
|
*/
|
@Override
|
public R getEasyPhotoActivity(Long communityId){
|
ComActEasyPhotoActivityVO photoActivityVO = new ComActEasyPhotoActivityVO();
|
Date nowDate = DateUtils.getCurrentDate(DateUtils.ymdhms_format);
|
List<ComActEasyPhotoActivityDO> photoActivityDOS = this.baseMapper.selectList(
|
new QueryWrapper<ComActEasyPhotoActivityDO>().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);
|
if(count > 0){
|
return R.fail("在此期间已有活动,请勿重复添加");
|
}
|
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(new Date().getTime() > photoActivityDO.getActivityStartAt().getTime()){
|
photoActivityDO.setStatus(2);
|
}else{
|
photoActivityDO.setStatus(1);
|
}
|
|
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());
|
if(count > 0){
|
return R.fail("在此期间已有活动,请勿重复添加");
|
}
|
|
BeanUtils.copyProperties(editEasyPhotoActivityDTO,photoActivityDO);
|
photoActivityDO.setActivityStartAt(DateUtils.stringToDate(editEasyPhotoActivityDTO.getActivityStartAt(),DateUtils.ymdhms_format));
|
photoActivityDO.setActivityEndAt(DateUtils.stringToDate(editEasyPhotoActivityDTO.getActivityEndAt(),DateUtils.ymdhms_format));
|
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<ComActEasyPhotoActivityDO> photoActivityDOS = this.baseMapper.selectList(new QueryWrapper<ComActEasyPhotoActivityDO>()
|
.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<ComActEasyPhotoActivityDO> oldPhotoActivityDOS = this.baseMapper.selectList(new QueryWrapper<ComActEasyPhotoActivityDO>()
|
.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();
|
}
|
}
|