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/controller/AdminSystemController.java | 107 ++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 84 insertions(+), 23 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 bef7b04..6e9323a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
@@ -11,6 +12,7 @@
import cc.mrbird.febs.pay.model.HeaderDto;
import cc.mrbird.febs.pay.service.WxFaPiaoService;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
@@ -29,6 +31,8 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.security.KeyPair;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -57,6 +61,68 @@
public FebsResponse cashOutSetting(CashOutSettingDto cashOutSettingDto) {
commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置");
return new FebsResponse().success();
+ }
+
+ @PostMapping(value = "/lwPayConfig")
+ @ControllerEndpoint(operation = "保存LWPAY配置")
+ public FebsResponse lwPayConfig(LwPayConfigDto dto) {
+ if (StrUtil.isBlank(dto.getMemberId())) {
+ return new FebsResponse().fail().message("商户号不能为空");
+ }
+ if (StrUtil.isBlank(dto.getSecretKey())) {
+ return new FebsResponse().fail().message("签名密钥不能为空");
+ }
+ if (StrUtil.isBlank(dto.getNotifyUrl())) {
+ return new FebsResponse().fail().message("回调地址不能为空");
+ }
+ if (StrUtil.isBlank(dto.getReturnUrl())) {
+ return new FebsResponse().fail().message("跳转地址不能为空");
+ }
+ commonService.addDataDic("LWPAY_CONFIG", "MEMBER_ID", dto.getMemberId(), "LWPAY商户号", false);
+ commonService.addDataDic("LWPAY_CONFIG", "SECRET_KEY", dto.getSecretKey(), "LWPAY签名密钥", false);
+ commonService.addDataDic("LWPAY_CONFIG", "NOTIFY_URL", dto.getNotifyUrl(), "LWPAY异步回调地址", false);
+ commonService.addDataDic("LWPAY_CONFIG", "RETURN_URL", dto.getReturnUrl(), "LWPAY支付完成跳转地址", false);
+ return new FebsResponse().success().message("保存成功");
+ }
+
+ @PostMapping(value = "/tokenviewConfig")
+ @ControllerEndpoint(operation = "保存Tokenview配置")
+ public FebsResponse tokenviewConfig(TokenviewConfigDto dto) {
+ if (StrUtil.isBlank(dto.getWebhookSecret())) {
+ return new FebsResponse().fail().message("签名密钥不能为空");
+ }
+ if (StrUtil.isBlank(dto.getTrc20UsdtAddress())) {
+ return new FebsResponse().fail().message("收款地址不能为空");
+ }
+ commonService.addDataDic("TOKENVIEW_CONFIG", "WEBHOOK_SECRET", dto.getWebhookSecret(), "Tokenview Webhook签名密钥", false);
+ commonService.addDataDic("TOKENVIEW_CONFIG", "TRC20_USDT_ADDRESS", dto.getTrc20UsdtAddress(), "TRC20 USDT收款地址", false);
+ 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")
@@ -136,39 +202,34 @@
DataDictionaryEnum.FP_CALLBACK_URL.getCode(),
faPiaoDto.getCallbackUrl()
);
- KeyPair privateKey = wxFaPiaoService.getPrivateKey();
HeaderDto headerDto = new HeaderDto();
- headerDto.setCallback_url(faPiaoDto.getCallbackUrl());
+ headerDto.setCallback_url("https://api.blnka.cn/api/xcxPay/fapiaoCallBack");
headerDto.setShow_fapiao_cell(false);
String parseObj = JSONUtil.parseObj(headerDto).toString();
String baseUrl = "https://api.mch.weixin.qq.com";
String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config";
- String postStr = wxFaPiaoService.createAuthorization(
- "POST",
- canonicalUrl,
- parseObj,
- privateKey
- );
- // 创建httppost
+ String postStr = null;
try {
- HttpClient httpClient = new HttpClient();
- PostMethod post = new PostMethod(baseUrl+canonicalUrl);
- post.setRequestHeader("Accept", "application/json");
- post.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36");
- post.setRequestHeader("Content-Type", "application/json");
- post.setRequestHeader("Connection", "keep-alive");
- post.setRequestHeader("Authorization", "WECHATPAY2-SHA256-RSA2048 "+postStr);
- RequestEntity entity = new StringRequestEntity(parseObj, "text/html", "utf-8");
- post.setRequestEntity(entity);
- httpClient.executeMethod(post);
- String responseBodyAsString = post.getResponseBodyAsString();
- cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString);
- System.out.println(maps);
+
+ PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3();
+ postStr = wxFaPiaoService.createAuthorization(
+ "PATCH",
+ baseUrl+canonicalUrl,
+ parseObj,
+ privateKey
+ );
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
- return new FebsResponse().success().message("操作成功");
+ String token = AppContants.FP_TOKEN_HEADER_TYPE+postStr;
+ System.out.println("WECHATPAY2-SHA256-RSA2048 "+postStr);
+ String s = wxFaPiaoService.sendPatch(baseUrl + canonicalUrl, parseObj, token);
+ log.info("配置开发选项:"+s);
+
+ return new FebsResponse().success().message(s);
}
@PostMapping(value = "/agentDetail")
--
Gitblit v1.9.1