framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java
@@ -75,4 +75,7 @@ @TableField("member_id") private String memberId; @TableField("store_id") private String storeId; } framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java
@@ -49,14 +49,14 @@ return entity; } public static ActivityAuditRecordForm getEntityByManagerBuildForm(@NotNull String activityId) { public static ActivityAuditRecordForm getFormByManager(@NotNull String activityId) { ActivityAuditRecordForm form = new ActivityAuditRecordForm(); form.setActivityId(activityId); form.setAudit(1); form.setRemarks(mangerBuild); return form; } public static ActivityAuditRecordForm getEntityByBuyerBuildForm(@NotNull String activityId) { public static ActivityAuditRecordForm getFormByBuyer(@NotNull String activityId) { ActivityAuditRecordForm form = new ActivityAuditRecordForm(); form.setActivityId(activityId); form.setAudit(0); framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java
@@ -48,5 +48,10 @@ */ private String memberId; /** * 申请互动的店铺id */ private String storeId; } framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
@@ -35,7 +35,10 @@ */ IPage getPage(IPage page, @Param("query") ActivityQuery query); /** * 商家端端分页 */ IPage storeGetPage(IPage page, @Param("query") ActivityQuery query); IPage getMembers(IPage page, @Param("query") ActivityMembersQuery query); framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
@@ -55,6 +55,7 @@ entity.setPublish(false); //设置申请人id entity.setMemberId(UserContext.getCurrentUserId()); entity.setStoreId(UserContext.getCurrentUser().getStoreId()); baseMapper.insert(entity); mangerSaveOrUpdate(isManager,entity); return Result.ok("添加成功"); @@ -88,9 +89,9 @@ //添加审核记录 if (isManager){ //直接通过 activityAuditRecordForm = ActivityAuditRecordForm.getEntityByManagerBuildForm(entity.getId()); activityAuditRecordForm = ActivityAuditRecordForm.getFormByManager(entity.getId()); }else { activityAuditRecordForm = ActivityAuditRecordForm.getEntityByBuyerBuildForm(entity.getId()); activityAuditRecordForm = ActivityAuditRecordForm.getFormByBuyer(entity.getId()); } activityAuditRecordService.addOrUpdateAuditActivity(activityAuditRecordForm); } @@ -98,9 +99,13 @@ public Result remove(List<String> ids) { //判断活动id是否已经存在报名人员 for(String id : ids){ if(haveApplicationMembers(id)){ return Result.error("该活动无法删除,已存在报名人员"); if (isPublishActivity(id)){ return Result.error("存在活动已发布删除前请下架该活动!"); } if(haveApplicationMembers(id)){ return Result.error("存在活动已有报名人员,无法删除!"); } } //未经过return则删除 for (String id : ids){ @@ -115,6 +120,12 @@ activityMembersQuery.setId(id); 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); @@ -128,9 +139,12 @@ @Override public Result removeById(String id) { //先判断活动是否有报名人员 if (isPublishActivity(id)){ return Result.error("该活动已发布删除前请下架该活动!"); } if(haveApplicationMembers(id)){ return Result.error("该活动无法删除,已存在报名人员"); return Result.error("该活动已有报名人员,无法删除!"); } //删除,同时判断该对象的封面是否存在 ,存在则在云服务器删除 delActivityAndInformation(id); @@ -152,18 +166,24 @@ @Override public Result getMyApplyActivityPage(ActivityQuery query){ System.out.println(query); //传入当前请求用户的id String storeId = UserContext.getCurrentUser().getStoreId(); if (storeId == null){ query.setMemberId(UserContext.getCurrentUserId()); }else { query.setStoreId(storeId); } //更具用户id获得活动 IPage<ActivityVO> page = PageUtil.getPage(query, ActivityVO.class); baseMapper.getPage(page, query); baseMapper.storeGetPage(page, query); for (ActivityVO vo : page.getRecords()) { if (!ActivityCoverTypeEnum.TEXT.getType().equals(vo.getCoverType())){ vo.setUrl(cOSUtil.getPreviewUrl(vo.getCover())); } } return Result.ok().data(page.getRecords()).total(page.getTotal()); } framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java
@@ -59,16 +59,24 @@ @Override public Result remove(List<String> ids) { for (String id : ids) { if (isPublishNews(id)){ return Result.error("存在新闻已发布删除前请下架该新闻!"); } } baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } public Boolean isPublishNews(String id){ News entity = baseMapper.selectById(id); return entity.getPublish(); } @Override public Result removeById(String id) { //判断是否发布发布则提示先下架,再删除 News entity = baseMapper.selectById(id); if(entity.getPublish()){ throw new RuntimeException("该新闻已发布"); if(isPublishNews(id)){ return Result.error("该新闻已发布删除前请下架该新闻!"); } baseMapper.deleteById(id); framework/src/main/java/cn/lili/utils/HtmlUtil.java
New file @@ -0,0 +1,23 @@ package cn.lili.utils; /** * lmk-shop-java * 新增html处理 * * @author : zxl * @date : 2025-07-14 14:10 **/ public class HtmlUtil { public static String addVideoControls(String html) { if (html == null || html.isEmpty()) { return html; } // 匹配所有未包含 controls 属性的 <video> 标签 String regex = "<video\\b(?![^>]*\\bcontrols\\b)([^>]*)>"; String replacement = "<video controls=\"controls\"$1>"; return html.replaceAll(regex, replacement); } } framework/src/main/resources/mapper/lmk/ActivityMapper.xml
@@ -165,9 +165,68 @@ <if test="query.audit == true" >AND LAAR.audit != 0</if> <if test="query.audit == false" >AND LAAR.audit = 0</if> <if test="query.memberId !=null and query.memberId !=''">And LA.member_id = #{query.memberId}</if> <if test="query.storeId !=null and query.storeId !=''">And LA.store_id = #{query.storeId}</if> Order by LA.create_time DESC </select> <select id="storeGetPage" resultMap="BaseResultMap"> SELECT LA.id, LA.activity_name, LA.activity_type, LA.report_start_time, LA.report_end_time, LA.start_time, LA.end_time, LA.status, LA.recommend, LA.cover, LA.cover_type, LA.limit_user_num, LA.activity_location, LA.activity_content, LA.publish, LAAR.audit as auditStatus FROM lmk_activity LA LEFT JOIN ( SELECT activity_id, audit, create_time FROM ( SELECT activity_id, audit, create_time, ROW_NUMBER() OVER (PARTITION BY activity_id ORDER BY create_time DESC) AS rn FROM lmk_activity_audit_record WHERE delete_flag = 0 ) t WHERE rn = 1 ) LAAR ON LA.id = LAAR.activity_id WHERE LA.delete_flag = 0 <if test="query.activityName != null and query.activityName != ''">AND LA.activity_name LIKE CONCAT('%', #{query.activityName}, '%')</if> <if test="query.activityType != null and query.activityType != ''">AND LA.activity_type LIKE CONCAT('%', #{query.activityType}, '%')</if> <if test="query.recommend != null and query.recommend != ''">AND LA.recommend = #{recommend}</if> <if test="query.reportStartTime != null">AND LA.report_start_time >= #{query.reportStartTime}</if> <if test="query.reportEndTime != null">AND LA.report_end_time <= #{query.reportEndTime}</if> <if test="query.memberId != null and query.memberId !=''">AND LA.member_id <= #{query.memberId}</if> <if test="query.audit == true" >AND LAAR.audit != 0</if> <if test="query.audit == false" >AND LAAR.audit = 0</if> <if test="query.memberId !=null and query.memberId !=''">And LA.member_id = #{query.memberId}</if> <if test="query.storeId !=null and query.storeId !=''">And LA.store_id = #{query.storeId}</if> Order by LA.create_time DESC </select> <select id="getCanReportPage" resultMap="BaseResultMap"> SELECT LA.id, manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java
@@ -12,6 +12,7 @@ import cn.lili.modules.lmk.service.ActivityAuditRecordService; import cn.lili.modules.lmk.service.ActivityService; import cn.lili.modules.lmk.service.CustomerBlackService; import cn.lili.utils.HtmlUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -47,25 +48,15 @@ @PostMapping @ApiOperation(value = "添加", notes = "添加") public Result add(@RequestBody ActivityForm form) { form.setActivityContent(addVideoControls(form.getActivityContent())); form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent())); return activityService.add(form,true); } public static String addVideoControls(String html) { if (html == null || html.isEmpty()) { return html; } // 匹配所有未包含 controls 属性的 <video> 标签 String regex = "<video\\b(?![^>]*\\bcontrols\\b)([^>]*)>"; String replacement = "<video controls=\"controls\"$1>"; return html.replaceAll(regex, replacement); } @PutMapping @ApiOperation(value = "修改", notes = "修改") public Result update(@RequestBody ActivityForm form) { form.setActivityContent(addVideoControls(form.getActivityContent())); form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent())); return activityService.update(form,true); } manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java
@@ -9,6 +9,7 @@ import cn.lili.modules.lmk.domain.query.ActivityQuery; import cn.lili.modules.lmk.domain.query.NewsQuery; import cn.lili.modules.lmk.service.NewsService; import cn.lili.utils.HtmlUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -36,12 +37,14 @@ @PostMapping @ApiOperation(value = "添加", notes = "添加") public Result add(@RequestBody @Validated(Add.class) NewsForm form) { form.setContent(HtmlUtil.addVideoControls(form.getContent())); return newsService.add(form); } @PutMapping @ApiOperation(value = "修改", notes = "修改") public Result update(@RequestBody @Validated(Update.class) NewsForm form) { form.setContent(HtmlUtil.addVideoControls(form.getContent())); return newsService.update(form); } seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java
New file @@ -0,0 +1,66 @@ package cn.lili.controller.activity; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.ActivityForm; import cn.lili.modules.lmk.domain.query.ActivityQuery; import cn.lili.modules.lmk.service.ActivityService; import cn.lili.utils.HtmlUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import java.util.List; /** * lmk-shop-java * 商户端活动接口 * * @author : zxl * @date : 2025-07-14 17:27 **/ @Validated @RequiredArgsConstructor @Api(value = "我的活动", tags = "我的活动管理") @RestController @RequestMapping("/store/lmk/activity") public class StoreActivityController { private final ActivityService activityService; @PostMapping("/add") @ApiOperation(value = "商户端新增活动", notes = "商户端新增活动") public Result addActivityByBuyer(@RequestBody ActivityForm form){ return activityService.add(form,false); } @GetMapping("/applyActivityPage") @ApiOperation(value = "用户申请活动分页", notes = "用户申请活动分页") public Result getMyApplyActivityPage(ActivityQuery query){ return activityService.getMyApplyActivityPage(query); } @PutMapping @ApiOperation(value = "修改", notes = "修改") public Result update(@RequestBody ActivityForm form) { form.setActivityContent(HtmlUtil.addVideoControls(form.getActivityContent())); return activityService.update(form,false); } @DeleteMapping("/{id}") @ApiOperation(value = "ID删除", notes = "ID删除") public Result removeById(@PathVariable("id") String id) { return activityService.removeById(id); } @DeleteMapping("/batch") @ApiOperation(value = "批量删除", notes = "批量删除") public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) { return activityService.remove(ids); } }