From c097546cbcf46c75234768866af894e59d987bd4 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Tue, 23 Jan 2024 03:40:52 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java |   17 ++++-
 src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html       |   27 ++++++--
 src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java   |   37 ++++++++++++
 src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java                    |    3 +
 src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java           |    4 +
 src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html        |   68 ++++++++++++++++------
 6 files changed, 126 insertions(+), 30 deletions(-)

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 b2e6bbe..8e22c69 100644
--- a/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java
+++ b/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java
@@ -8,9 +8,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 会员配置接口类
@@ -28,4 +26,17 @@
     public FebsResponse list(QueryRequest request) {
         return new FebsResponse().success().data(getDataTable(mallVipConfigService.vipConfigList(request)));
     }
+
+
+    @PostMapping(value = "/add")
+    public FebsResponse add(@RequestBody MallVipConfig config) {
+        mallVipConfigService.addVipConfig(config);
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @GetMapping(value = "/del/{id}")
+    public FebsResponse del(@PathVariable("id") Long id) {
+        mallVipConfigService.delVipConfig(id);
+        return new FebsResponse().success().message("操作成功");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java b/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java
index 9c64424..36d3eb6 100644
--- a/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java
+++ b/src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java
@@ -58,4 +58,7 @@
 
     @TableField(exist = false)
     private List<MallVipBenefits> benefits;
+
+    @TableField(exist = false)
+    private String benefitsIds;
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java b/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java
index 5ca6e3b..38dfee9 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java
@@ -12,4 +12,8 @@
     IPage<MallVipConfig> vipConfigList(QueryRequest request);
 
     List<MallVipConfig> findConfigList();
+
+    void addVipConfig(MallVipConfig config);
+
+    void delVipConfig(Long id);
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java
index e35e9ad..d40e769 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java
@@ -2,15 +2,21 @@
 
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.vip.entity.MallVipConfig;
+import cc.mrbird.febs.vip.entity.MallVipConfigBenefits;
+import cc.mrbird.febs.vip.mapper.MallVipConfigBenefitsMapper;
 import cc.mrbird.febs.vip.mapper.MallVipConfigMapper;
+import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService;
 import cc.mrbird.febs.vip.service.IMallVipConfigService;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.util.ArrayList;
 import java.util.List;
@@ -20,9 +26,11 @@
 @RequiredArgsConstructor
 public class MallVipConfigServiceImpl extends ServiceImpl<MallVipConfigMapper, MallVipConfig> implements IMallVipConfigService {
 
+    private final IMallVipConfigBenefitsService mallVipConfigBenefitsService;
+
     @Override
     public IPage<MallVipConfig> vipConfigList(QueryRequest request) {
-        Page<MallVipConfig> page = new Page<>(request.getPageNum(), request.getPageNum());
+        Page<MallVipConfig> page = new Page<>(request.getPageNum(), request.getPageSize());
         return this.baseMapper.findVipConfigListInPage(page);
     }
 
@@ -30,4 +38,31 @@
     public List<MallVipConfig> findConfigList() {
         return this.baseMapper.selectVipConfigList();
     }
+
+    @Override
+    @Transactional
+    public void addVipConfig(MallVipConfig config) {
+        this.baseMapper.insert(config);
+
+        List<MallVipConfigBenefits> configBenefitsList = new ArrayList<>();
+        List<String> benefitsIds = StrUtil.split(config.getBenefitsIds(), ',');
+        benefitsIds.forEach(item -> {
+            MallVipConfigBenefits configBenefits = new MallVipConfigBenefits();
+            configBenefits.setConfigId(config.getId());
+            configBenefits.setBenefitsId(Long.parseLong(item));
+            configBenefitsList.add(configBenefits);
+        });
+
+        mallVipConfigBenefitsService.saveBatch(configBenefitsList);
+    }
+
+    @Override
+    @Transactional
+    public void delVipConfig(Long id) {
+        this.baseMapper.deleteById(id);
+
+        LambdaQueryWrapper<MallVipConfigBenefits> delQuery = new LambdaQueryWrapper<>();
+        delQuery.eq(MallVipConfigBenefits::getConfigId, id);
+        this.mallVipConfigBenefitsService.remove(delQuery);
+    }
 }
diff --git a/src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html b/src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html
index 9b04a5c..3f3e1ef 100644
--- a/src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html
+++ b/src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html
@@ -89,12 +89,12 @@
             </div>
 
             <div class="layui-col-lg6 febs-hide" id="targetShopping">
-                <div class="layui-input-inline">
+                <div class="layui-input-inline layui-col-lg2">
                     <input type="text" name="times" autocomplete="off" class="layui-input" >
                 </div>
                 <div class="layui-form-mid">月内,消费</div>
-                <div class="layui-input-inline">
-                    <input type="text" name="times" autocomplete="off" class="layui-input" >
+                <div class="layui-input-inline layui-col-lg2">
+                    <input type="text" name="amount" autocomplete="off" class="layui-input" >
                 </div>
                 <div class="layui-form-mid">金额</div>
             </div>
@@ -103,9 +103,9 @@
         <div class="layui-form-item">
             <label class="layui-form-label febs-form-item-require">选择会员权益:</label>
             <div class="layui-input-block">
-                <select name="benefitsIds" class="vip-benefits-list" id="vip-benefits-list">
-                    <option value="">请选择</option>
-                </select>
+<!--                <select name="benefitsIds" class="vip-benefits-list" id="vip-benefits-list">-->
+<!--                </select>-->
+                <div id="vip-benefits-list"></div>
             </div>
         </div>
 
@@ -116,7 +116,7 @@
 </div>
 
 <script data-th-inline="javascript">
-    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload'], function () {
+    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload', 'xmSelect'], function () {
         var $ = layui.$,
             febs = layui.febs,
             layer = layui.layer,
@@ -128,15 +128,30 @@
             $view = $('#vipConfig-add'),
             validate = layui.validate;
 
+        var benefitsList = xmSelect.render({
+            el: '#vip-benefits-list',
+            prop: {
+                name: 'name',
+                value: 'id',
+            },
+            data: []
+        })
+
+
         //(下拉框)
         $.get(ctx + 'admin/vip/benefits/findAllBenefits', function (data) {
             var arr = data.data;
-            for (let i = 0; i < arr.length; i++) {
-                $(".vip-benefits-list").append("<option value='" + arr[i].id + "'>" + arr[i].name + "</option>");
-            }
-            layui.use('form', function () {
-                var form = layui.form;
-                form.render();
+            // for (let i = 0; i < arr.length; i++) {
+            //     $(".vip-benefits-list").append("<option value='" + arr[i].id + "'>" + arr[i].name + "</option>");
+            // }
+            // layui.use('form', function () {
+            //     var form = layui.form;
+            //     form.render();
+            // });
+
+            benefitsList.update({
+                data : data.data,
+                autoRow: true,
             });
         });
 
@@ -144,11 +159,28 @@
 
         formSelects.render();
         form.on('submit(vipConfig-add-form-submit)', function (data) {
-            febs.post(ctx + 'admin/news/addNewsInfo', data.field, function () {
-                layer.closeAll();
-                febs.alert.success('操作成功');
-                $('#febs-newInfo').find('#reset').click();
-            });
+            data.field.benefitsIds = benefitsList.getValue('valueStr');
+            $.ajax({
+                'url':ctx + 'admin/vip/config/add',
+                '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){
+                        layer.closeAll();
+                        febs.alert.success(data.message);
+                        $('#febs-vip-level').find('#reset').click();
+                    }else{
+                        febs.alert.warn(data.message);
+                    }
+                },
+                'error':function () {
+                    febs.alert.warn('服务器繁忙');
+                }
+            })
+            return false;
             return false;
         });
 
diff --git a/src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html b/src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html
index 9c73002..871a4bc 100644
--- a/src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html
+++ b/src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html
@@ -40,6 +40,16 @@
     <a lay-event="edit" shiro:hasPermission="vipConfig:update"><i
             class="layui-icon febs-edit-area febs-blue">&#xe7a5;</i></a>
 </script>
+
+<script type="text/html" id="validTypeFormat">
+    {{# if(d.validType == "day") { }}
+    <span>日</span>
+    {{# } else if(d.validType == "month") { }}
+    <span>月</span>
+    {{# } else { }}
+    <span>年</span>
+    {{# } }}
+</script>
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
     // 引入组件并初始化
@@ -76,15 +86,15 @@
                     }
                 });
             }
-            if (layEvent === 'delBenefits') {
+            if (layEvent === 'delVipConfig') {
                 febs.modal.confirm('删除', '确认删除?', function () {
-                    delBenefits(data.id);
+                    delVipConfig(data.id);
                 });
             }
         });
 
-        function delBenefits(id) {
-            febs.get(ctx + 'admin/vip/benefits/delBenefits/' + id, null, function () {
+        function delVipConfig(id) {
+            febs.get(ctx + 'admin/vip/config/del/' + id, null, function () {
                 febs.alert.success('操作成功');
                 $query.click();
             });
@@ -123,19 +133,20 @@
                 cols: [[
                     {field: 'name', title: '会员名称', minWidth: 120, align: 'center'},
                     {
-                        field: 'icon', title: '主图',
+                        field: 'thumb', title: '主图',
                         templet: function (d) {
-                            return '';
+                            return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.thumb+'" alt=""></a>';
                         }, minWidth: 150, align: 'center'
                     },
                     {field: 'level', title: '等级', minWidth: 120, align: 'center'},
-                    {field: 'validType', title: '有效类型', minWidth: 120, align: 'center'},
+                    {field: 'validTime', title: '有效时长', minWidth: 120, align: 'center'},
+                    {templet:"#validTypeFormat",title: '有效类型', minWidth: 120, align: 'center'},
                     {field: 'type', title: '成为会员条件', minWidth: 120, align: 'center'},
                     {
                         title: '操作',
                         templet: function (d) {
                             return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="benefitsUpdate" shiro:hasPermission="user:update">编辑</button>'
-                                + '<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delBenefits" shiro:hasPermission="user:update">删除</button>'
+                                + '<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delVipConfig" shiro:hasPermission="user:update">删除</button>'
                         }, minWidth: 300, align: 'center'
                     }
                 ]]

--
Gitblit v1.9.1