| | |
| | | import cn.lili.modules.lmk.domain.vo.ActivityVO; |
| | | import cn.lili.modules.lmk.mapper.ActivityMapper; |
| | | import cn.lili.modules.lmk.service.ActivityAuditRecordService; |
| | | import cn.lili.modules.lmk.service.ActivityReportService; |
| | | import cn.lili.modules.lmk.service.ActivityService; |
| | | import cn.lili.modules.lmk.service.LmkFileService; |
| | | import cn.lili.modules.member.entity.vo.MemberVO; |
| | |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.Assert; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | @Transactional |
| | | public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements ActivityService { |
| | | |
| | | private final LmkFileService lmkFileService; |
| | |
| | | private final COSUtil cOSUtil; |
| | | |
| | | private final ActivityAuditRecordService activityAuditRecordService; |
| | | |
| | | private final ActivityReportService activityReportService; |
| | | |
| | | |
| | | @Override |
| | |
| | | public Result remove(List<String> ids) { |
| | | //判断活动id是否已经存在报名人员 |
| | | for(String id : ids){ |
| | | if (isPublishActivity(id)){ |
| | | return Result.error("存在活动已发布删除前请下架该活动!"); |
| | | } |
| | | if(haveApplicationMembers(id)){ |
| | | return Result.error("存在活动已有报名人员,无法删除!"); |
| | | canDeleteActivity(id); |
| | | |
| | | } |
| | | |
| | | return Result.ok("删除成功"); |
| | | } |
| | | /** |
| | | * 判断是否能删除活动 并删除活动相关信息 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | public Result canDeleteActivity(String id){ |
| | | Activity activity = baseMapper.selectById(id); |
| | | |
| | | //活动是否发布 |
| | | if (activity.getPublish()){ |
| | | throw new RuntimeException("存在活动已发布删除前请下架该活动!"); |
| | | } |
| | | //检查报名人员前判断活动是否结束了 结束了就允许删除 |
| | | Date currentDate = new Date(); |
| | | if (currentDate.before(activity.getEndTime())){ |
| | | //活动未结束 且报名人员的情况 |
| | | if(haveApplicationMembers(activity.getId())){ |
| | | throw new RuntimeException("存在活动已有报名人员,无法删除!"); |
| | | } |
| | | |
| | | } |
| | | //未经过return则删除 |
| | | for (String id : ids){ |
| | | delActivityAndInformation(id); |
| | | } |
| | | |
| | | delActivityAndInformation(activity); |
| | | return Result.ok("删除成功"); |
| | | } |
| | | //判断活动是否存在报名人员 |
| | |
| | | return (long) activityMembersPage(activityMembersQuery).get("total") > 0; |
| | | } |
| | | //判断互动是否发布 |
| | | public Boolean isPublishActivity(String id){ |
| | | Activity activity = baseMapper.selectById(id); |
| | | return activity.getPublish(); |
| | | } |
| | | |
| | | //删除活动同时删除活动的相关信息 |
| | | public void delActivityAndInformation(String id){ |
| | | ActivityVO vo = baseMapper.getById(id); |
| | | if (StringUtils.isNotEmpty(vo.getCover())){ |
| | | lmkFileService.deleteObject(vo.getCover()); |
| | | public void delActivityAndInformation(Activity activity){ |
| | | if (StringUtils.isNotEmpty(activity.getCover())){ |
| | | lmkFileService.deleteObject(activity.getCover()); |
| | | } |
| | | baseMapper.deleteById(id); |
| | | baseMapper.deleteById(activity.getId()); |
| | | //删除审核记录 |
| | | activityAuditRecordService.delActivityAuditById(id); |
| | | activityAuditRecordService.delActivityAuditById(activity.getId()); |
| | | //删除活动报名人员 |
| | | activityReportService.delByActivityId(activity.getId()); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public Result removeById(String id) { |
| | | //先判断活动是否有报名人员 |
| | | if (isPublishActivity(id)){ |
| | | return Result.error("该活动已发布删除前请下架该活动!"); |
| | | } |
| | | |
| | | if(haveApplicationMembers(id)){ |
| | | return Result.error("该活动已有报名人员,无法删除!"); |
| | | } |
| | | //删除,同时判断该对象的封面是否存在 ,存在则在云服务器删除 |
| | | delActivityAndInformation(id); |
| | | return Result.ok("删除成功"); |
| | | return canDeleteActivity(id); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public Result activityChangeStatus(ActivityForm form) { |
| | | //判断活动 |
| | | Activity entity = baseMapper.selectById(form.getId()); |
| | | |
| | | entity.setPublish(form.getPublish()); |
| | | |
| | | if (!form.getPublish()){ |
| | | //下架判断是否有人员报名,有报名的话禁止提醒无法下架 |
| | | //下架判断是否有人员报名,有报名且活动未结束的话禁止提醒无法下架 |
| | | ActivityMembersQuery activityMembersQuery = new ActivityMembersQuery(); |
| | | activityMembersQuery.setId(form.getId()); |
| | | if((long)activityMembersPage(activityMembersQuery).get("total") > 0){ |
| | | return Result.error("该活动无法下架,已存在报名人员"); |
| | | Date currentTime = new Date(); |
| | | |
| | | if (currentTime.before(entity.getEndTime())){ |
| | | if(haveApplicationMembers(form.getId())){ |
| | | return Result.error("该活动无法下架,已存在报名人员"); |
| | | } |
| | | } |
| | | return Result.ok(); |
| | | |
| | | }else { |
| | | //判断该活动是否审核通过 |
| | | if(activityAuditRecordService.getActivityActivityIsAudit(form.getId())){ |
| | | baseMapper.updateById(entity); |
| | | return Result.ok(); |
| | | }else { |
| | | if(!activityAuditRecordService.getActivityActivityIsAudit(form.getId())){ |
| | | return Result.error("活动未通过审核"); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | baseMapper.updateById(entity); |
| | | return Result.ok(); |
| | | } |
| | | |
| | | @Override |