Commit 62887316 by 王世昌

Merge branch 'feature/20210420-华莱士公用分支-张志恒' into frature/20210414_华莱士微商城申请退款_wangshichang

parents 199eec25 28ee4100
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.1.48-RELEASE</version>
<version>2.1.51-RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.3.44.RELEASE</version>
<version>1.3.46.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -122,4 +122,7 @@
| 2.1.45-RELEASE | ordercentersdk 升级 | 王航航 | 2021-04-07 |
| 2.1.46-RELEASE | 单品立减平台化 | 梁崇福 | 2021-04-08 |
| 2.1.47-RELEASE | 赠品落库 | 梁崇福 | 2021-04-08 |
| 2.1.48-RELEASE | 小程序外卖单,接单,配送自动扭转时间为空设置默认值 | 伍平 | 2021-04-12 |
\ No newline at end of file
| 2.1.48-RELEASE | 小程序外卖单,接单,配送自动扭转时间为空设置默认值 | 伍平 | 2021-04-12 |
| 2.1.49-RELEASE | 月享卡2.0 | 徐康 | 2021-04-15 |
| 2.1.50-RELEASE | 小票打印 | 张志恒 | 2021-04-16 |
| 2.1.51-RELEASE | 更新sdk | 徐康 | 2021-04-19 |
\ No newline at end of file
package com.freemud.sdk.api.assortment.order.adapter;
import cn.freemud.base.constant.Version;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO;
......@@ -905,8 +906,31 @@ public class OrderSdkAdapter {
List<OrderItemResp> materialProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
materialProducts.forEach(material -> productBean.getMaterialProduct().add(getOldOrderProduct(orderSettlementResps, material)));
}
if(StringUtils.isNotEmpty(productBean.getExtInfo())) {
OrderProductAddInfoDto extInfo = JSONObject.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
productBean.setIsSendGoods(null == extInfo.getIsSendGoods() ? false : extInfo.getIsSendGoods());
productBean.setCartGoodsUid(StringUtils.isEmpty(extInfo.getCartGoodsUid()) ? "" : extInfo.getCartGoodsUid());
productBean.setOriginalGoodsUid(StringUtils.isEmpty(extInfo.getOriginalGoodsUid()) ? "" : extInfo.getOriginalGoodsUid());
}
productList.add(productBean);
}
if(null != productList && productList.size() >0) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean sendProductBean : productList) {
sendProductBean.setIsPrint(true);
if(null !=sendProductBean.getIsSendGoods() && sendProductBean.getIsSendGoods() && StringUtils.isNotEmpty(sendProductBean.getOriginalGoodsUid())){
sendProductBean.setIsPrint(false);
}
if (null !=sendProductBean.getIsSendGoods() && null !=sendProductBean.getIsSendGoods() && !sendProductBean.getIsSendGoods()) {
sendProductBean.setSendProduct(productList.stream()
.filter(productBean -> productBean.getOriginalGoodsUid().equalsIgnoreCase(sendProductBean.getCartGoodsUid()) && productBean.getIsSendGoods() == true)
.map(o -> JSON.parseObject(JSON.toJSONString(o), QueryOrdersResponse.DataBean.OrderBean.ProductBean.class))
.collect(Collectors.toList()));
}
}
}
return productList;
}
......@@ -968,6 +992,7 @@ public class OrderSdkAdapter {
productDiscount.setCustomerCode("");
productDiscount.setAddInfo(orderSettlementResp.getExtInfo());
productDiscount.setProductId(orderSettlementResp.getProductId());
productDiscount.setExtInfo(orderSettlementResp.getExtInfo());
discountList.add(productDiscount);
}
}
......@@ -1416,6 +1441,9 @@ public class OrderSdkAdapter {
case "FULL_BUYM_SENDN":
type=230;
break;
case "MONTH_CARD_TOTAL_DISCOUNT":
type=231;
break;
case "SINGLE_PRODUCT_REDUCTION":
type=22;
break;
......@@ -2035,6 +2063,9 @@ public class OrderSdkAdapter {
case 230:
newOrderAccountType=OldOrderAccountType.FULL_BUYM_SENDN.getCode();
break;
case 231:
newOrderAccountType=OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode();
break;
case 22:
newOrderAccountType=OldOrderAccountType.SINGLE_PRODUCT_REDUCTION.getCode();
break;
......
......@@ -43,6 +43,7 @@ public enum OldOrderAccountType {
NEW_USER_DISCOUNT(101, "新用户立减", "NEW_USER_DISCOUNT"),
PRICE_DEDUCTION_COUPON(103, "抵价券", "PRICE_DEDUCTION_COUPON"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT"),
MONTH_CARD_TOTAL_DISCOUNT(231, "月享卡优惠总金额", "MONTH_CARD_TOTAL_DISCOUNT"),
GATHER_SPOT(221, "集点活动","GATHER_SPOT"),
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券","COCO_PRODUCT_CASH_COUPON"),
......
......@@ -37,6 +37,7 @@ public enum QueryOrderAccountType {
CARD_DISCOUNT_AMOUNT("CARD_DISCOUNT_AMOUNT", "会员卡优惠金额"),
XY_DISCOUNT("XY_DISCOUNT", "x件y折"),
TOTAL_DISCOUNT("TOTAL_DISCOUNT", "优惠总金额"),
MONTH_CARD_TOTAL_DISCOUNT("MONTH_CARD_TOTAL_DISCOUNT", "月享卡优惠总金额"),
ONLINE_PAY("ONLINE_PAY", "线上支付"),
FULL_DISTRIBUTION_FEE("FULL_DISTRIBUTION_FEE", "满减配送费"),
OFFLINE_PAY("OFFLINE_PAY", "线下支付"),
......
......@@ -14,6 +14,7 @@ package com.freemud.sdk.api.assortment.order.response.order;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.rabbitmq.tools.json.JSONUtil;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.builder.ToStringBuilder;
......@@ -665,6 +666,11 @@ public class QueryOrdersResponse {
public List<ProductBean> materialProduct;
/**
* 赠品
*/
public List<ProductBean> sendProduct;
/**
* 商品拓展字段extInfo转换对象接收
*/
public List<ProductExtInfo> productExtInfo;
......@@ -679,6 +685,11 @@ public class QueryOrdersResponse {
*/
private String originalGoodsUid;
/**
* 是否打印
*/
private Boolean isPrint;
@NoArgsConstructor
@Data
public static class ProductDiscount {
......@@ -716,6 +727,8 @@ public class QueryOrdersResponse {
private String addInfo;
private String productId;
private String extInfo;
}
@NoArgsConstructor
......@@ -733,6 +746,11 @@ public class QueryOrdersResponse {
}
/**
* 是否是赠品
*/
private Boolean isSendGoods;
}
@NoArgsConstructor
......
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.2.6.RELEASE</version>
<version>1.2.7.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -15,4 +15,5 @@
| 1.2.3.RELEASE| 麦咖啡商品券门槛金额字段| 孙昱 | 2021-02-04 |
| 1.2.4.RELEASE| 多小料| 刘鹏飞 | 2021-03-03 |
| 1.2.5.RELEASE| 频次券| 梁崇福 | 2021-03-09 |
| 1.2.6.RELEASE| 多规格加料校验| 梁崇福 | 2021-03-25 |
\ No newline at end of file
| 1.2.6.RELEASE| 多规格加料校验| 梁崇福 | 2021-03-25 |
| 1.2.7.RELEASE| 麦咖啡月享卡2.0| 孙昱 | 2021-04-15 |
......@@ -80,7 +80,13 @@ public class CartGoods {
/**
* 是否为种子券商品 1:是;0:否
*/
private int isSeedCouponGoods;
private int isMonthCardGoods;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private int isUseMonthCard;
/**
* 是否是太阳蛋商品
*/
......@@ -314,6 +320,12 @@ public class CartGoods {
* 月享卡类型:1.月享卡(单商品购买);2.月享卡(多商品购买);3.普通月卡
*/
private Integer type;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private int isUseMonthCard;
}
@Data
......
......@@ -46,7 +46,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.1.48-RELEASE</version>
<version>2.1.51-RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import cn.freemud.service.Orderservice;
import cn.freemud.service.SpellGroupOrderService;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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.RestController;
/**
* @author wanghanghang
* @title: SpellGroupOrderController
* @projectName order-group
* @description: 拼团订单Controller
* @date 2021/4/16上午9:50
*/
@RequestMapping("/order")
@RestController
public class SpellGroupOrderController {
@Autowired
private SpellGroupOrderService spellGroupOrderService;
@ApiOperation(value = "创建拼团订单", notes = "创建拼团订单", produces = "application/json")
@ApiAnnotation(logMessage = "createSpellGroupOrder")
@PostMapping("/createSpellGroupOrder")
public BaseResponse createSpellGroupOrder(@Validated @LogParams @RequestBody CreateSpellGroupOrderReq request) {
return spellGroupOrderService.createSpellGroupOrder(request);
}
}
package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import lombok.Data;
import java.util.List;
......@@ -60,8 +62,6 @@ public class ActivityCalculationDiscountResponseDto {
* 使用到的优惠券及优惠金额
*/
private List<CouponResults> couponDiscounts;
/**
* 多种优惠方案计算出的优惠集合,并按优惠力度倒序排列
*/
......@@ -73,6 +73,11 @@ public class ActivityCalculationDiscountResponseDto {
*/
List<ActivityPrompt> activityPrompts;
/**
* 活动集合
*/
List<ActivityUpdateStockRequest.StockBeanDto> stocks;
@Data
public static class ActivityPrompt {
......
package cn.freemud.entities.dto;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountGoodsDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResultDto;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import lombok.Data;
import java.util.List;
/**
* @author freemud
* @title: CreateSpellGroupOrderDto
* @projectName order-group
* @description: TODO
* @date 2021/4/14下午2:36
*/
@Data
public class CreateSpellGroupOrderDto extends CreateSpellGroupOrderReq {
/**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
// public UserDeliveryInfoDto userDeliveryInfoDto;
/**
*当前用户id
*/
private String userId;
/**
*当前用户昵称
*/
private String nickName;
/**
*存储送货地址信息
*/
List<DeliveryContactInfoCreateReq> deliveryContactInfoCreateReqList;
/**
* 存储商品信息
*/
private List<ProductInfo> products;
/**
* 存储促销返回商品算价信息
*/
private ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto;
/**
* 门店信息
*/
private StoreResponse storeResponse;
}
......@@ -87,4 +87,9 @@ public class CalculationDiscountRequestDto {
* saas-自提 saasdelivery-外卖 saasmall-微商城 ....
*/
private String productChannel;
/**
* 拼团活动是,必传活动号
*/
private String groupActivityCode;
}
package cn.freemud.entities.dto.promotion;
import lombok.Data;
/**
* @author freemud
* @title: GroupWorkQueryDto
* @projectName order-group
* @description: TODO
* @date 2021/4/19下午2:53
*/
@Data
public class GroupWorkQueryDto {
/**
* 活动名称
*/
private String activityName;
/**
* 活动开始时间如:2021-04-15 00:00:00
*/
private String startTime;
/**
* 活结束时间如:2021-04-20 23:59:59
*/
private String endTime;
/**
* 团状态:0-正常,1-非正常
*/
private Integer status;
/**
* 差多少人成团
*/
private String lessPeople;
}
package cn.freemud.entities.dto.promotion;
import lombok.Data;
/**
* @author wanghanghang
* @title: GroupWorkQueryReqVo
* @projectName order-group
* @description: TODO
* @date 2021/4/19下午2:11
*/
@Data
public class GroupWorkQueryRequest {
/**
* 商户号
*/
private String partnerId;
/**
* 活动号
*/
private String activityCode;
/**
* 团号 创建订单前不用传,创建后必传
*/
private String groupId;
/**
* 商品id
*/
private String goodId;
/**
* 用户id
*/
private String userId;
/**
* 昵称
*/
private String userName;
/**
* 订单
*/
private String orderId;
}
package cn.freemud.entities.dto.promotion;
import lombok.Data;
/**
* @author freemud
* @title: GroupWorkQueryResponse
* @projectName order-group
* @description: TODO
* @date 2021/4/19下午2:48
*/
@Data
public class GroupWorkQueryResponse {
private String code;
private String message;
private String ver;
private GroupWorkQueryDto result;
}
......@@ -107,6 +107,11 @@ public class ShoppingCartGoodsDto {
*/
private Long payCardFee;
/**
* 月享卡总优惠金额
*/
private MonthCardDiscount monthCardDiscount;
@Data
public static class CartGoodsDetailDto {
/**
......@@ -356,4 +361,28 @@ public class ShoppingCartGoodsDto {
private Integer type;
}
@Data
public static class MonthCardDiscount {
/**
* 月享卡2.0优惠总额
*/
private Long discountAmount;
/**
* 月享卡券号
*/
private String couponCode;
/**
* 券标识
*/
private String couponLogo;
/**
* 优惠标识
*/
private String discountLogo;
/**
* 优惠描述
*/
private String discountDesc;
}
}
package cn.freemud.entities.vo;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author wanghanghang
* @title: CreateSpellGroupOrderReq
* @projectName order-group
* @description: 创建拼团订单request
* @date 2021/4/14上午9:52
*/
@Data
public class CreateSpellGroupOrderReq {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
/**
* 参与拼团编号->团编号
*/
private String spellGroupCode;
@NotEmpty(message = "门店ID 不能为空")
private String storeId;
@NotEmpty(message = "商户号 不能为空")
private String partnerId;
@Builder.Default
private String menuType = "saasmall";
/**
* 渠道类型 OrderChannelType
*/
private String channelType = "saasmall";
/*下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举*/
private Integer orderClient;
/**
* 下单支付渠道类型
*/
@NotNull(message = "下单支付渠道类型不能为空")
private Byte payChannelType;
/**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/
@Builder.Default
private Integer orderType = 3;
/**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
@Builder.Default
private Integer marketingType = 2;
/**
* 收货地址ID
*/
@NotEmpty(message = "收货地址ID不能为空")
private String receiveId;
/**
* 拼团活动号
*/
@NotEmpty(message = "拼团活动号不能为空")
private String activityCode;
/**
* 拼团商品集合,本次只会传入一条
*/
@NotNull(message = "拼团商品信息不能为空")
private List<SpellGroupProduct> spellGroupProductList;
/**
* 订单备注,预留字段
*/
private String orderRemark;
/**
* 城市编号。用于查询配送费
*/
private String province;
/**
* 拼团商品
*/
@Data
public static class SpellGroupProduct {
private String productId;
private Integer productQuantity;
}
}
......@@ -114,6 +114,14 @@ public class QueryOrderResponseVo {
*/
private String freightCouponName;
/**
* 月享卡优惠总金额
*/
private Long monthCardTotalDiscount;
/**
* 月享卡优惠总金额
*/
private String monthCardTotalDiscountName;
/**
* 限时折扣优惠金额
*/
private Long discountLimitAmount;
......
......@@ -34,6 +34,7 @@ public enum ActivityTypeEnum {
TYPE_34(34, "运费券"),
TYPE_35(35, "买1赠3券"),
TYPE_37(37, "种子券"),
TYPE_38(38, "月享卡2.0"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......@@ -42,6 +43,7 @@ public enum ActivityTypeEnum {
TYPE_61(61, "单品买M赠N"),
TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"),
TYPE_231(231, "月享卡总优惠"),
/**
* 加价购
*/
......
......@@ -236,9 +236,22 @@ public enum ResponseResult {
* coco券验证失败
*/
COCO_COUPON_VALIDATOR_FAIL("70000", "优惠券验证错误"),
;
/**
* 拼团订单状态码 80001 - 80101
*/
SPELL_GROUP_THE_CLUB_IS_FULL("80001", "拼团已满员"),
SPELL_GROUP_CREAT_ORDER_ERROR("80002", "创建拼团订单失败"),
SPELL_GROUP_ACTIVITE_AMOUNT_ERROR("80003", "返回的价格是商品原价,则表示库存不足或者活动关闭"),
SPELL_GROUP_QUERY_ORDER_RECEIVE_ADDRESS_ERROR("80004", "获取地址信息异常"),
SPELL_GROUP_QUERY_PRODUCT_INFOS_ERROR("80005", "获取商品信息异常"),
SPELL_GROUP_QUERY_CALCULATION_DISCOUNT_ERROR("80006", "获取算价信息异常"),
SPELL_GROUP_QUERY_GROUP_WORK_ERROR("80007", "查询拼团信息异常"),
SPELL_GROUP_QUERY_GROUP_STATUS_IS_NOT_NORMAL("80008", "团状态非正常"),
;
private String code;
......
package cn.freemud.manager;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.CreateSpellGroupOrderDto;
import cn.freemud.entities.dto.GetProductInfoDto;
import cn.freemud.entities.dto.ProductInfosDto;
import cn.freemud.entities.dto.product.ProductInfo;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkQueryResponse;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.thirdparty.PromotionDiscountClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @author wanghanghang
* @title: SpellGroupOrderDataManager
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午3:45
*/
@Component
public class SpellGroupOrderDataManager {
@Autowired
private StoreItemClient storeItemClient;
@Autowired
private PromotionDiscountClient promotionDiscountClient;
//会员SDK
@Autowired
private MemberCenterService memberCenterService;
//门店SDK
@Autowired
private StoreCenterService storeCenterService;
/**
* 查询门店信息
*/
public StoreResponse getStoreInfo(String partnerId, String shopId, String trackingNo) {
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, shopId, null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
if (storeResponse == null || storeResponse.getBizVO() == null) {
return null;
}
return storeResponse;
}
/**
* 查询地址信息
*
* @param receiveId
* @param partnerId
* @param trackingNo
* @return
*/
public QueryReceiveAddressResponse queryOrderReceiveAddress(String receiveId, String partnerId, String trackingNo) {
QueryReceiveAddressRequest request = new QueryReceiveAddressRequest(receiveId, partnerId);
BaseResponse<QueryReceiveAddressResponse> queryReceiveAddressResponse = memberCenterService.queryReceiveAddressById(request, trackingNo);
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
return null;
}
QueryReceiveAddressResponse receiveAddressResult = queryReceiveAddressResponse.getData();
return receiveAddressResult;
}
/**
* 查询商品信息
*
* @param createSpellGroupOrderDto
* @return
*/
public List<ProductInfo> queryProductInfos(CreateSpellGroupOrderDto createSpellGroupOrderDto) {
GetProductInfoDto getProductInfoReq = new GetProductInfoDto();
List<String> proIds = new ArrayList<>();
createSpellGroupOrderDto.getSpellGroupProductList().forEach(proInfo -> {
proIds.add(proInfo.getProductId());
});
getProductInfoReq.setProductIds(proIds);
getProductInfoReq.setPartnerId(createSpellGroupOrderDto.getPartnerId());
getProductInfoReq.setShopId(createSpellGroupOrderDto.getStoreId());
getProductInfoReq.setProductInfoType(1);
ProductInfosDto productInfosReps = storeItemClient.listProductInfos(getProductInfoReq);
if (!ResponseResult.SUCCESS.getCode().equals(productInfosReps.getErrcode().toString()) || productInfosReps.getData() == null) {
return null;
}
return productInfosReps.getData().getProducts();
}
/**
* 查询算价信息
*
* @param calculationDiscountRequestDto
* @return
*/
public ActivityCalculationDiscountResponseDto queryCalculationDiscount(CalculationDiscountRequestDto calculationDiscountRequestDto) {
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = promotionDiscountClient.calculationDiscountSharing(calculationDiscountRequestDto);
if (!ResponseResult.SUCCESS.getCode().equals(activityCalculationDiscountResponseDto.getStatusCode()) || activityCalculationDiscountResponseDto.getResult() == null) {
return null;
}
return activityCalculationDiscountResponseDto;
}
/**
* 查询团信息
*
* @param groupWorkQueryRequest
* @return
*/
public GroupWorkQueryResponse groupWorkQuery(GroupWorkQueryRequest groupWorkQueryRequest) {
GroupWorkQueryResponse groupWorkQueryResponse = promotionDiscountClient.groupWorkQuery(groupWorkQueryRequest);
if (!ResponseResult.SUCCESS.getCode().equals(groupWorkQueryResponse.getCode()) || groupWorkQueryResponse.getResult() == null) {
return null;
}
return groupWorkQueryResponse;
}
}
......@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.*;
import com.freemud.sdk.api.assortment.order.enums.OrderSdkType;
import java.util.Map;
......@@ -154,6 +155,7 @@ public interface Orderservice {
BaseResponse queryTodayOrders(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo);
/**
* 拼团失败退款
* @param refundVo
......
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
/**
* @author wanghanghang
* @title: SpellGroupOrderService
* @projectName order-group
* @description: TODO
* @date 2021/4/15下午9:01
*/
public interface SpellGroupOrderService {
/**
* 创建拼团订单
* @param createSpellGroupOrderReq
* @return
*/
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq);
}
......@@ -562,4 +562,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
log.error("调用生态返回参数失败,订单编号:{},失败原因:{}",orderId,e.getMessage());
}
}
}
......@@ -80,15 +80,8 @@ import java.util.stream.Collectors;
public class CheckMCCafeOrder {
@Autowired
private StoreTableNumberManager storeTableNumberManager;
@Autowired
private AssortmentOpenPlatformIappWxappConfigManager openPlatformIappWxappConfigManager;
@Autowired
private AssortmentOpenPlatformPartnerStoreDeliveryConfigManager deliveryConfigManager;
// 缓存取用户数据用
// @Autowired
// private UserServiceImpl userService;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
//门店SDK
@Autowired
......@@ -101,23 +94,15 @@ public class CheckMCCafeOrder {
private MemberPropertyService memberPropertyService;
@Autowired
private ShoppingCartClient shoppingCartClient;
// @Autowired
// private OrderAdapter orderAdapter;
@Autowired
private StoreServiceImpl storeService;
@Autowired
private StockClient stockClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired
private CouponService couponService;
@Autowired
private CouponClientService couponClientService;
@Autowired
private DeliveryFeiginMCCafeClient deliveryFeiginMCCafeClient;
@Autowired
private DeliveryServiceFeiginMCCafeClient deliveryServiceFeiginMCCafeClient;
@Value("${mcCafe.withOrderBuy.cardId}")
private String withOrderBuyCardId;
@Value("${mccafe.universal.coupon.code}")
private String withOrderBuyCouponCode;
......@@ -563,8 +548,17 @@ public class CheckMCCafeOrder {
}
List<MCCafeCouponVo> mcCafeCouponVos = new ArrayList<>();
Map<String, String> mcCafeUsedCoupon = new HashMap<>();
List<String> seedCardList = shoppingCartGoodsDto.getProducts().stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType()))
.map(o -> o.getMonthCardInfo().getCardCode()).collect(Collectors.toList());
List<String> seedCardList = new ArrayList<>();
shoppingCartGoodsDto.getProducts().stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType()))
.forEach(o -> {
if(o.getMonthCardInfo() == null) {
ShoppingCartGoodsDto.MonthCardVo monthCardVo = new ShoppingCartGoodsDto.MonthCardVo();
monthCardVo.setCardCode(withOrderBuyCouponCode);
monthCardVo.setCardNo(withOrderBuyCardId);
o.setMonthCardInfo(monthCardVo);
}
seedCardList.add(o.getMonthCardInfo().getCardCode());
});
seedCardList.add(withOrderBuyCouponCode);
if(CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getActivityDiscountsDtos())) {
shoppingCartGoodsDto.getActivityDiscountsDtos().forEach(o-> {
......
......@@ -52,6 +52,7 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
......@@ -917,6 +918,8 @@ public class CheckOrder {
}
public void checkCardCode(String partnerId, String memberId, String cardCode) {
if (StringUtils.isBlank(cardCode)) {
return;
......
......@@ -593,8 +593,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
*/
public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
OrderExtendedReq orderExtendedReq, OrderClientType orderClient,String appId) {
processRepeatGoodsWithSeedCoupon(shoppingCartGoodsDto);
log.info("购物车拆行:"+JSON.toJSONString(shoppingCartGoodsDto));
// processRepeatGoodsWithSeedCoupon(shoppingCartGoodsDto);
// log.info("购物车拆行:"+JSON.toJSONString(shoppingCartGoodsDto));
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
......@@ -903,7 +903,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// }
//麦咖啡随单购咖啡月卡
if(withOrderBuyCoupon(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
if(withOrderBuyCoupon2(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
orderBean = getOrderBean(confirmOrderDto);
}
......@@ -1739,4 +1739,115 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return true;
}
/**
* 月享卡2.0发券
* @param orderBean
*/
public boolean withOrderBuyCoupon2(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
LogUtil.info("发券入参:", thirdPartyMemberId, JSON.toJSONString(orderBean));
try{
List<String> cardIds = new ArrayList<>();
List<String> defaultCardCodes = new ArrayList<>();
for (OrderBean.ProductBean productBean : orderBean.getProductList()){
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
for(int i=0;i<productBean.getNumber();i++) {
cardIds.add(extInfo.getCardId());
}
defaultCardCodes.add(extInfo.getCardCode());
}
}
if(CollectionUtils.isEmpty(cardIds)){
return false;
}
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
request.setReceivedId(orderBean.getOid());
request.setCardIds(cardIds);
request.setThirdPartyMemberId(thirdPartyMemberId);
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto));
return false;
}
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return false;
}
List<SendCouponForqujiaDtoResponseDto.Card> cardList = responseDto.getData().getCard_list();
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(88)
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode())
.partnerId(Integer.parseInt(orderBean.getCompanyId()))
.store_id(orderBean.getShopId())
.station_id("1")
.operator_id(orderBean.getUserId())
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.couponlist(cardList.stream().map(o -> new MCCafeCouponVo(o.getCard_code())).collect(Collectors.toList()))
.sign("skip")
.build();
McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponClientService.batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("获取优惠券详情失败,发券失败", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return false;
}
Map<String, Integer> cardStatusMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, McdNetBatchQueryResponse.Coupon::getStatusCode, (k1, k2) -> k1));
Map<String, String> cardMap = new HashMap<>();
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid());
req.setPartnerId(orderBean.getCompanyId());
req.setCouponReceiveInfoList(new ArrayList<>());
req.setCouponUpdateInfoList(new ArrayList<>());
LogUtil.info("准备开始生成参数:", orderBean, null);
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
UpdateCouponCodeReq.CouponReceiveInfo couponReceiveInfo = new UpdateCouponCodeReq.CouponReceiveInfo();
couponReceiveInfo.setGoodsId(productBean.getSpecification());
couponReceiveInfo.setProductSeq(productBean.getSequence());
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
String cardCodeStr = "";
numberFor:
for(int j=0;j<productBean.getNumber();j++) {
cardFor:
for(int i=0;i<cardList.size();i++) {
if(cardList.get(i).getCard_id().equals(extInfo.getCardId())) {
String couponCode = cardList.get(i).getCard_code();
cardCodeStr += couponCode+"/";
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(cardStatusMap.get(couponCode))) {
if(cardMap.get(extInfo.getCardCode()) == null) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setOldCouponCode(extInfo.getCardCode());
couponUpdateInfo.setCouponCode(couponCode);
req.getCouponUpdateInfoList().add(couponUpdateInfo);
cardMap.put(extInfo.getCardCode(), couponCode);
}
}
cardList.remove(i);
break cardFor;
}
}
}
couponReceiveInfo.setCouponCode(cardCodeStr.substring(0, cardCodeStr.length()-1));
req.getCouponReceiveInfoList().add(couponReceiveInfo);
}
}
LogUtil.info("生成参数完成:", req, null);
orderSdkService.updateCostCouponCodeNew(req, LogTreadLocal.getTrackingNo());
return true;
} catch (Exception e){
LogUtil.error("发券异常", null, null, e);
}
return true;
}
}
......@@ -44,18 +44,25 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup;
import cn.freemud.entities.dto.product.ProductGroup;
import cn.freemud.entities.dto.product.*;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.enums.AfterSalesOrderCreateEventEnum;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.PayRefundStatus;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.QueryOrderStatus;
import cn.freemud.enums.RefundStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.OrderType;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.manager.SpellGroupOrderDataManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.coupon.CouponRelationFactory;
......@@ -67,6 +74,16 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponLockRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponLockResponse;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.stockapi.request.UpdateStocksRequest;
import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import jdk.nashorn.internal.runtime.ECMAException;
import com.alibaba.fastjson.TypeReference;
......@@ -91,6 +108,10 @@ import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
......@@ -175,6 +196,8 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
@Service
@Slf4j
......@@ -382,6 +405,16 @@ public class OrderServiceImpl implements Orderservice {
return this.createPrepayOrder(createPrepayRequestDto);
}
public CreateOrderResponse getCreateOrderResponse(String code, String message, QueryOrdersResponse.DataBean.OrderBean data) {
CreateOrderResponse baseOrderResponse = new CreateOrderResponse();
baseOrderResponse.setErrcode(Integer.valueOf(code));
baseOrderResponse.setErrmsg(message);
baseOrderResponse.setData(data);
return baseOrderResponse;
}
/**
* 扫脸支付下单
*/
......@@ -743,7 +776,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
//订单状态
Integer status = orderBean.getRefundList().get(0).getStatus();
if (!Objects.equals(RefundStatus.ALREADY_REFUND.getCode(), status)) {
//不是退款中处理不处理
......
......@@ -12,10 +12,16 @@
*/
package cn.freemud.service.thirdparty;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.ActivityQueryRequestDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountRequestDto;
import cn.freemud.entities.dto.promotion.CalculationDiscountResponseDto;
import cn.freemud.entities.dto.promotion.GroupWorkQueryRequest;
import cn.freemud.entities.dto.promotion.GroupWorkQueryResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
......@@ -23,8 +29,17 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface PromotionDiscountClient {
/**无人使用,注释掉。**/
// @PostMapping("/calculation/discount/sharing")
// CalculationDiscountResponseDto discountSharing(@RequestBody CalculationDiscountRequestDto calculationDiscountRequestDto);
/**
* 新版优惠均摊计算
* @param calculationDiscountRequestDto
* @return
*/
@PostMapping("/calculation/discount/sharing")
CalculationDiscountResponseDto discountSharing(@RequestBody CalculationDiscountRequestDto calculationDiscountRequestDto);
ActivityCalculationDiscountResponseDto calculationDiscountSharing(CalculationDiscountRequestDto calculationDiscountRequestDto);
/**
* 统一活动查询接口
......@@ -38,4 +53,14 @@ public interface PromotionDiscountClient {
@PostMapping("/calculation/discount")
CalculationDiscountResponseDto calculationDiscount(CalculationDiscountRequestDto calculationDiscountRequestDto);
/**
* 查询团信息
* @param groupWorkQueryRequest
* @return
*/
@PostMapping("/groupWork/query")
GroupWorkQueryResponse groupWorkQuery(GroupWorkQueryRequest groupWorkQueryRequest);
}
package cn.freemud.controller;
import cn.freemud.OrderApplication;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
import com.alibaba.fastjson.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
/**
* @author freemud
* @title: SpellGroupOrderControllerTest
* @projectName order-group
* @description: TODO
* @date 2021/4/16下午3:58
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = OrderApplication.class)
public class SpellGroupOrderControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
/**
* 创建订单
*/
@Test
public void createOrder() {
CreateSpellGroupOrderReq createSpellGroupOrderReq = new CreateSpellGroupOrderReq();
// createSpellGroupOrderReq.setSessionId();
// createSpellGroupOrderReq.setSpellGroupCode();
// createSpellGroupOrderReq.setStoreId("3536");
// createSpellGroupOrderReq.setPartnerId("1864");
// createSpellGroupOrderReq.setMenuType();
// createSpellGroupOrderReq.setChannelType();
// createSpellGroupOrderReq.setOrderClient();
// createSpellGroupOrderReq.setPayChannelType();
// createSpellGroupOrderReq.setOrderType();
// createSpellGroupOrderReq.setMarketingType();
// createSpellGroupOrderReq.setReceiveId();
// createSpellGroupOrderReq.setActivityCode();
// createSpellGroupOrderReq.setSpellGroupProductList();
// createSpellGroupOrderReq.setOrderRemark();
String str = JSONObject.toJSONString(createSpellGroupOrderReq);
try {
mockMvc.perform(post("/order/createSpellGroupOrder").content(str).
contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print()).
andExpect(jsonPath("$.code").value("100"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.3.44.RELEASE</version>
<version>1.3.46.RELEASE</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -75,4 +75,6 @@
| 1.3.41.RELEASE | 美业 | 刘鹏飞 | 2021-03-12 |
| 1.3.42.RELEASE | 三方展示活动信息 | 张志恒 | 2021-03-22 |
| 1.3.43.RELEASE | 小助手刷卡支付 | 王航航 | 2021-03-31 |
| 1.3.44.RELEASE | 新增支付号升级SDK | 王航航 | 2021-04-06 |
\ No newline at end of file
| 1.3.44.RELEASE | 新增支付号升级SDK | 王航航 | 2021-04-06 |
| 1.3.45.RELEASE | 月享卡2.0 | 徐康 | 2021-04-15 |
| 1.3.46.RELEASE | 更新sdk | 徐康 | 2021-04-19 |
\ No newline at end of file
......@@ -231,6 +231,7 @@ public class InterfaceAddressConstant {
* 修改费用表购买的优惠券和优惠表使用的优惠券
*/
public static final String UPDATE_COST_COUPONCODE = "/order/v2/mcCafe/updateCostCouponCode";
public static final String UPDATE_COST_COUPONCODE_NEW = "/order/v2/mcCafe/updateCostCouponCodeNew";
/**
* 查询使用了优惠券的订单数量
......
......@@ -31,6 +31,7 @@ public enum OrderSettlementType {
FULL_DELIVERY_FEE(16, "满免配送费"),
ITEM_DISCOUNT(20, "单品折扣"),
BUY_GIFT(23,"买赠"),
SPELL_GROUP(25,"拼团"),
TAKEAWAY_ADD_PRICE(46, "外卖加价购"),
SUPER_PURCHASE(47, "超值加购"),
PRODUCT_COUPON(118, "商品券"),
......
......@@ -25,4 +25,6 @@ public class OrderExtendedReq {
//订单门店英文名称
private String storeNameEn;
private String spellGroupCode;
}
......@@ -902,6 +902,19 @@ public class OrderSdkService {
}
/**
* 修改费用表购买的优惠券和优惠表使用的优惠券
* @param request
* @param trackingNo
* @return
*/
public BaseResponse updateCostCouponCodeNew(UpdateCouponCodeReq request, String trackingNo) {
OrderBaseResp responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, UPDATE_COST_COUPONCODE_NEW,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp>() {
});
return responseHandle(responseDTO);
}
/**
* 查询使用了特定优惠券的订单数量
* @param request
* @param trackingNo
......
......@@ -45,7 +45,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.2.6.RELEASE</version>
<version>1.2.7.RELEASE</version>
</dependency>
<!-- 再来一单查询订单信息 -->
<dependency>
......
......@@ -331,8 +331,11 @@ public class ShoppingCartMccafeAdapter {
* 1. 商品券:cartGoodsDetailDto.couponCode非空,保留ApportionGoods#ApportionDetails#apportionType中32的
* 2. 普通商品:cartGoodsDetailDto.couponCode空,去掉32的
*/
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails> apportionDetails = apportionGoods.getApportionDetails().stream().filter(detail -> !detail.getActivityType().equals(ActivityTypeEnum.TYPE_32.getCode())
&& !detail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode()) && !detail.getActivityType().equals(ActivityTypeEnum.TYPE_2.getCode()) && !detail.getActivityType().equals(ActivityTypeEnum.TYPE_21.getCode())).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails> apportionDetails = apportionGoods.getApportionDetails().stream()
.filter(detail -> !detail.getActivityType().equals(ActivityTypeEnum.TYPE_32.getCode())
&& !detail.getActivityType().equals(ActivityTypeEnum.TYPE_37.getCode())
&& !detail.getActivityType().equals(ActivityTypeEnum.TYPE_38.getCode()) && !detail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())
&& !detail.getActivityType().equals(ActivityTypeEnum.TYPE_2.getCode()) && !detail.getActivityType().equals(ActivityTypeEnum.TYPE_21.getCode())).collect(Collectors.toList());
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails detail : apportionDetails) {
List<ActivityDiscountsDto> currentDiscount = activityDiscountsDtoList.stream().filter(discount -> ObjectUtils.equals(discount.getActivityCode(), detail.getActivityCode())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(currentDiscount)) {
......
......@@ -88,10 +88,6 @@ public class ActivityCalculationDiscountRequestDto {
*/
private String activityCode;
/**
* 是否为种子券商品
*/
private Integer isSeedCouponGoods;
/**
* 购物车商品行uid(种子券商品才传)
*/
private String cartGoodsUid;
......
......@@ -57,6 +57,12 @@ public class ActivityCalculationDiscountResponseDto {
* 总的优惠信息集合
*/
private List<Discount> discounts;
/**
* 月享卡2.0优惠
*/
private MonthCardDiscount monthlyEnjoyCardDiscount;
/**
* 商品优惠信息
*/
......@@ -115,6 +121,30 @@ public class ActivityCalculationDiscountResponseDto {
private SendPoint sendPointVo;
@Data
public static class MonthCardDiscount{
/**
* 月享卡2.0优惠总额
*/
private Long discountAmount;
/**
* 月享卡券号
*/
private String couponCode;
/**
* 券标识
*/
private String couponLogo;
/**
* 优惠标识
*/
private String discountLogo;
/**
* 优惠描述
*/
private String discountDesc;
}
@Data
public static class ActivityPrompt {
......
package cn.freemud.entities.dto.shoppingCart;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.OrderProductAddInfo;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
......@@ -92,6 +93,12 @@ public class ShoppingCartGoodsDto {
* 订单享受的促销活动
*/
private List<ActivityDiscountsDto> activityDiscountsDtos;
/**
* 月享卡2.0优惠集合
*/
private ActivityCalculationDiscountResponseDto.CalculationDiscountResult.MonthCardDiscount monthCardDiscount;
/**
* 扣减库存
*/
......
......@@ -41,4 +41,17 @@ public class BatchOperateCartGoodsRequestVo extends BaseRequestVo{
*/
private List<BatchGoodsInfoVo> goodsInfos;
/**
* 根据券号清除当前购物车中月卡及商品信息
*/
private String redundancyCouponCode;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private int isUseMonthCard;
}
\ No newline at end of file
......@@ -238,15 +238,15 @@ public class CartGoods {
/**
* 是否是月享卡商品
*/
private int isMonthCard;
private int isMonthCard = 0;
/**
* 是否是太阳蛋商品
*/
private int isSunnyCoupon=0;
/**
* 是否为种子券商品 1:是;0:否
* 是否为月享卡商品 1:是;0:否
*/
private int isSeedCouponGoods;
private int isMonthCardGoods = 0;
/**
* 月享卡信息
*/
......
package cn.freemud.entities.vo;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@Data
public class ClearCouponCodeRequestVo extends BaseRequestVo {
@NotEmpty(message = "券号不可为空")
private String redundancyCouponCode;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private int isUseMonthCard;
}
......@@ -29,4 +29,10 @@ public class MonthCardVo {
* 月享卡类型:1.月享卡(单商品购买);2.月享卡(多商品购买);3.普通月卡
*/
private Integer type;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private int isUseMonthCard = 1;
}
......@@ -69,6 +69,13 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* 优惠券code列表
*/
private List<couponCode> couponCodes;
/**
* 是否使用月享卡2.0
* 1 是
* 0 否
*/
private Integer isUseMonthCard = 1;
/**
* 优惠券对应的活动号
*/
......
......@@ -36,6 +36,7 @@ public enum ActivityTypeEnum {
TYPE_32(32, "商品券"),
TYPE_33(33, "换购券"),
TYPE_37(37, "月享卡种子券"),
TYPE_38(38,"月享卡2.0"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......
......@@ -102,7 +102,6 @@ public enum ResponseResult {
SHOPPING_CART_BUY_ONE_SEND_GOODS_ERR("44033", "寄件活动商品错误"),
SHOPPING_CART_COUPON_MIX_NOT_EXIST("44034", "券商品不存在"),
SHOPPING_CART_QTY_LIMIT_ERR("44035", "该商品单次购买数量限制为10,请知晓"),
SHOPPING_CART_SEED_COUPON_VALID("44037","券商品数量不可大于券数量"),
SHOPPING_CART_MATERIA_QTY_LIMIT_ERR("44038", "商品加料超过最大限制"),
/**
......
......@@ -145,9 +145,17 @@ public class CouponPromotionService implements IPromotionService {
cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
if (CollectionUtils.isNotEmpty(extra)){
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
} else {
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
}
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = calculationDiscountResult.getGoods()
.stream()
......
......@@ -142,8 +142,18 @@ public class CouponSharingService {
cartGoods.setQty(cartGoods.getQty());
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
if (CollectionUtils.isNotEmpty(extra)){
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
List<String> foreignSpecNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeForeignName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
cartGoods.setSubForeignName(StringUtils.join(foreignSpecNameList, "/"));
} else {
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
}
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = calculationDiscountResult.getGoods()
......@@ -196,10 +206,20 @@ public class CouponSharingService {
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpuForeignName(checkSpqInfoResponseDto.getSpuForeignName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setSubForeignName(checkSpqInfoResponseDto.getDefaultForeignSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
List<CartGoods.CartGoodsExtra> extra = cartGoods.getExtra();
if (CollectionUtils.isNotEmpty(extra)){
List<String> specIdList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeId).collect(Collectors.toList());
List<String> specNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeName).collect(Collectors.toList());
List<String> foreignSpecNameList = extra.stream().map(CartGoods.CartGoodsExtra::getAttributeForeignName).collect(Collectors.toList());
cartGoods.setSpecProductId(StringUtils.join(specIdList, "/"));
cartGoods.setSubName(StringUtils.join(specNameList, "/"));
cartGoods.setSubForeignName(StringUtils.join(foreignSpecNameList, "/"));
} else {
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setSubForeignName(checkSpqInfoResponseDto.getDefaultForeignSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
}
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = discountResult.getGoods()
.stream()
......
......@@ -20,6 +20,7 @@ import cn.freemud.service.CommonService;
import cn.freemud.service.impl.ItemServiceImpl;
import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.utils.PropertyConvertUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
......@@ -197,7 +198,7 @@ public class CalculationServiceImpl {
calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getApportionGoods();
Map<String, String> duplicateGoodsMap = new HashMap<>();
cartGoodsList.stream().collect(Collectors.groupingBy(CartGoods::getGoodsId, Collectors.counting())).forEach((goodsId, count) -> {
cartGoodsList.stream().filter(cartGoods -> !StringUtils.equals(cartGoods.getSkuId(),"9999")).collect(Collectors.groupingBy(CartGoods::getGoodsId, Collectors.counting())).forEach((goodsId, count) -> {
duplicateGoodsMap.put(goodsId,String.format("%s,0", count));
});
for (int i = 0, len = cartGoodsList.size(); i < len; i++) {
......@@ -251,7 +252,7 @@ public class CalculationServiceImpl {
}
}
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts();
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts().stream().filter(p-> !StringUtils.equals("9999",p.getSkuId())).collect(Collectors.toList());
List<String> productIds = products.stream().map(t -> t.getSkuId()).collect(Collectors.toList());
//调用商品的接口获取商品键位
......@@ -405,9 +406,11 @@ public class CalculationServiceImpl {
calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount);
//新增咖啡月卡券券号
calculationDiscountGoods.setCouponCode(cartGoods.getCouponCode());
calculationDiscountGoods.setCartGoodsUid(cartGoods.getCartGoodsUid());
//新增咖啡月卡券券号,同一行商品才替换券号,防止不同商品券相同sku之间的覆盖
if (cartGoods.getCartGoodsUid().equals(calculationDiscountGoods.getCartGoodsUid())) {
calculationDiscountGoods.setCouponCode(StringUtils.isEmpty(cartGoods.getCouponCode()) ? null : cartGoods.getCouponCode());
}
ArrayList<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods.Material> materials = new ArrayList<>();
//可选搭配
......
......@@ -105,9 +105,9 @@ public class BatchGoodsInfoVo {
*/
private int isMonthCard;
/**
* 是否为种子券商品 1:是;0:否
* 是否为月享卡商品
*/
private int isSeedCouponGoods;
private int isMonthCardGoods;
/**
* 月享卡加购信息
*/
......
......@@ -144,9 +144,9 @@ public class MCoffeeAddGoodsRequestVo {
*/
private int isMonthCard;
/**
* 是否为种子券商品 1:是;0:否
* 是否为月享卡商品
*/
private int isSeedCouponGoods;
private int isMonthCardGoods;
/**
* 月享卡加购信息
*/
......
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