Compare commits

..

2 Commits

Author SHA1 Message Date
777
f8dfaad63b 123 2026-01-09 14:47:11 +08:00
777
7ed13f3e2c 123 2026-01-09 01:18:16 +08:00
9 changed files with 96 additions and 55 deletions

View File

@@ -48,6 +48,14 @@ public class DrawController {
return R.ok(resp); return R.ok(resp);
} }
@GetMapping("/prize/up")
@Operation(summary = "获取奖品列表")
public R<List<PrizeOnlineResp>> prizeUp(){
List<PrizeOnline> prizeOnlines = prizeOnlineService.prizeUp();
List<PrizeOnlineResp> resp = BeanConvertUtil.convertListTo(prizeOnlines, PrizeOnlineResp::new);
return R.ok(resp);
}
@GetMapping("/winning/record") @GetMapping("/winning/record")
@Operation(summary = "获取自己的中奖记录") @Operation(summary = "获取自己的中奖记录")
public R<List<UserWinningRecordResp>> winningRecord(PageQuery page){ public R<List<UserWinningRecordResp>> winningRecord(PageQuery page){
@@ -59,14 +67,6 @@ public class DrawController {
return R.ok(resps); return R.ok(resps);
} }
@GetMapping("/prize/up")
@Operation(summary = "获取奖品列表")
public R<List<PrizeOnlineResp>> prizeUp(){
List<PrizeOnline> prizeOnlines = prizeOnlineService.prizeUp();
List<PrizeOnlineResp> resp = BeanConvertUtil.convertListTo(prizeOnlines, PrizeOnlineResp::new);
return R.ok(resp);
}
@GetMapping("/winning/center") @GetMapping("/winning/center")
@Operation(summary = "全局中奖记录") @Operation(summary = "全局中奖记录")
public R<List<CenterWinningRecordResp>> winningCenter(){ public R<List<CenterWinningRecordResp>> winningCenter(){

View File

@@ -4,6 +4,8 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.PrizeWinningRecord; 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.cai.service.PrizeWinningRecordService;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.RepeatSubmit;
@@ -18,6 +20,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Arrays; import java.util.Arrays;
@@ -35,14 +38,16 @@ import java.util.Arrays;
public class PrizeWinningRecordController extends BaseController { public class PrizeWinningRecordController extends BaseController {
private final PrizeWinningRecordService prizeWinningRecordService; private final PrizeWinningRecordService prizeWinningRecordService;
@Resource
private PrizeWinningRecordMapper prizeWinningRecordMapper;
/** /**
* 查询中奖记录列表 * 查询中奖记录列表
*/ */
@SaCheckPermission("cai:prizeWinningRecord:list") @SaCheckPermission("cai:prizeWinningRecord:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<PrizeWinningRecord> list(PrizeWinningRecord bo, PageQuery pageQuery) { public TableDataInfo<PrizeWinningRecordAdminVO> list(PrizeWinningRecordAdminVO bo, PageQuery pageQuery) {
Page<PrizeWinningRecord> page = prizeWinningRecordService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); Page<PrizeWinningRecordAdminVO> page = prizeWinningRecordMapper.pageAdmin(pageQuery.build(), bo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@@ -58,26 +63,20 @@ public class PrizeWinningRecordController extends BaseController {
return R.ok(prizeWinningRecordService.getById(id)); 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") @SaCheckPermission("cai:prizeWinningRecord:edit")
@Log(title = "中奖记录", businessType = BusinessType.UPDATE) @Log(title = "中奖记录", businessType = BusinessType.UPDATE)
@RepeatSubmit() @RepeatSubmit()
@PutMapping() @PostMapping("/give")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PrizeWinningRecord bo) { public R<Void> give(@Validated(EditGroup.class) @RequestBody PrizeWinningRecord bo) {
return toAjax(prizeWinningRecordService.updateById(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 * 奖品ID
*/ */
@@ -59,11 +59,11 @@ public class PrizeWinningRecord implements Serializable {
/** /**
* 保底抽数0表示无保底谢谢惠顾奖无效 * 保底抽数0表示无保底谢谢惠顾奖无效
*/ */
private Long guaranteeDraws; private Integer guaranteeDraws;
/** /**
* 最低中奖抽数0表示无限制谢谢惠顾奖无效 * 最低中奖抽数0表示无限制谢谢惠顾奖无效
*/ */
private Long minWinDraws; private Integer minWinDraws;
/** /**
* 奖品库存谢谢惠顾奖填0不校验 * 奖品库存谢谢惠顾奖填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.manager.SystemConfigManager;
import com.ruoyi.cai.service.AccountService; import com.ruoyi.cai.service.AccountService;
import com.ruoyi.cai.service.PrizeOnlineService; import com.ruoyi.cai.service.PrizeOnlineService;
import com.ruoyi.cai.service.PrizeWinningRecordService;
import com.ruoyi.cai.service.UserService; import com.ruoyi.cai.service.UserService;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -244,6 +245,9 @@ public class LotteryService {
return finalCount; return finalCount;
} }
@Autowired
private PrizeWinningRecordService prizeWinningRecordService;
/** /**
* 保存抽奖记录(事务控制) * 保存抽奖记录(事务控制)
*/ */
@@ -253,12 +257,7 @@ public class LotteryService {
String traceId = IdManager.nextIdStr(); String traceId = IdManager.nextIdStr();
PointChangeLog pointChangeLog = pointManager.drawPoint(prizeOnline, user, drawPoint, traceId); PointChangeLog pointChangeLog = pointManager.drawPoint(prizeOnline, user, drawPoint, traceId);
// 记录用户抽奖记录 // 记录用户抽奖记录
// UserDrawRecord record = new UserDrawRecord(); prizeWinningRecordService.winningRecord(pointChangeLog, prizeOnline, user, drawPoint);
// record.setUserId(userId);
// record.setPrizeId(prizeId);
// record.setDrawTime(LocalDateTime.now());
// record.setContinuousDraws(continuousDraws);
// userDrawRecordMapper.insert(record);
// 更新缓存 // 更新缓存
String cacheKey = String.format(USER_DRAW_COUNT_KEY, user.getId()); String cacheKey = String.format(USER_DRAW_COUNT_KEY, user.getId());
RBucket<Integer> bucket = redissonClient.getBucket(cacheKey); RBucket<Integer> bucket = redissonClient.getBucket(cacheKey);

View File

@@ -1,7 +1,11 @@
package com.ruoyi.cai.mapper; package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.domain.PrizeWinningRecord;
import com.ruoyi.cai.dto.admin.vo.winningRecord.PrizeWinningRecordAdminVO;
import org.apache.ibatis.annotations.Param;
/** /**
* 中奖记录Mapper接口 * 中奖记录Mapper接口
@@ -11,4 +15,5 @@ import com.ruoyi.cai.domain.PrizeWinningRecord;
*/ */
public interface PrizeWinningRecordMapper extends BaseMapper<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; package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService; 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.PrizeWinningRecord;
import com.ruoyi.cai.domain.User;
/** /**
* 中奖记录Service接口 * 中奖记录Service接口
@@ -11,4 +14,5 @@ import com.ruoyi.cai.domain.PrizeWinningRecord;
*/ */
public interface PrizeWinningRecordService extends IService<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; package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.PrizeWinningRecord;
import com.ruoyi.cai.domain.User;
import com.ruoyi.cai.mapper.PrizeWinningRecordMapper; import com.ruoyi.cai.mapper.PrizeWinningRecordMapper;
import com.ruoyi.cai.service.PrizeWinningRecordService; import com.ruoyi.cai.service.PrizeWinningRecordService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -15,4 +18,23 @@ import org.springframework.stereotype.Service;
@Service @Service
public class PrizeWinningRecordServiceImpl extends ServiceImpl<PrizeWinningRecordMapper,PrizeWinningRecord> implements PrizeWinningRecordService { 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"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.PrizeWinningRecordMapper"> <mapper namespace="com.ruoyi.cai.mapper.PrizeWinningRecordMapper">
<resultMap type="com.ruoyi.cai.domain.PrizeWinningRecord" id="PrizeWinningRecordResult"> <select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.winningRecord.PrizeWinningRecordAdminVO">
<result property="id" column="id"/> select t2.usercode, t2.mobile, t2.nickname, t1.*
<result property="userId" column="user_id"/> from cai_prize_winning_record t1
<result property="usePoint" column="use_point"/> left join cai_user t2 on t1.user_id = t2.id
<result property="prizeId" column="prize_id"/> <where>
<result property="prizeName" column="prize_name"/> <if test="query.usercode != null and query.usercode != ''">
<result property="prizeDesc" column="prize_desc"/> and t2.usercode = #{query.usercode}
<result property="prizeImg" column="prize_img"/> </if>
<result property="winProbability" column="win_probability"/> <if test="query.mobile != null and query.mobile != ''">
<result property="guaranteeDraws" column="guarantee_draws"/> and t2.mobile = #{query.mobile}
<result property="minWinDraws" column="min_win_draws"/> </if>
<result property="stock" column="stock"/> <if test="query.prizeName != null and query.prizeName != ''">
<result property="prizeType" column="prize_type"/> and t1.prize_name like concat('%',#{query.prizeName},'%')
<result property="prizePrice" column="prize_price"/> </if>
<result property="autoGive" column="auto_give"/> <if test="query.autoGive != null">
<result property="giveStatus" column="give_status"/> and t1.auto_give = #{query.autoGive}
<result property="giveRemark" column="give_remark"/> </if>
<result property="createTime" column="create_time"/> <if test="query.giveStatus != null">
<result property="updateTime" column="update_time"/> and t1.give_status = #{query.giveStatus}
</resultMap> </if>
</where>
order by t1.create_time desc
</select>
</mapper> </mapper>