package cn.lili.modules.lmk.service.impl; import cn.lili.base.Result; import cn.lili.common.enums.ActivityStatusEnum; import cn.lili.modules.lmk.domain.entity.Activity; import cn.lili.modules.lmk.domain.entity.ActivityReport; import cn.lili.modules.lmk.domain.form.ActivityForm; import cn.lili.modules.lmk.domain.form.ActivityReportForm; import cn.lili.modules.lmk.domain.query.ActivityMembersQuery; import cn.lili.modules.lmk.domain.query.ActivityQuery; import cn.lili.modules.lmk.domain.vo.ActivityReportVO; import cn.lili.modules.lmk.domain.vo.ActivityVO; import cn.lili.modules.lmk.mapper.ActivityMapper; import cn.lili.modules.lmk.mapper.ActivityReportMapper; import cn.lili.modules.lmk.service.ActivityService; import cn.lili.modules.lmk.service.LmkFileService; import cn.lili.modules.lmk.service.MyActivityService; import cn.lili.modules.member.entity.vo.MemberVO; import cn.lili.utils.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import io.micrometer.core.instrument.util.StringUtils; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class ActivityServiceImpl extends ServiceImpl implements ActivityService { private final LmkFileService lmkFileService; private final MyActivityService activityService; private final ActivityReportMapper activityReportMapper; @Override public Result add(ActivityForm form) { Activity entity = ActivityForm.getEntityByForm(form, null); //默认新增活动为 entity.setStatus(ActivityStatusEnum.NOT_STARTED.getType()); //默认不为推荐 entity.setRecommend(false); baseMapper.insert(entity); return Result.ok("添加成功"); } @Override public Result update(ActivityForm form) { Activity entity = baseMapper.selectById(form.getId()); //判断修改前的封面类型是否为文本,文本不需要删除文件 if (!"文字".equals(entity.getCoverType())){ //判断路径是否改变 if (!form.getCover().equals(entity.getCover())) { //删除云服务器中旧的图片 lmkFileService.deleteObject(entity.getCover()); } } // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); baseMapper.updateById(entity); return Result.ok("修改成功"); } @Override public Result remove(List ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } @Override public Result removeById(String id) { //TODO 先判断活动是否有报名人员 //有的话不可删除 联中间表查询 //删除,同时判断该对象的封面是否存在 ,存在则在云服务器删除 ActivityVO vo = baseMapper.getById(id); if (StringUtils.isNotEmpty(vo.getCover())){ lmkFileService.deleteObject(vo.getCover()); } baseMapper.deleteById(id); return Result.ok("删除成功"); } @Override public Result page(ActivityQuery query) { IPage page = PageUtil.getPage(query, ActivityVO.class); baseMapper.getPage(page, query); for (ActivityVO vo : page.getRecords()) { if (!"文字".equals(vo.getCoverType())){ String url = lmkFileService.getPreviewUrl(vo.getCover()); vo.setUrl(url); } } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @Override public Result detail(String id) { ActivityVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } @Override public Result all() { List entities = baseMapper.selectList(null); List vos = entities.stream() .map(entity -> ActivityVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); List reportActivityVo =vos.stream().filter(item -> ActivityStatusEnum.REPORT.getType().equals(item.getStatus())).collect(Collectors.toList()); return Result.ok().data(reportActivityVo); } @Override public Result uploadObject(MultipartFile file) { return lmkFileService.uploadObject(file); } @Override public String getPreviewUrl(String fileKey) { return lmkFileService.getPreviewUrl(fileKey); } @Override public Result deleteObject(String fileKey) { return lmkFileService.deleteObject(fileKey); } @Override public Result activityChangeStatus(ActivityForm form) { Activity entity = baseMapper.selectById(form.getId()); entity.setStatus(form.getStatus()); baseMapper.updateById(entity); return Result.ok(); } @Override public Result activityChangeRecommend(ActivityForm form) { Activity entity = baseMapper.selectById(form.getId()); entity.setRecommend(form.getRecommend()); baseMapper.updateById(entity); return Result.ok(); } @Override public Result activityMembersPage(ActivityMembersQuery query) { IPage page = PageUtil.getPage(query, MemberVO.class); baseMapper.getMembers(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } }