Commit 293c0fd6 by 周晓航

临时新增发券补偿接口

parent 28327a74
......@@ -14,6 +14,7 @@ package cn.freemud.controller;
import cn.freemud.annotations.IsConvertEN;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.ErrorLog;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.order.InvoiceCreateResponseVo;
import cn.freemud.entities.dto.order.OrderInvoiceConfigVo;
......@@ -21,6 +22,10 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.entities.vo.order.*;
import cn.freemud.entities.vo.tempsendcoupon.CreateCouponReq;
import cn.freemud.entities.vo.tempsendcoupon.CreateCouponResp;
import cn.freemud.entities.vo.tempsendcoupon.SendCouponSourceOriginEnum;
import cn.freemud.entities.vo.tempsendcoupon.TempReSendCouponReq;
import cn.freemud.handler.CouponOrderAutoRefundHandler;
import cn.freemud.handler.OrderReportJobHandler;
import cn.freemud.service.EncircleOrderService;
......@@ -28,19 +33,36 @@ import cn.freemud.service.Orderservice;
import cn.freemud.service.PointsMallOrderService;
import cn.freemud.service.impl.MallOrderServiceImpl;
import cn.freemud.service.impl.OrderAdapterServiceImpl;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.xxljob.OrderCountJobHandler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.extinfo.OrderProductExtInfo;
import com.freemud.application.sdk.api.ordercenter.entities.extinfo.ProductBindingCouponType;
import com.freemud.application.sdk.api.ordercenter.request.OrderSettlementReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@RequestMapping("/order")
......@@ -65,6 +87,199 @@ public class OrderController {
@Autowired
private PointsMallOrderService pointsMallOrderService;
// =========================== 2022年7月27日12:14:11 临时代码 需要删除
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private CouponOnlineClient onlineCouponClient;
/**
* 临时补偿发券操作
* // 1查询订单
* // 2订单状态判断
* // 跳过第一张券 进行补偿
* // 3需要sql删除额外废弃数据
* // 4基础服务数据修复
* // 处理成功的记录返回响应 获取要删除的 settlement id集合
*/
@ApiAnnotation(logMessage = "/order/temp/reSendCoupon")
@PostMapping("/temp/reSendCoupon")
public BaseResponse reSendCoupon(@Validated @LogParams @RequestBody TempReSendCouponReq req) {
if (CollectionUtils.isEmpty(req.getOrderCodes())) {
return ResponseUtil.error("订单号为空");
}
Map<String, Object> resultMap = new LinkedHashMap<>();
String remark = "bugfix:遗漏补发";
List<Long> deleteSettlementIds = new ArrayList<>();
for (String orderCode : req.getOrderCodes()) {
Map<String, Object> msgMap = new HashMap<>();
QueryByCodeResponse orderInfoResp = orderSdkService.getOrderInfo(null, orderCode, null
, 0, LogThreadLocal.getTrackingNo());
OrderInfoReqs orderInfo = orderInfoResp.getResult();
msgMap.put("remark", "订单初始处理开始");
if (Objects.isNull(orderInfo)) {
msgMap.put("remark", "订单号不存在");
continue;
}
if (orderInfo.getOrderState().compareTo(6) != 0) {
msgMap.put("remark", "订单状态不为 6 已完成");
continue;
}
List<OrderItemResp> virtualProduct = orderInfo.getOrderItemList();
if (CollectionUtils.isNotEmpty(virtualProduct)) {
String trackingNo = LogThreadLocal.getTrackingNo();
String storeId = orderInfo.getStoreId();
List<OrderSettlementCreateReq> orderSettlementDetailList = new ArrayList<>();
int masterSeq = 1;
List<CreateCouponResp> msgList = new ArrayList<>();
for (OrderItemResp orderItemResp : virtualProduct) {
String extInfo = orderItemResp.getExtInfo();
if (StringUtils.isNotBlank(extInfo)) {
OrderProductExtInfo orderProductAddInfoDto = JSONObject.parseObject(extInfo, OrderProductExtInfo.class);
List<ProductBindingCouponType> productBindingCoupons = orderProductAddInfoDto.getProductBindingCoupons();
if (Objects.isNull(productBindingCoupons) || productBindingCoupons.isEmpty()) {
continue;
}
List<String> activityCodes = productBindingCoupons.stream().map(ProductBindingCouponType::getActivityCode).collect(Collectors.toList());
if (org.apache.commons.collections4.CollectionUtils.isEmpty(activityCodes)) {
continue;
}
//计算虚拟商品所有总价=单价*数量相累加
Integer totalPrice = productBindingCoupons.stream().filter(x -> !Objects.equals(x.getNum(), null) && !Objects.equals(x.getPrice(), null))
.mapToInt(x -> x.getNum() * x.getPrice()).sum();
// 1已经发券过了, 去重
int seq = 2;
// todo 从第二张开始发
for (int i = 1; i < productBindingCoupons.size(); i++) {
ProductBindingCouponType productCoupon = productBindingCoupons.get(i);
CreateCouponReq createCouponReq = new CreateCouponReq();
createCouponReq.setTemplateCode(productCoupon.getActivityCode()); //券模板编号
createCouponReq.setPartnerId(Integer.valueOf(orderInfo.getPartnerId())); //商户编号
createCouponReq.setMemberId(orderInfo.getUserId());//会员编号
// 发券订单号不能一致, 券码要求....
int length = orderCode.length();
String uuId = masterSeq + seq + orderCode.substring(length - 6, length - 5);
createCouponReq.setOrderId(orderCode.concat(uuId));
createCouponReq.setCouponName(productCoupon.getActivityName());
createCouponReq.setNum(productCoupon.getNum());//发码数量
//商城发券商品数量可买多件
if (orderItemResp.getProductQuantity() != null) {
createCouponReq.setNum(productCoupon.getNum() * orderItemResp.getProductQuantity());
}
createCouponReq.setShowEncode(true);
createCouponReq.setTemplateCode(productCoupon.getActivityCode());//券模板编号
createCouponReq.setSendReason(remark + "," + orderInfo.getStoreName() + "," + storeId);//发码原因
createCouponReq.setStoreId(orderInfo.getStoreId()); //限制门店id
if (orderInfo.getBizType() == 4) {
createCouponReq.setSourceOrigin(SendCouponSourceOriginEnum.SCORE_EXCHANGE.getType());//发码来源类型,如果提供的类型不满足请和会员卡券组联系添加
}
if (orderInfo.getBizType() == 6 || orderInfo.getBizType() == 1) {
createCouponReq.setSourceOrigin(SendCouponSourceOriginEnum.PURCHASE.getType());//发码来源类型,如果提供的类型不满足请和会员卡券组联系添加
}
if (orderInfo.getBizType() == 6 && orderInfo.getMarketingType().compareTo(9) == 0) {
createCouponReq.setSourceOrigin(SendCouponSourceOriginEnum.WEXIN_SHIPINHAO.getType());//发码来源类型,如果提供的类型不满足请和会员卡券组联系添加
}
//只有卖券订单才能分账,目前卖券订单都是虚拟商品,虚拟商品都是券包
if (orderInfo.getBizType() == 6 && productCoupon.getIsSplitAccount() != null && productCoupon.getIsSplitAccount() == 1) {
Integer sale = orderItemResp.getSettlementPrice().intValue();//售价
CreateCouponReq.CouponPackageInfo couponPackageInfo = new CreateCouponReq.CouponPackageInfo();
couponPackageInfo.setIsCouponPackage(true);
CreateCouponReq.Settings settings = new CreateCouponReq.Settings();
//isSplitAccount 0-不分账,1-分账
settings.setAccountDivide(true);
//折扣 = 售价/总价
double discount = (double) sale / totalPrice;
//分账金额等于券单价 * 折扣
settings.setUnitPrice((int) (productCoupon.getPrice() * discount));
couponPackageInfo.setSettings(settings);
createCouponReq.setCouponPackageInfo(couponPackageInfo);
}
if (orderInfo.getBizType() == 6 && orderInfo.getMarketingType().compareTo(9) == 0) {//marketingType = 9 微信视频号卖券
createCouponReq.setSourceOrigin(SendCouponSourceOriginEnum.WEXIN_SHIPINHAO.getType());//发码来源类型,如果提供的类型不满足请和会员卡券组联系添加
}
createCouponReq.setSourceOriginId(orderCode);//发码来源类型id,指定了发码来源类型时该字段必填,最大64字符
createCouponReq.setVer(2);//sendMemberCoupon 这个接口,ver字段传1的或者没传的,现在都传 2,不然不幂等
CreateCouponResp resp = null;
try {
resp = onlineCouponClient.createCoupon(createCouponReq);
msgList.add(resp);
} catch (Exception e) {
ErrorLog.errorConvertJson(this.getClass(), "onlineCouponClient.sendMemberCoupon Exception,request:"
+ JSON.toJSONString(createCouponReq), e);
CreateCouponResp errorResp = new CreateCouponResp();
errorResp.setMsg(e.getMessage());
msgList.add(errorResp);
continue;
}
if (null == resp || CollectionUtils.isEmpty(resp.getCodes())) {
//tapd 【线上bug】卖券,连续发多张券时,不要中途return掉
continue;
}
for (CreateCouponResp.Coupon coupon : resp.getCodes()) {
OrderSettlementCreateReq settlementCreateReq = new OrderSettlementCreateReq();
settlementCreateReq.setExternalObjectId(coupon.getCode());
settlementCreateReq.setIgnoreInDiscountAmount(false);
settlementCreateReq.setSettlementType(216);
// fisherman 发券关联对应商品信息
settlementCreateReq.setProductId(orderItemResp.getProductId());
settlementCreateReq.setProductSeq(orderItemResp.getProductSeq());
orderSettlementDetailList.add(settlementCreateReq);
}
seq++;
}
masterSeq++;
}
}
msgMap.put("msg", msgList);
if (orderSettlementDetailList.isEmpty()) {
msgMap.put("remark", "发券失败");
continue;
}
//保存券号到订单优惠表
OrderSettlementReq request = new OrderSettlementReq();
request.setOrderClient(orderInfo.getOrderClient());
request.setOrderCode(orderInfo.getOrderCode());
request.setPartnerId(orderInfo.getPartnerId());
request.setOrderSettlementDetailList(orderSettlementDetailList);
OrderBaseResp baseResponse = orderSdkService.createSettlement(request, trackingNo);
if (!baseResponse.getCode().equals("100")) {
msgMap.put("remark", "存基础settlement失败");
continue;
}
msgMap.put("remark", "===补发成功===");
// todo 获取要删除的 settlemnt 集合
List<OrderSettlementResp> deleteSettlementList = orderInfo.getOrderSettlementDetailList();
if (CollectionUtils.isNotEmpty(deleteSettlementList) && deleteSettlementList.size() > 1) {
Map<String, List<OrderSettlementResp>> stringListMap = deleteSettlementList.stream().collect(Collectors.groupingBy(OrderSettlementResp::getExternalObjectId));
stringListMap.forEach((key, val) -> {
// 从 第二个开始 需要删除
for (int i = 1; i < val.size(); i++) {
deleteSettlementIds.add(val.get(i).getId());
}
});
}
} else {
msgMap.put("remark", "购买商品数据不存在");
}
// final msg
resultMap.put(orderCode, msgMap);
resultMap.put("deleteIds", deleteSettlementIds);
}
return ResponseUtil.success(resultMap);
}
// =========================== 2022年7月27日12:14:11 临时代码 需要删除
/**
* 废弃,不在使用
* 创建订单之前校验前面排队的订单数
......@@ -138,7 +353,7 @@ public class OrderController {
* 订单支付成功后通知
*/
@ApiAnnotation(logMessage = "newPaySuccessCallback")
@PostMapping({"/newPaySuccessCallback","/openStoreQueryPaymentCallback"})
@PostMapping({"/newPaySuccessCallback", "/openStoreQueryPaymentCallback"})
public String newPaySuccessCallback(@LogParams @RequestBody NewPaysuccessNoticeMessage message) {
return orderservice.newPaySuccessCallback(message);
}
......@@ -172,14 +387,15 @@ public class OrderController {
/**
* 围餐-预览订单
*
* @param queryOrderVo
* @return
*/
@IsConvertEN
@ApiAnnotation(logMessage = "previewOrderInfo")
@PostMapping("/previewOrderInfo")
public BaseResponse previewOrderInfo(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo){
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
public BaseResponse previewOrderInfo(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setSessionId(queryOrderVo.getSessionId());
createReserveOrderVo.setActivityCode(queryOrderVo.getActivityCode());
createReserveOrderVo.setCouponCode(queryOrderVo.getCouponCode());
......@@ -189,14 +405,15 @@ public class OrderController {
/**
* 围餐-svc卡支付调用接口-预览订单
*
* @param queryOrderVo
* @return
*/
@IsConvertEN
@ApiAnnotation(logMessage = "previewOrderInfoSvcCheck")
@PostMapping("/previewOrderInfoSvcCheck")
public BaseResponse previewOrderInfoSvcCheck(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo){
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
public BaseResponse previewOrderInfoSvcCheck(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
CreateReserveOrderVo createReserveOrderVo = new CreateReserveOrderVo();
createReserveOrderVo.setSessionId(queryOrderVo.getSessionId());
createReserveOrderVo.setActivityCode(queryOrderVo.getActivityCode());
createReserveOrderVo.setCouponCode(queryOrderVo.getCouponCode());
......@@ -212,8 +429,8 @@ public class OrderController {
@ApiAnnotation(logMessage = "queryOrderById")
@PostMapping("/queryOrderById")
public BaseResponse queryOrderById(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.queryOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType()
,queryOrderVo.getIsQueryAfterPay(),queryOrderVo.getPayGiftVer());
return orderservice.queryOrderById(queryOrderVo.getOperation(), queryOrderVo.getSessionId(), queryOrderVo.getOid(), queryOrderVo.getPartnerId(), queryOrderVo.getChannelType()
, queryOrderVo.getIsQueryAfterPay(), queryOrderVo.getPayGiftVer());
}
......@@ -221,7 +438,7 @@ public class OrderController {
* 蜜雪APP 取消支付订单
*/
@ApiAnnotation(logMessage = "cancelPayOrder")
@PostMapping({"/cancelPayOrder","/deleteOrderById"})
@PostMapping({"/cancelPayOrder", "/deleteOrderById"})
public BaseResponse cancelPayOrder(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
return orderservice.cancelPayOrder(deleteOrderVo);
}
......@@ -332,22 +549,25 @@ public class OrderController {
/**
* timeOutRefund
*
* @param timeOutOrderVo
* @return
*/
@ApiAnnotation(logMessage = "timeOutOrderRefund")
@PostMapping("/timeOutOrderRefund")
public BaseResponse timeOutOrderRefund(@Validated @LogParams @RequestBody TimeOutOrderVo timeOutOrderVo){
public BaseResponse timeOutOrderRefund(@Validated @LogParams @RequestBody TimeOutOrderVo timeOutOrderVo) {
return orderservice.timeOutOrderRefund(timeOutOrderVo);
}
/**
* 根据订单号查询配送操作日志及骑手位置
*
* @param requestVo
* @return
*/
@ApiAnnotation(logMessage = "queryOrderRider")
@PostMapping("/queryOrderRider")
public BaseResponse queryOrderRider(@Validated @LogParams @RequestBody OrderRiderRequestVo requestVo){
public BaseResponse queryOrderRider(@Validated @LogParams @RequestBody OrderRiderRequestVo requestVo) {
return orderservice.queryOrderRider(requestVo);
}
......@@ -435,14 +655,15 @@ public class OrderController {
/**
* 订单统计 上报数据
* 订单统计 上报数据
*
* @param
* @return
*/
@ApiAnnotation(logMessage = "reportSendOrderCount")
@GetMapping("/reportSendOrderCount")
public BaseResponse reportSendOrderCount() throws Exception {
AppLogUtil.infoLog("触发订单上报",null,null);
AppLogUtil.infoLog("触发订单上报", null, null);
orderCountJobHandler.execute(null);
return ResponseUtil.success();
}
......@@ -469,7 +690,8 @@ public class OrderController {
}
/**
* 开订单发票,对接百望
* 开订单发票,对接百望
*
* @param
* @return
*/
......@@ -480,7 +702,8 @@ public class OrderController {
}
/**
* 查询发票配置
* 查询发票配置
*
* @param
* @return
*/
......@@ -491,9 +714,9 @@ public class OrderController {
}
/**
* 一元捐插件获取支付配置
*
* @param createOrderVo
* @return
*/
......@@ -510,7 +733,7 @@ public class OrderController {
@ApiAnnotation(logMessage = "couponOrderRefund")
@PostMapping("/couponOrderRefund")
public BaseResponse couponOrderRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return orderservice.couponOrderRefund(orderRefundVo,0);
return orderservice.couponOrderRefund(orderRefundVo, 0);
}
......@@ -524,14 +747,15 @@ public class OrderController {
}
/**
* 卖券订单券过期自动退款
* 卖券订单券过期自动退款
*
* @param
* @return
*/
@ApiAnnotation(logMessage = "couponOrderAutoRefund")
@GetMapping("/couponOrderAutoRefund")
public BaseResponse couponOrderAutoRefund() throws Exception {
AppLogUtil.infoLog("卖券订单券过期自动退款 ",null,null);
AppLogUtil.infoLog("卖券订单券过期自动退款 ", null, null);
couponOrderAutoRefundHandler.execute(null);
return ResponseUtil.success();
}
......@@ -552,15 +776,16 @@ public class OrderController {
*/
@PostMapping("/orderConfig/get")
@ApiAnnotation(logMessage = "/orderConfig/get")
public BaseResponse<String> getOrderConfig(@Validated @LogParams @RequestBody GetOrderConfigRequestVo request){
public BaseResponse<String> getOrderConfig(@Validated @LogParams @RequestBody GetOrderConfigRequestVo request) {
return ResponseUtil.success(orderAdapterService.getOrderConfig(request));
}
/**
* 华莱士临时对接百事抽奖活动
* 华莱士临时对接百事抽奖活动
*
* @param request
* @return 是否需要弹框,跳转百事
* @return 是否需要弹框, 跳转百事
*/
@ApiAnnotation(logMessage = "/order/temp/activity")
@PostMapping("/temp/activity/query")
......
package cn.freemud.entities.vo.tempsendcoupon;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author Clover.z
* @Date 2021/9/24
* @Desc
*/
@Data
public class CreateCouponReq {
/**
* 活动编号
*/
@NotBlank(message = "券模板编号不能为空")
private String templateCode;
/**
* 商户号
*/
@NotBlank(message = "商户编号不能为空")
private Integer partnerId;
/**
* 渠道号(可以不传,不传就默认是开个店发码,核销后会回调会员移除卡包。如果不是开个店就要传)
*/
private Integer providerId;
/**
* 会员Id
*/
private String memberId;
/**
* 发券订单号
*/
@NotBlank(message = "请求流水号不能为空")
@Length(max = 30, message = "流水号长度最大不能超过30个字符")
private String orderId;
/**
* 券名称
*/
private String couponName;
/**
* 券开始时间
*/
private String validStart;
/**
* 券结束时间
*/
private String validEnd;
/**
* 发券数量
*/
@NotNull(message = "发码数量必须大于0且不大于100")
@Min(value = 1)
@Max(value = 100)
private Integer num;
/**
* 门店id
* 发券指定门店场景下使用
*/
@Length(max = 50)
private String storeId;
/**
* 发券原因
*/
@Length(max = 2000)
private String sendReason;
/**
* {@link com.freemud.task.order.consumer.enums.SendCouponSourceOriginEnum 发码来源类型}
*/
private Integer sourceOrigin;
/**
* 发码来源类型id
*/
@Length(max = 64)
private String sourceOriginId;
/**
* 促销活动编号
*/
@Length(max = 32)
private String promotionActivityCode;
/**
* 三方交易流水号
*/
@Length(max = 32)
private String thirdTrackId;
/**
* 是否需要显示密文code
* <p>
* 默认不显示
*/
private Boolean showEncode = false;
/**
* 签名
* 签名sign传 "adapterV4Skip" + 渠道号providerId
* 现券码已支持不传了
*/
private String sign;
/**
* 接口版本号
*/
private Integer ver;
/*****************券包分账新增入参***********************/
//券包信息,不传默认不是券包
private CouponPackageInfo couponPackageInfo;
@Data
public static class CouponPackageInfo{
//是否券包
private Boolean isCouponPackage = false;
//券包配置,isCouponPackage为true时必填
private Settings settings;
}
@Data
public static class Settings{
//是否分账
private Boolean accountDivide;
//单价,单位:分
private Integer unitPrice;
}
/*****************券包分账新增入参***********************/
}
package cn.freemud.entities.vo.tempsendcoupon;
import lombok.Data;
import java.util.List;
/**
* @author Clover.z
* @Date 2021/9/24
* @Desc
*/
@Data
public class CreateCouponResp {
/**
* 100-成功
*/
private Integer statusCode;
private String msg;
private String ver;
/**
* true是正常发的码,false是幂等返回的之前发的码,根据入参的orderId,相同的orderId 24小时内重复调用会返回相同的结果
*/
private Boolean fresh;
/**
* 码的有效期-开始
*/
private String effectStart;
/**
* 码的有效期-结束
*/
private String effectEnd;
/**
* 发码返回的券信息
*/
private List<Coupon> codes;
@Data
public static class Coupon {
/**
* 券号
*/
private String code;
/**
* 优惠券号密文
*/
private String encode;
}
}
package cn.freemud.entities.vo.tempsendcoupon;
/**
* 具体枚举值 找 张文凯确认 券码基础服务
*/
public enum SendCouponSourceOriginEnum {
UNKNOWN(0, "未知"),
PROMOTION(1, "促销活动发券"),
MANUAL(2, "手动送券"),
EXPORT(3, "批量导码"),
PURCHASE(4, "买券"),
SCORE_EXCHANGE(5, "积分兑换券"),
MEMBER_BIRTHDAY_GIFT(6, "会员生日礼送券"),
RECHARGE_VIP(7, "开通/续费 付费会员送券"),
RECHARGE_STORED_VALUE_CARD(8, "储值卡充值送券"),
MEMBER_LEVEL_UPGRADE(9, "会员等级升级"),
MEMBER_POINT(1, "集点兑换券"),
IMPORT_SCORE_EXPERIENC_CASE_UPGRADE(9, "积分经验值导入触发等级升级送券"),
CREATE_ORDER_SEND_EXPERIENC_CASE_UPGRADE(9, "积分经验值导入触发等级升级送券"),
SIGN_IN(10, "签到送券"),
WEXIN_SHIPINHAO(11, "微信视频号卖券")
;
private Integer type;
private String name;
/**
* @param type 类型
* @param name 类型名称
*/
SendCouponSourceOriginEnum(Integer type, String name) {
this.type = type;
this.name = name;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
\ No newline at end of file
package cn.freemud.entities.vo.tempsendcoupon;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/7/27 11:20
* @description :
*/
@Data
public class TempReSendCouponReq {
List<String> orderCodes;
}
......@@ -3,12 +3,14 @@ package cn.freemud.service.thirdparty;
//import cn.freemud.constant.IgnoreFeignLogAnnotation;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.BatchQueryActivityInfoRequestDto;
import cn.freemud.entities.dto.GetCouponDetailResponseDto;
import cn.freemud.entities.dto.coupon.*;
import cn.freemud.entities.vo.tempsendcoupon.CreateCouponReq;
import cn.freemud.entities.vo.tempsendcoupon.CreateCouponResp;
import cn.freemud.interceptor.FormSupportConfig;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -77,4 +79,11 @@ public interface CouponOnlineClient {
@PostMapping(value = "/coupon/standard/checkandcancel" , produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
CouponResponseDTO<CheckAndCancelResponseDTO> checkandcancel(@RequestBody CheckAndCancelRequest request);
/**
* 根据券档案发码 返回券号
* @param request
* @return
*/
@PostMapping("/coupon/standard/create")
CreateCouponResp createCoupon(CreateCouponReq request);
}
......@@ -19,6 +19,8 @@ import java.math.BigDecimal;
@Data
public class OrderSettlementResp {
private Long id;
/**
* 订单商品ID
*/
......
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