From fcbdd13e64a2052c6bbf14e4f03cd43199780f0c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 23 May 2022 11:40:21 +0800
Subject: [PATCH] 20220518

---
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallActController.java    |   14 ++-
 src/main/java/cc/mrbird/febs/mall/dto/LuckDrawSettingDto.java               |   13 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java   |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallActServiceImpl.java |   59 ++++++++++++--
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallActController.java     |   31 +++++++
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallActService.java         |    3 
 src/main/resources/templates/febs/views/modules/act/setting.html            |   59 ++++++++++++++
 7 files changed, 168 insertions(+), 15 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallActController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallActController.java
index 0b238be..0b051b4 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallActController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallActController.java
@@ -4,10 +4,8 @@
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.mall.dto.AddMallActDto;
-import cc.mrbird.febs.mall.dto.AddMallGoodsDto;
-import cc.mrbird.febs.mall.dto.MallActUpdateDto;
-import cc.mrbird.febs.mall.dto.MallGoodsUpdateDto;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.MallActLuckdrawRecord;
 import cc.mrbird.febs.mall.entity.MallActSet;
 import cc.mrbird.febs.mall.entity.MallGoods;
@@ -93,5 +91,13 @@
         return new FebsResponse().success().data(data);
     }
 
+    /**
+     * 中奖概率设置
+     */
+    @PostMapping(value = "/addSetting")
+    public FebsResponse addSetting(LuckDrawSettingDto luckDrawSettingDto) {
+        return iAdminMallActService.addSetting(luckDrawSettingDto);
+    }
+
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallActController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallActController.java
index 178b63c..cc10fd2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallActController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallActController.java
@@ -2,12 +2,18 @@
 
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsConstant;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
 import cc.mrbird.febs.common.utils.FebsUtil;
+import cc.mrbird.febs.mall.dto.LuckDrawSettingDto;
+import cc.mrbird.febs.mall.dto.ScoreSettingDto;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
 import cc.mrbird.febs.mall.entity.MallActSet;
 import cc.mrbird.febs.mall.entity.MallActWinRecord;
-import cc.mrbird.febs.mall.entity.MallGoods;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
 import cc.mrbird.febs.mall.service.IAdminMallActService;
+import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
+import cn.hutool.core.util.ObjectUtil;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -21,6 +27,8 @@
 public class ViewMallActController extends BaseController {
 
     private final IAdminMallActService iAdminMallActService;
+
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     /**
      * 活动-列表
@@ -71,4 +79,25 @@
         return FebsUtil.view("modules/act/winRecordInfo");
     }
 
+    /**
+     * 中奖概率设置
+     */
+    @GetMapping("setting")
+    @RequiresPermissions("luckdrawWinSet:see")
+    public String setting(Model model) {
+        DataDictionaryCustom dicScore = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WIN_SCORE.getType(), DataDictionaryEnum.WIN_SCORE.getCode());
+        DataDictionaryCustom dicCash = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WIN_CASH.getType(), DataDictionaryEnum.WIN_CASH.getCode());
+        LuckDrawSettingDto luckDrawSettingDto = new LuckDrawSettingDto();
+        if(ObjectUtil.isNotEmpty(dicCash)){
+            luckDrawSettingDto.setCashSet(dicCash.getValue() == null ? "0" : dicCash.getValue());
+        }
+        if(ObjectUtil.isNotEmpty(dicScore)){
+            luckDrawSettingDto.setScoreSet(dicScore.getValue() == null ? "0" : dicScore.getValue());
+        }
+        if (dicCash != null) {
+            model.addAttribute("obj", luckDrawSettingDto);
+        }
+        return FebsUtil.view("modules/act/setting");
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/LuckDrawSettingDto.java b/src/main/java/cc/mrbird/febs/mall/dto/LuckDrawSettingDto.java
new file mode 100644
index 0000000..3b254b7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/LuckDrawSettingDto.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.mall.dto;
+
+import lombok.Data;
+
+@Data
+public class LuckDrawSettingDto {
+
+    //积分中奖概率
+    private String scoreSet;
+    //佣金中奖概率
+    private String cashSet;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallActService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallActService.java
index 4e13e61..f00ba85 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallActService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallActService.java
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.mall.dto.AddMallActDto;
+import cc.mrbird.febs.mall.dto.LuckDrawSettingDto;
 import cc.mrbird.febs.mall.dto.MallActUpdateDto;
 import cc.mrbird.febs.mall.entity.MallActLuckdrawRecord;
 import cc.mrbird.febs.mall.entity.MallActSet;
@@ -32,4 +33,6 @@
     IPage<AdminMallActLuckdrawRecordVo> getLuckdrawListInPage(MallActLuckdrawRecord mallActLuckdrawRecord, QueryRequest request);
 
     MallActWinRecord selectMallActWinInfoById(long id);
+
+    FebsResponse addSetting(LuckDrawSettingDto luckDrawSettingDto);
 }
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 92caadb..40d0090 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
@@ -2,22 +2,19 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.mall.dto.AddMallActAwardDto;
-import cc.mrbird.febs.mall.dto.AddMallActDto;
-import cc.mrbird.febs.mall.dto.MallActAwardUpdateDto;
-import cc.mrbird.febs.mall.dto.MallActUpdateDto;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.MallActAwardSetMapper;
-import cc.mrbird.febs.mall.mapper.MallActLuckdrawRecordMapper;
-import cc.mrbird.febs.mall.mapper.MallActSetMapper;
-import cc.mrbird.febs.mall.mapper.MallActWinRecordMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IAdminMallActService;
 import cc.mrbird.febs.mall.vo.AdminMallActLuckdrawRecordVo;
 import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,6 +35,7 @@
     private final MallActAwardSetMapper mallActAwardSetMapper;
     private final MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper;
     private final MallActWinRecordMapper mallActWinRecordMapper;
