zxl
2 天以前 b13706ac876d0ab5d4d6e38a59b66cc323e86e3a
奖品,抽奖活动,重置密码
14个文件已修改
2个文件已添加
237 ■■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/lmk/domain/entity/ActivityRefPrize.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityRefPrizeForm.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityRefPrizeInfoVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityRefPrizeVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/enums/general/PrizeActivityStatusEnum.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityRefPrizeMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/ActivityRefPrizeService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityRefPrizeServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeDrawServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/ActivityRefPrizeMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/ActivityRefPrize.java
@@ -21,11 +21,11 @@
    @TableField("prize_activity_id")
    /** 抽奖活动id */
    private Long prizeActivityId;
    private String prizeActivityId;
    @TableField("prize_id")
    /** 奖品id */
    private Long prizeId;
    private String prizeId;
    @TableField("prize_content")
    /** 奖品内容 */
framework/src/main/java/cn/lili/modules/lmk/domain/form/ActivityRefPrizeForm.java
@@ -27,11 +27,15 @@
    @NotNull(message = "抽奖活动id不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("抽奖活动id")
    private Long prizeActivityId;
    private String prizeActivityId;
    @NotNull(message = "奖品id不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("奖品id")
    private Long prizeId;
    private String prizeId;
    @NotNull(message = "每日最大中奖数不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("每日最大中奖数")
    private Integer maxPreDay;
    @NotBlank(message = "奖品内容不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("奖品内容")
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityRefPrizeInfoVO.java
New file
@@ -0,0 +1,21 @@
package cn.lili.modules.lmk.domain.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * lmk-shop-java
 * 补充奖品相关信息
 *
 * @author : zxl
 * @date : 2025-08-21 09:44
 **/
@Data
@ApiModel(value = "补充奖品相关信息", description = "补充奖品相关信息")
public class ActivityRefPrizeInfoVO extends ActivityRefPrizeVO{
    private String prizeCover;
    private String prizeCoverUrl;
    private String prizeName;
    private String prizeType;
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityRefPrizeVO.java
@@ -24,11 +24,11 @@
    /** 抽奖活动id */
    @ApiModelProperty("抽奖活动id")
    private Long prizeActivityId;
    private String prizeActivityId;
    /** 奖品id */
    @ApiModelProperty("奖品id")
    private Long prizeId;
    private String prizeId;
    /** 奖品内容 */
    @ApiModelProperty("奖品内容")
framework/src/main/java/cn/lili/modules/lmk/domain/vo/PrizeActivityVO.java
@@ -56,6 +56,11 @@
    @ApiModelProperty("是否开启活动")
    private String enableStatus;
    private String activityCoverUrl;
    private String activityImgUrl;
    public static PrizeActivityVO getVoByEntity(@NonNull PrizeActivity entity, PrizeActivityVO vo) {
        if(vo == null) {
            vo = new PrizeActivityVO();
framework/src/main/java/cn/lili/modules/lmk/enums/general/PrizeActivityStatusEnum.java
New file
@@ -0,0 +1,23 @@
package cn.lili.modules.lmk.enums.general;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
 * lmk-shop-java
 * 抽奖活动状态
 *
 * @author : zxl
 * @date : 2025-08-21 11:43
 **/
@AllArgsConstructor
@Getter
public enum PrizeActivityStatusEnum {
    /**
     * 抽奖活动状态
     */
    OFF("off"),
    ON("on");
    private final String description;
}
framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityRefPrizeMapper.java
@@ -1,6 +1,7 @@
package cn.lili.modules.lmk.mapper;
import cn.lili.modules.lmk.domain.entity.ActivityRefPrize;
import cn.lili.modules.lmk.domain.vo.ActivityRefPrizeInfoVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.lili.modules.lmk.domain.vo.ActivityRefPrizeVO;
@@ -31,4 +32,6 @@
    */
    IPage getPage(IPage page, @Param("query") ActivityRefPrizeQuery query);
    List<ActivityRefPrizeInfoVO> getActivityRefPrizeByActivityId(String prizeActivityId);
}
framework/src/main/java/cn/lili/modules/lmk/service/ActivityRefPrizeService.java
@@ -30,6 +30,14 @@
    Result getPrizeByIdAndPrizeActivityId(String prizeId);
    /**
     * 新增奖品
     * @param prizeActivityId
     * @param list
     * @return
     */
    Result addList(String prizeActivityId,List<ActivityRefPrizeForm> list);
    /**
     * 添加
     * @param form
     * @return
framework/src/main/java/cn/lili/modules/lmk/service/PrizeActivityService.java
@@ -15,6 +15,7 @@
 */
public interface PrizeActivityService extends IService<PrizeActivity> {
    Result publishPrizeActivity(String id);
    /**
     * 添加
     * @param form
framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityRefPrizeServiceImpl.java
@@ -1,5 +1,9 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.lmk.domain.vo.ActivityRefPrizeInfoVO;
import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.domain.entity.ActivityRefPrize;
import cn.lili.modules.lmk.mapper.ActivityRefPrizeMapper;
@@ -14,9 +18,10 @@
import lombok.RequiredArgsConstructor;
import cn.lili.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -28,17 +33,21 @@
 */
@Service
@RequiredArgsConstructor
@Transactional
public class ActivityRefPrizeServiceImpl extends ServiceImpl<ActivityRefPrizeMapper, ActivityRefPrize> implements ActivityRefPrizeService {
    private final ActivityRefPrizeMapper activityRefPrizeMapper;
    private final COSUtil cosUtil;
    @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);
        //以及奖品对应信息
        List<ActivityRefPrizeInfoVO> activityRefPrizeByActivityIds = activityRefPrizeMapper.getActivityRefPrizeByActivityId(prizeActivityId);
        for (ActivityRefPrizeInfoVO activityRefPrizeInfoVO : activityRefPrizeByActivityIds){
            if (StringUtils.isNotBlank(activityRefPrizeInfoVO.getPrizeCover())){
                activityRefPrizeInfoVO.setPrizeCoverUrl(cosUtil.getPreviewUrl(activityRefPrizeInfoVO.getPrizeCover()));
            }
        }
        return Result.ok().data(activityRefPrizeByActivityIds);
    }
    @Override
@@ -50,6 +59,27 @@
        return Result.ok().data(activityRefPrizeList);
    }
    @Override
    public Result addList(String prizeActivityId,List<ActivityRefPrizeForm> list){
        //先删除再重新添加
        baseMapper.delete(new LambdaQueryWrapper<ActivityRefPrize>().eq(ActivityRefPrize::getPrizeActivityId,prizeActivityId));
        List<ActivityRefPrize> activityRefPrizeList = new ArrayList<>();
        if (!list.isEmpty()){
            for (ActivityRefPrizeForm activityRefPrizeForm : list){
                ActivityRefPrize activityRefPrize = ActivityRefPrizeForm.getEntityByForm(activityRefPrizeForm,null);
                //初始化锁的版本
                activityRefPrize.setPrizeActivityId(prizeActivityId);
                activityRefPrize.setRemainNum(activityRefPrizeForm.getPrizeNum());
                activityRefPrize.setVersion(0);
                activityRefPrizeList.add(activityRefPrize);
            }
            this.saveBatch(activityRefPrizeList);
        }
        return Result.ok();
    }
    /**
     * 添加
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeActivityServiceImpl.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.domain.vo.ActivityRefPrizeInfoVO;
import cn.lili.modules.lmk.enums.general.PrizeActivityStatusEnum;
import cn.lili.modules.lmk.service.ActivityRefPrizeService;
import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.domain.entity.PrizeActivity;
import cn.lili.modules.lmk.mapper.PrizeActivityMapper;
@@ -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;
@@ -28,7 +36,45 @@
@RequiredArgsConstructor
public class PrizeActivityServiceImpl extends ServiceImpl<PrizeActivityMapper, PrizeActivity> implements PrizeActivityService {
    private final ActivityRefPrizeService activityRefPrizeService;
    private final PrizeActivityMapper prizeActivityMapper;
    private final COSUtil cOSUtil;
    @Override
    public Result publishPrizeActivity(String id) {
        PrizeActivity prizeActivity = baseMapper.selectById(id);
        //判断活动是否存在奖品 存在允许开启
        Object data = activityRefPrizeService.getActivityRefPrizeByActivityId(id).get("data");
        if (data instanceof List<?>) {
            List<?> rawList = (List<?>) data;
            List<ActivityRefPrizeInfoVO> list = new ArrayList<>();
            for (Object item : rawList) {
                if (item instanceof ActivityRefPrizeInfoVO) {
                    list.add((ActivityRefPrizeInfoVO) item);
                }
            }
            if (CollectionUtils.isEmpty(list)) {
                return Result.error("开启抽奖活动前请设置奖品");
            }
            // 使用 list
        }
        if (PrizeActivityStatusEnum.OFF.getDescription().equals(prizeActivity.getEnableStatus())) {
            prizeActivity.setEnableStatus(PrizeActivityStatusEnum.ON.getDescription());
            baseMapper.updateById(prizeActivity);
            return Result.ok("启动成功");
        }else {
            prizeActivity.setEnableStatus(PrizeActivityStatusEnum.OFF.getDescription());
            baseMapper.updateById(prizeActivity);
            return Result.ok("关闭成功");
        }
    }
    /**
     * 添加
@@ -89,6 +135,15 @@
    public Result page(PrizeActivityQuery query) {
        IPage<PrizeActivityVO> page = PageUtil.getPage(query, PrizeActivityVO.class);
        baseMapper.getPage(page, query);
        for (PrizeActivityVO vo : page.getRecords()) {
            if (StringUtils.isNotBlank(vo.getActivityCover())){
                vo.setActivityCoverUrl(cOSUtil.getPreviewUrl(vo.getActivityCover()));
            }
            if (StringUtils.isNotBlank(vo.getActivityImg())){
                vo.setActivityImgUrl(cOSUtil.getPreviewUrl(vo.getActivityImg()));
            }
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeDrawServiceImpl.java
@@ -132,10 +132,10 @@
        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())){
            if (StringUtils.isNotBlank(vo.getPrizeCover())){
                vo.setPrizeCoverUrl(cOSUtil.getPreviewUrl(vo.getPrizeCover()));
            }
            if (vo.getPrizeImg() != null && StringUtils.isNotBlank(vo.getPrizeImg())){
            if (StringUtils.isNotBlank(vo.getPrizeImg())){
                vo.setPrizeImgUrl(cOSUtil.getPreviewUrl(vo.getPrizeImg()));
            }
        }
framework/src/main/java/cn/lili/modules/lmk/service/impl/StoreMemberServiceImpl.java
@@ -59,7 +59,7 @@
    public Result add(StoreMemberForm form) {
       String storeId =UserContext.getCurrentUser().getStoreId();
        System.out.println(storeId);
//        storeId = "1376433565247471616"; //测试用
        //
        if ( storeId == null){
            return null;
        }
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -549,7 +549,7 @@
    public Result resetPassword(String id) {
        String password = "111111";
        Member member = this.getById(id);
        member.setPassword(new BCryptPasswordEncoder().encode(password));
        member.setPassword(new BCryptPasswordEncoder().encode(SecureUtil.md5(password)));
        this.updateById(member);
        return Result.ok("重置成功");
    }
framework/src/main/resources/mapper/lmk/ActivityRefPrizeMapper.xml
@@ -14,7 +14,39 @@
        <result column="remain_num" property="remainNum" />
    </resultMap>
    <resultMap id="activityRefPrizeInfoMap" type="cn.lili.modules.lmk.domain.vo.ActivityRefPrizeInfoVO">
        <id column="id" property="id"/>
        <result column="prize_activity_id" property="prizeActivityId" />
        <result column="prize_id" property="prizeId" />
        <result column="prize_content" property="prizeContent" />
        <result column="prize_num" property="prizeNum" />
        <result column="prize_probability" property="prizeProbability" />
        <result column="version" property="version" />
        <result column="remain_num" property="remainNum" />
        <result column="prize_name" property="prizeName" />
        <result column="prize_cover" property="prizeCover"/>
        <result column="prize_type" property="prizeType"/>
    </resultMap>
    <select id="getActivityRefPrizeByActivityId" resultMap="activityRefPrizeInfoMap">
        SELECT
            LARP.prize_activity_id,
            LARP.prize_id,
            LARP.prize_content,
            LARP.prize_num,
            LARP.prize_probability,
            LARP.version,
            LARP.remain_num,
            LARP.id,
            LPD.prize_name,
            LPD.prize_cover,
            LPD.prize_type
        FROM
            lmk_activity_ref_prize LARP
                LEFT JOIN
            lmk_prize_draw LPD ON LARP.prize_id = LPD.id
        where LARP.prize_activity_id = #{prizeActivityId} AND LARP.delete_flag = 0
    </select>
manager-api/src/main/java/cn/lili/controller/lmk/PrizeActivityController.java
@@ -2,12 +2,18 @@
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.form.ActivityRefPrizeForm;
import cn.lili.modules.lmk.domain.form.PrizeActivityForm;
import cn.lili.modules.lmk.domain.query.PrizeActivityQuery;
import cn.lili.modules.lmk.service.ActivityRefPrizeService;
import cn.lili.modules.lmk.service.PrizeActivityService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Size;
import java.util.List;
/**
 * lmk-shop-java
@@ -24,6 +30,7 @@
    private final PrizeActivityService prizeActivityService;
    private final ActivityRefPrizeService activityRefPrizeService;
    @GetMapping
    public Result getPage(PrizeActivityQuery query){
        return prizeActivityService.page(query);
@@ -44,4 +51,18 @@
    public Result del(@PathVariable("id") String id){
        return prizeActivityService.removeById(id);
    }
    @PostMapping("/addActivityRefPrizeList/{id}")
    public Result addListByPrizeDraw(@PathVariable("id") String prizeActivityId,@RequestBody @Valid @Size(max = 5, message = "奖品数量必须在1到5个之间")  List<ActivityRefPrizeForm> list){
        return activityRefPrizeService.addList(prizeActivityId,list);
    }
    @GetMapping("/getActivityRefPrizeByActivityId/{id}")
    public Result getActivityRefPrizeByActivityId(@PathVariable("id") String prizeActivityId){
        return activityRefPrizeService.getActivityRefPrizeByActivityId(prizeActivityId);
    }
    @PutMapping("/publishPrizeActivity/{id}")
    public Result publishPrizeActivity(@PathVariable("id") String id){
        return prizeActivityService.publishPrizeActivity(id);
    }
}