From a496bd5c228c2a6c8cfad1f92a1ca9d38e3110d6 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Fri, 26 Jan 2024 00:22:28 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java |    3 
 src/main/resources/templates/febs/views/modules/vip/coupon-select.html        |    1 
 src/main/java/cc/mrbird/febs/vip/VipSettingUnAliveSettingBo.java              |   13 ++
 src/main/java/cc/mrbird/febs/vip/vo/VipSettingVo.java                         |    5 +
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java        |    7 +
 src/main/resources/templates/febs/views/modules/vip/vipBenefits-list.html     |    2 
 src/main/resources/templates/febs/views/modules/vip/vip-setting.html          |  224 +++++++++++++++++++++++++++++++++++++-------
 src/main/java/cc/mrbird/febs/vip/controller/ViewVipConfigController.java      |    8 +
 8 files changed, 223 insertions(+), 40 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 e3b8023..ba1d1cd 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -64,7 +64,12 @@
     /**
      * 会员日
      */
-    VIP_DATE("VIP_DATE", "VIP_DATE");
+    VIP_DATE("VIP_DATE", "VIP_DATE"),
+
+    /**
+     * 会员日
+     */
+    UNALIVE_COUPON("UNALIVE_COUPON", "UNALIVE_COUPON");
 
     private String type;
 
diff --git a/src/main/java/cc/mrbird/febs/vip/VipSettingUnAliveSettingBo.java b/src/main/java/cc/mrbird/febs/vip/VipSettingUnAliveSettingBo.java
new file mode 100644
index 0000000..cbe93bf
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/vip/VipSettingUnAliveSettingBo.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.vip;
+
+import lombok.Data;
+
+@Data
+public class VipSettingUnAliveSettingBo {
+
+    private int day;
+
+    private Long couponId;
+
+    private String couponName;
+}
diff --git a/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java b/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java
index d2e334d..da7336c 100644
--- a/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java
+++ b/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java
@@ -56,9 +56,10 @@
     }
 
     @PostMapping(value = "/vipSetting")
-    public FebsResponse vipSetting(VipSettingVo vipSettingVo) {
+    public FebsResponse vipSetting(@RequestBody VipSettingVo vipSettingVo) {
         commonService.addDataDic(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode(), vipSettingVo.getVipDate(), null, false);
 
+        commonService.addDataDic(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode(), vipSettingVo.getItems(), "失活会员优惠券配置", true);
         return new FebsResponse().success();
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/controller/ViewVipConfigController.java b/src/main/java/cc/mrbird/febs/vip/controller/ViewVipConfigController.java
index 5018e70..793ded0 100644
--- a/src/main/java/cc/mrbird/febs/vip/controller/ViewVipConfigController.java
+++ b/src/main/java/cc/mrbird/febs/vip/controller/ViewVipConfigController.java
@@ -9,6 +9,7 @@
 import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
 import cc.mrbird.febs.mall.mapper.MallGoodsCouponMapper;
 import cc.mrbird.febs.mall.service.IApiMallGoodsService;
+import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
 import cc.mrbird.febs.vip.entity.MallVipBenefits;
 import cc.mrbird.febs.vip.entity.MallVipConfig;
 import cc.mrbird.febs.vip.entity.MallVipConfigBenefits;
@@ -17,6 +18,8 @@
 import cc.mrbird.febs.vip.service.IMallVipConfigService;
 import cc.mrbird.febs.vip.vo.VipSettingVo;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Controller;
@@ -158,6 +161,11 @@
         VipSettingVo setting = new VipSettingVo();
         setting.setVipDate(data.getValue());
 
+        DataDictionaryCustom couponData = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode());
+        if (couponData != null && StrUtil.isNotBlank(couponData.getValue())) {
+            List<VipSettingUnAliveSettingBo> items = JSONObject.parseArray(couponData.getValue(), VipSettingUnAliveSettingBo.class);
+            setting.setItems(items);
+        }
         model.addAttribute("vipSetting", setting);
         return FebsUtil.view("modules/vip/vip-setting");
     }
diff --git a/src/main/java/cc/mrbird/febs/vip/vo/VipSettingVo.java b/src/main/java/cc/mrbird/febs/vip/vo/VipSettingVo.java
index 9689b51..caed7c4 100644
--- a/src/main/java/cc/mrbird/febs/vip/vo/VipSettingVo.java
+++ b/src/main/java/cc/mrbird/febs/vip/vo/VipSettingVo.java
@@ -1,9 +1,14 @@
 package cc.mrbird.febs.vip.vo;
 
+import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
 import lombok.Data;
+
+import java.util.List;
 
 @Data
 public class VipSettingVo {
 
     private String vipDate;
+
+    private List<VipSettingUnAliveSettingBo> items;
 }
