Commit abcbc31c authored by 周健威's avatar 周健威

修改订单相关会员权益等代码

parent 3820e3a7
......@@ -242,4 +242,11 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "使用的优惠券票号,逗号分割")
@Column(name = "coupon_ticker_nos")
private String couponTickerNos;
/**
* 下单时的会员等级
*/
@ApiModelProperty(value = "下单时的会员等级")
@Column(name = "member_level")
private Integer memberLevel;
}
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
......@@ -25,7 +27,7 @@ import java.util.Map;
import java.util.stream.Collectors;
@Transactional
public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends OrderDetail>{
public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends OrderDetail> implements UserRestInterface {
public static final int VERSION_INITIAL = 0;
......@@ -46,6 +48,14 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
@Autowired
ActivityFeign activityFeign;
@Autowired
protected UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
protected OrderTypeEnum orderTypeEnum;
protected Integer channel;
......@@ -76,6 +86,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
//设置用户id
baseOrder.setUserId(Integer.valueOf(BaseContextHandler.getUserID()));
baseOrder.setMemberLevel(getAppUser().getMemberLevel());
return baseOrder;
}
......
......@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
......@@ -39,7 +40,7 @@ import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
@Log4j
public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz, MemberBO> {
public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz, MemberBO> implements UserRestInterface {
@Autowired
TourFeign tourFeign;
......@@ -65,9 +66,6 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Autowired
protected UserAuthConfig userAuthConfig;
@Autowired
UserFeign userFeign;
@Autowired
ActivityFeign activityFeign;
......@@ -79,10 +77,6 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
this.orderTypeEnum = OrderTypeEnum.MEMBER;
}
public AppUserDTO getUserInfo(){
return userFeign.userDetailByToken(userAuthConfig.getToken(request)).getData();
}
@Override
public void initDetail(MemberBO bo) {
super.initDetail(bo);
......
......@@ -72,9 +72,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Autowired
OrderTemplateBiz orderTemplateBiz;
@Autowired
UserFeign userFeign;
@Autowired
ThirdFeign thirdFeign;
......@@ -136,8 +133,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//设置订单名称
bo.getOrder().setName(bo.getVehicleModel().getName());
//扣减免费天数
if(null != bo.getFreeDays() && bo.getFreeDays() > 0) {
//是否有使用会员权益 则调用接口触发新增消费记录次数
//扣减免费天数
if(SYS_TRUE.equals(bo.getOrder().getHasMemberRight())) {
if(null == bo.getFreeDays()) {
bo.setFreeDays(0);
}
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), UserFeign.MEMBER_DAYS_LOCK);
if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
......@@ -224,20 +225,22 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
String[] prices = StrUtil.isBlank(vehicleModel.getRentDiscountPrice())
?new String[]{vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString()}
:vehicleModel.getRentDiscountPrice().split(",");
switch (MemberEnum.getByCode(detail.getAppUserDTO().getMemberLevel())) {
Integer rebate = new Integer(0);
switch (MemberEnum.getByCode(dto.getMemberLevel())) {
case NORMAL:
modelAmount = handleDiscount(vehicleModel, prices, NORMAL);
modelAmount = handleDiscount(vehicleModel, prices, NORMAL, rebate);
detail.getOrder().setHasMemberRight(SYS_TRUE);
break;
case GOLD:
modelAmount = handleDiscount(vehicleModel, prices, GOLD);
modelAmount = handleDiscount(vehicleModel, prices, GOLD, rebate);
detail.getOrder().setHasMemberRight(SYS_TRUE);
break;
case DIAMOND:
modelAmount = handleDiscount(vehicleModel, prices, DIAMOND);
modelAmount = handleDiscount(vehicleModel, prices, DIAMOND, rebate);
detail.getOrder().setHasMemberRight(SYS_TRUE);
break;
}
detail.setRebate(rebate);
vehicleOrderItem.setUnitPrice(modelAmount);
}else {
modelAmount = vehicleModel.getPrice();
......@@ -311,13 +314,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
* @param memberEnum
* @return
*/
private BigDecimal handleDiscount(VehicleModel vehicleModel, String[] prices, MemberEnum memberEnum) {
private BigDecimal handleDiscount(VehicleModel vehicleModel, String[] prices, MemberEnum memberEnum, Integer rebate) {
BigDecimal modelAmount;//会员比例
BigDecimal rebatePercent = new BigDecimal(String.valueOf((rebate/100d)));
BigDecimal hundred = BigDecimal.TEN;
if(DISCOUNT_STATUS_MEMBER.equals(vehicleModel.getRentDiscountStatus())) {
modelAmount = new BigDecimal(String.valueOf((memberEnum.getPercent()/100d))).multiply(vehicleModel.getPrice()).setScale(2, BigDecimal.ROUND_HALF_UP);
rebate = memberEnum.getPercent();
modelAmount = rebatePercent.multiply(vehicleModel.getPrice()).setScale(2, BigDecimal.ROUND_HALF_UP);
}else {
//会员固定价列表
modelAmount = new BigDecimal(prices[(memberEnum.getCode() - 1)]);
rebate = modelAmount.divide(vehicleModel.getPrice()).multiply(hundred).setScale(0, BigDecimal.ROUND_UP).intValue();
}
return modelAmount;
}
......
......@@ -76,9 +76,6 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
@Autowired
protected UserAuthConfig userAuthConfig;
@Autowired
UserFeign userFeign;
@Autowired
ThirdFeign thirdFeign;
......
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