省公司短信平台

This commit is contained in:
syruan 2025-02-26 18:11:52 +08:00
parent 6f3f7d9c32
commit 5c87a37002
6 changed files with 67 additions and 54 deletions

View File

@ -17,6 +17,13 @@
<dependencies>
<!-- 省公司短信平台sms-util -->
<dependency>
<groupId>com.ahsbd</groupId>
<artifactId>sms-util</artifactId>
<version>1.0</version>
</dependency>
<!-- SpringCloud Openfeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>

View File

@ -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";
}

View File

@ -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) {

View File

@ -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();

View File

@ -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;
/**
* @Authorliang.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<OrderDetailDto> 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<String, String> 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<String> phoneNumbers, String msg) {
// 检查电话号码列表是否为空
if (CollectionUtils.isEmpty(phoneNumbers)) {
// 检查电话号码列表和消息内容是否有效
if (CollectionUtils.isEmpty(phoneNumbers) || StringUtils.isBlank(msg)) {
return "";
}
// 先用迭代器
Iterator<String> 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

View File

@ -234,6 +234,12 @@
<version>${bonus.version}</version>
</dependency>
<dependency>
<groupId>com.ahsbd</groupId>
<artifactId>sms-util</artifactId>
<version>1.0</version>
</dependency>
<!-- 系统接口 -->
<dependency>
<groupId>com.bonus</groupId>