Bladeren bron

fix

release_toaliyun_real
winter 1 jaar geleden
bovenliggende
commit
e451b864a1
11 gewijzigde bestanden met toevoegingen van 346 en 4 verwijderingen
  1. +8
    -0
      mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java
  2. +205
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/AiOrderSchedule.java
  3. +13
    -1
      mallinkService/src/main/java/com/iformall/domain/po/AiOrder.java
  4. +20
    -0
      mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCreateOrderMsg.java
  5. +2
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java
  6. +2
    -0
      mallinkService/src/main/java/com/iformall/service/AiOrderService.java
  7. +7
    -0
      mallinkService/src/main/java/com/iformall/service/impl/AiOrderServiceImpl.java
  8. +25
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  9. +45
    -0
      mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCreateOrderMsgServiceImpl.java
  10. +2
    -0
      mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java
  11. +17
    -1
      mallinkService/src/main/resources/mapper/AiOrderMapper.xml

+ 8
- 0
mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java Bestand weergeven

@@ -88,6 +88,9 @@ public class MqBaseConsumer {
@Autowired
private CreateCouponPasswordMsgServiceImpl createCouponPasswordMsgServiceImpl;
@Autowired
private FmInsideCreateOrderMsgServiceImpl fmInsideCreateOrderMsgServiceImpl;

public void doMessage(String message) {
log.info("received message: {}", message);
@@ -251,6 +254,11 @@ public class MqBaseConsumer {
FmInsideCreateCouponPasswordMsg msg = (FmInsideCreateCouponPasswordMsg) JsonUtil.readValue(message,FmInsideCreateCouponPasswordMsg.class);
createCouponPasswordMsgServiceImpl.send(msg);
}
else if (EnumMsgRecordType.CREATE_ORDER.getCode().equals(baseMsg.getMsgType())) {
FmInsideCreateOrderMsg msg = (FmInsideCreateOrderMsg) JsonUtil.readValue(message,FmInsideCreateOrderMsg.class);
fmInsideCreateOrderMsgServiceImpl.send(msg);
}

}catch (Throwable e){
log.error("consum received error: ", e);


+ 205
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/AiOrderSchedule.java Bestand weergeven

@@ -0,0 +1,205 @@
package com.iformall.schedule;

import com.iformall.domain.po.*;
import com.iformall.enums.EnumCashOutStatus;
import com.iformall.enums.EnumCouponOrderStatus;
import com.iformall.enums.EnumPayWay;
import com.iformall.enums.EnumYesOrNo;
import com.iformall.mapper.WxBrandMapper;
import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.mapper.WxCashOutMapper;
import com.iformall.mapper.WxCouponMapper;
import com.iformall.mapper.WxCouponOrderMapper;
import com.iformall.mapper.WxMallMapper;
import com.iformall.mapper.WxMerchantBUserMapper;
import com.iformall.mapper.WxMerchantMapper;
import com.iformall.service.AiOrderService;
import com.iformall.service.WxAppinfoService;
import com.iformall.service.WxBrandService;
import com.iformall.service.WxBusinessService;
import com.iformall.service.WxPayAccountService;
import com.iformall.service.pay.PayServiceFactory;
import com.iformall.service.pay.service.cashout.entity.CashOutAdapterResult;
import com.iformall.utils.DateUtils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Component
public class AiOrderSchedule {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxMallMapper wxMallMapper;
@Autowired
AiOrderService aiOrderService;
@Autowired
WxCouponOrderMapper wxCouponOrderMapper;
@Autowired
WxCouponMapper wxCouponMapper;
@Autowired
WxCUserBasicInfoMapper wxCUserBasicInfoMapper;
@Autowired
WxMerchantBUserMapper wxMerchantBUserMapper;
@Autowired
WxMerchantMapper wxMerchantMapper;
@Autowired
WxBrandService wxBrandService;
@Autowired
WxBusinessService wxBusinessService;

private List<WxMall> getMalls() {
WxMall wxMall = new WxMall();
return wxMallMapper.findList(wxMall);
}

//查询新创建的订单,增量同步wxCouponOrder.因为中间有些订单有付了款,有没付款
@Async
@Scheduled(cron = "0 50 0 * * ?") // 每天凌晨00:50
public void updateWxCouponOrderSchedule() {
List<WxMall> malls = getMalls();
for (WxMall mall : malls) {
AiOrder ao = new AiOrder();
ao.updateTenantInfo(mall);
//没有couponOrder的同步
ao.setNoCouponOrder(EnumYesOrNo.YES.getCode());
ao.setNoCouponOrderStatus(EnumYesOrNo.YES.getCode());
ao.setLastCreateDate(DateUtils.getDayBegin(new Date()));
List<AiOrder> aiOrderList = aiOrderService.list(ao);
if (null != aiOrderList && aiOrderList.size() > 0 ) {
for (AiOrder _ao : aiOrderList) {
try {
WxCouponOrder co = new WxCouponOrder();
co.updateTenantInfo(_ao);
co.setOrderId(_ao.getOrderId());
List<WxCouponOrder> colist = wxCouponOrderMapper.findList(co);
if (null != colist && colist.size() > 0) {
WxCouponOrder wco = colist.get(0);
_ao.setCouponOrderId(wco.getId());
_ao.setCouponId(wco.getCouponId());
_ao.setCouponType(wco.getCouponType());
WxCoupon coupon = wxCouponMapper.selectById(wco.getCouponId(), _ao.getTenantId());
if (null != coupon) {
_ao.setCouponTitle(coupon.getTitle());
_ao.setCouponPrice(coupon.getPrice());
}
_ao.setCouponSalePrice(wco.getCouponPrice());
_ao.setCouponSubsidy(wco.getSubsidy());
_ao.setExpiredTime(wco.getExpiredTime());
_ao.setOwnerId(wco.getOwnerId());
WxCUserBasicInfo cui = wxCUserBasicInfoMapper.selectById(wco.getOwnerId(), _ao.getTenantId());
if (null != cui) {
_ao.setOwnerPhone(cui.getPhone());
_ao.setOwnerNickName(cui.getNickName());
}
_ao.setCouponOrderStatus(wco.getCouponOrderStatus());
aiOrderService.saveOrUpdate(_ao);
}else {
//因为昨天未支付的订单现在肯定是已作废状态了
_ao.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode());
aiOrderService.saveOrUpdate(_ao);
}
}catch(Exception e) {
logger.error("aiOrder updateWxCouponOrderSchedule error:"+_ao.getId(),e);
}
}
}
}
}
//更新coupon_order_status==0或者为空的订单, 因为订单可能被核销等操作会变更一些数据
@Async
@Scheduled(cron = "0 0 0/2 * * ?") // 每2个小时执行一次
public void updateOrderSchedule() {
List<WxMall> malls = getMalls();
for (WxMall mall : malls) {
try {
AiOrder ao = new AiOrder();
ao.updateTenantInfo(mall);
ao.setHasCouponOrder(EnumYesOrNo.YES.getCode());
ao.setNeedUpdateCouponOrderStatus(EnumYesOrNo.YES.getCode());
List<AiOrder> aiOrderList = aiOrderService.list(ao);
if (null != aiOrderList && aiOrderList.size() > 0 ) {
Map<Long, WxBrand> brandMap = wxBrandService.getAllMap(mall);
Map<Integer, WxBusiness> businessMap = wxBusinessService.findAllMap(mall);
for (AiOrder _ao : aiOrderList) {
try {
WxCouponOrder co = new WxCouponOrder();
co.updateTenantInfo(_ao);
co.setOrderId(_ao.getOrderId());
List<WxCouponOrder> colist = wxCouponOrderMapper.findList(co);
if (null != colist && colist.size() > 0) {
WxCouponOrder wco = colist.get(0);
if (null != wco.getBUserId()) {
_ao.setBUserId(wco.getBUserId());
WxMerchantBUser mbu = wxMerchantBUserMapper.selectById(wco.getBUserId());
if (null != mbu) {
_ao.setBUserPhone(mbu.getPhone());
}
_ao.setBMerchantId(wco.getBMerchantId());
WxMerchant merchant = wxMerchantMapper.selectById(wco.getBMerchantId());
if (null != merchant) {
_ao.setBMerchantName(merchant.getName());
_ao.setBrandId(merchant.getBrand());
if (null != merchant.getBrand() && null != brandMap) {
WxBrand brand = brandMap.get(merchant.getBrand());
if (null != brand) {
_ao.setBrandName(brand.getName());
}
}
_ao.setBussiness(merchant.getBusinessId());
if (null != merchant.getBusinessId() && null != businessMap) {
WxBusiness business = businessMap.get(merchant.getBusinessId());
if (null != business) {
_ao.setBussinessName(business.getTitle());
}
}
//_ao.setShopNumber();
}
}
_ao.setSendMerchantId(wco.getSendMerchantId());
if (null != wco.getSendMerchantId()) {
WxMerchant smerchant = wxMerchantMapper.selectById(wco.getSendMerchantId());
if (null != smerchant) {
_ao.setSendMerchantName(smerchant.getName());
}
}
if (wco.getCouponOrderStatus().intValue() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().intValue()) {
_ao.setVerifyTime(wco.getUpdateDate());
}
_ao.setCouponOrderStatus(wco.getCouponOrderStatus());
aiOrderService.saveOrUpdate(_ao);
}
}catch(Exception e) {
logger.error("aiOrder updateOrderSchedule error.mall:"+mall.getTenantId(),e);
}
}
}
}catch(Exception e) {
logger.error("aiOrder updateOrderSchedule error.mall:"+mall.getTenantId(),e);
}
}
}

}

+ 13
- 1
mallinkService/src/main/java/com/iformall/domain/po/AiOrder.java Bestand weergeven

@@ -59,7 +59,7 @@ public class AiOrder extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value = "品牌名称", name = "brandName")
private String brandName;
@io.swagger.annotations.ApiModelProperty(value = "业态", name = "bussiness")
private Long bussiness;
private Integer bussiness;
@io.swagger.annotations.ApiModelProperty(value = "品牌名称", name = "bussinessName")
private String bussinessName;
@io.swagger.annotations.ApiModelProperty(value = "店铺号", name = "shopNumber")
@@ -84,6 +84,18 @@ public class AiOrder extends TenantEntity {
private String ownerNickName;
@io.swagger.annotations.ApiModelProperty(value = "EnumCouponOrderStatus", name = "couponOrderStatus")
private Integer couponOrderStatus;
@TableField(exist = false)
private List<Integer> couponOrderStatusList;
@TableField(exist = false)
private Integer noCouponOrder;
@TableField(exist = false)
private Integer hasCouponOrder;
@TableField(exist = false)
private Integer noCouponOrderStatus;
@TableField(exist = false)
private Integer needUpdateCouponOrderStatus;
@TableField(exist = false)
private Date lastCreateDate;
}

