Commit 9cdaf842 by ping.wu

Merge branches 'feature/20220524_新商城_wuping' and 'qa' of…

Merge branches 'feature/20220524_新商城_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa
parents 826e4463 d13570ad
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
*/ */
package com.freemud.sdk.api.assortment.order.enums; package com.freemud.sdk.api.assortment.order.enums;
import java.util.Arrays;
import java.util.List;
/** /**
* 请勿使用已过期请用OldOrderAccountType 龚爱奇2019-05-19 * 请勿使用已过期请用OldOrderAccountType 龚爱奇2019-05-19
*/ */
...@@ -44,19 +48,20 @@ public enum QueryOrderAccountType { ...@@ -44,19 +48,20 @@ public enum QueryOrderAccountType {
FULL_DISTRIBUTION_FEE("FULL_DISTRIBUTION_FEE", "满减配送费"), FULL_DISTRIBUTION_FEE("FULL_DISTRIBUTION_FEE", "满减配送费"),
OFFLINE_PAY("OFFLINE_PAY", "线下支付"), OFFLINE_PAY("OFFLINE_PAY", "线下支付"),
GATHER_SPOT("GATHER_SPOT", "集点活动"), GATHER_SPOT("GATHER_SPOT", "集点活动"),
MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT","会员价优惠"), MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT", "会员价优惠"),
MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD","麦咖啡月卡"), MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD", "麦咖啡月卡"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单买月卡"), WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单买月卡"),
COCO_PRODUCT_CASH_COUPON("COCO_PRODUCT_CASH_COUPON", "coco商品代金券"), COCO_PRODUCT_CASH_COUPON("COCO_PRODUCT_CASH_COUPON", "coco商品代金券"),
FULL_BUYM_SENDN("FULL_BUYM_SENDN", "满赠"), FULL_BUYM_SENDN("FULL_BUYM_SENDN", "满赠"),
FULL_M_COUNT_N_FOLD("FULL_M_COUNT_N_FOLD", "满M件N折"), FULL_M_COUNT_N_FOLD("FULL_M_COUNT_N_FOLD", "满M件N折"),
SCORE_PRODUCT_ACTIVITY("SCORE_PRODUCT_ACTIVITY", "积分商品活动"), SCORE_PRODUCT_ACTIVITY("SCORE_PRODUCT_ACTIVITY", "积分商品活动"),
SINGLE_PRODUCT_REDUCTION("SINGLE_PRODUCT_REDUCTION", "单品立减") SINGLE_PRODUCT_REDUCTION("SINGLE_PRODUCT_REDUCTION", "单品立减");
;
private String code; private String code;
private String desc; private String desc;
public static List<QueryOrderAccountType> useCouponList = Arrays.asList(COUPON, B3S1_COUPON, FREIGHT_COUPON, PRODUCT_COUPON, DISCOUNT_COUPON);
QueryOrderAccountType(String code, String desc) { QueryOrderAccountType(String code, String desc) {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
......
...@@ -145,8 +145,8 @@ public class OrderCallBackMQService { ...@@ -145,8 +145,8 @@ public class OrderCallBackMQService {
OrderCallBackConfig.QUEUE_ROUTING_KEY, OrderCallBackConfig.QUEUE_NAME); OrderCallBackConfig.QUEUE_ROUTING_KEY, OrderCallBackConfig.QUEUE_NAME);
MQMessage<WechatReportOrderDto> message = new MQMessage<>(header, wechatReportOrderDto); MQMessage<WechatReportOrderDto> message = new MQMessage<>(header, wechatReportOrderDto);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY, message); mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY, message);
ApiLog.infoMessage("sendWechatReportMQ end orderCode:{}", JSONObject.toJSONString(wechatReportOrderDto));
} }
ApiLog.infoMessage("sendWechatReportMQ end orderCode:{}", body.getOrderCode());
} catch (Exception e) { } catch (Exception e) {
ApiLog.infoMessage("sendWechatReportMQ Error orderCode:{} e:{}", body.getOrderCode(), ExceptionUtils.getFullStackTrace(e)); ApiLog.infoMessage("sendWechatReportMQ Error orderCode:{} e:{}", body.getOrderCode(), ExceptionUtils.getFullStackTrace(e));
} }
......
...@@ -666,7 +666,7 @@ public class OrderAdapter { ...@@ -666,7 +666,7 @@ public class OrderAdapter {
orderClients = Arrays.asList(OrderClientType.TIKTOKPAY.getIndex()); orderClients = Arrays.asList(OrderClientType.TIKTOKPAY.getIndex());
bizTypes.add(BizTypeEnum.SALE_COUPON.getBizType()); bizTypes.add(BizTypeEnum.SALE_COUPON.getBizType());
} else { } else {
orderClients = Arrays.asList(OrderClientType.SAAS.getIndex(), OrderClientType.ALIPAY.getIndex(), OrderClientType.APP.getIndex()); orderClients = Arrays.asList(OrderClientType.SAAS.getIndex(), OrderClientType.ALIPAY.getIndex(), OrderClientType.APP.getIndex(), OrderClientType.ASSISTANT.getIndex());
bizTypes = Arrays.asList(BizTypeEnum.ORDINARY.getBizType(), BizTypeEnum.SALE_COUPON.getBizType(), BizTypeEnum.ADVANCE_ORDER.getBizType()); bizTypes = Arrays.asList(BizTypeEnum.ORDINARY.getBizType(), BizTypeEnum.SALE_COUPON.getBizType(), BizTypeEnum.ADVANCE_ORDER.getBizType());
queryOrdersDto.setMarketingTypes(Arrays.asList(MarketTypeEnum.ORDER.getIndex(), MarketTypeEnum.COLLAGE.getIndex(), queryOrdersDto.setMarketingTypes(Arrays.asList(MarketTypeEnum.ORDER.getIndex(), MarketTypeEnum.COLLAGE.getIndex(),
MarketTypeEnum.WE_CHAT_LIVE_SELL.getIndex(),MarketTypeEnum.CASHIER.getIndex(),MarketTypeEnum.TIKTOK_MARKET_ORDER.getIndex())); MarketTypeEnum.WE_CHAT_LIVE_SELL.getIndex(),MarketTypeEnum.CASHIER.getIndex(),MarketTypeEnum.TIKTOK_MARKET_ORDER.getIndex()));
...@@ -2036,7 +2036,7 @@ public class OrderAdapter { ...@@ -2036,7 +2036,7 @@ public class OrderAdapter {
String attr = ""; String attr = "";
String attrEng = ""; String attrEng = "";
for (OrderSpecialExtraAttrRequest special : extInfo.getSpecialAttrs()) { for (OrderSpecialExtraAttrRequest special : extInfo.getSpecialAttrs()) {
if (special.getAttributeName().indexOf("冰") >= 0) { if (Objects.nonNull(special.getAttributeName()) && special.getAttributeName().indexOf("冰") >= 0) {
attr = special.getAttributeName(); attr = special.getAttributeName();
attrEng = special.getAttributeForeignName(); attrEng = special.getAttributeForeignName();
break; break;
......
package cn.freemud.entities.dto.blacklist;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 13:40
* @description :
*/
@Data
public class BlacklistDto {
/**
* 商户号
*/
private String partnerId;
/**
* 用户id
*/
private String memberId;
/**
* 是否使用用户积分
* 1=不显示积分
* 2=显示积分但不扣减
* 3=显示积分且扣减
* 消费黑名单用户 不管是否满足 都不能使用积分消费
*/
private Integer useCustomerScore;
/**
* 当前这一笔订单需要消费的金额
*/
private Long amount;
private boolean useCoupon = false;
}
package cn.freemud.entities.dto.blacklist;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 15:06
* @description : 返回前端提示数据
*/
@Data
public class OrderBlacklistResp {
@ApiModelProperty(value = "客服电话")
private String moblie;
@ApiModelProperty(value = "金额限制(单位:分)")
private Long surplusAmount;
}
package cn.freemud.entities.dto.blacklist;
import lombok.Data;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:49
* @description :
*/
@Data
public class Result<T> {
private boolean status = false;
private String message;
private T result;
private String statusCode;
public boolean isOk() {
return Objects.equals(statusCode, "200");
}
}
package cn.freemud.entities.dto.blacklist.req;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:34
* @description :
*/
@Data
public class BlackListQueryByClient {
/**
* 0储值卡黑名单
*/
public static final int RECORD_TYPE_SVC = 0;
/**
* 1消费黑名单
*/
public static final int RECORD_TYPE_CUSTOMER = 1;
@ApiModelProperty(value = "商户id")
@NotBlank(message = "商户id不能为空")
private String partnerId;
@ApiModelProperty("会员id")
private String memberId;
@ApiModelProperty("添加的黑名单类型 0储值卡黑名单 1消费黑名单")
@Range(min = 0, max = 1, message = "添加的黑名单类型 0储值卡黑名单 1消费黑名单")
private Integer recordType;
}
package cn.freemud.entities.dto.blacklist.resp;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:35
* @description :
*/
@Data
public class MemberBlacklistVO {
/**
* 是否存在黑名单中
*/
private boolean exist;
// ---------> 消费黑名单才有下面的配置
@ApiModelProperty(value = "客服电话")
private String moblie;
@ApiModelProperty(value = "金额限制(单位:分)")
private Long limitAmount;
@ApiModelProperty(value = "已经消费的累积金额(单位:分)")
private Long shoppingTotalAmount;
}
...@@ -5,7 +5,7 @@ import lombok.Data; ...@@ -5,7 +5,7 @@ import lombok.Data;
@Data @Data
public class CloseUnifiedOrderResult { public class CloseUnifiedOrderResult {
private Integer resultCode; private String resultCode;
private String resultMsg; private String resultMsg;
} }
package cn.freemud.entities.dto.pay; //package cn.freemud.entities.dto.pay;
//
public class PaymentCloseUnifiedOrderResponse { //public class PaymentCloseUnifiedOrderResponse {
//
private Integer code; // private Integer code;
private String message; // private String message;
private CloseUnifiedOrderResult data; // private CloseUnifiedOrderResult data;
//
} //}
package cn.freemud.entities.dto.pay.svc;
import lombok.Data;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/10 17:52
* @description :
*/
@Data
public class BatchSvcInfoRequest {
/**
* 卡档案id
*/
private Integer applyId;
/**
* 商户编号
*/
private String partnerId;
/**
* 接口版本
*/
private String ver;
/**
* 门店id(需要校验的门店)
*/
private String storeId;
/**
* 需要校验的组织渠道Id集合
*/
private List<String> orgIds;
}
package cn.freemud.entities.dto.pay.svc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/10 18:00
* @description :
*/
@Data
public class CardApplyRes {
@ApiModelProperty("卡档案Id")
private Integer id;
@ApiModelProperty(value = "卡档案名")
private String name;
@ApiModelProperty(value = "卡面信息,卡面配图链接")
private String mark;
@ApiModelProperty(value = "规则说明")
private String ruleRemark;
@ApiModelProperty(value = "卡档案编号")
private String thirdNo;
@ApiModelProperty(value = "创建人")
private String createUser;
@ApiModelProperty(value = "最后操作人")
private String updateUser;
@ApiModelProperty(value = "创建时间str")
private String createDate;
@ApiModelProperty(value = "最后更新时间Str")
private String updateDate;
@ApiModelProperty(value = "在售状态,默认上线,1上架,0下架")
private Integer onShelf;
@ApiModelProperty(value = "启充状态,默认启用,1-启用,0-停用")
private Integer enableRecharge;
@ApiModelProperty(value = "推荐状态, 默认未设置,1-推荐,0-未设置")
private Integer enablePromote;
// /**
// * 门店列表
// */
// @ApiModelProperty("门店列表")
// private List<CardApplyStoreVo> stores;
//
// /**
// * 渠道分组列表
// */
// @ApiModelProperty("渠道分组列表")
// private List<CardApplyOrgVo> orgs;
//
// /**
// * 渠道分组列表
// */
// @ApiModelProperty("推荐地区列表")
// private List<CardApplyRegionRecommendVo> regions;
@ApiModelProperty(value = "适用门店:1-部分门店 2-渠道分组 3-全部门店")
private Byte whiteChoiceMode;
@ApiModelProperty(value = "不适用门店:1-部分门店 2-渠道分组 3-无")
private Byte blackChoiceMode;
@ApiModelProperty(value = "推荐模式:1-全部 2-部分渠道")
private Byte recommendMode;
@ApiModelProperty(value = "不推荐模式:1-全部 2-部分渠道")
private Byte notRecommendMode;
@ApiModelProperty(value = "适用范围,全门店通用或仅限上海地区门店使用等")
private String applyScope;
@ApiModelProperty(value = "0:线上卡档案, 1:线下卡档案")
private Integer cardApplyType;
@ApiModelProperty(value = "储值卡活动标签图片地址")
private String promotionLabelImg;
@ApiModelProperty(value = "储值卡活动标签宣传语")
private String promotionLabelDesc;
/**
*/
@ApiModelProperty("是否开启线下充值(设为仅线下充值后,用户只能到门店充值,在小程序无法充值) 1-是 0-否,默认为0")
private Byte enableOfflineRecharge;
@ApiModelProperty("有效期")
private Integer effectDuration;
/**
* 复用card表中的cardType字段
*/
@ApiModelProperty("卡类型:0礼品卡,3储值卡")
private Integer applyType;
@ApiModelProperty("有效期类型 0|永久有效 1|固定时长 2|固定日期")
private Integer effectType;
@ApiModelProperty("固定时长有效期时间单位 6|年 5|月 4|日 3|时 2|分 1|秒")
private Integer timeUnit;
@ApiModelProperty(value = "同步到哪个三方:1:银商,null默认不同步")
private Integer syncThirdParty;
@ApiModelProperty("渠道和门店黑白名单校验,true通过,false未通过")
private Boolean whiteBlackVerify;
@ApiModelProperty(value = "是否设置获取成长值 1-是 0-否")
private Integer enableGrowth;
@ApiModelProperty(value = "是否设置获取积分配置 1-是 0-否")
private Integer enableScore;
@ApiModelProperty(value = "卡档案子类型 1:普通, 2:抖音")
private Integer cardApplySubType;
@ApiModelProperty(value = "是否开启转赠 1-开启 0-关闭")
private Integer enableTransfer;
@ApiModelProperty(value = "单人当天冲值次数限制")
private Integer dayChargeTimes;
@ApiModelProperty(value = "单人最大冲值次数限制")
private Integer maxChargeTimes;
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing;
}
...@@ -325,4 +325,7 @@ public class CreateOrderVo { ...@@ -325,4 +325,7 @@ public class CreateOrderVo {
*/ */
private String contactsName; private String contactsName;
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
} }
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -26,6 +27,10 @@ import java.util.List; ...@@ -26,6 +27,10 @@ import java.util.List;
@Data @Data
@Builder @Builder
public class ShoppingCartInfoRequestVo { public class ShoppingCartInfoRequestVo {
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
/** /**
* 链路号 * 链路号
*/ */
......
package cn.freemud.entities.vo.order; package cn.freemud.entities.vo.order;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.Valid; import javax.validation.Valid;
...@@ -13,6 +14,10 @@ public class CreateOrderPremiumExchangeActivityVo { ...@@ -13,6 +14,10 @@ public class CreateOrderPremiumExchangeActivityVo {
private String activityCode; private String activityCode;
@NotNull(message = "activityName 不能为空") @NotNull(message = "activityName 不能为空")
private String activityName; private String activityName;
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
/** /**
* 加价购sku商品信息 * 加价购sku商品信息
*/ */
......
...@@ -195,6 +195,7 @@ public enum ResponseResult { ...@@ -195,6 +195,7 @@ public enum ResponseResult {
ORDER_BIZ_TYPE_ERROR("45086", "订单业务类型异常",""), ORDER_BIZ_TYPE_ERROR("45086", "订单业务类型异常",""),
COUPON_ORDER_VERIFY_FAIL("45087","买券订单校验异常",""), COUPON_ORDER_VERIFY_FAIL("45087","买券订单校验异常",""),
COUPON_ORDER_COMMON_VERIFY_FAIL("45088","卖券订单基础校验失败",""), COUPON_ORDER_COMMON_VERIFY_FAIL("45088","卖券订单基础校验失败",""),
TOUCH_SHOPPING_BLACK_LIST("45089","触发消费黑名单",""),
/** /**
* 售后单 * 售后单
......
package cn.freemud.handler;
import cn.freemud.constant.CustomerScoreConstant;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.blacklist.Result;
import cn.freemud.entities.dto.blacklist.req.BlackListQueryByClient;
import cn.freemud.entities.dto.blacklist.resp.MemberBlacklistVO;
import cn.freemud.service.thirdparty.DataCenterClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 11:59
* @description :
*/
@Component
public class MemberBlacklistHandler {
@Autowired
private DataCenterClient dataCenterClient;
/**
* 查询用户是否在黑名单中
*
* @param blacklistDto
*/
public String checkisTrueBlacklist(BlacklistDto blacklistDto) {
//step1 查询是否存在
BlackListQueryByClient req = new BlackListQueryByClient();
req.setPartnerId(blacklistDto.getPartnerId());
req.setMemberId(blacklistDto.getMemberId());
// 默认只查询消费黑名单
req.setRecordType(BlackListQueryByClient.RECORD_TYPE_CUSTOMER);
Result<MemberBlacklistVO> memberBlacklistVOResult = dataCenterClient.queryByMemberId(req);
if (!memberBlacklistVOResult.isOk()) {
return null;
}
MemberBlacklistVO result = memberBlacklistVOResult.getResult();
if (!result.isExist()) {
return null;
}
StringBuilder sb = new StringBuilder();
// 消费黑名单用户 不可使用积分支付
if (Objects.nonNull(blacklistDto.getUseCustomerScore()) && blacklistDto.getUseCustomerScore().compareTo(CustomerScoreConstant.SUBSTRACT.getValue()) == 0) {
sb.append("您已列如消费黑名单暂不可使用积分");
return sb.toString();
}
// 黑名单用户 不可使用优惠券
if (blacklistDto.isUseCoupon()) {
sb.append("您已列如消费黑名单暂不可使用优惠券");
return sb.toString();
}
//step2 存在校验剩余余额
Long limitAmount = result.getLimitAmount();
Long shoppingTotalAmount = result.getShoppingTotalAmount();
if (limitAmount.compareTo(shoppingTotalAmount + blacklistDto.getAmount()) >= 0) {
// 满足
return null;
}
// step3 余额不足组装前端参数 考虑负数默认0
long surplusAmount = limitAmount - shoppingTotalAmount;
// OrderBlacklistResp orderBlacklistResp = new OrderBlacklistResp();
// orderBlacklistResp.setMoblie(result.getMoblie());
// orderBlacklistResp.setSurplusAmount(surplusAmount < 0 ? 0L : surplusAmount);
// return orderBlacklistResp;
// 您的消费额度还有3元,暂无法支付,如有疑问,详询客服热线4008899096
BigDecimal amount = new BigDecimal(Math.max(surplusAmount, 0L)).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_DOWN);
if (amount.compareTo(BigDecimal.ZERO) <= 0) {
sb.append("您的消费金额额度已用完,暂无法支付,如有疑问,详询客服热线").append(result.getMoblie());
} else {
sb.append("您的消费额度还有")
.append(amount)
.append("元,暂无法支付,如有疑问,详询客服热线")
.append(result.getMoblie());
}
return sb.toString();
}
}
...@@ -10,10 +10,7 @@ import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto; ...@@ -10,10 +10,7 @@ import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto;
import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto; import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.PaymentCloseUnifiedOrderRequest; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.PaymentCloseUnifiedOrderResponse;
import cn.freemud.entities.dto.pay.PaymentQueryRequestDto;
import cn.freemud.entities.dto.pay.PaymentQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
...@@ -339,8 +336,9 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -339,8 +336,9 @@ public class AppOrderServiceImpl implements AppOrderService {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = payServiceimpl.cancelNewUnifiedOrder(closeUnifiedOrderRequest); com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder = payServiceimpl.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())
|| ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getData().getResultCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
} }
......
...@@ -26,6 +26,8 @@ import cn.freemud.entities.dto.order.UnifiedPayResponseDto; ...@@ -26,6 +26,8 @@ import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.PayOrderDto; import cn.freemud.entities.dto.pay.PayOrderDto;
import cn.freemud.entities.dto.pay.PayProductDto; import cn.freemud.entities.dto.pay.PayProductDto;
import cn.freemud.entities.dto.pay.UnifiedOrderRequestDto; import cn.freemud.entities.dto.pay.UnifiedOrderRequestDto;
import cn.freemud.entities.dto.pay.svc.BatchSvcInfoRequest;
import cn.freemud.entities.dto.pay.svc.CardApplyRes;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.*; import cn.freemud.entities.dto.store.*;
...@@ -41,6 +43,7 @@ import cn.freemud.service.adapter.OrderCheckAdapter; ...@@ -41,6 +43,7 @@ import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.thirdparty.CustomerPropertyClient; import cn.freemud.service.thirdparty.CustomerPropertyClient;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreBaseApiClient; import cn.freemud.service.thirdparty.StoreBaseApiClient;
import cn.freemud.service.thirdparty.SvcAppClient;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.DateUtils; import cn.freemud.utils.DateUtils;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -116,6 +119,9 @@ public class CheckOrder { ...@@ -116,6 +119,9 @@ public class CheckOrder {
@Autowired @Autowired
private StoreBaseApiClient storeBaseApiClient; private StoreBaseApiClient storeBaseApiClient;
@Autowired
private SvcAppClient svcAppClient;
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906 // 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
@Value("${card.pay.unDistribution.applyId:}") @Value("${card.pay.unDistribution.applyId:}")
private List<Integer> unDistributions; private List<Integer> unDistributions;
...@@ -197,11 +203,51 @@ public class CheckOrder { ...@@ -197,11 +203,51 @@ public class CheckOrder {
// createOrderVo.setUnDistribution(1); // createOrderVo.setUnDistribution(1);
// } // }
// } // }
// 获取储值卡是否配置了优惠同享等
createOrderVo.setEnableSharing(this.commonCheckSVCEnableSharing(memberCardCode,cardCodes,createOrderVo.getPartnerId()));
createOrderVo.setUserId(userLoginInfoDto.getMemberId()); createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto; return userLoginInfoDto;
} }
public void checkMemberSvcCard(String partnerId, String memberId, SellCouponCreateOrderVo requestVo) { /**
*
* @param memberCardCode
* @param cardCodes
* @param partnerId
* @return 是否与营销活动共享 1-是 0-否
*/
public Integer commonCheckSVCEnableSharing(List<GetSvcInfoByMemberIdResponseVo> memberCardCode, Set<String> cardCodes, String partnerId){
Integer enableSharing = 1;
if (CollectionUtils.isNotEmpty(memberCardCode) && CollectionUtils.isNotEmpty(cardCodes)) {
List<BatchSvcInfoRequest> requestList = new ArrayList<>();
memberCardCode.stream().filter(c -> cardCodes.contains(c.getCardCode())).forEach(cardInfo -> {
BatchSvcInfoRequest request = new BatchSvcInfoRequest();
request.setApplyId(cardInfo.getApplyId());
request.setPartnerId(partnerId);
request.setVer("1");
requestList.add(request);
});
cn.freemud.base.entity.BaseResponse<List<CardApplyRes>> response = svcAppClient.multiInfo(requestList);
if (response != null && ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
if (CollectionUtils.isNotEmpty(response.getResult())) {
CardApplyRes cardApplyRes1 = response.getResult().stream().filter(cardApplyRes -> cardApplyRes.getEnableSharing().compareTo(0) == 0).findFirst().orElse(null);
if (Objects.nonNull(cardApplyRes1)) {
enableSharing = cardApplyRes1.getEnableSharing();
}
}
}
}
return enableSharing;
}
/**
*
* @param partnerId
* @param memberId
* @param requestVo
* @return 是否与营销活动共享 1-是 0-否
*/
public Integer checkMemberSvcCard(String partnerId, String memberId, SellCouponCreateOrderVo requestVo) {
if (StringUtils.isNotBlank(requestVo.getCardCode())) { if (StringUtils.isNotBlank(requestVo.getCardCode())) {
//校验会员svc卡信息 //校验会员svc卡信息
List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(partnerId, memberId, Sets.newHashSet(requestVo.getCardCode())); List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(partnerId, memberId, Sets.newHashSet(requestVo.getCardCode()));
...@@ -212,7 +258,9 @@ public class CheckOrder { ...@@ -212,7 +258,9 @@ public class CheckOrder {
// requestVo.setUnDistribution(1); // requestVo.setUnDistribution(1);
// } // }
// } // }
return this.commonCheckSVCEnableSharing(memberCardCode, Collections.singleton(requestVo.getCardCode()), partnerId);
} }
return 1;
} }
...@@ -705,6 +753,7 @@ public class CheckOrder { ...@@ -705,6 +753,7 @@ public class CheckOrder {
.bizType(createOrderVo.getBizType()) .bizType(createOrderVo.getBizType())
.build(); .build();
shoppingCartInfoRequestVo.setTrackingNo(LogThreadLocal.getTrackingNo()); shoppingCartInfoRequestVo.setTrackingNo(LogThreadLocal.getTrackingNo());
shoppingCartInfoRequestVo.setEnableSharing(createOrderVo.getEnableSharing());
// 如果使用优惠券或者商品券,校验 couponCode // 如果使用优惠券或者商品券,校验 couponCode
// if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) { // if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
// // 校验couponCode // // 校验couponCode
......
...@@ -7,10 +7,7 @@ import cn.freemud.constant.ResponseCodeConstant; ...@@ -7,10 +7,7 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.UpdateReserveOrderResponseVo; import cn.freemud.entities.UpdateReserveOrderResponseVo;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.pay.PaymentCloseUnifiedOrderRequest; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.PaymentCloseUnifiedOrderResponse;
import cn.freemud.entities.dto.pay.PaymentQueryRequestDto;
import cn.freemud.entities.dto.pay.PaymentQueryResponseDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.promotion.CouponPromotionDto; import cn.freemud.entities.dto.promotion.CouponPromotionDto;
...@@ -587,9 +584,10 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -587,9 +584,10 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId()); closeUnifiedOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
closeUnifiedOrderRequest.setStoreId(assortmentCustomerInfoVo.getStoreId()); closeUnifiedOrderRequest.setStoreId(assortmentCustomerInfoVo.getStoreId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = payService.cancelNewUnifiedOrder(closeUnifiedOrderRequest); com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder = payService.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){ if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())
return ResponseUtil.error(ResponseResult.ENCIRCLEORDER_PRE_PAYMENT_CLOSE_FAILED); || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getData().getResultCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
} }
} }
......
...@@ -9,6 +9,7 @@ import cn.freemud.constant.RedisKeyConstant; ...@@ -9,6 +9,7 @@ import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.ecology.VirtualBindStoreResponse; import cn.freemud.entities.dto.ecology.VirtualBindStoreResponse;
import cn.freemud.entities.dto.ecology.VirtualStoreRequest; import cn.freemud.entities.dto.ecology.VirtualStoreRequest;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
...@@ -24,6 +25,7 @@ import cn.freemud.entities.dto.wechat.GetAuthorizerRequestDto; ...@@ -24,6 +25,7 @@ import cn.freemud.entities.dto.wechat.GetAuthorizerRequestDto;
import cn.freemud.entities.dto.wechat.GetTokenResponseDto; import cn.freemud.entities.dto.wechat.GetTokenResponseDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse; import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
...@@ -63,6 +65,7 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSales ...@@ -63,6 +65,7 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSales
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
...@@ -149,6 +152,9 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -149,6 +152,9 @@ public class MallOrderServiceImpl implements MallOrderService {
@Autowired @Autowired
private SpellGroupOrderDataManager spellGroupOrderDataManager; private SpellGroupOrderDataManager spellGroupOrderDataManager;
@Autowired
private MemberBlacklistHandler memberBlacklistHandler;
/** /**
* 创建订单 * 创建订单
*/ */
...@@ -287,6 +293,31 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -287,6 +293,31 @@ public class MallOrderServiceImpl implements MallOrderService {
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest); createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
createOrderRequest.getBaseCreateOrderRequest().setUserName(userLoginInfoDto.getNickName()); createOrderRequest.getBaseCreateOrderRequest().setUserName(userLoginInfoDto.getNickName());
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
// fisherman -> 微商城消费黑名单限制
BlacklistDto blacklistDto = new BlacklistDto();
blacklistDto.setAmount(baseCreateOrderRequest.getAmount());
blacklistDto.setPartnerId(createOrderVo.getPartnerId());
blacklistDto.setMemberId(createOrderVo.getUserId());
if (CollectionUtils.isNotEmpty(baseCreateOrderRequest.getAccounts())) {
// 过滤出券, 黑名单有用户不能用券
List<CreateOrderAccountRequest> useAccount = baseCreateOrderRequest.getAccounts()
.stream()
.filter(a -> QueryOrderAccountType.useCouponList.contains(a.getAccountType()))
.collect(Collectors.toList());
blacklistDto.setUseCoupon(CollectionUtils.isNotEmpty(useAccount));
}
blacklistDto.setUseCustomerScore(createOrderVo.getUseCustomerScore());
String touchStr = memberBlacklistHandler.checkisTrueBlacklist(blacklistDto);
if (StringUtils.isNotEmpty(touchStr)) {
CreateOrderResponse baseOrderResponse = new CreateOrderResponse();
baseOrderResponse.setErrcode(Integer.valueOf(ResponseResult.TOUCH_SHOPPING_BLACK_LIST.getCode()));
baseOrderResponse.setErrmsg(touchStr);
baseOrderResponse.setData(null);
return baseOrderResponse;
}
return orderBusinessService.createOrderFlow(createOrderRequest); return orderBusinessService.createOrderFlow(createOrderRequest);
}); });
......
...@@ -24,6 +24,8 @@ import cn.freemud.entities.dto.*; ...@@ -24,6 +24,8 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseObj;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto; import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.blacklist.OrderBlacklistResp;
import cn.freemud.entities.dto.coupon.CheckAndCancelRequest; import cn.freemud.entities.dto.coupon.CheckAndCancelRequest;
import cn.freemud.entities.dto.coupon.CheckAndCancelResponseDTO; import cn.freemud.entities.dto.coupon.CheckAndCancelResponseDTO;
import cn.freemud.entities.dto.coupon.CouponResponseDTO; import cn.freemud.entities.dto.coupon.CouponResponseDTO;
...@@ -50,6 +52,7 @@ import cn.freemud.entities.dto.user.UserCouponCheckRequest; ...@@ -50,6 +52,7 @@ import cn.freemud.entities.dto.user.UserCouponCheckRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.handler.WeChatLiveMsgHandle; import cn.freemud.handler.WeChatLiveMsgHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request; import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
...@@ -93,6 +96,7 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome ...@@ -93,6 +96,7 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import com.freemud.api.assortment.datamanager.meal.MealCacheManager; import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant; import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum; import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey; import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey;
...@@ -126,6 +130,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic ...@@ -126,6 +130,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant; import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity; import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity;
import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime; import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.StoreDeliveryMethod; import com.freemud.sdk.api.assortment.order.enums.StoreDeliveryMethod;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
...@@ -295,6 +300,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -295,6 +300,9 @@ public class OrderServiceImpl implements Orderservice {
private StockHandle stockHandle; private StockHandle stockHandle;
@Autowired @Autowired
private MemberBlacklistHandler memberBlacklistHandler;
@Autowired
private OrderManagerAdapter orderManagerAdapter; private OrderManagerAdapter orderManagerAdapter;
@Value("${sellcoupon.test.order.refund.fail:}") @Value("${sellcoupon.test.order.refund.fail:}")
...@@ -2489,6 +2497,26 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2489,6 +2497,26 @@ public class OrderServiceImpl implements Orderservice {
//组装老的创建订单数据模型 //组装老的创建订单数据模型
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto); BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
// fisherman 订单支付价格 _> 处理 消费黑面名单逻辑
Long amount = baseCreateOrderRequest.getAmount();
BlacklistDto blacklistDto = new BlacklistDto();
blacklistDto.setAmount(amount);
blacklistDto.setPartnerId(createOrderVo.getPartnerId());
blacklistDto.setMemberId(createOrderVo.getUserId());
blacklistDto.setUseCustomerScore(createOrderVo.getUseCustomerScore());
if (CollectionUtils.isNotEmpty(baseCreateOrderRequest.getAccounts())) {
// 过滤出券, 黑名单有用户不能用券
List<CreateOrderAccountRequest> useAccount = baseCreateOrderRequest.getAccounts()
.stream()
.filter(a -> QueryOrderAccountType.useCouponList.contains(a.getAccountType()))
.collect(Collectors.toList());
blacklistDto.setUseCoupon(CollectionUtils.isNotEmpty(useAccount));
}
String touchStr = memberBlacklistHandler.checkisTrueBlacklist(blacklistDto);
if (StringUtils.isNotEmpty(touchStr)) {
return ResponseUtil.error(ResponseResult.TOUCH_SHOPPING_BLACK_LIST.getCode(), touchStr);
}
// 预先前置 设置 支付方式 // 预先前置 设置 支付方式
this.preSetPayChannelType(baseCreateOrderRequest, createOrderVo); this.preSetPayChannelType(baseCreateOrderRequest, createOrderVo);
......
...@@ -848,7 +848,7 @@ public class PayServiceImpl { ...@@ -848,7 +848,7 @@ public class PayServiceImpl {
/** /**
* 关闭预支付订单 * 关闭预支付订单
*/ */
public com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder( PaymentCloseUnifiedOrderRequest request){ public com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder( PaymentCloseUnifiedOrderRequest request){
return paymentNewClient.cancelNewUnifiedOrder(request); return paymentNewClient.cancelNewUnifiedOrder(request);
} }
...@@ -944,8 +944,9 @@ public class PayServiceImpl { ...@@ -944,8 +944,9 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = this.cancelNewUnifiedOrder(closeUnifiedOrderRequest); com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder = this.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())
|| ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getData().getResultCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
} }
...@@ -983,8 +984,9 @@ public class PayServiceImpl { ...@@ -983,8 +984,9 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = this.cancelNewUnifiedOrder(closeUnifiedOrderRequest); com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder = this.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())
|| ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getData().getResultCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
} }
......
...@@ -12,6 +12,7 @@ import cn.freemud.constant.ResponseCodeConstant; ...@@ -12,6 +12,7 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.Active; import cn.freemud.entities.Active;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.blacklist.BlacklistDto;
import cn.freemud.entities.dto.coupon.CouponResponseDTO; import cn.freemud.entities.dto.coupon.CouponResponseDTO;
import cn.freemud.entities.dto.coupon.FastBatchQueryTemplateInfoRequest; import cn.freemud.entities.dto.coupon.FastBatchQueryTemplateInfoRequest;
import cn.freemud.entities.dto.coupon.FastTemplateInfoResponseVO; import cn.freemud.entities.dto.coupon.FastTemplateInfoResponseVO;
...@@ -29,6 +30,7 @@ import cn.freemud.entities.dto.store.StoreMixResponseDto; ...@@ -29,6 +30,7 @@ import cn.freemud.entities.dto.store.StoreMixResponseDto;
import cn.freemud.entities.live.WeChatReportVO; import cn.freemud.entities.live.WeChatReportVO;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.handler.WeChatLiveMsgHandle; import cn.freemud.handler.WeChatLiveMsgHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.BuyProductOnceManager; import cn.freemud.manager.BuyProductOnceManager;
...@@ -180,6 +182,10 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -180,6 +182,10 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
@Autowired @Autowired
private CouponOnlineClient couponOnlineClient; private CouponOnlineClient couponOnlineClient;
@Autowired
private MemberBlacklistHandler memberBlacklistHandler;
/** /**
* 抖音卖券 * 抖音卖券
*/ */
...@@ -311,7 +317,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -311,7 +317,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
// 查询用户信息 // 查询用户信息
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMemberNew(requestVo.getSessionId()); AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMemberNew(requestVo.getSessionId());
// 如果用户适用SVC 卡支付,则校验svc卡, // 如果用户适用SVC 卡支付,则校验svc卡,
checkOrder.checkMemberSvcCard(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), requestVo); Integer enableSharing = checkOrder.checkMemberSvcCard(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), requestVo);
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
String partnerId = userLoginInfoDto.getPartnerId(); String partnerId = userLoginInfoDto.getPartnerId();
String storeId = requestVo.getShopId(); String storeId = requestVo.getShopId();
...@@ -376,9 +382,22 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -376,9 +382,22 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
} }
CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult(); CreateOrderRequest createOrderRequest = (CreateOrderRequest) createOrderRequestResponse.getResult();
createOrderRequest.setEnableSharing(enableSharing);
//标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品 //标准化平台虚拟商品特价活动计算,不包含蜜雪APP买虚拟商品
List<SubtractStockVO> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest); List<SubtractStockVO> stockBeanDtos = calculationDiscount(partnerId, storeId, userLoginInfoDto.getMemberId(), productInfosDto.getData().getProducts().get(0), createOrderRequest);
// fisherman --> 校验是否存在用户消费黑名单 需要校验 !=null && >0
Long amount = createOrderRequest.getActualPayAmount();
if (Objects.nonNull(amount) && amount.compareTo(0L) > 0) {
BlacklistDto blacklistDto = new BlacklistDto();
blacklistDto.setAmount(amount);
blacklistDto.setPartnerId(createOrderRequest.getPartnerId());
blacklistDto.setMemberId(createOrderRequest.getUserId());
String touchStr = memberBlacklistHandler.checkisTrueBlacklist(blacklistDto);
if (StringUtils.isNotEmpty(touchStr)) {
return ResponseUtil.error(ResponseResult.TOUCH_SHOPPING_BLACK_LIST.getCode(), touchStr);
}
}
OrderBaseResp<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo); OrderBaseResp<OrderInfoReqs> orderInfoReqsBaseResponse = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse); CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(orderInfoReqsBaseResponse);
if (createOrderResponse == null || createOrderResponse.getErrcode() != 100) { if (createOrderResponse == null || createOrderResponse.getErrcode() != 100) {
...@@ -1112,6 +1131,9 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -1112,6 +1131,9 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
//买券包调促销指定只计算限时特价 [2,21,29] 29.商品限购 //买券包调促销指定只计算限时特价 [2,21,29] 29.商品限购
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_29.getCode())); calculationDiscountRequestDto.setActivityTypes(Arrays.asList(ActivityTypeEnum.TYPE_2.getCode(), ActivityTypeEnum.TYPE_21.getCode(), ActivityTypeEnum.TYPE_29.getCode()));
if (Objects.nonNull(createOrderRequest.getEnableSharing()) && createOrderRequest.getEnableSharing().compareTo(0) == 0) {
calculationDiscountRequestDto.setActivityTypes(Arrays.asList(ActivityTypeEnum.TYPE_29.getCode()));
}
calculationDiscountRequestDto.setVer(1); calculationDiscountRequestDto.setVer(1);
calculationDiscountRequestDto.setApplication("isaas"); calculationDiscountRequestDto.setApplication("isaas");
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto); ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
......
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.blacklist.Result;
import cn.freemud.entities.dto.blacklist.req.BlackListQueryByClient;
import cn.freemud.entities.dto.blacklist.resp.MemberBlacklistVO;
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;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/5/27 14:17
* @description :
*/
@FeignClient(name = "data-center")
@RequestMapping(produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public interface DataCenterClient {
/**
* 查询用户是否在黑名单中
*/
@LogIgnoreFeign(logMessage="queryByMemberId")
@PostMapping("/blacklist/query-by-memberId")
Result<MemberBlacklistVO> queryByMemberId(@RequestBody BlackListQueryByClient req);
}
...@@ -68,7 +68,7 @@ public interface PaymentNewClient { ...@@ -68,7 +68,7 @@ public interface PaymentNewClient {
*/ */
@LogIgnoreFeign(logMessage="payClose") @LogIgnoreFeign(logMessage="payClose")
@PostMapping("paymentcenter/close") @PostMapping("paymentcenter/close")
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder(@RequestBody PaymentCloseUnifiedOrderRequest request); com.freemud.application.sdk.api.base.BaseResponse<CloseUnifiedOrderResult> cancelNewUnifiedOrder(@RequestBody PaymentCloseUnifiedOrderRequest request);
/** /**
* 支付查询 * 支付查询
......
...@@ -2,13 +2,19 @@ package cn.freemud.service.thirdparty; ...@@ -2,13 +2,19 @@ package cn.freemud.service.thirdparty;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign; import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.pay.svc.BatchSvcInfoRequest;
import cn.freemud.entities.dto.pay.svc.CardApplyRes;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name="fm-svc-app", url = "${saas.svc.app.feign.url:}") import java.util.ArrayList;
import java.util.List;
@FeignClient(name = "fm-svc-app", url = "${saas.svc.app.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcAppClient { public interface SvcAppClient {
...@@ -17,4 +23,9 @@ public interface SvcAppClient { ...@@ -17,4 +23,9 @@ public interface SvcAppClient {
@LogIgnoreFeign(logMessage = "batchQueryCardAmount") @LogIgnoreFeign(logMessage = "batchQueryCardAmount")
BaseResponse<SVCCardAmountResponseDto> batchQueryCardAmount(SVCCardAmountRequestDto svcComPayRequestDto); BaseResponse<SVCCardAmountResponseDto> batchQueryCardAmount(SVCCardAmountRequestDto svcComPayRequestDto);
//批量查询卡配置规则
@PostMapping(value = "/svc/cardapply/multi-info")
BaseResponse<List<CardApplyRes>> multiInfo(@RequestBody ArrayList<BatchSvcInfoRequest> requestList);
} }
...@@ -5,19 +5,23 @@ import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO; ...@@ -5,19 +5,23 @@ import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.StoreInfoDTO; import cn.freemud.management.entities.dto.request.console.StoreInfoDTO;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang.math.NumberUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.*;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
public class DeliverySdkAdapter { public class DeliverySdkAdapter {
@Value("${calculate.depatch.weight.partnerId:}")
private List<String> calculateWeightPartnerId;
/** /**
* 创建配送单请求对象 * 创建配送单请求对象
* *
...@@ -28,9 +32,8 @@ public class DeliverySdkAdapter { ...@@ -28,9 +32,8 @@ public class DeliverySdkAdapter {
*/ */
public CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(OrderBeanV1 order public CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(OrderBeanV1 order
, ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) { , ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) {
StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo();
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto(); CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1)); deliveryOrderRequestDto.setDepatchWeight(this.getDepatchWeightByOrder(order.getProductList(), order.getCompanyId()));
deliveryOrderRequestDto.setSerialNumber(order.getOtherCode()); deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
deliveryOrderRequestDto.setOrderId(order.getOid()); deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark()); deliveryOrderRequestDto.setOrderRemark(order.getRemark());
...@@ -38,6 +41,7 @@ public class DeliverySdkAdapter { ...@@ -38,6 +41,7 @@ public class DeliverySdkAdapter {
deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue()); deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setPartnerId(order.getCompanyId()); deliveryOrderRequestDto.setPartnerId(order.getCompanyId());
deliveryOrderRequestDto.setOrderChannel(order.getSource()); deliveryOrderRequestDto.setOrderChannel(order.getSource());
StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo();
deliveryOrderRequestDto.setStoreId(storeInfo.getStoreId()); deliveryOrderRequestDto.setStoreId(storeInfo.getStoreId());
deliveryOrderRequestDto.setStoreCode(storeInfo.getStoreCode()); deliveryOrderRequestDto.setStoreCode(storeInfo.getStoreCode());
StringBuffer address = new StringBuffer(storeInfo.getCity()) StringBuffer address = new StringBuffer(storeInfo.getCity())
...@@ -78,4 +82,46 @@ public class DeliverySdkAdapter { ...@@ -78,4 +82,46 @@ public class DeliverySdkAdapter {
}).collect(Collectors.toCollection(LinkedList::new)))); }).collect(Collectors.toCollection(LinkedList::new))));
return deliveryOrderRequestDto; return deliveryOrderRequestDto;
} }
private BigDecimal getDepatchWeightByOrder(List<ProductBeanV1> productList, String partnerId) {
if (CollectionUtils.isEmpty(calculateWeightPartnerId) || !calculateWeightPartnerId.contains(partnerId)) {
// 原始逻辑,都是默认传递 1kg给到配送
return new BigDecimal("1");
}
if (CollectionUtils.isEmpty(productList)) {
return new BigDecimal("0.5");
}
BigDecimal result = BigDecimal.ZERO;
for (ProductBeanV1 p : productList) {
// if (p.getIsSendGoods()) {
// continue;
// }
BigDecimal sum = p.getWeight().multiply(new BigDecimal(p.getNumber()));
BigDecimal comboSum = this.sumWeightByProduct(p.getComboProduct());
BigDecimal materSum = this.sumWeightByProduct(p.getMaterialProduct());
// BigDecimal sendSum = this.sumWeightByProduct(p.getSendProduct());
// result = result.add(sum).add(comboSum).add(materSum).add(sendSum);
result = result.add(sum).add(comboSum).add(materSum);
}
if (result.compareTo(BigDecimal.ZERO) <= 0) {
return new BigDecimal("0.5");
}
// 这里 计算的结果是 g 需要变成 kg 给接口 保留3位小数 后面多余直接舍弃
return result.divide(new BigDecimal("1000"), 3, BigDecimal.ROUND_DOWN);
}
private BigDecimal sumWeightByProduct(List<ProductBeanV1> productBeanV) {
BigDecimal result = BigDecimal.ZERO;
if (CollectionUtils.isEmpty(productBeanV)) {
return result;
}
for (ProductBeanV1 p : productBeanV) {
BigDecimal weight = p.getWeight();
int number = p.getNumber();
BigDecimal multiply = weight.multiply(new BigDecimal(number));
result = result.add(multiply);
}
return result;
}
} }
...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; ...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.util.LogUtil;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
...@@ -70,7 +71,8 @@ public class DeliveryHandle { ...@@ -70,7 +71,8 @@ public class DeliveryHandle {
private DeliveryMCCafeClient deliveryMCCafeClient; private DeliveryMCCafeClient deliveryMCCafeClient;
@Autowired @Autowired
private EmailAlertService emailAlertService; private EmailAlertService emailAlertService;
@Autowired
private LogUtil logUtil;
/** /**
* 创建配送单 * 创建配送单
......
...@@ -15,6 +15,7 @@ package com.freemud.application.sdk.api.ordercenter.request.create; ...@@ -15,6 +15,7 @@ package com.freemud.application.sdk.api.ordercenter.request.create;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.BaseRequest; import com.freemud.application.sdk.api.ordercenter.request.BaseRequest;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -23,6 +24,12 @@ import java.util.List; ...@@ -23,6 +24,12 @@ import java.util.List;
@Data @Data
public class CreateOrderRequest extends BaseRequest { public class CreateOrderRequest extends BaseRequest {
/**
* 该字段内部查询得出结果, 不可由前端传递
*/
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing;
//订单编号 //订单编号
private String orderCode; private String orderCode;
......
package cn.freemud.entities.dto.activity; package cn.freemud.entities.dto.activity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
...@@ -18,4 +19,10 @@ import lombok.Data; ...@@ -18,4 +19,10 @@ import lombok.Data;
public class DiscountSharingDto { public class DiscountSharingDto {
//当前请求是否自动勾选优惠券 //当前请求是否自动勾选优惠券
private Boolean autoCoupon; private Boolean autoCoupon;
/**
* 储值卡需求: 使用的储值卡是否与 促销活动同享
*/
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
} }
...@@ -97,6 +97,9 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -97,6 +97,9 @@ public class ActivityCalculationDiscountRequestDto {
//当前请求是否自动勾选优惠券 //当前请求是否自动勾选优惠券
private Boolean autoCoupon; private Boolean autoCoupon;
//指定参与的活动类型
private List<Integer> activityTypes;
@Data @Data
public static class CalculationDiscountCoupon { public static class CalculationDiscountCoupon {
/** /**
......
...@@ -53,6 +53,13 @@ public class PremiumExchangeRequestVo { ...@@ -53,6 +53,13 @@ public class PremiumExchangeRequestVo {
private Integer bizType; private Integer bizType;
/** /**
* 储值卡需求: 使用的储值卡是否与 促销活动同享
*/
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
/**
* 优惠券code列表 * 优惠券code列表
*/ */
private List<couponCode> couponCodes; private List<couponCode> couponCodes;
......
...@@ -25,6 +25,10 @@ import java.util.List; ...@@ -25,6 +25,10 @@ import java.util.List;
@Data @Data
public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseVo{
/** /**
* 用于看前端第几次请求
*/
private Long currentTime = System.currentTimeMillis();
/**
* 配送费的清单 包含 普通配送费 额外夜间配送费 额外白天配送费 下面的 deliveryAmount 是总的配送费 * 配送费的清单 包含 普通配送费 额外夜间配送费 额外白天配送费 下面的 deliveryAmount 是总的配送费
*/ */
List<ExtraDeliveryDto> deliveryAmountList = new ArrayList<>(); List<ExtraDeliveryDto> deliveryAmountList = new ArrayList<>();
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -155,6 +156,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -155,6 +156,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
*/ */
private Integer isOrderReq = 0; private Integer isOrderReq = 0;
/**
* 储值卡需求: 使用的储值卡是否与 促销活动同享
*/
@ApiModelProperty(value = "是否与营销活动共享 1-是 0-否")
private Integer enableSharing = 1;
@Data @Data
public final static class SendGoods { public final static class SendGoods {
/** /**
......
...@@ -30,6 +30,7 @@ public enum ActivityTypeEnum { ...@@ -30,6 +30,7 @@ public enum ActivityTypeEnum {
TYPE_23(23, "超值加购"), TYPE_23(23, "超值加购"),
TYPE_27(27, "促销会员价"), TYPE_27(27, "促销会员价"),
TYPE_28(28, "积分商品活动"), TYPE_28(28, "积分商品活动"),
TYPE_29(29, "商品活动"),
/** /**
* 优惠券 * 优惠券
*/ */
......
...@@ -7,6 +7,7 @@ import cn.freemud.constant.ShoppingCartConstant; ...@@ -7,6 +7,7 @@ import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult; import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
import cn.freemud.entities.dto.calculate.Discount; import cn.freemud.entities.dto.calculate.Discount;
...@@ -336,15 +337,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService ...@@ -336,15 +337,15 @@ public abstract class AbstractShoppingCartImpl implements ShoppingCartNewService
public CalculationDiscountResult getCalculationDiscountResult(String menuType public CalculationDiscountResult getCalculationDiscountResult(String menuType
, String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember , String partnerId, String storeId, String userId, String appId, String wxappid, Integer orderType, boolean isMember
, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons , List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons
, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount, long nightDistributionFee){ , List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String receiveId, Long deliveryAmount, long nightDistributionFee, DiscountSharingDto discountSharingDto){
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult=null; CalculationDiscountResult calculationDiscountResult=null;
//外卖场景下 查询门店配送信息 //外卖场景下 查询门店配送信息
if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){ if(BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)){
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null, null, nightDistributionFee); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),deliveryAmount,null, null, nightDistributionFee, discountSharingDto);
}else{ }else{
calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null, null,0L); calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType,isMember, cartGoodsList, coupons, sendGoodsList,BusinessTypeEnum.getByType(menuType).getCode(),null,null, null,0L,discountSharingDto);
} }
return calculationDiscountResult; return calculationDiscountResult;
......
...@@ -10,6 +10,7 @@ import cn.freemud.entities.dto.GetMemberInfoResponseVo; ...@@ -10,6 +10,7 @@ import cn.freemud.entities.dto.GetMemberInfoResponseVo;
import cn.freemud.entities.dto.GoodsBeanDto; import cn.freemud.entities.dto.GoodsBeanDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto; import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult; import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
...@@ -99,7 +100,8 @@ public interface ShoppingCartNewService { ...@@ -99,7 +100,8 @@ public interface ShoppingCartNewService {
List<CartGoods> cartGoodsList, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons,
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag,
long nightDistributionFee); long nightDistributionFee,
DiscountSharingDto discountSharingDto);
List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList); List<CartGoods> updateCartGoodsLegal(CartGoods cartGoods, String userId, ShoppingCartGoodsBaseResponseVo shoppingCartGoodsResponseVo, AddShoppingCartGoodsRequestVo addShoppingCartGoodsRequestVo, List<CartGoods> oldAllCartGoodsList);
......
...@@ -8,6 +8,7 @@ import cn.freemud.constant.ResponseCodeConstant; ...@@ -8,6 +8,7 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.*; import cn.freemud.entities.dto.calculate.*;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
...@@ -200,7 +201,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -200,7 +201,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,currentUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(), allCartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())); =getCalculationDiscountResult(menuType,partnerId,storeId,currentUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(), allCartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()),new DiscountSharingDto());
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, currentUserId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, currentUserId, appId, addShoppingCartGoodsRequestVo.getOrderType());
...@@ -392,7 +393,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -392,7 +393,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())); =getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()),new DiscountSharingDto());
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
...@@ -521,9 +522,10 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -521,9 +522,10 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} }
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
DiscountSharingDto discountSharingDto = new DiscountSharingDto();
discountSharingDto.setEnableSharing(shoppingCartInfoRequestVo.getEnableSharing());
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,coupons,null,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())); CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,coupons,null,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()),discountSharingDto);
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
...@@ -737,7 +739,9 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -737,7 +739,9 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,assortmentCustomerInfoVo.isMemberPaid(),cartGoodsList,coupons,sendGoodsList,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())); DiscountSharingDto discountSharingDto = new DiscountSharingDto();
discountSharingDto.setEnableSharing(shoppingCartInfoRequestVo.getEnableSharing());
CalculationDiscountResult calculationDiscountResult = getCalculationDiscountResult(menuType,partnerId,storeId,userId,appId,userLoginInfoDto.getWxAppid(),orderType,assortmentCustomerInfoVo.isMemberPaid(),cartGoodsList,coupons,sendGoodsList,shoppingCartInfoRequestVo.getReceiveId(),deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()),discountSharingDto);
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
...@@ -791,7 +795,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -791,7 +795,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
} }
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType, Integer accoutFlag,long nightDistributionFee) { public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee,Integer bizType, Integer accoutFlag,long nightDistributionFee,DiscountSharingDto discountSharingDto) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
// 校验后有效的商品券map // 校验后有效的商品券map
...@@ -1265,7 +1269,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1265,7 +1269,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo); Long deliveryAmount = calculateDeliveryAmount(receiveId, partnerId, storeId, userLoginInfoDto.getWxAppid(), shoppingCartGoodsResponseVo);
// 获取优惠信息 // 获取优惠信息
CalculationDiscountResult calculationDiscountResult CalculationDiscountResult calculationDiscountResult
=getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList())); =getCalculationDiscountResult(menuType,partnerId,storeId,crateUserId,appId,userLoginInfoDto.getWxAppid(),orderType,currentUserInfoVo.isMemberPaid(),cartGoodsList,new ArrayList(),new ArrayList<>(),null,deliveryAmount, this.getNightDistributionFee(shoppingCartGoodsResponseVo.getDeliveryAmountList()),new DiscountSharingDto());
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
shoppingCartGoodsResponseVo.setProducts(cartGoodsList); shoppingCartGoodsResponseVo.setProducts(cartGoodsList);
} }
......
...@@ -193,9 +193,9 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -193,9 +193,9 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
Long deliveryAmount = 0L; Long deliveryAmount = 0L;
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, addShoppingCartGoodsRequestVo.getOrderType());
DiscountSharingDto discountSharingDto = new DiscountSharingDto();
CalculationDiscountResult discountResult = null; CalculationDiscountResult discountResult = null;
discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType,new DiscountSharingDto(),0L); discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType, partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), allCartGoodsList, new ArrayList<>(), null, deliveryAmount, null,null, accountType,discountSharingDto,0L);
sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId,0L); sharingCartService.distribute(discountResult, allCartGoodsList, shoppingCartGoodsResponseVo, null, null, null, activityQueryDto, menuType, deliveryAmount, ShoppingCartConstant.ADD_AND_UPDATE, partnerId, null, userId, storeId,0L);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId); buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,discountResult,null,partnerId);
...@@ -423,7 +423,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -423,7 +423,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
Long deliveryAmount = deliveryFeeInfo.getDeliveryAmount(); Long deliveryAmount = deliveryFeeInfo.getDeliveryAmount();
shoppingCartGoodsResponseVo.setCostType(deliveryFeeInfo.getCostType()); shoppingCartGoodsResponseVo.setCostType(deliveryFeeInfo.getCostType());
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType()); ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto); CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto);
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>();
...@@ -438,6 +438,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -438,6 +438,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
sendGoods.add(sd); sendGoods.add(sd);
} }
} }
DiscountSharingDto discountSharingDto = new DiscountSharingDto();
discountSharingDto.setEnableSharing(shoppingCartInfoRequestVo.getEnableSharing());
CalculationDiscountResult calculationSharingDiscountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType CalculationDiscountResult calculationSharingDiscountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType
, partnerId , partnerId
, storeId , storeId
...@@ -449,7 +451,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -449,7 +451,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons , coupons
, sendGoods , sendGoods
, deliveryAmount , deliveryAmount
, null,null, accountFlag,new DiscountSharingDto(),0L); , null,null, accountFlag,discountSharingDto,0L);
sharingCartService.distribute(calculationSharingDiscountResult sharingCartService.distribute(calculationSharingDiscountResult
, cartGoodsList , cartGoodsList
, shoppingCartGoodsResponseVo , shoppingCartGoodsResponseVo
...@@ -595,7 +597,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -595,7 +597,8 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>();
// 当couponCodes不为空时,需参与价格计算,同时排除单券入参 // 当couponCodes不为空时,需参与价格计算,同时排除单券入参
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes()); buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
DiscountSharingDto discountSharingDto = new DiscountSharingDto();
discountSharingDto.setEnableSharing(shoppingCartInfoRequestVo.getEnableSharing());
CalculationDiscountResult discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType CalculationDiscountResult discountResult = sharingDiscountService.getCalculationSharingDiscountResult(menuType
, partnerId , partnerId
, storeId , storeId
...@@ -607,7 +610,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -607,7 +610,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, coupons , coupons
, shoppingCartInfoRequestVo.getSendGoods() , shoppingCartInfoRequestVo.getSendGoods()
, deliveryAmount , deliveryAmount
, shoppingCartInfoRequestVo,null, accountFlag,new DiscountSharingDto(), 0L); , shoppingCartInfoRequestVo,null, accountFlag,discountSharingDto, 0L);
// 活动校验 // 活动校验
calculationSharingValidatorService.validator(discountResult calculationSharingValidatorService.validator(discountResult
...@@ -640,7 +643,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService { ...@@ -640,7 +643,7 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse( public CalculationDiscountResult getActivityCalculationDiscountResponse(
String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList, String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, List<CartGoods> cartGoodsList,
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag,long nightDistributionFee) { List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag,long nightDistributionFee,DiscountSharingDto discountSharingDto) {
return null; return null;
} }
......
...@@ -6,6 +6,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -6,6 +6,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.CouponProductDto; import cn.freemud.entities.dto.CouponProductDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.DiscountSharingDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.calculate.CalculationDiscountResult; import cn.freemud.entities.dto.calculate.CalculationDiscountResult;
...@@ -434,7 +435,8 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -434,7 +435,8 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
if (CollectionUtils.isEmpty(cartGoodsList)) { if (CollectionUtils.isEmpty(cartGoodsList)) {
return; return;
} }
CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null, null,0L); DiscountSharingDto discountSharingDto = new DiscountSharingDto();
CalculationDiscountResult calculationDiscountResult = this.getActivityCalculationDiscountResponse(partnerId, storeId, userId, appId, orderType, isMember, cartGoodsList, new ArrayList<>(), new ArrayList<>(), BusinessTypeEnum.SAAS_MALL.getCode(), 0L,null, null,0L,discountSharingDto);
if(calculationDiscountResult == null) { if(calculationDiscountResult == null) {
return; return;
} }
...@@ -563,7 +565,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService { ...@@ -563,7 +565,7 @@ public class ShoppingCartMealServiceImpl implements ShoppingCartNewService {
@Override @Override
public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember, public CalculationDiscountResult getActivityCalculationDiscountResponse(String partnerId, String storeId, String userId, String appId, Integer orderType, boolean isMember,
List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList,String menuType,Long distributionFee,Integer bizType, Integer accountFlag,long nightDistributionFee) { List<CartGoods> cartGoodsList, List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons, List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList, String menuType, Long distributionFee, Integer bizType, Integer accountFlag, long nightDistributionFee, DiscountSharingDto discountSharingDto) {
ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType); ActivityCalculationDiscountRequestDto activityCalculationDiscountRequestDto = getActivityCalculationDiscountRequestDto(partnerId, storeId, userId, appId, orderType);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>(); List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList = new ArrayList<>();
cartGoodsList = cartGoodsList.stream().filter(t -> !isWeightProduct(t)).collect(Collectors.toList()); cartGoodsList = cartGoodsList.stream().filter(t -> !isWeightProduct(t)).collect(Collectors.toList());
......
...@@ -10,6 +10,8 @@ import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo; ...@@ -10,6 +10,8 @@ import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.service.impl.calculate.promotion.*; import cn.freemud.service.impl.calculate.promotion.*;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.util.LogUtil;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -52,6 +54,8 @@ public class CalculationSharingCartService { ...@@ -52,6 +54,8 @@ public class CalculationSharingCartService {
@Autowired @Autowired
private BuyOneGiveOneSendService buyOneGiveOneSendService; private BuyOneGiveOneSendService buyOneGiveOneSendService;
@Autowired
private LogUtil logUtil;
/** /**
* 响应购物车价格计算依赖促销 * 响应购物车价格计算依赖促销
*/ */
...@@ -82,6 +86,7 @@ public class CalculationSharingCartService { ...@@ -82,6 +86,7 @@ public class CalculationSharingCartService {
if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) { if (BusinessTypeEnum.SAAS_MALL.getCode().equals(menuType) && null != shoppingCartInfoRequestVo && OrderChannelType.SAASMALL.getCode().equalsIgnoreCase(shoppingCartInfoRequestVo.getChannelType())) {
deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult); deliverySharingService.mallDeliveryResponse(shoppingCartGoodsResponseVo, deliveryAmount,discountResult);
} }
/** /**
* 可用券及券折扣 * 可用券及券折扣
*/ */
......
...@@ -8,10 +8,7 @@ import cn.freemud.entities.dto.calculate.*; ...@@ -8,10 +8,7 @@ import cn.freemud.entities.dto.calculate.*;
import cn.freemud.entities.dto.shoppingCart.SendPoint; import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.vo.CartGoods; import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.*;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.BizServiceException; import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService; import cn.freemud.service.CommonService;
...@@ -31,10 +28,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -31,10 +28,7 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
//import cn.freemud.service.thirdparty.CalculationClient; //import cn.freemud.service.thirdparty.CalculationClient;
...@@ -237,6 +231,11 @@ public class CalculationSharingDiscountService { ...@@ -237,6 +231,11 @@ public class CalculationSharingDiscountService {
activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto, shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods()); activeService.buildChooseGoodsService(calculationSharingDiscountRequestDto, shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getChooseGoods());
if(sharingDto != null){ if(sharingDto != null){
calculationSharingDiscountRequestDto.setAutoCoupon(sharingDto.getAutoCoupon()); calculationSharingDiscountRequestDto.setAutoCoupon(sharingDto.getAutoCoupon());
if (Objects.nonNull(sharingDto.getEnableSharing()) && sharingDto.getEnableSharing().compareTo(0) == 0) {
// 储值卡算计, 剔除互斥活动 只能参加活动类型为29
calculationSharingDiscountRequestDto.setActivityTypes(Collections.singletonList(ActivityTypeEnum.TYPE_29.getCode()));
}
} }
//算价 //算价
ActivityCalculationDiscountResponseDto sharingDiscountResponseDto = activityClient.calculationSharingDiscount(calculationSharingDiscountRequestDto); ActivityCalculationDiscountResponseDto sharingDiscountResponseDto = activityClient.calculationSharingDiscount(calculationSharingDiscountRequestDto);
......
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