Commit 500ed0b8 by zhiheng.zhang

华莱士升级

parent 37faa9a3
......@@ -1216,6 +1216,8 @@ public class OrderSdkAdapter {
//费用信息
data.setOrderCostDetailList(orderInfoReqs.getOrderCostDetailList());
data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
data.setExpressNo(orderInfoReqs.getExpressNo());
data.setExpressChannelCode(orderInfoReqs.getExpressChannelCode());
//发票信息
data.setOrderInvoice(orderInfoReqs.getOrderInvoice());
data.setPayChannelType(orderInfoReqs.getPayChannelType());
......
......@@ -14,6 +14,7 @@ package com.freemud.sdk.api.assortment.order.response.order;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.builder.ToStringBuilder;
......@@ -371,6 +372,16 @@ public class QueryOrdersResponse {
*/
private String expressChannelName;
/**
* 配送渠道编号
*/
private String expressChannelCode;
/**
* 快递单号
*/
private String expressNo;
/**
* 配送类型 1自配送(三方渠道配送、商家店员配送) 2平台配送
......
......@@ -357,4 +357,14 @@ public interface OrderCenterSdkService {
*/
QueryLineUpResponse queryLineUpOrder(QueryLineUpOrderReq queryLineUpOrderReq);
/**
* 商城订单同意并退款完成 POS
*/
BaseOrderResponse mallOrderRefundComplete(BaseQueryOrderRequest baseQueryOrderRequest);
/**
* 商城订单同意并退货完成 POS
*/
BaseOrderResponse mallOrderRefundReturn(BaseQueryOrderRequest baseQueryOrderRequest);
}
......@@ -2010,4 +2010,33 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<List<String>> response = orderSdkService.queryLineUpOrder(queryLineUpOrderReq, LogThreadLocal.getTrackingNo());
return orderSdkAdapter.convent2QueryLineUpResponse(response);
}
@Override
public BaseOrderResponse mallOrderRefundComplete(BaseQueryOrderRequest baseQueryOrderRequest) {
AfterSalesOperateReq request = new AfterSalesOperateReq();
request.setOrderCode(baseQueryOrderRequest.getOrderId());
request.setPartnerId(baseQueryOrderRequest.getPartnerId());
request.setOrderClient(OrderClientType.SAASMALL.getIndex());
request.setAfterSalesCode(baseQueryOrderRequest.getAfterSalesCode());
request.setAfterSerialNo(baseQueryOrderRequest.getRefundSerialNo());
request.setAdultRemark(baseQueryOrderRequest.getReason());
request.setOperator(baseQueryOrderRequest.getOperator());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.adultApproveWithRefundComplete(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
@Override
public BaseOrderResponse mallOrderRefundReturn(BaseQueryOrderRequest baseQueryOrderRequest) {
AfterSalesOperateReq request = new AfterSalesOperateReq();
request.setOrderCode(baseQueryOrderRequest.getOrderId());
request.setPartnerId(baseQueryOrderRequest.getPartnerId());
request.setOrderClient(OrderClientType.SAASMALL.getIndex());
request.setAfterSalesCode(baseQueryOrderRequest.getAfterSalesCode());
request.setAfterSerialNo(baseQueryOrderRequest.getRefundSerialNo());
request.setAdultRemark(baseQueryOrderRequest.getReason());
request.setOperator(baseQueryOrderRequest.getOperator());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.adultApproveWithGoodsReturned(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
}
......@@ -24,6 +24,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -73,6 +74,7 @@ public class ShoppingCartMallBaseServiceImpl implements ShoppingCartBaseService
try {
String redisKey = getShoppingCartGoodsKey(cartParamDto);
BoundHashOperations<String, String, CartGoods> operations = redisTemplate.boundHashOps(redisKey);
if(1 == cartParamDto.getBuyType() )
this.clear(cartParamDto, trackingNo);
Map<String, CartGoods> cartGoodsMap = cartParamDto.getCartGoodsList().parallelStream()
.filter(k -> StringUtils.isNotEmpty(k.getCartGoodsUid()))
......@@ -163,7 +165,10 @@ public class ShoppingCartMallBaseServiceImpl implements ShoppingCartBaseService
*/
private String getShoppingCartGoodsKey(CartParamDto cartParamDto) {
if(cartParamDto.getBuyType() == ShoppingCartConstant.NOW_BUY_TYPE) {
return RedisKeyConstant.SAAS_MALL_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId()+"_" + "temp";
//立即购买key设置30分钟能自动过期
String key = RedisKeyConstant.SAAS_MALL_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId()+"_" + "temp";
redisTemplate.expire(key,30, TimeUnit.MINUTES);
return key;
}
return RedisKeyConstant.SAAS_MALL_SHOPPINGCART_KEY_PREFIX + cartParamDto.getPartnerId() + "_" + cartParamDto.getStoreId() + "_" + cartParamDto.getUserId();
}
......
package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import com.freemud.application.sdk.api.takeaway.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.stereotype.Component;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: WaimaiSdkAdapter
* @Package cn.freemud.management.adapter
* @Description:
* @author: zhiheng.zhang
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Component
public class MallOrderAdapter {
/**
* 接单request
* @param request
* @param orderBean
* @return
*/
public PlatformOrderRequest getPlatformOrderRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
PlatformOrderRequest platformOrderRequest = new PlatformOrderRequest();
platformOrderRequest.setPlatformOrderId(orderBean.getCustomerOrder());
platformOrderRequest.setChannel(orderBean.getSource());
platformOrderRequest.setCompanyId(orderBean.getCompanyId());
platformOrderRequest.setOrderId(orderBean.getOid());
platformOrderRequest.setShopId(orderBean.getShopId());
platformOrderRequest.setOperator(request.getOperator());
return platformOrderRequest;
}
/**
* 配送request
* @param request
* @param orderBean
* @return
*/
public OrderSendOutRequest getOrderSendOutRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
OrderSendOutRequest orderSendOutRequest = new OrderSendOutRequest();
orderSendOutRequest.setCompanyId(orderBean.getCompanyId());
orderSendOutRequest.setOrderId(orderBean.getOid());
orderSendOutRequest.setShopId(orderBean.getShopId());
orderSendOutRequest.setOperator(request.getOperator());
return orderSendOutRequest;
}
/**
* 送达request
* @param request
* @param orderBean
* @return
*/
public OrderSendOutRequest getOrderArriveRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
OrderSendOutRequest arriveReq = new OrderSendOutRequest();
arriveReq.setOrderId(orderBean.getOid());
arriveReq.setChannel( orderBean.getSource());
arriveReq.setCompanyId(orderBean.getCompanyId());
arriveReq.setOperator(request.getOperator());
arriveReq.setShopId(request.getStoreId());
return arriveReq;
}
/**
* 拒单
* @param request
* @param orderBean
* @return
*/
public PartnerCancelRequest getPartnerCancelRequest(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
PartnerCancelRequest cancelRequest = new PartnerCancelRequest();
cancelRequest.setPlatformOrderId(orderBean.getCustomerOrder());
cancelRequest.setOperator(request.getOperator());
cancelRequest.setType(request.getReason_code() == null ? 11 : request.getReason_code());
cancelRequest.setReason(request.getReason());
cancelRequest.setShopId(orderBean.getShopId());
cancelRequest.setOrderId(request.getOrderId());
cancelRequest.setChannel(orderBean.getSource());
cancelRequest.setCompanyId(request.getPartnerId());
return cancelRequest;
}
/**
* 拒绝或同意退款
* @param request
* @param orderBean
* @param isAgree true:同意退款,false:拒绝退款
* @return
*/
public AgreeOrderRequest getAgreeOrderRequest(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean,boolean isAgree){
AgreeOrderRequest agreeOrderRequest = new AgreeOrderRequest();
agreeOrderRequest.setPlatformOrderId(orderBean.getCustomerOrder());
agreeOrderRequest.setChannel( orderBean.getSource() );
agreeOrderRequest.setCompanyId(request.getPartnerId());
agreeOrderRequest.setOrderId(orderBean.getOid());
agreeOrderRequest.setShopId(orderBean.getShopId());
agreeOrderRequest.setOperator(request.getOperator());
agreeOrderRequest.setReason(request.getReason());
agreeOrderRequest.setAfterSalesCode(orderBean.getRefundList().get(0).getRid());
agreeOrderRequest.setAgree(isAgree);
return agreeOrderRequest;
}
/**
* 备餐完成request
* @param request
* @param orderBean
* @return
*/
public PartnerPrepareRequest getPartnerPrepareRequest (OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
PartnerPrepareRequest partnerPrepareRequest = new PartnerPrepareRequest();
partnerPrepareRequest.setPlatformOrderId(orderBean.getCustomerOrder());
partnerPrepareRequest.setChannel(orderBean.getSource());
partnerPrepareRequest.setCompanyId(orderBean.getCompanyId());
partnerPrepareRequest.setOrderId(orderBean.getOid());
partnerPrepareRequest.setShopId(orderBean.getShopId());
partnerPrepareRequest.setOperator(request.getOperator());
return partnerPrepareRequest;
}
}
......@@ -2,6 +2,7 @@ package cn.freemud.management.service.adapter;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.impl.MallOrderMangerServiceImpl;
import cn.freemud.management.service.impl.McCafeMangerServiceImpl;
import cn.freemud.management.service.impl.SaasOrderMangerServiceImpl;
import cn.freemud.management.service.impl.WaimaiOrderMangerServiceImpl;
......@@ -25,6 +26,9 @@ public class OrderBeanFactory {
@Value("#{'${o2o.orderClient}'.split(',')}")
private List<String> o2oOrderClients;
@Value("#{'${mall.orderClient}'.split(',')}")
private List<String> mallOrderClients;
@Autowired
private ApplicationContext applicationContext;
......@@ -44,6 +48,10 @@ public class OrderBeanFactory {
if (o2oOrderClients.contains(orderClient)){
return applicationContext.getBean(WaimaiOrderMangerServiceImpl.class);
}
if (mallOrderClients.contains(orderClient)){
return applicationContext.getBean(MallOrderMangerServiceImpl.class);
}
return applicationContext.getBean(SaasOrderMangerServiceImpl.class);
}
}
package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.enums.RefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderRefundRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: SaasOrderService
* @Package cn.freemud.management.service.impl
* @Description:
* @author: shuhu.hou
* @date: 2020/4/23 11:30
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Component
public class MallOrderHandle {
@Autowired
private OrderSdkAdapter orderSdkAdapter;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Value("${saasDeliveryTimeOut}")
private Integer wmDeliveryTimeOut;
/**
* 同意退款
*
* @param request
* @param refundResponse
* @param orderBean
* @return
*/
public BaseResponse refundAgree(OrderManagerRequest request, PayRefundResponse refundResponse, QueryOrdersResponse.DataBean.OrderBean orderBean) {
BaseQueryOrderRequest refundAgreeRequest = orderSdkAdapter.getRefundAgreeRequest(refundResponse.getRefundId(), request.getReason(), request.getOperator(), orderBean);
BaseOrderResponse baseOrderResponse = null;
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
baseOrderResponse = orderCenterSdkService.mallOrderRefundComplete(refundAgreeRequest);
} else {
baseOrderResponse = orderCenterSdkService.mallOrderRefundReturn(refundAgreeRequest);
}
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.AGREE_REFUND_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 拒绝退款
* @param request
* @param orderBean
* @return
*/
public BaseResponse refundReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderRefundReject(rejectRefundRequest);
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.REJECT_REFUND_ORDER_FAIL);
}
return ResponseUtil.success();
}
/**
* 麦咖啡拒绝退款
* @param request
* @param orderBean
* @return
*/
public BaseResponse mcCafeRefundReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean);
BaseOrderResponse baseOrderResponse = null;
for(int i=0;i<orderBean.getRefundList().size();i++) {
if (RefundStatus.APPLY_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid());
baseOrderResponse = orderCenterSdkService.orderRefundReject(rejectRefundRequest);
}
if (RefundStatus.COMPLETE_REFUND.getCode().equals(orderBean.getRefundList().get(i).getStatus())) {
baseOrderResponse = new BaseOrderResponse();
baseOrderResponse.setErrcode(100);
baseOrderResponse.setErrmsg("success");
}
}
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.REJECT_REFUND_ORDER_FAIL);
}
return ResponseUtil.success();
}
}
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.MallOrderAdapter;
import cn.freemud.management.adapter.WaimaiSdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.takeaway.request.order.*;
import com.freemud.application.sdk.api.takeaway.service.WaimaiOrderService;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: rrr
* @Package cn.freemud.management.service.impl
* @Description: 外卖订单履单操作
* @author: zhiheng.zhang
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public class MallOrderMangerServiceImpl implements OrderManagerService {
@Resource
private MallOrderAdapter mallOrderAdapter;
@Autowired
private MallOrderHandle mallOrderHandle;
@Autowired
private OrderBaseService orderBaseService;
@Autowired
private PaymentHandle paymentHandle;
@Autowired
private DeliveryHandle deliveryHandle;
@Autowired
private StockHandle stockHandle;
/**
* 同意退款
*
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//取消配送单
deliveryHandle.cancelDelivery(orderBean,request);
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
refundResponse = paymentHandle.refund(request, orderBean);
} catch (OrderServiceException orderEx){
return ResponseUtil.error(orderEx.getResult());
}
//订单同意退款
mallOrderHandle.refundAgree(request, refundResponse, orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_AGREE_REFUND, request.getReason());
//todo 可以考虑基于订单回调异步实现
//冲正库存
stockHandle.revert(request,orderBean);
return ResponseUtil.success();
}
/**
* 拒绝退款
*
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderRejectRefund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//拒绝退款
mallOrderHandle.refundReject(request,orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_REJECT_REFUND, request.getReason());
return ResponseUtil.success();
}
}
......@@ -175,9 +175,7 @@ public class ShoppingCartController {
if (instanceByRequest instanceof ShoppingCartNewServiceImpl && SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).newShoppingCartGray(shoppingCartInfoRequestVo.getPartnerId(), shoppingCartInfoRequestVo.getShopId())){
return shoppingCartDemoController.getShoppingCartGoodsApportion(getShoppingCartGoodsApportionRequestVo);
} else {
return instanceByRequest.
getShoppingCartGoods(shoppingCartInfoRequestVo,
getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
return instanceByRequest. getShoppingCartGoods(shoppingCartInfoRequestVo, getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
}
}
......
......@@ -298,11 +298,8 @@ public class AssortmentSdkService {
* @return
*/
public com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto getCartParamDto(String partnerId, String storeId, String useId) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto();
cartParamDto.setPartnerId(partnerId);
cartParamDto.setUserId(useId);
cartParamDto.setStoreId(storeId);
return cartParamDto;
int buyType = 0;
return getNowBuyCartParamDto(buyType, partnerId, storeId, useId);
}
/**
......@@ -358,4 +355,24 @@ public class AssortmentSdkService {
return JSONArray.parseArray(JSONObject.toJSONString(baseResponse.getResult()), CartGoods.class);
}
/**
* 组装NowyCartParamDto信息
*
* @param partnerId
* @param storeId
* @param useId
* @return
*/
public com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto getNowBuyCartParamDto(int buyType,String partnerId, String storeId, String useId) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = new com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto();
cartParamDto.setPartnerId(partnerId);
cartParamDto.setUserId(useId);
cartParamDto.setStoreId(storeId);
//立即购买==1 ,设置新的缓存key
if(buyType == ShoppingCartConstant.NOW_BUY_TYPE) {
cartParamDto.setBuyType(buyType);
}
return cartParamDto;
}
}
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