fix
Hentua
2024-01-23 c097546cbcf46c75234768866af894e59d987bd4
fix
6 files modified
156 ■■■■ changed files
src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipConfigController.java 17 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/entity/MallVipConfig.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/IMallVipConfigService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipConfigServiceImpl.java 37 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/vip/vipConfig-add.html 68 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/vip/vipConfig-list.html 27 ●●●● patch | view | raw | blame | history
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("操作成功");
    }
}
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;
}
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);
}
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);
    }
}
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;
        });
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'
                    }
                ]]