Commit e9100db9 by chongfu.liang

重构

parent f5a0d474
package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.GetPaidRuleRequestBO;
import cn.freemud.demo.entities.GetUserScoreUseDetailBO;
import cn.freemud.demo.entities.ReceiveAddressBO;
import cn.freemud.entities.dto.GetPaidRuleRequestDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import ma.glasnost.orika.MapperFacade;
......@@ -21,5 +23,9 @@ public class CustomerBO2DTOAdapter {
return dto;
}
public GetPaidRuleRequestDto convert2GetPaidRuleRequestDto(GetPaidRuleRequestBO bo) {
GetPaidRuleRequestDto dto = mapperFacade.map(bo, GetPaidRuleRequestDto.class);
return dto;
}
}
package cn.freemud.demo.adapter.manager;
import cn.freemud.demo.entities.PaidRuleResponseBO;
import cn.freemud.demo.entities.ReceiveAddressBO;
import cn.freemud.demo.entities.StoreInfoBO;
import cn.freemud.demo.entities.UserScoreUserDetailBO;
import cn.freemud.entities.dto.GetPaidRuleResponseDto;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
......@@ -28,4 +30,9 @@ public class CustomerDTO2BOAdapter {
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 {
private ManagerServiceBO managerService;
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;
import cn.freemud.demo.entities.*;
import cn.freemud.entities.dto.GetPaidRuleRequestDto;
import cn.freemud.entities.dto.GetPaidRuleResponseDto;
import org.springframework.stereotype.Service;
@Service
......@@ -21,4 +23,10 @@ public class CustomerManager {
return userScoreUserDetail;
}
public PaidRuleResponseBO getPaidRule(GetPaidRuleRequestBO getPaidRuleRequestBO, CustomerService customerService) {
PaidRuleResponseBO userScoreUserDetail = customerService.getPaidRule(getPaidRuleRequestBO);
return userScoreUserDetail;
}
}
......@@ -15,4 +15,6 @@ public interface CustomerService {
UserScoreUserDetailBO getUserScoreUseDetail(GetUserScoreUseDetailBO getUserScoreUseDetailBO);
PaidRuleResponseBO getPaidRule(GetPaidRuleRequestBO getPaidRuleRequestBO);
}
......@@ -4,6 +4,8 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.demo.adapter.manager.CustomerBO2DTOAdapter;
import cn.freemud.demo.adapter.manager.CustomerDTO2BOAdapter;
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.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
......@@ -90,4 +92,16 @@ public class KgdCustomerServceImpl implements CustomerService {
}
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;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.*;
import cn.freemud.interceptor.BizServiceException;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
......@@ -54,6 +51,8 @@ import java.util.function.Function;
import java.util.stream.Collectors;
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 {
......@@ -217,36 +216,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
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 {
DiscountResultBO customCalCostBO = this.customAddGoodsToShoppingCart(baseRequestDTO, addGoodsToShoppingCartBO, commCalCostBO);
return commCalCostBO;
return customCalCostBO;
}
......@@ -449,13 +418,12 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
/**
* 特价类型超出部分提示
*/
calculationCommonService.drawSurpassDiscountInfo(discountResult, shoppingCartGoodsResponseVo);
if (ShoppingCartConstant.ADD_AND_UPDATE.equals(opt)) {
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.ADD_AND_UPDATE);
} else if (ShoppingCartConstant.QUERY_INFO.equals(opt)) {
calculationCommonService.setAddAndUpdateResponse(cartGoodsList, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo, ShoppingCartConstant.QUERY_INFO);
calculationCommonService.addNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo);
}
// calculationCommonService.drawSurpassDiscountInfo(discountResult, shoppingCartGoodsResponseVo);
Long packAmount = this.getPackAmount(baseRequestDTO, shoppingGoodsAmountBO);
BuyMemberCardBO buyMemberCardBO = this.addNeedCardAmount(baseRequestDTO);
// 买一赠一寄杯
......@@ -463,10 +431,27 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
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.setTotalDiscountAmount(shoppingGoodsAmountBO.getTotalDiscountAmount());
shoppingCartGoodsBO.setFullDiscount(fullReductionBO.getDiscount());
distributeBO.getCartGoods().addAll(giftGoods);
shoppingCartGoodsBO.setChooseGoods(chooseGoodsBO);
......@@ -483,6 +468,52 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
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
, ActivityQueryDto activityQueryDto
, 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