+    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
 
     @Override
     public IPage<AdminMallActSetVo> getActListInPage(MallActSet mallActSet, QueryRequest request) {
@@ -322,4 +320,49 @@
         MallActWinRecord mallActWinRecord = mallActWinRecordMapper.selectByLuckDrawId(id);
         return mallActWinRecord;
     }
+
+    @Override
+    public FebsResponse addSetting(LuckDrawSettingDto luckDrawSettingDto) {
+
+        if(Double.parseDouble(luckDrawSettingDto.getScoreSet())>1 || Double.parseDouble(luckDrawSettingDto.getScoreSet()) <0){
+            return new FebsResponse().fail().message("中奖概率必须是一个在零和一之间的小数");
+        }
+
+        if(Double.parseDouble(luckDrawSettingDto.getCashSet())>1 || Double.parseDouble(luckDrawSettingDto.getCashSet()) <0){
+            return new FebsResponse().fail().message("中奖概率必须是一个在零和一之间的小数");
+        }
+
+        DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.WIN_SCORE.getType(),
+                DataDictionaryEnum.WIN_SCORE.getCode());
+        DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.WIN_CASH.getType(),
+                DataDictionaryEnum.WIN_CASH.getCode());
+
+        if (ObjectUtil.isNotEmpty(scoreDic)) {
+            scoreDic.setValue(luckDrawSettingDto.getScoreSet().toString());
+            dataDictionaryCustomMapper.updateById(scoreDic);
+        }else{
+            DataDictionaryCustom dataDictionaryCustom = new DataDictionaryCustom();
+            dataDictionaryCustom.setCode(DataDictionaryEnum.WIN_SCORE.getCode());
+            dataDictionaryCustom.setType(DataDictionaryEnum.WIN_SCORE.getType());
+            dataDictionaryCustom.setValue(luckDrawSettingDto.getScoreSet().toString());
+            dataDictionaryCustom.setDescription("积分中奖概率");
+            dataDictionaryCustomMapper.insert(dataDictionaryCustom);
+        }
+        if (ObjectUtil.isNotEmpty(cashDic)) {
+            cashDic.setValue(luckDrawSettingDto.getCashSet().toString());
+            dataDictionaryCustomMapper.updateById(cashDic);
+        }else{
+            DataDictionaryCustom dataDictionaryCustom = new DataDictionaryCustom();
+            dataDictionaryCustom.setCode(DataDictionaryEnum.WIN_CASH.getCode());
+            dataDictionaryCustom.setType(DataDictionaryEnum.WIN_CASH.getType());
+            dataDictionaryCustom.setValue(luckDrawSettingDto.getScoreSet().toString());
+            dataDictionaryCustom.setDescription("佣金中奖概率");
+            dataDictionaryCustomMapper.insert(dataDictionaryCustom);
+        }
+
+        return new FebsResponse().success().message("操作成功");
+    }
+
 }
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 47ba08a..f95a34d 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
@@ -142,8 +142,8 @@
         DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                 DataDictionaryEnum.WIN_CASH.getType(),
                 DataDictionaryEnum.WIN_CASH.getCode());
-        String scoreDicValue = scoreDic.getValue();
-        String cashDicValue = cashDic.getValue();
+        String scoreDicValue = scoreDic.getValue() == null? "0":scoreDic.getValue();
+        String cashDicValue = cashDic.getValue() == null? "0":cashDic.getValue();
         BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
         //获取那个更大一点的几率
         BigDecimal maxProbability = BigDecimal.ZERO;
diff --git a/src/main/resources/templates/febs/views/modules/act/setting.html b/src/main/resources/templates/febs/views/modules/act/setting.html
new file mode 100644
index 0000000..c2baa2b
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/act/setting.html
@@ -0,0 +1,59 @@
+<div class="layui-fluid layui-anim febs-anim" id="act-setting" lay-title="中奖概率设置">
+    <div class="layui-row layui-col-space8 febs-container">
+        <form class="layui-form" action="" lay-filter="act-setting-form">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label ">积分中奖概率:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="scoreSet" lay-verify="text" th:value="${obj != null ? obj.scoreSet : null}" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                    <div class="layui-form-item">
+                        <label class="layui-form-label ">佣金中奖概率:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="cashSet" lay-verify="text" th:value="${obj != null ? obj.cashSet : null}" autocomplete="off" class="layui-input">
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-card-footer">
+                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="act-setting-form-submit" id="submit">保存</button>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+<style>
+    .layui-form-label {
+        width: 120px;
+    }
+
+    .layui-form-item .layui-input-block {
+        margin-left: 150px;
+    }
+
+    .layui-table-form .layui-form-item {
+        margin-bottom: 20px !important;
+    }
+</style>
+<script data-th-inline="javascript" type="text/javascript">
+    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            validate = layui.validate,
+            $view = $('#act-setting');
+
+        form.verify(validate);
+        form.render();
+
+        form.on('submit(act-setting-form-submit)', function (data) {
+            console.log(data);
+            febs.post(ctx + 'admin/act/addSetting', data.field, function (res) {
+                febs.alert.success('设置成功');
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.9.1