From 46950524044428ed3a53b9776aa01cb1a08a51ca Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 19 May 2022 18:43:46 +0800
Subject: [PATCH] Merge branch 'mall-amz' of http://120.27.238.55:7000/r/xc-mall into mall-amz
---
src/main/java/cc/mrbird/febs/mall/dto/ApiMallActListDto.java | 20
src/main/java/cc/mrbird/febs/mall/mapper/MallActAwardSetMapper.java | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallActSetMapper.java | 3
src/main/java/cc/mrbird/febs/mall/vo/ApiMallActDetailsVo.java | 40 +
src/main/java/cc/mrbird/febs/mall/vo/ApiMallActListVo.java | 34 +
src/main/resources/templates/febs/views/modules/act/actAddNew.html | 32 +
src/main/resources/mapper/modules/MallActWinRecordMapper.xml | 22
src/main/resources/templates/febs/views/modules/act/actUpdateNew.html | 38 +
src/main/java/cc/mrbird/febs/mall/mapper/MallActWinRecordMapper.java | 8
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java | 528 +++++++++++++++++++++
src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java | 48 +
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 5
src/main/java/cc/mrbird/febs/mall/dto/ApiMallActWinDetailsDto.java | 22
src/main/java/cc/mrbird/febs/mall/dto/MallActUpdateDto.java | 2
src/main/resources/mapper/modules/MallActSetMapper.xml | 16
src/main/resources/mapper/modules/MallActLuckdrawRecordMapper.xml | 8
src/test/java/cc/mrbird/febs/AgentTest.java | 465 +++++++++++++++++++
src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java | 16
src/main/java/cc/mrbird/febs/mall/vo/AdminMallActSetVo.java | 4
src/main/java/cc/mrbird/febs/mall/dto/AddMallActDto.java | 2
src/main/java/cc/mrbird/febs/mall/entity/MallActLuckdrawRecord.java | 8
src/main/java/cc/mrbird/febs/mall/vo/ApiMallActAwardListDto.java | 26 +
src/main/java/cc/mrbird/febs/mall/entity/MallActSet.java | 2
src/main/resources/templates/febs/views/modules/act/actList.html | 19
src/main/resources/mapper/modules/MallActAwardSetMapper.xml | 4
src/main/java/cc/mrbird/febs/mall/mapper/MallActLuckdrawRecordMapper.java | 3
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java | 10
src/main/java/cc/mrbird/febs/mall/vo/ApiMallActWinDetailsVo.java | 20
src/main/java/cc/mrbird/febs/mall/vo/ApiMallAwardDetailsVo.java | 20
29 files changed, 1,414 insertions(+), 13 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 38f6804..9914870 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -12,6 +12,11 @@
INDRECT_BONUS("BONUS_TYPE", "INDRECT_BONUS"),
AGENT_BONUS("BONUS_TYPE", "AGENT_BONUS"),
THANKFUL_BONUS("BONUS_TYPE", "THANKFUL_BONUS"),
+
+ //积分中奖概率
+ WIN_SCORE("WIN_PROBABILITY", "WIN_SCORE"),
+ //佣金中奖概率
+ WIN_CASH("WIN_PROBABILITY", "WIN_CASH"),
RANK_BONUS("BONUS_TYPE", "RANK_BONUS");
private String type;
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
index 84c0402..6c8d0fe 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
@@ -1,11 +1,18 @@
package cc.mrbird.febs.mall.controller;
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.mall.dto.ApiMallActListDto;
+import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
+import cc.mrbird.febs.mall.dto.MallGoodsQueryDto;
import cc.mrbird.febs.mall.service.IApiMallActService;
+import cc.mrbird.febs.mall.vo.*;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@@ -16,4 +23,41 @@
private final IApiMallActService iApiMallActService;
+ @ApiOperation(value = "获取活动列表", notes = "获取活动列表")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiMallActListVo.class)
+ })
+ @PostMapping(value = "/findMallGoodsList")
+ public FebsResponse findMallGoodsList(@RequestBody ApiMallActListDto apiMallActListDto) {
+ return new FebsResponse().success().data(iApiMallActService.findApiMallActListInPage(apiMallActListDto));
+ }
+
+ @ApiOperation(value = "获取活动详情", notes = "获取活动详情")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiMallActDetailsVo.class)
+ })
+ @GetMapping(value = "/findApiMallActDetailsById/{id}")
+ public FebsResponse findApiMallActDetailsById(@PathVariable("id") Long id) {
+ return new FebsResponse().success().data(iApiMallActService.findApiMallActDetailsById(id));
+ }
+
+ @ApiOperation(value = "我的抽奖记录", notes = "我的抽奖记录")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiMallActWinDetailsVo.class)
+ })
+ @PostMapping(value = "/findApiMallActWinDetailsById")
+ public FebsResponse findApiMallActWinDetailsById(@RequestBody ApiMallActWinDetailsDto apiMallActWinDetailsDto) {
+ return new FebsResponse().success().data(iApiMallActService.findApiMallActWinDetailsInPage(apiMallActWinDetailsDto));
+ }
+
+ @ApiOperation(value = "抽奖", notes = "抽奖")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiMallAwardDetailsVo.class)
+ })
+ @GetMapping(value = "/luckDraw/{actId}")
+ public FebsResponse luckDraw(@PathVariable("actId") long actId) {
+ return new FebsResponse().success().data(iApiMallActService.luckDraw(actId));
+ }
+
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AddMallActDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AddMallActDto.java
index 80e25a6..f8efbe2 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AddMallActDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AddMallActDto.java
@@ -15,6 +15,8 @@
private String actCode;
//活动名称
private String actName;
+ //活动图片
+ private String actImage;
//开始时间
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date actStartTime;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActListDto.java
new file mode 100644
index 0000000..3c4a1bd
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActListDto.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallActListDto", description = "参数接收类")
+public class ApiMallActListDto {
+
+ @ApiModelProperty(value = "页码", example = "1")
+ private Integer pageNow;
+
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private Integer pageSize;
+
+ @ApiModelProperty(value = "查询", example = "123")
+ private String query;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActWinDetailsDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActWinDetailsDto.java
new file mode 100644
index 0000000..2df3883
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallActWinDetailsDto.java
@@ -0,0 +1,22 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallActWinDetailsDto", description = "参数接收类")
+public class ApiMallActWinDetailsDto {
+
+ @ApiModelProperty(value = "页码", example = "1")
+ private Integer pageNow;
+
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private Integer pageSize;
+
+ @ApiModelProperty(value = "活动ID", example = "1")
+ private Long actId;
+
+ @ApiModelProperty(hidden = true)
+ private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallActUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallActUpdateDto.java
index 6f7738c..3367777 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallActUpdateDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallActUpdateDto.java
@@ -15,6 +15,8 @@
private String actCode;
//活动名称
private String actName;
+ //活动图片
+ private String actImage;
//开始时间
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date actStartTime;
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallActLuckdrawRecord.java b/src/main/java/cc/mrbird/febs/mall/entity/MallActLuckdrawRecord.java
index c79de77..3888455 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallActLuckdrawRecord.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallActLuckdrawRecord.java
@@ -12,6 +12,14 @@
@TableName("mall_act_luckdraw_record")
public class MallActLuckdrawRecord extends BaseEntity {
+ /**
+ * 中奖
+ */
+ public static final Integer STATUS_ENABLE = 1;
+ /**
+ * 没有中奖
+ */
+ public static final Integer STATUS_DISABLED = 0;
//参与人ID
private Long memberId;
//活动ID
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallActSet.java b/src/main/java/cc/mrbird/febs/mall/entity/MallActSet.java
index a15ba82..daa772c 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallActSet.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallActSet.java
@@ -28,6 +28,8 @@
private String actCode;
//活动名称
private String actName;
+ //活动图片
+ private String actImage;
//开始时间
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date actStartTime;
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallActAwardSetMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallActAwardSetMapper.java
index 90f8696..c055f44 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallActAwardSetMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallActAwardSetMapper.java
@@ -11,4 +11,6 @@
void deleteByActId(Long id);
List<MallActAwardSet> selectMallActAwardByActId(@Param("id") long id);
+
+ List<MallActAwardSet> selectMallActAwardByActIdAndAwardType(@Param("actId")long actId, @Param("awardType")Integer awardType);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallActLuckdrawRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallActLuckdrawRecordMapper.java
index 1097a39..71edc70 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallActLuckdrawRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallActLuckdrawRecordMapper.java
@@ -7,9 +7,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
public interface MallActLuckdrawRecordMapper extends BaseMapper<MallActLuckdrawRecord> {
IPage<AdminMallActLuckdrawRecordVo> selectMallActLuckdrawsInPage(Page<AdminMallActLuckdrawRecordVo> page,
@Param("record")MallActLuckdrawRecord mallActLuckdrawRecord);
+ List<MallActLuckdrawRecord> selectRecordByMemberIdAndActId(@Param("memberId")Long memberId, @Param("actId")long actId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallActSetMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallActSetMapper.java
index 39c372c..1835aaa 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallActSetMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallActSetMapper.java
@@ -1,7 +1,9 @@
package cc.mrbird.febs.mall.mapper;
+import cc.mrbird.febs.mall.dto.ApiMallActListDto;
import cc.mrbird.febs.mall.entity.MallActSet;
import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
+import cc.mrbird.febs.mall.vo.ApiMallActListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,4 +13,5 @@
IPage<AdminMallActSetVo> selectMallActsInPage(Page<AdminMallActSetVo> page, @Param("record")MallActSet mallActSet);
+ IPage<ApiMallActListVo> selectApiMallActListInPage(@Param("record")ApiMallActListDto apiMallActListDto, Page<ApiMallActListVo> page);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallActWinRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallActWinRecordMapper.java
index 6e4775d..b314549 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallActWinRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallActWinRecordMapper.java
@@ -1,11 +1,19 @@
package cc.mrbird.febs.mall.mapper;
+import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
import cc.mrbird.febs.mall.entity.MallActWinRecord;
+import cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
public interface MallActWinRecordMapper extends BaseMapper<MallActWinRecord> {
MallActWinRecord selectByLuckDrawId(@Param("id")long id);
+ IPage<ApiMallActWinDetailsVo> selectApiMallActWinDetailsListInPage(@Param("record")ApiMallActWinDetailsDto apiMallActWinDetailsDto,
+ Page<ApiMallActWinDetailsVo> page);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java
index 6439ac6..4df8cf3 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java
@@ -1,4 +1,20 @@
package cc.mrbird.febs.mall.service;
+import cc.mrbird.febs.mall.dto.ApiMallActListDto;
+import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
+import cc.mrbird.febs.mall.vo.ApiMallActDetailsVo;
+import cc.mrbird.febs.mall.vo.ApiMallActListVo;
+import cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo;
+import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
public interface IApiMallActService {
+
+ IPage<ApiMallActListVo> findApiMallActListInPage(ApiMallActListDto apiMallActListDto);
+
+ ApiMallActDetailsVo findApiMallActDetailsById(Long id);
+
+ IPage<ApiMallActWinDetailsVo> findApiMallActWinDetailsInPage(ApiMallActWinDetailsDto apiMallActWinDetailsDto);
+
+ ApiMallAwardDetailsVo luckDraw(long actId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java
index b75b780..92caadb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java
@@ -57,6 +57,10 @@
if (StrUtil.isEmpty(actCode)) {
return new FebsResponse().fail().message("活动编码不能为空");
}
+ String actImage = addMallActDto.getActImage();
+ if (StrUtil.isEmpty(actImage)) {
+ return new FebsResponse().fail().message("活动图片不能为空");
+ }
Date actStartTime = addMallActDto.getActStartTime();
if(ObjectUtil.isEmpty(actStartTime)){
return new FebsResponse().fail().message("开始日期不能为空");
@@ -109,6 +113,7 @@
MallActSet mallActSet = new MallActSet();
mallActSet.setActCode(actCode);
mallActSet.setActName(actName);
+ mallActSet.setActImage(actImage);
mallActSet.setActStartTime(actStartTime);
mallActSet.setActEndTime(actEndTime);
mallActSet.setActScoreCnt(actScoreCnt);
@@ -206,6 +211,10 @@
if (StrUtil.isEmpty(actCode)) {
return new FebsResponse().fail().message("活动编码不能为空");
}
+ String actImage = mallActUpdateDto.getActImage();
+ if (StrUtil.isEmpty(actImage)) {
+ return new FebsResponse().fail().message("活动图片不能为空");
+ }
Date actStartTime = mallActUpdateDto.getActStartTime();
if(ObjectUtil.isEmpty(actStartTime)){
return new FebsResponse().fail().message("开始日期不能为空");
@@ -257,6 +266,7 @@
}
mallActSet.setActCode(actCode);
mallActSet.setActName(actName);
+ mallActSet.setActImage(actImage);
mallActSet.setActStartTime(actStartTime);
mallActSet.setActEndTime(actEndTime);
mallActSet.setActScoreCnt(actScoreCnt);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
index 05ebb48..b8ffd31 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
@@ -1,15 +1,539 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.mall.entity.MallActSet;
-import cc.mrbird.febs.mall.mapper.MallActSetMapper;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.mall.dto.ApiMallActListDto;
+import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallActService;
+import cc.mrbird.febs.mall.vo.*;
+import cn.hutool.core.util.*;
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class ApiMallActServiceImpl extends ServiceImpl<MallActSetMapper, MallActSet> implements IApiMallActService {
+
+ private final MallActAwardSetMapper mallActAwardSetMapper;
+ private final MallMemberMapper mallMemberMapper;
+ private final MallActWinRecordMapper mallActWinRecordMapper;
+ private final MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper;
+ private final MallMemberWalletMapper mallMemberWalletMapper;
+ private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+ @Override
+ public IPage<ApiMallActListVo> findApiMallActListInPage(ApiMallActListDto apiMallActListDto) {
+ Page<ApiMallActListVo> page = new Page<>(apiMallActListDto.getPageNow(), apiMallActListDto.getPageSize());
+ return this.baseMapper.selectApiMallActListInPage(apiMallActListDto, page);
+ }
+
+ @Override
+ public ApiMallActDetailsVo findApiMallActDetailsById(Long id) {
+ MallActSet mallActSet = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallActSet)){
+ throw new FebsException("活动不存在");
+ }
+ ApiMallActDetailsVo apiMallActDetailsVo = new ApiMallActDetailsVo();
+ apiMallActDetailsVo.setId(mallActSet.getId());
+ apiMallActDetailsVo.setActName(mallActSet.getActName());
+ apiMallActDetailsVo.setActCode(mallActSet.getActCode());
+ apiMallActDetailsVo.setActImage(mallActSet.getActImage());
+ apiMallActDetailsVo.setActStartTime(mallActSet.getActStartTime());
+ apiMallActDetailsVo.setActEndTime(mallActSet.getActEndTime());
+ apiMallActDetailsVo.setActScoreCnt(mallActSet.getActScoreCnt());
+ apiMallActDetailsVo.setActRemark(mallActSet.getActRemark());
+
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActId(id);
+ if(CollUtil.isNotEmpty(mallActAwardSets)){
+ List<ApiMallActAwardListDto> apiMallActAwardListDtos = new ArrayList<>();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ ApiMallActAwardListDto apiMallActAwardListDto = new ApiMallActAwardListDto();
+ apiMallActAwardListDto.setId(mallActAwardSet.getId());
+ apiMallActAwardListDto.setAwardName(mallActAwardSet.getAwardName());
+ apiMallActAwardListDto.setAwardImage(mallActAwardSet.getAwardImage());
+ apiMallActAwardListDto.setAwardTotal(mallActAwardSet.getAwardTotal());
+ apiMallActAwardListDto.setAwardCnt(mallActAwardSet.getAwardCnt());
+ apiMallActAwardListDto.setAwardType(mallActAwardSet.getAwardType());
+ apiMallActAwardListDto.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallActAwardListDtos.add(apiMallActAwardListDto);
+ }
+ apiMallActDetailsVo.setApiMallActAwardListDtos(apiMallActAwardListDtos);
+ }
+ return apiMallActDetailsVo;
+ }
+
+ @Override
+ public IPage<ApiMallActWinDetailsVo> findApiMallActWinDetailsInPage(ApiMallActWinDetailsDto apiMallActWinDetailsDto) {
+
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if(ObjectUtil.isEmpty(mallMember)){
+ throw new FebsException("用户不存在");
+ }
+ apiMallActWinDetailsDto.setMemberId(memberId);
+
+ Long actId = apiMallActWinDetailsDto.getActId();
+ MallActSet mallActSet = this.baseMapper.selectById(actId);
+ if(ObjectUtil.isEmpty(mallActSet)){
+ throw new FebsException("活动不存在");
+ }
+ Page<ApiMallActWinDetailsVo> page = new Page<>(apiMallActWinDetailsDto.getPageNow(), apiMallActWinDetailsDto.getPageSize());
+ return mallActWinRecordMapper.selectApiMallActWinDetailsListInPage(apiMallActWinDetailsDto,page);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public ApiMallAwardDetailsVo luckDraw(long actId) {
+ ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo();
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if(ObjectUtil.isEmpty(mallMember)){
+ throw new FebsException("用户不存在");
+ }
+
+ MallActSet mallActSet = this.baseMapper.selectById(actId);
+ if(ObjectUtil.isEmpty(mallActSet)){
+ throw new FebsException("活动不存在");
+ }
+ Integer actStatus = mallActSet.getActStatus();
+ if(MallActSet.ACT_STATUS_DISABLED == actStatus){
+ throw new FebsException("活动还没开始");
+ }
+ /**
+ * 获取用户积分数,判断能不能抽奖
+ * 减少对应的积分数量
+ * 较少奖品的已抽奖
+ * 生成一条抽奖记录
+ */
+
+ MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ if(ObjectUtil.isEmpty(wallet)){
+ throw new FebsException("账户不存在");
+ }
+ BigDecimal commission = wallet.getCommission();
+ BigDecimal prizeScore = wallet.getPrizeScore();
+ Integer actScoreCnt = mallActSet.getActScoreCnt();
+ if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
+ throw new FebsException("竞猜积分不足");
+ }
+ /**
+ * 中奖概率 20%
+ * 每次抽奖产生一个随机数要大于8,则中奖
+ * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖
+ */
+ //获取中奖概率
+ DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.WIN_SCORE.getType(),
+ DataDictionaryEnum.WIN_SCORE.getCode());
+ DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.WIN_CASH.getType(),
+ DataDictionaryEnum.WIN_CASH.getCode());
+ String scoreDicValue = scoreDic.getValue();
+ String cashDicValue = cashDic.getValue();
+ BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
+ //获取那个更大一点的几率
+ BigDecimal maxProbability = BigDecimal.ZERO;
+ BigDecimal minProbability = BigDecimal.ZERO;
+ Integer maxAwardType = 0;
+ Integer minAwardType = 0;
+ if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){
+ maxProbability = new BigDecimal(cashDicValue);
+ minProbability = new BigDecimal(scoreDicValue);
+ maxAwardType = MallActAwardSet.AWARD_TYPE_YJ;
+ minAwardType = MallActAwardSet.AWARD_TYPE_JF;
+ }else{
+ maxProbability = new BigDecimal(scoreDicValue);
+ minProbability = new BigDecimal(cashDicValue);
+ maxAwardType = MallActAwardSet.AWARD_TYPE_JF;
+ minAwardType = MallActAwardSet.AWARD_TYPE_YJ;
+ }
+
+ BigDecimal multiply = totalProbability.multiply(new BigDecimal(100));
+ BigDecimal failureScope = new BigDecimal(100).subtract(multiply);
+ int randomInt = RandomUtil.randomInt(1, 100);
+ //小于failureScope这个数字,则没中奖
+ if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0
+ && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){
+ //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖
+ //获取最新的十条抽奖记录
+ List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
+ if(CollUtil.isNotEmpty(records)){
+ //中奖次数
+ Integer count = 0;
+ for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
+ Integer status = mallActLuckdrawRecord.getStatus();
+ if(MallActLuckdrawRecord.STATUS_ENABLE == status){
+ count = count + 1;
+ }
+ }
+ if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }else{
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }
+ }else{
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }
+ }else{
+ //中奖
+ //获取最新的十条抽奖记录
+ List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
+ if(CollUtil.isNotEmpty(records)){
+ //中奖次数
+ Integer count = 0;
+ for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
+ Integer status = mallActLuckdrawRecord.getStatus();
+ if(MallActLuckdrawRecord.STATUS_ENABLE == status){
+ count = count + 1;
+ }
+ }
+ if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }else{
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }
+ }else{
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }
+ }
+
+ //扣竞猜积分
+ prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt));
+ wallet.setPrizeScore(prizeScore);
+ wallet.setCommission(commission);
+ mallMemberWalletMapper.updateAmountWithVersion(wallet);
+
+ return apiMallAwardDetailsVo;
+ }
+
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallActSetVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallActSetVo.java
index 9b5336a..3dcbe55 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallActSetVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallActSetVo.java
@@ -23,6 +23,10 @@
@ApiModelProperty(value = "活动名称")
private String actName;
+ //活动图片
+
+ @ApiModelProperty(value = "活动图片")
+ private String actImage;
//开始时间
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActAwardListDto.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActAwardListDto.java
new file mode 100644
index 0000000..ae28885
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActAwardListDto.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallActAwardListDto", description = "返回参数类")
+public class ApiMallActAwardListDto {
+
+ @ApiModelProperty(value = "奖品ID")
+ private Long id;
+ @ApiModelProperty(value = "奖品名称")
+ private String awardName;
+ @ApiModelProperty(value = "奖品图片")
+ private String awardImage;
+ @ApiModelProperty(value = "奖品总数")
+ private Integer awardTotal;
+ @ApiModelProperty(value = "已中奖数量")
+ private Integer awardCnt;
+ @ApiModelProperty(value = "类型 1:积分 2:佣金 3:谢谢参与")
+ private Integer awardType;
+ @ApiModelProperty(value = "获得积分或佣金数量(奖金)")
+ private Integer awardValue;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActDetailsVo.java
new file mode 100644
index 0000000..1988813
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActDetailsVo.java
@@ -0,0 +1,40 @@
+package cc.mrbird.febs.mall.vo;
+
+import cc.mrbird.febs.mall.dto.MallActAwardUpdateDto;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ApiMallActDetailsVo", description = "返回参数类")
+public class ApiMallActDetailsVo {
+
+ @ApiModelProperty(value = "活动ID")
+ private Long id;
+ @ApiModelProperty(value = "活动编码")
+ private String actCode;
+ @ApiModelProperty(value = "活动名称")
+ private String actName;
+ @ApiModelProperty(value = "活动图片")
+ private String actImage;
+ @ApiModelProperty(value = "开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date actStartTime;
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date actEndTime;
+ @ApiModelProperty(value = "每次参与需要积分数目")
+ private Integer actScoreCnt;
+ @ApiModelProperty(value = "活动状态 1-开启 0-关闭")
+ private Integer actStatus;
+ @ApiModelProperty(value = "活动说明")
+ private String actRemark;
+
+ @ApiModelProperty(value = "活动奖品")
+ private List<ApiMallActAwardListDto> apiMallActAwardListDtos;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActListVo.java
new file mode 100644
index 0000000..ae6270f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActListVo.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.mall.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+@Data
+@ApiModel(value = "ApiMallActListVo", description = "返回参数类")
+public class ApiMallActListVo {
+
+
+ @ApiModelProperty(value = "活动ID")
+ private Long id;
+ @ApiModelProperty(value = "活动编码")
+ private String actCode;
+ @ApiModelProperty(value = "活动名称")
+ private String actName;
+ @ApiModelProperty(value = "活动图片")
+ private String actImage;
+ @ApiModelProperty(value = "开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date actStartTime;
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date actEndTime;
+ @ApiModelProperty(value = "每次参与需要积分数目")
+ private Integer actScoreCnt;
+ @ApiModelProperty(value = "活动状态 1-开启 0-关闭")
+ private Integer actStatus;
+ @ApiModelProperty(value = "活动说明")
+ private String actRemark;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActWinDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActWinDetailsVo.java
new file mode 100644
index 0000000..b6e2b93
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallActWinDetailsVo.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallActWinDetailsVo", description = "返回参数类")
+public class ApiMallActWinDetailsVo {
+
+ @ApiModelProperty(value = "奖品名称")
+ private String awardName;
+ @ApiModelProperty(value = "奖品图片")
+ private String awardImage;
+ @ApiModelProperty(value = "类型 1:积分 2:佣金 3:谢谢参与")
+ private Integer awardType;
+ @ApiModelProperty(value = "获得积分或佣金数量(奖金)")
+ private Integer awardValue;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAwardDetailsVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAwardDetailsVo.java
new file mode 100644
index 0000000..a535b8cc
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAwardDetailsVo.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallAwardDetailsVo", description = "返回参数类")
+public class ApiMallAwardDetailsVo {
+
+ @ApiModelProperty(value = "奖品名称")
+ private String awardName;
+ @ApiModelProperty(value = "奖品图片")
+ private String awardImage;
+ @ApiModelProperty(value = "类型 1:积分 2:佣金 3:谢谢参与")
+ private Integer awardType;
+ @ApiModelProperty(value = "获得积分或佣金数量(奖金)")
+ private Integer awardValue;
+
+}
diff --git a/src/main/resources/mapper/modules/MallActAwardSetMapper.xml b/src/main/resources/mapper/modules/MallActAwardSetMapper.xml
index ea9f139..5a5f39b 100644
--- a/src/main/resources/mapper/modules/MallActAwardSetMapper.xml
+++ b/src/main/resources/mapper/modules/MallActAwardSetMapper.xml
@@ -10,4 +10,8 @@
select a.* from mall_act_award_set a where a.act_id = #{id}
</select>
+ <select id="selectMallActAwardByActIdAndAwardType" resultType="cc.mrbird.febs.mall.entity.MallActAwardSet">
+ select a.* from mall_act_award_set a where a.act_id = #{actId} and a.award_type = #{awardType}
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallActLuckdrawRecordMapper.xml b/src/main/resources/mapper/modules/MallActLuckdrawRecordMapper.xml
index 89e2e0c..6b64830 100644
--- a/src/main/resources/mapper/modules/MallActLuckdrawRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallActLuckdrawRecordMapper.xml
@@ -27,4 +27,12 @@
order by a.created_time desc
</select>
+ <select id="selectRecordByMemberIdAndActId" resultType="cc.mrbird.febs.mall.entity.MallActLuckdrawRecord">
+ select
+ a.*
+ from mall_act_luckdraw_record a
+ where a.member_id = #{memberId} and a.act_id = #{actId}
+ order by a.created_time desc limit 0,10
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallActSetMapper.xml b/src/main/resources/mapper/modules/MallActSetMapper.xml
index efb8206..e17bbb4 100644
--- a/src/main/resources/mapper/modules/MallActSetMapper.xml
+++ b/src/main/resources/mapper/modules/MallActSetMapper.xml
@@ -7,6 +7,7 @@
a.id,
a.act_code actCode,
a.act_name actName,
+ a.act_image actImage,
a.act_start_time actStartTime,
a.act_end_time actEndTime,
a.act_score_cnt actScoreCnt,
@@ -23,4 +24,19 @@
order by a.created_time desc
</select>
+
+ <select id="selectApiMallActListInPage" resultType="cc.mrbird.febs.mall.vo.ApiMallActListVo">
+ select
+ a.*
+ from mall_act_set a
+ <where>
+ <if test="record != null">
+ <if test="record.query != null and record.query != ''">
+ and a.act_name like CONCAT('%', CONCAT(#{record.query}, '%'))
+ </if>
+ </if>
+ </where>
+ order by a.act_start_time desc
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallActWinRecordMapper.xml b/src/main/resources/mapper/modules/MallActWinRecordMapper.xml
index 5cbb9fb..6fc92fd 100644
--- a/src/main/resources/mapper/modules/MallActWinRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallActWinRecordMapper.xml
@@ -6,4 +6,26 @@
select a.* from mall_act_win_record a where a.record_id = #{id}
</select>
+
+ <select id="selectApiMallActWinDetailsListInPage" resultType="cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo">
+ select
+ a.award_name awardName,
+ a.award_type awardType,
+ a.award_value awardValue,
+ b.award_image awardImage
+ from mall_act_win_record a
+ left join mall_act_award_set b on a.award_id = b.id
+ <where>
+ <if test="record != null">
+ <if test="record.actId != null and record.actId != ''">
+ and a.act_id = #{actId}
+ </if>
+ <if test="record.memberId != null and record.memberId != ''">
+ and a.member_id = #{memberId}
+ </if>
+ </if>
+ </where>
+ order by a.act_start_time desc
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/act/actAddNew.html b/src/main/resources/templates/febs/views/modules/act/actAddNew.html
index be057b6..7a96398 100644
--- a/src/main/resources/templates/febs/views/modules/act/actAddNew.html
+++ b/src/main/resources/templates/febs/views/modules/act/actAddNew.html
@@ -49,6 +49,26 @@
</div>
</div>
</div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">活动缩略图:</label>
+ <div class="layui-input-block">
+ <div class="layui-upload">
+ <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test2">上传</button>
+ <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
+ <div class="layui-upload-list">
+ <img class="layui-upload-img" id="demo2" style="width: 100px" >
+ </div>
+ </blockquote>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item febs-hide">
+ <label class="layui-form-label">缩略图链接:</label>
+ <div class="layui-input-block">
+ <input type="text" id="actImage" lay-verify="required" name="actImage" autocomplete="off" class="layui-input" readonly>
+ </div>
+ </div>
<div class="layui-form-item">
<label class="layui-form-label">活动说明:</label>
@@ -164,6 +184,16 @@
});
})
+ //图片上传
+ upload.render({
+ elem: '#test2'
+ ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
+ ,done: function(res){
+ $('#demo2').attr('src', res.data.src);
+ $("#actImage").val(res.data.src);
+ }
+ });
+
var tableAwardData=[];
var tableIns = table.render({
elem: '#multiAwardSku'
@@ -174,7 +204,7 @@
{type: 'checkbox'}
,{field: 'index', title: '序号', width:70}
,{field: 'awardName', title: '奖品名称', edit:'text'}
- ,{field: 'awardImage', title: '奖品图'}
+ ,{field: 'awardImage', title: '奖品图', hide:true}
,{templet: '#awardtableImgUpload', title: '缩略图', width:150}
,{field: 'awardTotal', title: '奖品总数', edit:'text'}
,{field: 'awardCnt', title: '已中奖数量', edit:'text'}
diff --git a/src/main/resources/templates/febs/views/modules/act/actList.html b/src/main/resources/templates/febs/views/modules/act/actList.html
index 1c37454..5010f55 100644
--- a/src/main/resources/templates/febs/views/modules/act/actList.html
+++ b/src/main/resources/templates/febs/views/modules/act/actList.html
@@ -117,6 +117,21 @@
}
});
}
+ if (layEvent === 'seeImgThumb') {
+ var t = $view.find('#seeImgThumb'+data.id+'');
+ //页面层
+ layer.open({
+ type: 1,
+ title: "图片",
+ skin: 'layui-layer-rim', //加上边框
+ area: ['80%', '80%'], //宽高
+ shadeClose: true, //开启遮罩关闭
+ end: function (index, layero) {
+ return false;
+ },
+ content: '<div style="text-align:center"><img src="' + $(t).attr('src') + '" /></div>'
+ });
+ }
});
function closeAct(id) {
febs.get(ctx + 'admin/act/closeMallAct/' + id, null, function () {
@@ -171,6 +186,10 @@
cols: [[
{field: 'actCode', title: '活动编码', minWidth: 150,align:'left'},
{field: 'actName', title: '活动名称', minWidth: 150,align:'left'},
+ {field: 'actImage', title: '活动缩略图',
+ templet: function (d) {
+ return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.actImage+'" alt=""></a>';
+ }, minWidth: 150,align:'center'},
{field: 'actStartTime', title: '开始时间', minWidth: 150,align:'left'},
{field: 'actEndTime', title: '结束时间', minWidth: 150,align:'left'},
{field: 'actScoreCnt', title: '每次消耗积分', minWidth: 150,align:'left'},
diff --git a/src/main/resources/templates/febs/views/modules/act/actUpdateNew.html b/src/main/resources/templates/febs/views/modules/act/actUpdateNew.html
index f2d699d..606723c 100644
--- a/src/main/resources/templates/febs/views/modules/act/actUpdateNew.html
+++ b/src/main/resources/templates/febs/views/modules/act/actUpdateNew.html
@@ -53,6 +53,26 @@
</div>
</div>
</div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">活动缩略图:</label>
+ <div class="layui-input-block">
+ <div class="layui-upload">
+ <button type="button" class="layui-btn layui-btn-normal layui-btn" id="test2">上传</button>
+ <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
+ <div class="layui-upload-list">
+ <img class="layui-upload-img" id="demo2" style="width: 100px" >
+ </div>
+ </blockquote>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item febs-hide">
+ <label class="layui-form-label">缩略图链接:</label>
+ <div class="layui-input-block">
+ <input type="text" id="actImage" lay-verify="required" name="actImage" autocomplete="off" class="layui-input" readonly>
+ </div>
+ </div>
<div class="layui-form-item">
<label class="layui-form-label">活动说明:</label>
@@ -145,6 +165,16 @@
});
formSelects.render();
+ //图片上传
+ upload.render({
+ elem: '#test2'
+ ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
+ ,done: function(res){
+ $('#demo2').attr('src', res.data.src);
+ $("#actImage").val(res.data.src);
+ }
+ });
+
var tableAwardData=[];
var tableIns = table.render({
elem: '#multiAward'
@@ -155,7 +185,7 @@
{type: 'checkbox'}
,{field: 'index', title: '序号', width:70}
,{field: 'awardName', title: '奖品名称', edit:'text'}
- ,{field: 'awardImage', title: '奖品图'}
+ ,{field: 'awardImage', title: '奖品图', hide:true}
,{templet: '#awardtableImgUpload', title: '缩略图', width:150}
,{field: 'awardTotal', title: '奖品总数', edit:'text'}
,{field: 'awardCnt', title: '已中奖数量', edit:'text'}
@@ -291,12 +321,18 @@
"id": actInfo.id,
"actCode": actInfo.actCode,
"actName": actInfo.actName,
+ "actImage": actInfo.actImage,
"actStartTime": actInfo.actStartTime,
+ "actEndTime": actInfo.actEndTime,
"actEndTime": actInfo.actEndTime,
"actScoreCnt": actInfo.actScoreCnt,
"actRemark": actInfo.actRemark
});
+ // $('#demo2').append('<img src="' + actInfo.actImage + '" alt="" class="layui-upload-img" style="width: 100px">')
+
+ $('#demo2').attr('src', actInfo.actImage);
+
var award = actInfo.mallActAwardSets;
for (let i = 0; i < award.length; i++) {
award[i].index = i+1;
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 6f86be6..a2f3a42 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,15 +1,19 @@
package cc.mrbird.febs;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.mall.dto.AgentLevelUpdateDto;
-import cc.mrbird.febs.mall.entity.AgentInfo;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.entity.MallGoodsStyle;
-import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
-import cc.mrbird.febs.mall.mapper.MallGoodsStyleMapper;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.quartz.ProfitJob;
import cc.mrbird.febs.mall.service.IAgentService;
+import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.weaver.loadtime.Agent;
@@ -19,6 +23,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -41,10 +46,456 @@
@Autowired
private MallGoodsStyleMapper mallGoodsStyleMapper;
+ @Autowired
+ private MallActAwardSetMapper mallActAwardSetMapper;
+ @Autowired
+ private MallMemberMapper mallMemberMapper;
+ @Autowired
+ private MallActWinRecordMapper mallActWinRecordMapper;
+ @Autowired
+ private MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper;
+ @Autowired
+ private MallMemberWalletMapper mallMemberWalletMapper;
+ @Autowired
+ private MallActSetMapper mallActSetMapper;
@Test
public void skusTest() {
- List<MallGoodsStyle> mallGoodsStyles = mallGoodsStyleMapper.selectByGoodsId(1L);
- System.out.println(mallGoodsStyles);
+ ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo();
+ Long memberId = 4L;
+ Long actId = 1L;
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if(ObjectUtil.isEmpty(mallMember)){
+ throw new FebsException("用户不存在");
+ }
+
+ MallActSet mallActSet = mallActSetMapper.selectById(actId);
+ if(ObjectUtil.isEmpty(mallActSet)){
+ throw new FebsException("活动不存在");
+ }
+ Integer actStatus = mallActSet.getActStatus();
+ if(MallActSet.ACT_STATUS_DISABLED == actStatus){
+ throw new FebsException("活动还没开始");
+ }
+ /**
+ * 获取用户积分数,判断能不能抽奖
+ * 减少对应的积分数量
+ * 较少奖品的已抽奖
+ * 生成一条抽奖记录
+ */
+
+ MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ if(ObjectUtil.isEmpty(wallet)){
+ throw new FebsException("账户不存在");
+ }
+ BigDecimal commission = wallet.getCommission();
+ BigDecimal prizeScore = wallet.getPrizeScore();
+ Integer actScoreCnt = mallActSet.getActScoreCnt();
+ if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
+ throw new FebsException("竞猜积分不足");
+ }
+ /**
+ * 中奖概率 20%
+ * 每次抽奖产生一个随机数要大于8,则中奖
+ * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖
+ */
+ //获取中奖概率
+ DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.WIN_SCORE.getType(),
+ DataDictionaryEnum.WIN_SCORE.getCode());
+ DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.WIN_CASH.getType(),
+ DataDictionaryEnum.WIN_CASH.getCode());
+ String scoreDicValue = scoreDic.getValue();
+ String cashDicValue = cashDic.getValue();
+ BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
+ //获取那个更大一点的几率
+ BigDecimal maxProbability = BigDecimal.ZERO;
+ BigDecimal minProbability = BigDecimal.ZERO;
+ Integer maxAwardType = 0;
+ Integer minAwardType = 0;
+ if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){
+ maxProbability = new BigDecimal(cashDicValue);
+ minProbability = new BigDecimal(scoreDicValue);
+ maxAwardType = MallActAwardSet.AWARD_TYPE_YJ;
+ minAwardType = MallActAwardSet.AWARD_TYPE_JF;
+ }else{
+ maxProbability = new BigDecimal(scoreDicValue);
+ minProbability = new BigDecimal(cashDicValue);
+ maxAwardType = MallActAwardSet.AWARD_TYPE_JF;
+ minAwardType = MallActAwardSet.AWARD_TYPE_YJ;
+ }
+
+ BigDecimal multiply = totalProbability.multiply(new BigDecimal(100));
+ BigDecimal failureScope = new BigDecimal(100).subtract(multiply);
+ int randomInt = RandomUtil.randomInt(1, 100);
+ //小于failureScope这个数字,则没中奖
+ if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0
+ && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){
+ //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖
+ //获取最新的十条抽奖记录
+ List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
+ if(CollUtil.isNotEmpty(records)){
+ //中奖次数
+ Integer count = 0;
+ for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
+ Integer status = mallActLuckdrawRecord.getStatus();
+ if(MallActLuckdrawRecord.STATUS_ENABLE == status){
+ count = count + 1;
+ }
+ }
+ if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }else{
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }
+ }else{
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }
+ }else{
+ //中奖
+ //获取最新的十条抽奖记录
+ List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
+ if(CollUtil.isNotEmpty(records)){
+ //中奖次数
+ Integer count = 0;
+ for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
+ Integer status = mallActLuckdrawRecord.getStatus();
+ if(MallActLuckdrawRecord.STATUS_ENABLE == status){
+ count = count + 1;
+ }
+ }
+ if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }else{
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }
+ }else{
+ //获取活动下该类别的奖品
+ List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
+ if(CollUtil.isEmpty(mallActAwardSets)){
+ //抽奖记录
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
+ if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
+ }else{
+ apiMallAwardDetailsVo.setAwardName("未中奖");
+ }
+ }else{
+ List<MallActAwardSet> idList = new ArrayList();
+ for(MallActAwardSet mallActAwardSet : mallActAwardSets){
+ Integer awardTotal = mallActAwardSet.getAwardTotal();
+ Integer awardCnt = mallActAwardSet.getAwardCnt();
+ if(awardCnt < awardTotal){
+ idList.add(mallActAwardSet);
+ }
+ }
+ MallActAwardSet mallActAwardSet = new MallActAwardSet();
+ if(idList.size() <= 1){
+ mallActAwardSet = idList.get(0);
+ }else{
+ int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
+ mallActAwardSet = idList.get(randomIdIndex);
+ }
+ mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
+ mallActAwardSetMapper.updateById(mallActAwardSet);
+
+ MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
+ mallActLuckdrawRecord.setActId(actId);
+ mallActLuckdrawRecord.setActName(mallActSet.getActName());
+ mallActLuckdrawRecord.setMemberId(memberId);
+ mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
+ mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
+ mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
+
+ MallActWinRecord mallActWinRecord = new MallActWinRecord();
+ mallActWinRecord.setMemberId(memberId);
+ mallActWinRecord.setActId(actId);
+ mallActWinRecord.setActName(mallActSet.getActName());
+ mallActWinRecord.setAwardId(mallActAwardSet.getId());
+ mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
+ mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
+ mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
+ mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
+ mallActWinRecordMapper.insert(mallActWinRecord);
+
+ apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
+ apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
+ apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
+ apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
+
+ if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
+ prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
+ commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
+ }
+ }
+ }
+ }
+
+ //扣竞猜积分
+ prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt));
+ wallet.setPrizeScore(prizeScore);
+ wallet.setCommission(commission);
+ mallMemberWalletMapper.updateAmountWithVersion(wallet);
+
+ System.out.println(apiMallAwardDetailsVo);
}
@Test
--
Gitblit v1.9.1