diff --git a/src/main/resources/templates/febs/views/modules/vip/coupon-select.html b/src/main/resources/templates/febs/views/modules/vip/coupon-select.html
index dacc5b3..31e1429 100644
--- a/src/main/resources/templates/febs/views/modules/vip/coupon-select.html
+++ b/src/main/resources/templates/febs/views/modules/vip/coupon-select.html
@@ -85,7 +85,6 @@
         });
 
         form.on('submit(vip-coupon-select-form-submit)', function (data) {
-            console.log(1111);
             parent.setCouponSelect(tableIndex, selectData)
         });
     });
diff --git a/src/main/resources/templates/febs/views/modules/vip/vip-setting.html b/src/main/resources/templates/febs/views/modules/vip/vip-setting.html
index 05e35e4..171c0b3 100644
--- a/src/main/resources/templates/febs/views/modules/vip/vip-setting.html
+++ b/src/main/resources/templates/febs/views/modules/vip/vip-setting.html
@@ -3,35 +3,24 @@
         <form class="layui-form" action="" lay-filter="vip-setting-form">
             <div class="layui-card">
                 <div class="layui-card-body">
+                    <blockquote class="layui-elem-quote blue-border">会员日设置</blockquote>
                     <div class="layui-form-item">
-                        <label class="layui-form-label ">会员日:</label>
-                        <div class="layui-input-block">
-                            <input type="text" name="vipDate" id="vipDate" autocomplete="off" class="layui-input" >
+                        <div class="layui-col-lg6">
+                            <label class="layui-form-label ">会员日:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="vipDate" id="vipDate" autocomplete="off" class="layui-input" >
+                            </div>
                         </div>
                     </div>
-<!--                    <div class="layui-form-item">-->
-<!--                        <label class="layui-form-label ">每日提现上限:</label>-->
-<!--                        <div class="layui-input-block">-->
-<!--                            <input type="text" name="allCashOut" data-th-id="${cashout.allCashOut}"-->
-<!--                                   lay-verify="number" 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="serviceFee" data-th-id="${cashout.serviceFee}"-->
-<!--                                   lay-verify="text" autocomplete="off" class="layui-input" >-->
-<!--                        </div>-->
-<!--                        <div class="layui-word-aux" style="margin-left: 150px;">提现手续费:直接输入百分比,例如25%,直接输入25</div>-->
 
-<!--                    </div>-->
-<!--                    <div class="layui-form-item">-->
-<!--                        <label class="layui-form-label">提现时间:</label>-->
-<!--                        <div class="layui-input-block">-->
-<!--                            <input type="radio" name="workingDays" value="1" title="工作日">-->
-<!--                            <input type="radio" name="workingDays" value="2" title="每一天">-->
-<!--                        </div>-->
-<!--                    </div>-->
+
+                    <blockquote class="layui-elem-quote blue-border">失活客户优惠券</blockquote>
+
+                    <div class="layui-form-item">
+                        <div class="layui-col-lg6">
+                            <table id="unAliveCouponItem" lay-filter="unAliveCouponItem"></table>
+                        </div>
+                    </div>
                 </div>
 
                 <div class="layui-card-footer">
@@ -53,20 +42,37 @@
     .layui-table-form .layui-form-item {
         margin-bottom: 20px !important;
     }
+
+    .layui-table-cell {
+        height:auto;
+    }
 </style>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" type="button" lay-event="addCoupon">新增</button>
+        <button class="layui-btn layui-btn-danger layui-btn-sm" type="button" lay-event="delCoupon">删除</button>
+    </div>
+</script>
+
+<script type="text/html" id="detailsEvent">
+    <input type="text" name="couponName" autocomplete="off" data-index="{{d.index}}" value="{{d.couponName}}" class="layui-input couponSelect" readonly>
+    <input type="text" name="couponId" autocomplete="off" value="{{d.couponId}}" class="layui-input couponId febs-hide" readonly>
+</script>
 <script data-th-inline="javascript" type="text/javascript">
-    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'laydate'], function () {
+    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'laydate', 'table'], function () {
         var $ = layui.jquery,
             febs = layui.febs,
             form = layui.form,
+            table = layui.table,
             laydate = layui.laydate,
+            unAliveCouponItemsData = [],
             vipSetting = [[${vipSetting}]],
             validate = layui.validate,
             $view = $('#vip-setting');
 
         form.verify(validate);
 
-        initVipSettingValue();
 
         form.render();
 
@@ -75,19 +81,165 @@
             ,format: 'MM-dd'
         });
 
