This commit is contained in:
777
2026-01-09 14:47:11 +08:00
parent 7ed13f3e2c
commit f8dfaad63b
8 changed files with 88 additions and 47 deletions

View File

@@ -4,6 +4,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import com.ruoyi.cai.dto.admin.vo.winningRecord.PrizeWinningRecordAdminVO;
import com.ruoyi.cai.mapper.PrizeWinningRecordMapper;
import com.ruoyi.cai.service.PrizeWinningRecordService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
@@ -18,6 +20,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
@@ -35,14 +38,16 @@ import java.util.Arrays;
public class PrizeWinningRecordController extends BaseController {
private final PrizeWinningRecordService prizeWinningRecordService;
@Resource
private PrizeWinningRecordMapper prizeWinningRecordMapper;
/**
* 查询中奖记录列表
*/
@SaCheckPermission("cai:prizeWinningRecord:list")
@GetMapping("/list")
public TableDataInfo<PrizeWinningRecord> list(PrizeWinningRecord bo, PageQuery pageQuery) {
Page<PrizeWinningRecord> page = prizeWinningRecordService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
public TableDataInfo<PrizeWinningRecordAdminVO> list(PrizeWinningRecordAdminVO bo, PageQuery pageQuery) {
Page<PrizeWinningRecordAdminVO> page = prizeWinningRecordMapper.pageAdmin(pageQuery.build(), bo);
return TableDataInfo.build(page);
}
@@ -58,26 +63,20 @@ public class PrizeWinningRecordController extends BaseController {
return R.ok(prizeWinningRecordService.getById(id));
}
/**
* 新增中奖记录
*/
@SaCheckPermission("cai:prizeWinningRecord:add")
@Log(title = "中奖记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PrizeWinningRecord bo) {
return toAjax(prizeWinningRecordService.save(bo));
}
/**
* 修改中奖记录
*/
@SaCheckPermission("cai:prizeWinningRecord:edit")
@Log(title = "中奖记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PrizeWinningRecord bo) {
return toAjax(prizeWinningRecordService.updateById(bo));
@PostMapping("/give")
public R<Void> give(@Validated(EditGroup.class) @RequestBody PrizeWinningRecord bo) {
PrizeWinningRecord update = new PrizeWinningRecord();
update.setId(bo.getId());
update.setGiveStatus(1);
update.setGiveRemark(bo.getGiveRemark());
prizeWinningRecordService.updateById(update);
return R.ok();
}
/**

View File

@@ -35,7 +35,7 @@ public class PrizeWinningRecord implements Serializable {
/**
* 抽奖消耗
*/
private Long usePoint;
private Integer usePoint;
/**
* 奖品ID
*/
@@ -59,11 +59,11 @@ public class PrizeWinningRecord implements Serializable {
/**
* 保底抽数0表示无保底谢谢惠顾奖无效
*/
private Long guaranteeDraws;
private Integer guaranteeDraws;
/**
* 最低中奖抽数0表示无限制谢谢惠顾奖无效
*/
private Long minWinDraws;
private Integer minWinDraws;
/**
* 奖品库存谢谢惠顾奖填0不校验
*/

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.dto.admin.vo.winningRecord;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import lombok.Data;
@Data
public class PrizeWinningRecordAdminVO extends PrizeWinningRecord {
private String usercode;
private String nickname;
private String mobile;
}

View File

@@ -10,6 +10,7 @@ import com.ruoyi.cai.manager.IdManager;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.service.AccountService;
import com.ruoyi.cai.service.PrizeOnlineService;
import com.ruoyi.cai.service.PrizeWinningRecordService;
import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor;
@@ -244,6 +245,9 @@ public class LotteryService {
return finalCount;
}
@Autowired
private PrizeWinningRecordService prizeWinningRecordService;
/**
* 保存抽奖记录(事务控制)
*/
@@ -253,12 +257,7 @@ public class LotteryService {
String traceId = IdManager.nextIdStr();
PointChangeLog pointChangeLog = pointManager.drawPoint(prizeOnline, user, drawPoint, traceId);
// 记录用户抽奖记录
// UserDrawRecord record = new UserDrawRecord();
// record.setUserId(userId);
// record.setPrizeId(prizeId);
// record.setDrawTime(LocalDateTime.now());
// record.setContinuousDraws(continuousDraws);
// userDrawRecordMapper.insert(record);
prizeWinningRecordService.winningRecord(pointChangeLog, prizeOnline, user, drawPoint);
// 更新缓存
String cacheKey = String.format(USER_DRAW_COUNT_KEY, user.getId());
RBucket<Integer> bucket = redissonClient.getBucket(cacheKey);

View File

@@ -1,7 +1,11 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import com.ruoyi.cai.dto.admin.vo.winningRecord.PrizeWinningRecordAdminVO;
import org.apache.ibatis.annotations.Param;
/**
* 中奖记录Mapper接口
@@ -11,4 +15,5 @@ import com.ruoyi.cai.domain.PrizeWinningRecord;
*/
public interface PrizeWinningRecordMapper extends BaseMapper<PrizeWinningRecord> {
Page<PrizeWinningRecordAdminVO> pageAdmin(Page<Object> build, @Param("query") PrizeWinningRecordAdminVO query);
}

View File

@@ -1,7 +1,10 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.PointChangeLog;
import com.ruoyi.cai.domain.PrizeOnline;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import com.ruoyi.cai.domain.User;
/**
* 中奖记录Service接口
@@ -11,4 +14,5 @@ import com.ruoyi.cai.domain.PrizeWinningRecord;
*/
public interface PrizeWinningRecordService extends IService<PrizeWinningRecord> {
void winningRecord(PointChangeLog pointChangeLog, PrizeOnline prizeOnline, User user, Integer drawPoint);
}

View File

@@ -1,7 +1,10 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.PointChangeLog;
import com.ruoyi.cai.domain.PrizeOnline;
import com.ruoyi.cai.domain.PrizeWinningRecord;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.mapper.PrizeWinningRecordMapper;
import com.ruoyi.cai.service.PrizeWinningRecordService;
import org.springframework.stereotype.Service;
@@ -15,4 +18,23 @@ import org.springframework.stereotype.Service;
@Service
public class PrizeWinningRecordServiceImpl extends ServiceImpl<PrizeWinningRecordMapper,PrizeWinningRecord> implements PrizeWinningRecordService {
@Override
public void winningRecord(PointChangeLog pointChangeLog, PrizeOnline prizeOnline, User user, Integer drawPoint) {
PrizeWinningRecord prizeWinningRecord = new PrizeWinningRecord();
prizeWinningRecord.setUserId(user.getId());
prizeWinningRecord.setUsePoint(drawPoint);
prizeWinningRecord.setPrizeId(prizeOnline.getPrizeId());
prizeWinningRecord.setPrizeName(prizeOnline.getPrizeName());
prizeWinningRecord.setPrizeDesc(prizeOnline.getPrizeDesc());
prizeWinningRecord.setPrizeImg(prizeOnline.getPrizeImg());
prizeWinningRecord.setWinProbability(prizeOnline.getWinProbability());
prizeWinningRecord.setGuaranteeDraws(prizeOnline.getGuaranteeDraws());
prizeWinningRecord.setMinWinDraws(prizeOnline.getMinWinDraws());
prizeWinningRecord.setStock(prizeOnline.getStock());
prizeWinningRecord.setPrizeType(prizeOnline.getPrizeType());
prizeWinningRecord.setPrizePrice(prizeOnline.getPrizePrice());
prizeWinningRecord.setAutoGive(prizeOnline.getAutoGive());
prizeWinningRecord.setGiveStatus(0);
this.save(prizeWinningRecord);
}
}

View File

@@ -4,26 +4,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.PrizeWinningRecordMapper">
<resultMap type="com.ruoyi.cai.domain.PrizeWinningRecord" id="PrizeWinningRecordResult">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="usePoint" column="use_point"/>
<result property="prizeId" column="prize_id"/>
<result property="prizeName" column="prize_name"/>
<result property="prizeDesc" column="prize_desc"/>
<result property="prizeImg" column="prize_img"/>
<result property="winProbability" column="win_probability"/>
<result property="guaranteeDraws" column="guarantee_draws"/>
<result property="minWinDraws" column="min_win_draws"/>
<result property="stock" column="stock"/>
<result property="prizeType" column="prize_type"/>
<result property="prizePrice" column="prize_price"/>
<result property="autoGive" column="auto_give"/>
<result property="giveStatus" column="give_status"/>
<result property="giveRemark" column="give_remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.winningRecord.PrizeWinningRecordAdminVO">
select t2.usercode, t2.mobile, t2.nickname, t1.*
from cai_prize_winning_record t1
left join cai_user t2 on t1.user_id = t2.id
<where>
<if test="query.usercode != null and query.usercode != ''">
and t2.usercode = #{query.usercode}
</if>
<if test="query.mobile != null and query.mobile != ''">
and t2.mobile = #{query.mobile}
</if>
<if test="query.prizeName != null and query.prizeName != ''">
and t1.prize_name like concat('%',#{query.prizeName},'%')
</if>
<if test="query.autoGive != null">
and t1.auto_give = #{query.autoGive}
</if>
<if test="query.giveStatus != null">
and t1.give_status = #{query.giveStatus}
</if>
</where>
order by t1.create_time desc
</select>
</mapper>