framework/src/main/java/cn/lili/common/enums/ActivityCoverTypeEnum.java
New file @@ -0,0 +1,19 @@ package cn.lili.common.enums; import lombok.Getter; @Getter public enum ActivityCoverTypeEnum { VIDEO("video","视频"), IMAGE("image","图片"), TEXT("text","文字"); private String type; private String desc; ActivityCoverTypeEnum(String type,String desc) { this.type = type; this.desc = desc; } } framework/src/main/java/cn/lili/common/enums/ActivityStatusEnum.java
@@ -4,16 +4,21 @@ @Getter public enum ActivityStatusEnum { NOT_STARTED("未开始"), REPORT("报名中"), IN_PROGRESS("进行中"), ENDED("已结束"); UNPUBLISH("unPublish","未发布"), PUBLISH("publish","已发布"), TAKE_DOWN("takeDown","已下架"), NOT_STARTED("noStart","未开始"), REPORT("report","报名中"), IN_PROGRESS("inProgress","进行中"), ENDED("end","已结束"); private String type; ActivityStatusEnum(String type) { private String desc; ActivityStatusEnum(String type, String desc) { this.type = type; this.desc = desc; } framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java
@@ -68,6 +68,8 @@ @TableField("activity_content") private String activityContent; /** 判断是否发布*/ @TableField("publish") private Boolean publish; } framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityForm.java
@@ -92,6 +92,10 @@ @ApiModelProperty(value = "活动详细内容(支持富文本)", example = "<p>活动流程:...</p>") private String activityContent; /** 活动发布 */ @ApiModelProperty(value = "活动发布", example = "") private Boolean publish; public static Activity getEntityByForm(@NonNull ActivityForm form, Activity entity) { if(entity == null) { entity = new Activity(); framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java
@@ -90,6 +90,12 @@ private Boolean isReport; /** * 是否发布 */ private Boolean publish; /** * 是否收藏 */ private Boolean isCollect; framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
@@ -1,6 +1,7 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.base.Result; import cn.lili.common.enums.ActivityCoverTypeEnum; import cn.lili.common.enums.ActivityStatusEnum; import cn.lili.modules.lmk.domain.entity.Activity; import cn.lili.modules.lmk.domain.form.ActivityForm; @@ -13,6 +14,7 @@ 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.COSUtil; import cn.lili.utils.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -35,6 +37,7 @@ private final MyActivityService activityService; private final ActivityReportMapper activityReportMapper; private final COSUtil cOSUtil; @Override public Result add(ActivityForm form) { @@ -43,6 +46,8 @@ entity.setStatus(ActivityStatusEnum.NOT_STARTED.getType()); //默认不为推荐 entity.setRecommend(false); //默认未发布 entity.setPublish(false); baseMapper.insert(entity); return Result.ok("添加成功"); @@ -53,7 +58,7 @@ Activity entity = baseMapper.selectById(form.getId()); //判断修改前的封面类型是否为文本,文本不需要删除文件 if (!"文字".equals(entity.getCoverType())){ if (!ActivityCoverTypeEnum.TEXT.getType().equals(entity.getCoverType())){ //判断路径是否改变 if (!form.getCover().equals(entity.getCover())) { //删除云服务器中旧的图片 @@ -79,10 +84,6 @@ public Result removeById(String id) { //TODO 先判断活动是否有报名人员 //有的话不可删除 联中间表查询 //删除,同时判断该对象的封面是否存在 ,存在则在云服务器删除 ActivityVO vo = baseMapper.getById(id); if (StringUtils.isNotEmpty(vo.getCover())){ @@ -99,9 +100,8 @@ baseMapper.getPage(page, query); for (ActivityVO vo : page.getRecords()) { if (!"文字".equals(vo.getCoverType())){ String url = lmkFileService.getPreviewUrl(vo.getCover()); vo.setUrl(url); if (!ActivityCoverTypeEnum.TEXT.getType().equals(vo.getCoverType())){ vo.setUrl(cOSUtil.getPreviewUrl(vo.getCover())); } } return Result.ok().data(page.getRecords()).total(page.getTotal()); @@ -116,8 +116,13 @@ @Override public Result getCanReportPage(ActivityQuery query){ IPage<ActivityVO> page = PageUtil.getPage(query, ActivityVO.class); //已发布的活动 baseMapper.getCanReportPage(page, query); for(ActivityVO activityVO : page.getRecords()){ activityVO.setUrl(cOSUtil.getPreviewUrl(activityVO.getCover())); } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -129,9 +134,6 @@ .map(entity -> ActivityVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); List<ActivityVO> reportActivityVo =vos.stream().filter(item -> ActivityStatusEnum.REPORT.getType().equals(item.getStatus())).collect(Collectors.toList()); return Result.ok().data(reportActivityVo); } @@ -153,7 +155,16 @@ @Override public Result activityChangeStatus(ActivityForm form) { Activity entity = baseMapper.selectById(form.getId()); entity.setStatus(form.getStatus()); 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("该活动无法下架,已存在报名人员"); } } baseMapper.updateById(entity); return Result.ok(); } framework/src/main/java/cn/lili/modules/lmk/service/impl/MyActivityServiceImpl.java
@@ -1,10 +1,13 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.base.Result; import cn.lili.common.enums.ActivityCoverTypeEnum; import cn.lili.common.enums.ActivityStatusEnum; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.modules.lmk.domain.entity.Activity; import cn.lili.modules.lmk.domain.entity.ActivityReport; import cn.lili.modules.lmk.domain.entity.MyCollect; import cn.lili.modules.lmk.domain.form.ActivityReportForm; import cn.lili.modules.lmk.domain.query.ActivityReportQuery; import cn.lili.modules.lmk.domain.query.MyActivityQuery; @@ -13,7 +16,9 @@ import cn.lili.modules.lmk.domain.vo.MyActivityVo; import cn.lili.modules.lmk.mapper.ActivityMapper; import cn.lili.modules.lmk.mapper.ActivityReportMapper; import cn.lili.modules.lmk.mapper.MyCollectMapper; import cn.lili.modules.lmk.service.MyActivityService; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; @@ -35,13 +40,18 @@ private final ActivityMapper activityMapper; private final ActivityReportMapper activityReportMapper; private final COSUtil cOSUtil; private final MyCollectMapper myCollectMapper; @Override public Result getMyActivityList(MyActivityQuery query) { String userId = UserContext.getCurrentUserId(); List<MyActivityVo> myActivityList = activityMapper.getMyActivityList(query,userId); for (MyActivityVo myActivityVo : myActivityList){ if (!ActivityCoverTypeEnum.TEXT.getType().equals(myActivityVo.getCoverType())){ myActivityVo.setUrl(cOSUtil.getPreviewUrl(myActivityVo.getCover())); } } return Result.ok().data(myActivityList); } @@ -107,26 +117,35 @@ */ @Override public ActivityReportVO userReport(String activityId){ if (UserContext.getCurrentUserId() == null || UserContext.getCurrentUserId().isEmpty()){ throw new RuntimeException("用户登录状态异常"); } return activityReportMapper.getActivityReport(activityId,UserContext.getCurrentUserId()); } /**获得活动详情 并 活动账号报名活动情况,收藏情况 * * @param activityId * @return */ @Override public Result detailByUsr(String activityId) { //查询活动详情 ActivityVO vo = baseMapper.getById(activityId); Assert.notNull(vo, "记录不存在"); //查询报名情况 ActivityReportVO reportVO = userReport(activityId); ActivityReport activityReport = new LambdaQueryChainWrapper<>(activityReportMapper) .eq(ActivityReport::getUserId, UserContext.getCurrentUserId()) .eq(ActivityReport::getDeleteFlag,0) .eq(ActivityReport::getActivityId,activityId) //查询用户收藏情况 MyCollect myCollect = new LambdaQueryChainWrapper<>(myCollectMapper) .eq(MyCollect::getRefId,activityId) .eq(MyCollect::getUserId,UserContext.getCurrentUserId()) .eq(MyCollect::getDeleteFlag,false) .one(); vo.setIsCollect(activityReport != null); vo.setIsCollect(myCollect != null); if (!ActivityCoverTypeEnum.TEXT.getType().equals(vo.getCoverType())){ vo.setUrl(cOSUtil.getPreviewUrl(vo.getCover())); } //则当前用户未报名 if (reportVO == null){ vo.setIsReport(false); framework/src/main/resources/mapper/lmk/ActivityMapper.xml
@@ -18,6 +18,7 @@ <result column="limit_user_num" property="limitUserNum" /> <result column="activity_location" property="activityLocation" /> <result column="activity_content" property="activityContent" /> <result column="publish" property="publish" /> </resultMap> <resultMap id="MyActivityResultMap" type="cn.lili.modules.lmk.domain.vo.MyActivityVo"> @@ -54,7 +55,7 @@ AND LAR.user_id = #{userId} AND LAR.cancel = #{query.cancel} <if test="query.status == null or query.status == ''"> AND LA.status != '已结束' AND LA.status != 'end' </if> <if test="query.status != null and query.status != ''"> AND LA.status = #{query.status} @@ -78,7 +79,8 @@ LA.cover_type, LA.limit_user_num, LA.activity_location, LA.activity_content LA.activity_content, LA.publish FROM lmk_activity LA WHERE @@ -101,7 +103,8 @@ LA.cover_type, LA.limit_user_num, LA.activity_location, LA.activity_content LA.activity_content, LA.publish FROM lmk_activity LA WHERE @@ -133,7 +136,7 @@ lmk_activity LA WHERE LA.delete_flag = 0 AND LA.status = '报名中' AND LA.publish = 1 </select>