KKSU
2025-01-10 6f36eac9e93e6268374f4fde2fcd9a43f8bf6655
feat(mall): 添加客服设置功能

- 在 CommonService 中增加客服设置相关的数据字典初始化
- 新增 kefu.html 模板文件,实现客服设置页面的展示和功能
- 在 ViewSystemController 中添加 kefu 方法,映射到客服设置页面
1 files added
2 files modified
119 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java 17 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/kefu.html 97 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -119,4 +119,9 @@
    public String vipCenterSetting() {
        return FebsUtil.view("modules/system/vipCenterSetting");
    }
    @GetMapping("kefu")
    public String kefu() {
        return FebsUtil.view("modules/system/kefu");
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.mall.mapper.AppVersionMapper;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.service.ICommonService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.best.javaSdk.Client;
@@ -53,6 +54,22 @@
    @Override
    public List<DataDictionaryCustom> findDataDicByType(String type) {
        List<DataDictionaryCustom> dataDictionaryCustoms = dataDictionaryCustomMapper.selectDicByType(type);
        if(type.equals("KEFU_SET")){
            if(CollUtil.isEmpty(dataDictionaryCustoms)){
                DataDictionaryCustom dataDictionaryCustom = new DataDictionaryCustom();
                dataDictionaryCustom.setType(type);
                dataDictionaryCustom.setCode("WEIXIN");
                dataDictionaryCustom.setDescription("微信客服");
                dataDictionaryCustomMapper.insert(dataDictionaryCustom);
                DataDictionaryCustom dataDictionaryCustom2 = new DataDictionaryCustom();
                dataDictionaryCustom2.setType(type);
                dataDictionaryCustom2.setCode("WHATSAPP");
                dataDictionaryCustom2.setDescription("WhatsApp客服");
                dataDictionaryCustomMapper.insert(dataDictionaryCustom2);
            }
        }
        return dataDictionaryCustomMapper.selectDicByType(type);
    }
src/main/resources/templates/febs/views/modules/system/kefu.html
New file
@@ -0,0 +1,97 @@
<div class="layui-fluid layui-anim febs-anim" id="kefu-setting" lay-title="客服">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="kefu-setting-form">
            <div class="layui-card">
                <div class="layui-card-body flex" id="cardBody">
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal save-btn" lay-submit="" lay-filter="kefu-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;
    }
    .flex{
        display: flex;
        flex-wrap: wrap;
    }
    .save-btn{
        display: block;
        margin: 0 auto;
    }
    .layui-upload-list{
        height: 200px;
    }
</style>
<script type="text/html" id="kefuOperate">
    {{#  layui.each(d, function(index, item){ }}
    <div class="layui-form-item">
        <label class="layui-form-label febs-form-item-require">{{item.description}}:</label>
        <input type="text" lay-verify="required" name="{{item.code}}"
               autoComplete="off" value="{{item.value}}" class="layui-input">
    </div>
    {{# }) }}
</script>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'laytpl', 'upload'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            validate = layui.validate
            , templateHtml = kefuOperate.innerHTML
            , $cardBody = $("#cardBody")
            , laytpl = layui.laytpl
            , upload = layui.upload
            , $view = $('#kefu-setting');
        form.verify(validate);
        form.render();
        dicDataReq("KEFU_SET");
        function dicDataReq(type) {
            $cardBody.empty();
            $.get(ctx + 'admin/common/findDicByType/' + type, function (r) {
                if (r.code === 200) {
                    var data = r.data;
                    laytpl(templateHtml).render(data, function(html) {
                        $cardBody.append(html);
                    })
                }
            });
        }
        form.on('submit(kefu-setting-form-submit)', function (data) {
            $.ajax({
                'url':ctx + 'admin/system/bonusSystemSetting',
                'type':'post',
                'dataType':'json',
                'headers' : {'Content-Type' : 'application/json;charset=utf-8'},
                'traditional': true,
                'data':JSON.stringify(data.field),
                'success':function (data) {
                    if (data.code == 200) {
                        febs.alert.success(data.message);
                    }
                },
                'error':function () {
                    febs.alert.warn('服务器繁忙');
                }
            })
            return false;
        });
    });
</script>