From c313a253b1fcdc75b6be5db575fc2b29fb407021 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 15 四月 2026 20:05:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java |   89 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java b/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java
new file mode 100644
index 0000000..5d569d9
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java
@@ -0,0 +1,89 @@
+package com.doumee.biz.system.impl;
+
+import com.doumee.biz.system.OperationConfigBiz;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.dto.OperationConfigDTO;
+import com.doumee.dao.system.model.SystemDictData;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 杩愯惀閰嶇疆涓氬姟瀹炵幇
+ * @author rk
+ * @date 2026/04/13
+ */
+@Service
+public class OperationConfigBizImpl implements OperationConfigBiz {
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Override
+    public OperationConfigDTO getConfig() {
+        OperationConfigDTO dto = new OperationConfigDTO();
+        dto.setDriverDailyCancelLimit(getValue(Constants.OP_DRIVER_DAILY_CANCEL_LIMIT));
+        dto.setUnpickedDiscount(getValue(Constants.OP_UNPICKED_DISCOUNT));
+        dto.setSettlementDate(getValue(Constants.OP_SETTLEMENT_DATE));
+        dto.setUrgentCoefficient(getValue(Constants.OP_URGENT_COEFFICIENT));
+        dto.setAutoCancelTime(getValue(Constants.OP_AUTO_CANCEL_TIME));
+        dto.setInsuranceRate(getValue(Constants.OP_INSURANCE_RATE));
+        dto.setOrderAcceptLimit(getValue(Constants.OP_ORDER_ACCEPT_LIMIT));
+        dto.setAutoConfirmReceipt(getValue(Constants.OP_AUTO_CONFIRM_RECEIPT));
+        return dto;
+    }
+
+    @Override
+    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
+    public void saveConfig(OperationConfigDTO dto) {
+        validate(dto);
+        saveOrUpdate(Constants.OP_DRIVER_DAILY_CANCEL_LIMIT, "鍙告満姣忔棩鍙栨秷娆℃暟", dto.getDriverDailyCancelLimit());
+        saveOrUpdate(Constants.OP_UNPICKED_DISCOUNT, "鏈彇浠舵姌鎵�", dto.getUnpickedDiscount());
+        saveOrUpdate(Constants.OP_SETTLEMENT_DATE, "璁㈠崟缁撶畻鏃ユ湡", dto.getSettlementDate());
+        saveOrUpdate(Constants.OP_URGENT_COEFFICIENT, "鍔犳�ョ郴鏁�", dto.getUrgentCoefficient());
+        saveOrUpdate(Constants.OP_AUTO_CANCEL_TIME, "瓒呮椂鏈敮浠樿嚜鍔ㄥ彇娑堟椂闂�", dto.getAutoCancelTime());
+        saveOrUpdate(Constants.OP_INSURANCE_RATE, "淇濊垂姣旂巼", dto.getInsuranceRate());
+        saveOrUpdate(Constants.OP_ORDER_ACCEPT_LIMIT, "鎺ュ崟鏁伴噺", dto.getOrderAcceptLimit());
+        saveOrUpdate(Constants.OP_AUTO_CONFIRM_RECEIPT, "鑷姩纭鏀惰揣", dto.getAutoConfirmReceipt());
+    }
+
+    private String getValue(String label) {
+        SystemDictData data = systemDictDataBiz.queryByCode(Constants.OPERATION_CONFIG, label);
+        return data != null ? data.getCode() : null;
+    }
+
+    private void saveOrUpdate(String label, String name, String value) {
+        SystemDictData existing = systemDictDataBiz.queryByCode(Constants.OPERATION_CONFIG, label);
+        if (existing != null && existing.getId() != null) {
+            existing.setCode(value);
+            systemDictDataBiz.updateById(existing);
+        } else {
+            SystemDictData newData = new SystemDictData();
+            newData.setDictId(105);
+            newData.setLabel(label);
+            newData.setRemark(name);
+            newData.setCode(value);
+            newData.setDisabled(false);
+            newData.setDeleted(false);
+            systemDictDataBiz.create(newData);
+        }
+    }
+
+    private void validate(OperationConfigDTO dto) {
+        if (dto == null
+                || StringUtils.isBlank(dto.getDriverDailyCancelLimit())
+                || StringUtils.isBlank(dto.getUnpickedDiscount())
+                || StringUtils.isBlank(dto.getSettlementDate())
+                || StringUtils.isBlank(dto.getUrgentCoefficient())
+                || StringUtils.isBlank(dto.getAutoCancelTime())
+                || StringUtils.isBlank(dto.getInsuranceRate())
+                || StringUtils.isBlank(dto.getOrderAcceptLimit())
+                || StringUtils.isBlank(dto.getAutoConfirmReceipt())) {
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎵�鏈夐厤缃」鍧囦负蹇呭~");
+        }
+    }
+}

--
Gitblit v1.9.3