Commit 9c834d40 authored by libin's avatar libin

Merge remote-tracking branch 'origin/base-modify' into base-modify

parents 9f900150 53c23df8
...@@ -63,6 +63,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -63,6 +63,13 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
insertSelectiveRe(entity); insertSelectiveRe(entity);
} }
public void insertMultiSelective(List<T> entitys) {
for(T entity : entitys) {
insertSelectiveRe(entity);
}
}
public int insertSelectiveRe(T entity) { public int insertSelectiveRe(T entity) {
EntityUtils.setCreatAndUpdatInfo(entity); EntityUtils.setCreatAndUpdatInfo(entity);
return mapper.insertSelective(entity); return mapper.insertSelective(entity);
......
...@@ -10,9 +10,9 @@ spring: ...@@ -10,9 +10,9 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://10.5.52.3:3306/xxfc_activity?useUnicode=true&characterEncoding=UTF-8 url: jdbc:mysql://10.5.52.4:3306/xxfc_order?useUnicode=true&characterEncoding=UTF-8
username: root username: root
password: sslcloud123*() password: e4549e9315f19a88
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss date-format: yyyy-MM-dd HH:mm:ss
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F #\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D #\u5305\u540D
package=com.xxfc.platform.activity package=com.xxfc.platform.order
#\u4F5C\u8005 #\u4F5C\u8005
author=zjw author=zjw
#Email #Email
......
package com.xxfc.platform.order.contant.enumerate;
import java.util.HashMap;
import java.util.Map;
public enum ItemTypeEnum {
//item 类型 101--租车车型 102--车损免赔 103--司机费用 201--旅游成人 202--旅游儿童 203--旅游保险 301--会员
VEHICLE_MODEL(101, "租车车型"),
DAMAGE_SAFE(102, "车损免赔"),
DRIVER(103, "司机"),
TOUR_ADULT(201, "旅游成人"),
TOUR_CHILD(202, "旅游儿童"),
TOUR_INSURE(203, "旅游保险"),
MEMBER(301, "会员"),
;
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
public static Map<Integer, ItemTypeEnum> codeAndDesc = new HashMap<Integer, ItemTypeEnum>();
//Maps.newHashMap();
static{
for(ItemTypeEnum enumE : ItemTypeEnum.values()){
codeAndDesc.put(enumE.getCode(), enumE);
}
}
ItemTypeEnum(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);
}
public static ItemTypeEnum get(Integer code) {
for(ItemTypeEnum enumE : ItemTypeEnum.values()) {
if (enumE.getCode().equals(code)) {
return enumE;
}
}
return null;
}
}
\ No newline at end of file
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 zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
@Data
@Table(name = "order_item")
public class OrderItem implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 名称
*/
@Column(name = "name")
@ApiModelProperty(value = "名称")
private String name;
/**
* item 类型 1--租车车型 2--车损免赔 3--司机费用 4--旅游项目 5--旅游保险 6--会员
*/
@Column(name = "type")
@ApiModelProperty(value = "item 类型 1--租车车型 2--车损免赔 3--司机费用 4--旅游项目 5--旅游保险 6--会员")
private Integer type;
/**
* 原单价
*/
@Column(name = "meta_unit_price")
@ApiModelProperty(value = "原单价")
private BigDecimal metaUnitPrice;
/**
* 单价
*/
@Column(name = "unit_price")
@ApiModelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 总数 (购买数 + 赠送数)
*/
@Column(name = "total_num")
@ApiModelProperty(value = "总数 (购买数 + 赠送数)")
private Integer totalNum;
/**
* 购买数量
*/
@Column(name = "buy_num")
@ApiModelProperty(value = "购买数量")
private Integer buyNum;
/**
* 赠送的数量
*/
@Column(name = "award_num")
@ApiModelProperty(value = "赠送的数量")
private Integer awardNum;
/**
* 扣减数量 (从购买数里面扣减的数量)
*/
@Column(name = "cut_num")
@ApiModelProperty(value = "扣减数量 (从购买数里面扣减的数量)")
private Integer cutNum;
/**
* 商品id 有些为空如车损,免赔等
*/
@Column(name = "good_id")
@ApiModelProperty(value = "商品id 有些为空如车损,免赔等")
private Integer goodId;
/**
* 优惠券等扣减的价格
*/
@Column(name = "coupon_amount")
@ApiModelProperty(value = "优惠券扣减的价格")
private BigDecimal couponAmount;
/**
* 真实的总价
*/
@Column(name = "real_amount")
@ApiModelProperty(value = "真实的总价")
private BigDecimal realAmount;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
public Integer getCalculateNum() {
return buyNum - cutNum;
}
public BigDecimal getCalculateAmount(Boolean isSetRealAmount) {
BigDecimal calculateAmount = getUnitPrice().multiply(BigDecimal.valueOf(getCalculateNum()));
if(isSetRealAmount) {
setRealAmount(calculateAmount);
}
return calculateAmount;
}
public BigDecimal handleCouponAmount(BigDecimal couponAmount) {
BigDecimal realAmountResidue = getRealAmount().subtract(couponAmount);
//剩余价格小于0 即优惠价格超出本item的实际价格,返回剩余优惠
if(BigDecimal.ZERO.compareTo(realAmountResidue) > 0) {
setCouponAmount(getRealAmount());
setRealAmount(BigDecimal.ZERO);
return couponAmount.subtract(getCouponAmount());
}else {
//剩余价格大于等于0 即优惠价格低于本item的实际价格,返回ZERO
setCouponAmount(couponAmount);
setRealAmount(realAmountResidue);
return BigDecimal.ZERO;
}
}
public BigDecimal getTotalAmount() {
return realAmount.add(couponAmount);
}
}
package com.xxfc.platform.order.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
@Data
@Table(name = "order_log")
public class OrderLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 日志id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("日志id")
private Integer id;
/**
* 订单id
*/
@Column(name = "order_id")
@ApiModelProperty(value = "订单id")
private Integer orderId;
/**
* 对应的订单状态
*/
@Column(name = "order_status")
@ApiModelProperty(value = "对应的订单状态")
private Integer orderStatus;
/**
* 操作日志
*/
@Column(name = "log_content")
@ApiModelProperty(value = "操作日志")
private String logContent;
/**
* 操作者id,另外 -1为系统
*/
@Column(name = "log_user_id")
@ApiModelProperty(value = "操作者id,另外 -1为系统")
private Integer logUserId;
/**
* 操作者类型
*/
@Column(name = "log_user_type")
@ApiModelProperty(value = "操作者类型")
private Integer logUserType;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 日志类型 11--创建订单;12--创建订单;
*/
@Column(name = "type")
@ApiModelProperty(value = "日志类型 11--创建订单;12--创建订单;")
private Integer type;
}
package com.xxfc.platform.order.entity.inter; package com.xxfc.platform.order.entity.inter;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
public interface OrderDetail { import java.util.List;
public Integer getId(); public interface OrderDetail extends OrderItemInter {
public void setId(Integer id); Integer getId();
void setId(Integer id);
Integer getOrderId(); Integer getOrderId();
...@@ -19,4 +23,9 @@ public interface OrderDetail { ...@@ -19,4 +23,9 @@ public interface OrderDetail {
Integer getOrderOrigin(); Integer getOrderOrigin();
void setOrderOrigin(Integer orderOrigin); void setOrderOrigin(Integer orderOrigin);
List<String> getTickerNo();
void setTickerNo(List<String> tickerNo);
} }
package com.xxfc.platform.order.entity.inter;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import java.util.List;
public interface OrderItemInter {
List<OrderItem> getItems();
void setItems(List<OrderItem> items);
default OrderItem getItemByTypeEnum(ItemTypeEnum itemTypeEnum) {
for(OrderItem item: getItems()) {
if(itemTypeEnum.getCode().equals(item.getType())) {
return item;
}
}
return null;
}
}
package com.xxfc.platform.order.pojo.mq; package com.xxfc.platform.order.pojo.mq;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.entity.OrderMemberDetail; import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderTourDetail; import com.xxfc.platform.order.entity.inter.OrderItemInter;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class OrderMQDTO extends BaseOrder { public class OrderMQDTO extends BaseOrder implements OrderItemInter {
public static final int ORDER_CRT = 1; public static final int ORDER_CRT = 1;
public static final int ORDER_CANCEL = 2; public static final int ORDER_CANCEL = 2;
...@@ -20,6 +22,17 @@ public class OrderMQDTO extends BaseOrder { ...@@ -20,6 +22,17 @@ public class OrderMQDTO extends BaseOrder {
OrderMemberDetail orderMemberDetail; OrderMemberDetail orderMemberDetail;
List<OrderItem> items;
public OrderItem getItemByTypeEnum(ItemTypeEnum itemTypeEnum) {
for(OrderItem item: items) {
if(itemTypeEnum.getCode().equals(item.getType())) {
return item;
}
}
return null;
}
/** /**
* 标记是什么操作 * 标记是什么操作
* 0--删除" * 0--删除"
......
...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; ...@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderMemberDetail; import com.xxfc.platform.order.entity.OrderMemberDetail;
import com.xxfc.platform.order.entity.OrderTourDetail; import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
...@@ -27,4 +28,9 @@ public class MemberBO extends OrderMemberDetail implements OrderDetail { ...@@ -27,4 +28,9 @@ public class MemberBO extends OrderMemberDetail implements OrderDetail {
* 优惠券* * 优惠券*
*/ */
private List<String> tickerNo; private List<String> tickerNo;
/**
* 订单子项
*/
List<OrderItem> items;
} }
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.OrderItem;
public class OrderItemDTO extends OrderItem {
}
...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.pojo.order; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
...@@ -32,4 +33,9 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -32,4 +33,9 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
* 优惠券* * 优惠券*
*/ */
private List<String> tickerNo; private List<String> tickerNo;
/**
* 订单子项
*/
List<OrderItem> items;
} }
...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.entity.User; ...@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail; import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
...@@ -29,4 +30,9 @@ public class TourBO extends OrderTourDetail implements OrderDetail { ...@@ -29,4 +30,9 @@ public class TourBO extends OrderTourDetail implements OrderDetail {
* 优惠券* * 优惠券*
*/ */
private List<String> tickerNo; private List<String> tickerNo;
/**
* 订单子项
*/
List<OrderItem> items;
} }
...@@ -42,10 +42,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -42,10 +42,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import static com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE; 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.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.*; import static com.xxfc.platform.universal.constant.DictionaryKey.*;
import static com.github.wxiaoqi.security.common.config.rabbit.RabbitConstant.*;
/** /**
* *
...@@ -76,6 +76,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -76,6 +76,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired @Autowired
OrderRefundBiz orderRefundBiz; OrderRefundBiz orderRefundBiz;
@Autowired
OrderItemBiz orderItemBiz;
@Autowired @Autowired
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
...@@ -514,6 +517,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -514,6 +517,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
orderMQDTO.setOrderRentVehicleDetail(orvd); orderMQDTO.setOrderRentVehicleDetail(orvd);
orderMQDTO.setOrderTourDetail(otd); orderMQDTO.setOrderTourDetail(otd);
orderMQDTO.setOrderMemberDetail(omd); orderMQDTO.setOrderMemberDetail(omd);
//获取item
orderMQDTO.setItems(orderItemBiz.selectList(new OrderItem(){{
setOrderId(baseOrder.getId());
}}));
sendQueue(orderMQDTO, sign); sendQueue(orderMQDTO, sign);
} }
......
package com.xxfc.platform.order.biz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.mapper.OrderItemMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import java.math.BigDecimal;
/**
* 购房车提交表单
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
@Service
public class OrderItemBiz extends BaseBiz<OrderItemMapper,OrderItem> {
public OrderItem initOrderItem(BigDecimal price, Integer num, String name, Integer goodId, ItemTypeEnum itemTypeEnum){
return new OrderItem(){{
setMetaUnitPrice(price);
setUnitPrice(price);
setBuyNum(num);
setTotalNum(num);
setAwardNum(0);
setCutNum(0);
setCouponAmount(BigDecimal.ZERO);
setName(name);
setGoodId(goodId);
setType(itemTypeEnum.getCode());
}};
}
}
\ No newline at end of file
package com.xxfc.platform.order.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderLog;
import com.xxfc.platform.order.mapper.OrderLogMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
*
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
@Service
public class OrderLogBiz extends BaseBiz<OrderLogMapper,OrderLog> {
}
\ No newline at end of file
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderItem;
import tk.mybatis.mapper.common.Mapper;
/**
* 购房车提交表单
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
public interface OrderItemMapper extends Mapper<OrderItem> {
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderLog;
import tk.mybatis.mapper.common.Mapper;
/**
*
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-23 17:33:06
*/
public interface OrderLogMapper extends Mapper<OrderLog> {
}
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.entity.OrderItem;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("orderItem")
public class OrderItemController extends BaseController<OrderItemBiz,OrderItem> {
}
\ No newline at end of file
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderLogBiz;
import com.xxfc.platform.order.entity.OrderLog;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("orderLog")
public class OrderLogController extends BaseController<OrderLogBiz,OrderLog> {
}
\ No newline at end of file
...@@ -29,6 +29,7 @@ import springfox.documentation.annotations.ApiIgnore; ...@@ -29,6 +29,7 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.persistence.Column; import javax.persistence.Column;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
@Controller @Controller
@RequestMapping("orderRentVehicle") @RequestMapping("orderRentVehicle")
...@@ -58,7 +59,8 @@ public class OrderRentVehicleController extends CommonBaseController { ...@@ -58,7 +59,8 @@ public class OrderRentVehicleController extends CommonBaseController {
setBookEndDate(vo.getBookEndDate()); setBookEndDate(vo.getBookEndDate());
}}); }});
bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData()); bo.setAppUserDTO(userFeign.userDetailByToken(BaseContextHandler.getToken()).getData());
bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())? Arrays.asList(vo.getTickerNos().split(",")):null); bo.setTickerNo(StrUtil.isNotBlank(vo.getTickerNos())?
StrUtil.splitTrim(vo.getTickerNos(), ","):null);
orderRentVehicleService.createOrder(bo); orderRentVehicleService.createOrder(bo);
return ObjectRestResponse.succ(bo.getOrder()); return ObjectRestResponse.succ(bo.getOrder());
} }
......
...@@ -6,7 +6,9 @@ import com.github.wxiaoqi.security.common.context.BaseContextHandler; ...@@ -6,7 +6,9 @@ import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.OrderUtil; import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.BaseOrderBiz; import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderItemBiz;
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.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
...@@ -19,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -19,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Transactional @Transactional
public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends OrderDetail>{ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends OrderDetail>{
...@@ -36,6 +39,12 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -36,6 +39,12 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
@Autowired @Autowired
protected BaseOrderBiz baseOrderBiz; protected BaseOrderBiz baseOrderBiz;
@Autowired
protected OrderItemBiz orderItemBiz;
@Autowired
ActivityFeign activityFeign;
protected OrderTypeEnum orderTypeEnum; protected OrderTypeEnum orderTypeEnum;
protected Integer channel; protected Integer channel;
...@@ -101,6 +110,14 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -101,6 +110,14 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
if(updateResult > 0) { if(updateResult > 0) {
detail.getOrder().setVersion(detail.getOrder().getVersion() + 1); detail.getOrder().setVersion(detail.getOrder().getVersion() + 1);
} }
//插入item
if(null != detail.getItems() && detail.getItems().size() > 0) {
orderItemBiz.insertMultiSelective(detail.getItems().stream().map(v -> {
v.setOrderId(detail.getOrderId());
return v;
}).collect(Collectors.toList()));
}
} }
/** /**
......
...@@ -5,13 +5,17 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; ...@@ -5,13 +5,17 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; 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; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz; import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
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.entity.OrderItem;
import com.xxfc.platform.order.pojo.order.MemberBO; import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO; import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.tour.feign.TourFeign; import com.xxfc.platform.tour.feign.TourFeign;
...@@ -27,7 +31,9 @@ import javax.servlet.http.HttpServletRequest; ...@@ -27,7 +31,9 @@ import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER; import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service @Service
...@@ -61,6 +67,9 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -61,6 +67,9 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
@Autowired
ActivityFeign activityFeign;
@Autowired @Autowired
public HttpServletRequest request; public HttpServletRequest request;
...@@ -102,6 +111,14 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -102,6 +111,14 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
//设置订单名称 //设置订单名称
bo.getOrder().setName(bo.getBaseUserMemberLevel().getName()); bo.getOrder().setName(bo.getBaseUserMemberLevel().getName());
OrderItem memberItem = bo.getItemByTypeEnum(ItemTypeEnum.MEMBER);
BigDecimal amount = memberItem.getTotalAmount();
//如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getOrder().getUserId(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
}
super.handleDetail(bo); super.handleDetail(bo);
//发送定时取消订单(30分钟) //发送定时取消订单(30分钟)
...@@ -120,13 +137,28 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz ...@@ -120,13 +137,28 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
BigDecimal orderAmount = BigDecimal.ZERO; BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO; BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO; BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal couponAmount = BigDecimal.ZERO;
//设置Item
OrderItem vehicleOrderItem = orderItemBiz.initOrderItem(detail.getBaseUserMemberLevel().getPrice(), 1, detail.getBaseUserMemberLevel().getName(), detail.getBaseUserMemberLevel().getId(), ItemTypeEnum.MEMBER);
//商品价格 //商品价格
goodsAmount = goodsAmount.add(detail.getBaseUserMemberLevel().getPrice()); goodsAmount = goodsAmount.add(vehicleOrderItem.getCalculateAmount(Boolean.TRUE));
//vehicleAmount 优惠券处理
if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(detail.getOrder().getUserId(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
vehicleOrderItem.handleCouponAmount(couponAmount);
}
}
//订单总价格 //订单总价格
orderAmount = orderAmount.add(goodsAmount); orderAmount = orderAmount.add(goodsAmount);
//真实价格 //真实价格
realAmount = realAmount.add(orderAmount); realAmount = realAmount.add(orderAmount).subtract(couponAmount);
//生成订单明细 //生成订单明细
OrderPriceVO opv = new OrderPriceVO(); OrderPriceVO opv = new OrderPriceVO();
......
...@@ -14,11 +14,14 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode; ...@@ -14,11 +14,14 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz; import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum; import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
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.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderTemplate; import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.RentVehicleBO; import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO; import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
...@@ -36,6 +39,7 @@ import org.springframework.stereotype.Service; ...@@ -36,6 +39,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
...@@ -140,9 +144,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -140,9 +144,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
} }
} }
OrderItem vehicleModelItem = bo.getItemByTypeEnum(ItemTypeEnum.VEHICLE_MODEL);
BigDecimal amount = vehicleModelItem.getTotalAmount();
//如果有使用优惠券,则扣减 //如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) { if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, bo.getOrder().getGoodsAmount(), ActivityFeign.TYPE_USE); activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
} }
//获取可用车辆 //获取可用车辆
...@@ -177,6 +184,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -177,6 +184,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//当前用户 //当前用户
AppUserDTO dto = detail.getAppUserDTO(); AppUserDTO dto = detail.getAppUserDTO();
//车型信息
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
//设置Item
OrderItem vehicleOrderItem = orderItemBiz.initOrderItem(vehicleModel.getPrice(), detail.getDayNum(), vehicleModel.getName(), vehicleModel.getId(), ItemTypeEnum.VEHICLE_MODEL);
OrderItem driverOrderItem = orderItemBiz.initOrderItem(DRIVER_PRICE, detail.getDayNum(), "平台司机", null, ItemTypeEnum.DRIVER);
OrderItem damageSafeOrderItem = orderItemBiz.initOrderItem(DAMAGE_SAFE, detail.getDayNum(), "免赔费用", null, ItemTypeEnum.DAMAGE_SAFE);
detail.setItems(new ArrayList<OrderItem>());
detail.getItems().add(vehicleOrderItem);
//如果用户存在,并且为会员,并且车辆有优惠价 //如果用户存在,并且为会员,并且车辆有优惠价
if(null != dto && null != detail.getRentFreeDay() && detail.getRentFreeDay() > 0 ) { if(null != dto && null != detail.getRentFreeDay() && detail.getRentFreeDay() > 0 ) {
if(null == dto.getRentFreeDays() || dto.getRentFreeDays() <= 0) { if(null == dto.getRentFreeDays() || dto.getRentFreeDays() <= 0) {
...@@ -189,6 +207,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -189,6 +207,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
}else { }else {
freeDayNum = detail.getDayNum(); freeDayNum = detail.getDayNum();
} }
vehicleOrderItem.setCutNum(freeDayNum);
vehicleDayNum = detail.getDayNum() - freeDayNum; vehicleDayNum = detail.getDayNum() - freeDayNum;
detail.getOrder().setHasMemberRight(SYS_TRUE); detail.getOrder().setHasMemberRight(SYS_TRUE);
}else { }else {
...@@ -199,7 +218,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -199,7 +218,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//计算价格 //计算价格
//计算车辆费用 //计算车辆费用
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
//如果用户存在,并且为会员,并且车辆有优惠价 //如果用户存在,并且为会员,并且车辆有优惠价
if(null != dto && SYS_TRUE.equals(dto.getIsMember()) && !NONE.getCode().equals(dto.getMemberLevel()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) { if(null != dto && SYS_TRUE.equals(dto.getIsMember()) && !NONE.getCode().equals(dto.getMemberLevel()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) {
...@@ -220,35 +238,41 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -220,35 +238,41 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
detail.getOrder().setHasMemberRight(SYS_TRUE); detail.getOrder().setHasMemberRight(SYS_TRUE);
break; break;
} }
vehicleOrderItem.setUnitPrice(modelAmount);
}else { }else {
modelAmount = vehicleModel.getPrice(); modelAmount = vehicleModel.getPrice();
} }
vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(vehicleDayNum)));
//如果有使用会员权益或者优惠券,则设置订单已优惠 //如果有使用会员权益或者优惠券,则设置订单已优惠
if(SYS_TRUE.equals(detail.getOrder().getHasMemberRight())) { if(SYS_TRUE.equals(detail.getOrder().getHasMemberRight())) {
detail.getOrder().setHasDiscount(SYS_TRUE); detail.getOrder().setHasDiscount(SYS_TRUE);
} }
//单价 * (购买天数 - 减免天数)
vehicleAmount = vehicleAmount.add(vehicleOrderItem.getCalculateAmount(Boolean.TRUE));
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) { if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
//计算司机费用 //计算司机费用
driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum()))); driverAmount = driverAmount.add(driverOrderItem.getCalculateAmount(Boolean.TRUE));
detail.getItems().add(driverOrderItem);
} }
if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) { if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) {
//免赔费用 //免赔费用
damageSafeAmount = damageSafeAmount.add(DAMAGE_SAFE.multiply(BigDecimal.valueOf(detail.getDayNum()))); damageSafeAmount = damageSafeAmount.add(damageSafeOrderItem.getCalculateAmount(Boolean.TRUE));
detail.getItems().add(damageSafeOrderItem);
} }
//商品价格 //商品价格
goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount).add(damageSafeAmount); goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount).add(damageSafeAmount);
//优惠券处理 //vehicleAmount 优惠券处理
//待完成
if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) { if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(dto.getUserid(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE); couponAmount = activityFeign.use(dto.getUserid(), detail.getTickerNo(), detail.getOrder().getNo(), channel, vehicleAmount, ActivityFeign.TYPE_NO_USE);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) { if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(","))); detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
vehicleOrderItem.handleCouponAmount(couponAmount);
} }
} }
...@@ -257,15 +281,14 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -257,15 +281,14 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
realAmount = orderAmount.subtract(couponAmount); realAmount = orderAmount.subtract(couponAmount);
//生成订单明细 //生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO(){{ RentVehiclePriceVO rvp = new RentVehiclePriceVO();
setDeposit(vehicleModel.getDeposit()); rvp.setDeposit(vehicleModel.getDeposit());
setDriverPrice(DRIVER_PRICE); rvp.setDriverPrice(DRIVER_PRICE);
setDamageSafePrice(DAMAGE_SAFE); rvp.setDamageSafePrice(DAMAGE_SAFE);
setModelName(vehicleModel.getName()); rvp.setModelName(vehicleModel.getName());
setDayNum(detail.getDayNum()); rvp.setDayNum(detail.getDayNum());
setVehicleNum(1); rvp.setVehicleNum(1);
setDriverNum(1); rvp.setDriverNum(1);
}};
rvp.setCouponAmount(couponAmount); rvp.setCouponAmount(couponAmount);
rvp.setOrderAmount(orderAmount); rvp.setOrderAmount(orderAmount);
rvp.setGoodsAmount(goodsAmount); rvp.setGoodsAmount(goodsAmount);
...@@ -311,6 +334,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -311,6 +334,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) { if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) {
childrenStr.append(",${tem_0104}"); childrenStr.append(",${tem_0104}");
} }
if(StrUtil.isNotBlank(detail.getOrder().getCouponTickerNos())) {
childrenStr.append(",${tem_9901}");
}
if(childrenStr.length() > 0){ if(childrenStr.length() > 0){
childrenStr.deleteCharAt(0); childrenStr.deleteCharAt(0);
} }
......
...@@ -12,11 +12,14 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode; ...@@ -12,11 +12,14 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.Coupon; import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.biz.OrderTourDetailBiz; import com.xxfc.platform.order.biz.OrderTourDetailBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum; import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
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.entity.OrderItem;
import com.xxfc.platform.order.entity.OrderTemplate; import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.pojo.order.TourBO; import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.TourPriceVO; import com.xxfc.platform.order.pojo.price.TourPriceVO;
...@@ -138,9 +141,13 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -138,9 +141,13 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
//扣減庫存 //扣減庫存
tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber(), TourFeign.STOCK_SUBTRACT); tourFeign.stock(bo.getSpePriceId(), bo.getTotalNumber(), TourFeign.STOCK_SUBTRACT);
OrderItem tourAdultItem = bo.getItemByTypeEnum(ItemTypeEnum.TOUR_ADULT);
OrderItem tourChildItem = bo.getItemByTypeEnum(ItemTypeEnum.TOUR_CHILD);
BigDecimal amount = tourAdultItem.getTotalAmount().add(tourChildItem.getTotalAmount());
//如果有使用优惠券,则扣减 //如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) { if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, bo.getOrder().getGoodsAmount(), ActivityFeign.TYPE_USE); activityFeign.use(bo.getAppUserDTO().getUserid(), bo.getTickerNo(), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
} }
super.handleDetail(bo); super.handleDetail(bo);
...@@ -203,33 +210,47 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -203,33 +210,47 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
}}); }});
TourSpePriceVo tourSpePriceVo = objectRestResponse.getData(); TourSpePriceVo tourSpePriceVo = objectRestResponse.getData();
//设置Item
OrderItem tourAdultItem = orderItemBiz.initOrderItem(tourSpePriceVo.getOriginalPrice(), detail.getAdultNum(), "成人", detail.getSpePriceId(), ItemTypeEnum.TOUR_ADULT);
tourAdultItem.setUnitPrice(tourSpePriceVo.getPrice());
OrderItem tourChildItem = orderItemBiz.initOrderItem(tourSpePriceVo.getChildOriginalPrice(), detail.getChildNum(), "儿童", detail.getSpePriceId(), ItemTypeEnum.TOUR_CHILD);
tourChildItem.setUnitPrice(tourSpePriceVo.getChildPrice());
//人数 * 天数
OrderItem insureItem = orderItemBiz.initOrderItem(INSURE_PRICE, detail.getTotalNumber() * detail.getTourGood().getNumber(), "旅游保险", null, ItemTypeEnum.TOUR_INSURE);
//需要保险 //需要保险
if(SYS_TRUE.equals(detail.getHasInsure())) { if(SYS_TRUE.equals(detail.getHasInsure())) {
//人数 * 天数 * 价格 //人数 * 天数 * 价格
insureAmount = insureAmount.add(INSURE_PRICE.multiply(new BigDecimal(String.valueOf(detail.getTotalNumber() * detail.getTourGood().getNumber())))); insureAmount = insureAmount.add(insureItem.getCalculateAmount(Boolean.TRUE));
} }
//总价 //总价
tourAmount = tourAmount.add(tourSpePriceVo.getTotalPrice()).add(tourSpePriceVo.getTotalChildPrice()); tourAmount = tourAmount.add(tourAdultItem.getCalculateAmount(Boolean.TRUE)).add(tourChildItem.getCalculateAmount(Boolean.TRUE));
//商品价格 //商品价格
goodsAmount = goodsAmount.add(tourAmount); goodsAmount = goodsAmount.add(tourAmount).add(insureAmount);
//优惠券处理 //优惠券处理
//待完成 //待完成
if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) { if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(dto.getUserid(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE); couponAmount = activityFeign.use(dto.getUserid(), detail.getTickerNo(), detail.getOrder().getNo(), channel, tourAmount, ActivityFeign.TYPE_NO_USE);
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) { if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo() detail.getOrder().setCouponTickerNos(detail.getTickerNo()
.stream().collect(Collectors.joining(","))); .stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
BigDecimal residueCouponAmount = tourAdultItem.handleCouponAmount(couponAmount);
if(residueCouponAmount.compareTo(BigDecimal.ZERO) > 0) {
tourChildItem.handleCouponAmount(residueCouponAmount);
}
} }
} }
//总价格 //总价格
orderAmount = orderAmount.add(goodsAmount).add(insureAmount); orderAmount = orderAmount.add(goodsAmount);
//真实价格 //真实价格
realAmount = realAmount.add(tourSpePriceVo.getRealPrice()).add(tourSpePriceVo.getRealChildPrice()).add(insureAmount).subtract(couponAmount); realAmount = realAmount.add(orderAmount).subtract(couponAmount);
//生成订单明细 //生成订单明细
TourPriceVO tpv = BeanUtil.toBean(tourSpePriceVo, TourPriceVO.class); TourPriceVO tpv = BeanUtil.toBean(tourSpePriceVo, TourPriceVO.class);
...@@ -260,7 +281,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -260,7 +281,9 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
if(SYS_TRUE.equals(detail.getHasInsure())) { if(SYS_TRUE.equals(detail.getHasInsure())) {
childrenStr.append(",${tem_0203}"); childrenStr.append(",${tem_0203}");
} }
if(StrUtil.isNotBlank(detail.getOrder().getCouponTickerNos())) {
childrenStr.append(",${tem_9901}");
}
if(childrenStr.length() > 0){ if(childrenStr.length() > 0){
childrenStr.deleteCharAt(0); childrenStr.deleteCharAt(0);
} }
......
<?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.OrderItemMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderItem" id="orderItemMap">
<result property="id" column="id"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="name" column="name"/>
<result property="type" column="type"/>
<result property="metaUnitPrice" column="meta_unit_price"/>
<result property="unitPrice" column="unit_price"/>
<result property="totalNum" column="total_num"/>
<result property="buyNum" column="buy_num"/>
<result property="awardNum" column="award_num"/>
<result property="cutNum" column="cut_num"/>
<result property="goodid" column="goodId"/>
<result property="cutAmount" column="cut_amount"/>
<result property="realAmount" column="real_amount"/>
</resultMap>
</mapper>
\ No newline at end of file
<?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.OrderLogMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderLog" id="orderLogMap">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="orderStatus" column="order_status"/>
<result property="logContent" column="log_content"/>
<result property="logUserId" column="log_user_id"/>
<result property="logUserType" column="log_user_type"/>
<result property="crtTime" column="crt_time"/>
<result property="type" column="type"/>
</resultMap>
</mapper>
\ No newline at end of file
...@@ -47,5 +47,4 @@ public class RentVehicleBookDTO extends PageParam { ...@@ -47,5 +47,4 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("订单号") @ApiModelProperty("订单号")
private String orderNo; private String orderNo;
} }
\ No newline at end of file
...@@ -308,8 +308,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -308,8 +308,11 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
checkIfVehicleExists(bookVehicleVo.getVehicleId()); checkIfVehicleExists(bookVehicleVo.getVehicleId());
//提取日期和相应的预定目标日期 //提取日期和相应的预定目标日期
Map<String,List<String>> yearMonthAndDate = Maps.newHashMap(); Map<String,List<String>> yearMonthAndDate = Maps.newHashMap();
DateTime startDay =DateTime.parse(bookVehicleVo.getBookStartDate(),DEFAULT_DATE_TIME_FORMATTER); String[] bookStartDateArray = bookVehicleVo.getBookStartDate().split(" ");
DateTime endDay =DateTime.parse(bookVehicleVo.getBookEndDate(), DEFAULT_DATE_TIME_FORMATTER); String[] bookEndDateArray = bookVehicleVo.getBookEndDate().split(" ");
DateTime startDay =DateTime.parse(bookStartDateArray[0],DEFAULT_DATE_TIME_FORMATTER);
DateTime endDay =DateTime.parse(bookEndDateArray[0], DEFAULT_DATE_TIME_FORMATTER);
//转换日期范围为列表,并检查是否合法 //转换日期范围为列表,并检查是否合法
...@@ -328,14 +331,13 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -328,14 +331,13 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
VehicleBookRecord vehicleBookRecord = new VehicleBookRecord(); VehicleBookRecord vehicleBookRecord = new VehicleBookRecord();
vehicleBookRecord.setVehicleId(bookVehicleVo.getVehicleId()); vehicleBookRecord.setVehicleId(bookVehicleVo.getVehicleId());
vehicleBookRecord.setBookType(bookVehicleVo.getBookType()); vehicleBookRecord.setBookType(bookVehicleVo.getBookType());
vehicleBookRecord.set
vehicleBookRecord.setStatus(VehicleBookRecordStatus.APPLY.getCode()); vehicleBookRecord.setStatus(VehicleBookRecordStatus.APPLY.getCode());
vehicleBookRecord.setBookUser(userId); vehicleBookRecord.setBookUser(userId);
vehicleBookRecord.setBookUserName(userName); vehicleBookRecord.setBookUserName(userName);
vehicleBookRecord.setBookStartDate(DateTime. vehicleBookRecord.setBookStartDate(DateTime.
parse(bookVehicleVo.getBookStartDate(),DEFAULT_DATE_TIME_FORMATTER).toDate()); parse(bookStartDateArray[0],DEFAULT_DATE_TIME_FORMATTER).toDate());
vehicleBookRecord.setBookEndDate(DateTime. vehicleBookRecord.setBookEndDate(DateTime.
parse(bookVehicleVo.getBookEndDate(),DEFAULT_DATE_TIME_FORMATTER).toDate()); parse(bookEndDateArray[0],DEFAULT_DATE_TIME_FORMATTER).toDate());
vehicleBookRecord.setLiftAddr(bookVehicleVo.getLiftAddr()); vehicleBookRecord.setLiftAddr(bookVehicleVo.getLiftAddr());
vehicleBookRecord.setRemark(bookVehicleVo.getRemark()); vehicleBookRecord.setRemark(bookVehicleVo.getRemark());
vehicleBookRecord.setDestination(bookVehicleVo.getDestination()); vehicleBookRecord.setDestination(bookVehicleVo.getDestination());
......
...@@ -398,10 +398,8 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -398,10 +398,8 @@ public class VehicleController extends BaseController<VehicleBiz> {
Integer operatorId = USER_APP; Integer operatorId = USER_APP;
String userName = dto.getUserName(); String userName = dto.getUserName();
//BaseContextHandler.getName(); //BaseContextHandler.getName();
BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class);
dto.setLimit(1); dto.setLimit(1);
dto.setPage(1); dto.setPage(1);
bookVehicleVo.setBookType(BookType.USER_RENT.getCode());
//查询可车辆信息 //查询可车辆信息
PageDataVO<Vehicle> pageDataVO = vehicleBiz.searchUsableVehicle(dto); PageDataVO<Vehicle> pageDataVO = vehicleBiz.searchUsableVehicle(dto);
if (pageDataVO.getData().size() <= 0) { if (pageDataVO.getData().size() <= 0) {
...@@ -409,6 +407,10 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -409,6 +407,10 @@ public class VehicleController extends BaseController<VehicleBiz> {
add("可用车辆不存在"); add("可用车辆不存在");
}}); }});
} }
dto.setBookStartDate(dto.getBookStartDate()+ " 00:00:00");
dto.setBookEndDate(dto.getBookEndDate()+ " 23:59:59");
BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class);
bookVehicleVo.setBookType(BookType.USER_RENT.getCode());
bookVehicleVo.setVehicleId(pageDataVO.getData().get(0).getId()); bookVehicleVo.setVehicleId(pageDataVO.getData().get(0).getId());
VehicleBookRecord vehicleBookRecord = baseBiz.applyVehicle4Employee(operatorId, bookVehicleVo, userName); VehicleBookRecord vehicleBookRecord = baseBiz.applyVehicle4Employee(operatorId, bookVehicleVo, userName);
return ObjectRestResponse.succ(vehicleBookRecord); return ObjectRestResponse.succ(vehicleBookRecord);
......
...@@ -227,12 +227,12 @@ ...@@ -227,12 +227,12 @@
</foreach> </foreach>
</trim> </trim>
) )
<!-- or v.subordinate_branch in (--> <!-- or v.subordinate_branch in (-->
<!-- <trim suffixOverrides=",">--> <!-- <trim suffixOverrides=",">-->
<!-- <foreach collection="companyList" item="companyId">--> <!-- <foreach collection="companyList" item="companyId">-->
<!-- #{companyId},--> <!-- #{companyId},-->
<!-- </foreach>--> <!-- </foreach>-->
<!-- </trim>--> <!-- </trim>-->
) )
</if> </if>
<if test="mRangeDateEnd !=null"> <if test="mRangeDateEnd !=null">
......
package com.xxfc.platform.vehicle;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.junit.Test;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
public class ListTest {
@Test
public void ListTest(){
List<Object> objects = Arrays.asList();
DateTime startDay= DateTime.parse("2019-07-30 00:00:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(startDay);
}
}
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