From 810038864d248f736af48baa26aa0436f2296380 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 28 Apr 2026 15:39:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BA=91=E9=9F=B3=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/constant/HardTypeEnum.java | 1 + .../com/bsd/pjcloud/hard/config/YyxConf.java | 22 ++++ .../bsd/pjcloud/hard/service/YyxService.java | 11 ++ .../impl/order/HardOrderServiceImpl.java | 4 + .../hard/service/impl/yyx/YyxServiceImpl.java | 113 ++++++++++++++++++ .../WalletRechargePackageController.java | 9 +- 6 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/YyxConf.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/YyxService.java create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/yyx/YyxServiceImpl.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java index 97f8887bc..1ad3afdcf 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardTypeEnum.java @@ -23,6 +23,7 @@ public enum HardTypeEnum { OTHER("6", "其他支付方式(第三方接口对接)"), MERCHANT_ACT("7", "商户活动"), FARMER("8", "共富商城(助农)"), + YYX("10", "4G云音响"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/YyxConf.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/YyxConf.java new file mode 100644 index 000000000..66fc982b2 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/config/YyxConf.java @@ -0,0 +1,22 @@ +package com.bsd.pjcloud.hard.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "yyx") +@Data +public class YyxConf { + + private String url; + + /** + * 模板 + * ${price}-价格 + * ${phone-last}-手机尾号 + * 浦江智慧后勤,收款${price}元 + */ + private String template; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/YyxService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/YyxService.java new file mode 100644 index 000000000..75978f66a --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/YyxService.java @@ -0,0 +1,11 @@ +package com.bsd.pjcloud.hard.service; + +/** + * @author liusiyang_dxm + * @since 2026/4/28 + */ +public interface YyxService { + + void send(Long mchId, Integer payPrice, String phone); + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index ab0230ed4..87bd66fbc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -161,6 +161,7 @@ public class HardOrderServiceImpl extends ServiceImpl yyxList = hardManagerMapper.selectList(new LambdaQueryWrapper().eq(HardManagerEntity::getMerchantId, mchId) + .eq(HardManagerEntity::getType, HardTypeEnum.YYX.getType()) + ); + if (ObjectUtil.isEmpty(yyxList)) { + return; + } + + String yuanPrice = fenToYuan(payPrice); + String lastPhone = phoneToLastPhone(phone); + + String template = yyxConf.getTemplate(); + + // 把`template`中的`${price}`替换为`yuanPrice` + template = template.replace("${price}", yuanPrice); + // 把`template`中的`${phone}`替换为`lastPhone` + template = template.replace("${phone-last}", lastPhone); + + + String finalTemplate = template; + yyxList.forEach(v -> httpSend(v.getUniqueCode(), finalTemplate)); + } + + private boolean httpSend(String deviceId, String msg) { + String msgid = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + RandomUtil.randomString(8); + try { + HashMap data = new HashMap<>(); + data.put("cmd", "voice"); + data.put("msg", msg); + data.put("msgid", msgid); + + HashMap body = new HashMap<>(); + body.put("sbx_id", deviceId); + body.put("agent_id", JSONUtil.toJsonStr(data)); + + String res = HttpUtil.post(yyxConf.getUrl(), JSONUtil.toJsonStr(body)); + if (ObjectUtil.isEmpty(res)) { + log.error("|{}|发送失败,返回结果为空", TAG); + return false; + } + JSON resJson = JSONUtil.parse(res); + String requestId = resJson.getByPath("RequestId", String.class); + if (ObjectUtil.isEmpty(requestId)) { + log.error("|{}|发送失败,返回结果错误res:|{}|", res, TAG); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + log.error("|{}|发送失败,异常:{}", TAG, e.getMessage()); + return false; + } + } + + private String phoneToLastPhone(String phone) { + if (ObjectUtil.isEmpty(phone)) { + return ""; + } + return phone.substring(phone.length() - 4); + } + + private String fenToYuan(Integer payPrice) { + if (ObjectUtil.isEmpty(payPrice)) { + return "0"; + } + BigDecimal fen = new BigDecimal(payPrice); + return fen.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString(); + } + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java index 44aaf55e7..e86265ce8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargePackageController.java @@ -27,9 +27,6 @@ import java.util.List; /** * 充值套餐表 - * - * @author dzc - * @date 2025-01-03 18:33:55 */ @RestController @RequiredArgsConstructor @@ -66,7 +63,10 @@ public class WalletRechargePackageController { @Operation(summary = "查询全部", description = "查询全部") @GetMapping("/app/list") public R appList() { - return R.ok(walletRechargePackageService.list(new LambdaQueryWrapper<>())); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.orderByAsc(WalletRechargePackageEntity::getPayPrice); + wrapper.orderByDesc(WalletRechargePackageEntity::getCreateTime); + return R.ok(walletRechargePackageService.list(wrapper)); } /* ************************************* end app end ************************************* */ @@ -75,6 +75,7 @@ public class WalletRechargePackageController { @PreAuthorize("@pms.hasPermission('wallet_walletRechargePackage_view')") public R getWalletRechargePackagePage(@ParameterObject Page page, @ParameterObject WalletRechargePackageEntity walletRechargePackage) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.orderByAsc(WalletRechargePackageEntity::getPayPrice); wrapper.orderByDesc(WalletRechargePackageEntity::getCreateTime); return R.ok(walletRechargePackageService.page(page, wrapper)); }