Commit 02dbe319 by ping.wu

Merge branches 'feature/20200522_买券订单创建_wuping' and 'qa' of…

Merge branches 'feature/20200522_买券订单创建_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/readme.md
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/service/impl/SellCouponOrderServiceImpl.java
#	ordercenter-sdk/pom.xml
#	ordercenter-sdk/readme.md
parents 9d36def5 1ae11a54
......@@ -46,3 +46,12 @@
| 1.7.8-SNAPSHOT| 预约单接单后提醒时间区分外卖自提 | wuping | 2020-05-18 |
| 1.7.1-SNAPSHOT| 订单查询返回配送渠道字段 | 雷后领 | 2020-05-14 |
| 1.8.6-SNAPSHOT| 增加完成时间戳字段 | 雷后领 | 2020-05-27|
| 1.4.4.RELEASE | 全单退增加是否退配送费 | 海波 | 2020-05-18 |
| 1.4.5.RELEASE | 升级券码sdk |胡超 | 2020-05-18 |
| 1.4.6.RELEASE | 券码接口新增组织机构 |胡超 | 2020-05-18 |
| 1.4.7.RELEASE | 创建订单增加appid字段 | wuping | 2020-05-18 |
| 1.4.8.RELEASE | 规范orderExtInfoDto | 侯书虎 | 2020-05-19 |
| 1.3.4-SNAPSHOT | 返回售后单创建时间 | wuping | 2020-04-27 |
| 1.3.5-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.4.9.RELEASE | 售后单任务 | wuping | 2020-05-21 |
| 1.8.9-SNAPSHOT | 用户订单和es综合查询接口新增订单业务类型集合 | wuping | 2020-06-01 |
\ No newline at end of file
......@@ -504,7 +504,7 @@ public class OrderSdkAdapter {
} catch (ParseException e) {
e.printStackTrace();
}
orderConditionsReq.setBizTypes(queryOrdersRequest.getBizTypes());
return orderConditionsReq;
}
......@@ -1030,6 +1030,7 @@ public class OrderSdkAdapter {
}
data.setOrderOperationHistoryList(getOrderOperationHistory(orderInfoReqs.getOrderOperationHistoryList()));
data.setApportionDetails(getApportionDetails(orderInfoReqs));
data.setOrderSettlementDetailList(orderInfoReqs.getOrderSettlementDetailList());
data.setOrderCostDetailList(orderInfoReqs.getOrderCostDetailList());
data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
return data;
......
......@@ -22,6 +22,8 @@ public class ProductBindingCouponType {
*/
private String activityCode;
private String activityName;
/**
* 数量
*/
......@@ -30,6 +32,6 @@ public class ProductBindingCouponType {
/**
* 排序
*/
private int sequence;
// private int sequence;
}
......@@ -32,4 +32,5 @@ public class QueryOrdersByConditionsRequest extends BaseConfig {
private String userId;
//订单业务类型 1:普通订单 2:虚拟订单
private Integer bizType;
private List<Integer> bizTypes;
}
......@@ -3,6 +3,8 @@ package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
import java.util.List;
@Data
public class QueryOrdersRequest extends BaseConfig {
......@@ -55,4 +57,6 @@ public class QueryOrdersRequest extends BaseConfig {
*/
private String[] source;
private List<Integer> bizTypes;
}
......@@ -14,6 +14,7 @@ package com.freemud.sdk.api.assortment.order.response.order;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.builder.ToStringBuilder;
......@@ -255,6 +256,7 @@ public class QueryOrdersResponse {
private List<OrderCostResp> orderCostDetailList;
private List<OrderSettlementResp> orderSettlementDetailList;
private AddDeliveryInfo addInfo;
......
......@@ -829,6 +829,8 @@ public class OrderAdapter {
// queryOrdersDto.setStatus(statuses);
// queryOrdersDto.setType(new Integer[]{});
}
//商品订单和卖券订单
queryOrdersDto.setBizTypes(Arrays.asList(1,6));
return queryOrdersDto;
}
......@@ -1058,6 +1060,11 @@ public class OrderAdapter {
if (OrderStatus.TAKE_ORDER.getCode().equals(ordersBean.getStatus()) && PayStatus.HAVE_PAID.getCode().equals(ordersBean.getPayStatus())) {
responseVo.setEnableRefund(true);
}
responseVo.setBizType(ordersBean.getBizType());
//6:卖券虚拟商品 暂不能申请退款
if(ordersBean.getBizType() == 6){
responseVo.setButtonRefund(false);
}
List<Integer> enableRefundCodes = Lists.newArrayList(Arrays.asList(
OrderStatus.RECEIPT.getCode(), OrderStatus.COMPLETE_MAKE.getCode()));
if (enableRefundCodes.contains(ordersBean.getStatus()) && PayStatus.HAVE_PAID.getCode().equals(ordersBean.getPayStatus())) {
......@@ -1651,6 +1658,7 @@ public class OrderAdapter {
productVo.setSequence(productBean.getSequence());
productVo.setQty(productBean.getNumber());
productVo.setSpecification("");
List<InventedParentActivityVo> inventedParentActivityVos = new ArrayList<>();
String attributeNames = "";
if (StringUtils.isNotBlank(productBean.getAddInfo()) && productBean.getAddInfo().contains("attributeNames")) {
OrderProductAddInfo orderProductAddInfo = gson.fromJson(productBean.getAddInfo(), OrderProductAddInfo.class);
......@@ -1658,6 +1666,19 @@ public class OrderAdapter {
productVo.setAttributeNames(attributeNames);
productVo.setSpecification(attributeNames);
}
if(StringUtils.isNotBlank(productBean.getExtInfo())){
OrderProductAddInfoDto orderProductAddInfoDto = gson.fromJson(productBean.getExtInfo(), OrderProductAddInfoDto.class);
if(CollectionUtils.isNotEmpty(orderProductAddInfoDto.getProductBindingCoupons())){
for (ProductBindingCouponType productBindingCouponType : orderProductAddInfoDto.getProductBindingCoupons()){
InventedParentActivityVo inventedParentActivityVo = new InventedParentActivityVo();
// inventedParentActivityVo.setActivityCode(productBindingCouponType.getActivityCode());
inventedParentActivityVo.setActivityName(productBindingCouponType.getActivityName());
inventedParentActivityVo.setNum(productBindingCouponType.getNum());
inventedParentActivityVos.add(inventedParentActivityVo);
}
productVo.setInventedParentActivitiesVo(inventedParentActivityVos);
}
}
productVo.setOriginalPrice(productBean.getPrice());
productVo.setFinalPrice(productBean.getSalePrice());
productVo.setExtras(shoppingCartAdapter.getExtraName(productBean.getSpecificationName(), attributeNames));
......
package cn.freemud.entities.dto;
import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderProductAddInfo {
......@@ -16,6 +19,11 @@ public class OrderProductAddInfo {
*/
private ActivityProduct activityProduct;
/**
* 商品绑定的券活动(买券虚拟订单才有)
*/
private List<ProductBindingCouponType> productBindingCoupons;
@Data
@Builder
public static class ActivityProduct {
......
......@@ -2,6 +2,8 @@ package cn.freemud.entities.dto;
import lombok.Data;
import java.util.List;
@Data
public class QueryOrdersDto {
......@@ -54,5 +56,6 @@ public class QueryOrdersDto {
*/
private String[] source;
private List<Integer> bizTypes;
}
package cn.freemud.entities.vo;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: InventedParentActivityVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: ping1.wu
* @date: 2020/5/28 17:01
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class InventedParentActivityVo {
// private String activityCode;
private String activityName;
private int num;
}
......@@ -150,4 +150,6 @@ public class ProductVo {
*/
private List<ProductVo> setMealProducts;
private List<InventedParentActivityVo> InventedParentActivitiesVo;
}
......@@ -341,6 +341,11 @@ public class QueryOrderResponseVo {
*/
private String receiveRegion;
/**
* 订单业务类型 1:普通订单 2:虚拟订单 3:会员订单 4:积分商城订单 5:储值卡订单 6:卖券虚拟商品
*/
private Integer bizType;
@Data
public static class OrderStatusFlow {
/**
......
......@@ -163,6 +163,7 @@ public enum ResponseResult {
COUPON_ORDER_WAY_ERROR("46011", "您选择得优惠券不适用该点餐方式"),
COUPON_VERIFICATION_FAIL("46012","优惠券核销失败"),
COUPON_CALLBACK_FAIL("46013","优惠券移除卡包失败"),
COUPON_INVAILD("46014", "优惠券失效"),
/**
* 加价购商品
*/
......
package cn.freemud.service.impl;
import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
......@@ -13,6 +14,7 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
......@@ -45,9 +47,12 @@ import com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequ
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto;
import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
......@@ -82,6 +87,9 @@ public class SellCouponOrderServiceImpl {
private MenuService menuService;
@Autowired
private OrderSdkService orderSdkService;
//聚合订单服务
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private OrderServiceImpl orderservice;
@Autowired
......@@ -140,9 +148,15 @@ public class SellCouponOrderServiceImpl {
}
List<ActiveDetailVO> activeDetailVOS = batchQueryActivityInfo(partnerId, activityCodes, trackingNo);
if(activeDetailVOS == null){
if(CollectionUtils.isEmpty(activeDetailVOS) || activityCodes.size() != activeDetailVOS.size()){
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
Date now = new Date();
for (ActiveDetailVO activeDetailVO : activeDetailVOS){
if(activeDetailVO.getEffectiveEndTime() != null && activeDetailVO.getEffectiveEndTime().before(now)){
return ResponseUtil.error(ResponseResult.COUPON_INVAILD);
}
}
CreateOrderRequest createOrderRequest = convent2NEWCreateOrderRequest(requestVo,userLoginInfoDto,productInfosByIds.getData(),activeDetailVOS,storeResponse.getBizVO());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
......@@ -325,11 +339,16 @@ public class SellCouponOrderServiceImpl {
OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto();
List<ProductBindingCouponType> productBindingCoupons = new ArrayList<>();
for (GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.ProductBindingCouponType productBindingCouponType : productBean.getProductBindingCouponTypes()){
for (ActiveDetailVO activeDetailVO : activeDetailVOS){
if(productBindingCouponType.getActivityCode().equals(activeDetailVO.getActiveCode())){
ProductBindingCouponType productBindingCouponType2 = new ProductBindingCouponType();
productBindingCouponType2.setActivityCode(productBindingCouponType.getActivityCode());
productBindingCouponType2.setNum(productBindingCouponType.getNum());
//productBindingCouponType2.setSequence(productBindingCouponType.getSequence());
productBindingCouponType2.setActivityName(activeDetailVO.getActiveName());
productBindingCoupons.add(productBindingCouponType2);
break;
}
}
}
orderProductAddInfoDto.setProductBindingCoupons(productBindingCoupons);
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(orderProductAddInfoDto));
......@@ -372,6 +391,26 @@ public class SellCouponOrderServiceImpl {
*/
public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans) {
QueryOrdersResponseDto.DataBean.OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
ConfirmOrderRequest var1 = LightApplicationConvertToAssortmentSdkAdapter.confirmOrderDtoConvertToConfirmOrderRequest(confirmOrderDto, orderBeans.get(OrderBeanType.MERMBERORDER.getCode()));
var1.setPartnerId(orderBean.getCompanyId());
var1.setStoreId(orderBean.getShopId());
var1.setOrderType(orderBean.getType());
var1.setProductOrderCode(orderBean.getOid());
var1.setPayDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd HH:mm:ss"));
var1.setPayTransId(message.getOut_trade_no());
var1.setOperator(orderBean.getUserName());
var1.setEndTransId(message.getEndTransId());
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
try {
// 订单支付成功
PayAccessResponse payAccessResponse = orderCenterSdkService.payAccess(var1);
}catch (Exception e){
LogUtil.error(LogThreadLocal.getTrackingNo(),"sdkPayAccessError",JSONObject.toJSONString(var1),null,e);
}
//支付成功直接完成
OrderChangeStateReq request = new OrderChangeStateReq();
request.setOrderCode(orderBean.getOid());
request.setOrderState(NewOrderStatus.COMPLETE.getIndex());
......
......@@ -24,3 +24,12 @@
| 1.2.4.RELEASE | 发送pos消息中心新增字段 | 侯书虎 | 2020-05-11 |
| 1.2.5.RELEASE | 取消接口新增超时时间字段 | wuping | 2020-05-12 |
| 1.2.6.RELEASE | 增加售后阶段 | 海波 | 2020-05-14 |
| 1.2.7.RELEASE | 全单退增加是否退配送费 | 海波 | 2020-05-14 |
| 1.1.9-SNAPSHOT | 创建订单增加appid字段 | wuping | 2020-05-08 |
| 1.2.8.RELEASE | 1.1.9-SNAPSHOT升RELEASE版本 | wuping | 2020-05-18 |
| 1.2.9.RELEASE | 规范orderExtInfoDto | 侯书虎 | 2020-05-19 |
| 1.3.3-SNAPSHOT | 创建售后单接口增加任务 | wuping | 2020-04-27 |
| 1.3.4-SNAPSHOT | 取消订单增加任务 | wuping | 2020-04-28 |
| 1.2.10.RELEASE | 增加售后单任务 | wuping | 2020-05-21 |
| 1.4.12-SNAPSHOT | 增加新接口:新增结算信息 | wuping | 2020-05-28 |
| 1.4.13-SNAPSHOT | 用户订单和es综合查询接口新增订单业务类型集合 | wuping | 2020-06-01 |
\ No newline at end of file
......@@ -166,4 +166,9 @@ public class InterfaceAddressConstant {
* 订单管理
*/
public static final String STATUS_OPERATE="order/statusOperate";
/**
* 新增结算信息
*/
public static final String CREATE_SETTLEMENT="order/v2/createSettlement";
}
......@@ -106,6 +106,8 @@ public class OrderConditionsReq {
//订单业务类型 1:普通订单 2:虚拟订单
private Integer bizType;
private List<Integer> bizTypes;
// 外部对象ID 如:活动ID
private List<String> externalObjectIds;
// 外部对象ID 如:活动类型
......
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderSettlementReq
* @Package com.freemud.application.sdk.api.ordercenter.request
* @Description:
* @author: ping1.wu
* @date: 2020/5/28 20:13
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class OrderSettlementReq {
//商户号
private String partnerId;
//订单编码
private String orderCode;
//第三方订单号
private String thirdOrderCode;
private Integer orderClient;
//订单结算信息
private List<OrderSettlementCreateReq> orderSettlementDetailList;
}
......@@ -52,4 +52,7 @@ public class OrderUserConditionsReq {
//当前分页
private Integer pageNum;
//订单类型集合
private List<Integer> bizTypes;
}
......@@ -65,4 +65,6 @@ public class QueryAfterSalesOrderConditionsReq {
private Byte afterSalesStageType;
protected Integer ver;
private List<Integer> bizTypes;
}
......@@ -63,4 +63,13 @@ public class OrderSettlementCreateReq {
//是否线上 false:不是 true:是
private Boolean isOnline;
//外部子对象
private String externalObjectSubId;
//外部对象名称 如:活动名称
private String externalObjectName;
//是否忽略,不参与优惠计算
private Boolean ignoreInDiscountAmount;
}
......@@ -712,4 +712,16 @@ public class OrderSdkService {
return responseHandle(responseDTO);
}
/**
* 新增结算信息,保存虚拟商品订单异步发券券信息
* @return
*/
public BaseResponse createSettlement(OrderSettlementReq request, String trackingNo) {
String url = InterfaceAddressConstant.CREATE_SETTLEMENT;
OrderBaseResp<PaySuccessResp> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, url,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp<PaySuccessResp>>() {
});
return responseHandle(responseDTO);
}
}
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