From 7b2401c03d30dc5c7b3d2af679d52843ffcd39bb Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Jun 2026 22:34:21 +0800
Subject: [PATCH] feat(system): 添加售后服务配置功能
---
src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java | 23 +++++++
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 26 ++++++++
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 18 ++++++
src/main/resources/templates/febs/views/modules/system/salesService.html | 94 +++++++++++++++++++++++++++++++
4 files changed, 161 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
index 6059db9..6e9323a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/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(
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index 481aff6..38e29b6 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/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");
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java b/src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java
new file mode 100644
index 0000000..1826c40
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/SalesServiceDto.java
@@ -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;
+}
diff --git a/src/main/resources/templates/febs/views/modules/system/salesService.html b/src/main/resources/templates/febs/views/modules/system/salesService.html
new file mode 100644
index 0000000..a65f95c
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/salesService.html
@@ -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>
--
Gitblit v1.9.1