Commit 861531e1 authored by libin's avatar libin

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

parents dbb8fec7 f9b013b3
...@@ -3,11 +3,9 @@ package com.xxfc.platform.order.contant.enumerate; ...@@ -3,11 +3,9 @@ package com.xxfc.platform.order.contant.enumerate;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public enum DiscountsEnum { public enum CrosstownTypeEnum {
NONE(0, "没有优惠"), RentVehicle(1, "交车"),
MEMBER_RIGHT(1, "会员权益"), TOUR(2, "还车"),
COUPON(2, "优惠券"),
MEMBER_COUPON(3, "会员权益+ 优惠券"),
; ;
/** /**
* 编码 * 编码
...@@ -20,7 +18,7 @@ public enum DiscountsEnum { ...@@ -20,7 +18,7 @@ public enum DiscountsEnum {
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>(); private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
DiscountsEnum(Integer code, String desc){ CrosstownTypeEnum(Integer code, String desc){
this.code=code; this.code=code;
this.desc=desc; this.desc=desc;
} }
......
package com.xxfc.platform.order.contant.enumerate;
import java.util.HashMap;
import java.util.Map;
public enum RefundStatusEnum {
NONE(0, "未退还"),
ALL(1, "已退还所有钱"),
RESIDUE_ILLEGAL(2, "已退还部分押金(保留违章预备金)"),
REFUND_DEPOSIT(3, "已退还所有押金(扣除该扣除的)"),
;
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
RefundStatusEnum(Integer code, String desc){
this.code=code;
this.desc=desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code);
}
}
\ No newline at end of file
...@@ -287,4 +287,11 @@ public class OrderRentVehicleDetail implements Serializable { ...@@ -287,4 +287,11 @@ public class OrderRentVehicleDetail implements Serializable {
@ApiModelProperty(value = "预定记录id") @ApiModelProperty(value = "预定记录id")
private Long bookRecordId; private Long bookRecordId;
/**
* 是否购买免赔
*/
@Column(name = "damage_safe")
@ApiModelProperty(value = "是否购买免赔")
private Integer damageSafe;
} }
...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.entity; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.entity;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.math.BigDecimal;
@Table(name = "order_vehicle_crosstown") @Table(name = "order_vehicle_crosstown")
@Data @Data
...@@ -99,6 +100,7 @@ public class OrderVehicaleCrosstown { ...@@ -99,6 +100,7 @@ public class OrderVehicaleCrosstown {
* 扣除项明细 json * 扣除项明细 json
* deductions: 扣除项 * deductions: 扣除项
* cost:费用 * cost:费用
* id:编号(用于顺序)
*/ */
private String dedDetail; private String dedDetail;
...@@ -110,12 +112,12 @@ public class OrderVehicaleCrosstown { ...@@ -110,12 +112,12 @@ public class OrderVehicaleCrosstown {
/** /**
* 合计扣除费用 * 合计扣除费用
*/ */
private Integer deductionCost; private BigDecimal deductionCost;
/** /**
* 剩余押金 * 剩余押金
*/ */
private Integer restDeposit; private BigDecimal restDeposit;
/** /**
* 驾驶人Id * 驾驶人Id
......
package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class DedDetailDTO {
/**
* : 扣除项
*/
String deductions;
/**
* :费用
*/
BigDecimal cost;
/**
* 编号(用于顺序)
*/
Integer id;
}
...@@ -16,7 +16,6 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -16,7 +16,6 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private BaseOrder order; private BaseOrder order;
private VehicleModel vehicleModel; private VehicleModel vehicleModel;
private BookVehicleVO bookVehicleVO; private BookVehicleVO bookVehicleVO;
private Integer damageSafe;
/** /**
* 是否使用出租免费天数 * 是否使用出租免费天数
*/ */
......
...@@ -12,6 +12,7 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode; ...@@ -12,6 +12,7 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum; import com.xxfc.platform.order.contant.enumerate.RefundTypeEnum;
import com.xxfc.platform.order.entity.*; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.BaseOrderMapper; import com.xxfc.platform.order.mapper.BaseOrderMapper;
...@@ -298,7 +299,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -298,7 +299,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//退款金额 //退款金额
BigDecimal refundAmont = depositAmont.add(refundGoodsAmont); BigDecimal refundAmont = depositAmont.add(refundGoodsAmont);
//退款子流程: 订单基础,退款描述,退款金额 //退款子流程: 订单基础,退款描述,退款金额
refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.RentVehicle.getCode()); refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.RentVehicle.getCode(), RefundStatusEnum.ALL.getCode());
} }
/** /**
...@@ -306,8 +307,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -306,8 +307,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param baseOrder * @param baseOrder
* @param refundDesc * @param refundDesc
* @param refundAmont * @param refundAmont
* @param refundType
* @param refundStatus
*/ */
private void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal refundAmont, Integer refundType) { public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal refundAmont, Integer refundType, Integer refundStatus) {
OrderRefundVo orv = new OrderRefundVo(){{ OrderRefundVo orv = new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue()); setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo()); setOrderNo(baseOrder.getNo());
...@@ -317,7 +320,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -317,7 +320,15 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
String refundTradeNo = thirdFeign.refund(orv).getData(); String refundTradeNo = thirdFeign.refund(orv).getData();
//记录订单退款记录 //记录订单退款记录
addOrderRefund(baseOrder.getId(), refundDesc, refundAmont, refundTradeNo, refundType); Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmont, refundTradeNo, refundType);
//更新订单的退款状态和退款时间
if(SYS_TRUE.equals(flag) && null != refundStatus) {
updateSelectiveByIdReT(new BaseOrder(){{
setRefundStatus(refundStatus);
setRefundTime(System.currentTimeMillis());
}});
}
} }
/** /**
...@@ -327,7 +338,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -327,7 +338,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param refundAmont * @param refundAmont
* @param refundTradeNo * @param refundTradeNo
*/ */
private void addOrderRefund(Integer orderId, String refundDesc, BigDecimal refundAmont, String refundTradeNo, Integer refundType) { private Integer addOrderRefund(Integer orderId, String refundDesc, BigDecimal refundAmont, String refundTradeNo, Integer refundType) {
//如果返回的流水为空,则当做失败 //如果返回的流水为空,则当做失败
Integer refundStatus = SYS_TRUE; Integer refundStatus = SYS_TRUE;
if(StrUtil.isBlank(refundTradeNo)) { if(StrUtil.isBlank(refundTradeNo)) {
...@@ -346,6 +357,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -346,6 +357,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
orderRefund.setRefundStatus(refundStatus); orderRefund.setRefundStatus(refundStatus);
orderRefund.setRefundType(refundType); orderRefund.setRefundType(refundType);
orderRefundBiz.insertSelective(orderRefund); orderRefundBiz.insertSelective(orderRefund);
return refundStatus;
} }
/** /**
......
package com.xxfc.platform.order.jobhandler; package com.xxfc.platform.order.jobhandler;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.common.util.IntervalUtil; import com.github.wxiaoqi.security.common.util.IntervalUtil;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz; import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum; import com.xxfc.platform.order.biz.OrderVehicalCrosstownBiz;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderVehicaleCrosstown;
import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.handler.annotation.JobHandler;
...@@ -17,7 +23,11 @@ import org.springframework.stereotype.Component; ...@@ -17,7 +23,11 @@ import org.springframework.stereotype.Component;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
/** /**
* 跨平台Http任务 * 跨平台Http任务
...@@ -27,7 +37,7 @@ import java.util.List; ...@@ -27,7 +37,7 @@ import java.util.List;
@JobHandler(value = "rentDepositHandler") @JobHandler(value = "rentDepositHandler")
@Component @Component
@Slf4j @Slf4j
public class HttpJobHandler extends IJobHandler { public class RentDepositHandler extends IJobHandler {
@Autowired @Autowired
BaseOrderBiz baseOrderBiz; BaseOrderBiz baseOrderBiz;
...@@ -35,12 +45,22 @@ public class HttpJobHandler extends IJobHandler { ...@@ -35,12 +45,22 @@ public class HttpJobHandler extends IJobHandler {
@Autowired @Autowired
OrderRentVehicleBiz orderRentVehicleBiz; OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderVehicalCrosstownBiz crosstownBiz;
@Autowired
ThirdFeign thirdFeign;
@Override @Override
public ReturnT<String> execute(String idLastNumInterval) throws Exception { public ReturnT<String> execute(String idLastNumInterval) throws Exception {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
BigDecimal illegalReserve = new BigDecimal(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ILLEGAL_RESERVE).getDetail());
try { try {
for(int i = 0; i < 10; i++) { for(int i = 0; i < 10; i++) {
if(IntervalUtil.staticIsInTheInterval(String.valueOf(i), idLastNumInterval)) { if(IntervalUtil.staticIsInTheInterval(String.valueOf(i), idLastNumInterval)) {
List<BaseOrder> lists = baseOrderBiz.selectByExample(new Example.Builder(BaseOrder.class) List<BaseOrder> lists = baseOrderBiz.selectByExample(new Example.Builder(BaseOrder.class)
//订单已完成的租车订单
.where(WeekendSqls.<BaseOrder>custom().andEqualTo(BaseOrder::getType, OrderTypeEnum.RentVehicle) .where(WeekendSqls.<BaseOrder>custom().andEqualTo(BaseOrder::getType, OrderTypeEnum.RentVehicle)
.andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_FINISH) .andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_FINISH)
.andLike(BaseOrder::getId, "%"+ String.valueOf(i))).build()); .andLike(BaseOrder::getId, "%"+ String.valueOf(i))).build());
...@@ -50,9 +70,27 @@ public class HttpJobHandler extends IJobHandler { ...@@ -50,9 +70,27 @@ public class HttpJobHandler extends IJobHandler {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{ OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}}); }});
// if(orvd.getReturnPayResidue()) //未退还, 进行保留违章预备金 的退还
// //判断是否违章 if(RefundStatusEnum.NONE.getCode().equals(baseOrder.getRefundStatus())) {
// //扣违章的钱 OrderVehicaleCrosstown crosstown = crosstownBiz.selectOne(new OrderVehicaleCrosstown(){{
setOrderId(baseOrder.getId());
setType(CrosstownTypeEnum.TOUR.getCode());
}});
BigDecimal refundAmont = crosstown.getRestDeposit().subtract(illegalReserve);
List<DedDetailDTO> dddList = JSONUtil.toBean(crosstown.getDedDetail(), List.class);
String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章预备金:"+ illegalReserve.toString();
for(DedDetailDTO ddd : dddList) {
refundDesc += ", "+ ddd.getDeductions()+ ":"+ ddd.getCost();
}
refundDesc += ")";
//退款子流程: 订单基础,退款描述,退款金额
baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.RentVehicle.getCode(), RefundStatusEnum.RESIDUE_ILLEGAL.getCode());
//设置剩余
}else if(RefundStatusEnum.RESIDUE_ILLEGAL.getCode().equals(baseOrder.getRefundStatus())){
//判断是否违章
//扣违章的钱
//baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.RentVehicle.getCode(), RefundStatusEnum.RESIDUE_ILLEGAL.getCode());
}
// baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont); // baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont);
} }
......
...@@ -26,6 +26,8 @@ import org.springframework.stereotype.Controller; ...@@ -26,6 +26,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.persistence.Column;
@Controller @Controller
@RequestMapping("orderRentVehicle") @RequestMapping("orderRentVehicle")
@Api(value="租车订单",tags={"租车订单"}) @Api(value="租车订单",tags={"租车订单"})
...@@ -65,15 +67,18 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -65,15 +67,18 @@ public class OrderRentVehicleController extends CommonBaseController {
return ObjectRestResponse.succ(orderRentVehicleBiz.listByOrderId(orderId)); return ObjectRestResponse.succ(orderRentVehicleBiz.listByOrderId(orderId));
} }
@RequestMapping(value = "/app/unauth/calculate-price",method = RequestMethod.GET) @RequestMapping(value = "/calculate-price",method = RequestMethod.GET)
@ResponseBody @ResponseBody
@ApiOperation(value = "价格计算") @ApiOperation(value = "价格计算")
@IgnoreUserToken
public ObjectRestResponse<RentVehiclePriceVO> calculatePrice(CalculatePriceVO vo){ public ObjectRestResponse<RentVehiclePriceVO> calculatePrice(CalculatePriceVO vo){
RentVehicleBO bo = BeanUtil.toBean(vo, RentVehicleBO.class); RentVehicleBO bo = BeanUtil.toBean(vo, RentVehicleBO.class);
if(StrUtil.isNotBlank(BaseContextHandler.getToken())) { if(StrUtil.isNotBlank(BaseContextHandler.getToken())) {
bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData()); bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData());
} }
bo.setOrder(new BaseOrder(){{
setHasMemberRight(vo.getHasMemberRight());
}});
bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData());
orderRentVehicleService.initDetailSecond(bo); orderRentVehicleService.initDetailSecond(bo);
return ObjectRestResponse.succ(orderRentVehicleService.calculatePrice(bo)); return ObjectRestResponse.succ(orderRentVehicleService.calculatePrice(bo));
} }
...@@ -101,5 +106,16 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -101,5 +106,16 @@ public class OrderRentVehicleController extends CommonBaseController {
@ApiModelProperty(value = "是否购买免赔 1--是") @ApiModelProperty(value = "是否购买免赔 1--是")
private Integer damageSafe; private Integer damageSafe;
/**
* 是否有使用会员权益
*/
@ApiModelProperty(value = "是否有使用会员权益")
private Integer hasMemberRight;
/**
* 是否使用出租免费天数
*/
@ApiModelProperty(value = "是否使用出租免费天数")
private Integer rentFreeDay;
} }
} }
\ No newline at end of file
...@@ -13,10 +13,11 @@ public class DictionaryKey { ...@@ -13,10 +13,11 @@ public class DictionaryKey {
public static final String TOUR_REFUND ="TOUR_REFUND"; public static final String TOUR_REFUND ="TOUR_REFUND";
/** /**
* 租车:公司司机租金、免赔费用 * 租车:公司司机租金、免赔费用、违章预备金
*/ */
public static final String DRIVER_PRICE ="DRIVER_PRICE"; public static final String DRIVER_PRICE ="DRIVER_PRICE";
public static final String DAMAGE_SAFE ="DAMAGE_SAFE"; public static final String DAMAGE_SAFE ="DAMAGE_SAFE";
public static final String ILLEGAL_RESERVE = "ILLEGAL_RESERVE";
/** /**
* 旅游:保险费用 * 旅游:保险费用
......
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