+ 20
- 0
mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCreateOrderMsg.java Bestand weergeven

@@ -0,0 +1,20 @@
package com.iformall.domain.po.msg;

import java.util.List;

import com.iformall.domain.po.WxOrder;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class FmInsideCreateOrderMsg extends BaseMsg{

private static final long serialVersionUID = -1136114221897577385L;
@io.swagger.annotations.ApiModelProperty(value = "", name = "")
private List<WxOrder> orderList;

}

+ 2
- 0
mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java Bestand weergeven

@@ -43,6 +43,8 @@ public enum EnumMsgRecordType {
BILL_PAID(115,"账单支付回调"),
CREATE_COUPASSWORD(116,"账单支付回调"),
CREATE_ORDER(117,"创建订单后"),

INSIDE_ORDER_PUSH_DELIVERY(200, "2.0核销同步"),
;


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/AiOrderService.java Bestand weergeven

@@ -17,6 +17,8 @@ public interface AiOrderService {
*/
PageInfo<AiOrder> listAsPage(AiOrder record, Integer pageIndex, Integer pageSize);
List<AiOrder> list(AiOrder record);
/**
* 根据Id获得实体
*


+ 7
- 0
mallinkService/src/main/java/com/iformall/service/impl/AiOrderServiceImpl.java Bestand weergeven

@@ -7,6 +7,8 @@ import com.iformall.domain.po.AiOrder;
import com.iformall.mapper.AiOrderMapper;
import com.iformall.service.AiOrderService;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +26,11 @@ public class AiOrderServiceImpl implements AiOrderService {
public PageInfo<AiOrder> listAsPage(AiOrder record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> aiOrderMapper.findList(record));
}
@Override
public List<AiOrder> list(AiOrder record) {
return aiOrderMapper.findList(record);
}

@Override
public AiOrder getById(Long id,String tenantId) {


+ 25
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Bestand weergeven

@@ -3089,6 +3089,7 @@ public class WxOrderServiceImpl implements WxOrderService {
WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(tenantEntity,user, orderSave, payWay,payVersion);
Date orderDate = new Date();
WxOrder lastOrder = null;
List<WxOrder> orderList = new ArrayList<WxOrder>();
for (int i = 0 ; i < orderSave.size(); i ++) {
OrderComposeSaveDto orderdto = orderSave.get(i);

@@ -3096,21 +3097,25 @@ public class WxOrderServiceImpl implements WxOrderService {
boolean isOneNumberOneOrder = orderAdapterService.isOneNumberOneOrder();
if (isOneNumberOneOrder) {
for (int j = 0; j < orderdto.getCount(); j++) {
lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1,
WxOrder _order = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), 1,
orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(),
orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(),orderdto.getWxCouponChannel(), payWay,payVersion);
lastOrder = _order;
orderList.add(_order);
}
}else {
lastOrder = proxy.handleSaveOrderForCouponSingle(orderDate,allowUnPayOrder,composeOrder, user, orderdto.getWxCoupon(), orderdto.getCount(),
orderdto.getSignleOrder().isPressOrder(),orderdto.getSignleOrder().getOrderGroupId(),orderdto.getSignleOrder().getFormId(),
orderdto.getShippingType(),orderdto.getAddress(),orderdto.getExtParam(),orderdto.getWxCouponChannel(), payWay,payVersion);
orderList.add(lastOrder);
}
}
//如果没有orderId,则用lastOrder的信息
if (EnumComposeOrder.isSingle(composeOrderType.getCode())) {
composeOrder.setSingleOrder(lastOrder);
}
return composeOrder;
composeOrder.setOrderList(orderList);
return composeOrder;
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@@ -3700,6 +3705,10 @@ public class WxOrderServiceImpl implements WxOrderService {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
try {
WxComposeOrder order = proxy.saveOrderForCoupon(tenantEntity,allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay,payVersion);
//aiOrder
if (null != order && null != order.getOrderList() && order.getOrderList().size() > 0 ) {
sendInsideCreateOrderMsg(tenantEntity,order.getOrderList());
}
return new ResultData(order);
} catch (MallinkException e) {
logger.error("saveOrderForCoupon error.",e);
@@ -3718,6 +3727,20 @@ public class WxOrderServiceImpl implements WxOrderService {

}

private void sendInsideCreateOrderMsg(TenantEntity tenantEntity,List<WxOrder> orderList) {
try{
FmInsideCreateOrderMsg orderPush = new FmInsideCreateOrderMsg();
orderPush.setDelayTimeLevel(5);
orderPush.setMsgType(EnumMsgRecordType.CREATE_ORDER.getCode());
orderPush.updateTenantInfo(tenantEntity);
orderPush.setOrderList(orderList);
logger.info(">>>>>>>>>>>send sendInsideCreateOrderMsg :"+orderPush);
mqBaseProducer.sendMessage(orderPush, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
}catch(Exception e){
logger.error(">>>>>>>>>>>send sendInsideCreateOrderMsg : error"+e.getMessage());
}
}

@Override
public void sendInsideOrderPushMsg(TenantEntity tenantEntity,Long composeOrderId,Integer thirdType) {
try{


+ 45
- 0
mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCreateOrderMsgServiceImpl.java Bestand weergeven

@@ -0,0 +1,45 @@
package com.iformall.service.msg.impl;

import com.iformall.domain.po.AiOrder;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.msg.BaseMsg;
import com.iformall.domain.po.msg.FmInsideCreateOrderMsg;
import com.iformall.service.AiOrderService;
import com.iformall.service.msg.MsgSendService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
*
*/
@Service
public class FmInsideCreateOrderMsgServiceImpl implements MsgSendService {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private AiOrderService aiOrderService;

@Override
public void send(BaseMsg baseMsg) throws Exception{
FmInsideCreateOrderMsg createOrderMsg = (FmInsideCreateOrderMsg)baseMsg;
List<WxOrder> orderList = createOrderMsg.getOrderList();
if (null != orderList && orderList.size() > 0 ) {
for (int i = 0 ; i < orderList.size(); i++) {
WxOrder o = orderList.get(i);
AiOrder ao = new AiOrder();
ao.updateTenantInfo(createOrderMsg.getTenantInfo());
ao.setOrderId(o.getId());
ao.setCreateDate(o.getCreateDate());
ao.setUpdateDate(o.getUpdateDate());
aiOrderService.saveOrUpdate(ao);
}
}
}


}

+ 2
- 0
mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java Bestand weergeven

@@ -34,4 +34,6 @@ public class WxComposeOrder extends TenantEntity{

private List<Map<String,String>> extParam;//处理其他返回参数
private List<WxOrder> orderList;//创建的订单列表
}

+ 17
- 1
mallinkService/src/main/resources/mapper/AiOrderMapper.xml Bestand weergeven

@@ -19,7 +19,7 @@
<result column="b_merchant_name" jdbcType="VARCHAR" property="bMerchantName" />
<result column="brand_id" jdbcType="BIGINT" property="brandId" />
<result column="brand_name" jdbcType="VARCHAR" property="brandName" />
<result column="bussiness" jdbcType="BIGINT" property="bussiness" />
<result column="bussiness" jdbcType="INTEGER" property="bussiness" />
<result column="bussiness_name" jdbcType="VARCHAR" property="bussinessName" />
<result column="shop_number" jdbcType="VARCHAR" property="shopNumber" />
<result column="send_merchant_id" jdbcType="INTEGER" property="sendMerchantId" />
@@ -82,6 +82,22 @@
and `send_merchant_id` = #{sendMerchantId}
</if>
<if test=" null != noCouponOrder ">
and `coupon_order_id` is null
</if>
<if test=" null != hasCouponOrder ">
and `coupon_order_id` is not null
</if>
<if test=" null != noCouponOrderStatus ">
and `coupon_order_status` is null
</if>
<if test=" null != needUpdateCouponOrderStatus ">
and ( `coupon_order_status` is null or coupon_order_status = 0 )
</if>
<if test=" null != lastCreateDate ">
and create_date &lt; #{lastCreateDate}
</if>
<if test=" null != couponOrderStatusList ">
and coupon_order_status in
<foreach collection="couponOrderStatusList" index="index" item="cosidItem" open="(" separator="," close=")">


Laden…
Annuleren
Opslaan