Commit 9a56695c authored by 周健威's avatar 周健威

修改明细,车型检索等

parent b626698e
......@@ -46,7 +46,9 @@ public class GlobalExceptionHandler {
@ExceptionHandler(BaseException.class)
public BaseResponse baseExceptionHandler(HttpServletResponse response, BaseException ex) {
logger.error(ex.getMessage(),ex);
if(0 == ex.getStatus()) {
response.setStatus(500);
}
return new BaseResponse(ex.getStatus(), ex.getMessage());
}
......
package com.github.wxiaoqi.security.common.msg;
import com.github.wxiaoqi.security.common.constant.RestCode;
/**
* Created by Ace on 2017/6/11.
*/
......@@ -45,4 +47,7 @@ public class ObjectRestResponse<T> extends BaseResponse {
this.data = data;
}
public static ObjectRestResponse success() {
return new ObjectRestResponse().status(RestCode.SUCCESS.getStatus()).msg(RestCode.SUCCESS.getMsg()).rel(true);
}
}
#代码生成器,配置信息
#包名
package=com.xxfc.platform.universal
package=com.xxfc.platform.order
#作者
author=zjw
#Email
......
......@@ -20,13 +20,6 @@ public enum OrderStatusEnum {
private String desc;
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
//Maps.newHashMap();
// static{
// for(VehicleBookRecordStatus constantType : VehicleBookRecordStatus.values()){
// codeAndDesc.put(constantType.getCode(),constantType.getDesc());
// }
// }
OrderStatusEnum(Integer code, String desc){
this.code=code;
......
......@@ -97,6 +97,13 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "名称")
private String name;
/**
* 取消原因
*/
@Column(name = "cancel_reason")
@ApiModelProperty(value = "取消原因")
private String cancelReason;
//创建时间
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
......
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-04 22:14:33
*/
@Data
@Table(name = "order_template")
public class OrderTemplate implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
//模板名称
@Column(name = "name")
@ApiModelProperty(value = "模板名称")
private String name;
//模板内容
@Column(name = "template")
@ApiModelProperty(value = "模板内容")
private String template;
//代号
@Column(name = "code")
@ApiModelProperty(value = "代号")
private String code;
//
@Column(name = "param_key")
@ApiModelProperty(value = "")
private String paramKey;
}
package com.xxfc.platform.order.vo;
package com.xxfc.platform.order.pojo;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Data
public class AddRentVehicleDTO{
......
package com.xxfc.platform.order.pojo.order;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CancelOrderDTO {
@ApiModelProperty(value = "取消原因")
private String cancelReason;
}
\ No newline at end of file
package com.xxfc.platform.order.vo.order;
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import lombok.Data;
import java.util.Map;
@Data
public class OrderDetailVO extends OrderPageVO {
VehicleModel vehicleModel;
......
package com.xxfc.platform.order.vo.order;
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
......
package com.xxfc.platform.order.vo.order;
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.vo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import lombok.Data;
......
package com.xxfc.platform.order.vo.pay;
package com.xxfc.platform.order.pojo.pay;
import com.xxfc.platform.universal.vo.OrderPayVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
package com.xxfc.platform.order.vo.price;
package com.xxfc.platform.order.pojo.price;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
......
package com.xxfc.platform.order.vo.price;
package com.xxfc.platform.order.pojo.price;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.math.BigDecimal;
......
package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.mapper.BaseOrderMapper;
import com.xxfc.platform.order.vo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
......@@ -21,4 +27,23 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
public List<OrderPageVO> pageByParm(Map<String, Object> paramMap){
return mapper.pageByParm(paramMap);
}
private static Map<Integer, List<Integer>> cancelAble;
static {
cancelAble = new HashMap<Integer, List<Integer>>();
cancelAble.put(OrderTypeEnum.RentVehicle.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
}
public void cancel(BaseOrder baseOrder) {
if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) {
this.updateSelectiveById(new BaseOrder(){{
setId(baseOrder.getId());
setStatus(OrderStatusEnum.ORDER_CANCEL.getCode());
setCancelReason(baseOrder.getCancelReason());
}});
}else {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}
\ No newline at end of file
package com.xxfc.platform.order.biz;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.order.entity.OrderTemplate;
import com.xxfc.platform.order.mapper.OrderTemplateMapper;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 费用明细
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-04 22:14:33
*/
@Service
public class OrderTemplateBiz extends BaseBiz<OrderTemplateMapper,OrderTemplate> {
public String result (OrderTemplate orderTemplate, Dict dict) {
// TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig());
// OrderCostDetail orderCostDetail = orderCostDetailBiz.selectById(OrderCostEnum.RentVehicle.getCode());
// Template template = engine.getTemplate(orderCostDetail.getTemplate());
// String result = template.render(Dict.parse(vo));
// vo.setCostDetail(result);
List<OrderTemplate> all = this.selectListAll();
Map<String, Object> allCodeMap = all.parallelStream().collect(Collectors.toMap(item -> "tem_"+ item.getCode(), OrderTemplate::getTemplate));
List<String> codes = all.parallelStream().map(OrderTemplate::getCode).collect(Collectors.toList());
String result = "";
TemplateEngine engine = TemplateUtil.createEngine();
//匹配模板 ParamKey() 判断是否存在别的模板
List<String> list = Arrays.asList(orderTemplate.getParamKey().split(",")).parallelStream().filter(item -> codes.contains(item)).collect(Collectors.toList());
if(list.size() > 0) {
allCodeMap.remove("tem_0101");
Template template = engine.getTemplate(orderTemplate.getTemplate());
result = template.render(new Dict(allCodeMap));
}
//匹配参数 填充参数
return result;
}
// public Map<String, OrderTemplate> allCodeMap() {
// return this.selectListAll().parallelStream().collect(Collectors.toMap(OrderTemplate::getCode, template -> template));
// }
}
\ No newline at end of file
package com.xxfc.platform.order.config;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.BaseResponse;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class PlatformExceptionHandler {
@ExceptionHandler(BaseException.class)
public BaseResponse baseExceptionHandler(BaseException e) {
return new BaseResponse(e.getStatus(), e.getMessage());
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.vo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderTemplate;
import tk.mybatis.mapper.common.Mapper;
/**
* 费用明细
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-04 22:14:33
*/
public interface OrderTemplateMapper extends Mapper<OrderTemplate> {
}
......@@ -17,13 +17,13 @@ import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.vo.order.OrderDetailVO;
import com.xxfc.platform.order.vo.order.OrderPageVO;
import com.xxfc.platform.order.vo.pay.RentVehicleOrderPayVO;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO;
import com.xxfc.platform.universal.constant.enumerate.PayChannelEnum;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.vehicle.entity.VehicleCata;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
......@@ -34,6 +34,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
......@@ -73,7 +75,6 @@ public class BaseOrderController extends CommonBaseController {
return new ObjectRestResponse<>().data(PageDataVO.pageInfo(query.getPage(), query.getLimit(), baseOrderBiz.pageByParm(query.getSuper())));
}
@ApiOperation("订单详情")
@RequestMapping(value = "/{no}",method = RequestMethod.GET)
@IgnoreClientToken
......@@ -125,7 +126,26 @@ public class BaseOrderController extends CommonBaseController {
orderPayVo.setUserId(baseOrder.getUserId());
ObjectRestResponse response = BeanUtil.toBean(thirdFeign.wx(orderPayVo), ObjectRestResponse.class);
return response;
//.data(PageDataVO.pageInfo(query.getPage(), query.getLimit(), baseOrderBiz.pageByParm(query.getSuper())));
}
@RequestMapping(value = "/cancel/{no}",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "取消订单")
@IgnoreClientToken
public ObjectRestResponse cancel(@PathVariable String no, @RequestBody CancelOrderDTO cancelOrderDto){
//查询列表数据
if(StringUtils.isBlank(BaseContextHandler.getUserID())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
}
BaseOrder dbBaseOrder = baseOrderBiz.selectOne(new BaseOrder(){{
setNo(no);
}});
if(null == dbBaseOrder || !BaseContextHandler.getUserID().equals(dbBaseOrder.getUserId().toString())) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
dbBaseOrder.setCancelReason(cancelOrderDto.getCancelReason());
baseOrderBiz.cancel(dbBaseOrder);
return ObjectRestResponse.success();
}
@RequestMapping(value = "/app/unauth/notifyUrl",method = RequestMethod.GET)
......
......@@ -5,13 +5,13 @@ import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.order.vo.AddRentVehicleDTO;
import com.xxfc.platform.order.vo.order.RentVehicleBO;
import com.xxfc.platform.order.vo.price.OrderPriceVO;
import com.xxfc.platform.order.vo.price.RentVehiclePriceVO;
import com.xxfc.platform.order.pojo.AddRentVehicleDTO;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
......@@ -19,7 +19,6 @@ import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
@Controller
@RequestMapping("orderRentVehicle")
......@@ -33,6 +32,9 @@ public class OrderRentVehicleController extends CommonBaseController {
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
BaseOrderBiz baseOrderBiz;
@RequestMapping(value = "add",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "确认租车订单")
......
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.entity.OrderTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("orderTemplate")
public class OrderTemplateController extends BaseController<OrderTemplateBiz,OrderTemplate> {
}
\ No newline at end of file
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
......@@ -12,7 +11,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.vo.price.OrderPriceVO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
......
......@@ -8,13 +8,13 @@ import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.OrderCostEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderCostDetail;
import com.xxfc.platform.order.vo.order.RentVehicleBO;
import com.xxfc.platform.order.vo.price.OrderPriceVO;
import com.xxfc.platform.order.vo.price.RentVehiclePriceVO;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.log4j.Log4j;
......@@ -29,6 +29,7 @@ import java.math.BigDecimal;
public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicleBiz, RentVehicleBO> {
private static BigDecimal DRIVER_PRICE = new BigDecimal("600.00");
private static BigDecimal DAMAGE_SAFE = new BigDecimal("100.00"); //车损免赔
private static Integer DRIVER_TYPE_COMPANY = 1;
private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
......@@ -38,6 +39,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Autowired
OrderCostDetailBiz orderCostDetailBiz;
@Autowired
OrderTemplateBiz orderTemplateBiz;
@PostConstruct
public void init(){
this.orderTypeEnum = OrderTypeEnum.RentVehicle;
......@@ -117,6 +121,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
* @return
*/
private String costDetail(RentVehiclePriceVO vo) {
//orderTemplateBiz.result(orderTemplateBiz.selectById(OrderCostEnum.RentVehicle.getCode()), Dict.parse(vo));
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig());
OrderCostDetail orderCostDetail = orderCostDetailBiz.selectById(OrderCostEnum.RentVehicle.getCode());
Template template = engine.getTemplate(orderCostDetail.getTemplate());
......
......@@ -25,10 +25,10 @@
<!-- <result property="updHost" column="upd_host"/>-->
<!-- </resultMap>-->
<resultMap type="com.xxfc.platform.order.vo.order.OrderPageVO" id="orderPageMap">
<resultMap type="com.xxfc.platform.order.pojo.order.OrderPageVO" id="orderPageMap">
<result javaType="Integer" column="type" property="type"></result>
<discriminator javaType="Integer" column="type">
<case value="1" resultType="com.xxfc.platform.order.vo.order.OrderPageVO">
<case value="1" resultType="com.xxfc.platform.order.pojo.order.OrderPageVO">
<association column="id" property="detail" select="com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper.oneByOrderId"></association>
</case>
</discriminator>
......
package com.xxfc.platform.order;
import cn.hutool.core.lang.Dict;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.vo.price.OrderPriceVO;
import com.xxfc.platform.order.vo.price.RentVehiclePriceVO;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.math.BigDecimal;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
......
......@@ -246,13 +246,37 @@
<select id="searchUsableModel" parameterType="java.util.Map"
resultMap="searchUsableModelMap">
select distinct vm.id as model_id, bc.id as company_id
<if test=" catas != null ">
GROUP_CONCAT(vc.cata_id) as catas,
</if>
<if test="lon != null and lat != null">
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if>
<if test=" yearMonthAndParam !=null ">
,vbi.booked_date
</if>
<include refid="searchUsableSql"/>
GROUP BY model_id, company_id<if test="lon != null and lat != null">, distance</if>
<!-- 循环 相同父级 数据做并集, 不同父级做或集 -->
<if test=" catas != null ">
having ( 0
<foreach collection="catas" index="key" item="cataList">
| (
<foreach collection="cataList" index="cIndex" item="cata">
<if test=" cIndex != 0">
&amp;
</if>
FIND_IN_SET(vc.cata_id,catas)
</foreach>
)
</foreach>
) > 0
</if>
<if test="lon != null and lat != null">
order by
distance asc
</if>
</select>
<select id="searchUsableVehicle" parameterType="java.util.Map"
......@@ -262,9 +286,13 @@
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if>
<if test=" yearMonthAndParam !=null ">
,vbi.booked_date
,ifnull(vbi.booked_date,0) as booked_date
</if>
<include refid="searchUsableSql"/>
<if test="lon != null and lat != null">
order by
distance asc
</if>
</select>
<sql id="searchUsableSql">
......@@ -291,23 +319,10 @@
<if test=" modelId != null ">
and v.model_id = #{modelId}
</if>
<if test=" catas != null ">
<foreach collection="catas" index="key" item="cataList">
and (
<foreach collection="cataList" index="cIndex" item="cata">
<if test=" cIndex != 0">
or
</if>
vc.cata_id = #{cata.id}
</foreach>
)
</foreach>
<if test=" addrCity != null ">
and bc.addr_city = #{addrCity}
</if>
</where>
<if test="lon != null and lat != null">
order by
distance asc
</if>
</sql>
</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