From a1f0999368dcbefa632428e48855be2f95df27df Mon Sep 17 00:00:00 2001
From: yuanye <418471657@qq.com>
Date: Wed, 16 Apr 2025 10:46:20 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=B7=E6=A0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bweb/pom.xml | 11 ++
.../com/bweb/controller/TestController.java | 55 +++++-
.../controller/goods/GoodsController.java | 31 ++-
.../controller/output/OutputController.java | 61 ++++++
.../order/consumer/OrderCancelConsumer.java | 14 +-
service/pom.xml | 11 ++
.../com/hfkj/config/AliMessageConfig.java | 47 +++++
.../com/hfkj/config/PkgAnalyzeConfig.java | 100 ++++++++++
.../java/com/hfkj/config/ShanGaoConfig.java | 185 ++++++++++++++++++
.../java/com/hfkj/jd/Impl/JdServiceImpl.java | 3 +-
.../com/hfkj/model/OpenAccountRequestDto.java | 32 +++
user/pom.xml | 6 +
.../com/user/controller/SmsController.java | 2 +-
13 files changed, 549 insertions(+), 9 deletions(-)
create mode 100644 service/src/main/java/com/hfkj/config/AliMessageConfig.java
create mode 100644 service/src/main/java/com/hfkj/config/PkgAnalyzeConfig.java
create mode 100644 service/src/main/java/com/hfkj/config/ShanGaoConfig.java
create mode 100644 service/src/main/java/com/hfkj/model/OpenAccountRequestDto.java
diff --git a/bweb/pom.xml b/bweb/pom.xml
index ab1bd59..efac53e 100644
--- a/bweb/pom.xml
+++ b/bweb/pom.xml
@@ -38,6 +38,17 @@
2.0
${basedir}/lib/open-api-sdk-2.0-jd.jar
+
+ com.aliyun
+ dysmsapi20170525
+ 3.0.0
+ compile
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.39.104.ALL
+
diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java
index 8b1a677..ee18064 100644
--- a/bweb/src/main/java/com/bweb/controller/TestController.java
+++ b/bweb/src/main/java/com/bweb/controller/TestController.java
@@ -1,17 +1,23 @@
package com.bweb.controller;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dysmsapi20170525.Client;
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.*;
+import com.hfkj.config.AliMessageConfig;
import com.hfkj.config.CommonSysConst;
+import com.hfkj.config.ShanGaoConfig;
import com.hfkj.entity.*;
import com.hfkj.haioil.HaiOilService;
import com.hfkj.jd.JdPostService;
import com.hfkj.jd.JdService;
import com.hfkj.mer.BsMerPayConfigService;
+import com.hfkj.model.OpenAccountRequestDto;
import com.hfkj.model.ResponseData;
import com.hfkj.model.goods.JdGoodsModel;
@@ -190,7 +196,20 @@ public class TestController {
}
}
+ @RequestMapping(value="/cancelOrder",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "cancelOrder")
+ public ResponseData cancelOrder(@RequestParam(value = "thirdOrderNo", required = false) String thirdOrderNo,
+ @RequestParam(value = "childOrderNo", required = false) String childOrderNo) {
+ try {
+ JdPostService.cancelOrder(jdService.getToken(), Long.valueOf(thirdOrderNo), childOrderNo , "取消订单!");
+ return ResponseMsgUtil.success("取消");
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
@RequestMapping(value="/automaticData",method = RequestMethod.GET)
@@ -294,10 +313,18 @@ public class TestController {
+ @RequestMapping(value="/aliMessage",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "阿里云短信推送")
+ public ResponseData aliMessage() {
+ try {
+ return ResponseMsgUtil.success(AliMessageConfig.sendSmsCode("18090580471" , "123654" , "SMS_480970320"));
-
-
-
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
@RequestMapping(value="/getOrderCancelProcessDetail",method = RequestMethod.GET)
@@ -314,6 +341,28 @@ public class TestController {
}
+ @RequestMapping(value="/shanGaoUrl",method = RequestMethod.GET)
+ @ResponseBody
+ @ApiOperation(value = "山高地址")
+ public ResponseData shanGaoUrl() {
+ try {
+
+ OpenAccountRequestDto openAccountRequestDto = new OpenAccountRequestDto();
+ openAccountRequestDto.setMethod("POST");
+ openAccountRequestDto.setMobile("18090580471");
+ openAccountRequestDto.setSource(ShanGaoConfig.sourceQwl);
+ String bizResponse = ShanGaoConfig.sendMessage("/product/common/inside/open_account",
+ JSON.toJSONString(openAccountRequestDto) , ShanGaoConfig.appidQwl , ShanGaoConfig.homeQwlPrivateKey , ShanGaoConfig.originQwlPublicKey);
+ JSONObject jsonObject = JSON.parseObject(bizResponse);
+ String url = "https://fin.etcsd.com/lionb/index.html?source=" + ShanGaoConfig.sourceQwl + "&marketcode=" + ShanGaoConfig.marketcodQwl + "&userId=" + jsonObject.getString("result");
+ return ResponseMsgUtil.success(url);
+
+ } catch (Exception e) {
+ log.error("error!",e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
+
diff --git a/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java b/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java
index 00f761f..4e1035c 100644
--- a/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java
+++ b/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java
@@ -9,9 +9,11 @@ import com.hfkj.common.exception.SysCode;
import com.hfkj.common.security.SessionObject;
import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.PageUtil;
+import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.*;
import com.hfkj.jd.JdService;
+import com.hfkj.model.CmsContentModel;
import com.hfkj.model.ResponseData;
import com.hfkj.model.SecUserSessionObject;
import com.hfkj.model.goods.GoodsModel;
@@ -27,6 +29,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@@ -57,12 +60,18 @@ public class GoodsController {
@Resource
private GoodsVpdService goodsVpdService;
-
+ @Autowired
+ private RedisUtil redisUtil;
@Resource
private JdService jdService;
@Resource
private CouponDiscountService couponDiscountService;
+ // 缓存前缀KEY
+ public final static String CACHE_KEY = "GOODS_TYPE:";
+ // 订单缓存时间 24小时
+ public final static Integer CACHE_TIME = 60*60*24;
+
@RequestMapping(value="/getListGoodsType",method = RequestMethod.GET)
@ResponseBody
@@ -117,6 +126,8 @@ public class GoodsController {
@RequestParam(value = "discountId", required = false) Integer discountId,
@RequestParam(value = "goodsBrand", required = false) Long goodsBrand,
@RequestParam(value = "price", required = false) Integer price,
+ @RequestParam(value = "cache", required = false) Integer cache,
+ @RequestParam(value = "rand", required = false) Integer rand,
@RequestParam(value = "type", required = false) Integer type,
@RequestParam(value = "saleNum", required = false) Integer saleNum,
@RequestParam(value = "limit", required = false) Integer limit,
@@ -160,12 +171,28 @@ public class GoodsController {
Map mapSpecs = new HashMap<>();
mapSpecs.put("discountId", discountId);
+
// 查询规格可用优惠券
List couponDiscountGoodsRel = couponDiscountService.getListGoodsRel(mapSpecs);
List sp = couponDiscountGoodsRel.stream().map(CouponDiscountGoodsRel::getSpecsId).collect(Collectors.toList());
map.put("specsId", sp);
}
- List list = goodsMsgService.getListCrest(map);
+ List list;
+ if (cache != null && cache == 1) {
+ Object cacheObj = redisUtil.get(CACHE_KEY+goodsTypeParent);
+ if (cacheObj != null) {
+ list = (List) cacheObj;
+ } else {
+ if (rand != null && rand == 1) {
+ map.put("rand", rand);
+ map.put("sort", null);
+ }
+ list = goodsMsgService.getListCrest(map);
+ redisUtil.set(CACHE_KEY + goodsTypeParent, list, CACHE_TIME);
+ }
+ } else {
+ list = goodsMsgService.getListCrest(map);
+ }
// return ResponseMsgUtil.success(list);
diff --git a/cweb/src/main/java/com/cweb/controller/output/OutputController.java b/cweb/src/main/java/com/cweb/controller/output/OutputController.java
index 7804f8b..378bea3 100644
--- a/cweb/src/main/java/com/cweb/controller/output/OutputController.java
+++ b/cweb/src/main/java/com/cweb/controller/output/OutputController.java
@@ -1,5 +1,6 @@
package com.cweb.controller.output;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.api.ApiMerService;
import com.hfkj.common.exception.ErrorCode;
@@ -8,7 +9,9 @@ import com.hfkj.common.exception.SysCode;
import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.common.utils.SignatureUtil;
+import com.hfkj.config.ShanGaoConfig;
import com.hfkj.entity.*;
+import com.hfkj.model.OpenAccountRequestDto;
import com.hfkj.model.ResponseData;
import com.hfkj.model.UserSessionObject;
import com.hfkj.service.SecDictionaryService;
@@ -96,6 +99,64 @@ public class OutputController {
}
+ @RequestMapping(value = "/getShanGaoUrl", method = RequestMethod.POST)
+ @ResponseBody
+ @ApiOperation(value = "获取山高路径")
+ public ResponseData getShanGaoUrl(@RequestBody JSONObject body) {
+ try {
+
+ if (body == null
+ || StringUtils.isBlank(body.getString("type"))
+ || StringUtils.isBlank(body.getString("phone"))
+ || StringUtils.isBlank(body.getString("sign"))
+ || StringUtils.isBlank(body.getString("appid"))
+ ) {
+ log.error("LoginController --> phone() error!", "请求参数校验失败");
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
+ }
+
+ // 查询api商户信息
+ ApiMer apiMer = apiMerService.queryDetail(body.getString("appid"));
+
+ Map map = new HashMap<>();
+ map.put("appid" , body.getString("appid"));
+ map.put("phone" , body.getString("phone"));
+ map.put("type" , body.getInteger("type"));
+ String sign = SignatureUtil.createSign(map , apiMer.getAppSecret());
+ if (!body.getString("sign").equals(sign)) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "签名校验失败!");
+ }
+
+ OpenAccountRequestDto openAccountRequestDto = new OpenAccountRequestDto();
+ openAccountRequestDto.setMethod("POST");
+ openAccountRequestDto.setMobile(body.getString("phone"));
+ String url = "";
+ // 1:嗨森逛 2:黔物联
+ if (body.getInteger("type") == 1) {
+
+ openAccountRequestDto.setSource(ShanGaoConfig.sourceHsg);
+ String bizResponse = ShanGaoConfig.sendMessage("/product/common/inside/open_account",
+ JSON.toJSONString(openAccountRequestDto) , ShanGaoConfig.appidHsg , ShanGaoConfig.homeHsgPrivateKey , ShanGaoConfig.originHsgPublicKey);
+ JSONObject jsonObject = JSON.parseObject(bizResponse);
+ url = "https://fin.etcsd.com/lionb/index.html?source=" + ShanGaoConfig.sourceHsg + "&marketcode=" + ShanGaoConfig.marketcodHsg + "&userId=" + jsonObject.getString("result");
+ } else if (body.getInteger("type") == 2) {
+ openAccountRequestDto.setSource(ShanGaoConfig.sourceQwl);
+ String bizResponse = ShanGaoConfig.sendMessage("/product/common/inside/open_account",
+ JSON.toJSONString(openAccountRequestDto) , ShanGaoConfig.appidQwl , ShanGaoConfig.homeQwlPrivateKey , ShanGaoConfig.originQwlPublicKey);
+ JSONObject jsonObject = JSON.parseObject(bizResponse);
+
+ url = "https://fin.etcsd.com/lionb/index.html?source=" + ShanGaoConfig.sourceQwl + "&marketcode=" + ShanGaoConfig.marketcodQwl + "&userId=" + jsonObject.getString("result");
+ }
+
+
+
+ return ResponseMsgUtil.success(url);
+
+ } catch (Exception e) {
+ log.error("GoodsDetailController --> getListUser() error!", e);
+ return ResponseMsgUtil.exception(e);
+ }
+ }
}
diff --git a/order/src/main/java/com/order/consumer/OrderCancelConsumer.java b/order/src/main/java/com/order/consumer/OrderCancelConsumer.java
index 13e0661..c7e59cf 100644
--- a/order/src/main/java/com/order/consumer/OrderCancelConsumer.java
+++ b/order/src/main/java/com/order/consumer/OrderCancelConsumer.java
@@ -1,7 +1,11 @@
package com.order.consumer;
+import com.hfkj.common.exception.ErrorCode;
+import com.hfkj.common.exception.ErrorHelp;
+import com.hfkj.common.exception.SysCode;
import com.hfkj.model.order.OrderModel;
import com.hfkj.service.order.BsOrderService;
+import com.hfkj.sysenum.order.OrderStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
@@ -19,7 +23,13 @@ public class OrderCancelConsumer implements RocketMQListener {
@Override
public void onMessage(OrderModel order) {
- // 取消订单
- orderService.cancel(order.getOrderNo(),true);
+ // 查询订单
+ OrderModel data = orderService.getDetail(order.getOrderNo());
+ if (data != null && data.getOrderStatus().equals(OrderStatusEnum.status1.getCode())) {
+ // 取消订单
+ orderService.cancel(data.getOrderNo(),true);
+ }
+
+
}
}
diff --git a/service/pom.xml b/service/pom.xml
index 4218c49..705b7b5 100644
--- a/service/pom.xml
+++ b/service/pom.xml
@@ -230,6 +230,12 @@
easyexcel
2.2.6
+
+ com.aliyun
+ dysmsapi20170525
+
+ 3.0.0
+
com.sun.jersey
jersey-client
@@ -255,6 +261,11 @@
commons-codec
1.11
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.39.104.ALL
+
meituan.skd
diff --git a/service/src/main/java/com/hfkj/config/AliMessageConfig.java b/service/src/main/java/com/hfkj/config/AliMessageConfig.java
new file mode 100644
index 0000000..8be1155
--- /dev/null
+++ b/service/src/main/java/com/hfkj/config/AliMessageConfig.java
@@ -0,0 +1,47 @@
+package com.hfkj.config;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
+import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import com.aliyun.teaopenapi.models.Config;
+import com.aliyun.dysmsapi20170525.Client;
+
+public class AliMessageConfig {
+
+
+
+ public static Client createClient() throws Exception {
+ Config config = new Config()
+ // 配置 AccessKey ID,请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
+ .setAccessKeyId("LTAI5tP9XgTDu49zAAQLGAtJ")
+ // 配置 AccessKey Secret,请确保代码运行环境配置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
+ .setAccessKeySecret("bHESLcgX17KZ9amioQi7LNFDL51hoM");
+ // System.getenv()方法表示获取系统环境变量,不要直接在getenv()中填入AccessKey信息。
+
+ // 配置 Endpoint。中国站请使用dysmsapi.aliyuncs.com
+ config.endpoint = "dysmsapi.aliyuncs.com";
+
+ return new Client(config);
+ }
+
+ public static SendSmsResponse sendSmsCode(String phone, String code , String templateCode) throws Exception{
+ // 初始化请求客户端
+ Client client = AliMessageConfig.createClient();
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("code",code);
+ jsonObject.put("number",phone);
+
+ // 构造API请求对象,请替换请求参数值
+ SendSmsRequest sendSmsRequest = new SendSmsRequest()
+ .setPhoneNumbers(phone)
+ .setSignName("重庆惠付科技有限公司")
+ .setTemplateCode(templateCode)
+ // TemplateParam为序列化后的JSON字符串。其中\"表示转义后的双引号。
+ .setTemplateParam(jsonObject.toJSONString());
+
+ // 获取响应对象
+
+ return client.sendSms(sendSmsRequest);
+ }
+}
diff --git a/service/src/main/java/com/hfkj/config/PkgAnalyzeConfig.java b/service/src/main/java/com/hfkj/config/PkgAnalyzeConfig.java
new file mode 100644
index 0000000..8dcfe72
--- /dev/null
+++ b/service/src/main/java/com/hfkj/config/PkgAnalyzeConfig.java
@@ -0,0 +1,100 @@
+package com.hfkj.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Logger;
+
+/**
+ *
+ * 解析内部http请求包 http1.0、不使用URLENCODE、编码格式默认UTF-8
+ *
+ * @author yuhanyang
+ * @version [版本号, 2014年12月2日]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public class PkgAnalyzeConfig
+{
+ private static final Logger LOGGER = Logger.getLogger(PkgAnalyzeConfig.class.getName());
+
+
+ /**
+ * 从输入流中读出所有字节
+ *
+ * @param is 输入流
+ * @return 字节数组
+ * @throws Exception
+ */
+ public static byte[] getBytesFromStream(InputStream is)
+ throws Exception
+ {
+ byte[] buffer = new byte[1024];
+ byte[] all = null;
+ int rlegth = 0;
+
+ while ((rlegth = is.read(buffer)) != -1)
+ {
+ if (all == null)
+ {
+ all = new byte[rlegth];
+ System.arraycopy(buffer, 0, all, 0, rlegth);
+ }
+ else
+ {
+ byte[] bftmp = new byte[all.length];
+ System.arraycopy(all, 0, bftmp, 0, all.length);
+ all = new byte[all.length + rlegth];
+ System.arraycopy(bftmp, 0, all, 0, bftmp.length);
+ System.arraycopy(buffer, 0, all, bftmp.length, rlegth);
+ }
+ }
+
+ return all;
+ }
+
+ /**
+ * 从输入流中读取字符串
+ *
+ * @param is 输入流
+ * @param charset 字符串编码格式
+ * @return 字符串
+ * @throws Exception
+ */
+ public static String getStringFromStream(InputStream is, String charset)
+ throws Exception
+ {
+ byte all[] = getBytesFromStream(is);
+ return new String(all, charset);
+ }
+
+ // 从流中读取指定长度的字节
+ public static byte[] getFixedBytesFromStream(InputStream in, int length)
+ throws IOException
+ {
+ LOGGER.info("Begin Read of the InputStream...");
+ byte[] packBytes = new byte[length];
+ int readLen = in.read(packBytes, 0, length);
+ LOGGER.info("The [1] Read Length: " + readLen);
+ if (readLen < 0)
+ {
+ throw new IOException("The InputStream is Closed!");
+ }
+ int soReadLength = readLen;
+ int noReadLength = length - soReadLength;
+ int readTimes = 1;
+ while (noReadLength > 0)
+ {
+ readTimes++;
+ readLen = in.read(packBytes, soReadLength, noReadLength);
+ LOGGER.info("The [" + readTimes + "] Read Length: " + readLen);
+ if (readLen < 0)
+ {
+ break;
+ }
+ soReadLength = soReadLength + readLen;
+ noReadLength = length - soReadLength;
+ }
+ LOGGER.info("End Read of the InputStream...");
+ return packBytes;
+ }
+}
diff --git a/service/src/main/java/com/hfkj/config/ShanGaoConfig.java b/service/src/main/java/com/hfkj/config/ShanGaoConfig.java
new file mode 100644
index 0000000..e5f91bb
--- /dev/null
+++ b/service/src/main/java/com/hfkj/config/ShanGaoConfig.java
@@ -0,0 +1,185 @@
+package com.hfkj.config;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.alipay.api.internal.util.AlipaySignature;
+import com.hfkj.common.pay.entity.AliPayReqInfo;
+import com.hfkj.common.utils.HttpsUtils;
+import io.netty.handler.codec.http.HttpUtil;
+
+import javax.net.ssl.SSLSocketFactory;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.UUID;
+import java.util.logging.Logger;
+
+public class ShanGaoConfig {
+
+ // FinanceGateway测试的调用地址 https://tsfin-fin-test.xlkeji.net/gateway/openapi/v2
+
+ // FinanceGateway生产的调用地址:https://fin.etcsd.com/gateway/openapi/v2
+ private static final String prodUrl = "https://fin.etcsd.com/gateway/openapi/v2";
+
+ // 第三方的私钥,生成地址:https://www.bejson.com/enc/rsa/,秘钥长度最好选择512bit
+ // 生成完成密钥对,提供公钥给山高信联,私钥填写homePrivateKey值,注意去掉回行符号
+ public static final String homeHsgPrivateKey = "MIIBVwIBADANBgkqhkiG9w0BAQEFAASCAUEwggE9AgEAAkEA31zt6gmGLlOwKX29yLrHPamNJq1KIkmHZOdKYMGmz1U1g3OAQU7Uttq8VH3nVC6ITQ5CrmNYb1VVfnCFBqfU5wIDAQABAkEA2dy3hkZh5X/lXKLz4P0lZySgs6/klkrnz+i1KGjaPnDIODHlRI2uFkYswhj29sJKL8mHHK1ARhy8YW7w3uOB2QIhAPpXX4leMAAFLR6WQ/RnIwks8V59aCtVG4E7XEfMjU8LAiEA5Glxf8QdhtYpOYqa+THRkjQ/CGj7q0G7v1sv0KxMqxUCIQD4Hj8fTE3wxzCX/0Ds7IgKIRQ9nbfwMtMm++mTdAaeTwIhAL653XBWjmE9CwdlWaqjkt+GiOu43g1OwjszJWYVuZ9RAiEAj1eh8EKwGSQlHP6gxz0FFGPoHApk+MKglhcXddOYVuQ=";
+ public static final String homeQwlPrivateKey = "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAluzRK15LPIbOxsEr42Nzwk7YPgWfVOIg+QfLkouzD2bpUt9FZ3crSk8bUVGlAeAG0JteTGhwceHoEp0kF4UxywIDAQABAkB7NRbI3bBz1+Vj8fyfI+gzXuQ/NZ3N0NB0G/3/Q1ZJIkwzatq0yEmyq51jSr2MAe1wdDdPiKgYMZN0bo/Ss6LRAiEAxm8iOdS/8iu028wTIXf8wWfUTnPuRSpriL+lPsJWEPMCIQDCtWLlYZ4HLKKkAoOF85Ij2b4U544GDFEuOcGebFdRyQIhAKPt2YuHC49HtiDCZaeHlWI9oXGyakvvcGjHUf8X0rwrAiABFyDxpeVLpv1WK8luw5lq5/o/hbhu4jzGJH6oE3U9uQIhAKZFMiv9k/FBVtKMBWM+HWoheFIQB/J6UXg3qTvJCi4T";
+ // 山高信联提供的的公钥
+ public static final String originHsgPublicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJpcnJO7WXtriUcoogINLne6l3OsOS6lcmRHClbLguCjN6sCEVmslucSZXB+LimvJO3+efJu7WXg5obY1mKwexUCAwEAAQ==";
+ public static final String originQwlPublicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANHjdKupahgGKslSi0DvEKS+owL5LL6jOrFumW9eL/81ieeaEDXJOHa1XmPTJO6+zQjOvqS0FFtNAMBNvIg8kkMCAwEAAQ==";
+ // 请求响应参数编码
+ private static final String charset = "UTF-8";
+
+ // 由山高信联分配给第三方的appid
+ public static final String appidHsg = "XL_PARTNER_HAISENGUANG";
+ public static final String appidQwl = "XL_PARTNER_QWLJCJPZHPT";
+ public static final String marketcodHsg = "7711147302";
+ public static final String marketcodQwl = "7711147375";
+ public static final String sourceHsg = "319";
+ public static final String sourceQwl = "320";
+
+ private static final Logger log = Logger.getLogger("ShanGaoConfig");
+
+
+ public static String sendMessage(String uri, String bizContent , String appid , String homePrivateKey , String originPublicKey) throws Exception {
+ String url = prodUrl + uri;
+
+ Map sortedParams = new TreeMap<>();
+
+ sortedParams.put("appid", appid);
+ sortedParams.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
+ sortedParams.put("sign_type", "RSA2");
+ sortedParams.put("timestamp", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+ sortedParams.put("version", "1.0");
+ sortedParams.put("biz_content", bizContent);
+
+ String signContent = AlipaySignature.getSignContent(sortedParams);
+
+ log.info("Signature data " + signContent);
+
+ String signature = AlipaySignature.rsa256Sign(signContent, homePrivateKey, charset);
+
+ log.info("Signature result " + signature);
+
+ sortedParams.put("sign", signature);
+
+ Iterator> iterator = sortedParams.entrySet().iterator();
+
+ int i = 0;
+
+ StringBuffer buffer = new StringBuffer();
+
+ while(iterator.hasNext())
+ {
+
+ Map.Entry next = iterator.next();
+ if(i==0){
+
+ i++;
+ }else{
+ buffer.append("&");
+ }
+
+ String param = next.getKey() + "=" + URLEncoder.encode(next.getValue(), charset);
+
+ buffer.append(param);
+
+ }
+
+ String requestBody = buffer.toString();
+ log.info("Request url " + url);
+
+ log.info("Request body " + requestBody);
+
+ String responseBody = post(url, requestBody);
+
+
+ JSONObject jsonObject = JSON.parseObject(responseBody, Feature.OrderedField);
+
+ String sign = jsonObject.getString("sign");
+ String bizResponse = jsonObject.getString("biz_response");
+
+ log.info("Sign str: "+ bizResponse);
+
+
+ boolean rsa256CheckContent = AlipaySignature.rsa256CheckContent(bizResponse, sign, originPublicKey, charset);
+
+ log.info("Check sign " + rsa256CheckContent);
+
+ return bizResponse;
+ }
+
+ private static String post(String strUrl, String strMsg) throws Exception
+ {
+ Socket s = null;
+
+ try
+ {
+ URL url = new URL(strUrl);
+ String uri = url.getFile();
+ String ip = url.getHost();
+ int port = url.getPort();
+ String protocol = url.getProtocol();
+ if (-1 == port)
+ {
+ if ("https".equals(protocol))
+ {
+ port = 443;
+ }
+ else
+ {
+ port = 80;
+ }
+ }
+ if ("https".equals(protocol)) {
+ s = SSLSocketFactory.getDefault().createSocket(ip, port);
+ }else {
+ s = new Socket(ip, port);
+ }
+ s.setSoTimeout(60000);
+ int len = strMsg.getBytes(charset).length;
+ String httpHead = "";
+ httpHead += "POST " + uri + " HTTP/1.0\r\n";
+ httpHead += "Host: " + ip + ":" + port + "\r\n";
+ httpHead += "Accept: text/html,application/xhtml+xml,application/json,application/xml;q=0.9,*/*;q=0.8\r\n";
+ httpHead += "Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n";
+ httpHead += "Accept-Encoding: \r\n";
+ httpHead += "Content-Type: application/x-www-form-urlencoded;charset=" + charset + "\r\n";
+ httpHead += "Content-length: " + len + "\r\n";
+ httpHead += "\r\n";
+
+ String sendStr = httpHead + strMsg;
+ log.info("The HTTP Request : " + sendStr);
+
+ OutputStream os = s.getOutputStream();
+ os.write(sendStr.getBytes(charset));
+ os.flush();
+
+ InputStream is = s.getInputStream();
+ String strRet = PkgAnalyzeConfig.getStringFromStream(is, charset);
+ log.info("The HTTP Response : " + strRet);
+
+ int sie = strRet.indexOf("\r\n\r\n", 0) < 0 ? 0 : strRet.indexOf("\r\n\r\n", 0);
+
+ return strRet.substring(sie).trim();
+ }
+ finally
+ {
+ if (null != s && !s.isClosed())
+ {
+ s.close();
+ s = null;
+ }
+ }
+ }
+
+}
diff --git a/service/src/main/java/com/hfkj/jd/Impl/JdServiceImpl.java b/service/src/main/java/com/hfkj/jd/Impl/JdServiceImpl.java
index 308d8d5..d120a0c 100644
--- a/service/src/main/java/com/hfkj/jd/Impl/JdServiceImpl.java
+++ b/service/src/main/java/com/hfkj/jd/Impl/JdServiceImpl.java
@@ -34,6 +34,7 @@ import com.jd.open.api.sdk.response.vopsp.VopGoodsGetSkuPoolInfoResponse;
import com.jd.open.api.sdk.response.vopsp.VopGoodsGetSkuStateListResponse;
import com.jd.open.api.sdk.response.vopxx.VopMessageQueryTransByVopNormalResponse;
import org.apache.commons.collections4.ListUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -460,7 +461,7 @@ public class JdServiceImpl implements JdService {
public void cancelOrder(String childNo){
try {
BsOrderGoods orderGoods = bsOrderGoodsService.findGoodsOrderByChild(childNo);
- if (orderGoods.getThirdOrderNo() != null) {
+ if (orderGoods != null && StringUtils.isNotBlank(orderGoods.getThirdOrderNo())) {
JdPostService.cancelOrder(getToken(), Long.valueOf(orderGoods.getThirdOrderNo()), orderGoods.getChildOrderNo() , "取消订单!");
}
} catch (Exception e) {
diff --git a/service/src/main/java/com/hfkj/model/OpenAccountRequestDto.java b/service/src/main/java/com/hfkj/model/OpenAccountRequestDto.java
new file mode 100644
index 0000000..1003c7d
--- /dev/null
+++ b/service/src/main/java/com/hfkj/model/OpenAccountRequestDto.java
@@ -0,0 +1,32 @@
+package com.hfkj.model;
+
+public class OpenAccountRequestDto {
+
+ String method;
+ String mobile;
+ String source;
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public void setSource(String source) {
+ this.source = source;
+ }
+}
diff --git a/user/pom.xml b/user/pom.xml
index 97d4dda..19a39fa 100644
--- a/user/pom.xml
+++ b/user/pom.xml
@@ -32,6 +32,12 @@
2.0
${basedir}/lib/open-api-sdk-2.0-jd.jar
+
+ com.aliyun
+ dysmsapi20170525
+ 3.0.0
+ compile
+
diff --git a/user/src/main/java/com/user/controller/SmsController.java b/user/src/main/java/com/user/controller/SmsController.java
index fb7b3a6..dc3b1e1 100644
--- a/user/src/main/java/com/user/controller/SmsController.java
+++ b/user/src/main/java/com/user/controller/SmsController.java
@@ -1 +1 @@
-package com.user.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.MemberValidateUtil;
import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.config.MessageConfig;
import com.hfkj.model.ResponseData;
import com.hfkj.service.user.BsUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.Random;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/sms")
@Api(value = "短信服务")
public class SmsController {
private static Logger log = LoggerFactory.getLogger(SmsController.class);
@Resource
private RedisUtil redisUtil;
@RequestMapping(value = "/sendLoginSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取登录验证码")
public ResponseData sendLoginSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
MessageConfig.req(phone,smsCode, MessageConfig.HWMSG_ID7);
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/sendBindCardSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取绑定卡片验证码")
public ResponseData sendBindCardSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
MessageConfig.req(phone,smsCode, MessageConfig.HWMSG_ID7);
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}
\ No newline at end of file
+package com.user.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.MemberValidateUtil;
import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.config.AliMessageConfig;
import com.hfkj.model.ResponseData;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.Random;
/**
* @Auther: 胡锐
* @Description:
* @Date: 2021/3/26 23:08
*/
@Controller
@RequestMapping(value = "/sms")
@Api(value = "短信服务")
public class SmsController {
private static Logger log = LoggerFactory.getLogger(SmsController.class);
@Resource
private RedisUtil redisUtil;
@RequestMapping(value = "/sendLoginSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取登录验证码")
public ResponseData sendLoginSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
AliMessageConfig.sendSmsCode(phone, smsCode , "SMS_480970320");
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/sendBindCardSMSCode", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取绑定卡片验证码")
public ResponseData sendBindCardSMSCode(@RequestBody JSONObject body) {
try {
if (body == null || StringUtils.isBlank(body.getString("phone"))) {
log.error("LoginController --> phone() error!", "请求参数校验失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
String phone = body.getString("phone");
// 校验手机号格式
if (MemberValidateUtil.validatePhone(phone) == false) {
log.error("LoginController --> phone() error!", "请输入正确的手机号");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号");
}
// 生成随机6位验证码
String smsCode = String.valueOf(new Random().nextInt(899999) + 100000);
AliMessageConfig.sendSmsCode(phone, smsCode , "SMS_480970320");
// 验证码缓存5分钟
redisUtil.set("SMS_CODE:"+phone, smsCode, 60*5);
return ResponseMsgUtil.success("短信发送成功");
} catch (Exception e) {
log.error("SMSController --> getLoginSMSCode() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}
\ No newline at end of file