提交修改
This commit is contained in:
parent
e78cce35f2
commit
3949ac0375
@ -0,0 +1,10 @@
|
||||
package com.heyu.api.data.dto;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class WeiXinPayDelayDTO extends DelayDTO{
|
||||
|
||||
private Long tradeOrderId;
|
||||
}
|
||||
@ -74,6 +74,8 @@ private static final long serialVersionUID = 1L;
|
||||
public final static String activity_award_count = CLASS_NAME + "activity_award_count"; // 这次活动的奖励次数
|
||||
public final static String transaction_id = CLASS_NAME + "transaction_id"; // 支付事务id
|
||||
public final static String pay_type = CLASS_NAME + "pay_type"; // 支付方式,weixin
|
||||
public final static String gmt_pre_pay = CLASS_NAME + "gmt_pre_pay"; // 预支付时间
|
||||
public final static String gmt_close = CLASS_NAME + "gmt_close"; // 订单关闭时间
|
||||
//
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
@ -181,6 +183,10 @@ private static final long serialVersionUID = 1L;
|
||||
private String transactionId;
|
||||
//支付方式,weixin
|
||||
private String payType;
|
||||
//预支付时间
|
||||
private Date gmtPrePay;
|
||||
//订单关闭时间
|
||||
private Date gmtClose;
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
@ -976,6 +982,36 @@ private static final long serialVersionUID = 1L;
|
||||
this.payType = payType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 预支付时间
|
||||
* @return
|
||||
*/
|
||||
public Date getGmtPrePay() {
|
||||
return gmtPrePay;
|
||||
}
|
||||
/**
|
||||
* 预支付时间
|
||||
* @param gmtPrePay
|
||||
*/
|
||||
public void setGmtPrePay(Date gmtPrePay) {
|
||||
this.gmtPrePay = gmtPrePay;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关闭时间
|
||||
* @return
|
||||
*/
|
||||
public Date getGmtClose() {
|
||||
return gmtClose;
|
||||
}
|
||||
/**
|
||||
* 订单关闭时间
|
||||
* @param gmtClose
|
||||
*/
|
||||
public void setGmtClose(Date gmtClose) {
|
||||
this.gmtClose = gmtClose;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VvTradeOrderLineEntity{" +
|
||||
@ -1032,6 +1068,8 @@ private static final long serialVersionUID = 1L;
|
||||
",activityAwardCount=" + activityAwardCount +
|
||||
",transactionId=" + transactionId +
|
||||
",payType=" + payType +
|
||||
",gmtPrePay=" + gmtPrePay +
|
||||
",gmtClose=" + gmtClose +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package com.heyu.api.data.enums;
|
||||
|
||||
public enum DelayTypeEnums {
|
||||
delivered("delivered", "妥投","deliveredHandler"),
|
||||
|
||||
weixinPayClose("weixinPayClose", "微信支付关闭","weiXinPayCloseHandler");
|
||||
|
||||
private String type;
|
||||
|
||||
private String desc;
|
||||
|
||||
private String handler;
|
||||
|
||||
|
||||
DelayTypeEnums(String type, String desc,String handler) {
|
||||
this.type = type;
|
||||
this.desc = desc;
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
public static DelayTypeEnums getDelayTypeByType(String type) {
|
||||
for (DelayTypeEnums value : DelayTypeEnums.values()) {
|
||||
if (value.getType().equals(type)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getHandler() {
|
||||
return handler;
|
||||
}
|
||||
|
||||
public void setHandler(String handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
}
|
||||
@ -17,6 +17,7 @@ import com.heyu.api.data.dto.PackageDelivedDelayDTO;
|
||||
import com.heyu.api.data.dto.vv.KuaiDi100DTO;
|
||||
import com.heyu.api.data.entity.vv.VvPackageEntity;
|
||||
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
|
||||
import com.heyu.api.data.enums.DelayTypeEnums;
|
||||
import com.heyu.api.data.enums.KuaiDi100StateEnums;
|
||||
import com.heyu.api.data.kuaidi100.KuaiDi100Utils;
|
||||
import com.heyu.api.data.kuaidi100.LogisticsMapUtils;
|
||||
@ -117,6 +118,8 @@ public class VvPackageServiceImpl extends ServiceImpl<VvPackageDao, VvPackageEnt
|
||||
) {
|
||||
vvPackageEntity.setShippingFrom(kuaiDi100DTO.getRouteInfo().getFrom().getName());
|
||||
}
|
||||
|
||||
|
||||
// 如果查询出来包裹状态已经签收
|
||||
if (KuaiDi100StateEnums.sign_receipt.getState().equals(kuaiDi100DTO.getState())) {
|
||||
List<KuaiDi100DTO.DataDTO> dataDTOS = kuaiDi100DTO.getData();
|
||||
@ -135,7 +138,7 @@ public class VvPackageServiceImpl extends ServiceImpl<VvPackageDao, VvPackageEnt
|
||||
dto.setRole(role);
|
||||
dto.setSendTime(DateUtils.formatDate(new Date(), com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||
dto.setDelayTime(DateUtils.formatDate(timeAfter15, com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||
|
||||
dto.setType(DelayTypeEnums.delivered.getType());
|
||||
int second = DateUtils.betweenSecond(time, timeAfter15);
|
||||
log.info("VvPackageServiceImpl delay send :{}",JSON.toJSONString(dto));
|
||||
// 通过广播模式发布延时消息 延时30分钟 持久化消息 消费后销毁 这里无需指定路由,会广播至每个绑定此交换机的队列
|
||||
@ -149,8 +152,6 @@ public class VvPackageServiceImpl extends ServiceImpl<VvPackageDao, VvPackageEnt
|
||||
vvPackageEntity.setIscheck("2");
|
||||
vvPackageEntity.setGmtSendMqDelivered(new Date());
|
||||
|
||||
|
||||
|
||||
List<VvTradeOrderLineEntity> tradeOrderLineEntities = tradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(trackNumber);
|
||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
|
||||
tradeOrderLineEntity.setGmtSignReceipt(time);
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
package com.heyu.api.alibaba.request.mm.enums;
|
||||
|
||||
public enum DelayTypeEnums {
|
||||
delivered("delivered", "妥投");
|
||||
|
||||
private String type;
|
||||
|
||||
private String desc;
|
||||
|
||||
DelayTypeEnums(String type, String desc) {
|
||||
this.type = type;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
}
|
||||
@ -10,18 +10,21 @@ import com.heyu.api.alibaba.request.mm.order.resp.*;
|
||||
import com.heyu.api.alibaba.request.vv.AppOrderRequest;
|
||||
import com.heyu.api.common.annotation.Describe;
|
||||
import com.heyu.api.data.dao.vv.*;
|
||||
import com.heyu.api.data.dto.WeiXinPayDelayDTO;
|
||||
import com.heyu.api.data.entity.vv.*;
|
||||
import com.heyu.api.data.utils.BigDecimalUtil;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.data.utils.SanUtils;
|
||||
import com.heyu.api.data.utils.StringUtils;
|
||||
import com.heyu.api.data.enums.DelayTypeEnums;
|
||||
import com.heyu.api.data.enums.RoleEnums;
|
||||
import com.heyu.api.data.utils.*;
|
||||
import com.heyu.api.jsapi.JsapiPrepay;
|
||||
import com.heyu.api.jsapi.dto.DirectAPIv3JsapiPrepayResponse;
|
||||
import com.heyu.api.utils.ISelect;
|
||||
import com.heyu.api.utils.PPageUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.MessageDeliveryMode;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@ -68,6 +71,14 @@ public class AppOrderController {
|
||||
@Autowired
|
||||
private JsapiPrepay jsapiPrepay;
|
||||
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
|
||||
@Value("${eb.config.rabbitQueue.delayExchangeName}")
|
||||
private String delayExchangeName;
|
||||
|
||||
|
||||
/***
|
||||
* https://api.1024api.com/api-interface/app/order/list
|
||||
*
|
||||
@ -312,8 +323,27 @@ public class AppOrderController {
|
||||
vvTradeOrderLineEntity.setPayType("weixin");
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.wait_pay.getStatus());
|
||||
vvTradeOrderLineEntity.setTransactionId(jsapiPrepayResponse.getPrepayId());
|
||||
vvTradeOrderLineEntity.setGmtPrePay(new Date());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}
|
||||
|
||||
// 发送订单关单的消息
|
||||
Date currentTime= new Date();
|
||||
Date after30 = DateUtils.addMinutes(currentTime,30);
|
||||
Integer second = DateUtils.betweenSecond(currentTime, after30);
|
||||
WeiXinPayDelayDTO weiXinPayDelayDTO = new WeiXinPayDelayDTO();
|
||||
weiXinPayDelayDTO.setSendTime(DateUtils.formatDate(currentTime, com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||
weiXinPayDelayDTO.setDelayTime(DateUtils.formatDate(after30, com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||
weiXinPayDelayDTO.setType(DelayTypeEnums.weixinPayClose.getType());
|
||||
weiXinPayDelayDTO.setRole( RoleEnums.user.getRole());
|
||||
|
||||
weiXinPayDelayDTO.setTradeOrderId(vvTradeOrderEntity.getId());
|
||||
rabbitTemplate.convertAndSend(delayExchangeName, "", JSON.toJSONString(weiXinPayDelayDTO), message -> {
|
||||
message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
|
||||
message.getMessageProperties().setDelay((second) * 1000); // 毫秒为单位,指定此消息的延时时长 ,+ 1 尽量保证机器人跑完了,再发送消息
|
||||
return message;
|
||||
});
|
||||
|
||||
}
|
||||
return R.ok("订单创建成功");
|
||||
}
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
package com.heyu.api.listener;
|
||||
|
||||
import com.heyu.api.data.utils.R;
|
||||
|
||||
public abstract class BaseDelayedHandler {
|
||||
|
||||
public abstract R handler(String message);
|
||||
|
||||
|
||||
}
|
||||
@ -1,14 +1,10 @@
|
||||
package com.heyu.api.listener;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.heyu.api.alibaba.request.mm.enums.DelayTypeEnums;
|
||||
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
||||
import com.heyu.api.data.enums.DelayTypeEnums;
|
||||
import com.heyu.api.data.dao.vv.VvPackageDao;
|
||||
import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
|
||||
import com.heyu.api.data.dto.PackageDelivedDelayDTO;
|
||||
import com.heyu.api.data.entity.vv.VvPackageEntity;
|
||||
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
|
||||
import com.heyu.api.data.enums.RoleEnums;
|
||||
import com.heyu.api.data.utils.SpringContextUtils;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
||||
@ -21,8 +17,6 @@ import org.springframework.messaging.handler.annotation.Payload;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@ -48,27 +42,16 @@ public class DelaySimpleRabbitListener {
|
||||
log.info("DeliveredDelaySimpleRabbitListener delayQueue :{} message:{}", delayQueue, message);
|
||||
Map<String, Object> map = JSONObject.parseObject(message, Map.class);
|
||||
String type = map.get("type") + "";
|
||||
if (DelayTypeEnums.delivered.getType().equals(type)) {
|
||||
PackageDelivedDelayDTO packageDelivedDelayDTO = JSONObject.parseObject(message, PackageDelivedDelayDTO.class);
|
||||
|
||||
// 更新包信息
|
||||
VvPackageEntity vvPackage = vvPackageDao.selectVvPackageById(packageDelivedDelayDTO.getPackageId());
|
||||
vvPackage.setIscheck("3");
|
||||
vvPackage.setGmtDelivered(new Date());
|
||||
vvPackage.setDeliveredBy(RoleEnums.job.getRole());
|
||||
DelayTypeEnums delayTypeEnums = DelayTypeEnums.getDelayTypeByType(type);
|
||||
|
||||
vvPackageDao.insertOrUpdateVvPackage(vvPackage);
|
||||
|
||||
|
||||
// 更新子单信息
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(vvPackage.getTrackNumber());
|
||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||
vvTradeOrderLineEntity.setDeliveredBy(RoleEnums.job.getRole());
|
||||
vvTradeOrderLineEntity.setGmtDelivered(new Date());
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}
|
||||
if (delayTypeEnums == null) {
|
||||
log.info("DelaySimpleRabbitListener type is :{}", type);
|
||||
return;
|
||||
}
|
||||
|
||||
BaseDelayedHandler baseDelayedHandler = SpringContextUtils.getBean(delayTypeEnums.getHandler());
|
||||
baseDelayedHandler.handler(message);
|
||||
} catch (Exception e) {
|
||||
log.error("DeliveredDelaySimpleRabbitListener handle", e);
|
||||
} finally {
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.heyu.api.listener.delay.handler;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
||||
import com.heyu.api.data.dao.vv.VvPackageDao;
|
||||
import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
|
||||
import com.heyu.api.data.dto.PackageDelivedDelayDTO;
|
||||
import com.heyu.api.data.entity.vv.VvPackageEntity;
|
||||
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
|
||||
import com.heyu.api.data.enums.RoleEnums;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.listener.BaseDelayedHandler;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component("deliveredHandler")
|
||||
public class DeliveredHandler extends BaseDelayedHandler {
|
||||
|
||||
@Autowired
|
||||
private VvPackageDao vvPackageDao;
|
||||
|
||||
@Autowired
|
||||
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
||||
|
||||
@Override
|
||||
public R handler(String message) {
|
||||
PackageDelivedDelayDTO packageDelivedDelayDTO = JSONObject.parseObject(message, PackageDelivedDelayDTO.class);
|
||||
// 更新包信息
|
||||
VvPackageEntity vvPackage = vvPackageDao.selectVvPackageById(packageDelivedDelayDTO.getPackageId());
|
||||
vvPackage.setIscheck("3");
|
||||
vvPackage.setGmtDelivered(new Date());
|
||||
vvPackage.setDeliveredBy(RoleEnums.job.getRole());
|
||||
|
||||
vvPackageDao.insertOrUpdateVvPackage(vvPackage);
|
||||
|
||||
// 更新子单信息
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(vvPackage.getTrackNumber());
|
||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||
vvTradeOrderLineEntity.setDeliveredBy(RoleEnums.job.getRole());
|
||||
vvTradeOrderLineEntity.setGmtDelivered(new Date());
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package com.heyu.api.listener.delay.handler;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
||||
import com.heyu.api.data.dao.vv.VvTradeOrderLineDao;
|
||||
import com.heyu.api.data.dto.WeiXinPayDelayDTO;
|
||||
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
|
||||
import com.heyu.api.data.utils.R;
|
||||
import com.heyu.api.listener.BaseDelayedHandler;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component("weiXinPayCloseHandler")
|
||||
public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
||||
|
||||
@Autowired
|
||||
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
||||
|
||||
|
||||
@Override
|
||||
public R handler(String message) {
|
||||
|
||||
|
||||
WeiXinPayDelayDTO weiXinPayDelayDTO = JSONObject.parseObject(message, WeiXinPayDelayDTO.class);
|
||||
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(weiXinPayDelayDTO.getTradeOrderId());
|
||||
|
||||
|
||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
||||
if(OrderStatusEnums.wait_pay.getStatus().equals(vvTradeOrderLineEntity.getStatus())){
|
||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
||||
vvTradeOrderLineEntity.setGmtClose(new Date());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}
|
||||
}
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user