framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeActivity.java
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import lombok.Data; /** @@ -29,11 +31,11 @@ @TableField("begin_time") /** 活动开始时间 */ private LocalDateTime beginTime; private Date beginTime; @TableField("end_time") /** 活动结束时间 */ private LocalDateTime endTime; private Date endTime; @TableField("max_prize") /** 每日最大抽奖上限 */ @@ -52,7 +54,7 @@ private String activityCover; @TableField("enable_status") /** 是否开启活动 */ /** 是否开启活动 */ private String enableStatus; framework/src/main/java/cn/lili/modules/lmk/domain/entity/PrizeDraw.java
@@ -28,7 +28,7 @@ @TableField("coupon_id") /** 优惠卷id */ private Long couponId; private String couponId; @TableField("prize_content") /** 奖品内容 */ framework/src/main/java/cn/lili/modules/lmk/domain/form/PrizeActivityForm.java
@@ -4,9 +4,12 @@ import cn.lili.group.Add; import cn.lili.base.AbsForm; import cn.lili.modules.lmk.domain.entity.PrizeActivity; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.beans.BeanUtils; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.lang.NonNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,10 +36,14 @@ @NotNull(message = "活动开始时间不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("活动开始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date beginTime; @NotNull(message = "活动结束时间不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("活动结束时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; @NotNull(message = "每日最大抽奖上限不能为空", groups = {Add.class, Update.class}) framework/src/main/java/cn/lili/modules/lmk/domain/query/PrizeActivityQuery.java
@@ -1,7 +1,12 @@ package cn.lili.modules.lmk.domain.query; import cn.lili.base.AbsQuery; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.lang.NonNull; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -18,5 +23,15 @@ @Data @ApiModel(value = "PrizeActivity查询参数", description = "抽奖活动查询参数") public class PrizeActivityQuery extends AbsQuery { public String activityName; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") public Date beginTime; @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") public Date endTime; } framework/src/main/java/cn/lili/modules/lmk/domain/query/PrizeDrawQuery.java
@@ -18,5 +18,13 @@ @Data @ApiModel(value = "PrizeDraw查询参数", description = "抽奖活动奖品查询参数") public class PrizeDrawQuery extends AbsQuery { /** * 奖品名 */ private String prizeName; /** * 奖品类型 */ private String prizeType; } framework/src/main/java/cn/lili/modules/lmk/domain/query/VideoCommentMangerQuery.java
New file @@ -0,0 +1,42 @@ package cn.lili.modules.lmk.domain.query; import cn.lili.base.AbsQuery; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import java.util.Date; /** * lmk-shop-java * * @author : zxl * @date : 2025-08-14 10:37 **/ @Data @ApiModel(value = "VideoCommentMangerQuery查询参数", description = "管理端视频评论查询参数") public class VideoCommentMangerQuery extends AbsQuery { @ApiModelProperty("视频id") private String videoId; @ApiModelProperty("评论内容") private String commentContent; @ApiModelProperty("用户名称") private String nickName; @ApiModelProperty("起始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date startTime; @ApiModelProperty("结束时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endTime; } framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeDrawVO.java
@@ -48,6 +48,9 @@ @ApiModelProperty("奖品图片") private String prizeImg; private String prizeCoverUrl; private String prizeImgUrl; public static PrizeDrawVO getVoByEntity(@NonNull PrizeDraw entity, PrizeDrawVO vo) { if(vo == null) { vo = new PrizeDrawVO(); framework/src/main/java/cn/lili/modules/lmk/mapper/VideoCommentMapper.java
@@ -1,6 +1,7 @@ package cn.lili.modules.lmk.mapper; import cn.lili.modules.lmk.domain.entity.VideoComment; import cn.lili.modules.lmk.domain.query.VideoCommentMangerQuery; import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -27,6 +28,9 @@ */ VideoCommentVO getById(String id); IPage getManagerPage (IPage page, @Param("query") VideoCommentMangerQuery query); /** * 分页 */ framework/src/main/java/cn/lili/modules/lmk/service/ActivityRefPrizeService.java
@@ -16,6 +16,20 @@ public interface ActivityRefPrizeService extends IService<ActivityRefPrize> { /** * 根据抽奖活动id 返回奖品集合 * @param prizeActivityId * @return */ Result getActivityRefPrizeByActivityId(String prizeActivityId); /** * 更具奖品id活动相关活动 * @param prizeId * @return */ Result getPrizeByIdAndPrizeActivityId(String prizeId); /** * 添加 * @param form * @return framework/src/main/java/cn/lili/modules/lmk/service/PrizeDrawService.java
@@ -14,6 +14,12 @@ * @since 2025-08-14 */ public interface PrizeDrawService extends IService<PrizeDraw> { /** * 返回能否修改,以及若是优惠劵类型,返回优惠劵信息。 * @param prizeDrawId * @return */ Result canUpDatePrizeDraw(String prizeDrawId); /** * 添加 @@ -22,6 +28,7 @@ */ Result add(PrizeDrawForm form); /** * 修改 * @param form framework/src/main/java/cn/lili/modules/lmk/service/VideoCommentService.java
@@ -3,6 +3,7 @@ import cn.lili.modules.lmk.domain.entity.ThumbsUpRecord; import cn.lili.modules.lmk.domain.entity.VideoComment; import cn.lili.modules.lmk.domain.form.ThumbsUpRecordForm; import cn.lili.modules.lmk.domain.query.VideoCommentMangerQuery; import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO; import com.baomidou.mybatisplus.extension.service.IService; import cn.lili.base.Result; @@ -18,6 +19,8 @@ */ public interface VideoCommentService extends IService<VideoComment> { Result mangerComment(VideoCommentMangerQuery query); /** * 添加 * @param form framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityRefPrizeServiceImpl.java
@@ -5,6 +5,7 @@ import cn.lili.modules.lmk.mapper.ActivityRefPrizeMapper; import cn.lili.modules.lmk.service.ActivityRefPrizeService; import cn.lili.base.Result; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.lili.modules.lmk.domain.form.ActivityRefPrizeForm; import cn.lili.modules.lmk.domain.vo.ActivityRefPrizeVO; @@ -14,6 +15,7 @@ import cn.lili.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.stream.Collectors; @@ -30,6 +32,25 @@ private final ActivityRefPrizeMapper activityRefPrizeMapper; @Override public Result getActivityRefPrizeByActivityId(String prizeActivityId){ List<ActivityRefPrize> activityRefPrizeList = new LambdaQueryChainWrapper<>(baseMapper) .eq(ActivityRefPrize::getPrizeActivityId,prizeActivityId) .eq(ActivityRefPrize::getDeleteFlag,Boolean.FALSE) .list(); return Result.ok().data(activityRefPrizeList); } @Override public Result getPrizeByIdAndPrizeActivityId(String prizeId){ List<ActivityRefPrize> activityRefPrizeList = new LambdaQueryChainWrapper<>(baseMapper) .eq(ActivityRefPrize::getPrizeId,prizeId) .eq(ActivityRefPrize::getDeleteFlag,Boolean.FALSE) .list(); return Result.ok().data(activityRefPrizeList); } /** * 添加 * @param form framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
@@ -105,8 +105,11 @@ public Result remove(List<String> ids) { //判断活动id是否已经存在报名人员 for(String id : ids){ canDeleteActivity(id); Result result = canDeleteActivity(id); Integer code = (Integer) result.get("code"); if (code != 200){ return result; } } return Result.ok("删除成功"); framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeDrawServiceImpl.java
@@ -1,5 +1,11 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.common.utils.StringUtils; import cn.lili.modules.lmk.domain.entity.ActivityRefPrize; import cn.lili.modules.lmk.service.ActivityRefPrizeService; import cn.lili.modules.promotion.entity.vos.CouponVO; import cn.lili.modules.promotion.service.CouponService; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import cn.lili.modules.lmk.domain.entity.PrizeDraw; import cn.lili.modules.lmk.mapper.PrizeDrawMapper; @@ -14,7 +20,9 @@ import cn.lili.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -29,6 +37,41 @@ public class PrizeDrawServiceImpl extends ServiceImpl<PrizeDrawMapper, PrizeDraw> implements PrizeDrawService { private final PrizeDrawMapper prizeDrawMapper; private final ActivityRefPrizeService activityRefPrizeService; private final CouponService couponService; private final COSUtil cOSUtil; @Override public Result canUpDatePrizeDraw(String prizeDrawId) { PrizeDraw prizeDraw = baseMapper.selectById(prizeDrawId); CouponVO detail = new CouponVO(); if (StringUtils.isNotBlank(prizeDraw.getCouponId())){ detail = couponService.getDetail(prizeDraw.getCouponId()); } Result result = Result.ok(); result.data(detail); Object data = activityRefPrizeService.getPrizeByIdAndPrizeActivityId(prizeDrawId).get("data"); if (data instanceof List<?>) { List<?> rawList = (List<?>) data; List<ActivityRefPrize> list = new ArrayList<>(); for (Object item : rawList) { if (item instanceof ActivityRefPrize) { list.add((ActivityRefPrize) item); } } if (CollectionUtils.isEmpty(list)) { return result.put("state",true); }else{ return result.put("state",false); } // 使用 list } return result.put("state",false); } /** * 添加 @@ -50,7 +93,6 @@ @Override public Result update(PrizeDrawForm form) { PrizeDraw entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); @@ -89,6 +131,14 @@ public Result page(PrizeDrawQuery query) { IPage<PrizeDrawVO> page = PageUtil.getPage(query, PrizeDrawVO.class); baseMapper.getPage(page, query); for (PrizeDrawVO vo : page.getRecords()) { if (vo.getPrizeCover() != null && StringUtils.isNotBlank(vo.getPrizeCover())){ vo.setPrizeCoverUrl(cOSUtil.getPreviewUrl(vo.getPrizeCover())); } if (vo.getPrizeImg() != null && StringUtils.isNotBlank(vo.getPrizeImg())){ vo.setPrizeImgUrl(cOSUtil.getPreviewUrl(vo.getPrizeImg())); } } return Result.ok().data(page.getRecords()).total(page.getTotal()); } framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoCommentServiceImpl.java
@@ -9,6 +9,7 @@ import cn.lili.modules.lmk.constant.RedisKeyExpireConstant; import cn.lili.modules.lmk.domain.entity.ThumbsUpRecord; import cn.lili.modules.lmk.domain.form.ThumbsUpRecordForm; import cn.lili.modules.lmk.domain.query.VideoCommentMangerQuery; import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO; import cn.lili.modules.lmk.enums.general.VideoCommentStatusEnum; import cn.lili.modules.lmk.event.event.VideoCommentNumCacheEvent; @@ -63,6 +64,13 @@ private final RocketmqCustomProperties rocketmqCustomProperties; private final ApplicationEventPublisher eventPublisher; @Override public Result mangerComment(VideoCommentMangerQuery query) { IPage<VideoCommentVO> page = PageUtil.getPage(query, VideoCommentVO.class); baseMapper.getManagerPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 添加 * @param form framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -743,8 +743,12 @@ } if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) { v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); String coverFileKey = v.getCoverFileKey(); v.setCoverUrl(cosUtil.getPreviewUrl(coverFileKey)); if (StringUtils.isNotBlank(coverFileKey) && !coverFileKey.contains("http")) { v.setCoverUrl(cosUtil.getPreviewUrl(coverFileKey)); } } else if (VideoContentTypeEnum.IMG.getValue().equals(v.getVideoContentType()) && StringUtils.isNotBlank(v.getVideoImgs())) { v.setImgs(JSON.parseArray(v.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList())); } framework/src/main/resources/mapper/lmk/PrizeActivityMapper.xml
@@ -57,6 +57,12 @@ lmk_prize_activity LPA WHERE LPA.delete_flag = 0 <if test="query.activityName != null and query.activityName !=''"> AND LPA.activity_name LIKE CONCAT('%',#{query.ctivityName},'%') </if> <if test="query.beginTime != null">AND LPA.begin_time >= #{query.beginTime}</if> <if test="query.endTime != null">AND LPA.end_time <= #{query.endTime}</if> </select> </mapper> framework/src/main/resources/mapper/lmk/PrizeDrawMapper.xml
@@ -51,6 +51,12 @@ lmk_prize_draw LPD WHERE LPD.delete_flag = 0 <if test="query.prizeName != null and query.prizeName != ''"> AND LPD.prize_name like concat('%',#{query.prizeName},'%') </if> <if test="query.prizeType != null and query.prizeType != ''"> AND LPD.prize_type = #{query.prizeType} </if> </select> </mapper> framework/src/main/resources/mapper/lmk/VideoCommentMapper.xml
@@ -49,6 +49,38 @@ LVC.id = #{id} AND LVC.delete_flag = 0 </select> <select id="getManagerPage" resultMap="BaseResultMap"> SELECT LVC.video_id, LVC.comment_content, LVC.reply_id, LVC.reply_user_id, LVC.reply_user_nickname, LVC.master_comment_id, LVC.status, LVC.thumbs_up_num, LVC.id, LVC.user_id, LVC.user_nickname, LVC.user_avatar, LVC.create_time FROM lmk_video_comment LVC WHERE LVC.video_id = #{query.videoId} AND LVC.delete_flag = 0 <if test="query.commentContent != null and query.commentContent !=''"> AND LVC.comment_content like concat('%',#{query.commentContent},'%') </if> <if test="query.nickName != null and query.nickName !=''"> AND LVC.user_nickname like concat('%',#{query.nickName},'%') </if> <if test="query.startTime != null"> AND LVC.create_time >= #{query.startTime} </if> <if test="query.endTime != null"> AND LVC.create_time <= #{query.endTime} </if> </select> <select id="getPage" resultMap="BaseResultMap"> SELECT manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java
New file @@ -0,0 +1,47 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.PrizeActivityForm; import cn.lili.modules.lmk.domain.query.PrizeActivityQuery; import cn.lili.modules.lmk.service.PrizeActivityService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * lmk-shop-java * 抽奖活动 * * @author : zxl * @date : 2025-08-14 16:27 **/ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/manager/lmk/activity-prize") public class PrizeActivityController { private final PrizeActivityService prizeActivityService; @GetMapping public Result getPage(PrizeActivityQuery query){ return prizeActivityService.page(query); } @GetMapping("/{id}") public Result detail(@PathVariable("id") String id){ return prizeActivityService.detail(id); } @PutMapping public Result edit(@RequestBody PrizeActivityForm form){ return prizeActivityService.update(form); } @PostMapping public Result add(@RequestBody PrizeActivityForm form){ return prizeActivityService.add(form); } @DeleteMapping("/{id}") public Result del(@PathVariable("id") String id){ return prizeActivityService.removeById(id); } } manager-api/src/main/java/cn/lili/controller/lmk/PrizeDrawController.java
New file @@ -0,0 +1,56 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.entity.ActivityRefPrize; import cn.lili.modules.lmk.domain.form.PrizeDrawForm; import cn.lili.modules.lmk.domain.query.PrizeDrawQuery; import cn.lili.modules.lmk.service.ActivityRefPrizeService; import cn.lili.modules.lmk.service.PrizeDrawService; import lombok.RequiredArgsConstructor; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * lmk-shop-java * * @author : zxl * @date : 2025-08-18 15:49 **/ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/manager/lmk/prizeDraw") public class PrizeDrawController { private final PrizeDrawService prizeDrawService; private final ActivityRefPrizeService activityRefPrizeService; @GetMapping public Result getPage(PrizeDrawQuery query){ return prizeDrawService.page(query); } @GetMapping("/{id}") public Result detail(@PathVariable("id") String id){ return prizeDrawService.detail(id); } @PutMapping public Result edit(@RequestBody PrizeDrawForm form){ return prizeDrawService.update(form); } @PostMapping public Result add(@RequestBody PrizeDrawForm form){ return prizeDrawService.add(form); } @DeleteMapping("/{id}") public Result del(@PathVariable("id") String id){ return prizeDrawService.removeById(id); } @GetMapping("/canUpDatePrizeDraw/{id}") public Result canUpDatePrizeDraw(@PathVariable("id") String id){ return prizeDrawService.canUpDatePrizeDraw(id); } } manager-api/src/main/java/cn/lili/controller/lmk/VideoCommentController.java
New file @@ -0,0 +1,33 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.query.VideoCommentMangerQuery; import cn.lili.modules.lmk.service.VideoCommentService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * lmk-shop-java * 管理端评价管理 * * @author : zxl * @date : 2025-08-14 10:50 **/ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/manager/lmk/videoComment") public class VideoCommentController { private final VideoCommentService videoCommentService; @GetMapping() public Result getPage(VideoCommentMangerQuery query){ return videoCommentService.mangerComment(query); } @DeleteMapping("/{id}") public Result delete(@PathVariable("id")String id){ return videoCommentService.removeById(id); } }