Browse Source

fix 订单

release_toaliyun_real
winter 4 years ago
parent
commit
e615ab9986
12 changed files with 52 additions and 121 deletions
  1. +3
    -0
      mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql
  2. +0
    -66
      mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
  3. +5
    -2
      mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java
  4. +0
    -8
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  5. +12
    -9
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  6. +2
    -1
      mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java
  7. +2
    -1
      mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java
  8. +14
    -26
      mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java
  9. +3
    -2
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java
  10. +3
    -2
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java
  11. +4
    -2
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java
  12. +4
    -2
      mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java

+ 3
- 0
mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql View File

@@ -199,3 +199,6 @@ UPDATE wx_coupon_order_96 co, wx_merchant_b_user bu SET co.`b_merchant_id` =
UPDATE wx_coupon_order_97 co, wx_merchant_b_user bu SET co.`b_merchant_id` = bu.`merchant_id` WHERE co.`b_user_id` = bu.`id`;
UPDATE wx_coupon_order_98 co, wx_merchant_b_user bu SET co.`b_merchant_id` = bu.`merchant_id` WHERE co.`b_user_id` = bu.`id`;
UPDATE wx_coupon_order_99 co, wx_merchant_b_user bu SET co.`b_merchant_id` = bu.`merchant_id` WHERE co.`b_user_id` = bu.`id`;




+ 0
- 66
mallinkCApi/src/main/java/com/iformall/controller/BaseController.java View File

@@ -237,72 +237,6 @@ public class BaseController {
return null;
}


public Long saveToBasicInfoByCUser(String userPhone,String userName,String avatarUrl,Integer sex,Long userId) {
TenantEntity tenantEntity = getTenantInfo();
if (StringUtils.isBlank(userPhone))
return null;

WxCUserBasicInfo byId = null;
if (null != userId) {
byId = wxCUserBasicInfoService.getById(userId,getFinalTenantId());
}

WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(tenantEntity, userPhone);

if (basicInfo != null) {
if (byId != null) {
if (!byId.getId().equals(basicInfo.getId())) {
//数据库存在此手机号的会员,并且当前微信存在另一手机号会员
logger.error("会员" + userId + "更换手机号时,当前手机号会员表已存在:" + userPhone);
return Long.valueOf(-1);
}
}
if (!basicInfo.getTenantId().contains("," + tenantEntity.getTenantId() + ",")) {
basicInfo.setTenantId(basicInfo.getTenantId() + tenantEntity.getTenantId() + ",");
}
basicInfo.setNickName(userName);
basicInfo.setAvatarUrl(avatarUrl);
basicInfo.setSex(sex);
wxCUserBasicInfoService.update(basicInfo);
removeCacheMember(basicInfo.getId());
return basicInfo.getId();
} else {
if (byId != null) {
if (!byId.getTenantId().contains("," + tenantEntity.getTenantId() + ",")) {
byId.setTenantId(byId.getTenantId() + tenantEntity.getTenantId() + ",");
}
byId.setPhone(userPhone);
byId.setNickName(userName);
byId.setAvatarUrl(avatarUrl);
byId.setSex(sex);
wxCUserBasicInfoService.update(byId);
removeCacheMember(byId.getId());
return byId.getId();
} else {
basicInfo = new WxCUserBasicInfo();
basicInfo.setTenantId("," + tenantEntity.getTenantId() + ",");
basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId());
basicInfo.setPhone(userPhone);
basicInfo.setNickName(userName);
basicInfo.setAvatarUrl(avatarUrl);
basicInfo.setSex(sex);
wxCUserBasicInfoService.save(basicInfo);
removeCacheMember(basicInfo.getId());

// 首次授权, 增加成长值及积分
// 成长值
wxScoreRulesService.addScore(tenantEntity, EnumScoreType.WECHAT_PHONE, basicInfo);
// 增加积分
wxCUserBasicInfoService.addCredit(basicInfo.getId(),tenantEntity,EnumScoreType.WECHAT_PHONE);
// 外部注券
memCouponFromDspService.couponOrderFromDsp(tenantEntity, userPhone);

return basicInfo.getId();
}
}
}

