Commit cc4ac416 by zhiheng.zhang

退款单号修改自定义生成

parent f33e600e
...@@ -48,7 +48,6 @@ import cn.freemud.entities.vo.*; ...@@ -48,7 +48,6 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.util.GlobalSnowflakeIdWorker;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
...@@ -84,7 +83,6 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq; ...@@ -84,7 +83,6 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp; import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
...@@ -1695,7 +1693,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1695,7 +1693,7 @@ public class OrderServiceImpl implements Orderservice {
if (orderBean.getAmount() != 0) { if (orderBean.getAmount() != 0) {
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){ if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
//调用支付退款 //调用支付退款
MultiOrderRefundRequest multiOrderRefundRequest = orderAdapter.getMultiOrderPayRefundRequest(orderBean, GlobalSnowflakeIdWorker.generateId()); MultiOrderRefundRequest multiOrderRefundRequest = orderAdapter.getMultiOrderPayRefundRequest(orderBean, refundId);
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId()); MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) { if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
return ResponseUtil.error(ResponseResult.MULTIORDER__ERRORREFUND.getCode(), "multiOrderRefund_failed"); return ResponseUtil.error(ResponseResult.MULTIORDER__ERRORREFUND.getCode(), "multiOrderRefund_failed");
......
package cn.freemud.management.adapter; package cn.freemud.management.adapter;
import cn.freemud.management.util.GlobalSnowflakeIdWorker;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
...@@ -53,7 +51,7 @@ public class PaymentSdkAdapter { ...@@ -53,7 +51,7 @@ public class PaymentSdkAdapter {
multiQueryRequest.setStoreId(orderBean.getShopId()); multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setFmId(""); multiQueryRequest.setFmId("");
multiQueryRequest.setRefundAmount(Long.valueOf(String.valueOf(refundAmount))); multiQueryRequest.setRefundAmount(Long.valueOf(String.valueOf(refundAmount)));
multiQueryRequest.setRefundTradeNo(String.valueOf(GlobalSnowflakeIdWorker.generateId())); multiQueryRequest.setRefundTradeNo(String.valueOf(getRefundSerialNo()));
multiQueryRequest.setStoreId(orderBean.getShopId()); multiQueryRequest.setStoreId(orderBean.getShopId());
multiQueryRequest.setNotifyUrl(refundNotifyCallback); multiQueryRequest.setNotifyUrl(refundNotifyCallback);
multiQueryRequest.setVer("V1"); multiQueryRequest.setVer("V1");
......
package cn.freemud.management.util;
import com.thoughtworks.xstream.core.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
@Component
@Slf4j
public class GlobalSnowflakeIdWorker {
/**
* 起始时间 2015/1/1 0:0:0
*/
private static long TIMESTAMP_START = 1420041600000L;
/**
* 时间戳向左位移位数
*/
private static int timestampShift;
/**
* 机器号
*/
private static long machineNo;
/**
* 机器Id向左位移位数
*/
private static int machineNoShift;
/**
* 每毫秒能产生的最大序列号
*/
private static int maxSequence;
/**
* 当前自增序列
*/
private static AtomicInteger sequence;
/**
* 初始化方法
*
* @param machineId 机器ID
*/
public static synchronized void init(int machineId) {
timestampShift = 20;
machineNoShift = 8;
machineNo = (long) (machineId << machineNoShift);
maxSequence = 128; //7位序列号
sequence = new AtomicInteger(0);
}
public static long getDatetimeId(Date time) {
long timestamp = time.getTime() - TIMESTAMP_START;
timestamp <<= timestampShift;
return timestamp + machineNo;
}
/**
* 获取Id产生的时间
*
* @param id
* @return ID产生时间
*/
public static Date getDatetime(Long id) {
id = id >> timestampShift;
id = id + TIMESTAMP_START;
return new Date(id);
}
/**
* 专门提代给shardingjdbc使用
* @param id
* @return
*/
public static Date getDatetimeByShardingJdbc(Long id) {
id = id >> 20;
id = id + TIMESTAMP_START;
return new Date(id);
}
/**
* 获取时间戳
* @param id
* @return
*/
public static Long getTimeStamp(Long id) {
id = id >> timestampShift;
id = id + TIMESTAMP_START;
return id;
}
/**
* 生成ID
* 此处实现存在部分问题,但影响甚微。运行的逻辑是sequence用完之后会睡眠1ms,然后开始
*
* @return id
*/
public static long generateId() throws Exception {
while (true) {
int sec = sequence.incrementAndGet();
try {
if (sec == maxSequence) {
Thread.sleep(1L);
sequence.set(0);
} else {
if (sec <= maxSequence) {
long timestamp = System.currentTimeMillis() - TIMESTAMP_START;
timestamp <<= timestampShift;
return timestamp + machineNo + (long) sec;
}
Thread.sleep(1L);
}
}catch (InterruptedException e){
log.error("!!!!Snowflake InterruptedException", e);
Thread.currentThread().interrupt();
throw new Exception(e.getMessage());
}
}
}
}
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