Administrator
7 days ago 7b2401c03d30dc5c7b3d2af679d52843ffcd39bb
feat(system): 添加售后服务配置功能

- 在 AdminSystemController 中新增 salesService 接口用于保存售后服务配置
- 添加 SalesServiceDto 数据传输对象定义
- 在 ViewSystemController 中新增销售服务页面路由
- 创建销售服务配置前端页面,包含 WhatsApp、电话、邮箱等表单字段
- 实现表单验证和数据保存到数据字典功能
- 添加页面样式和 JavaScript 交互逻辑
2 files added
2 files modified
161 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java 23 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/salesService.html 94 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -99,6 +99,32 @@
        return new FebsResponse().success().message("保存成功");
    }
    @PostMapping(value = "/salesService")
    @ControllerEndpoint(operation = "保存售后服务配置")
    public FebsResponse salesService(SalesServiceDto dto) {
        if (StrUtil.isBlank(dto.getWhatsApp())) {
            return new FebsResponse().fail().message("WhatsApp不能为空");
        }
        if (StrUtil.isBlank(dto.getPhone())) {
            return new FebsResponse().fail().message("联系电话不能为空");
        }
        if (StrUtil.isBlank(dto.getEmail())) {
            return new FebsResponse().fail().message("联系邮箱不能为空");
        }
        if (StrUtil.isBlank(dto.getAddress())) {
            return new FebsResponse().fail().message("联系地址不能为空");
        }
        if (StrUtil.isBlank(dto.getWorkingHours())) {
            return new FebsResponse().fail().message("工作时间不能为空");
        }
        commonService.addDataDic("SALES_SERVICE", "WHATSAPP", dto.getWhatsApp(), "WhatsApp号码", false);
        commonService.addDataDic("SALES_SERVICE", "PHONE", dto.getPhone(), "联系电话", false);
        commonService.addDataDic("SALES_SERVICE", "EMAIL", dto.getEmail(), "联系邮箱", false);
        commonService.addDataDic("SALES_SERVICE", "ADDRESS", dto.getAddress(), "联系地址", false);
        commonService.addDataDic("SALES_SERVICE", "WORKINGHOURS", dto.getWorkingHours(), "工作时间", false);
        return new FebsResponse().success().message("保存成功");
    }
    @PostMapping(value = "/agentAmountSetSetting")
    public FebsResponse agentAmountSetSetting(AdminAgentAmountDto adminAgentAmountDto) {
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -158,4 +158,22 @@
        model.addAttribute("tokenviewConfig", dto);
        return FebsUtil.view("modules/system/tokenviewConfig");
    }
    @GetMapping("salesService")
    @RequiresPermissions("salesService:update")
    public String salesService(Model model) {
        SalesServiceDto dto = new SalesServiceDto();
        DataDictionaryCustom whatsApp = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("SALES_SERVICE", "WHATSAPP");
        DataDictionaryCustom phone = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("SALES_SERVICE", "PHONE");
        DataDictionaryCustom email = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("SALES_SERVICE", "EMAIL");
        DataDictionaryCustom address = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("SALES_SERVICE", "ADDRESS");
        DataDictionaryCustom workingHours = dataDictionaryCustomMapper.selectDicDataByTypeAndCode("SALES_SERVICE", "WORKINGHOURS");
        if (whatsApp != null) dto.setWhatsApp(whatsApp.getValue());
        if (phone != null) dto.setPhone(phone.getValue());
        if (email != null) dto.setEmail(email.getValue());
        if (address != null) dto.setAddress(address.getValue());
        if (workingHours != null) dto.setWorkingHours(workingHours.getValue());
        model.addAttribute("salesService", dto);
        return FebsUtil.view("modules/system/salesService");
    }
}
src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java
New file
@@ -0,0 +1,23 @@
package cc.mrbird.febs.mall.dto;
import lombok.Data;
/**
 * 售后服务配置 DTO
 * 对应 data_dictionary_custom 表 type='SALES_SERVICE' 的多条记录
 *
 * @author auto-generated
 */
@Data
public class SalesServiceDto {
    /** WhatsApp 号码 */
    private String whatsApp;
    /** 联系电话 */
    private String phone;
    /** 联系邮箱 */
    private String email;
    /** 联系地址 */
    private String address;
    /** 工作时间 */
    private String workingHours;
}
src/main/resources/templates/febs/views/modules/system/salesService.html
New file
@@ -0,0 +1,94 @@
<div class="layui-fluid layui-anim febs-anim" id="sales-service" lay-title="售后服务设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="sales-service-form">
            <div class="layui-card">
                <div class="layui-card-header">售后服务信息配置</div>
                <div class="layui-card-body">
                    <div class="layui-form-item">
                        <label class="layui-form-label required">WhatsApp:</label>
                        <div class="layui-input-block">
                            <input type="text" name="whatsApp" data-th-id="${salesService.whatsApp}"
                                   lay-verify="required" autocomplete="off" class="layui-input" placeholder="WhatsApp 号码">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label required">联系电话:</label>
                        <div class="layui-input-block">
                            <input type="text" name="phone" data-th-id="${salesService.phone}"
                                   lay-verify="required" autocomplete="off" class="layui-input" placeholder="联系电话">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label required">联系邮箱:</label>
                        <div class="layui-input-block">
                            <input type="text" name="email" data-th-id="${salesService.email}"
                                   lay-verify="required|email" autocomplete="off" class="layui-input" placeholder="联系邮箱">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label required">联系地址:</label>
                        <div class="layui-input-block">
                            <input type="text" name="address" data-th-id="${salesService.address}"
                                   lay-verify="required" autocomplete="off" class="layui-input" placeholder="联系地址">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label required">工作时间:</label>
                        <div class="layui-input-block">
                            <input type="text" name="workingHours" data-th-id="${salesService.workingHours}"
                                   lay-verify="required" autocomplete="off" class="layui-input" placeholder="工作时间,如:Mon-Fri 9:00-18:00">
                        </div>
                    </div>
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="sales-service-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'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            salesService = [[${salesService}]],
            validate = layui.validate,
            $view = $('#sales-service');
        form.verify(validate);
        if (salesService) {
            form.val("sales-service-form", {
                "whatsApp": salesService.whatsApp,
                "phone": salesService.phone,
                "email": salesService.email,
                "address": salesService.address,
                "workingHours": salesService.workingHours
            });
        }
        form.render();
        form.on('submit(sales-service-form-submit)', function (data) {
            febs.post(ctx + 'admin/system/salesService', data.field, function (res) {
                febs.alert.success('保存成功');
            });
            return false;
        });
    });
</script>