Commit e9100db9 by chongfu.liang

重构

parent f5a0d474
package cn.freemud.demo.adapter.manager; package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.GetPaidRuleRequestBO;
import cn.freemud.demo.entities.GetUserScoreUseDetailBO; import cn.freemud.demo.entities.GetUserScoreUseDetailBO;
import cn.freemud.demo.entities.ReceiveAddressBO; import cn.freemud.demo.entities.ReceiveAddressBO;
import cn.freemud.entities.dto.GetPaidRuleRequestDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest; import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import ma.glasnost.orika.MapperFacade; import ma.glasnost.orika.MapperFacade;
...@@ -21,5 +23,9 @@ public class CustomerBO2DTOAdapter { ...@@ -21,5 +23,9 @@ public class CustomerBO2DTOAdapter {
return dto; return dto;
} }
public GetPaidRuleRequestDto convert2GetPaidRuleRequestDto(GetPaidRuleRequestBO bo) {
GetPaidRuleRequestDto dto = mapperFacade.map(bo, GetPaidRuleRequestDto.class);
return dto;
}
} }
package cn.freemud.demo.adapter.manager; package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.PaidRuleResponseBO;
import cn.freemud.demo.entities.ReceiveAddressBO; import cn.freemud.demo.entities.ReceiveAddressBO;
import cn.freemud.demo.entities.StoreInfoBO; import cn.freemud.demo.entities.StoreInfoBO;
import cn.freemud.demo.entities.UserScoreUserDetailBO; import cn.freemud.demo.entities.UserScoreUserDetailBO;
import cn.freemud.entities.dto.GetPaidRuleResponseDto;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse; import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
...@@ -28,4 +30,9 @@ public class CustomerDTO2BOAdapter { ...@@ -28,4 +30,9 @@ public class CustomerDTO2BOAdapter {
return bo; return bo;
} }
public PaidRuleResponseBO convert2PaidRuleResponseBO(GetPaidRuleResponseDto dto) {
PaidRuleResponseBO bo = mapperFacade.map(dto, PaidRuleResponseBO.class);
return bo;
}
} }
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class BuyMemberCardBO {
private Integer activityPrice;
private Integer firstCouponAmount;
}
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class GetPaidRuleRequestBO {
private String partnerId;
private String paidId;
private String ruleId;
}
package cn.freemud.demo.entities;
import lombok.Data;
@Data
public class PaidRuleResponseBO {
private String ruleId;
private String ruleName;
private Integer effectiveDays;
private Integer price;
private Integer activityPrice;
private Integer isFirstCoupon;
private Integer firstCouponAmount;
}
...@@ -29,6 +29,21 @@ public class ListCartGoodsBO { ...@@ -29,6 +29,21 @@ public class ListCartGoodsBO {
private ManagerServiceBO managerService; private ManagerServiceBO managerService;
private CartGoods addGoods; private CartGoods addGoods;
/**
* 会员卡信息
*/
private ShoppingCartInfoRequestVo.BuyMemberCard buyMemberCard;
/**
* 到店类型 orderType 传1的时候 如果reachStoreTyp为空转成订单类型4 如果不为空存储4(打包带走)和5(店内就餐)
*/
private Integer reachStoreType;
/**
* 是否为结算页
* 1:结算页 0:点餐页
* 结算页会查询用户优惠券,点餐页不会查询用户优惠券
*/
private Integer flag;
/** /**
* 加价购商品 * 加价购商品
......
package cn.freemud.demo.manager.customer; package cn.freemud.demo.manager.customer;
import cn.freemud.demo.entities.*; import cn.freemud.demo.entities.*;
import cn.freemud.entities.dto.GetPaidRuleRequestDto;
import cn.freemud.entities.dto.GetPaidRuleResponseDto;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
...@@ -21,4 +23,10 @@ public class CustomerManager { ...@@ -21,4 +23,10 @@ public class CustomerManager {
return userScoreUserDetail; return userScoreUserDetail;
} }
public PaidRuleResponseBO getPaidRule(GetPaidRuleRequestBO getPaidRuleRequestBO, CustomerService customerService) {
PaidRuleResponseBO userScoreUserDetail = customerService.getPaidRule(getPaidRuleRequestBO);
return userScoreUserDetail;
}
} }
...@@ -15,4 +15,6 @@ public interface CustomerService { ...@@ -15,4 +15,6 @@ public interface CustomerService {
UserScoreUserDetailBO getUserScoreUseDetail(GetUserScoreUseDetailBO getUserScoreUseDetailBO); UserScoreUserDetailBO getUserScoreUseDetail(GetUserScoreUseDetailBO getUserScoreUseDetailBO);
PaidRuleResponseBO getPaidRule(GetPaidRuleRequestBO getPaidRuleRequestBO);
} }
...@@ -4,6 +4,8 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -4,6 +4,8 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.demo.adapter.manager.CustomerBO2DTOAdapter; import cn.freemud.demo.adapter.manager.CustomerBO2DTOAdapter;
import cn.freemud.demo.adapter.manager.CustomerDTO2BOAdapter; import cn.freemud.demo.adapter.manager.CustomerDTO2BOAdapter;
import cn.freemud.demo.entities.*; import cn.freemud.demo.entities.*;
import cn.freemud.entities.dto.GetPaidRuleRequestDto;
import cn.freemud.entities.dto.GetPaidRuleResponseDto;
import cn.freemud.entities.dto.user.GetSessionUserInfoDto; import cn.freemud.entities.dto.user.GetSessionUserInfoDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest; import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse; import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
...@@ -90,4 +92,16 @@ public class KgdCustomerServceImpl implements CustomerService { ...@@ -90,4 +92,16 @@ public class KgdCustomerServceImpl implements CustomerService {
} }
return userScoreUserDetailBO; return userScoreUserDetailBO;
} }
@Override
public PaidRuleResponseBO getPaidRule(GetPaidRuleRequestBO getPaidRuleRequestBO) {
GetPaidRuleRequestDto getPaidRuleRequestDto = customerBO2DTOAdapter.convert2GetPaidRuleRequestDto(getPaidRuleRequestBO);
BaseResponse<GetPaidRuleResponseDto> baseResponse = customerApplicationClient.getPaidRule(getPaidRuleRequestDto);
if (baseResponse == null || !ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode()) || baseResponse.getResult() == null
|| baseResponse.getResult().getActivityPrice() == null) {
return null;
}
PaidRuleResponseBO paidRuleResponseBO = customerDTO2BOAdapter.convert2PaidRuleResponseBO(baseResponse.getResult());
return paidRuleResponseBO;
}
} }
...@@ -22,10 +22,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; ...@@ -22,10 +22,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest; import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse; import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.*;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.BizServiceException; import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
...@@ -54,6 +51,8 @@ import java.util.function.Function; ...@@ -54,6 +51,8 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.freemud.constant.ApplicationConstant.*; import static cn.freemud.constant.ApplicationConstant.*;
import static cn.freemud.constant.ShoppingCartConstant.SHOPPING_CART_EMPTY_GOODS_LIST;
import static cn.freemud.constant.ShoppingCartConstant.SHOPPING_CART_INVALIAD_GOODS;
public class AbstractListCartGoodsService implements ListCartGoodsService { public class AbstractListCartGoodsService implements ListCartGoodsService {
...@@ -217,36 +216,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -217,36 +216,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
return bo; return bo;
} }
private GetCouponDetailBO convert2GetCouponDetailBO(ListCartGoodsBO baseRequestBO) {
GetCouponDetailBO getCouponDetailBO = new GetCouponDetailBO();
getCouponDetailBO.setPartnerId(baseRequestBO.getPartnerId());
getCouponDetailBO.setCouponCode(baseRequestBO.getCouponCode());
getCouponDetailBO.setStoreCode(baseRequestBO.getShopId());
return getCouponDetailBO;
}
private GetProductBO convert2ProductBO(ListCartGoodsBO baseRequestBO, CartGoods cartGoods) {
GetProductBO getProductBO = new GetProductBO();
getProductBO.setSkuid(cartGoods.getSkuId());
getProductBO.setSpuid(cartGoods.getSpuId());
getProductBO.setStoreId(baseRequestBO.getShopId());
getProductBO.setPartnerId(baseRequestBO.getPartnerId());
getProductBO.setMenuType(BusinessTypeEnum.getByType(baseRequestBO.getMenuType()).getCode());
return getProductBO;
}
private GetProductBySkuIdBO convert2GetProductBySkuIdBO(ListCartGoodsBO baseRequestBO) {
GetProductBySkuIdBO getProductBySkuIdBO = new GetProductBySkuIdBO();
getProductBySkuIdBO.setMenuType(baseRequestBO.getMenuType());
getProductBySkuIdBO.setPartnerId(baseRequestBO.getPartnerId());
List<String> skuids = new ArrayList<>();
skuids.add(baseRequestBO.getSkuId());
getProductBySkuIdBO.setSkuids(skuids);
getProductBySkuIdBO.setStoreId(baseRequestBO.getShopId());
return getProductBySkuIdBO;
}
/** /**
* 具体业务逻辑校验, 例如商品数量,库存等校验 * 具体业务逻辑校验, 例如商品数量,库存等校验
...@@ -271,7 +240,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -271,7 +240,7 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
DiscountResultBO customCalCostBO = this.customAddGoodsToShoppingCart(baseRequestDTO, addGoodsToShoppingCartBO, commCalCostBO); DiscountResultBO customCalCostBO = this.customAddGoodsToShoppingCart(baseRequestDTO, addGoodsToShoppingCartBO, commCalCostBO);
return commCalCostBO; return customCalCostBO;
} }
...@@ -449,13 +418,12 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -449,13 +418,12 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
/** /**
* 特价类型超出部分提示 * 特价类型超出部分提示
*/ */
calculationCommonService.drawSurpassDiscountInfo(discountResult, shoppingCartGoodsResponseVo); // calculationCommonService.drawSurpassDiscountInfo(discountResult, shoppingCartGoodsResponseVo);
if (ShoppingCartConstant.ADD_AND_UPDATE.equals(opt)) {
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.ADD_AND_UPDATE); Long packAmount = this.getPackAmount(baseRequestDTO, shoppingGoodsAmountBO);
} else if (ShoppingCartConstant.QUERY_INFO.equals(opt)) {
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.QUERY_INFO);
calculationCommonService.addNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo); BuyMemberCardBO buyMemberCardBO = this.addNeedCardAmount(baseRequestDTO);
}
// 买一赠一寄杯 // 买一赠一寄杯
...@@ -463,10 +431,27 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -463,10 +431,27 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
shoppingCartGoodsBO.setOriginalTotalAmount(shoppingGoodsAmountBO.getOriginalTotalAmount()); shoppingCartGoodsBO.setOriginalTotalAmount(shoppingGoodsAmountBO.getOriginalTotalAmount());
shoppingCartGoodsBO.setNewPackAmount(null); shoppingCartGoodsBO.setNewPackAmount(packAmount);
Long totalAmount = shoppingGoodsAmountBO.getTotalAmount();
Long totalDiscountAmount = shoppingGoodsAmountBO.getTotalDiscountAmount();
// 加价购金额
if (additionBO != null){
totalAmount += additionBO.getAmount();
totalDiscountAmount += additionBO.getDiscountAmount();
}
// 积分抵扣
if(scoreReduceBO != null){
totalAmount -= scoreReduceBO.getDiscountAmount();
totalDiscountAmount -= scoreReduceBO.getDiscountAmount();
}
shoppingCartGoodsBO.setTotalAmount(shoppingGoodsAmountBO.getTotalAmount()); shoppingCartGoodsBO.setTotalAmount(shoppingGoodsAmountBO.getTotalAmount());
shoppingCartGoodsBO.setTotalDiscountAmount(shoppingGoodsAmountBO.getTotalDiscountAmount()); shoppingCartGoodsBO.setTotalDiscountAmount(shoppingGoodsAmountBO.getTotalDiscountAmount());
shoppingCartGoodsBO.setFullDiscount(fullReductionBO.getDiscount()); shoppingCartGoodsBO.setFullDiscount(fullReductionBO.getDiscount());
distributeBO.getCartGoods().addAll(giftGoods); distributeBO.getCartGoods().addAll(giftGoods);
shoppingCartGoodsBO.setChooseGoods(chooseGoodsBO); shoppingCartGoodsBO.setChooseGoods(chooseGoodsBO);
...@@ -483,6 +468,52 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -483,6 +468,52 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
return setMessageBO; return setMessageBO;
} }
/**
* 在原价、现价、折扣价上增加第一次使用会员卡的费用
*
*/
public BuyMemberCardBO addNeedCardAmount(ListCartGoodsBO baseRequestDTO) {
BuyMemberCardBO buyMemberCardBO = new BuyMemberCardBO();
ShoppingCartInfoRequestVo.BuyMemberCard buyMemberCard = baseRequestDTO.getBuyMemberCard();
if (baseRequestDTO.getBuyMemberCard() == null || StringUtils.isEmpty(buyMemberCard.getPaidId()) || StringUtils.isEmpty(buyMemberCard.getRuleId())) {
return buyMemberCardBO;
}
GetPaidRuleRequestBO getPaidRuleRequestDto = new GetPaidRuleRequestBO();
getPaidRuleRequestDto.setPartnerId(baseRequestDTO.getPartnerId());
getPaidRuleRequestDto.setPaidId(buyMemberCard.getPaidId());
getPaidRuleRequestDto.setRuleId(buyMemberCard.getRuleId());
PaidRuleResponseBO paidRule = customerManager.getPaidRule(getPaidRuleRequestDto, baseRequestDTO.getManagerService().getCustomerService());
if (paidRule != null){
Integer activityPrice = paidRule.getActivityPrice();
}
// 购买会员卡的金额
Integer activityPrice = paidRule.getActivityPrice();
// 首次使用会员卡享受的折扣金额
Integer firstCouponAmount = paidRule.getFirstCouponAmount() == null ? 0 : paidRule.getFirstCouponAmount();
buyMemberCardBO.setActivityPrice(activityPrice);
buyMemberCardBO.setFirstCouponAmount(firstCouponAmount);
return buyMemberCardBO;
}
public Long getPackAmount(ListCartGoodsBO baseRequestDTO, ShoppingGoodsAmountBO shoppingGoodsAmountBO) {
//========================== 购物车查询特有逻辑 =================================
// 到店自取包装费设为null,外卖要计算包装费,flag为1表示去结算
// 兼容老版本判断null
if (Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.COLLECT_GOODS.getCode())
&& (Objects.equals(baseRequestDTO.getReachStoreType(), null)
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.EAT_IN.getCode()))) {
return null;
} else if ((Objects.equals(baseRequestDTO.getOrderType(), CreateOrderType.TAKE_OUT.getCode())
|| Objects.equals(baseRequestDTO.getReachStoreType(), OrderType.COLLECT_GOODS.getCode()))
&& Objects.equals(baseRequestDTO.getFlag(), CouponFlag.YES.getCode())) {
return shoppingGoodsAmountBO.getNewPackAmount() == null ? 0L : shoppingGoodsAmountBO.getNewPackAmount();
}
return null;
}
public DeliveryBO delivery(CalculationDiscountBO.CalculationDiscountResult discountResult, ListCartGoodsBO baseRequestDTO public DeliveryBO delivery(CalculationDiscountBO.CalculationDiscountResult discountResult, ListCartGoodsBO baseRequestDTO
, ActivityQueryDto activityQueryDto , ActivityQueryDto activityQueryDto
, Long deliveryAmount) { , Long deliveryAmount) {
......
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