zxl
6 天以前 7c038921c9242db70ea751ac45f6cdc6c35e4a2e
商家端活动申请
9个文件已修改
2个文件已添加
233 ■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/utils/HtmlUtil.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/ActivityMapper.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 &lt;= #{query.reportEndTime}</if>
        <if test="query.memberId != null and query.memberId !=''">AND LA.member_id &lt;= #{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);
    }
}