Commit 85e17d67 authored by 周健威's avatar 周健威

修改计价代码

parent d7b6aa06
......@@ -4,10 +4,10 @@ import java.util.HashMap;
import java.util.Map;
public enum MemberEnum {
NONE(0, "非会员"),
NORMAL(1, "普通会员"),
GOLD(2, "黄金会员"),
DIAMOND(3, "钻石会员"),
NONE(0, "非会员", 100),
NORMAL(1, "普通会员", 80),
GOLD(2, "黄金会员", 70),
DIAMOND(3, "钻石会员", 60),
;
/**
* 编码
......@@ -18,11 +18,17 @@ public enum MemberEnum {
*/
private String desc;
/**
* 优惠比例
*/
private Integer percent;
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
MemberEnum(Integer code, String desc){
MemberEnum(Integer code, String desc, Integer percent){
this.code=code;
this.desc=desc;
this.percent=percent;
}
public Integer getCode() {
......@@ -41,7 +47,21 @@ public enum MemberEnum {
this.desc = desc;
}
public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code);
public Integer getPercent() {
return percent;
}
public void setPercent(Integer percent) {
this.percent = percent;
}
public static MemberEnum getByCode(Integer code) {
if(code == null) return null;
for(MemberEnum enumE : values()) {
if(enumE.getCode().equals(code)) {
return enumE;
}
}
return null;
}
}
\ No newline at end of file
......@@ -22,5 +22,6 @@ public class AppUserDTO {
private Long createtime;
private Long updatetime;
private Integer isdel;
private Integer rentFreeDays;
}
......@@ -12,9 +12,11 @@ import com.github.wxiaoqi.security.admin.vo.FrontUser;
import com.github.wxiaoqi.security.admin.vo.MenuTree;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
......@@ -44,11 +46,11 @@ public class PublicController {
ObjectRestResponse userinfoByToken(String token) throws Exception {
String username = userAuthUtil.getInfoFromToken(token).getUniqueName();
if (username == null) {
throw new Exception();
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
User user = userBiz.getUserByUsername(username);
if (user == null) {
throw new Exception();
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
return new ObjectRestResponse<User>().rel(true).data(user);
}
......@@ -58,12 +60,12 @@ public class PublicController {
ObjectRestResponse userDetailByToken(String token) throws Exception {
String username = userAuthUtil.getInfoFromToken(token).getId();
if (username == null) {
throw new Exception();
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
Integer userid=Integer.parseInt(username);
AppUserDetail user = detailBiz.getUserByUserid(userid);
if (user == null) {
throw new Exception();
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
return new ObjectRestResponse<AppUserDetail>().rel(true).data(user);
}
......
......@@ -14,5 +14,9 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private VehicleModel vehicleModel;
private BookVehicleVO bookVehicleVO;
private Integer damageSafe;
/**
* 是否使用出租免费天数
*/
private Integer rentFreeDay;
private AppUserDTO appUserDTO;
}
......@@ -2,11 +2,8 @@ package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
......@@ -15,13 +12,11 @@ import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderCostDetail;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import com.xxfc.platform.vehicle.pojo.RentVehicleBookDTO;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -29,9 +24,9 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*;
@Service
@Log4j
......@@ -41,6 +36,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
private static Integer DRIVER_TYPE_COMPANY = 1;
private static Integer DRIVER_TYPE_DAMAGE_SAFE = 1;
private static Integer DISCOUNT_STATUS_NONE = 0;
private static Integer DISCOUNT_STATUS_MEMBER = 1;
private static Integer DISCOUNT_STATUS_FIXED = 2;
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
......@@ -93,14 +91,46 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
BigDecimal vehicleAmount = BigDecimal.ZERO;
BigDecimal driverAmount = BigDecimal.ZERO;
BigDecimal damageSafeAmount = BigDecimal.ZERO;
BigDecimal modelAmount = BigDecimal.ZERO;
Integer vehicleDayNum = 0;
Integer freeDayNum = 0;
//当前用户
AppUserDTO dto = detail.getAppUserDTO();
// //如果用户存在,并且为会员,并且车辆有优惠价
// if(null != dto && detail.getRentFreeDay() > 0 && dto.getRentFreeDays() > 0) {
// if(detail.getDayNum() > dto.getRentFreeDays()) {
// freeDayNum = dto.getRentFreeDays();
// }else {
// freeDayNum = detail.getDayNum();
// }
// vehicleDayNum = detail.getDayNum() - freeDayNum;
// }else {
// vehicleDayNum = detail.getDayNum();
// }
//计算价格
//计算车辆费用
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
// detail.getAppUserDTO()
// if(null != detail.getAppUserDTO() && MemberEnum.NONE.equals(detail.getAppUserDTO()))
vehicleAmount = vehicleAmount.add(vehicleModel.getPrice().multiply(BigDecimal.valueOf(detail.getDayNum())));
//如果用户存在,并且为会员,并且车辆有优惠价
if(null != dto && !NONE.equals(detail.getAppUserDTO()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) {
String[] prices = vehicleModel.getRentDiscountPrice().split(",");
switch (MemberEnum.getByCode(detail.getAppUserDTO().getIsMember())) {
case NORMAL:
modelAmount = handleDiscount(vehicleModel, prices, NORMAL);
break;
case GOLD:
modelAmount = handleDiscount(vehicleModel, prices, GOLD);
break;
case DIAMOND:
modelAmount = handleDiscount(vehicleModel, prices, DIAMOND);
break;
}
}else {
modelAmount = vehicleModel.getPrice();
}
vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(detail.getDayNum())));
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
//计算司机费用
driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
......@@ -125,7 +155,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setDamageSafeAmount(damageSafeAmount);
rvp.setRealAmount(orderAmount);
rvp.setDeposit(vehicleModel.getDeposit());
rvp.setModelAmount(vehicleModel.getPrice());
rvp.setModelAmount(modelAmount);
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setDamageSafePrice(DAMAGE_SAFE);
rvp.setModelName(vehicleModel.getName());
......@@ -138,6 +168,24 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return rvp;
}
/**
* 获取会员比例或者会员价
* @param vehicleModel
* @param prices
* @param memberEnum
* @return
*/
private BigDecimal handleDiscount(VehicleModel vehicleModel, String[] prices, MemberEnum memberEnum) {
BigDecimal modelAmount;//会员比例
if(DISCOUNT_STATUS_MEMBER.equals(vehicleModel.getRentDiscountStatus())) {
modelAmount = new BigDecimal(String.valueOf((memberEnum.getPercent()/100))).multiply(vehicleModel.getPrice());
}else {
//会员固定价列表
modelAmount = new BigDecimal(prices[(memberEnum.getCode() - 1)]);
}
return modelAmount;
}
private String handlechildren(RentVehicleBO detail) {
StringBuffer childrenStr = new StringBuffer("${tem_0101}");
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
......
......@@ -131,7 +131,7 @@ public class VehicleModel implements Serializable {
@Column(name = "rent_discount_price")
@ApiModelProperty(value = "租车优惠价格")
private BigDecimal RentDiscountPrice;
private String rentDiscountPrice;
@Column(name = "buy_price")
@ApiModelProperty(value = "购买价格")
......
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