Przeglądaj źródła

提货订单批量发送短信

cup 2 lat temu
rodzic
commit
5081701e60

+ 28 - 14
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Supplier;
 import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
 import com.qs.mp.admin.domain.param.UserDeliverOrderShipParam;
+import com.qs.mp.admin.domain.param.UserDeliverOrderSmsParam;
 import com.qs.mp.admin.service.ISupplierService;
 import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
@@ -14,6 +15,7 @@ import com.qs.mp.common.enums.BusinessType;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
 import com.qs.mp.common.enums.DeliverTypeEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
+import com.qs.mp.common.jsms.JSMSUtils;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
@@ -59,23 +61,35 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 	@Autowired
 	private IUserDeliverOrderItemService userDeliverOrderItemService;
 
-	@Autowired
-	private ISupplierService supplierService;
 
-//	@Autowired
-//	private IUserPrizeStorageService userPrizeStorageService;
-//
-//	@Autowired
-//	private IUserAddrService userAddrService;
-//
-//	@Autowired
-//	private IWalletService walletService;
+	public static void main(String[] args) {
+		StringBuilder context = new StringBuilder();
+		context.append("Apple iPhone 13 Pro (A2639) 256GB 远峰蓝色 支持移动联通电信5G 双卡双待手机,啊外星人ALIENWARE m15 R6 15.6英寸高端游戏本11代8核i7 16G 512G RTX3060 165Hz CherryApple iPhone 13 Pro (A2639) 256GB 远峰蓝色 支持移动联通电信5G 双卡双待手机支持移动联通电信5G 双卡双待手机啊塞阀扥阿复赛发送");
+		String substring = context.substring(0, Math.min(context.length(), 200));
+		System.out.println("substring = " + substring);
+	}
 
-	@Autowired
-	private MapperFacade mapperFacade;
+	@PostMapping("/sendSMS")
+	@ApiOperation("发送短信")
+	public AjaxResult sendSMS(@RequestBody List<UserDeliverOrderSmsParam> paramList) {
+		for (UserDeliverOrderSmsParam userDeliverOrderSmsParam : paramList) {
+			String orderNo = userDeliverOrderSmsParam.getOrderId()
+				.substring(userDeliverOrderSmsParam.getOrderId().length() - 4);
+			String mobile = userDeliverOrderSmsParam.getMobile();
+			StringBuilder sb = new StringBuilder();
+			for (int i = 0; i < userDeliverOrderSmsParam.getGoodsNameList().size(); i++) {
+				sb.append(userDeliverOrderSmsParam.getGoodsNameList().get(i));
+				if (i != userDeliverOrderSmsParam.getGoodsNameList().size() - 1) {
+					sb.append(",");
+				}
+			}
+			// 截取最长长度
+			String context = sb.substring(0, Math.min(sb.length(), 200));
+			JSMSUtils.sendDeliverSMS(mobile, orderNo, context);
+		}
+		return AjaxResult.success();
+	}
 
-//	@Autowired
-//	private RedisCache redisCache;
 
 	/**
 	 * 用户提货订单列表

+ 33 - 6
mp-common/src/main/java/com/qs/mp/common/jsms/JSMSUtils.java

@@ -26,6 +26,8 @@ import com.qs.mp.common.enums.ServerEnvEnum;
 import com.qs.mp.common.utils.LogUtil;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections4.map.HashedMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -52,19 +54,44 @@ public class JSMSUtils {
 //        testSendTemplateSMS();
     }
 
+    /**
+     * 提货短信发送
+     * @param mobile    手机号
+     * @param orderNo   订单尾号
+     * @param context   内容
+     */
+    public static SendSMSResult sendDeliverSMS(String mobile,String orderNo ,String context) {
+        SMSClient client = new SMSClient(masterSecret, appkey);
+        Map<String, String> map = new HashedMap<>();
+        map.put("number", orderNo);
+        map.put("context", context);
+        SMSPayload payload = SMSPayload.newBuilder().setMobileNumber(mobile).setTempId(209720).setTempPara(map).build();
+        try {
+                SendSMSResult res = client.sendTemplateSMS(payload);
+                logger.info(res.toString());
+                return res;
+        } catch (APIConnectionException e) {
+            logger.error("Connection error. Should retry later. " + e.getMessage());
+        } catch (APIRequestException e) {
+            logger.error("Error response from JPush server. Should review and fix it. " + e.getMessage());
+        }
+        return null;
+    }
+
+
     public static SendSMSResult sendSMSCode(String mobile) {
         SMSClient client = new SMSClient(masterSecret, appkey);
         SMSPayload payload = SMSPayload.newBuilder().setMobileNumber(mobile).setTempId(1).build();
         try {
-            if (ServerEnvEnum.PROD.getCode().equals(env)) {
+//            if (ServerEnvEnum.PROD.getCode().equals(env)) {
                 SendSMSResult res = client.sendSMSCode(payload);
                 logger.info(res.toString());
                 return res;
-            } else {
-                logger.info("非生产环境,不发送短信验证码!" + mobile);
-                return (new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().create().fromJson("{\"msg_id\":\"123456789\"}", SendSMSResult.class);
-
-            }
+//            } else {
+//                logger.info("非生产环境,不发送短信验证码!" + mobile);
+//                return (new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().create().fromJson("{\"msg_id\":\"123456789\"}", SendSMSResult.class);
+//
+//            }
         } catch (APIConnectionException e) {
             logger.error("Connection error. Should retry later. " + e.getMessage());
         } catch (APIRequestException e) {

+ 31 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserDeliverOrderSmsParam.java

@@ -0,0 +1,31 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * 用户提货订单短信发送入参类
+ * @author Cup
+ * @date 2022/7/5
+ */
+@ApiModel("用户提货订单短信发送入参类")
+@Data
+public class UserDeliverOrderSmsParam {
+
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty("订单号")
+    private String orderId;
+
+    @NotBlank(message = "手机号不能为空")
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @NotNull(message = "商品名称不能为空")
+    @ApiModelProperty("商品名称列表")
+    private List<String> goodsNameList;
+
+}