Commit ccfec5b3 by 徐康

网关验证

parent cab83486
...@@ -133,6 +133,17 @@ public class McCafeController { ...@@ -133,6 +133,17 @@ public class McCafeController {
/**
* 麦咖啡推送订单数据到麦当劳 -- 补偿/修正
*/
@ApiAnnotation(logMessage = "mcCafePushOrderMakeUp")
@PostMapping("/mcCafePushOrderMakeUp")
public BaseResponse mcCafePushOrderMakeUp(@Validated @LogParams @RequestBody McCafeQueryOrderVo queryOrderVo) {
return mcCafeOrderService.mcCafePushOrderMakeUp(queryOrderVo);
}
} }
...@@ -7,6 +7,8 @@ import cn.freemud.manager.dao.PushMccafeOrderDao; ...@@ -7,6 +7,8 @@ import cn.freemud.manager.dao.PushMccafeOrderDao;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
/** /**
* 商户小程序manager * 商户小程序manager
* *
...@@ -23,6 +25,10 @@ public class PushMccafeOrderManager { ...@@ -23,6 +25,10 @@ public class PushMccafeOrderManager {
return pushMccafeOrderDao.selectOrder(orderCode); return pushMccafeOrderDao.selectOrder(orderCode);
} }
public List<PushMccafeOrder> selectOrderByStatus(Integer id) {
return pushMccafeOrderDao.selectOrderByStatus(id);
}
public Integer insertOrder(PushMccafeOrder pushMccafeOrder) { public Integer insertOrder(PushMccafeOrder pushMccafeOrder) {
return pushMccafeOrderDao.insertOrder(pushMccafeOrder); return pushMccafeOrderDao.insertOrder(pushMccafeOrder);
} }
......
...@@ -5,11 +5,15 @@ import cn.freemud.entities.db.PushMccafeOrder; ...@@ -5,11 +5,15 @@ import cn.freemud.entities.db.PushMccafeOrder;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface PushMccafeOrderDao { public interface PushMccafeOrderDao {
PushMccafeOrder selectOrder(@Param("orderCode") String orderCode); PushMccafeOrder selectOrder(@Param("orderCode") String orderCode);
List<PushMccafeOrder> selectOrderByStatus(@Param("status") Integer status);
Integer insertOrder(PushMccafeOrder pushMccafeOrder); Integer insertOrder(PushMccafeOrder pushMccafeOrder);
Integer updateOrder(PushMccafeOrder pushMccafeOrder); Integer updateOrder(PushMccafeOrder pushMccafeOrder);
......
...@@ -57,4 +57,6 @@ public interface MCCafeOrderService { ...@@ -57,4 +57,6 @@ public interface MCCafeOrderService {
BaseResponse mcCafePushOrder(McCafeQueryOrderVo queryOrderVo); BaseResponse mcCafePushOrder(McCafeQueryOrderVo queryOrderVo);
BaseResponse mcCafePushOrderMakeUp(McCafeQueryOrderVo queryOrderVo);
} }
...@@ -142,6 +142,8 @@ import org.springframework.web.client.RestTemplate; ...@@ -142,6 +142,8 @@ import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -2568,6 +2570,100 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -2568,6 +2570,100 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
headers.set("Sign", sign); headers.set("Sign", sign);
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE); headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
Gson gson = new Gson(); Gson gson = new Gson();
String json = JSON.toJSONString(mcCafePushOrderDto);
HttpEntity<String> requestEntity = new HttpEntity<>(json, headers);
ResponseEntity<String> responseEntity = client.exchange(mccafePushOrderGatewayUrl+"/mp/order", HttpMethod.POST, requestEntity, String.class);
McCafePushOrderResponseDto responseDto = JSON.parseObject(responseEntity.getBody(), McCafePushOrderResponseDto.class);
// McCafePushOrderResponseDto responseDto = mcCafePushOrderClient.mcCafePushOrder(mcCafePushOrderDto);
PushMccafeOrder pushMccafeOrder = new PushMccafeOrder();
pushMccafeOrder.setOrderCode(orderInfoReqs.getOrderCode());
pushMccafeOrder.setPartnerId(orderInfoReqs.getPartnerId());
pushMccafeOrder.setStoreId(orderInfoReqs.getStoreId());
if(!"SUCCESS".equals(responseDto.getCode())) {
pushMccafeOrder.setStatus(0);
pushMccafeOrder.setFailReason(JSON.toJSONString(responseDto));
} else {
pushMccafeOrder.setStatus(1);
}
pushMccafeOrderManager.insertOrder(pushMccafeOrder);
} catch (ServiceException e) {
AppLogUtil.errorLog("麦咖啡历史订单推送失败: "+JSON.toJSONString(orderInfoReqs)
+" 异常信息: "+e.getMessage(),null,null, null);
PushMccafeOrder pushMccafeOrder = new PushMccafeOrder();
pushMccafeOrder.setOrderCode(orderInfoReqs.getOrderCode());
pushMccafeOrder.setPartnerId(orderInfoReqs.getPartnerId());
pushMccafeOrder.setStoreId(orderInfoReqs.getStoreId());
pushMccafeOrder.setStatus(0);
pushMccafeOrder.setFailReason(e.getMessage());
pushMccafeOrderManager.insertOrder(pushMccafeOrder);
} catch (Exception e) {
AppLogUtil.errorLog("麦咖啡历史订单推送失败: "+JSON.toJSONString(orderInfoReqs)
+" 异常信息: "+ExceptionUtils.getExceptionInfo(e),null,null, null);
e.printStackTrace();
PushMccafeOrder pushMccafeOrder = new PushMccafeOrder();
pushMccafeOrder.setOrderCode(orderInfoReqs.getOrderCode());
pushMccafeOrder.setPartnerId(orderInfoReqs.getPartnerId());
pushMccafeOrder.setStoreId(orderInfoReqs.getStoreId());
pushMccafeOrder.setStatus(0);
pushMccafeOrder.setFailReason(ExceptionUtils.getExceptionInfo(e));
pushMccafeOrderManager.insertOrder(pushMccafeOrder);
}
}
}
});
BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode("100");
baseResponse.setMessage("success");
return baseResponse;
}
public BaseResponse mcCafePushOrderMakeUp(McCafeQueryOrderVo queryOrderVo) {
executor.submit(() -> {
int id = 0;
while (true) {
List<PushMccafeOrder> pushMccafeOrderList = pushMccafeOrderManager.selectOrderByStatus(id);
if(CollectionUtils.isEmpty(pushMccafeOrderList)) {
break;
}
List<String> orderCodes = pushMccafeOrderList.stream().map(o -> o.getOrderCode()).collect(Collectors.toList());
OrderConditionsReq orderConditionsReq = new OrderConditionsReq();
orderConditionsReq.setOrderCodes(orderCodes);
orderConditionsReq.setPageNum(1);
orderConditionsReq.setPageSize(500);
orderConditionsReq.setSortRule(1);
BaseDownLoadResponse<List<OrderInfoReqs>> response = orderDownLoadSdkService.queryOrderByConditions(orderConditionsReq, LogThreadLocal.getTrackingNo());
AppLogUtil.infoLog("queryOrderByConditions:"+ JSON.toJSONString(response),null,null);
if(CollectionUtils.isEmpty(response.getResult())) {
break;
}
RestTemplate client = new RestTemplate();
for(OrderInfoReqs orderInfoReqs : response.getResult()) {
try {
McCafePushOrderDto mcCafePushOrderDto = convert2McCafePushOrderInfo(orderInfoReqs);
AppLogUtil.infoLog("订单推送入参: "+JSON.toJSONString(mcCafePushOrderDto),null,null);
String timestamp = System.currentTimeMillis()+"";
String sign = getMcdOpenApiSign(mccafePushOrderAppId,JSON.toJSONString(mcCafePushOrderDto),mccafePushOrderMerchantId,timestamp,mccafePushOrderKey);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Provider", "WX");
headers.set("Version", "1.0");
headers.set("AppId", mccafePushOrderAppId);
headers.set("MerchantId", mccafePushOrderMerchantId);
headers.set("Timestamp", timestamp);
headers.set("Sign", sign);
headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
Gson gson = new Gson();
String json = gson.toJson(mcCafePushOrderDto); String json = gson.toJson(mcCafePushOrderDto);
HttpEntity<String> requestEntity = new HttpEntity<>(json, headers); HttpEntity<String> requestEntity = new HttpEntity<>(json, headers);
ResponseEntity<String> responseEntity = client.exchange(mccafePushOrderGatewayUrl+"/mp/order", HttpMethod.POST, requestEntity, String.class); ResponseEntity<String> responseEntity = client.exchange(mccafePushOrderGatewayUrl+"/mp/order", HttpMethod.POST, requestEntity, String.class);
...@@ -2612,9 +2708,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -2612,9 +2708,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
} }
} }
} }
}); });
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode("100"); baseResponse.setCode("100");
baseResponse.setMessage("success"); baseResponse.setMessage("success");
...@@ -2945,13 +3044,16 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -2945,13 +3044,16 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
} }
} }
public String getMcdOpenApiSign(String appId, String body, String merchantId, String timestamp, String key) throws UnsupportedEncodingException, NoSuchAlgorithmException { public static String getMcdOpenApiSign(String appId, String body, String merchantId, String timestamp, String key) {
String signStr = String.format("AppId=%s&Body=%s&MerchantId=%s&Timestamp=%s&key=%s", appId, body, merchantId, timestamp, key); String signStr = String.format("AppId=%s&Body=%s&MerchantId=%s&Timestamp=%s&key=%s", appId, body, merchantId, timestamp, key);
String sign = Md5Util.encoderToMd5(signStr).toUpperCase(); String sign = MD5Util.MD5Encode(signStr,"utf-8").toUpperCase();
return sign; return sign;
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(DateUtil.convert2String(new Date(1631519403066l), "yyyy-MM-dd HH:mm:ss")); String t = String.valueOf(System.currentTimeMillis());
System.out.println(t);
System.out.println(getMcdOpenApiSign("132150066","{\"mpOrderId\":\"22210922765267866600006\",\"displayOrderId\":\"0\",\"type\":\"1\",\"saleType\":\"2\",\"eatType\":\"1\",\"deliveryType\":\"1\",\"sourceType\":\"WXMP\",\"beType\":\"3\",\"dayPart\":\"2\",\"channel\":\"10\",\"status\":\"80\",\"invoiceNeeded\":1,\"Invoiced\":1,\"customer_id\":\"MEDDY991578176625117171\",\"storeCode\":\"1450167\",\"storeName\":\"麦当劳麦咖啡(桂平路-漕河泾店)\",\"businessDate\":\"2021-09-17\",\"tablewareInfo\":\"02\",\"totalAmount\":2500,\"taxTotalAmount\":150,\"discountTotalAmount\":0,\"realTotalAmount\":2500,\"deliveryPrice\":0,\"realDeliveryPrice\":0,\"remark\":\"\",\"saleTime\":\"2021-09-17 14:51:28\",\"completionTime\":\"2021-09-17 15:51:05\",\"cancellationReasonCode\":\"-1\",\"cancellationRemark\":\"\",\"acceptTime\":\"2021-09-17 14:51:05.000\",\"pickupCode\":\"0\",\"openId\":\"oDF-Z5V60m2rgKYaHkf4ImhqR_XQ\",\"unionId\":\"oJeaRwyFU420hv0V3tddABipaH2I\",\"createdDate\":\"2021-09-17 14:51:05\",\"orderItem\":[{\"mpItemId\":\"190081895830260510\",\"sequenceId\":\"1\",\"round\":\"1\",\"productType\":\"1\",\"productCode\":\"507332\",\"productAttribute\":[{\"grillCode\":\"8008\",\"grillItemList\":[{\"grillItemCode\":\"1\",\"grillItemNameCn\":\"\",\"quantity\":\"1\"}]},{\"grillCode\":\"120146\",\"grillItemList\":[{\"grillItemCode\":\"0\",\"grillItemNameCn\":\"\",\"quantity\":\"1\"}]}],\"productName\":\"摩卡\",\"productLongName\":\"摩卡\",\"productNameEn\":\"\",\"productLongNameEn\":\"\",\"quantity\":\"1\",\"real_quantity\":\"1\",\"original_price\":\"2100\",\"price\":\"2500\",\"subtotal\":\"2500\",\"discountAmount\":\"0\",\"realAmount\":\"2500\",\"taxAmount\":\"150\",\"taxAmountDetail\":[{\"uniqueCode\":\"507332\",\"taxItems\":[{\"realAmount\":2500,\"taxAmount\":150,\"taxId\":\"10\",\"taxRate\":\"6\"}]}],\"taxId\":\"10\",\"taxRate\":\"6\",\"costInclusive\":\"1\",\"createdDate\":\"2021-09-17 14:51:05\"}],\"orderPayment\":[{\"channelPayTransactionId\":\"TSXA1205O347754218314084352\",\"payStatus\":\"PAID\",\"paySource\":\"10\",\"payChannel\":\"WX\",\"payAmount\":2500,\"refundType\":\"1\",\"refundAmount\":2500,\"refundTime\":\"2021-09-17 14:52:59\",\"refundReason\":\"用户申请退款\",\"signType\":\"0\",\"payPurpose\":\"02\",\"consumeType\":\"01\",\"tenderCode\":\"150\",\"refundStatus\":\"REFUNDED\",\"channelRefundTransactionId\":\"4200001214202109173002127737\",\"createdDate\":\"2021-09-17 14:51:28\"}],\"orderFoe\":[{\"foeOrderKey\":\"22210922765267866600006\",\"storeCode\":\"1450167\",\"orderType\":\"1\",\"pickupCode\":\"0\",\"status\":\"20\",\"foeType\":\"1\",\"createdDate\":\"2021-09-17 14:51:05\"},{\"foeOrderKey\":\"22210922765267866600006\",\"storeCode\":\"1450167\",\"orderType\":\"1\",\"pickupCode\":\"0\",\"status\":\"20\",\"foeType\":\"1\",\"createdDate\":\"2021-09-17 14:51:05\"}]}",
"M32118436",t, "78c915bb-a3a3-4957-b177-27667adb8df1"));
} }
} }
...@@ -19,6 +19,14 @@ ...@@ -19,6 +19,14 @@
FROM push_mccafe_order WHERE order_code=#{orderCode} FROM push_mccafe_order WHERE order_code=#{orderCode}
</select> </select>
<select id="selectOrder" resultType="cn.freemud.entities.db.PushMccafeOrder">
SELECT
<include refid="all_column"/>
FROM push_mccafe_order WHERE status = 0
id > #{id}
limit 500;
</select>
<insert id="insertOrder" parameterType="cn.freemud.entities.db.PushMccafeOrder"> <insert id="insertOrder" parameterType="cn.freemud.entities.db.PushMccafeOrder">
INSERT INTO push_mccafe_order ( order_code, partner_id,store_id,status,fail_reason) INSERT INTO push_mccafe_order ( order_code, partner_id,store_id,status,fail_reason)
VALUES VALUES
......
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