From f10b01a8840d0b1f384b54aa81079e15ebda510e Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Fri, 27 Jun 2025 10:23:51 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B8=B8=E7=95=85?= =?UTF-8?q?=E5=85=85=E5=AF=B9=E6=8E=A5=E6=89=A9=E5=B1=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/thirdparty/ChangZhouController.java | 35 +++++++ .../src/main/resources/application-pre.yml | 24 ++--- .../common/NotificationService.java | 2 + .../platform/domain/PayOrderInfo.java | 59 ++++++++++++ .../platform/dto/RetryOrderDTO.java | 20 ++++ .../service/ThirdPartyPlatformService.java | 17 ++++ .../impl/ChangZhouPlatformServiceImpl.java | 94 +++++++++++++++++++ 7 files changed, 239 insertions(+), 12 deletions(-) create mode 100644 jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/PayOrderInfo.java create mode 100644 jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/RetryOrderDTO.java diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ChangZhouController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ChangZhouController.java index 2d62bac9c..221849401 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ChangZhouController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/ChangZhouController.java @@ -10,6 +10,7 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.pile.dto.*; import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.common.CommonResult; +import com.jsowell.thirdparty.platform.dto.RetryOrderDTO; import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -468,4 +469,38 @@ public class ChangZhouController extends ThirdPartyBaseController { return response; } + /** + * 获取充电订单信息 + * retry_notification_order_info + * @param request + * @param dto + * @return + */ + @PostMapping("/v1/retry_notification_order_info") + public CommonResult retry_notification_order_info(HttpServletRequest request , @RequestBody CommonParamsDTO dto) { + logger.info("{}-获取充电订单信息 params:{}" , platformName , JSON.toJSONString(dto)); + try { + // 校验令牌 + if (!verifyToken(request.getHeader("Authorization"))) { + // 校验失败 + return CommonResult.failed(ThirdPartyReturnCodeEnum.TOKEN_ERROR); + } + // 校验签名 + if (!verifySignature(dto)) { + // 签名错误 + return CommonResult.failed(ThirdPartyReturnCodeEnum.SIGN_ERROR); + } + // 解析入参 + RetryOrderDTO retryOrderDTO = parseParamsDTO(dto , RetryOrderDTO.class); + // 执行逻辑 + Map map = platformLogic.retryNotificationOrderInfo(retryOrderDTO.getStartChargeSeqs()); + logger.info("{}-获取充电订单信息 result:{}" , platformName , map); + return CommonResult.success(0 , "获取充电订单信息成功!" , map.get("Data") , map.get("Sig")); + } catch (Exception e) { + logger.error("{}-获取充电订单信息 error" , platformName , e); + } + return CommonResult.failed("{}-获取充电订单信息发生异常"); + + } + } diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 690bbf530..90f0eed99 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -8,17 +8,17 @@ spring: # redis 配置 redis: # 地址 - host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com -# host: 106.14.94.149 +# host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com + host: 106.14.94.149 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 账号 - username: jsowell - # 密码 - password: js@160829 -# password: js160829 +# username: jsowell +# # 密码 +# password: js@160829 + password: js160829 # 连接超时时间 timeout: 10s lettuce: @@ -38,12 +38,12 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: jsowell - password: js@160829 -# url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: jsowell_pre -# password: Js@160829 +# url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: jsowell +# password: js@160829 + url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: jsowell_pre + password: Js@160829 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java index 0f324720a..6fe108dec 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java @@ -175,6 +175,8 @@ public class NotificationService { platformService.notificationStopChargeResult(orderCode); //推送充换电站用能统计信息 platformService.notificationOperationStatsInfo(stationId); + //推送充电账单信息 + platformService.notificationPayOrderInfo(orderCode); } catch (Exception e) { logger.error("充电订单信息推送error", e); diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/PayOrderInfo.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/PayOrderInfo.java new file mode 100644 index 000000000..9563bc204 --- /dev/null +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/domain/PayOrderInfo.java @@ -0,0 +1,59 @@ +package com.jsowell.thirdparty.platform.domain; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PayOrderInfo { + + /** + * 充电订单号 + */ + @JSONField(name = "StartChargeSeq") + private String startChargeSeq; + + /** + * 总电费(优惠前) 保2 + */ + @JSONField(name = "ElecTotal") + private BigDecimal elecTotal; + + /** + * 总服务费(优惠前) 保2 + */ + @JSONField(name = "ServiceTotal") + private BigDecimal serviceTotal; + + /** + * 累计总金额(优惠前) 保2 + */ + @JSONField(name = "Total") + private BigDecimal total; + + /** + * 总电费(实际支付) + */ + @JSONField(name = "ElecPaid") + private BigDecimal elecPaid; + + /** + * 总服务费(实际支付) + */ + @JSONField(name = "ServicePaid") + private BigDecimal servicePaid; + + /** + * 累计总金额(实际支付) + */ + @JSONField(name = "Paid") + private BigDecimal paid; + +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/RetryOrderDTO.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/RetryOrderDTO.java new file mode 100644 index 000000000..ba01479e3 --- /dev/null +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/RetryOrderDTO.java @@ -0,0 +1,20 @@ +package com.jsowell.thirdparty.platform.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class RetryOrderDTO { + + /** + * 充电订单号 + */ + @JsonProperty(value = "StartChargeSeqs") + private String startChargeSeqs; +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java index bca65c880..5007c4980 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/ThirdPartyPlatformService.java @@ -271,6 +271,15 @@ public interface ThirdPartyPlatformService extends InitializingBean { } + /** + * 获取充电订单信息 + * retry_notification_order_info + */ + default Map retryNotificationOrderInfo(String orderCode) { + throw new UnsupportedOperationException("This method is not yet implemented"); + } + + // =================================================================================== // // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 由对方平台实现此接口,我方平台调用的通知接口 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ // // =================================================================================== // @@ -474,6 +483,14 @@ public interface ThirdPartyPlatformService extends InitializingBean { throw new UnsupportedOperationException("This method is not yet implemented"); } + /** + * 推送充电账单信息 + * notification_pay_order_info + */ + default String notificationPayOrderInfo(String orderCode) { + throw new UnsupportedOperationException("This method is not yet implemented"); + } + // -------------------------------------- 以下是公用方法 --------------------------------------- // /** diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java index 222fe0951..4af81590c 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java @@ -33,6 +33,7 @@ import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo; import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo; import com.jsowell.thirdparty.lianlian.vo.*; import com.jsowell.thirdparty.platform.common.ChargeDetail; +import com.jsowell.thirdparty.platform.domain.PayOrderInfo; import com.jsowell.thirdparty.platform.domain.SupChargeDetails; import com.jsowell.thirdparty.platform.domain.SupStationInfo; import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory; @@ -789,6 +790,99 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { } + /** + * 推送充电账单信息 + * notification_pay_order_info + * @param orderCode + * @return + */ + @Override + public String notificationPayOrderInfo(String orderCode){ + //获取订单信息 + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + if (orderBasicInfo == null) { + return "没有此订单信息"; + } + //获取订单详情信息 + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + + ThirdPartySecretInfoVO thirdPartySecretInfoVO = getChangZhouSecretInfo(); + String operatorId = Constants.OPERATORID_JIANG_SU; + String operatorSecret = thirdPartySecretInfoVO.getTheirOperatorSecret(); + String signSecret = thirdPartySecretInfoVO.getTheirSigSecret(); + String dataSecret = thirdPartySecretInfoVO.getTheirDataSecret(); + String dataSecretIv = thirdPartySecretInfoVO.getTheirDataSecretIv(); + String urlAddress = thirdPartySecretInfoVO.getTheirUrlPrefix(); + + //《***优惠前***》 + //电费 + BigDecimal electricityAmount = orderDetail.getTotalElectricityAmount(); + //服务费 + BigDecimal serviceAmount = orderDetail.getTotalServiceAmount(); + //订单金额 + BigDecimal orderAmount = orderDetail.getTotalOrderAmount(); + + + //《***优惠金额***》 + //优惠电费 + BigDecimal discountElectricityAmount = orderDetail.getDiscountElectricityAmount(); + //优惠服务费 + BigDecimal discountServiceAmount = orderDetail.getDiscountServiceAmount(); + + //《***优惠后***》 + //电费 + BigDecimal afterDiscountElectricityAmount = electricityAmount.subtract(discountElectricityAmount); + //服务费 + BigDecimal afterDiscountServiceAmount = serviceAmount.subtract(discountServiceAmount); + //订单金额 + BigDecimal afterDiscountOrderAmount = orderAmount.subtract(discountElectricityAmount).subtract(discountServiceAmount); + + + PayOrderInfo payOrderInfo = PayOrderInfo.builder() + .startChargeSeq(orderCode) + .elecTotal(electricityAmount) + .serviceTotal(serviceAmount) + .total(orderAmount) + .elecPaid(afterDiscountElectricityAmount) + .servicePaid(afterDiscountServiceAmount) + .paid(afterDiscountOrderAmount) + .build(); + + String url = urlAddress + "notification_pay_order_info"; + + String jsonString = JSON.toJSONString(payOrderInfo); + log.info("请求参数:{}", jsonString); + + String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); + + return result; + } + + + + /** + * 获取充电订单信息 retry_notification_order_info + * @param orderCode + * @return + */ + @Override + public Map retryNotificationOrderInfo(String orderCode) { + Map map = new LinkedHashMap<>(); + ThirdPartySecretInfoVO thirdPartySecretInfoVO = getChangZhouSecretInfo(); + int Success = 0; + //查询订单信息 + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + if (orderBasicInfo == null) { + Success = 1; + } + map.put("Success", Success); + return ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO); + + } + + + /** * 转换时段充电明细 * From 5eb115098ad9b7f857735907a1d0fde054ff8fb0 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Fri, 27 Jun 2025 16:00:24 +0800 Subject: [PATCH 02/14] update --- .../common/enums/thirdparty/ThirdPlatformTypeEnum.java | 2 +- .../service/impl/ChangZhouPlatformServiceImpl.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/thirdparty/ThirdPlatformTypeEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/thirdparty/ThirdPlatformTypeEnum.java index 5432c6d2f..37527af5f 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/thirdparty/ThirdPlatformTypeEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/thirdparty/ThirdPlatformTypeEnum.java @@ -36,7 +36,7 @@ public enum ThirdPlatformTypeEnum { WEI_WANG_XIN_DIAN("23", "微网新电", "MA005DBW1"), HU_ZHOU_PLATFORM("24", "湖州市监管平台", "MA27U00HZ"), CHANG_ZHOU_PLATFORM("25", "新运常畅充", "0585PCW57"), - SI_CHUAN_PLATFORM("26", "四川省平台", ""), + SI_CHUAN_PLATFORM("26", "四川省平台", "MA01H3BQ2"), JI_LIN_PLATFORM("27", "吉林省平台", ""), ; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java index 4af81590c..46112a2a2 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java @@ -825,9 +825,12 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { //《***优惠金额***》 //优惠电费 - BigDecimal discountElectricityAmount = orderDetail.getDiscountElectricityAmount(); + BigDecimal discountElectricityAmount = + orderDetail.getDiscountElectricityAmount() == null ? BigDecimal.ZERO:orderDetail.getDiscountElectricityAmount(); //优惠服务费 - BigDecimal discountServiceAmount = orderDetail.getDiscountServiceAmount(); + BigDecimal discountServiceAmount = + orderDetail.getDiscountServiceAmount() == null ? BigDecimal.ZERO:orderDetail.getDiscountServiceAmount(); + //《***优惠后***》 //电费 From 41d255b201bf09fb6fdf53b17ac7bb41732cc03b Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Fri, 27 Jun 2025 16:35:00 +0800 Subject: [PATCH 03/14] update --- .../impl/SiChuanPlatformServiceImpl.java | 57 ++++++++++++++++++- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java index 5db114d23..3b5e2e92b 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java @@ -1,5 +1,7 @@ package com.jsowell.thirdparty.platform.service.impl; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; @@ -38,9 +40,7 @@ import com.jsowell.thirdparty.platform.domain.*; import com.jsowell.thirdparty.platform.dto.SupStationInfoDTO; import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory; import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService; -import com.jsowell.thirdparty.platform.util.Cryptos; -import com.jsowell.thirdparty.platform.util.HttpRequestUtil; -import com.jsowell.thirdparty.platform.util.ThirdPartyPlatformUtils; +import com.jsowell.thirdparty.platform.util.*; import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; import com.yi.business.geo.GeoCodeInfo; import com.yi.business.geo.TermRelationTreeCoordinate; @@ -51,6 +51,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -100,6 +101,55 @@ public class SiChuanPlatformServiceImpl implements ThirdPartyPlatformService { ThirdPartyPlatformFactory.register(thirdPlatformType, this); } + @Override + public String getToken(String urlAddress, String operatorId, String operatorSecret, String dataSecretIv, String signSecret, String dataSecret) { + String token = ""; + log.info("operatorId:{}, operatorSecret:{}, dataSecretIv:{}, signSecret:{}, dataSecret:{}", operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + try { + // 请求地址 + String requestUrl = urlAddress + "query_token"; + + // 请求data + Map data = new HashMap<>(); + data.put("OperatorID", operatorId); + data.put("OperatorSecret", operatorSecret); + data.put("DataSecretIV", dataSecretIv); + String dataJson = JSONUtil.toJsonStr(data); + + // 加密 + byte[] encryptText = Cryptos.aesEncrypt(dataJson.getBytes(StandardCharsets.UTF_8), + dataSecret.getBytes(), dataSecretIv.getBytes()); + String strData = Encodes.encodeBase64(encryptText); + + Map request = new LinkedHashMap<>(); + request.put("OperatorID", operatorId); + request.put("Data", strData); + request.put("TimeStamp", DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date())); + request.put("Seq", "0001"); + + // 生成签名 + String sig = GBSignUtils.sign(request, signSecret); + request.put("Sig", sig); + + String tokenRequest = JSONUtil.toJsonStr(request); + log.info("请求参数:{}", tokenRequest); + String response = HttpUtil.post(requestUrl, tokenRequest); + LianLianResultVO result = JSON.parseObject(response, LianLianResultVO.class); + log.info("返回参数:{}", response); + + if (result.getRet() == 0) { + // 解密data + byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64((String) result.getData()), + dataSecret.getBytes(), dataSecretIv.getBytes()); + String dataStr = new String(plainText, StandardCharsets.UTF_8); + Map resultMap = (Map) JSON.parse(dataStr); + token = String.valueOf(resultMap.get("AccessToken")); + } + } catch (Exception e) { + return token; + } + return token; + } /** * query_token 获取token,提供给第三方平台使用 @@ -453,6 +503,7 @@ public class SiChuanPlatformServiceImpl implements ThirdPartyPlatformService { // 获取令牌 String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + log.info("token : " + token); String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); return result; From f78ea5acccec154c624a36a871bdf878f490d031 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Sat, 28 Jun 2025 09:36:23 +0800 Subject: [PATCH 04/14] update --- .../service/impl/SiChuanPlatformServiceImpl.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java index 3b5e2e92b..1ae160074 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java @@ -396,6 +396,12 @@ public class SiChuanPlatformServiceImpl implements ThirdPartyPlatformService { String dataSecretIv = thirdPartySecretInfoVO.getTheirDataSecretIv(); String urlAddress = thirdPartySecretInfoVO.getTheirUrlPrefix(); + String operatorId1 = "MA01H3BQ2"; + String operatorSecret1 = thirdPartySecretInfoVO.getOurOperatorSecret(); + String dataSecret1 = thirdPartySecretInfoVO.getOurDataSecret(); + String dataSecretIv1 = thirdPartySecretInfoVO.getOurDataSecretIv(); + String signSecret1 = thirdPartySecretInfoVO.getOurSigSecret(); + // 组装中电联平台所需要的数据格式 SupStationInfoDTO info = SupStationInfoDTO.builder() @@ -502,8 +508,17 @@ public class SiChuanPlatformServiceImpl implements ThirdPartyPlatformService { System.out.println("jsonString : " + jsonString); // 获取令牌 + //使用对方的密钥配置信息和我方的operatorId String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + //使用我方的密钥配置信息和我方的operatorId + String token1 = getToken(urlAddress, operatorId, operatorSecret1, dataSecretIv1, signSecret1, dataSecret1); + //使用对方的密钥配置信息和对方的operatorId + String token2 = getToken(urlAddress, operatorId1, operatorSecret, dataSecretIv, signSecret, dataSecret); + log.info("token : " + token); + log.info("token1 : " + token1); + log.info("token2 : " + token2); + String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); return result; From 3867d03000ce772363ed8f0d103d58846bd1d957 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Mon, 30 Jun 2025 13:47:42 +0800 Subject: [PATCH 05/14] update --- .../api/thirdparty/SiChuanController.java | 10 +++++ .../common/NotificationService.java | 39 ++++++++++++++++--- .../impl/SiChuanPlatformServiceImpl.java | 6 --- 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/SiChuanController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/SiChuanController.java index 207dc1f1d..d9b990166 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/SiChuanController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/SiChuanController.java @@ -208,4 +208,14 @@ public class SiChuanController extends ThirdPartyBaseController { return CommonResult.success(0 , "推送充电站信息成功!" , s , null); } + + /** + * 推送 + */ + + + + + + } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java index 6fe108dec..4a043a343 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java @@ -167,16 +167,42 @@ public class NotificationService { try { // 根据平台类型获取Service ThirdPartyPlatformService platformService = ThirdPartyPlatformFactory.getInvokeStrategy(secretInfoVO.getPlatformType()); + String type = secretInfoVO.getPlatformType(); + //充电订单信息推送 - platformService.notificationChargeOrderInfo(orderCode, secretInfoVO); + //判断实现此接口没有 + // 25 , 20 ,17 ,18,7,24,3,1,10,13,26,16,23,6, 21,15,2 + if(type.equals("25") || type.equals("17") ||type.equals("20") || type.equals("7") || + type.equals("24") || type.equals("3") || type.equals("1") + || type.equals("10") || type.equals("13") || type.equals("26") || type.equals("16") + || type.equals("23") || type.equals("6") || type.equals("21") || type.equals("15") || type.equals("2")){ + platformService.notificationChargeOrderInfo(orderCode, secretInfoVO); + } + //订单信息推送 - platformService.notificationChargeOrderInfo(orderCode); + //12,7,1,10,13,11,6 + if(type.equals("12") || type.equals("7") || type.equals("1") || type.equals("10") || + type.equals("13") || type.equals("11") || type.equals("6")){ + platformService.notificationChargeOrderInfo(orderCode); + } + //停止充电结果推送 - platformService.notificationStopChargeResult(orderCode); + //25 , 7,1,23,6,4,2 + if(type.equals("25") || type.equals("7") || type.equals("1") || + type.equals("23") || type.equals("6") || type.equals("4") || type.equals("2")){ + platformService.notificationStopChargeResult(orderCode); + } + //推送充换电站用能统计信息 - platformService.notificationOperationStatsInfo(stationId); + //18,10,13,26 + if(type.equals("18") || type.equals("10") || type.equals("13") || type.equals("26")){ + platformService.notificationOperationStatsInfo(stationId); + } //推送充电账单信息 - platformService.notificationPayOrderInfo(orderCode); + //25 + if(type.equals("25")){ + platformService.notificationPayOrderInfo(orderCode); + } } catch (Exception e) { logger.error("充电订单信息推送error", e); @@ -184,6 +210,9 @@ public class NotificationService { } } + + + public void commonPushStartChargeResult(NotificationDTO dto) { logger.info("开始调用commonPushStartChargeResult接口"); String stationId = dto.getStationId(); diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java index 1ae160074..bd1efc01a 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/SiChuanPlatformServiceImpl.java @@ -510,14 +510,8 @@ public class SiChuanPlatformServiceImpl implements ThirdPartyPlatformService { // 获取令牌 //使用对方的密钥配置信息和我方的operatorId String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); - //使用我方的密钥配置信息和我方的operatorId - String token1 = getToken(urlAddress, operatorId, operatorSecret1, dataSecretIv1, signSecret1, dataSecret1); - //使用对方的密钥配置信息和对方的operatorId - String token2 = getToken(urlAddress, operatorId1, operatorSecret, dataSecretIv, signSecret, dataSecret); log.info("token : " + token); - log.info("token1 : " + token1); - log.info("token2 : " + token2); String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); From 0f2f25ef0bceca986044922b120b6d03a01f03a1 Mon Sep 17 00:00:00 2001 From: Lemon Date: Mon, 30 Jun 2025 14:09:47 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E4=BF=A1=E6=81=AF=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniapp/customer/MemberController.java | 10 +- .../pile/MemberFeedbackController.java | 72 ------ .../pile/MemberFeedbackInfoController.java | 109 +++++++++ .../com/jsowell/common/util/id/IdUtils.java | 44 ++++ .../jsowell/pile/domain/MemberFeedback.java | 78 ------- .../pile/domain/MemberFeedbackInfo.java | 89 ++++++++ ...ackDTO.java => MemberFeedbackInfoDTO.java} | 15 +- .../pile/mapper/MemberFeedbackInfoMapper.java | 78 +++++++ .../pile/mapper/MemberFeedbackMapper.java | 53 ----- .../service/MemberFeedbackInfoService.java | 83 +++++++ .../pile/service/MemberFeedbackService.java | 49 ----- .../impl/MemberFeedbackInfoServiceImpl.java | 136 ++++++++++++ .../impl/MemberFeedbackServiceImpl.java | 110 ---------- ...dbackVO.java => MemberFeedbackInfoVO.java} | 11 +- .../mapper/pile/MemberFeedBackInfoMapper.xml | 126 +++++++++++ .../mapper/pile/MemberFeedbackMapper.xml | 206 ------------------ 16 files changed, 690 insertions(+), 579 deletions(-) delete mode 100644 jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackController.java create mode 100644 jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java delete mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedbackInfo.java rename jsowell-pile/src/main/java/com/jsowell/pile/dto/{MemberFeedbackDTO.java => MemberFeedbackInfoDTO.java} (58%) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackInfoMapper.java delete mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java delete mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java delete mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java rename jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/{MemberFeedbackVO.java => MemberFeedbackInfoVO.java} (84%) create mode 100644 jsowell-pile/src/main/resources/mapper/pile/MemberFeedBackInfoMapper.xml delete mode 100644 jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java index 28f85d12d..515ec746e 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java @@ -17,7 +17,7 @@ import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MemberWalletVO; -import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.uniapp.customer.MemberWalletInfoVO; @@ -60,7 +60,7 @@ public class MemberController extends BaseController { private PileStationInfoService pileStationInfoService; @Autowired - private MemberFeedbackService memberFeedbackService; + private MemberFeedbackInfoService memberFeedbackInfoService; /** * 下发短信接口 business @@ -688,12 +688,12 @@ public class MemberController extends BaseController { * @return */ @PostMapping("/saveFeedback") - public RestApiResponse saveFeedback(HttpServletRequest request, @RequestBody MemberFeedbackDTO dto) { + public RestApiResponse saveFeedback(HttpServletRequest request, @RequestBody MemberFeedbackInfoDTO dto) { RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - memberFeedbackService.saveFeedback(dto); + memberFeedbackInfoService.saveFeedbackInfo(dto); response = new RestApiResponse<>(); }catch (Exception e) { logger.error("用户反馈信息保存 error", e); @@ -714,7 +714,7 @@ public class MemberController extends BaseController { RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); - List list = memberFeedbackService.getFeedbackList(memberId); + List list = memberFeedbackInfoService.getInfoListByMemberId(memberId); logger.info("用户获取反馈信息列表 list:{}", JSON.toJSONString(list)); response = new RestApiResponse<>(ImmutableMap.of("list", list)); }catch (Exception e) { diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackController.java deleted file mode 100644 index 50ce737ea..000000000 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackController.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.jsowell.web.controller.pile; - -import com.jsowell.common.annotation.Log; -import com.jsowell.common.core.controller.BaseController; -import com.jsowell.common.core.domain.AjaxResult; -import com.jsowell.common.core.page.TableDataInfo; -import com.jsowell.common.enums.BusinessType; -import com.jsowell.pile.dto.MemberFeedbackDTO; -import com.jsowell.pile.dto.QueryMemberFeedbackDTO; -import com.jsowell.pile.service.MemberFeedbackService; -import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 会员反馈信息Controller - * - * @author jsowell - * @date 2023-10-12 - */ -@RestController -@RequestMapping("/member/feedback") -public class MemberFeedbackController extends BaseController { - - @Autowired - private MemberFeedbackService memberFeedbackService; - - /** - * 分页查询会员反馈列表 - */ - @PreAuthorize("@ss.hasPermi('member:feedback:list')") - @PostMapping("/list") - public TableDataInfo list(@RequestBody QueryMemberFeedbackDTO dto) { - List list = memberFeedbackService.selectFeedbackList(dto); - return getDataTable(list); - } - - /** - * 根据ID获取反馈详情 - */ - @PreAuthorize("@ss.hasPermi('member:feedback:query')") - @GetMapping("/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) { - MemberFeedbackVO feedback = memberFeedbackService.getFeedbackById(id); - return AjaxResult.success(feedback); - } - - /** - * 修改反馈内容(回复) - */ - @PreAuthorize("@ss.hasPermi('member:feedback:edit')") - @Log(title = "修改会员反馈", businessType = BusinessType.UPDATE) - @PutMapping("/edit") - public AjaxResult edit(@RequestBody QueryMemberFeedbackDTO dto) { - memberFeedbackService.updateFeedback(dto); - return AjaxResult.success(); - } - - /** - * 删除反馈信息 - */ - @PreAuthorize("@ss.hasPermi('member:feedback:remove')") - @Log(title = "删除会员反馈", businessType = BusinessType.DELETE) - @DeleteMapping - public AjaxResult remove(@RequestParam List ids) { - memberFeedbackService.deleteFeedbackByIds(ids); - return AjaxResult.success(); - } -} diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java new file mode 100644 index 000000000..3bc4e0f04 --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java @@ -0,0 +1,109 @@ +package com.jsowell.web.controller.pile; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.jsowell.pile.service.MemberFeedbackInfoService; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.jsowell.common.annotation.Log; +import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.core.domain.AjaxResult; +import com.jsowell.common.enums.BusinessType; +import com.jsowell.pile.domain.MemberFeedbackInfo; +import com.jsowell.common.util.poi.ExcelUtil; +import com.jsowell.common.core.page.TableDataInfo; + +/** + * 用户问题反馈Controller + * + * @author jsowell + * @date 2025-06-26 + */ +@RestController +@RequestMapping("/pile/memberFeedbackInfo") +public class MemberFeedbackInfoController extends BaseController { + @Autowired + private MemberFeedbackInfoService memberFeedbackInfoService; + + /** + * 查询用户问题反馈列表 + */ + @PreAuthorize("@ss.hasPermi('pile:info:list')") + @GetMapping("/list") + public TableDataInfo list(MemberFeedbackInfo memberFeedbackInfo) { + startPage(); + List list = memberFeedbackInfoService.selectMemberFeedbackInfoList(memberFeedbackInfo); + return getDataTable(list); + } + + /** + * 导出用户问题反馈列表 + */ + @PreAuthorize("@ss.hasPermi('pile:info:export')") + @Log(title = "用户问题反馈", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, MemberFeedbackInfo memberFeedbackInfo) { + List list = memberFeedbackInfoService.selectMemberFeedbackInfoList(memberFeedbackInfo); + ExcelUtil util = new ExcelUtil(MemberFeedbackInfo.class); + util.exportExcel(response, list, "用户问题反馈数据"); + } + + /** + * 获取用户问题反馈详细信息 + */ + @PreAuthorize("@ss.hasPermi('pile:info:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(memberFeedbackInfoService.selectMemberFeedbackInfoById(id)); + } + + /** + * 新增用户问题反馈 + */ + @PreAuthorize("@ss.hasPermi('pile:info:add')") + @Log(title = "用户问题反馈", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody MemberFeedbackInfo memberFeedbackInfo) { + return toAjax(memberFeedbackInfoService.insertMemberFeedbackInfo(memberFeedbackInfo)); + } + + /** + * 修改用户问题反馈 + */ + @PreAuthorize("@ss.hasPermi('pile:info:edit')") + @Log(title = "用户问题反馈", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody MemberFeedbackInfo memberFeedbackInfo) { + return toAjax(memberFeedbackInfoService.updateMemberFeedbackInfo(memberFeedbackInfo)); + } + + /** + * 删除用户问题反馈 + */ + @PreAuthorize("@ss.hasPermi('pile:info:remove')") + @Log(title = "用户问题反馈", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(memberFeedbackInfoService.deleteMemberFeedbackInfoByIds(ids)); + } + + /** + * 通过feedbackCode查询信息详情 + * @param feedbackCode + * @return + */ + @GetMapping("/getMemberFeedbackDetailByCode/{feedbackCode}") + public MemberFeedbackInfoVO getMemberFeedbackDetailByCode(@PathVariable("feedbackCode") String feedbackCode) { + return memberFeedbackInfoService.getMemberFeedbackDetailByCode(feedbackCode); + } +} diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java index 4aa428368..2aa3cfa12 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java @@ -3,6 +3,8 @@ package com.jsowell.common.util.id; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.RandomUtil; +import java.util.Random; + /** * ID生成器工具类 * @@ -130,5 +132,47 @@ public class IdUtils { return String.valueOf(num); } + /** + * 生成以FB开头的流水号 + * @param length 流水号总长度(必须大于14,因为FB+年月日时分秒(14位)已经占用了16位) + * @return 生成的流水号 + * @throws IllegalArgumentException 如果length小于16时抛出异常 + */ + public static String generateFBSerialNumber(int length) { + if (length < 16) { + throw new IllegalArgumentException("长度至少为16位数!"); + } + // 获取当前时间并格式化为yyyyMMddHHmmss + String timePart = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS); + + // 计算需要的随机数长度 + int randomLength = length - 2 - 14; // 2(FB) + 14(时间部分) + + // 生成随机数部分 + String randomPart = generateRandomNumber(randomLength); + + // 组合所有部分 + return "FB" + timePart + randomPart; + } + + /** + * 生成指定长度的随机数字字符串 + * @param length 随机数长度 + * @return 随机数字字符串 + */ + private static String generateRandomNumber(int length) { + if (length <= 0) { + return ""; + } + + Random random = new Random(); + StringBuilder sb = new StringBuilder(length); + + for (int i = 0; i < length; i++) { + sb.append(random.nextInt(10)); + } + + return sb.toString(); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java deleted file mode 100644 index 9a5ee3530..000000000 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedback.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.jsowell.pile.domain; - -import com.jsowell.common.core.domain.BaseEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; - -@Data -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class MemberFeedback extends BaseEntity { - private static final long serialVersionUID = 1L; - - /** - * 主键id - */ - private Long id; - - /** - * 会员id - */ - private String memberId; - - /** - * 会员姓名 - */ - private String memberName; - - /** - * 联系方式 - */ - private String contactInfo; - - /** - * 反馈类型 1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他) - */ - private String feedbackType; - - /** - * 反馈内容 - */ - private String feedbackContent; - - /** - * 处理状态(0=未处理,1=处理中,2=已处理,3=待跟进) - */ - private String status; - - /** - * 创建时间 - */ - private Date createTime; - - /** - * 更新时间 - */ - private Date updateTime; - - /** - * 管理员回复内容 - */ - private String replyContent; - - /** - * 管理员回复时间 - */ - private Date replyTime; - - /** - * 删除标记(0=未删除,1=已删除) - */ - private String delFlag; - -} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedbackInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedbackInfo.java new file mode 100644 index 000000000..5bf5e87f6 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberFeedbackInfo.java @@ -0,0 +1,89 @@ +package com.jsowell.pile.domain; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jsowell.common.annotation.Excel; +import com.jsowell.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户问题反馈对象 member_feedback_info + * + * @author jsowell + * @date 2025-06-26 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class MemberFeedbackInfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + + /** + * 反馈信息流水号 + */ + private String feedbackCode; + + /** + * 会员ID + */ + @Excel(name = "会员ID") + private String memberId; + + /** + * 会员姓名/昵称 + */ + @Excel(name = "会员姓名/昵称") + private String nickName; + + /** + * 手机号码 + */ + @Excel(name = "手机号码") + private String phoneNumber; + + /** + * 反馈类型(1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他) + */ + @Excel(name = "反馈类型", readConverterExp = "1==功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他") + private String feedbackType; + + /** + * 反馈内容 + */ + @Excel(name = "反馈内容") + private String feedbackContent; + + /** + * 处理状态(0=未处理,1=处理中,2=已处理,3=待跟进) + */ + @Excel(name = "处理状态", readConverterExp = "0==未处理,1=处理中,2=已处理,3=待跟进") + private String status; + + /** + * 管理员回复内容 + */ + @Excel(name = "管理员回复内容") + private String replyContent; + + /** + * 管理员回复时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "管理员回复时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date replyTime; + + /** + * 删除标识(0-正常;1-删除) + */ + private String delFlag; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackInfoDTO.java similarity index 58% rename from jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackInfoDTO.java index 03c26b680..903070667 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/MemberFeedbackInfoDTO.java @@ -7,13 +7,23 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class MemberFeedbackDTO { +public class MemberFeedbackInfoDTO { /** * 会员ID */ private String memberId; + /** + * 用户昵称 + */ + private String nickName; + + /** + * 手机号码 + */ + private String phoneNumber; + /** * 反馈内容 */ @@ -21,9 +31,8 @@ public class MemberFeedbackDTO { /** * 反馈类型 + * 1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他 */ private String feedbackType; - - } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackInfoMapper.java new file mode 100644 index 000000000..623da71d6 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackInfoMapper.java @@ -0,0 +1,78 @@ +package com.jsowell.pile.mapper; + +import java.util.List; + +import com.jsowell.pile.domain.MemberFeedbackInfo; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; +import org.springframework.stereotype.Repository; + +/** + * 用户问题反馈Mapper接口 + * + * @author jsowell + * @date 2025-06-26 + */ +@Repository +public interface MemberFeedbackInfoMapper { + /** + * 查询用户问题反馈 + * + * @param id 用户问题反馈主键 + * @return 用户问题反馈 + */ + public MemberFeedbackInfo selectMemberFeedbackInfoById(Long id); + + /** + * 查询用户问题反馈列表 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 用户问题反馈集合 + */ + public List selectMemberFeedbackInfoList(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 新增用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + public int insertMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 修改用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + public int updateMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 删除用户问题反馈 + * + * @param id 用户问题反馈主键 + * @return 结果 + */ + public int deleteMemberFeedbackInfoById(Long id); + + /** + * 批量删除用户问题反馈 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMemberFeedbackInfoByIds(Long[] ids); + + /** + * 根据memberId查询信息列表 + * @param memberId + * @return + */ + List getInfoListByMemberId(String memberId); + + /** + * 通过反馈编码查询反馈信息详情 + * @param feedbackCode + * @return + */ + MemberFeedbackInfoVO getMemberFeedbackDetailByCode(String feedbackCode); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java deleted file mode 100644 index 1f9fac755..000000000 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberFeedbackMapper.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.jsowell.pile.mapper; - -import com.jsowell.pile.domain.MemberFeedback; -import com.jsowell.pile.dto.QueryMemberFeedbackDTO; -import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.Date; -import java.util.List; - -@Mapper -public interface MemberFeedbackMapper { - - /** - * 保存会员反馈信息 - * @param memberFeedback - * @return - */ - public int insertMemberFeedback(MemberFeedback memberFeedback); - - /** - * 根据会员ID查询会员反馈信息列表 - * @param memberId - * @return - */ - List selectMemberFeedbackList(String memberId); - - /** - * 根据条件查询会员反馈信息列表 - * @param dto - * @return - */ - List getFeedbackList(QueryMemberFeedbackDTO dto); - - /** - * 根据会员ID查询会员反馈信息 - * @param id - * @return - */ - MemberFeedbackVO getFeedbackById(Long id); - - /** - * 根据ID更新会员反馈信息 - * @param dto - */ - void updateFeedback(QueryMemberFeedbackDTO dto); - - /** - * 根据ID删除会员反馈信息 - * @param id - */ - void deleteMemberFeedbackById(Long id); -} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java new file mode 100644 index 000000000..35e1fa7de --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java @@ -0,0 +1,83 @@ +package com.jsowell.pile.service; + +import java.util.List; + +import com.jsowell.pile.domain.MemberFeedbackInfo; +import com.jsowell.pile.dto.MemberFeedbackInfoDTO; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; + +/** + * 用户问题反馈Service接口 + * + * @author jsowell + * @date 2025-06-26 + */ +public interface MemberFeedbackInfoService { + /** + * 查询用户问题反馈 + * + * @param id 用户问题反馈主键 + * @return 用户问题反馈 + */ + public MemberFeedbackInfo selectMemberFeedbackInfoById(Long id); + + /** + * 查询用户问题反馈列表 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 用户问题反馈集合 + */ + public List selectMemberFeedbackInfoList(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 新增用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + public int insertMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 修改用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + public int updateMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo); + + /** + * 批量删除用户问题反馈 + * + * @param ids 需要删除的用户问题反馈主键集合 + * @return 结果 + */ + public int deleteMemberFeedbackInfoByIds(Long[] ids); + + /** + * 删除用户问题反馈信息 + * + * @param id 用户问题反馈主键 + * @return 结果 + */ + public int deleteMemberFeedbackInfoById(Long id); + + /** + * 保存用户提出的反馈建议信息 + * @param dto + */ + void saveFeedbackInfo(MemberFeedbackInfoDTO dto); + + /** + * 通过memberId查询反馈信息列表 + * @param memberId + * @return + */ + List getInfoListByMemberId(String memberId); + + /** + * 通过反馈编码查询反馈信息详情 + * @param feedbackCode + * @return + */ + MemberFeedbackInfoVO getMemberFeedbackDetailByCode(String feedbackCode); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java deleted file mode 100644 index 1f03faa3d..000000000 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.jsowell.pile.service; - -import com.jsowell.pile.dto.MemberFeedbackDTO; -import com.jsowell.pile.dto.QueryMemberFeedbackDTO; -import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; - -import java.util.List; - -public interface MemberFeedbackService { - - /** - * 用户反馈信息保存 - * @param dto - */ - void saveFeedback(MemberFeedbackDTO dto); - - /** - * 获取用户反馈信息列表 - * @param memberId - * @return - */ - List getFeedbackList(String memberId); - - /** - * 条件查询用户反馈信息列表 (管理后台使用) - * @param dto - * @return - */ - List selectFeedbackList(QueryMemberFeedbackDTO dto); - - /** - * 根据memberId获取用户反馈信息 - * @param id - * @return - */ - MemberFeedbackVO getFeedbackById(Long id); - - /** - * 根据memberId删除用户反馈信息 - * @param dto - */ - void updateFeedback(QueryMemberFeedbackDTO dto); - - /** - * 根据ids删除用户反馈信息 - * @param ids - */ - void deleteFeedbackByIds(List ids); -} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java new file mode 100644 index 000000000..c10de4ad8 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java @@ -0,0 +1,136 @@ +package com.jsowell.pile.service.impl; + +import java.util.List; + +import com.jsowell.common.constant.Constants; +import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.id.IdUtils; +import com.jsowell.pile.dto.MemberFeedbackInfoDTO; +import com.jsowell.pile.service.MemberFeedbackInfoService; +import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.jsowell.pile.mapper.MemberFeedbackInfoMapper; +import com.jsowell.pile.domain.MemberFeedbackInfo; + +/** + * 用户问题反馈Service业务层处理 + * + * @author jsowell + * @date 2025-06-26 + */ +@Service +public class MemberFeedbackInfoServiceImpl implements MemberFeedbackInfoService { + @Autowired + private MemberFeedbackInfoMapper memberFeedbackInfoMapper; + + /** + * 查询用户问题反馈 + * + * @param id 用户问题反馈主键 + * @return 用户问题反馈 + */ + @Override + public MemberFeedbackInfo selectMemberFeedbackInfoById(Long id) { + return memberFeedbackInfoMapper.selectMemberFeedbackInfoById(id); + } + + /** + * 查询用户问题反馈列表 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 用户问题反馈 + */ + @Override + public List selectMemberFeedbackInfoList(MemberFeedbackInfo memberFeedbackInfo) { + return memberFeedbackInfoMapper.selectMemberFeedbackInfoList(memberFeedbackInfo); + } + + /** + * 新增用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + @Override + public int insertMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo) { + memberFeedbackInfo.setCreateTime(DateUtils.getNowDate()); + return memberFeedbackInfoMapper.insertMemberFeedbackInfo(memberFeedbackInfo); + } + + /** + * 修改用户问题反馈 + * + * @param memberFeedbackInfo 用户问题反馈 + * @return 结果 + */ + @Override + public int updateMemberFeedbackInfo(MemberFeedbackInfo memberFeedbackInfo) { + memberFeedbackInfo.setUpdateTime(DateUtils.getNowDate()); + return memberFeedbackInfoMapper.updateMemberFeedbackInfo(memberFeedbackInfo); + } + + /** + * 批量删除用户问题反馈 + * + * @param ids 需要删除的用户问题反馈主键 + * @return 结果 + */ + @Override + public int deleteMemberFeedbackInfoByIds(Long[] ids) { + return memberFeedbackInfoMapper.deleteMemberFeedbackInfoByIds(ids); + } + + /** + * 删除用户问题反馈信息 + * + * @param id 用户问题反馈主键 + * @return 结果 + */ + @Override + public int deleteMemberFeedbackInfoById(Long id) { + return memberFeedbackInfoMapper.deleteMemberFeedbackInfoById(id); + } + + /** + * 保存用户提出的反馈建议信息 + * @param dto + */ + @Override + public void saveFeedbackInfo(MemberFeedbackInfoDTO dto) { + MemberFeedbackInfo info = MemberFeedbackInfo.builder() + .memberId(dto.getMemberId()) + .nickName(dto.getNickName()) + .phoneNumber(dto.getPhoneNumber()) + .feedbackType(dto.getFeedbackType()) + .feedbackContent(dto.getFeedbackContent()) + .status(Constants.ZERO) + .build(); + // 生成24位流水号 + String feedbackCode = IdUtils.generateFBSerialNumber(24); + info.setFeedbackCode(feedbackCode); + + insertMemberFeedbackInfo(info); + } + + /** + * 通过memberId查询反馈信息列表 + * @param memberId + * @return + */ + @Override + public List getInfoListByMemberId(String memberId) { + return memberFeedbackInfoMapper.getInfoListByMemberId(memberId); + } + + /** + * 通过反馈编码查询反馈信息详情 + * @param feedbackCode + * @return + */ + @Override + public MemberFeedbackInfoVO getMemberFeedbackDetailByCode(String feedbackCode) { + return memberFeedbackInfoMapper.getMemberFeedbackDetailByCode(feedbackCode); + } + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java deleted file mode 100644 index ffe13644a..000000000 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.jsowell.pile.service.impl; - -import com.github.pagehelper.PageHelper; -import com.jsowell.common.constant.Constants; -import com.jsowell.common.core.redis.RedisCache; -import com.jsowell.common.util.DateUtils; -import com.jsowell.pile.domain.MemberBasicInfo; -import com.jsowell.pile.domain.MemberFeedback; -import com.jsowell.pile.dto.MemberFeedbackDTO; -import com.jsowell.pile.dto.QueryMemberFeedbackDTO; -import com.jsowell.pile.mapper.MemberBasicInfoMapper; -import com.jsowell.pile.mapper.MemberFeedbackMapper; -import com.jsowell.pile.service.MemberFeedbackService; -import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackVO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -@Slf4j -public class MemberFeedbackServiceImpl implements MemberFeedbackService { - - @Autowired - MemberBasicInfoMapper memberBasicInfoMapper; - - @Autowired - MemberFeedbackMapper memberFeedbackMapper; - - /** - * 用户反馈保存 - * @param dto - */ - @Override - public void saveFeedback(MemberFeedbackDTO dto) { - MemberBasicInfo memberInfo = memberBasicInfoMapper.selectInfoByMemberId(dto.getMemberId()); - if (memberInfo == null) { - throw new IllegalArgumentException(""); - } - MemberFeedback memberFeedback = MemberFeedback.builder () - .memberId(dto.getMemberId()) - .memberName(memberInfo.getNickName()) - .contactInfo(memberInfo.getMobileNumber()) // 联系方式 - .feedbackType(dto.getFeedbackType()) //反馈类型 - .feedbackContent(dto.getFeedbackContent()) - .status(Constants.ONE) - .createTime(DateUtils.getNowDate()) - .delFlag(Constants.ZERO) - .build(); - - // 保存反馈信息至数据库 - memberFeedbackMapper.insertMemberFeedback(memberFeedback); - } - - /** - * 获取用户反馈列表 - * @param memberId - * @return - */ - @Override - public List getFeedbackList(String memberId) { - return memberFeedbackMapper.selectMemberFeedbackList(memberId); - } - - /** - * 条件查询用户反馈列表 (后管) - * @param dto - * @return - */ - @Override - public List selectFeedbackList(QueryMemberFeedbackDTO dto) { - //分页 - dto.setPageNum(dto.getPageNum() == null? 1 : dto.getPageNum()); - dto.setPageSize(dto.getPageSize() == null? 10 : dto.getPageSize()); - PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); - return memberFeedbackMapper.getFeedbackList(dto); - } - - - /** - * 根据id获取用户反馈信息 - * @param id - * @return - */ - @Override - public MemberFeedbackVO getFeedbackById(Long id) { - return memberFeedbackMapper.getFeedbackById(id); - } - - /** - * 根据id更新用户反馈信息 - * @param dto - */ - @Override - public void updateFeedback(QueryMemberFeedbackDTO dto) { - memberFeedbackMapper.updateFeedback(dto); - } - - /** - * 根据id删除用户反馈信息 - * @param ids - */ - @Override - public void deleteFeedbackByIds(List ids) { - for (Long id : ids) { - memberFeedbackMapper.deleteMemberFeedbackById(id); - } - } -} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackInfoVO.java similarity index 84% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackInfoVO.java index f41990f65..5f92a5bbb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberFeedbackInfoVO.java @@ -7,10 +7,15 @@ import java.util.Date; @Data @Builder -public class MemberFeedbackVO { +public class MemberFeedbackInfoVO { private Long id; + /** + * 反馈信息流水号 + */ + private String feedbackCode; + /** * 会员id */ @@ -19,12 +24,12 @@ public class MemberFeedbackVO { /** * 会员姓名 */ - private String memberName; + private String nickName; /** * 联系方式 */ - private String contactInfo; + private String phoneNumber; /** * 反馈类型 1=功能建议,2=系统BUG,3=服务投诉,4=站点问题,5=电桩问题,6=其他) diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberFeedBackInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberFeedBackInfoMapper.xml new file mode 100644 index 000000000..44886778a --- /dev/null +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberFeedBackInfoMapper.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + select id, feedback_code, member_id, nick_name, phone_number, feedback_type, feedback_content, status, reply_content, reply_time, create_time, update_time, del_flag from member_feedback_info + + + + id, feedback_code, member_id, nick_name, phone_number, feedback_type, feedback_content, status, reply_content, reply_time, create_time, update_time, del_flag + + + + + + + + insert into member_feedback_info + + feedback_code, + member_id, + nick_name, + phone_number, + feedback_type, + feedback_content, + status, + reply_content, + reply_time, + create_time, + update_time, + del_flag, + + + #{feedbackCode}, + #{memberId}, + #{nickName}, + #{phoneNumber}, + #{feedbackType}, + #{feedbackContent}, + #{status}, + #{replyContent}, + #{replyTime}, + #{createTime}, + #{updateTime}, + #{delFlag}, + + + + + update member_feedback_info + + feedback_code = #{feedbackCode}, + member_id = #{memberId}, + nick_name = #{nickName}, + phone_number = #{phoneNumber}, + feedback_type = #{feedbackType}, + feedback_content = #{feedbackContent}, + status = #{status}, + reply_content = #{replyContent}, + reply_time = #{replyTime}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + + where id = #{id} + + + + delete from member_feedback_info where id = #{id} + + + + delete from member_feedback_info where id in + + #{id} + + + + + + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml deleted file mode 100644 index 1dc0acfe3..000000000 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberFeedbackMapper.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - select id, - member_id, - member_name, - contact_info, - feedback_type, - feedback_content, - status, - create_time, - update_time, - reply_content, - reply_time, - del_flag - from member_feedback - - - - insert into member_feedback - - - id, - - - member_id, - - - member_name, - - - contact_info, - - - feedback_type, - - - feedback_content, - - - status, - - - create_time, - - - update_time, - - - reply_content, - - - reply_time, - - - del_flag, - - - - - #{id}, - - - #{memberId}, - - - #{memberName}, - - - #{contactInfo}, - - - #{feedbackType}, - - - #{feedbackContent}, - - - #{status}, - - - #{createTime}, - - - #{updateTime}, - - - #{replyContent}, - - - #{replyTime}, - - - #{delFlag}, - - - - - UPDATE member_feedback - - - status = #{status}, - - - reply_content = #{replyContent}, - - - reply_time = #{replyTime}, - - - WHERE id = #{id} - - - - DELETE - FROM member_feedback - WHERE id = #{id} - - - - - - - - - - From 14bf284e828a4802bbf49df6b3d0f8d0f1cc114a Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Mon, 30 Jun 2025 14:11:06 +0800 Subject: [PATCH 07/14] update --- .../common/NotificationService.java | 78 ++++++++++--------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java index 4a043a343..78cd34008 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java @@ -164,49 +164,55 @@ public class NotificationService { // 如果dto中的platformType不为空,并且不等于secretInfoVO.getPlatformType(),continue continue; } + // 根据平台类型获取Service + ThirdPartyPlatformService platformService =null; try { // 根据平台类型获取Service - ThirdPartyPlatformService platformService = ThirdPartyPlatformFactory.getInvokeStrategy(secretInfoVO.getPlatformType()); - String type = secretInfoVO.getPlatformType(); - - //充电订单信息推送 - //判断实现此接口没有 - // 25 , 20 ,17 ,18,7,24,3,1,10,13,26,16,23,6, 21,15,2 - if(type.equals("25") || type.equals("17") ||type.equals("20") || type.equals("7") || - type.equals("24") || type.equals("3") || type.equals("1") - || type.equals("10") || type.equals("13") || type.equals("26") || type.equals("16") - || type.equals("23") || type.equals("6") || type.equals("21") || type.equals("15") || type.equals("2")){ + platformService = ThirdPartyPlatformFactory.getInvokeStrategy(secretInfoVO.getPlatformType()); + }catch (Exception e){ + logger.error("获取平台服务失败", e); + } + //充电订单信息推送 + try { + if(platformService != null){ platformService.notificationChargeOrderInfo(orderCode, secretInfoVO); } - - //订单信息推送 - //12,7,1,10,13,11,6 - if(type.equals("12") || type.equals("7") || type.equals("1") || type.equals("10") || - type.equals("13") || type.equals("11") || type.equals("6")){ - platformService.notificationChargeOrderInfo(orderCode); - } - - //停止充电结果推送 - //25 , 7,1,23,6,4,2 - if(type.equals("25") || type.equals("7") || type.equals("1") || - type.equals("23") || type.equals("6") || type.equals("4") || type.equals("2")){ - platformService.notificationStopChargeResult(orderCode); - } - - //推送充换电站用能统计信息 - //18,10,13,26 - if(type.equals("18") || type.equals("10") || type.equals("13") || type.equals("26")){ - platformService.notificationOperationStatsInfo(stationId); - } - //推送充电账单信息 - //25 - if(type.equals("25")){ - platformService.notificationPayOrderInfo(orderCode); - } - } catch (Exception e) { logger.error("充电订单信息推送error", e); } + //订单信息推送 + try { + if (platformService != null) { + platformService.notificationChargeOrderInfo(orderCode); + } + }catch (Exception e){ + logger.error("订单信息推送error", e); + } + //停止充电结果推送 + try { + if (platformService != null) { + platformService.notificationStopChargeResult(orderCode); + } + }catch (Exception e){ + logger.error("停止充电结果推送error", e); + } + //推送充换电站用能统计信息 + try { + if (platformService != null) { + platformService.notificationOperationStatsInfo(stationId); + } + }catch (Exception e){ + logger.error("推送充换电站用能统计信息error", e); + } + //推送充电账单信息 + try { + if (platformService != null) { + platformService.notificationPayOrderInfo(orderCode); + } + }catch (Exception e){ + logger.error("推送充电账单信息error", e); + } + } } From b235833fc0bf9fa8246e7f10891246297afa0b7f Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Mon, 30 Jun 2025 14:58:31 +0800 Subject: [PATCH 08/14] update --- .../jsowell/thirdparty/common/NotificationService.java | 10 +++++++++- .../service/impl/ChangZhouPlatformServiceImpl.java | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java index 78cd34008..5aa7fa97b 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java @@ -212,7 +212,15 @@ public class NotificationService { }catch (Exception e){ logger.error("推送充电账单信息error", e); } - + //推送充电历史订单信息 + try { + // 根据平台类型获取Service + if (platformService != null) { + platformService.notificationChargeOrderInfoHistory(orderCode); + } + } catch (Exception e) { + logger.error("历史充电订单信息推送error", e); + } } } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java index 46112a2a2..311e88d3d 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java @@ -873,13 +873,13 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { public Map retryNotificationOrderInfo(String orderCode) { Map map = new LinkedHashMap<>(); ThirdPartySecretInfoVO thirdPartySecretInfoVO = getChangZhouSecretInfo(); - int Success = 0; + int SuccStat = 0; //查询订单信息 OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); if (orderBasicInfo == null) { - Success = 1; + SuccStat = 1; } - map.put("Success", Success); + map.put("SuccStat", SuccStat); return ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO); } From 9492f9f7a73cf34b652329e5f14702360d10e765 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Mon, 30 Jun 2025 16:31:31 +0800 Subject: [PATCH 09/14] update --- .../impl/ChangZhouPlatformServiceImpl.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java index 311e88d3d..04bf08ac4 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java @@ -843,12 +843,12 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { PayOrderInfo payOrderInfo = PayOrderInfo.builder() .startChargeSeq(orderCode) - .elecTotal(electricityAmount) - .serviceTotal(serviceAmount) - .total(orderAmount) - .elecPaid(afterDiscountElectricityAmount) - .servicePaid(afterDiscountServiceAmount) - .paid(afterDiscountOrderAmount) + .elecTotal(electricityAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) + .serviceTotal(serviceAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) + .total(orderAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) + .elecPaid(afterDiscountElectricityAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) + .servicePaid(afterDiscountServiceAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) + .paid(afterDiscountOrderAmount.setScale(2, BigDecimal.ROUND_HALF_UP)) .build(); String url = urlAddress + "notification_pay_order_info"; @@ -880,6 +880,9 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { SuccStat = 1; } map.put("SuccStat", SuccStat); + //调用推送订单信息 + notificationChargeOrderInfo(orderCode, thirdPartySecretInfoVO); + return ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO); } From 0e6fe115a3ded414fc6c520c0d28d223e0c70211 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Tue, 1 Jul 2025 09:02:11 +0800 Subject: [PATCH 10/14] =?UTF-8?q?update=E4=BF=AE=E6=94=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-pre.yml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 90f0eed99..690bbf530 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -8,17 +8,17 @@ spring: # redis 配置 redis: # 地址 -# host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com - host: 106.14.94.149 + host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com +# host: 106.14.94.149 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 账号 -# username: jsowell -# # 密码 -# password: js@160829 - password: js160829 + username: jsowell + # 密码 + password: js@160829 +# password: js160829 # 连接超时时间 timeout: 10s lettuce: @@ -38,12 +38,12 @@ spring: druid: # 主库数据源 master: -# url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: jsowell -# password: js@160829 - url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: jsowell_pre - password: Js@160829 + url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: jsowell + password: js@160829 +# url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: jsowell_pre +# password: Js@160829 # 从库数据源 slave: # 从数据源开关/默认关闭 From 2de93f190e98b46508899009493926a633d10c58 Mon Sep 17 00:00:00 2001 From: Lemon Date: Tue, 1 Jul 2025 09:18:42 +0800 Subject: [PATCH 11/14] =?UTF-8?q?add=20=E6=96=B0=E5=A2=9E=E5=90=8E?= =?UTF-8?q?=E7=AE=A1=E7=AE=A1=E7=90=86=E5=91=98=E5=A4=84=E7=90=86=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=8F=8D=E9=A6=88=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pile/MemberFeedbackInfoController.java | 13 ++++++++++++- .../pile/service/MemberFeedbackInfoService.java | 7 +++++++ .../service/impl/MemberFeedbackInfoServiceImpl.java | 12 ++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java index 3bc4e0f04..daf40f8f4 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberFeedbackInfoController.java @@ -98,7 +98,7 @@ public class MemberFeedbackInfoController extends BaseController { } /** - * 通过feedbackCode查询信息详情 + * 后管管理员通过feedbackCode查询信息详情 * @param feedbackCode * @return */ @@ -106,4 +106,15 @@ public class MemberFeedbackInfoController extends BaseController { public MemberFeedbackInfoVO getMemberFeedbackDetailByCode(@PathVariable("feedbackCode") String feedbackCode) { return memberFeedbackInfoService.getMemberFeedbackDetailByCode(feedbackCode); } + + /** + * 后管管理员处理用户反馈信息(实际调用修改方法,将该反馈信息状态改为处理中) + * @param memberFeedbackInfo + * @return + */ + @PostMapping("/dealUserFeedback") + public AjaxResult dealUserFeedback(@RequestBody MemberFeedbackInfo memberFeedbackInfo) { + memberFeedbackInfoService.dealUserFeedback(memberFeedbackInfo); + return AjaxResult.success(); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java index 35e1fa7de..e82c47806 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberFeedbackInfoService.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service; import java.util.List; +import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.pile.domain.MemberFeedbackInfo; import com.jsowell.pile.dto.MemberFeedbackInfoDTO; import com.jsowell.pile.vo.uniapp.customer.MemberFeedbackInfoVO; @@ -80,4 +81,10 @@ public interface MemberFeedbackInfoService { * @return */ MemberFeedbackInfoVO getMemberFeedbackDetailByCode(String feedbackCode); + + /** + * 后台管理员处理用户反馈信息 + * @param memberFeedbackInfo + */ + void dealUserFeedback(MemberFeedbackInfo memberFeedbackInfo); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java index c10de4ad8..f246a855a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberFeedbackInfoServiceImpl.java @@ -133,4 +133,16 @@ public class MemberFeedbackInfoServiceImpl implements MemberFeedbackInfoService return memberFeedbackInfoMapper.getMemberFeedbackDetailByCode(feedbackCode); } + /** + * 后管管理员处理用户反馈信息(实际调用修改方法,将该反馈信息状态改为处理中) + * @param memberFeedbackInfo + * @return + */ + @Override + public void dealUserFeedback(MemberFeedbackInfo memberFeedbackInfo) { + // 将本条反馈信息状态改为 1-处理中 + memberFeedbackInfo.setStatus(Constants.ONE); + // 修改数据库 + this.updateMemberFeedbackInfo(memberFeedbackInfo); + } } From 1be8c2b2811061fca2cb796855a452d9c8c6ad60 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 1 Jul 2025 13:31:45 +0800 Subject: [PATCH 12/14] =?UTF-8?q?update=20=E7=9F=AD=E4=BF=A1=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jsowell/service/MemberService.java | 6 +++--- .../src/main/java/com/jsowell/common/util/SMSUtil.java | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index 961d9378d..602ac28a1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -131,9 +131,9 @@ public class MemberService { public void checkVerificationCode(MemberRegisterAndLoginDTO dto) { // 取出缓存中的验证码进行对比,如果缓存中没有,则超时 String captchaCode = redisCache.getCacheObject(CacheConstants.SMS_VERIFICATION_CODE_KEY + dto.getMobileNumber()); - if (StringUtils.isEmpty(captchaCode)) { - throw new BusinessException(ReturnCodeEnum.CODE_VERIFICATION_CODE_TIMEOUT_ERROR); - } + // if (StringUtils.isEmpty(captchaCode)) { + // throw new BusinessException(ReturnCodeEnum.CODE_VERIFICATION_CODE_TIMEOUT_ERROR); + // } // 获取通用验证码 String commonCaptchaCode = redisCache.getCacheObject(CacheConstants.SMS_COMMON_VERIFICATION_CODE_KEY + dto.getMobileNumber()); diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/SMSUtil.java b/jsowell-common/src/main/java/com/jsowell/common/util/SMSUtil.java index 238237b73..39b625b43 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/SMSUtil.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/SMSUtil.java @@ -1,11 +1,13 @@ package com.jsowell.common.util; +import com.alibaba.fastjson2.JSON; import com.github.qcloudsms.SmsSingleSender; import com.github.qcloudsms.SmsSingleSenderResult; import com.github.qcloudsms.httpclient.HTTPException; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.redis.RedisCache; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,6 +17,7 @@ import java.io.IOException; /** * 发送短信验证码工具类 */ +@Slf4j @Component public class SMSUtil { @@ -52,6 +55,7 @@ public class SMSUtil { SmsSingleSenderResult result = ssender.sendWithParam(NATION_CODE, phoneNumber, TEMPLATE_ID, params, SMS_SIGN, "", ""); if (result.result != 0) { reStr = "error"; + log.error("发送验证码失败:{}", JSON.toJSONString(result)); } else { // 改为保存redis String redisKey = CacheConstants.SMS_VERIFICATION_CODE_KEY + phoneNumber; From 40d593c310125025e4b949254152c7e508476790 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 1 Jul 2025 13:32:03 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=89=8B=E7=BB=AD?= =?UTF-8?q?=E8=B4=B9=E6=8C=89=E7=85=A7=E5=8D=83=E5=88=86=E4=B9=8B6?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jsowell/common/constant/Constants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java index d363a1024..5b5744a5b 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java @@ -52,7 +52,7 @@ public class Constants { public static final int PILE_CONNECTOR_CODE_LENGTH_FOR_EBIKE = PILE_SN_LENGTH_FOR_EBIKE + CONNECTOR_CODE_LENGTH_FOR_EBIKE; // 汇付手续费费率 - public static final String FEE_RATES = "0.0055"; + public static final String FEE_RATES = "0.0060"; public static final String SOCKET_IP = "127.0.0.1"; From f6a3cd55d6913e8477a5b543a775535622594f7a Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 1 Jul 2025 14:03:41 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E7=A7=BB=E9=99=A4main=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SettleOrderReportServiceImpl.java | 43 ------------------- 1 file changed, 43 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java index 9c3e5a033..000a85067 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java @@ -795,48 +795,5 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { return resultVO; } - public static void main(String[] args) { - List list = Lists.newArrayList( - "0.06", - "0.06", - "0.09", - "0.06", - "0.05", - "0.09", - "0.02", - "0.18", - "0.10", - "0.03", - "0.06", - "0.11"); - - // 总手续费 - BigDecimal totalFeeAmount = BigDecimal.ZERO; - BigDecimal totalTradeAmount = BigDecimal.ZERO; - - for (String s : list) { - BigDecimal settleAmount = new BigDecimal(s); - BigDecimal fee = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES)).setScale(2, RoundingMode.UP); - // 交易金额 = 结算金额 - 手续费 - BigDecimal tradeAmount = settleAmount.subtract(fee); - - totalFeeAmount = totalFeeAmount.add(fee); - totalTradeAmount = totalTradeAmount.add(tradeAmount); - } - - System.out.println("总手续费" + totalFeeAmount); - System.out.println("总交易金额" + totalTradeAmount); - - - // BigDecimal settleAmount = new BigDecimal("330.37"); - // // 计算手续费 = 结算金额 * 0.55% - // BigDecimal fee = settleAmount.multiply(new BigDecimal(Constants.FEE_RATES)); - // SplitSettleAmountVO resultVO = new SplitSettleAmountVO(); - // resultVO.setSettleAmount(settleAmount); - // resultVO.setFeeAmount(fee); - // resultVO.setTradeAmount(settleAmount.subtract(fee)); - // System.out.println(JSON.toJSONString(resultVO)); - } - }