Commit a0b17af8 by 徐康

Merge branch 'feature/20201022_入机键位修改_xukang' into feature-yu.sun-material-20201030

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/mcoffee/ShoppingCartMCoffeeServiceImpl.java
parents afccfb84 0b7a5b69
......@@ -801,7 +801,6 @@ public class OrderSdkAdapter {
}
accountBean.setSequence(orderSettlementResp.getProductSeq());
accountBean.setType(getOldOrderAccountType(orderSettlementResp.getSettlementType()));
// accountBean.setAddInfo("");
accountBean.setAddInfo(orderSettlementResp.getExtInfo());
accountBean.setPlatformDiscountAmount(orderSettlementResp.getPlatformDiscountAmount());
accountBean.setShopDiscountAmount(orderSettlementResp.getShopDiscountAmount());
......@@ -2821,6 +2820,7 @@ public class OrderSdkAdapter {
orderSettlementCreateReq.setIsOnline(true);
orderSettlementCreateReq.setSettlementType(getDiscountType(accountRequest.getAccountType()));
orderSettlementCreateReq.setNote(accountRequest.getName());
orderSettlementCreateReq.setExtInfo(accountRequest.getAddInfo());
orderSettlementCreateReqList.add(orderSettlementCreateReq);
}
......
......@@ -18,4 +18,6 @@ public class CommonsConstant {
public final static Integer WEIGHT_PRODUCT = 1;
public final static Integer COUPON_TYPE = 0;
}
......@@ -32,6 +32,7 @@ import cn.freemud.management.enums.OrderSource;
import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.card.sdk.vo.coupon.request.MemberAddCouponVo;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
......@@ -671,8 +672,15 @@ public class CouponAdapter {
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
String extInfo = productDiscount.getAddInfo();
Integer extendType = StringUtils.isBlank(extInfo)?null: JSON.parseObject(extInfo).getInteger("extendType");
if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(extInfo).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(extInfo).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
......
......@@ -190,11 +190,15 @@ public class OrderAdapter {
if(mcCafePartnerId.equals(createOrderDto.getCompanyId())) {
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_11.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())) {
|| ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
} else if(ActivityTypeEnum.TYPE_34.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("customerCode", activityDiscountsDto.getTenderId());
}
if(null != activityDiscountsDto.getExtendType()) {
jsonObject.put("extendType", activityDiscountsDto.getExtendType());
}
createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
}
orderAccountDtos.add(createOrderAccountDto);
......@@ -360,6 +364,14 @@ public class OrderAdapter {
.discountQty((activityDiscountsDto.getActualActivityGoodsNumber()==null||activityDiscountsDto.getActualActivityGoodsNumber()==0)
?createOrderProductDto.getNumber():activityDiscountsDto.getActualActivityGoodsNumber())
.build();
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
}
if(null != activityDiscountsDto.getExtendType()) {
jsonObject.put("extendType", activityDiscountsDto.getExtendType());
}
createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
orderAccountDtos.add(createOrderAccountDto);
}
return orderAccountDtos;
......
......@@ -23,4 +23,8 @@ public class ActivityDiscountsDto {
private Integer activityType;
private Integer actualActivityGoodsNumber;
private String tenderId;
/**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
*/
private Integer extendType;
}
......@@ -65,7 +65,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.17-SNAPSHOT</version>
<version>2.0.13-RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -8,6 +8,7 @@ import cn.freemud.management.enums.CouponReqTypeEnum;
import cn.freemud.management.enums.MCCafeChannelEnum;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
......@@ -90,8 +91,15 @@ public class McCafeCouponAdapter {
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
String extInfo = productDiscount.getAddInfo();
Integer extendType = StringUtils.isBlank(extInfo)?null: JSON.parseObject(extInfo).getInteger("extendType");
if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(extInfo).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(extInfo).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
......
......@@ -158,6 +158,10 @@ public class ActivityCalculationDiscountResponseDto {
* 运费月卡入机字段
*/
private String tenderId;
/**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
*/
private Integer extendType;
}
@Data
......
......@@ -22,6 +22,10 @@ public class ActivityDiscountsDto {
private Integer discountAmount;
private Integer activityType;
private String tenderId;
/**
* 1-运费券 2-运费月卡券 3-月卡券 4-万能券 5-啡常月享卡 6-通用券
*/
private Integer extendType;
/**
* 实际参与活动商品数量
......
......@@ -22,6 +22,7 @@ public enum GoodsTypeEnum {
SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"),
MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType;
......
......@@ -297,10 +297,14 @@ public class ShoppingCartMCoffeeServiceImpl {
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, sessionId, "", shoppingCartBaseService);
String couponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService, SaveCouponType.COUPON.getCode());
String freightCouponCode = assortmentSdkService.getShoppingCartCoupon(partnerId, storeId, userId, shoppingCartBaseService, SaveCouponType.FREIGHT_COUPON.getCode());
// 当couponCode不为空时,需参与价格计算
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(null, null, cartGoodsList,null);
List<ActivityCalculationDiscountRequestDto.CalculationDiscountCoupon> coupons = getCoupon(couponCode, null, cartGoodsList,freightCouponCode);
// 促销活动的优惠金额计算
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, null,
calculationService.updateShoppingCartGoodsDiscount(partnerId, storeId, userId, appId, orderType, assortmentCustomerInfoVo.isMemberPaid(), menuType, receiveId, couponCode,
cartGoodsList, coupons, new ArrayList<>(), shoppingCartGoodsResponseVo);
//设置更新响应信息
setAddAndUpdateResponse(shoppingCartGoodsResponseVo, cartGoodsList, shoppingCartGoodsResponseVo.getToastMsg(), ShoppingCartConstant.ADD_AND_UPDATE, null);
......@@ -335,7 +339,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, sessionId, "", shoppingCartBaseService);
log.info("cartGoodsList: {}",JSONObject.toJSONString(cartGoodsList));
// 如果购物车商品不为空, 则check购物车中所有商品
if (CollectionUtils.isNotEmpty(cartGoodsList)) {
// check购物车中所有商品
......@@ -538,6 +542,7 @@ public class ShoppingCartMCoffeeServiceImpl {
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, tableNumber, shoppingCartBaseService);
log.info("cartGoodsList: {}",JSONObject.toJSONString(cartGoodsList));
if (cartGoodsList == null || CollectionUtils.isEmpty(cartGoodsList)) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
}
......@@ -788,6 +793,7 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setFinalPrice(orderItem.getProductPrice().longValue());
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoods.setAmount(cartGoods.getFinalPrice() * cartGoods.getQty());
cartGoods.setPic(orderItem.getProductPicUrl());
if(6 == orderItem.getProductType()) {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType());
} else if(10 ==orderItem.getProductType()) {
......@@ -798,7 +804,7 @@ public class ShoppingCartMCoffeeServiceImpl {
cartGoods.setGoodsType(com.freemud.sdk.api.assortment.shoppingcart.constant.GoodsTypeEnum.COMMON_GOODS.getGoodsType());
}
if(("早餐啡常搭".equals(orderItem.getProductName()) && "早餐啡常搭".equals(orderItem.getProductSpecName()))
|| ("啡常搭".equals(orderItem.getProductName()) && "啡常搭".equals(orderItem.getProductSpecName()))) {
|| ("啡常搭".equals(orderItem.getProductName()) && "啡常搭".equals(orderItem.getProductSpecName()))) {
cartGoods.setName(orderItem.getProductName());
cartGoods.setSpuName(orderItem.getProductName());
cartGoods.setSkuName(orderItem.getProductName());
......@@ -849,6 +855,7 @@ public class ShoppingCartMCoffeeServiceImpl {
comboxGoods.setQty(orderItemResp.getProductQuantity());
comboxGoods.setOriginalPrice(orderItemResp.getProductPrice().longValue());
comboxGoods.setFinalPrice(orderItemResp.getSalePrice().longValue());
comboxGoods.setPic(orderItemResp.getProductPicUrl());
comboxGoods.setOriginalAmount(comboxGoods.getOriginalPrice() * comboxGoods.getQty());
comboxGoods.setAmount(comboxGoods.getFinalPrice() * comboxGoods.getQty());
if (StringUtils.isNotBlank(orderItemResp.getProductProperty())) {
......@@ -953,11 +960,6 @@ public class ShoppingCartMCoffeeServiceImpl {
List<CartGoods> nowCartGoodsList = new ArrayList<>();
//判断当前商品在购物车是否已存在,存在则数量+1,不存在商品行 + 1
allCartGoodsList.forEach(oldCartGoods -> {
if(oldCartGoods.getSpuId().equals(addCartGoods.getSpuId())) {
oldCartGoods.setSpuName(addCartGoods.getSpuName());
oldCartGoods.setSkuName(addCartGoods.getSpuName());
oldCartGoods.setName(addCartGoods.getName());
}
int index;
if ((index = nowCartGoodsList.indexOf(oldCartGoods)) >= 0) {
nowCartGoodsList.get(index).setQty(nowCartGoodsList.get(index).getQty() + addCartGoods.getQty());
......@@ -1182,6 +1184,9 @@ public class ShoppingCartMCoffeeServiceImpl {
} else if (CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductComboList()) || CollectionUtils.isNotEmpty(addShoppingCartGoodsRequestVo.getProductGroupList())) {
goodsType = GoodsTypeEnum.SET_MEAL_GOODS.getGoodsType();
}
/*else if (CommonsConstant.COUPON_TYPE == addShoppingCartGoodsRequestVo.getCouponType()){
goodsType = GoodsTypeEnum.ALL_COUPON_GOODS.getGoodsType();
}*/
if (addShoppingCartGoodsRequestVo.getOperationType() != null && addShoppingCartGoodsRequestVo.getOperationType() == 2) {
goodsType = GoodsTypeEnum.REDUCE_PRICE_GOODS.getGoodsType();
}
......
......@@ -204,6 +204,7 @@ public class CalculationServiceImpl {
activityDiscountsDto.setActivityType(discountType);
activityDiscountsDto.setDiscountAmount(0 - discountAmount);
activityDiscountsDto.setTenderId(discount.getTenderId());
activityDiscountsDto.setExtendType(discount.getExtendType());
activityDiscountsDtos.add(activityDiscountsDto);
}
}
......@@ -247,7 +248,7 @@ public class CalculationServiceImpl {
// couponPromotionVO.setOrderType(orderType);
// couponPromotionVO.setFlg(CouponFlag.YES.getCode());
//优惠券
couponDiscountCalculation.updateShoppingCartGoodsApportion(calculationDiscountResult, shoppingCartGoodsDto);
couponDiscountCalculation.updateShoppingCartGoodsApportion(calculationDiscountResult, shoppingCartGoodsDto, shoppingCartInfoRequestVo);
setMealCalculation.updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, calculationDiscountResult, shoppingCartGoodsDto);
......
package cn.freemud.service.impl.mcoffee.calculation;
import cn.freemud.adapter.CouponAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityDiscountsDto;
......@@ -9,6 +10,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CommonService;
import cn.freemud.service.impl.ItemServiceImpl;
import cn.freemud.service.impl.mcoffee.entity.CouponAvailableReq;
import cn.freemud.service.impl.mcoffee.entity.CouponAvailableResp;
import cn.freemud.service.impl.mcoffee.entity.CouponProductVo;
......@@ -49,7 +51,8 @@ public class CouponDiscountCalculation {
@Autowired
private CustomerExtendClient customerExtendClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired
private CommonService commonService;
......@@ -133,7 +136,7 @@ public class CouponDiscountCalculation {
/**
* 商品均摊
*/
public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto){
public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo){
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
......@@ -159,6 +162,10 @@ public class CouponDiscountCalculation {
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
//商品券商品
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
if (CollectionUtils.isNotEmpty(discounts)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponDiscount : discounts) {
......@@ -168,8 +175,24 @@ public class CouponDiscountCalculation {
activityDiscountsDto.setActivityName(couponDiscount.getActivityName());
activityDiscountsDto.setActivityType(couponDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscount());
Integer extendType = couponDiscount.getExtendType();
activityDiscountsDto.setExtendType(extendType);
activityDiscountsDto.setTenderId(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
productActivityDiscountsDtos.add(activityDiscountsDto);
if (extendType != null && extendType == 4 ) {
//调用商品的接口获取商品键位
List<String> productIds=Arrays.asList(cartGoods.getSkuId());
BaseResponse<Map<String, GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean>> baseResponse = itemService.getProducts(shoppingCartInfoRequestVo.getPartnerId(),
shoppingCartInfoRequestVo.getShopId(), productIds, false, shoppingCartInfoRequestVo.getMenuType());
if (ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) && baseResponse.getResult() != null){
GetMenuResponseDto.DataBean.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean = baseResponse.getResult().get(cartGoods.getSkuId());
cartGoods.setCustomerCode(productBean.getCustomerCode());
}
}else {
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
}
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(productActivityDiscountsDtos);
......@@ -177,16 +200,6 @@ public class CouponDiscountCalculation {
}
}
if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue;
}
//商品券键位编号为空
if(StringUtils.isBlank(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo())){
//直接抛出异常导致同一个 普通商品 和万能券商品 校验有问题,故促销未返回,默认为空
// throw new ServiceException(ResponseResult.SHOPPING_CART_SEAT_EMPTY);
cartGoods.setCustomerCode("");
}
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
}
}
......
......@@ -119,6 +119,11 @@ public class MCoffeeAddGoodsRequestVo {
private Integer operationType;
/**
* 券类型 0:商品券
*/
private Integer couponType;
/**
* 优惠券号
*/
private String couponCode;
......
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.CouponCodeResponseDto;
import cn.freemud.entities.dto.CouponCodeVerificationMCCafeDto;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient(name = "COUPONMCCafe",url="http://coupon-api-gateway-koderover-dev-coupon.api-ingress.sandload.cn")
public interface CouponOfflineMCCafeClient {
@PostMapping("/mccafe/redeem")
CouponRedeemResponse redeem(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/cancelRedeem")
CouponRedeemResponse cancelRedeem(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/query")
CouponRedeemResponse query(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/lock")
CouponRedeemResponse lock(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
@PostMapping("/mccafe/unlock")
CouponRedeemResponse unlock(CouponCodeVerificationMCCafeDto couponCodeVerificationMCCafeDto);
}
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