+        table.render({
+            elem: '#unAliveCouponItem'
+            ,toolbar:"#toolbar"
+            ,cols: [[ //表头
+                {type: 'checkbox'}
+                , {field: 'day', title: '失活天数', edit:'text', width:250}
+                ,{templet: '#detailsEvent', title: '优惠券', width:350}
+            ]]
+            ,data: []
+        });
+
+        table.on('toolbar(unAliveCouponItem)', function(obj){
+            var data = obj.data;
+
+            if(obj.event === 'delCoupon'){
+                var hasData = table.cache['unAliveCouponItem'];
+                var checkData = table.checkStatus('unAliveCouponItem').data;
+
+                if (checkData.length <= 0) {
+                    febs.alert.warn('请选择删除数据');
+                    return;
+                }
+
+                for (let i = 0; i < checkData.length; i++) {
+                    var delData = checkData[i];
+                    for (let j = 0; j < hasData.length; j++) {
+                        if (hasData[j].index == delData.index) {
+                            hasData.splice(j, 1);
+                            break;
+                        }
+                    }
+                }
+
+                for (let i = 0; i < hasData.length; i++) {
+                    hasData[i].index = i + 1;
+                }
+
+                unAliveCouponItemsData=hasData;
+                reloadTable(hasData);
+            }
+
+            if(obj.event === 'addCoupon'){
+                var addData = {};
+                addTableDate(addData);
+            }
+        });
+
+        form.on('submit(vip-setting-form-submit)', function (data) {
+            data.field.items = unAliveCouponItemsData;
+            $.ajax({
+                'url':ctx + 'admin/vip/config/vipSetting',
+                'type':'post',
+                'dataType':'json',
+                'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式
+                'traditional': true,//ajax传递数组必须添加属性
+                'data':JSON.stringify(data.field),
+                'success':function (data) {
+                    if(data.code==200){
+                        febs.alert.success("设置成功");
+                    }else{
+                        febs.alert.warn(data.message);
+                    }
+                },
+                'error':function () {
+                    febs.alert.warn('服务器繁忙');
+                }
+            })
+            window.location.reload();
+            return false;
+        });
+
+        table.on('edit(unAliveCouponItem)', function(obj){
+            var value = obj.value //得到修改后的值
+                ,data = obj.data //得到所在行所有键值
+                ,field = obj.field; //得到字段
+
+            for (let i = 0; i < unAliveCouponItemsData.length; i++) {
+                if (unAliveCouponItemsData[i].index == data.index) {
+                    unAliveCouponItemsData[i] = data;
+                }
+            }
+        });
+
+        function addTableDate(data) {
+            var hasData = table.cache['unAliveCouponItem'];
+
+            data.index = hasData.length + 1;
+            data.couponName = ''
+            data.couponId = ''
+            data.day = ''
+            unAliveCouponItemsData.push(data);
+
+            reloadTable(unAliveCouponItemsData);
+            return data.index;
+        }
+
+        function reloadTable(data) {
+            table.reload('unAliveCouponItem', {
+                data : data
+            });
+
+            listenerCouponSelect();
+        }
+
+        function listenerCouponSelect() {
+            $(".couponSelect").each(function(index, elem) {
+                var dataIndex = $(this).attr('data-index');
+
+                $(this).off('click')
+                $(this).on('click', function() {
+                    febs.modal.open('选择优惠券', 'modules/vip/config/couponSelect/' + dataIndex, {
+                        btn: ['提交', '取消'],
+                        yes: function (index, layero) {
+                            $('#vip-coupon-select').find('#submit').trigger('click');
+                            layer.close(index);
+                        },
+                        btn2: function () {
+                        }
+                    });
+                })
+            });
+        }
+
+        window.setCouponSelect = function(tableIndex, data) {
+            var hasData = table.cache['unAliveCouponItem'];
+
+            for(var i = 0; i<hasData.length; i++) {
+                if (tableIndex == hasData[i].index) {
+                    hasData[i].couponId = data.couponId;
+                    hasData[i].couponName = data.couponName
+                }
+            }
+
+            unAliveCouponItemsData = hasData;
+            $(".couponSelect").each(function(index, elem) {
+                var dataIndex = $(this).attr('data-index');
+                if (dataIndex == tableIndex) {
+                    $(this).val(data.couponName);
+                    $(this).next().val(data.couponId);
+                }
+            });
+        }
+
+
+        initVipSettingValue();
         function initVipSettingValue() {
             form.val("vip-setting-form", {
                 "vipDate": vipSetting.vipDate,
             });
-        }
 
-        form.on('submit(vip-setting-form-submit)', function (data) {
-            console.log(data);
-            febs.post(ctx + 'admin/vip/config/vipSetting', data.field, function (res) {
-                febs.alert.success('设置成功');
-            });
-            window.location.reload();
-            return false;
-        });
+            var details = vipSetting.items;
+            if (details) {
+                for(var i = 0; i < details.length; i++) {
+                    details[i].index = i + 1;
+                }
+
+                unAliveCouponItemsData = details;
+                reloadTable(details);
+            }
+        }
     });
 </script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/vip/vipBenefits-list.html b/src/main/resources/templates/febs/views/modules/vip/vipBenefits-list.html
index 1265c40..aeec71e 100644
--- a/src/main/resources/templates/febs/views/modules/vip/vipBenefits-list.html
+++ b/src/main/resources/templates/febs/views/modules/vip/vipBenefits-list.html
@@ -125,7 +125,7 @@
                     {
                         field: 'icon', title: 'ICON',
                         templet: function (d) {
-                            return '';
+                            return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.icon+'" alt=""></a>';
                         }, minWidth: 150, align: 'center'
                     },
                     {field: 'remark', title: '备注', minWidth: 120, align: 'center'},

--
Gitblit v1.9.1