From 5c87a3700273ab1490d29cf9b09ec6e06ffcdc1c Mon Sep 17 00:00:00 2001 From: syruan <321359594@qq.com> Date: Wed, 26 Feb 2025 18:11:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9C=81=E5=85=AC=E5=8F=B8=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus-common-biz/pom.xml | 7 ++ .../common/biz/constant/BmConfigItems.java | 3 + .../device/controller/DevInfoController.java | 1 + .../order/controller/OrderController.java | 3 + .../order/service/impl/OrderServiceImpl.java | 101 ++++++++---------- pom.xml | 6 ++ 6 files changed, 67 insertions(+), 54 deletions(-) diff --git a/bonus-common-biz/pom.xml b/bonus-common-biz/pom.xml index efa8a0b..617d37d 100644 --- a/bonus-common-biz/pom.xml +++ b/bonus-common-biz/pom.xml @@ -17,6 +17,13 @@ + + + com.ahsbd + sms-util + 1.0 + + org.springframework.cloud diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/BmConfigItems.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/BmConfigItems.java index 9be63db..808a8a2 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/BmConfigItems.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/BmConfigItems.java @@ -17,4 +17,7 @@ public class BmConfigItems { /** 物资状态流转: 【】允许一个新购单的部分物资提前流转到下一个阶段 */ public static final String BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER = "allow_purchase_part_transfer"; + // 安徽省公司短信平台key + public static final String ANHUI_COMPANY_SMS_KEY = "Wq1FZobZC5iJIAGKWh6gpKUmdGKBOQq7koHmx+Vg49g/dSjSFlw+2qRQmMmyXvJT"; + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/controller/DevInfoController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/controller/DevInfoController.java index 1908edd..54e28f1 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/controller/DevInfoController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/controller/DevInfoController.java @@ -99,6 +99,7 @@ public class DevInfoController extends BaseController { public AjaxResult hotList(DevInfoVo devInfo) { return devInfoService.selectDevInfoHotList(devInfo); } + @ApiOperation(value = "关联装备列表") @GetMapping("/associationList") public AjaxResult associationList(DevInfoVo devInfo) { diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java index b45a95a..57fb214 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java @@ -187,6 +187,9 @@ public class OrderController extends BaseController { if (CollectionUtils.isEmpty(list)) { return AjaxResult.error("请先上传合同"); } + if (list.get(0).getBmFileInfoList().isEmpty()) { + return AjaxResult.error("请先上传合同附件"); + } String wordUrl = list.get(0).getBmFileInfoList().get(0).getFileUrl(); String contractCode = list.get(0).getContractCode(); InputStream inputStream = new URL(wordUrl).openStream(); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index 8340fe1..ed9716f 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -1,7 +1,12 @@ package com.bonus.material.order.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.json.JSONObject; +import com.ah.sbd.SmsTool; +import com.ah.sbd.utils.param.BatchSmsByContentParam; +import com.ah.sbd.utils.param.SmsParam; import com.alibaba.fastjson2.JSONArray; +import com.bonus.common.biz.constant.BmConfigItems; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.enums.MaStatusEnum; import com.bonus.common.biz.enums.MessageTypeEnum; @@ -12,7 +17,6 @@ import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.SpringUtils; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.encryption.Sm4Utils; -import com.bonus.common.core.utils.sms.SmsUtils; import com.bonus.common.redis.service.RedisService; import com.bonus.common.security.service.SmsService; import com.bonus.common.security.utils.SecurityUtils; @@ -43,7 +47,6 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; /** * @Author:liang.chao @@ -74,10 +77,7 @@ public class OrderServiceImpl implements OrderService { @Resource private RedisService redisService; - @Resource - private SmsService smsService; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override @Transactional @@ -115,10 +115,11 @@ public class OrderServiceImpl implements OrderService { orderMapper.updateMaStatus(orderDetailDto); if (devPersonPhone != null) { if (devPersonPhone.length() == 11) { - String sendResult = SmsUtils.smsToken(devPersonPhone, "订单编号:" + code + "已下单,请尽快处理。", ""); - System.out.println("短信发送结果:" + sendResult); + JSONObject sendResult = SmsTool.sendSms(new SmsParam(devPersonPhone, "订单编号:" + code + "已下单,请尽快处理。"), BmConfigItems.ANHUI_COMPANY_SMS_KEY); + System.out.println("短信发送结果:" + sendResult.toString()); } else if (devPersonPhone.length() > 11) { - SmsUtils.smsToken(Sm4Utils.decrypt(devPersonPhone), "订单编号:" + code + "已下单,请尽快处理。", ""); + JSONObject sendResult = SmsTool.sendSms(new SmsParam(Sm4Utils.decrypt(devPersonPhone), "订单编号:" + code + "已下单,请尽快处理。"), BmConfigItems.ANHUI_COMPANY_SMS_KEY); + System.out.println("短信发送结果:" + sendResult.toString()); } else { System.err.println("-----------用户绑定手机号,格式异常!!!---------------"); } @@ -138,19 +139,6 @@ public class OrderServiceImpl implements OrderService { orderDetailDto.setOrderId(orderInfoDto.getOrderId()); orderMapper.insertOrderDetail(orderDetailDto); } - String loginUserPhone = SecurityUtils.getLoginUser().getSysUser().getPhonenumber(); - if (loginUserPhone != null && !loginUserPhone.isEmpty()) { - if (loginUserPhone.length() == 11) { - SmsUtils.smsToken(loginUserPhone, "订单编号:" + code + "已下单,请尽快处理。", ""); - } else if (loginUserPhone.length() > 11) { - SmsUtils.smsToken(Sm4Utils.decrypt(loginUserPhone), "订单编号:" + code + "已下单,请尽快处理。", ""); - } else { - System.err.println("-----------用户绑定手机号,格式异常!!!---------------"); - } - } else { - System.err.println("-----------用户未绑定手机号,获取登录手机号为空---------------"); - } - } TmTask tmTask = new TmTask(); tmTask.setTaskType(TmTaskTypeEnum.TM_TASK_ORDER.getTaskTypeId()); @@ -297,6 +285,7 @@ public class OrderServiceImpl implements OrderService { return orderInfoDto; } + @Override public Integer updateOrderStatus(OrderDetailDto orderInfoDto) { List dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId()); // 针对于接单操作,生成6位数取件码,合并出库和收货操作 @@ -357,9 +346,11 @@ public class OrderServiceImpl implements OrderService { // 订单完成,修改装备为下架状态 if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_FINISHED.getStatus().toString())) { if (!dtos.isEmpty() && CollectionUtil.isNotEmpty(dtos)) { + String orderCode = ""; if (CollectionUtil.isNotEmpty(orderInfoDto.getMaIds())) { for (OrderDetailDto dto : dtos) { if (orderInfoDto.getMaIds().contains(dto.getMaId())) { + orderCode = dto.getOrderCode(); dto.setMaStatus(MaStatusEnum.ON_HIRE.getCode().toString()); orderMapper.updateDeviceStatus(dto); } @@ -370,7 +361,7 @@ public class OrderServiceImpl implements OrderService { orderMapper.updateDeviceStatus(dto); } } - sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber(), dtos.get(0).getSellerPhoneNumber()), orderInfoDto.getOrderCode() + "订单已完成。"); + sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber(), dtos.get(0).getSellerPhoneNumber()), orderCode + "订单已完成。"); } } String userName = SecurityUtils.getLoginUser().getUsername(); @@ -383,16 +374,18 @@ public class OrderServiceImpl implements OrderService { tmTask.setTaskStatus(minOrderStatus.getAsInt()); tmTask.setCode(dtos.get(0).getOrderCode()); if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_PENDING_SHIPMENT.getStatus().toString()) || - orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_TERMINATED.getStatus().toString())) { + orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_TERMINATED.getStatus().toString())) + { tmTask.setNoticeCompanyId(tmTask.getBuyerCompanyId()); - sendMsgToSms(Collections.singletonList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已出库,请注意查收。"); + sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已接单,请注意查收。"); + } else if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_RECEIVE.getStatus().toString()) || orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_AWAITING_RECEIPT.getStatus().toString()) || orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString()) || - orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_REPAIRED.getStatus().toString())) { + orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_REPAIRED.getStatus().toString())) + { tmTask.setNoticeCompanyId(tmTask.getSellerCompanyId()); - sendMsgToSms(Collections.singletonList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已接单,待出库。"); - + sendMsgToSms(Arrays.asList(dtos.get(0).getBuyerPhoneNumber()), dtos.get(0).getOrderCode() + "订单已接单,请注意查收。"); } tmTaskMapper.updateTaskStatus(tmTask); } @@ -404,6 +397,9 @@ public class OrderServiceImpl implements OrderService { bmMessage.setCreateTime(DateUtils.getNowDate()); Map maMachineMap = remoteConfig.getDictValue(MaterialConstants.DICT_TYPE_ORDER_STATUS); bmMessage.setMessageContent("您好,您的订单状态已变更为" + maMachineMap.get(orderInfoDto.getOrderStatus()) + ",请及时查看"); + if (Objects.equals(orderInfoDto.getOrderStatus(), OrderStatusEnum.ORDER_AWAITING_RECEIPT.getStatus().toString())) { + sendMsgToSms(Arrays.asList(dto.getSellerPhoneNumber()), dto.getOrderCode() + "订单已确认收货。"); + } bmMessage.setMessageType(String.valueOf(MessageTypeEnum.ORDER_MESSAGE.getType())); bmMessage.setUuid(String.valueOf(UUID.randomUUID())); bmMessage.setFromCompany(0L); @@ -443,43 +439,40 @@ public class OrderServiceImpl implements OrderService { * @param phoneNumbers 电话号码列表,可能包含无效或重复的号码 * @param msg 要发送的短信消息内容 * @return 发送短信的结果,具体形式依赖于SmsUtils.smsToken的实现 - * 此方法首先检查电话号码列表是否为空如果为空,则直接返回空字符串接下来,它会移除列表中所有为空的电话号码, - * 然后对列表中超过11位的电话号码进行解密处理 - * 确保只有有效的电话号码被用来发送短信 + * 此方法首先检查电话号码列表是否为空,如果为空,则直接返回空字符串。 + * 接下来,它会移除列表中所有为空的电话号码, + * 然后对列表中超过11位的电话号码进行解密处理, + * 确保只有有效的电话号码被用来发送短信。 */ private String sendMsgToSms(List phoneNumbers, String msg) { - // 检查电话号码列表是否为空 - if (CollectionUtils.isEmpty(phoneNumbers)) { + // 检查电话号码列表和消息内容是否有效 + if (CollectionUtils.isEmpty(phoneNumbers) || StringUtils.isBlank(msg)) { return ""; } - // 先用迭代器 - Iterator iterator = phoneNumbers.iterator(); - while (iterator.hasNext()) { - String phoneNumber = iterator.next(); - if (StringUtils.isEmpty(phoneNumber)) { - iterator.remove(); - } - } + // 过滤掉无效的电话号码 + phoneNumbers.removeIf(StringUtils::isEmpty); - // 遍历电话号码列表 - for (String phoneNumber : phoneNumbers) { - if (StringUtils.isEmpty(phoneNumber)) { - continue; - } - // 对超过11位的电话号码进行解密处理 - if (phoneNumber.length() > 11) { - Sm4Utils.decrypt(phoneNumber); - } - } + // 对超过11位的电话号码进行解密处理 + phoneNumbers.replaceAll(phoneNumber -> + phoneNumber.length() > 11 ? Sm4Utils.decrypt(phoneNumber) : phoneNumber + ); - // 使用处理后的电话号码列表发送短信 - return SmsUtils.smsToken(String.join(",", phoneNumbers), msg, ""); + // 根据电话号码数量发送短信 + if (phoneNumbers.isEmpty()) { + return ""; + } else if (phoneNumbers.size() == 1) { + JSONObject sendResult = SmsTool.sendSms(new SmsParam(phoneNumbers.get(0), msg), BmConfigItems.ANHUI_COMPANY_SMS_KEY); + return sendResult.toString(); + } else { + JSONObject sendResult = SmsTool.sendSms(new BatchSmsByContentParam(phoneNumbers, msg), BmConfigItems.ANHUI_COMPANY_SMS_KEY); + return sendResult.toString(); + } } + /** * 生成六位随机数取件码 - * @return */ public static String generateSixDigitNumber() { // 生成一个六位数的随机数,范围是 100000 到 999999 diff --git a/pom.xml b/pom.xml index bdfa656..274698c 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,12 @@ ${bonus.version} + + com.ahsbd + sms-util + 1.0 + + com.bonus