From 7c038921c9242db70ea751ac45f6cdc6c35e4a2e Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期二, 15 七月 2025 14:59:07 +0800 Subject: [PATCH] 商家端活动申请 --- manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java | 3 framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java | 5 + framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java | 4 framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java | 5 + framework/src/main/java/cn/lili/utils/HtmlUtil.java | 23 +++++ seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java | 66 ++++++++++++++++ framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java | 3 framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java | 36 +++++++-- framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java | 16 +++- manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java | 15 --- framework/src/main/resources/mapper/lmk/ActivityMapper.xml | 59 ++++++++++++++ 11 files changed, 208 insertions(+), 27 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java index 4162815..ac452a3 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/Activity.java +++ b/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; + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java index cbcb35a..8f6e870 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityAuditRecordForm.java +++ b/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); diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java index 8509f1d..da07a71 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityQuery.java @@ -48,5 +48,10 @@ */ private String memberId; + /** + * 鐢宠浜掑姩鐨勫簵閾篿d + */ + private String storeId; + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java index 977a69e..c895d2e 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java +++ b/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); diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java index b32929a..2557297 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java @@ -55,6 +55,7 @@ entity.setPublish(false); //璁剧疆鐢宠浜篿d 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("瀛樺湪娲诲姩宸叉湁鎶ュ悕浜哄憳锛屾棤娉曞垹闄わ紒"); + } + } //鏈粡杩噐eturn鍒欏垹闄� 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); //浼犲叆褰撳墠璇锋眰鐢ㄦ埛鐨刬d - query.setMemberId(UserContext.getCurrentUserId()); + 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()); } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java index 92011fc..9088686 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/NewsServiceImpl.java +++ b/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); diff --git a/framework/src/main/java/cn/lili/utils/HtmlUtil.java b/framework/src/main/java/cn/lili/utils/HtmlUtil.java new file mode 100644 index 0000000..52e3326 --- /dev/null +++ b/framework/src/main/java/cn/lili/utils/HtmlUtil.java @@ -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); + } +} diff --git a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml b/framework/src/main/resources/mapper/lmk/ActivityMapper.xml index 9382128..e651bc2 100644 --- a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml +++ b/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, diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java b/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java index 8ae3b7c..553f65e 100644 --- a/manager-api/src/main/java/cn/lili/controller/lmk/ActivityController.java +++ b/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); } diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java b/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java index 703546c..2cc7463 100644 --- a/manager-api/src/main/java/cn/lili/controller/lmk/NewsController.java +++ b/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); } diff --git a/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java b/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java new file mode 100644 index 0000000..ab0bd17 --- /dev/null +++ b/seller-api/src/main/java/cn/lili/controller/activity/StoreActivityController.java @@ -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); + } + + +} -- Gitblit v1.8.0