Commit 6d9ab53a authored by 周健威's avatar 周健威

Merge branch 'feature_chw_zjw' into master-chw

# Conflicts:
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BaseOrderController.java
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/SpecialRentController.java
parents 944cdc3c 38ba142c
......@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.ReflectionUtils;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -144,5 +145,8 @@ public class BaseController<Biz extends BaseBiz,Entity> extends CommonBaseContro
return ObjectRestResponse.succ();
}
@Data
public static class BaseDetailDTO {
Integer id;
}
}
......@@ -8,6 +8,7 @@ public enum ItemTypeEnum {
VEHICLE_MODEL(101, "租车车型"),
DAMAGE_SAFE(102, "车损免赔"),
DRIVER(103, "司机"),
PERSON_INSURANCE(104, "人身保险"),
TOUR_ADULT(201, "旅游成人"),
TOUR_CHILD(202, "旅游儿童"),
TOUR_INSURE(203, "旅游保险"),
......
......@@ -24,6 +24,8 @@ import java.util.Date;
@Table(name = "base_order")
public class BaseOrder implements Serializable {
private static final long serialVersionUID = 1L;
public static final int ORDER_TYPE_VEHICLE = 1;
public static final int ORDER_SIGN_NORMAL = 1;
public static final int ORDER_SIGN_APPLY = 2;
public static final int ORDER_SIGN_SPECIAL = 3;
......
package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 订单人身保险
*
* @author libin
* @email 18178966185@163.com
* @date 2020-11-26 18:56:21
*/
@Data
@Table(name = "order_person_insurance")
public class OrderPersonInsurance implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 基础订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "基础订单id")
private Integer orderId;
/**
* 姓名
*/
@Column(name = "name")
@ApiModelProperty(value = "姓名")
private String name;
/**
* 身份证号码
*/
@Column(name = "id_card")
@ApiModelProperty(value = "身份证号码")
private String idCard;
/**
* 订单的天数
*/
@Column(name = "order_day")
@ApiModelProperty(value = "订单的天数")
private Integer orderDay;
/**
* 保险的天数
*/
@Column(name = "insurance_day")
@ApiModelProperty(value = "保险的天数")
private Integer insuranceDay;
/**
* 金额
*/
@Column(name = "amount")
@ApiModelProperty(value = "金额")
private BigDecimal amount;
/**
* 状态 1--已支付;2--已退款
*/
@Column(name = "status")
@ApiModelProperty(value = "状态 1--已支付;2--已退款")
private Integer status;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Date crtTime;
/**
* 创建者id
*/
@Column(name = "crt_user")
@ApiModelProperty(value = "创建者id")
private String crtUser;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Date updTime;
/**
* 更新者id
*/
@Column(name = "upd_user")
@ApiModelProperty(value = "更新者id")
private String updUser;
}
......@@ -434,6 +434,12 @@ public class OrderRentVehicleDetail implements Serializable {
@Column(name = "goods_deposit_type")
private Integer goodsDepositType;
/**
* 价格类型 1--天;2--小时
*/
@Column(name = "price_type")
private Integer priceType;
public Long getEndTime() {
return endTime;
}
......
......@@ -45,6 +45,11 @@ public class InProgressVO {
*/
Integer usedDays = 0;
/**
* 已使用小时数
*/
Integer usedHours = 0;
/**
* 已使用的金额
*/
......
......@@ -14,6 +14,7 @@ import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
......@@ -23,6 +24,7 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private VehicleModel vehicleModel;
private BookVehicleVO bookVehicleVO;
private Vehicle vehicle;
private BigDecimal specialUnitPrice;
/**
* 订单标记 1--普通订单;2--需求预定申请订单;3--特惠租车订单
......
package com.xxfc.platform.order.pojo.order.add;
import com.xxfc.platform.order.entity.OrderPersonInsurance;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -12,8 +13,7 @@ import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.DATE_TIME_LINE_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.YMR_SLASH_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
@Data
public class AddRentVehicleDTO extends AddOrderCommonDTO{
......@@ -137,6 +137,9 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
public static final int GOODS_DEPOSIT_TYPE_UP = 1;
public static final int GOODS_DEPOSIT_TYPE_DOWN = 2;
private Integer needPersonInsurance = SYS_FALSE;
private List<OrderPersonInsurance> insurances;
public void setStartTime(Long startTime) {
this.startTime = startTime;
this.bookStartDate = YMR_SLASH_FORMATTER.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(startTime), ZoneOffset.ofHours(8)));
......@@ -164,4 +167,5 @@ public class AddRentVehicleDTO extends AddOrderCommonDTO{
}).collect(Collectors.toList());
}
}
}
......@@ -51,6 +51,7 @@ import static com.xxfc.platform.order.pojo.account.OrderAccountDeduction.ORIGIN_
import static com.xxfc.platform.order.pojo.account.OrderAccountDeduction.ORIGIN_ORDER_DEPOSIT;
import static com.xxfc.platform.order.pojo.pay.NotifyUrlDTO.PAY_WAY_ALI;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
import static com.xxfc.platform.universal.constant.DictionaryKey.RENT_PERSON_INSURANCE;
/**
* 订单帐目
......@@ -316,6 +317,31 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
return deductGoodsAmount;
}
public BigDecimal calculatePersonInsurance(Long timeLag) {
BigDecimal amount = BigDecimal.ZERO;
//获取天
Integer remainder = Long.valueOf(timeLag%(1000L * 60L * 60L * 24L)).intValue();
Integer dayLag = Long.valueOf(timeLag/(1000L * 60L * 60L * 24L)).intValue() + remainder > 0? 1: 0;
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Set<Dictionary> personInsurances = dictionaryMap.get(RENT_PERSON_INSURANCE).getChildrens();
for(com.xxfc.platform.universal.entity.Dictionary dic : personInsurances) {
if(StrUtil.isBlank(dic.getName())) {
continue;
}
//符合范围
if(IntervalUtil.staticIsInTheInterval(dayLag.toString(), dic.getName())){
amount = new BigDecimal(dic.getDetail());
break;
}
}
return amount;
}
/**
* 初始化deduction
* @param subtract
......
package com.xxfc.platform.order.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderPersonInsurance;
import com.xxfc.platform.order.mapper.OrderPersonInsuranceMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 订单人身保险
*
* @author libin
* @email 18178966185@163.com
* @date 2020-11-26 18:56:21
*/
@Service
public class OrderPersonInsuranceBiz extends BaseBiz<OrderPersonInsuranceMapper, OrderPersonInsurance> {
}
\ No newline at end of file
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderPersonInsurance;
import tk.mybatis.mapper.common.Mapper;
/**
* 订单人身保险
*
* @author libin
* @email 18178966185@163.com
* @date 2020-11-26 18:56:21
*/
public interface OrderPersonInsuranceMapper extends Mapper<OrderPersonInsurance> {
}
......@@ -58,6 +58,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.entity.BaseOrder.ORDER_TYPE_VEHICLE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Controller
......@@ -167,6 +169,7 @@ public class BaseOrderController extends CommonBaseController implements UserRes
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
}
//dto.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
dto.setType(ORDER_TYPE_VEHICLE);
dto.setUserId(Integer.valueOf(BaseContextHandler.getUserID()));
Query query = new Query(dto);
PageDataVO<OrderPageVO> pages = PageDataVO.pageInfo(query, () -> baseOrderBiz.pageByParm(query.getSuper()));
......
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderPersonInsuranceBiz;
import com.xxfc.platform.order.entity.OrderPersonInsurance;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("orderPersonInsurance")
public class OrderPersonInsuranceController extends BaseController<OrderPersonInsuranceBiz, OrderPersonInsurance> {
}
\ No newline at end of file
......@@ -33,10 +33,7 @@ import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.persistence.Column;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.entity.SpecialRent.*;
@RestController
......@@ -114,7 +111,7 @@ public class SpecialRentController extends BaseController<SpecialRentBiz, Specia
@ResponseBody
@ApiOperation(value = "分页查询可参加特惠租车")
@IgnoreUserToken
public ObjectRestResponse<SpecialRentVO> pageList(QueryDTO dto) {
public ObjectRestResponse<PageDataVO<SpecialRentVO>> pageList(QueryDTO dto) {
//查询列表数据
Query query = new Query(dto);
PageDataVO<SpecialRentVO> pages = PageDataVO.pageInfo(query, () -> baseBiz.selectByWeekend(w -> {
......@@ -131,6 +128,16 @@ public class SpecialRentController extends BaseController<SpecialRentBiz, Specia
return ObjectRestResponse.succ(pages);
}
@RequestMapping(value = "/app/unauth/app/detail", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询特惠租车详情")
@IgnoreUserToken
public ObjectRestResponse<SpecialRent> detail(BaseDetailDTO dto) {
//查询数据
AssertUtils.isBlankBean(dto);
return ObjectRestResponse.succ(baseBiz.selectById(dto.getId()));
}
@RequestMapping(value = "/appBusiness/myList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "分页查询我发布的特惠租车")
......@@ -191,6 +198,7 @@ public class SpecialRentController extends BaseController<SpecialRentBiz, Specia
RentVehicleBO bo = orderRentVehicleBiz.initRentVehicleBO(dto);
bo.setOrderSign(BaseOrder.ORDER_SIGN_SPECIAL);
bo.setAppUserDTO(getAppUser());
bo.setSpecialUnitPrice(specialRent.getUnitPrice());
bo.setBookRecordId(specialRent.getBookRecordId());
orderRentVehicleService.specialCreateOrder(bo, specialRent.getOrderNo());
baseBiz.updateSelectiveById(new SpecialRent(){{
......
......@@ -440,6 +440,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
detail.initDate();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getPriceByVehicleIdFeignV2(detail.getVehicleId(), detail.getStartTime(), detail.getEndTime(), dto.getUserid()).getData();
if(null != detail.getSpecialUnitPrice()) {
metaVmcpds.forEach(meta -> {
meta.setPrice(detail.getSpecialUnitPrice());
});
}
List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds);
......@@ -451,6 +456,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
OrderItem driverOrderItem = orderItemBiz.initOrderItem(DRIVER_PRICE, detail.getDayNum(), "平台司机", null, ItemTypeEnum.DRIVER);
OrderItem damageSafeOrderItem = orderItemBiz.initOrderItem(DAMAGE_SAFE, detail.getDayNum(), "免赔费用", null, ItemTypeEnum.DAMAGE_SAFE);
//OrderItem personInsuranceOrderItem = orderItemBiz.initOrderItem(DAMAGE_SAFE, detail.getDayNum(), "免赔费用", null, ItemTypeEnum.PERSON_INSURANCE);
detail.setItems(new ArrayList<OrderItem>());
detail.getItems().add(vehicleOrderItem);
......@@ -568,6 +575,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO();
rvp.setOrderSign(detail.getOrderSign());
rvp.setPriceType(vehicle.getPriceType());
rvp.setDeposit(depositAmount);
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setDamageSafePrice(DAMAGE_SAFE);
......@@ -628,6 +636,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
detail.initDate();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getPriceByVehicleIdFeignV2(detail.getVehicleId(), detail.getStartTime(), detail.getEndTime(), dto.getUserid()).getData();
if(null != detail.getSpecialUnitPrice()) {
metaVmcpds.forEach(meta -> {
meta.setPrice(detail.getSpecialUnitPrice());
});
}
List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds);
......@@ -760,6 +773,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO();
rvp.setOrderSign(detail.getOrderSign());
rvp.setPriceType(vehicle.getPriceType());
rvp.setDeposit(depositAmount);
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setDamageSafePrice(DAMAGE_SAFE);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.order.mapper.OrderPersonInsuranceMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderPersonInsurance" id="orderPersonInsuranceMap">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="name" column="name"/>
<result property="idCard" column="id_card"/>
<result property="orderDay" column="order_day"/>
<result property="insuranceDay" column="insurance_day"/>
<result property="amount" column="amount"/>
<result property="status" column="status"/>
<result property="crtTime" column="crt_time"/>
<result property="crtUser" column="crt_user"/>
<result property="updTime" column="upd_time"/>
<result property="updUser" column="upd_user"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -62,6 +62,8 @@ public class DictionaryKey {
public static final String DAMAGE_SAFE = "DAMAGE_SAFE";
public static final String ILLEGAL_RESERVE = "ILLEGAL_RESERVE";
public static final String RENT_TIME_BUFFER = "RENT_TIME_BUFFER";
public static final String RENT_TIME_HOUR_BUFFER = "RENT_TIME_HOUR_BUFFER";
public static final String RENT_PERSON_INSURANCE = "RENT_PERSON_INSURANCE";
/**
* 旅游:保险费用
......
......@@ -57,8 +57,9 @@ public interface CalculateInterface {
default Integer getIncludeHours(Long startLong, Long endLong) {
Map<String, Dictionary> dictionaryMap = getThirdFeign().dictionaryGetAll4Map().getData();
Long hourLong = (60L * 60L * 1000L);
Long minuteLong = (60L * 1000L);
//Long dayLong = hourLong * 24;
Long bufferLong = 0L;
Long bufferLong = Long.valueOf(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_TIME_HOUR_BUFFER).getDetail()) * minuteLong;
//计算:使用天数 当前时间 - 开始时间的0时0分0秒
Long bookTimeLag = endLong - startLong;
......@@ -70,16 +71,16 @@ public interface CalculateInterface {
// log.info("bookTimeLag {}", new BigDecimal(bookTimeLag + ""));
// log.info("divide {}", new BigDecimal(hourLong+ ""));
Integer hourDays = new BigDecimal(bookTimeLag + "").divide(new BigDecimal(hourLong+ ""), 0, RoundingMode.DOWN).intValue();
Integer hourNums = new BigDecimal(bookTimeLag + "").divide(new BigDecimal(hourLong+ ""), 0, RoundingMode.DOWN).intValue();
Long excess = bookTimeLag%hourLong;
if(excess > bufferLong) {
hourDays += 1;
hourNums += 1;
}
if(0 == hourDays) {
hourDays = 1;
if(0 == hourNums) {
hourNums = 1;
}
return hourDays;
return hourNums;
}
}
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