Commit d9609ff7 by 王世昌

拼团订单先通知促销,再退款和取消订单

parent 1866e737
......@@ -1102,9 +1102,12 @@ public class OrderSdkAdapter {
//【订单开放平台】订单详情查询接口增加配送类型字段
data.setExpressType(orderInfoReqs.getExpressType());
//围餐门店英文名称
if (orderInfoReqs.getOrderExtended() != null) {
// 围餐门店英文名称
data.setShopNameEn(orderInfoReqs.getOrderExtended().getStoreNameEn());
// 围餐
data.setSpellGroupCode(orderInfoReqs.getOrderExtended().getSpellGroupCode());
}
if (orderInfoReqs.getAfterSalesOrderList() != null && orderInfoReqs.getAfterSalesOrderList().size() >= 1) {
......@@ -1238,6 +1241,10 @@ public class OrderSdkAdapter {
data.setOrderOperationHistoryList(getOrderOperationHistory(orderInfoReqs.getOrderOperationHistoryList()));
data.setApportionDetails(getApportionDetails(orderInfoReqs));
data.setOrderSettlementDetailList(orderInfoReqs.getOrderSettlementDetailList());
if (Objects.nonNull(orderInfoReqs.getOrderSettlementDetailList())){
orderInfoReqs.getOrderSettlementDetailList().stream()
.filter(e -> Objects.equals(OrderSettlementType.SPELL_GROUP.getIndex(),e.getSettlementType())).findFirst().ifPresent(e->data.setSpellGroupActivityCode(e.getExternalObjectId()));
}
//费用信息
data.setOrderCostDetailList(orderInfoReqs.getOrderCostDetailList());
data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
......
......@@ -414,6 +414,16 @@ public class QueryOrdersResponse {
private String appId;
/**
* 拼团团号
*/
private String spellGroupCode;
/**
* 拼团活动编号
*/
private String spellGroupActivityCode;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
......@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkRefundRequest;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
......@@ -258,6 +259,10 @@ public class SpellGroupOrderAdapter {
createSpellGroupOrderDto.getProducts().size());
}
public GroupWorkRefundRequest convertToGroupWorkRefundRequest(String activityCode, String groupId, String orderId, String userId) {
return new GroupWorkRefundRequest(activityCode, groupId, orderId, userId);
}
/*------------------下方转换返回信息------------------------*/
/**
......
......@@ -286,6 +286,17 @@ public class QueryOrdersResponseDto {
*/
private BigDecimal weight;
/**
* 拼团团号
*/
private String spellGroupCode;
/**
* 拼团活动编号
*/
private String spellGroupActivityCode;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
package cn.freemud.entities.dto.promotion;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 通知促销团员取消订单
*
* @author shichang.wang 2021/4/21
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class GroupWorkRefundRequest {
/**
* 活动号
*/
private String activityCode;
/**
* 团号
*/
private String groupId;
/**
* 订单
*/
private String orderId;
/**
* 用户id
*/
private String userId;
}
package cn.freemud.entities.dto.promotion;
import lombok.Data;
/**
* 通知促销团员取消订单
*
* @author shichang.wang 2021/4/21
*/
@Data
public class GroupWorkRefundResponse {
/**
* 提示
*/
private String msg;
/**
* 内容
*/
private Object result;
/**
* 成功-100
*/
private Integer statusCode;
/**
* 版本号
*/
private String ver;
}
......@@ -173,6 +173,9 @@ public enum ResponseResult {
STORE_SELF_ERROR("45069", "请选择截止营业时间大于45分钟下单"),
COUPON_INVALID("45070", "券已锁定,请先支付或取消待支付订单"),
/**
* 售后单
*/
ORDER_REFUND_EXPRESS_ERROR("45200", "售后单修改物流信息失败"),
......@@ -250,6 +253,7 @@ public enum ResponseResult {
SPELL_GROUP_QUERY_GROUP_WORK_ERROR("80007", "查询拼团信息异常"),
SPELL_GROUP_QUERY_GROUP_STATUS_IS_NOT_NORMAL("80008", "团状态非正常"),
SPELL_GROUP_QUERY_DELIVERYTEMPLATE_ERROR("80009", "查询配送费异常"),
SPELL_GROUP_REFUND_ERROR("80015", "取消拼团失败"),
;
......
......@@ -7,9 +7,7 @@ import cn.freemud.entities.dto.ProductInfosDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryTemplateRequest;
import cn.freemud.entities.dto.delivery.QueryDeliveryTemplateResponse;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkQueryResponse;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
......@@ -154,4 +152,20 @@ public class SpellGroupOrderDataManager {
return queryDeliveryTemplateResponse;
}
/**
* 订单主动退款调促销接口
*
* @param groupWorkRefundRequest
* @return
*/
public GroupWorkRefundResponse groupWorkRefund(GroupWorkRefundRequest groupWorkRefundRequest) {
GroupWorkRefundResponse groupWorkRefundResponse = promotionDiscountClient.groupWorkRefund(groupWorkRefundRequest);
if (!ResponseResult.SUCCESS.getCode().equals(groupWorkRefundResponse.getStatusCode()) || groupWorkRefundResponse.getResult() == null) {
return null;
}
return groupWorkRefundResponse;
}
}
......@@ -43,6 +43,8 @@ import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.product.*;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkQueryResponse;
import cn.freemud.entities.dto.promotion.GroupWorkRefundRequest;
import cn.freemud.entities.dto.promotion.GroupWorkRefundResponse;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
......@@ -315,6 +317,9 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private SpellGroupOrderDataManager spellGroupOrderDataManager;
@Autowired
private SpellGroupOrderAdapter spellGroupOrderAdapter;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo();
......@@ -2108,39 +2113,27 @@ public class OrderServiceImpl implements Orderservice {
if(Objects.isNull(orderRefundVo.getRefundMode()) || RefundModeEnum.getByIndex(orderRefundVo.getRefundMode()) == null){
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "请选择退款方式");
}
// 完成/配送中 可以选择退货退款
List<Integer> refundGoodsCodes = Arrays.asList(
OrderStatus.DISTRIBUTION.getCode(), OrderStatus.COMPLETE.getCode());
if(!refundGoodsCodes.contains(orderBean.getStatus())&& !Objects.equals(RefundModeEnum.UN_REFUND_GOODS.getIndex(), orderRefundVo.getRefundMode())){
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "还未发货,请选择只退款不退货");
}
// 拼团类型
if (Objects.equals(OrderMarketType.GROUPB.getIndex(),orderBean.getMarketingType())) {
OrderExtInfoDto orderExtInfoDto = JSON.parseObject(orderBean.getExtInfo(),OrderExtInfoDto.class);
String spellGroupCode;
if(Objects.isNull(orderExtInfoDto) || StringUtils.isBlank(spellGroupCode = orderExtInfoDto.getSpellGroupCode())){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_WORK_ERROR);
}
// 获取拼团活动
OrderSettlementResp settlement;
if(CollectionUtils.isEmpty(orderBean.getOrderSettlementDetailList())
|| Objects.isNull(settlement = orderBean.getOrderSettlementDetailList().stream().filter(e -> Objects.equals(OrderSettlementType.SPELL_GROUP.getIndex(),e.getSettlementType())).findFirst().orElse(null))
|| StringUtils.isBlank(settlement.getExternalObjectId())){
if(StringUtils.isBlank(orderBean.getSpellGroupCode()) || StringUtils.isBlank(orderBean.getSpellGroupActivityCode())){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_WORK_ERROR);
}
// 查询团信息
GroupWorkQueryRequest groupWorkQueryRequest = new GroupWorkQueryRequest();
groupWorkQueryRequest.setActivityCode(settlement.getExternalObjectId());
groupWorkQueryRequest.setGoodId(spellGroupCode);
groupWorkQueryRequest.setActivityCode(orderBean.getSpellGroupActivityCode());
groupWorkQueryRequest.setGoodId(orderBean.getSpellGroupActivityCode());
groupWorkQueryRequest.setPartnerId(orderBean.getCompanyId());
GroupWorkQueryResponse groupWorkQueryResponse = spellGroupOrderDataManager.groupWorkQuery(groupWorkQueryRequest);
if(groupWorkQueryResponse == null || groupWorkQueryResponse.getResult() == null){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_WORK_ERROR);
}
}
// 完成/配送中 可以选择退货退款
List<Integer> refundGoodsCodes = Arrays.asList(
OrderStatus.DISTRIBUTION.getCode(), OrderStatus.COMPLETE.getCode());
if(!refundGoodsCodes.contains(orderBean.getStatus())&& !Objects.equals(RefundModeEnum.UN_REFUND_GOODS.getIndex(), orderRefundVo.getRefundMode())){
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "还未发货,请选择只退款不退货");
}
}
// todo 这里直接拒绝?
else if (OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
......@@ -2225,6 +2218,15 @@ public class OrderServiceImpl implements Orderservice {
}
// 未接单
if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) {
// 拼团订单主动退款触发通知促销
if (Objects.equals(com.freemud.sdk.api.assortment.order.enums.OrderSourceType.SAASMALL.getCode(), orderBean.getSource())
&& Objects.equals(OrderMarketType.GROUPB.getIndex(), orderBean.getMarketingType()) && StringUtils.isBlank(orderBean.getSpellGroupCode())) {
GroupWorkRefundRequest groupWorkRefundRequest = spellGroupOrderAdapter.convertToGroupWorkRefundRequest(orderBean.getSpellGroupActivityCode(),orderBean.getSpellGroupCode(),orderBean.getOid(),orderBean.getUserId());
GroupWorkRefundResponse refundResponse = spellGroupOrderDataManager.groupWorkRefund(groupWorkRefundRequest);
if (Objects.isNull(refundResponse) || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, refundResponse.getStatusCode())) {
return ResponseUtil.error(ResponseResult.SPELL_GROUP_REFUND_ERROR);
}
}
//商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
BaseResponse baseResponse = partnerNoTakeOrder(orderRefundVo, orderBean, orderId, AfterSalesType.USER_CANCEL, isRefundDeliveryFee);
if (baseResponse != null) {
......@@ -2309,14 +2311,15 @@ public class OrderServiceImpl implements Orderservice {
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
}
}
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
partnerId, afterSalesType, orderRefundVo.getReason(), LogTreadLocal.getTrackingNo(), refundId.toString());
cancelOrderRequest.setOperator(orderBean.getUserName());
cancelOrderRequest.setPartnerId(orderBean.getCompanyId());
if (PayRefundStatus.RUNNING.getCode().intValue() == state) {
if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
// 退款中
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.RETURN_COMPLETE.getCreateEvent());
} else if (PayRefundStatus.SUCCESS.getCode().intValue() == state) {
} else if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功
cancelOrderRequest.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
}
......@@ -4337,6 +4340,7 @@ public class OrderServiceImpl implements Orderservice {
cancelOrderRequest.setRefundDeliveryAmount(isRefundDeliveryFee);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
// todo 需要进行部分的处理
if (baseOrderResponse == null || baseOrderResponse.getData() == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
}
......
......@@ -18,10 +18,7 @@ import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.ActivityQueryRequestDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkQueryResponse;
import cn.freemud.entities.dto.promotion.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......@@ -62,5 +59,13 @@ public interface PromotionDiscountClient {
@PostMapping("/groupWork/query")
GroupWorkQueryResponse groupWorkQuery(GroupWorkQueryRequest groupWorkQueryRequest);
/**
* 订单主动退款调促销接口
* @param groupWorkRefundRequest
* @return
*/
@PostMapping("/groupWork/refund")
GroupWorkRefundResponse groupWorkRefund(GroupWorkRefundRequest groupWorkRefundRequest);
}
......@@ -195,10 +195,5 @@ public class OrderExtInfoDto {
private String svcCardCode;
/**
* 团号
*/
private String spellGroupCode;
}
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