public String getIpAddr() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ipaddress = IPUtil.getIpAddr(request);


+ 5
- 2
mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java View File

@@ -197,7 +197,10 @@ public class WxPayOrderController extends BaseController {
WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId());
//查询微信订单状态并更新
check(composeOrder,payOrder);
boolean hasCompleted = hasCompleted(composeOrder,payOrder);
if (hasCompleted) {
return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
}
WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat());
//WxCUser user = getUser();
@@ -231,7 +234,7 @@ public class WxPayOrderController extends BaseController {
}
}
private boolean check(WxComposeOrder composeOrder,WxPayOrder payOrder) {
private boolean hasCompleted(WxComposeOrder composeOrder,WxPayOrder payOrder) {
if (EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) {
WxOrder order = composeOrder.getSingleOrder();
if (null == order) {


+ 0
- 8
mallinkService/src/main/java/com/iformall/service/WxOrderService.java View File

@@ -191,14 +191,6 @@ public interface WxOrderService {

void updateOrderGroupStatusByCouponChannelId(Long id, TenantEntity tenantEntity, Integer code);


/**
* 下订单
* @param user
* @param coupon
* @return
*/
WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,EnumPayWay payWay);
void sendOrderSuccessActionMsg(WxOrder updateOrder);

/**


+ 12
- 9
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -2188,8 +2188,7 @@ public class WxOrderServiceImpl implements WxOrderService {
RedisTemplate<String, WxCUserBasicInfo> cUserBasicInfoRedisTemplate;

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder saveOrderForCoupon(boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
public WxComposeOrder saveOrderForCoupon(TenantEntity tenantEntity,boolean allowUnPayOrder,EnumComposeOrder composeOrderType,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
// 防止同一用户重复下单,1秒内
String key = new StringBuilder().append("saveComposeOrder:").append(user.getId()).toString();
@@ -2202,7 +2201,7 @@ public class WxOrderServiceImpl implements WxOrderService {
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrderType.getCode());
WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(user, orderSave, payWay);
WxComposeOrder composeOrder = orderAdapterService.createDBMainOrder(tenantEntity,user, orderSave, payWay);
WxOrder lastOrder = null;
for (int i = 0 ; i < orderSave.size(); i ++) {
OrderComposeSaveDto orderdto = orderSave.get(i);
@@ -2314,6 +2313,9 @@ public class WxOrderServiceImpl implements WxOrderService {
}
record.setCouponNumber(couponNumber);
try {
if(EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) {
record.setId(composeOrder.getMainOrderId());
}
proxy.saveFreeOrder(record, user, coupon);
} catch (Exception e) {
logger.error("下订单错误:" + e.getMessage(),e);
@@ -2469,12 +2471,12 @@ public class WxOrderServiceImpl implements WxOrderService {
logger.error("body:" + e.getMessage());
bodyStr = "券" + '-' + EnumCouponType.getEnum(coupon.getType());
}
final IdWorker idWorker = IdWorker.get();
Long orderNumber = idWorker.nextId();
record.setId(orderNumber);
if (null == record.getId()) {
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
}
record.updateTenantInfo(coupon);
record.setOrderNumber(orderNumber);
record.setOrderNumber(record.getId());
record.setProductId(coupon.getId());
record.setCUserId(user.getId());
record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode());
@@ -2696,7 +2698,7 @@ public class WxOrderServiceImpl implements WxOrderService {
}
WxOrderServiceImpl proxy = (WxOrderServiceImpl) AopContext.currentProxy();
try {
WxComposeOrder order = proxy.saveOrderForCoupon(allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay);
WxComposeOrder order = proxy.saveOrderForCoupon(tenantEntity,allowUnPayOrder,composeOrderType,wxCUserBasicInfo, composeOrderSaveDto, payWay);
return new ResultData(order);
} catch (MallinkException e) {
logger.error("saveOrderForCoupon error.",e);
@@ -2718,6 +2720,7 @@ public class WxOrderServiceImpl implements WxOrderService {

@Override
public PageInfo<WxOrderCouponVo> listGoodsCAsPage(WxOrder record, Integer pageIndex, Integer pageSize) {
//TODO 待优化111111111111111111111111.此处有问题,数据不全,逻辑得跟listCUserVoAsPage一样
PageInfo<WxOrderCouponVo> page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.listGoodsCAsPage(record));
page.getList().stream().forEach(oc->{
if(oc.getLevel().equals(1)){


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java View File

@@ -4,6 +4,7 @@ import java.util.List;

import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumPayWay;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;
@@ -14,7 +15,7 @@ public interface OrderAdapterService {
* 数据库创建组合主订单,不是wxOrder.单个的模式不用创建
* @return
*/
WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay);
WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay);
/**
* 获取支付时商品名称,供服务商API使用


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/order/entity/WxComposeOrder.java View File

@@ -1,5 +1,6 @@
package com.iformall.service.order.entity;

import com.iformall.domain.po.WxBatchOrder;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.base.TenantEntity;

@@ -24,6 +25,6 @@ public class WxComposeOrder extends TenantEntity{
private WxOrder singleOrder;//单个模式时不用重复查询
private Object mainOrder;//真正的主订单对象,批量下单时才有
private WxBatchOrder mainOrder;//真正的主订单对象,批量下单时才有
}

+ 14
- 26
mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java View File

@@ -1,21 +1,28 @@
package com.iformall.service.order.impl;

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

import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.iformall.common.IdWorker;
import com.iformall.domain.dto.OrderComposeSaveDto;
import com.iformall.enums.EnumComposeOrder;
import com.iformall.enums.EnumOrderShopingType;
import com.iformall.enums.EnumPayWay;
import com.iformall.mapper.WxBatchOrderMapper;
import com.iformall.mapper.WxOrderMapper;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.entity.WxComposeChildOrderPrice;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.order.impl.batch.BaseBatchOrderAdapterService;
import com.iformall.service.order.util.OrderHelper;

/**
@@ -24,15 +31,17 @@ import com.iformall.service.order.util.OrderHelper;
*
*/
@Service
public class SingleOrderAdapterService implements OrderAdapterService {
public class SingleOrderAdapterService extends BaseBatchOrderAdapterService {
@Autowired
WxOrderMapper wxOrderMapper;
@Autowired
WxBatchOrderMapper wxBatchOrderMapper;

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
return new WxComposeOrder(0L, EnumComposeOrder.SINGLE.getCode(),0);
public WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
return super.createDBMainOrder(tenantEntity,user, orderSave, payWay, EnumComposeOrder.SINGLE);
}
@Override
@@ -43,26 +52,13 @@ public class SingleOrderAdapterService implements OrderAdapterService {

@Override
public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) {
//mainOrderId(WxBatchOrder的id) 和 wxOrder的id一致
WxComposeOrder corder = super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.SINGLE);
WxOrder wxOrder = wxOrderMapper.selectById(mainOrderId, tenantId);
WxComposeOrder corder = new WxComposeOrder(wxOrder.getId(),EnumComposeOrder.SINGLE.getCode(),wxOrder.getPayment());
corder.updateTenantInfo(wxOrder);
corder.setSingleOrder(wxOrder);
return corder;
}
@Override
public WxComposeChildOrderPrice getChildCouponOrderPrice(OrderComposeSaveDto orderdto,WxCoupon coupon, boolean isPress, Long orderGroupId,
Integer couponNumber) {
Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId);
Integer freightPrice = 0;
//在线配送加上运费
if (EnumOrderShopingType.DISTRIBUTION.getCode().equals(orderdto.getShippingType())) {
freightPrice = coupon.getFreightPrice();
}
return new WxComposeChildOrderPrice(perPrice, couponNumber,freightPrice, coupon.getId());
}

@Override
public List<WxOrder> getChildOrders(WxComposeOrder composeOrder, String tenantId) {
List<WxOrder> childOrders = new ArrayList<WxOrder>();
@@ -70,14 +66,6 @@ public class SingleOrderAdapterService implements OrderAdapterService {
return childOrders;
}

@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList, Long cUserId) {
WxOrder order = composeOrder.getSingleOrder();
order.setCUserId(cUserId);
wxOrderMapper.updateCUserId(order);
}

@Override
public Integer calcuteChildOrderSubsidy(WxCoupon coupon) {
return coupon.getSubsidyNum();


+ 3
- 2
mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java View File

@@ -60,11 +60,12 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
protected WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) {
protected WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay,EnumComposeOrder composeOrderType) {
WxBatchOrder order =new WxBatchOrder();
final IdWorker idWorker = IdWorker.get();
order.setId(idWorker.nextId());
order.setCUserId(user.getId());
order.updateTenantInfo(tenantEntity);
int payment = 0;
for (OrderComposeSaveDto ocsd : orderSave) {
boolean isPress = ocsd.getSignleOrder().isPressOrder();
@@ -98,7 +99,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void updateChildOrdersCUserId(WxComposeOrder composeOrder,List<WxOrder> orderList, Long cUserId) {
if (null != cUserId) {
WxBatchOrder order = (WxBatchOrder) composeOrder.getMainOrder();
WxBatchOrder order = composeOrder.getMainOrder();
order.setCUserId(cUserId);
wxBatchOrderMapper.updateCUserId(order);


+ 3
- 2
mallinkService/src/main/java/com/iformall/service/order/impl/batch/CouponPackageOrderAdapterService.java View File

@@ -6,6 +6,7 @@ import java.util.List;
import com.aliyun.openservices.shade.com.alibaba.fastjson.JSON;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import org.apache.commons.lang3.StringUtils;
@@ -29,8 +30,8 @@ public class CouponPackageOrderAdapterService extends BaseBatchOrderAdapterServi
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.PACKAGECOUPON);
public WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user,List<OrderComposeSaveDto> orderSave,EnumPayWay payWay) {
return super.createDBMainOrder(tenantEntity,user, orderSave, payWay, EnumComposeOrder.PACKAGECOUPON);
}

@Override


+ 4
- 2
mallinkService/src/main/java/com/iformall/service/order/impl/batch/MulityNumberOneOrderBatchOrderAdapterService.java View File

@@ -4,6 +4,8 @@ package com.iformall.service.order.impl.batch;
import java.util.List;

import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;

import org.springframework.stereotype.Service;

import com.iformall.domain.dto.OrderComposeSaveDto;
@@ -25,9 +27,9 @@ public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrder
}

@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
public WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH);
return super.createDBMainOrder(tenantEntity,user, orderSave, payWay, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH);
}

@Override


+ 4
- 2
mallinkService/src/main/java/com/iformall/service/order/impl/batch/OneNumberOneOrderBatchOrderAdapterService.java View File

@@ -3,6 +3,8 @@ package com.iformall.service.order.impl.batch;
import java.util.List;

import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity;

import org.springframework.stereotype.Service;

import com.iformall.domain.dto.OrderComposeSaveDto;
@@ -24,9 +26,9 @@ public class OneNumberOneOrderBatchOrderAdapterService extends BaseBatchOrderAda
}

@Override
public WxComposeOrder createDBMainOrder(WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
public WxComposeOrder createDBMainOrder(TenantEntity tenantEntity,WxCUserBasicInfo user, List<OrderComposeSaveDto> orderSave,
EnumPayWay payWay) {
return super.createDBMainOrder(user, orderSave, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH);
return super.createDBMainOrder(tenantEntity,user, orderSave, payWay, EnumComposeOrder.ONE_NUMBER_ORDER_BATCH);
}

@Override


Loading…
Cancel
Save