Commit 01eea845 by 王世昌

订单同意退款(已经退货完成)时,通知促销

parent 292f4f6b
package cn.freemud.management.entities.dto.request.activity;
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 partnerCode;
/**
* 团号
*/
private String groupId;
/**
* 订单
*/
private String orderId;
/**
* 用户id
*/
private String userId;
}
package cn.freemud.management.entities.dto.response.activity;
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;
}
package cn.freemud.management.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 订单特殊类型
* @Auther: yong.huang
* @Date: 2018/12/29 15:58
* @Description:
*/
@Getter
@AllArgsConstructor
public enum OrderMarketType {
ORDER((byte)1, "普通订单"),
GROUPB((byte)2, "拼团订单"),
SEC_KILL((byte)3, "秒杀订单"),
COLLAGE((byte)4, "拼单订单")
;
private byte index;
private String name;
public static final String API_DESC = "销售类型或营销活动类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单";
public static OrderMarketType getByIndex(byte index) {
return Arrays.stream(OrderMarketType.values())
.filter(e -> e.getIndex() == index)
.findFirst()
.orElseGet(() -> ORDER);
}
}
......@@ -221,6 +221,10 @@ public enum ResponseResult {
DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"),
DELIVERY_INFO_ERROR("60002","配送地址不正确"),
DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"),
SPELL_GROUP_REFUND_ERROR("80015", "取消拼团失败")
;
......
package cn.freemud.management.service.handle;
import cn.freemud.management.entities.dto.request.activity.GroupWorkRefundRequest;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
import cn.freemud.management.thirdparty.OMSActivityClient;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ActivityHandle {
private final OMSActivityClient omsActivityClient;
public ActivityHandle(OMSActivityClient omsActivityClient) {
this.omsActivityClient = omsActivityClient;
}
public GroupWorkRefundResponse groupWorkRefund(QueryOrdersResponse.DataBean.OrderBean orderBean){
GroupWorkRefundRequest groupWorkRefundRequest = new GroupWorkRefundRequest(orderBean.getSpellGroupActivityCode(),orderBean.getCompanyId(),orderBean.getSpellGroupCode(),orderBean.getOid(),orderBean.getUserId());
GroupWorkRefundResponse groupWorkRefundResponse = omsActivityClient.groupWorkRefund(groupWorkRefundRequest);
if (!ResponseCodeConstant.RESPONSE_SUCCESS.equals(groupWorkRefundResponse.getStatusCode())) {
return null;
}
return groupWorkRefundResponse;
}
}
......@@ -2,16 +2,22 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.SaasMallOrderAdapter;
import cn.freemud.management.entities.dto.request.activity.GroupWorkRefundRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
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.OrderMarketType;
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.constant.ResponseConstant;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesStatus;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.netflix.discovery.converters.Auto;
......@@ -44,6 +50,8 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
private DeliveryHandle deliveryHandle;
@Autowired
private StockHandle stockHandle;
@Autowired
private ActivityHandle activityHandle;
/**
* 同意退款
......@@ -60,6 +68,15 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
// 修改售后单状态为退货中
mallOrderHandle.mallOrderAgreeApply(request, orderBean);
}else {
// 拼团订单主动退款触发通知促销
if (Objects.equals(com.freemud.sdk.api.assortment.order.enums.OrderSourceType.SAASMALL.getCode(), orderBean.getSource())
&& Objects.equals(OrderMarketType.GROUPB.getIndex(), orderBean.getMarketingType())) {
GroupWorkRefundResponse refundResponse = activityHandle.groupWorkRefund(orderBean);
if (Objects.isNull(refundResponse) || !Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, refundResponse.getStatusCode())) {
return ResponseUtil.error(ResponseResult.SPELL_GROUP_REFUND_ERROR);
}
}
//支付退款
PayRefundResponse refundResponse = new PayRefundResponse();
try {
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PromotionActivityClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: liming.guo
* @date: 2018/8/6 11:14
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.activity.GroupWorkRefundRequest;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "promotion-service", url = "${saas.activityclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface OMSActivityClient {
/**
* 订单主动退款调促销接口
* @param groupWorkRefundRequest
* @return
*/
@PostMapping("/activity/groupWork/refund")
GroupWorkRefundResponse groupWorkRefund(GroupWorkRefundRequest groupWorkRefundRequest);
}
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