记得上下班打卡 | git大法好,push需谨慎

Commit 0cb4c755 authored by 胡佳晨's avatar 胡佳晨

Merge branch 'dev' into test

parents fedc2354 4110704e
......@@ -18,6 +18,7 @@ public class KylinRedisConst {
public static final String SURPLUS_EXCHANGE = "surplusExchange";
public static final String TICKET = "kylin:ticket:id:";
public static final String ORDER = "kylin:order:id:";
public static final String ORDER_ROUTE_INFO = "kylin::order:route_info:id:";
public static final String ORDER_ENTITIES = "kylin:order_entities:id:";
public static final String TIMES = "kylin:times:id:";
public static final String AGENT = "kylin:agent:info";
......
package com.liquidnet.service.kylin.dto.vo.express;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 快递路由信息
* </p>
*
* @author jiangxiulong
* @since 2021-06-30
*/
@Data
@ApiModel
public class KylinOrderExpressRouteVo implements Serializable {
@ApiModelProperty(value = "orderExpressRouteId")
private String orderExpressRouteId;
@ApiModelProperty(value = "orderExpressId")
private String orderExpressId;
@ApiModelProperty(value = "路由节点发生的城市")
private String acceptAddress;
@ApiModelProperty(value = "YYYY-MM-DD")
private String acceptDate;
@ApiModelProperty(value = "HH24:MM:SS")
private String acceptTime;
@ApiModelProperty(value = "YYYY-MM-DD HH24:MM:SS")
private String acceptTotaltime;
@ApiModelProperty(value = "路由节点具体描述")
private String remark;
@ApiModelProperty(value = "路由节点操作码")
private String opcode;
@ApiModelProperty(value = "createdAt")
private String createdAt;
@ApiModelProperty(value = "updatedAt")
private String updatedAt;
}
......@@ -86,11 +86,12 @@ public class ConsumerProcessor {
// 处理长sql语句
private void consumerOperationOrderClose(Message msg, Channel channel) {
String jsonStr = StringEscapeUtils.unescapeJava(new String(msg.getBody()));
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(jsonStr.substring(1,jsonStr.length()-1), OrderCloseMapping.orderCloseMessage.class);
log.debug("consumer ==> mqMessage:{}", mqMessage);
String jsonStr = StringEscapeUtils.unescapeJava(new String(msg.getBody()));
OrderCloseMapping.orderCloseMessage mqMessage = JsonUtils.fromJson(jsonStr.substring(1, jsonStr.length() - 1), OrderCloseMapping.orderCloseMessage.class);
log.debug("consumer ==> mqMessage:{}", mqMessage.getOrderTicketIds());
try {
mqMessage.getOrderTicketIds().forEach(t -> {
for (int x = 0; x< mqMessage.getOrderTicketIds().size(); x++) {
String t = mqMessage.getOrderTicketIds().get(x);
String orderTicketId = t.split(",")[0];
String uid = t.split(",")[1];
KylinOrderTicketVo vo = (KylinOrderTicketVo) redisUtil.get("kylin:order:id:" + orderTicketId);
......@@ -103,7 +104,7 @@ public class ConsumerProcessor {
KylinOrderTicketEntitiesVo items = vo.getEntitiesVoList().get(i);
kylinUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
});
}
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
} catch (Exception e) {
e.printStackTrace();
......@@ -455,6 +456,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_REFUND ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_REFUND), key = MQConst.ROUTING_KEY_SQL_ORDER_REFUND,
value = @Queue(MQConst.QUEUES_SQL_ORDER_REFUND)
......@@ -463,6 +465,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_REFUND ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_REFUND), key = MQConst.ROUTING_KEY_SQL_ORDER_REFUND,
value = @Queue(MQConst.QUEUES_SQL_ORDER_REFUND)
......@@ -471,6 +474,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_REFUND ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_REFUND), key = MQConst.ROUTING_KEY_SQL_ORDER_REFUND,
value = @Queue(MQConst.QUEUES_SQL_ORDER_REFUND)
......@@ -479,6 +483,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_REFUND ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_REFUND), key = MQConst.ROUTING_KEY_SQL_ORDER_REFUND,
value = @Queue(MQConst.QUEUES_SQL_ORDER_REFUND)
......@@ -497,6 +502,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_WITHDRAW ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_WITHDRAW), key = MQConst.ROUTING_KEY_SQL_ORDER_WITHDRAW,
value = @Queue(MQConst.QUEUES_SQL_ORDER_WITHDRAW)
......@@ -505,6 +511,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_WITHDRAW ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_WITHDRAW), key = MQConst.ROUTING_KEY_SQL_ORDER_WITHDRAW,
value = @Queue(MQConst.QUEUES_SQL_ORDER_WITHDRAW)
......@@ -513,6 +520,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_WITHDRAW ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_WITHDRAW), key = MQConst.ROUTING_KEY_SQL_ORDER_WITHDRAW,
value = @Queue(MQConst.QUEUES_SQL_ORDER_WITHDRAW)
......@@ -521,6 +529,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_WITHDRAW ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_WITHDRAW), key = MQConst.ROUTING_KEY_SQL_ORDER_WITHDRAW,
value = @Queue(MQConst.QUEUES_SQL_ORDER_WITHDRAW)
......
package com.liquidnet.service.platform.controller.express.shunfeng;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PerformanceExpressPushFreightParam;
import com.liquidnet.service.kylin.dto.param.PerformanceExpressPushRouteParam;
import com.liquidnet.service.kylin.dto.param.PerformanceExpressPushStatusParam;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
import com.liquidnet.service.platform.service.express.shunfeng.PerformancesExpressCallbackServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
/**
* <p>
......@@ -67,4 +72,16 @@ public class PerformancesExpressCallbackController {
return objectObjectHashMap;
}
@GetMapping("orderRoute/{orderTicketsId}")
@ApiOperation("获取物流信息")
@ApiImplicitParam(name = "orderTicketsId", value = "订单ID", required = true, dataType = "String", paramType = "path")
public ResponseDto<List<KylinOrderExpressRouteVo>> orderRouteDetail(@PathVariable() String orderTicketsId) {
List<KylinOrderExpressRouteVo> routeVoList = performancesExpressServiceImpl.orderRouteDetail(orderTicketsId);
if (null != routeVoList) {
return ResponseDto.success(routeVoList);
} else {
return ResponseDto.failure(ErrorMapping.get("20800"));
}
}
}
package com.liquidnet.service.platform.service.express.shunfeng;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.IKylinOrderExpress;
......@@ -10,12 +14,16 @@ import com.liquidnet.service.platform.utils.ShunfengSignUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.List;
import java.util.regex.Pattern;
/**
* <p>
......@@ -66,6 +74,9 @@ public class PerformancesExpressCallbackServiceImpl extends ServiceImpl<KylinOrd
@Autowired
HttpServletRequest httpServletRequest;
@Autowired
private RedisUtil redisUtil;
public boolean orderStatus(PerformanceExpressPushStatusParam performanceExpressPushStatusParam) {
boolean res = shunfengSignUtils.receiveRequestAndCheckSign(JsonUtils.toJson(performanceExpressPushStatusParam), httpServletRequest);
......@@ -135,4 +146,14 @@ public class PerformancesExpressCallbackServiceImpl extends ServiceImpl<KylinOrd
return false;
}
public List<KylinOrderExpressRouteVo> orderRouteDetail(String orderTicketsId) {
String redisKey = KylinRedisConst.ORDER_ROUTE_INFO.concat(orderTicketsId);
if (!redisUtil.hasKey(redisKey)) {
Query query = new Query();
query.addCriteria(Criteria.where("orderTicketsId").is(orderTicketsId));
List<KylinOrderExpressRouteVo> routeList = mongoTemplate.find(query, KylinOrderExpressRouteVo.class, KylinOrderExpressRouteVo.class.getSimpleName());
redisUtil.set(redisKey, routeList);
}
return (List<KylinOrderExpressRouteVo>) redisUtil.get(redisKey);
}
}
\ No newline at end of file
package com.liquidnet.service.platform.utils;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.UserPathDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
/**
* <p>
......@@ -31,86 +20,16 @@ import java.util.HashMap;
@Component
@Slf4j
public class ShunfengSignUtils {
/**
* appId
*/
@Value("${liquidnet.shunfeng.appid}")
private String APP_ID;
/**
* sk
*/
@Value("${liquidnet.shunfeng.sk}")
private String SK;
/**
* url
*/
@Value("${liquidnet.shunfeng.url}")
private String URL;
/**
* 签名有效期(可根据实际业务设定)单位:毫秒
*/
private final static Long CHECK_TIME = 600000L;
/**
* 生成签名并请求
* @param hbody 请求body
* @return
*/
public String generateSignatureAndRequest(HashMap<String, Object> hbody, String url) {
long currentTimeMillis = System.currentTimeMillis(); // 时间戳
String timestamp = currentTimeMillis + "";
hbody.put("companyId", APP_ID);
String body = JsonUtils.toJson(hbody);
// 生成签名
String sign = genSign(timestamp,body);
CloseableHttpClient client = HttpClients.createDefault();
// 请求下单地址
HttpPost httpPost = new HttpPost(URL + url);
// sendAppId(sendAppId需赋值appId)
httpPost.addHeader("sendAppId", APP_ID);
// 时间戳需和获取验签时一致!!!
httpPost.addHeader("timestamp", timestamp);
// 签名
httpPost.addHeader("sign", sign);
httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
httpPost.addHeader("Accept", "application/json");
// 请求body体需和获取验签时一致且编码UTF8!!!
httpPost.setEntity(new StringEntity(body, "utf-8"));
CloseableHttpResponse response = null;
log.info(UserPathDto.setData("header", "", httpPost.getAllHeaders()));
log.info(UserPathDto.setData("body", "", body));
try {
response = client.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
System.out.println("发送请求成功");
HttpEntity entity = response.getEntity();
// 发送响应且编码UTF8!!!
return EntityUtils.toString(entity, "utf-8");
}
} catch (Exception e) {
System.out.println("发送请求失败");
e.printStackTrace();
} finally {
if (client != null) {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
* 生成签名
* @param timestamp 时间戳
......
......@@ -4,6 +4,9 @@
# ------------------------ 4开头错误码作系统保留
30000=请求频繁,稍后再试
# 快递
20800=订单物流信息获取失败
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment