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

添加退款调用

parent 94a62b19
...@@ -4,6 +4,8 @@ package com.github.wxiaoqi.security.common.constant; ...@@ -4,6 +4,8 @@ package com.github.wxiaoqi.security.common.constant;
* Created by ace on 2017/8/29. * Created by ace on 2017/8/29.
*/ */
public class CommonConstants { public class CommonConstants {
public static final int SYS_TRUE = 1;
public static final int SYS_FALSE = 0;
public final static String RESOURCE_TYPE_MENU = "menu"; public final static String RESOURCE_TYPE_MENU = "menu";
public final static String RESOURCE_TYPE_BTN = "button"; public final static String RESOURCE_TYPE_BTN = "button";
// 用户token异常 // 用户token异常
......
...@@ -8,5 +8,5 @@ public class PageParam { ...@@ -8,5 +8,5 @@ public class PageParam {
@ApiModelProperty("当前页码") @ApiModelProperty("当前页码")
Integer page; Integer page;
@ApiModelProperty("每页限制") @ApiModelProperty("每页限制")
Integer limit; Integer limit;
} }
...@@ -194,5 +194,12 @@ public class BaseOrder implements Serializable { ...@@ -194,5 +194,12 @@ public class BaseOrder implements Serializable {
*/ */
@Column(name = "has_discount") @Column(name = "has_discount")
@ApiModelProperty(value = "是否有优惠") @ApiModelProperty(value = "是否有优惠")
private Long hasDiscount; private Integer hasDiscount;
/**
* 是否已支付
*/
@Column(name = "has_pay")
@ApiModelProperty(value = "是否已支付")
private Integer hasPay;
} }
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 nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Data
@Table(name = "order_refund")
public class OrderRefund 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 = "trade_no")
@ApiModelProperty(value = "退款对应的流水号")
private Integer tradeNo;
/**
* 退款时间
*/
@Column(name = "refund_time")
@ApiModelProperty(value = "退款时间")
private Long refundTime;
/**
* 退款类型 1--订单款;2--押金
*/
@Column(name = "refund_type")
@ApiModelProperty(value = "退款类型 1--订单款;2--押金")
private Integer refundType;
/**
* 退款状态 0--失败;1--成功
*/
@Column(name = "refund_status")
@ApiModelProperty(value = "退款状态 0--失败;1--成功")
private Integer refundStatus;
/**
* 退款金额
*/
@Column(name = "refund_amount")
@ApiModelProperty(value = "退款金额")
private Integer refundAmount;
/**
* 退款说明
*/
@Column(name = "refund_desc")
@ApiModelProperty(value = "退款说明")
private String refundDesc;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
}
...@@ -50,11 +50,6 @@ public class AddRentVehicleDTO{ ...@@ -50,11 +50,6 @@ public class AddRentVehicleDTO{
@ApiModelProperty(value = "还车地点") @ApiModelProperty(value = "还车地点")
private String endAddr; private String endAddr;
//费用详情
@Column(name = "cost_detail")
@ApiModelProperty(value = "费用详情")
private String costDetail;
//取车城市编号 //取车城市编号
@Column(name = "start_city") @Column(name = "start_city")
@ApiModelProperty(value = "取车城市编号") @ApiModelProperty(value = "取车城市编号")
......
...@@ -17,6 +17,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{ ...@@ -17,6 +17,8 @@ public class RentVehiclePriceVO extends OrderPriceVO{
BigDecimal deposit; BigDecimal deposit;
@ApiModelProperty(value = "天数") @ApiModelProperty(value = "天数")
Integer dayNum; Integer dayNum;
@ApiModelProperty(value = "车辆天数")
Integer vehicleDayNum;
@ApiModelProperty(value = "车辆个数") @ApiModelProperty(value = "车辆个数")
Integer vehicleNum; Integer vehicleNum;
@ApiModelProperty(value = "司机个数") @ApiModelProperty(value = "司机个数")
......
...@@ -6,15 +6,23 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode; ...@@ -6,15 +6,23 @@ import com.github.wxiaoqi.security.common.util.process.ResultCode;
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;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.mapper.BaseOrderMapper; import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
/** /**
* *
* *
...@@ -24,6 +32,16 @@ import java.util.Map; ...@@ -24,6 +32,16 @@ import java.util.Map;
*/ */
@Service @Service
public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderRefundBiz orderRefundBiz;
@Autowired
ThirdFeign thirdFeign;
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){ public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap); return mapper.pageByParm(paramMap);
} }
...@@ -48,6 +66,32 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -48,6 +66,32 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setStatus(OrderStatusEnum.ORDER_CANCEL.getCode()); setStatus(OrderStatusEnum.ORDER_CANCEL.getCode());
setCancelReason(baseOrder.getCancelReason()); setCancelReason(baseOrder.getCancelReason());
}}); }});
//触发退款流程
//判断是否已支付
if(baseOrder.getHasPay().equals(SYS_TRUE)) {
//判断订单类型
if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
//计算退款金额
// 1、押金 + 租金(规则扣除)
BigDecimal refundAmont = orvd.getDeposit().add(baseOrder.getGoodsAmount());
thirdFeign.refund(new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setRefundAmount(refundAmont.multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo());
setRefundDesc("取消订单退款:"+ refundAmont.toString());
}});
//创建订单退款记录
}else if (OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
}
}
}else { }else {
throw new BaseException(ResultCode.FAILED_CODE); throw new BaseException(ResultCode.FAILED_CODE);
} }
......
package com.xxfc.platform.order.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.OrderRefund;
import com.xxfc.platform.order.mapper.OrderRefundMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Service
public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
}
\ No newline at end of file
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderRefund;
import tk.mybatis.mapper.common.Mapper;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
public interface OrderRefundMapper extends Mapper<OrderRefund> {
}
...@@ -26,6 +26,7 @@ import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO; ...@@ -26,6 +26,7 @@ import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO;
import com.xxfc.platform.universal.constant.enumerate.PayChannelEnum; import com.xxfc.platform.universal.constant.enumerate.PayChannelEnum;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderPayVo; import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -39,6 +40,8 @@ import org.springframework.web.bind.annotation.*; ...@@ -39,6 +40,8 @@ import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@Controller @Controller
@RequestMapping("baseOrder") @RequestMapping("baseOrder")
@Api(value="订单",tags={"订单"}) @Api(value="订单",tags={"订单"})
...@@ -250,9 +253,14 @@ public class BaseOrderController extends CommonBaseController { ...@@ -250,9 +253,14 @@ public class BaseOrderController extends CommonBaseController {
}}); }});
if(OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) { if(OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
baseOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode()); BaseOrder updateOrder = new BaseOrder(){{
baseOrder.setOutTradeNo(dto.getTradeNo()); setNo(dto.getOrderNo());
baseOrderBiz.updateById(baseOrder); setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
setOutTradeNo(dto.getTradeNo());
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
}};
baseOrderBiz.updateSelectiveById(updateOrder);
}else { }else {
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto)); log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
} }
...@@ -266,7 +274,7 @@ public class BaseOrderController extends CommonBaseController { ...@@ -266,7 +274,7 @@ public class BaseOrderController extends CommonBaseController {
* 订单查询类 * 订单查询类
*/ */
@Data @Data
public class QueryOrderDTO extends PageParam { public class QueryOrderDTO extends PageParam {
@ApiModelProperty(hidden = false) @ApiModelProperty(hidden = false)
private Integer crtUser; private Integer crtUser;
......
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderRefundBiz;
import com.xxfc.platform.order.entity.OrderRefund;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("orderRefund")
public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRefund> {
}
\ No newline at end of file
...@@ -97,17 +97,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -97,17 +97,17 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//当前用户 //当前用户
AppUserDTO dto = detail.getAppUserDTO(); AppUserDTO dto = detail.getAppUserDTO();
// //如果用户存在,并且为会员,并且车辆有优惠价 //如果用户存在,并且为会员,并且车辆有优惠价
// if(null != dto && detail.getRentFreeDay() > 0 && dto.getRentFreeDays() > 0) { if(null != dto && detail.getRentFreeDay() > 0 && dto.getRentFreeDays() > 0) {
// if(detail.getDayNum() > dto.getRentFreeDays()) { if(detail.getDayNum() > dto.getRentFreeDays()) {
// freeDayNum = dto.getRentFreeDays(); freeDayNum = dto.getRentFreeDays();
// }else { }else {
// freeDayNum = detail.getDayNum(); freeDayNum = detail.getDayNum();
// } }
// vehicleDayNum = detail.getDayNum() - freeDayNum; vehicleDayNum = detail.getDayNum() - freeDayNum;
// }else { }else {
// vehicleDayNum = detail.getDayNum(); vehicleDayNum = detail.getDayNum();
// } }
//计算价格 //计算价格
//计算车辆费用 //计算车辆费用
...@@ -130,7 +130,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -130,7 +130,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
}else { }else {
modelAmount = vehicleModel.getPrice(); modelAmount = vehicleModel.getPrice();
} }
vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(detail.getDayNum()))); vehicleAmount = vehicleAmount.add(modelAmount.multiply(BigDecimal.valueOf(vehicleDayNum)));
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(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
...@@ -160,11 +160,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -160,11 +160,12 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setDamageSafePrice(DAMAGE_SAFE); rvp.setDamageSafePrice(DAMAGE_SAFE);
rvp.setModelName(vehicleModel.getName()); rvp.setModelName(vehicleModel.getName());
rvp.setDayNum(detail.getDayNum()); rvp.setDayNum(detail.getDayNum());
rvp.setVehicleDayNum(vehicleDayNum);
rvp.setVehicleNum(1); rvp.setVehicleNum(1);
rvp.setDriverNum(1); rvp.setDriverNum(1);
//设置收费明细 //设置收费明细
costDetail(rvp, handlechildren(detail)); costDetail(rvp, handlechildren(detail, vehicleDayNum));
return rvp; return rvp;
} }
...@@ -186,8 +187,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -186,8 +187,11 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return modelAmount; return modelAmount;
} }
private String handlechildren(RentVehicleBO detail) { private String handlechildren(RentVehicleBO detail, Integer vehicleDayNum) {
StringBuffer childrenStr = new StringBuffer("${tem_0101}"); StringBuffer childrenStr = new StringBuffer("");
if(vehicleDayNum > 0) {
childrenStr.append(",${tem_0101}");
}
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) { if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
childrenStr.append(",${tem_0102}"); childrenStr.append(",${tem_0102}");
} }
...@@ -195,6 +199,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -195,6 +199,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(childrenStr.length() > 0){
childrenStr.deleteCharAt(1);
}
return childrenStr.toString(); return childrenStr.toString();
} }
......
...@@ -57,7 +57,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To ...@@ -57,7 +57,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
VehicleFeign vehicleFeign; VehicleFeign vehicleFeign;
private static Integer IS_CHILD = 0; private static Integer IS_CHILD = 1;
// private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00"); // private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00");
// private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔 // private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
......
<?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.OrderRefundMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderRefund" id="orderRefundMap">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="tradeNo" column="trade_no"/>
<result property="refundTime" column="refund_time"/>
<result property="refundType" column="refund_type"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundAmount" column="refund_amount"/>
<result property="refundDesc" column="refund_desc"/>
<result property="crtTime" column="crt_time"/>
</resultMap>
</mapper>
\ No newline at end of file
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