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