Commit 28cc8495 by 周晓航

Merge branch 'feature/20211021_加价购支持虚拟商品' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/adapter/ActivityAdapter.java
#	shopping-cart-application-service/src/main/java/cn/freemud/entities/dto/calculate/ActivityCalculationDiscountResponseDto.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/promotion/AdditionSharingService.java
parents 75023918 990f9b8b
...@@ -3154,6 +3154,10 @@ public class OrderSdkAdapter { ...@@ -3154,6 +3154,10 @@ public class OrderSdkAdapter {
extInfo.setNeedBonus(product.getNeedBonus()); extInfo.setNeedBonus(product.getNeedBonus());
} }
if (product.getExtInfo() != null) {
extInfo.setProductBindingCoupons(JSONArray.parseArray(product.getExtInfo(),ProductBindingCouponType.class));
}
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo)); orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
// 拼单加购人信息 add by miaohui 2020.10.12 start // 拼单加购人信息 add by miaohui 2020.10.12 start
......
...@@ -275,4 +275,6 @@ public class CreateOrderProductRequest extends BaseConfig { ...@@ -275,4 +275,6 @@ public class CreateOrderProductRequest extends BaseConfig {
//积分商品活动使用总积分 //积分商品活动使用总积分
private Long score; private Long score;
private String extInfo;
} }
...@@ -2148,6 +2148,18 @@ public class OrderAdapter { ...@@ -2148,6 +2148,18 @@ public class OrderAdapter {
return this.checkAdvanceOrder(orderBean.getGmtExpect()); return this.checkAdvanceOrder(orderBean.getGmtExpect());
} }
// 加价购选择虚拟商品券包,订单完成前可申请退款,完成之后不能申请退款
if (OrderStatus.COMPLETE.equals(status) && CollectionUtils.isNotEmpty(orderBean.getProductList())) {
for (ProductBeanV1 productBeanV1 : orderBean.getProductList()){
if(StringUtils.isNotEmpty(productBeanV1.getExtInfo())){
OrderProductAddInfoDto extInfo = JSONObject.parseObject(productBeanV1.getExtInfo(), OrderProductAddInfoDto.class);
if(CollectionUtils.isNotEmpty(extInfo.getProductBindingCoupons())){
return false;
}
}
}
}
boolean canRefund = false; boolean canRefund = false;
String hkey = OrderType.TAKE_OUT.getCode().equals(orderBean.getOrderType()) ? KgdRedisKeyConstant.REFUND_CFG_TAKE_OUT : KgdRedisKeyConstant.REFUND_CFG_EAT_IN; String hkey = OrderType.TAKE_OUT.getCode().equals(orderBean.getOrderType()) ? KgdRedisKeyConstant.REFUND_CFG_TAKE_OUT : KgdRedisKeyConstant.REFUND_CFG_EAT_IN;
String configStr = redisCache.hashGet(MessageFormat.format(KgdRedisKeyConstant.ORDER_REFUND_CONFIG, orderBean.getCompanyId(), wxAppId), hkey); String configStr = redisCache.hashGet(MessageFormat.format(KgdRedisKeyConstant.ORDER_REFUND_CONFIG, orderBean.getCompanyId(), wxAppId), hkey);
...@@ -2847,6 +2859,7 @@ public class OrderAdapter { ...@@ -2847,6 +2859,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setThirdCategoryId(cartGoodsDetailDto.getCustomerCategoryCode()); createOrderProductDemoDto.setThirdCategoryId(cartGoodsDetailDto.getCustomerCategoryCode());
createOrderProductDemoDto.setCategoryId(cartGoodsDetailDto.getNodeId()); createOrderProductDemoDto.setCategoryId(cartGoodsDetailDto.getNodeId());
createOrderProductDemoDto.setCategoryName(cartGoodsDetailDto.getCategoryName()); createOrderProductDemoDto.setCategoryName(cartGoodsDetailDto.getCategoryName());
createOrderProductDemoDto.setExtInfo(cartGoodsDetailDto.getExtInfo());
return createOrderProductDemoDto; return createOrderProductDemoDto;
} }
...@@ -4589,4 +4602,35 @@ public class OrderAdapter { ...@@ -4589,4 +4602,35 @@ public class OrderAdapter {
} }
return orderCompareAfterSaleOrder; return orderCompareAfterSaleOrder;
} }
/**
* 获取订单信息
*
* @param orderStatus
* @return
*/
public String getOrderStatusValue(Integer orderStatus) {
String name = "";
switch (orderStatus) {
case 1: {
name = "待审核";
break;
}
case 6: {
name = "审核通过";
break;
}
case 7: {
name = "审核未通过";
break;
}
case 8: {
name = "撤单";
break;
}
}
return name;
}
} }
...@@ -346,6 +346,8 @@ public class ShoppingCartGoodsDto { ...@@ -346,6 +346,8 @@ public class ShoppingCartGoodsDto {
*/ */
private String originalGoodsUid; private String originalGoodsUid;
private String extInfo;
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
/** /**
......
...@@ -366,6 +366,11 @@ public class CreateOrderVo { ...@@ -366,6 +366,11 @@ public class CreateOrderVo {
private String picture; private String picture;
/** /**
* 加价购 可能会涉及 虚拟商品 类型 = 9
*/
private Integer productType;
/**
* 原价 入参不需要传,做对象组装使用 * 原价 入参不需要传,做对象组装使用
*/ */
private Long originalPrice; private Long originalPrice;
......
...@@ -229,7 +229,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -229,7 +229,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
} }
//更新库存等信息 //更新库存等信息
BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(), BaseOrderResponse baseOrderResponse = updateStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(),
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest(),config.getBaseCreateOrderRequest().getMenuType(),config.getOpenId(),config.getBaseCreateOrderRequest().getTotalScore()); config.getBaseCreateOrderRequest().getAccounts(), config.getBaseCreateOrderRequest().getMenuType(),config.getOpenId(),config.getBaseCreateOrderRequest().getTotalScore());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) { if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null); return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
} }
...@@ -264,7 +264,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -264,7 +264,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
* @return * @return
*/ */
private BaseOrderResponse updateStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest, private BaseOrderResponse updateStockAndScore(OrderBeanV1 orderBean, List<CreateOrderProductRequest> products, ActivityUpdateStockRequest updateStockRequest,
List<CreateOrderAccountRequest> accounts, MqMessageRequest mqMessageRequest, String menuType, String openId,Long totalScore) { List<CreateOrderAccountRequest> accounts, String menuType, String openId,Long totalScore) {
//TODO 转换获取库存信息,扣减库存 //TODO 转换获取库存信息,扣减库存
UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType); UpdateStocksRequest updateStocksRequest = orderSdkAdapter.getUpdateProductStock(orderBean, products, StockChangeType.REDUCE,menuType);
if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) { if (updateStocksRequest != null && CollectionUtils.isNotEmpty(updateStocksRequest.getProductStocks())) {
......
...@@ -732,10 +732,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -732,10 +732,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
CreateOrderRequest createOrderRequest = new CreateOrderRequest(); CreateOrderRequest createOrderRequest = new CreateOrderRequest();
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest); createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createOrderRequest.setMqMessageRequest(mqMessageRequest);
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return mcCafeOrderCenterSdkService.createMCCafeOrderFlow(createOrderRequest); return mcCafeOrderCenterSdkService.createMCCafeOrderFlow(createOrderRequest);
} }
......
...@@ -285,10 +285,6 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -285,10 +285,6 @@ public class MallOrderServiceImpl implements MallOrderService {
CreateOrderRequest createOrderRequest = new CreateOrderRequest(); CreateOrderRequest createOrderRequest = new CreateOrderRequest();
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest); createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
// mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
// mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createOrderRequest.setMqMessageRequest(mqMessageRequest);
createOrderRequest.getBaseCreateOrderRequest().setUserName(userLoginInfoDto.getNickName()); createOrderRequest.getBaseCreateOrderRequest().setUserName(userLoginInfoDto.getNickName());
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo()); createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return orderBusinessService.createOrderFlow(createOrderRequest); return orderBusinessService.createOrderFlow(createOrderRequest);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -141,6 +141,9 @@ public class PayServiceImpl { ...@@ -141,6 +141,9 @@ public class PayServiceImpl {
@Value("${collage.pre_order_pay.goods_tag}") @Value("${collage.pre_order_pay.goods_tag}")
private String collageGoodsTag; private String collageGoodsTag;
@Value("${query.pay.order:true}")
private Boolean queryPayOrder;
private static final Integer MULITI_RESPONSE = 200; private static final Integer MULITI_RESPONSE = 200;
private static final String SUCCESS = "SUCCESS"; private static final String SUCCESS = "SUCCESS";
...@@ -818,6 +821,9 @@ public class PayServiceImpl { ...@@ -818,6 +821,9 @@ public class PayServiceImpl {
public boolean closePrePay(OrderBeanV1 orderBean) { public boolean closePrePay(OrderBeanV1 orderBean) {
//是否支付成功 //是否支付成功
boolean paySuccess = false; boolean paySuccess = false;
if(!queryPayOrder){
return paySuccess;
}
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class); OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
List<OrderPayItemResp> orderPayItemList = orderBean.getOrderPayItem(); List<OrderPayItemResp> orderPayItemList = orderBean.getOrderPayItem();
......
...@@ -98,11 +98,6 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ ...@@ -98,11 +98,6 @@ public class MCCafeOrderCenterSdkServiceImpl implements MCCafeOrderCenterSdkServ
|| createOrderResponse.getData() == null) { || createOrderResponse.getData() == null) {
return getCreateOrderResponse(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null); return getCreateOrderResponse(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null);
} }
BaseOrderResponse baseOrderResponse = updateMCCafeStockAndScore(createOrderResponse.getData(), config.getBaseCreateOrderRequest().getProducts(), config.getBaseCreateOrderRequest().getActivityUpdateStockRequest(),
config.getBaseCreateOrderRequest().getAccounts(), config.getMqMessageRequest(),config.getBaseCreateOrderRequest().getMenuType());
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return getCreateOrderResponse(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
}
return createOrderResponse; return createOrderResponse;
} }
......
...@@ -2,9 +2,11 @@ package cn.freemud.service.thirdparty; ...@@ -2,9 +2,11 @@ package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign; import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryInvoiceRepDto;
import cn.freemud.entities.dto.order.QueryInvoiceByCodesResponse; import cn.freemud.entities.dto.order.QueryInvoiceByCodesResponse;
import cn.freemud.entities.dto.pay.OrderInvoiceRequest; import cn.freemud.entities.dto.pay.OrderInvoiceRequest;
import cn.freemud.entities.dto.pay.QueryInvoiceByCodesRequest; import cn.freemud.entities.dto.pay.QueryInvoiceByCodesRequest;
import cn.freemud.entities.vo.QueryInvoiceReq;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -24,7 +26,16 @@ public interface OrderServiceClient { ...@@ -24,7 +26,16 @@ public interface OrderServiceClient {
/** /**
* 查询用户订单号是否已开票 * 查询用户订单号是否已开票
*/ */
@LogIgnoreFeign(logMessage="queryByCodes") @LogIgnoreFeign(logMessage="queryInvoiceByCodes")
@PostMapping("/order/v2/invoice/queryByCodes") @PostMapping("/order/v2/invoice/queryByCodes")
BaseResponse<QueryInvoiceByCodesResponse> queryInvoiceByCodes(@RequestBody QueryInvoiceByCodesRequest request); BaseResponse<QueryInvoiceByCodesResponse> queryInvoiceByCodes(@RequestBody QueryInvoiceByCodesRequest request);
/**
* 2021年9月15日-开票历史列表接口+详情接口+发票所含订单接口-黄兆良
* 开票历史列表接口
*/
@LogIgnoreFeign(logMessage="queryInvoiceList")
@PostMapping(value = "/order/v2/invoice/list/forUser")
QueryInvoiceRepDto queryInvoiceList(@RequestBody QueryInvoiceReq queryInvoiceReq);
} }
...@@ -30,6 +30,6 @@ public class CustomerExtendClientTest { ...@@ -30,6 +30,6 @@ public class CustomerExtendClientTest {
requestDto.setStatusFlags(new ArrayList<>(0)); requestDto.setStatusFlags(new ArrayList<>(0));
requestDto.setIsProduct(1); requestDto.setIsProduct(1);
requestDto.setCouponType(0); requestDto.setCouponType(0);
GetMemberCouponListResponseDto responseDto=customerExtendClient.getMemberCouponListRequestDto(requestDto); // GetMemberCouponListResponseDto responseDto=customerExtendClient.getMemberCouponListRequestDto(requestDto);
} }
} }
...@@ -148,6 +148,8 @@ public class ActivityAdapter { ...@@ -148,6 +148,8 @@ public class ActivityAdapter {
product.setOriginalPrice(sendGoods.getOriginalPrice()); product.setOriginalPrice(sendGoods.getOriginalPrice());
product.setNowPrice(sendGoods.getNowPrice()); product.setNowPrice(sendGoods.getNowPrice());
product.setNumber(sendGoods.getSendNumber()); product.setNumber(sendGoods.getSendNumber());
// 设置商品原始属性, 本次需求 为了得到虚拟商品类型 进行参数组装
product.setProductType(sendGoods.getProductType());
products.add(product); products.add(product);
}); });
break; break;
...@@ -238,57 +240,8 @@ public class ActivityAdapter { ...@@ -238,57 +240,8 @@ public class ActivityAdapter {
public PremiumExchangeResponseVo convert2PremiumExchangeSharing(CalculationDiscountResult discountResult) { public PremiumExchangeResponseVo convert2PremiumExchangeSharing(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 返回构造对象 return this.convert2PremiumExchange(calculationDiscountResult);
PremiumExchangeResponseVo premiumExchangeResponseVo = new PremiumExchangeResponseVo();
// 组装验证商品对象
List<PremiumExchangeResponseVo.PremiumExchangeProduct> products = new ArrayList<>();
premiumExchangeResponseVo.setResultCode(ActivityResultCodeEnum.NON_PARTICIPATE.getCode());
if (discountResult == null) {
return premiumExchangeResponseVo;
}
// 只取最新活动
if (discountResult != null && CollectionUtils.isNotEmpty(discountResult.getSendGoods())) {
if (CollectionUtils.isNotEmpty(discountResult.getDiscounts())) {
List<Discount> discountList = discountResult.getDiscounts();
for (Discount discount : discountList) {
if (Objects.equals(discount.getType(), ActivityTypeEnum.TYPE_81.getCode())) {
Integer showType = discount.getIntegral() == null ? 0 : discount.getIntegral();
premiumExchangeResponseVo.setShowType(showType);
}
}
}
for (SendActivity sendActivity : discountResult.getSendGoods()) {
if (Objects.equals(sendActivity.getActivityType(), ActivityTypeEnum.TYPE_81.getCode())) {
// 判断加价购活动商品不存在直接跳出循环
if (CollectionUtils.isEmpty(sendActivity.getSendGoods())) {
break;
}
premiumExchangeResponseVo.setResultCode(ActivityResultCodeEnum.PARTICIPATE.getCode());
premiumExchangeResponseVo.setActivityCode(sendActivity.getActivityCode());
premiumExchangeResponseVo.setActivityName(sendActivity.getActivityName());
premiumExchangeResponseVo.setMaxNum(sendActivity.getMaxNum());
sendActivity.getSendGoods().forEach(sendGoods -> {
PremiumExchangeResponseVo.PremiumExchangeProduct product = new PremiumExchangeResponseVo.PremiumExchangeProduct();
product.setSpuId(sendGoods.getCategory());
product.setSkuId(sendGoods.getGoodsId());
product.setSkuName(sendGoods.getGoodsName());
product.setOriginalPrice(sendGoods.getOriginalPrice());
product.setNowPrice(sendGoods.getNowPrice());
product.setNumber(sendGoods.getSendNumber());
products.add(product);
});
break;
}
}
}
if(CollectionUtils.isEmpty(products)){
premiumExchangeResponseVo.setResultCode(ActivityResultCodeEnum.NO_ACTIVITY.getCode());
premiumExchangeResponseVo.setResultMsg(ActivityResultCodeEnum.NO_ACTIVITY.getDesc());
return premiumExchangeResponseVo;
}
premiumExchangeResponseVo.setProducts(products);
return premiumExchangeResponseVo;
} }
public CouponAvailableCartInfo convert2CouponAvailableCartInfoSharing(String partnerId, String storeId, CalculationDiscountResult discountResult, List<String> orgCodes) { public CouponAvailableCartInfo convert2CouponAvailableCartInfoSharing(String partnerId, String storeId, CalculationDiscountResult discountResult, List<String> orgCodes) {
......
...@@ -66,6 +66,7 @@ public class ShoppingCartConvertAdapter { ...@@ -66,6 +66,7 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto.setSkuId(goodsId); cartGoodsDetailDto.setSkuId(goodsId);
// fisherman 加价购商品类型设置 // fisherman 加价购商品类型设置
cartGoodsDetailDto.setOriginalProductType(getProductsVo.getType()); cartGoodsDetailDto.setOriginalProductType(getProductsVo.getType());
cartGoodsDetailDto.setProductType(sendGoods.getProductType());
cartGoodsDetailDto.setQty(product.getQty()); cartGoodsDetailDto.setQty(product.getQty());
cartGoodsDetailDto.setSpuName(getProductsVo != null ? getProductsVo.getSpuName() : ""); cartGoodsDetailDto.setSpuName(getProductsVo != null ? getProductsVo.getSpuName() : "");
cartGoodsDetailDto.setSkuName(product.getSkuName()); cartGoodsDetailDto.setSkuName(product.getSkuName());
......
package cn.freemud.entities.dto;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/10/23 下午4:16
* @description :
*/
@Data
public class BindingCouponTypeDto {
private String activityCode;
private String cardId;
private Integer num;
private String virtualCouponCode;
}
...@@ -195,6 +195,12 @@ public class GetMenuResponseDto { ...@@ -195,6 +195,12 @@ public class GetMenuResponseDto {
private List<SpecificationGroupBean> specificationGroupList; private List<SpecificationGroupBean> specificationGroupList;
//Sku 规格 如果 当前是sku 则有值 //Sku 规格 如果 当前是sku 则有值
private List<SkuProductBean.SkuSpecValue> skuSpecValues; private List<SkuProductBean.SkuSpecValue> skuSpecValues;
/**
* 虚拟商品 绑定的券信息
*/
private List<BindingCouponTypeDto> productBindingCouponTypes;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class SkuProductBean { public static class SkuProductBean {
......
...@@ -34,11 +34,13 @@ public class ValidateProductInfosDto { ...@@ -34,11 +34,13 @@ public class ValidateProductInfosDto {
private List<ProductData> failureList; private List<ProductData> failureList;
private List<ProductData> successList; private List<ProductData> successList;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class ProductData { public static class ProductData {
private ProductBean productType; private ProductBean productType;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class ProductBean { public static class ProductBean {
...@@ -118,15 +120,22 @@ public class ValidateProductInfosDto { ...@@ -118,15 +120,22 @@ public class ValidateProductInfosDto {
*/ */
private List<SellTime> sellTimeList; private List<SellTime> sellTimeList;
/**
* 虚拟商品 绑定的券信息
*/
private List<BindingCouponTypeDto> productBindingCouponTypes;
@Data @Data
public static class SellTime{ public static class SellTime {
private Integer dateStatus; private Integer dateStatus;
private String startTime; private String startTime;
private String endTime; private String endTime;
} }
private List<SellTimeMonth> sellTimeMonthList; private List<SellTimeMonth> sellTimeMonthList;
@Data @Data
public static class SellTimeMonth{ public static class SellTimeMonth {
private Integer dayOfMonth; private Integer dayOfMonth;
private String endTime; private String endTime;
private String startTime; private String startTime;
...@@ -148,7 +157,7 @@ public class ValidateProductInfosDto { ...@@ -148,7 +157,7 @@ public class ValidateProductInfosDto {
private Integer stockLimit; private Integer stockLimit;
private Integer stockQty; private Integer stockQty;
//sku商品包装费 1.5.4新加 //sku商品包装费 1.5.4新加
private Long packPrice ; private Long packPrice;
private List<SkuSpecValue> skuSpecValues; private List<SkuSpecValue> skuSpecValues;
@NoArgsConstructor @NoArgsConstructor
...@@ -261,6 +270,7 @@ public class ValidateProductInfosDto { ...@@ -261,6 +270,7 @@ public class ValidateProductInfosDto {
private String type; private String type;
private String url; private String url;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class ProductComboListBean { public static class ProductComboListBean {
......
...@@ -371,6 +371,28 @@ public class ShoppingCartGoodsDto { ...@@ -371,6 +371,28 @@ public class ShoppingCartGoodsDto {
*/ */
private List<CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0); private List<CartGoodsDetailDto.MaterialGoods> materialList = new ArrayList<>(0);
/**
* 当加价购有虚拟商品 需要送券的时候 这里存放的就是 券信息 比如
* [
* {
* "num": 1,
* "activityCode": "V1634609099412143",
* "activityName": "迦勒代金券2块"
* },
* {
* "num": 1,
* "activityCode": "V1634609296167070",
* "activityName": "迦勒代金券3块"
* },
* {
* "num": 1,
* "activityCode": "V1634643280844538",
* "activityName": "迦勒代金券11块"
* }
* ]
*/
private String extInfo;
@Data @Data
public final static class CartGoodsExtra { public final static class CartGoodsExtra {
/** /**
......
...@@ -20,12 +20,19 @@ import lombok.NoArgsConstructor; ...@@ -20,12 +20,19 @@ import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
@Data @Data
public class CartGoods { public class CartGoods {
/**
* 如果加价购是虚拟券商品 这个集合会有券商品赠送的券信息
*/
private List<CouponMsg> couponData = new ArrayList<>();
/** /**
* 购物车一行的Id(后台生成) * 购物车一行的Id(后台生成)
*/ */
...@@ -720,5 +727,6 @@ public class CartGoods { ...@@ -720,5 +727,6 @@ public class CartGoods {
* 该字段,保持和商品服务的商品类型一致 * 该字段,保持和商品服务的商品类型一致
*/ */
private Integer originalProductType; private Integer originalProductType;
} }
} }
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/10/23 下午2:34
* @description :
*/
@Data
public class CouponMsg {
/**
* 券名称
*/
@ApiModelProperty(value = "券名称")
private String activityName;
/**
* 券code
*/
@ApiModelProperty(value = "券code")
private String activityCode;
/**
* 券数量
*/
private Integer num;
}
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.BindingCouponTypeDto;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
...@@ -144,6 +145,16 @@ public class CreateOrderVo { ...@@ -144,6 +145,16 @@ public class CreateOrderVo {
@Data @Data
public static class Product { public static class Product {
/** /**
* 加价购 可能会涉及 虚拟商品 类型 = 9
*/
private Integer productType;
/**
* 虚拟商品 绑定的券信息
*/
private List<BindingCouponTypeDto> productBindingCouponTypes;
/**
* spuId 商品原始id * spuId 商品原始id
*/ */
@NotNull(message = "spuId不能为空") @NotNull(message = "spuId不能为空")
......
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.BindingCouponTypeDto;
import cn.freemud.entities.dto.GetMenuResponseDto; import cn.freemud.entities.dto.GetMenuResponseDto;
import lombok.Data; import lombok.Data;
...@@ -48,4 +49,11 @@ public class GetProductsVo { ...@@ -48,4 +49,11 @@ public class GetProductsVo {
private String defaultSpecId; private String defaultSpecId;
private String defaultSpecName; private String defaultSpecName;
private List<CartGoods.CartGoodsExtra> extra; private List<CartGoods.CartGoodsExtra> extra;
/**
* 虚拟商品 绑定的券信息
*/
private List<BindingCouponTypeDto> productBindingCouponTypes;
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
...@@ -247,6 +248,13 @@ public class PremiumExchangeResponseVo { ...@@ -247,6 +248,13 @@ public class PremiumExchangeResponseVo {
@ApiModelProperty(value = "活动商品描述") @ApiModelProperty(value = "活动商品描述")
private String goodsDesc; private String goodsDesc;
/**
* 如果加价购是虚拟券商品 这个集合会有券商品赠送的券信息
*/
private List<CouponMsg> couponData = new ArrayList<>();
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public static class ProductLabel { public static class ProductLabel {
......
...@@ -163,6 +163,11 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -163,6 +163,11 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
private String activityCode; private String activityCode;
private List<Attribute> attributes; private List<Attribute> attributes;
/**
* 加价购 可能会涉及 虚拟商品 类型 = 9
*/
private Integer productType;
} }
@Data @Data
......
package cn.freemud.handle;
import cn.freemud.entities.dto.BindingCouponTypeDto;
import cn.freemud.entities.vo.CouponMsg;
import cn.freemud.enums.ResponseResult;
import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.couponcenter.online.domain.ActiveDetailVO;
import com.freemud.application.sdk.api.couponcenter.online.domain.AppKeyVO;
import com.freemud.application.sdk.api.couponcenter.online.request.ActiveBatchQueryRequest;
import com.freemud.application.sdk.api.couponcenter.online.request.PartnerRequest;
import com.freemud.application.sdk.api.couponcenter.online.service.FMActiveSdkService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/10/22 下午7:54
* @description :
*/
@Component
public class GetActivityMsgHandle {
@Value("${coupon.app.id}")
private String appId;
/**
* fisherman 获取 虚拟商品 券数据
*
* @param productBindingCoupons
* @param partnerId
* @return
*/
public List<CouponMsg> getCouponData(List<BindingCouponTypeDto> productBindingCoupons, String partnerId) {
List<CouponMsg> retList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(productBindingCoupons)) {
// 处理 券数据 这里链路有问题 效率有点低, 后续需要优化
List<String> activityCodes = productBindingCoupons.stream()
.map(BindingCouponTypeDto::getActivityCode)
.collect(Collectors.toList());
List<ActiveDetailVO> activeDetailVOS = this.batchQueryActivityInfo(activityCodes, partnerId);
if (CollectionUtils.isNotEmpty(activeDetailVOS)) {
// 设置 券名称 数量
Map<String, ActiveDetailVO> collect = activeDetailVOS.stream().collect(Collectors.toMap(ActiveDetailVO::getActiveCode, a -> a, (k1, k2) -> k1));
productBindingCoupons.forEach(coupon -> {
CouponMsg msg = new CouponMsg();
ActiveDetailVO activeDetailVO = collect.get(coupon.getActivityCode());
msg.setActivityCode(coupon.getActivityCode());
msg.setNum(coupon.getNum());
msg.setActivityName(activeDetailVO.getActiveName());
retList.add(msg);
});
}
}
return retList;
}
private List<ActiveDetailVO> batchQueryActivityInfo(List<String> activityCodes, String partnerId) {
String trackingNo = LogThreadLocal.getTrackingNo();
String appKey = this.getAppKey(partnerId, trackingNo);
if (StringUtils.isEmpty(appKey)) {
return null;
}
ActiveBatchQueryRequest activeBatchQueryRequest = new ActiveBatchQueryRequest();
//去重
List<String> activeCodes = new ArrayList<>(new HashSet(activityCodes));
activeBatchQueryRequest.setActiveCode(activeCodes);
activeBatchQueryRequest.setAppSecret(appKey);
activeBatchQueryRequest.setPartnerId(Integer.parseInt(partnerId));
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
BaseResponse<List<ActiveDetailVO>> batchQueryResponse = fmActiveSdkService.batchQueryActivityInfo(activeBatchQueryRequest, trackingNo);
if (batchQueryResponse == null
|| !ResponseResult.SUCCESS.getCode().equals(batchQueryResponse.getCode())
|| CollectionUtils.isEmpty(batchQueryResponse.getData())) {
return null;
}
return batchQueryResponse.getData();
}
private String getAppKey(String partnerId, String trackingNo) {
RedisCache redisCache = SDKCommonBaseContextWare.getBean(RedisCache.class);
String key = "kgd:coupon:appKey:partner:";
String appKey = redisCache.getValue(key + partnerId);
if (StringUtils.isEmpty(appKey)) {
PartnerRequest partnerRequest = new PartnerRequest();
partnerRequest.setPartnerId(Integer.parseInt(partnerId));
partnerRequest.setAppId(appId);
FMActiveSdkService fmActiveSdkService = SDKCommonBaseContextWare.getBean(FMActiveSdkService.class);
com.freemud.application.sdk.api.base.BaseResponse<AppKeyVO> appKeyVOBaseResponse = fmActiveSdkService.getAppKey(partnerRequest, trackingNo);
if (appKeyVOBaseResponse == null || !"100".equals(appKeyVOBaseResponse.getCode())
|| appKeyVOBaseResponse.getData() == null || StringUtils.isEmpty(appKeyVOBaseResponse.getData().getAppKey())) {
return null;
}
appKey = appKeyVOBaseResponse.getData().getAppKey();
redisCache.save(key + partnerId, appKey);
}
return appKey;
}
}
...@@ -2,6 +2,7 @@ package cn.freemud.service.impl; ...@@ -2,6 +2,7 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.ShoppingCartConvertAdapter; import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.GetMenuResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto; import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto; import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
...@@ -12,9 +13,12 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -12,9 +13,12 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.handle.GetActivityMsgHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.IPromotionService; import cn.freemud.service.IPromotionService;
import cn.freemud.service.ItemService; import cn.freemud.service.ItemService;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
...@@ -54,7 +58,8 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -54,7 +58,8 @@ public class AdditionalPromotionService implements IPromotionService {
private AssortmentSdkService assortmentSdkService; private AssortmentSdkService assortmentSdkService;
@Autowired @Autowired
private ShoppingCartBaseServiceImpl shoppingCartBaseService; private ShoppingCartBaseServiceImpl shoppingCartBaseService;
@Autowired
private GetActivityMsgHandle getActivityMsgHandle;
@Override @Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if (shoppingCartInfoRequestVo == null || CollectionUtils.isEmpty(shoppingCartInfoRequestVo.getSendGoods()) || calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getSendGoods())) { if (shoppingCartInfoRequestVo == null || CollectionUtils.isEmpty(shoppingCartInfoRequestVo.getSendGoods()) || calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getSendGoods())) {
...@@ -99,17 +104,20 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -99,17 +104,20 @@ public class AdditionalPromotionService implements IPromotionService {
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods(); List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = shoppingCartInfoRequestVo.getSendGoods();
List<String> goodsIds = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList()); List<String> goodsIds = sendGoods.stream().map(ShoppingCartInfoRequestVo.SendGoods::getGoodsId).collect(Collectors.toList());
Map<String, ShoppingCartInfoRequestVo.SendGoods> goodQtyMap = sendGoods.stream().collect(Collectors.toMap(ShoppingCartInfoRequestVo.SendGoods::getGoodsId, Function.identity(), (k1, k2) -> k1)); Map<String, ShoppingCartInfoRequestVo.SendGoods> goodQtyMap = sendGoods.stream().collect(Collectors.toMap(ShoppingCartInfoRequestVo.SendGoods::getGoodsId, Function.identity(), (k1, k2) -> k1));
List<ProductBeanDTO> productBeanList = assortmentSdkService.getProductsInfoSdk(shoppingCartInfoRequestVo.getPartnerId() // List<ProductBeanDTO> productBeanList = assortmentSdkService.getProductsInfoSdk(shoppingCartInfoRequestVo.getPartnerId()
, shoppingCartInfoRequestVo.getShopId(), goodsIds,shoppingCartInfoRequestVo.getMenuType(), shoppingCartBaseService); // , shoppingCartInfoRequestVo.getShopId(), goodsIds,shoppingCartInfoRequestVo.getMenuType(), shoppingCartBaseService);
if (CollectionUtils.isEmpty(productBeanList)) { // fisherman 剔除上面sdk的调用
List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean> productsInfo = assortmentSdkService.getProductsInfo(shoppingCartInfoRequestVo.getPartnerId()
, shoppingCartInfoRequestVo.getShopId(), goodsIds, shoppingCartInfoRequestVo.getMenuType(), shoppingCartBaseService);
if (CollectionUtils.isEmpty(productsInfo)) {
throw new ServiceException(ResponseResult.PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST); throw new ServiceException(ResponseResult.PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST);
} }
return productBeanList.stream().map(productBean -> { return productsInfo.stream().map(productBean -> {
CreateOrderVo.PremiumExchangeActivity.Product product = new CreateOrderVo.PremiumExchangeActivity.Product(); CreateOrderVo.PremiumExchangeActivity.Product product = new CreateOrderVo.PremiumExchangeActivity.Product();
List<ProductBeanDTO.SkuProductBean> skuList = productBean.getSkuList(); List<GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SkuProductBean> skuList = productBean.getSkuList();
List<String> skuIds = null; List<String> skuIds = null;
if (null != skuList) { if (null != skuList) {
skuIds = skuList.stream().map(ProductBeanDTO.SkuProductBean::getSkuId).collect(Collectors.toList()); skuIds = skuList.stream().map(GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean.SkuProductBean::getSkuId).collect(Collectors.toList());
} }
if (!CollectionUtils.isEmpty(skuIds)) { if (!CollectionUtils.isEmpty(skuIds)) {
for (String skuId : skuIds) { for (String skuId : skuIds) {
...@@ -119,6 +127,8 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -119,6 +127,8 @@ public class AdditionalPromotionService implements IPromotionService {
product.setSpuId(productBean.getPid()); product.setSpuId(productBean.getPid());
product.setSkuId(sendGood.getGoodsId()); product.setSkuId(sendGood.getGoodsId());
product.setStatus(productBean.getStatus()); product.setStatus(productBean.getStatus());
product.setProductType(sendGood.getProductType());
product.setProductBindingCouponTypes(productBean.getProductBindingCouponTypes());
break; break;
} }
} }
...@@ -129,6 +139,8 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -129,6 +139,8 @@ public class AdditionalPromotionService implements IPromotionService {
product.setSpuId(sendGood.getGoodsId()); product.setSpuId(sendGood.getGoodsId());
product.setSkuId(sendGood.getGoodsId()); product.setSkuId(sendGood.getGoodsId());
product.setStatus(productBean.getStatus()); product.setStatus(productBean.getStatus());
product.setProductType(sendGood.getProductType());
product.setProductBindingCouponTypes(productBean.getProductBindingCouponTypes());
} }
} }
return product; return product;
...@@ -215,7 +227,6 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -215,7 +227,6 @@ public class AdditionalPromotionService implements IPromotionService {
Long totalDiscountAmount = shoppingCartGoodsResponseVo.getTotalDiscountAmount(); Long totalDiscountAmount = shoppingCartGoodsResponseVo.getTotalDiscountAmount();
//加价换购活动总优惠 //加价换购活动总优惠
Long currenttotalDiscountAmount = 0L; Long currenttotalDiscountAmount = 0L;
//购物车中添加加价购商品,并计算购物车总优惠价格
for (CreateOrderVo.PremiumExchangeActivity.Product product : additionalProducts) { for (CreateOrderVo.PremiumExchangeActivity.Product product : additionalProducts) {
String goodsId = StringUtils.isEmpty(product.getSkuId()) ? product.getSpuId() : product.getSkuId(); String goodsId = StringUtils.isEmpty(product.getSkuId()) ? product.getSpuId() : product.getSkuId();
GetProductsVo getProductsVo = getProductsVoMap.get(goodsId); GetProductsVo getProductsVo = getProductsVoMap.get(goodsId);
...@@ -225,6 +236,13 @@ public class AdditionalPromotionService implements IPromotionService { ...@@ -225,6 +236,13 @@ public class AdditionalPromotionService implements IPromotionService {
SendGoods sendGoods = sendGoodsMap.get(goodsId); SendGoods sendGoods = sendGoodsMap.get(goodsId);
//1.向购物车中添加商品 //1.向购物车中添加商品
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.getCartGoodsDetailDto(product, getProductsVo, goodsId, sendGoods); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = shoppingCartConvertAdapter.getCartGoodsDetailDto(product, getProductsVo, goodsId, sendGoods);
// fisherman 结算页 如果是虚拟商品 需要设置 到 extinfo里面注意
if (cartGoodsDetailDto.getProductType().compareTo(ProductTypeEnum.VIRTUAL_PRODUCT.getCode()) == 0) {
List<CouponMsg> couponData = getActivityMsgHandle.getCouponData(getProductsVo.getProductBindingCouponTypes(), shoppingCartInfoRequestVo.getPartnerId());
if (CollectionUtils.isNotEmpty(couponData)) {
cartGoodsDetailDto.setExtInfo(JSON.toJSONString(couponData));
}
}
cartGoodsDetailDtoList.add(cartGoodsDetailDto); cartGoodsDetailDtoList.add(cartGoodsDetailDto);
//2.计算优惠价格 //2.计算优惠价格
originalTotalAmount += getProductsVo.getFinalPrice(); originalTotalAmount += getProductsVo.getFinalPrice();
......
...@@ -169,8 +169,9 @@ public class ItemServiceImpl implements ItemService { ...@@ -169,8 +169,9 @@ public class ItemServiceImpl implements ItemService {
getProductsVo.setCustomerCode(productBean.getCustomerCode()); getProductsVo.setCustomerCode(productBean.getCustomerCode());
getProductsVo.setCategory(productBean.getCategory()); getProductsVo.setCategory(productBean.getCategory());
getProductsVo.setCategoryName(productBean.getCategoryName()); getProductsVo.setCategoryName(productBean.getCategoryName());
getProductsVo.setProductBindingCouponTypes(productBean.getProductBindingCouponTypes());
resultMap.put(productBean.getPid(), getProductsVo); resultMap.put(productBean.getPid(), getProductsVo);
getProductsVo.setType(1); getProductsVo.setType(productBean.getType());
// 规格ID 剔除单品 // 规格ID 剔除单品
if (Objects.equals(productBean.getIsSkuProduct(), YesOrNoEnum.YES.getCode())) { if (Objects.equals(productBean.getIsSkuProduct(), YesOrNoEnum.YES.getCode())) {
getProductsVo.setType(10); getProductsVo.setType(10);
......
...@@ -43,6 +43,7 @@ import cn.freemud.entities.vo.coupon.CouponAvailableCartInfo; ...@@ -43,6 +43,7 @@ import cn.freemud.entities.vo.coupon.CouponAvailableCartInfo;
import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo; import cn.freemud.entities.vo.coupon.CouponAvailableRequestVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handle.CommonFunctionHandle; import cn.freemud.handle.CommonFunctionHandle;
import cn.freemud.handle.GetActivityMsgHandle;
import cn.freemud.interceptor.BizServiceException; import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
...@@ -68,6 +69,8 @@ import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressR ...@@ -68,6 +69,8 @@ import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressR
import com.freemud.application.sdk.api.membercenter.request.StatisticalScoreRequest; import com.freemud.application.sdk.api.membercenter.request.StatisticalScoreRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; 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.ProductTypeEnum;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; 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.response.StoreResponse;
...@@ -76,7 +79,6 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; ...@@ -76,7 +79,6 @@ import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService; import com.freemud.sdk.api.assortment.shoppingcart.service.ShoppingCartBaseService;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import javafx.util.Pair; import javafx.util.Pair;
import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFacade;
...@@ -209,6 +211,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -209,6 +211,9 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired @Autowired
private CommonFunctionHandle commonFunctionHandle; private CommonFunctionHandle commonFunctionHandle;
@Autowired
private GetActivityMsgHandle getActivityMsgHandle;
/** /**
* 从微信卡券向购物车中添加商品 * 从微信卡券向购物车中添加商品
*/ */
...@@ -885,11 +890,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -885,11 +890,15 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
cartGoods.setOriginalAmount(good.getOriginalPrice()); cartGoods.setOriginalAmount(good.getOriginalPrice());
cartGoods.setAmount(good.getNowPrice()); cartGoods.setAmount(good.getNowPrice());
cartGoods.setPhotoUrl(good.getPicture()); cartGoods.setPhotoUrl(good.getPicture());
// fisherman 设置虚拟券商品 属性
cartGoods.setGoodsType(good.getProductType());
cartGoods.setOriginalProductType(good.getProductType());
cartGoods.setGoodsId(good.getPid()); cartGoods.setGoodsId(good.getPid());
cartGoods.setName(good.getName()); cartGoods.setName(good.getName());
cartGoods.setSpuName(good.getSpuName()); cartGoods.setSpuName(good.getSpuName());
cartGoods.setQty(first == null ? 1 : first.getQty()); cartGoods.setQty(first.getQty());
cartGoods.setActivityCode(first.getActivityCode()); cartGoods.setActivityCode(first.getActivityCode());
cartGoods.setCouponData(good.getCouponData());
if (!CollectionUtils.isEmpty(first.getAttributes())) { if (!CollectionUtils.isEmpty(first.getAttributes())) {
List<CartGoods.CartGoodsExtra> extra = new ArrayList(); List<CartGoods.CartGoodsExtra> extra = new ArrayList();
first.getAttributes().forEach(attribute -> { first.getAttributes().forEach(attribute -> {
...@@ -3165,6 +3174,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3165,6 +3174,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
result.setOriginalPrice(productBean.getFinalPrice()); result.setOriginalPrice(productBean.getFinalPrice());
result.setNumber(premiumExchangeProduct.getNumber()); result.setNumber(premiumExchangeProduct.getNumber());
result.setArtNo(premiumExchangeProduct.getArtNo()); result.setArtNo(premiumExchangeProduct.getArtNo());
result.setProductType(premiumExchangeProduct.getProductType());
// fisherman 处理虚拟商品的 券名称获取
if (premiumExchangeProduct.getProductType().compareTo(ProductTypeEnum.VIRTUAL_PRODUCT.getCode()) == 0) {
result.setCouponData(getActivityMsgHandle.getCouponData(productBean.getProductBindingCouponTypes(), partnerId));
}
productResults.add(result); productResults.add(result);
} }
} }
...@@ -3177,6 +3191,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -3177,6 +3191,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return ResponseUtil.success(premiumExchangeResponseVo); return ResponseUtil.success(premiumExchangeResponseVo);
} }
private void removeByProductStock(List<PremiumExchangeResponseVo.PremiumExchangeProduct> products, List<ValidateProductInfosDto.ProductData> productDataList, String partnerId, String storeId, String channel) { private void removeByProductStock(List<PremiumExchangeResponseVo.PremiumExchangeProduct> products, List<ValidateProductInfosDto.ProductData> productDataList, String partnerId, String storeId, String channel) {
List<Long> limitSkuIds = new ArrayList<>(); List<Long> limitSkuIds = new ArrayList<>();
productDataList.stream().forEach(ProductData -> { productDataList.stream().forEach(ProductData -> {
......
...@@ -8,12 +8,16 @@ import cn.freemud.entities.vo.*; ...@@ -8,12 +8,16 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType; import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.handle.GetActivityMsgHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.ItemService; import cn.freemud.service.ItemService;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl; import com.freemud.sdk.api.assortment.shoppingcart.service.impl.ShoppingCartBaseServiceImpl;
import com.freemud.sdk.api.assortment.shoppingcart.util.ShoppingSdkLogUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -49,6 +53,10 @@ public class AdditionSharingService { ...@@ -49,6 +53,10 @@ public class AdditionSharingService {
@Autowired @Autowired
private ItemService itemService; private ItemService itemService;
@Autowired
private GetActivityMsgHandle getActivityMsgHandle;
public void additionResponse(CalculationDiscountResult discountResult public void additionResponse(CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo
...@@ -266,6 +274,13 @@ public class AdditionSharingService { ...@@ -266,6 +274,13 @@ public class AdditionSharingService {
continue; continue;
} }
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.getCartGoodsDetailDto(product, getProductsVo, goodsId, hgGood); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = this.getCartGoodsDetailDto(product, getProductsVo, goodsId, hgGood);
// fisherman 结算页 如果是虚拟商品 需要设置 到 extinfo里面注意 新算价
if (cartGoodsDetailDto.getProductType().compareTo(ProductTypeEnum.VIRTUAL_PRODUCT.getCode()) == 0) {
List<CouponMsg> couponData = getActivityMsgHandle.getCouponData(getProductsVo.getProductBindingCouponTypes(), shoppingCartInfoRequestVo.getPartnerId());
if (CollectionUtils.isNotEmpty(couponData)) {
cartGoodsDetailDto.setExtInfo(JSON.toJSONString(couponData));
}
}
shoppingCartGoodsDto.getProducts().add(cartGoodsDetailDto); shoppingCartGoodsDto.getProducts().add(cartGoodsDetailDto);
//2.计算优惠价格 //2.计算优惠价格
originalTotalAmount += getProductsVo.getFinalPrice(); originalTotalAmount += getProductsVo.getFinalPrice();
...@@ -304,6 +319,7 @@ public class AdditionSharingService { ...@@ -304,6 +319,7 @@ public class AdditionSharingService {
cartGoodsDetailDto.setClassificationId(getProductsVo.getCategory()); cartGoodsDetailDto.setClassificationId(getProductsVo.getCategory());
cartGoodsDetailDto.setClassificationName(getProductsVo.getCategoryName()); cartGoodsDetailDto.setClassificationName(getProductsVo.getCategoryName());
cartGoodsDetailDto.setStockLimit(ObjectUtils.equals(1, getProductsVo.getStockLimit())); cartGoodsDetailDto.setStockLimit(ObjectUtils.equals(1, getProductsVo.getStockLimit()));
cartGoodsDetailDto.setProductType(getProductsVo.getType());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtraList = new ArrayList<>(); List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtraList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(product.getAttributes())) { if (CollectionUtils.isNotEmpty(product.getAttributes())) {
for (CreateOrderVo.PremiumExchangeActivity.Product.Attribute attribute : product.getAttributes()) { for (CreateOrderVo.PremiumExchangeActivity.Product.Attribute attribute : product.getAttributes()) {
......
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