Commit 9e982ec9 authored by hezhen's avatar hezhen

Merge branch 'dev-chw' of http://113.105.137.151:22280/youjj/cloud-platform into dev-chw

# Conflicts:
#	xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/feign/OrderFeign.java
parents bddd54ce f991582a
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -19,6 +20,22 @@ import lombok.Data; ...@@ -19,6 +20,22 @@ import lombok.Data;
public class SpecialRent implements Serializable { public class SpecialRent implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final int STATUS_DEL = 0;
public static final int STATUS_CRT = 1;
public static final int STATUS_CNL = 2;
public static final int STATUS_ORDER = 4;
public static final int STATUS_AUTOCNL_REQUIRE = 501;
public static final int STATUS_AUTOCNL_ORDER = 502;
public static final int STATUS_AUTOCNL_TOPAY = 503;
public static final int STATUS_AUTOCNL_PAYED = 504;
public static final int STATUS_ERR = 6;
public static final int STATUS_SUCC = 7;
public static final int ORDER_STATUS_TOPAY = 1;
public static final int ORDER_STATUS_PAY = 2;
public static final int ORDER_STATUS_CANCEL = 3;
/** /**
* 主键 * 主键
*/ */
...@@ -201,5 +218,25 @@ public class SpecialRent implements Serializable { ...@@ -201,5 +218,25 @@ public class SpecialRent implements Serializable {
@ApiModelProperty(value = "商品类型 1--房车;2--机车;3--游艇") @ApiModelProperty(value = "商品类型 1--房车;2--机车;3--游艇")
private Integer goodsType; private Integer goodsType;
/**
* 单价,每日价格
*/
@Column(name = "unit_price")
@ApiModelProperty(value = "单价,每日价格")
private BigDecimal unitPrice;
/**
* 商品信息,json
*/
@Column(name = "goods_json")
@ApiModelProperty(value = "商品信息json")
private String goodsJson;
@Column(name = "brand_name")
@ApiModelProperty("品牌名称")
private String brandName;
@Column(name = "category_name")
@ApiModelProperty("型号名称")
private String categoryName;
} }
...@@ -35,6 +35,10 @@ public interface OrderFeign { ...@@ -35,6 +35,10 @@ public interface OrderFeign {
ObjectRestResponse<List<OrderDTO>> findOrdersByorderIdV2(@RequestBody List<Integer> orderIds); ObjectRestResponse<List<OrderDTO>> findOrdersByorderIdV2(@RequestBody List<Integer> orderIds);
@GetMapping(value = "/specialRent/app/unauth/checkHasSpecialRentFegin")
public ObjectRestResponse<Boolean> checkHasSpecialRentFegin(String vehicleId);
@RequestMapping(value = "chw/orderDetail/app/unauth/getOrderDetail", method = RequestMethod.GET) @RequestMapping(value = "chw/orderDetail/app/unauth/getOrderDetail", method = RequestMethod.GET)
ObjectRestResponse<OrderDetailDTO> getOrderDetail(@RequestParam("orderNo")String orderNo, @RequestParam("type")Integer type); ObjectRestResponse<OrderDetailDTO> getOrderDetail(@RequestParam("orderNo")String orderNo, @RequestParam("type")Integer type);
......
...@@ -29,6 +29,11 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -29,6 +29,11 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
*/ */
private Integer applyOrderSign = 0; private Integer applyOrderSign = 0;
/**
* 是否特惠租车下订单
*/
private Integer specialOrderSign = 0;
/** /**
* 是否使用出租免费天数 * 是否使用出租免费天数
*/ */
......
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderViolation; import com.xxfc.platform.order.entity.OrderViolation;
import com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper; import com.xxfc.platform.order.mapper.OrderRentVehicleDetailMapper;
...@@ -26,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -26,6 +30,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.math.BigInteger;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -36,14 +41,21 @@ import java.util.concurrent.TimeUnit; ...@@ -36,14 +41,21 @@ import java.util.concurrent.TimeUnit;
*/ */
@Service @Service
@Slf4j @Slf4j
public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolation> { public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolation> implements UserRestInterface {
@Autowired @Autowired
private OrderRentVehicleDetailMapper detailMapper; private OrderRentVehicleDetailMapper detailMapper;
@Value("order.violation.upload") @Value("order.violation.upload")
private String ovUpload; private String ovUpload;
@Autowired
UserFeign userFeign;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
@Override
public UserFeign getUserFeign() {
return userFeign;
}
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
...@@ -55,6 +67,14 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -55,6 +67,14 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void insertOrderViolation(OrderViolation orderViolation) { public void insertOrderViolation(OrderViolation orderViolation) {
UserDTO userDTO = getBusinessUserByAppUser();
if (userDTO == null ) {
throw new BaseException(ResultCode.RSTOKEN_EXPIRED_CODE);
}
OrderViolation old = mapper.selectOne(new OrderViolation(){{setDetailId(orderViolation.getDetailId());}});
if (old != null) {
throw new BaseException("违章记录已存在!");
} else {
OrderRentVehicleDetail orderRentVehicleDetail = new OrderRentVehicleDetail(); OrderRentVehicleDetail orderRentVehicleDetail = new OrderRentVehicleDetail();
orderRentVehicleDetail.setId(orderViolation.getDetailId()); orderRentVehicleDetail.setId(orderViolation.getDetailId());
orderRentVehicleDetail.setHandelViolation(0); orderRentVehicleDetail.setHandelViolation(0);
...@@ -62,11 +82,18 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -62,11 +82,18 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
Integer orderStatus = (Integer) status.get("status"); Integer orderStatus = (Integer) status.get("status");
Integer refundStatus = (Integer) status.get("refundStatus"); Integer refundStatus = (Integer) status.get("refundStatus");
if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) { if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) {
orderViolation.setIsDel(0);
orderViolation.setCrtHost(getRequest().getRemoteHost());
orderViolation.setCrtName(userDTO.getName());
orderViolation.setCrtUserId(userDTO.getId());
orderViolation.setCrtTime(new BigInteger(String.valueOf(System.currentTimeMillis())));
insertSelective(orderViolation); insertSelective(orderViolation);
detailMapper.updateByPrimaryKeySelective(orderRentVehicleDetail); detailMapper.updateByPrimaryKeySelective(orderRentVehicleDetail);
} else { } else {
throw new BaseException("The operation cannot be changed at this time"); throw new BaseException("The operation cannot be changed at this time");
} }
}
} }
...@@ -77,10 +104,18 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat ...@@ -77,10 +104,18 @@ public class OrderViolationBiz extends BaseBiz<OrderViolationMapper, OrderViolat
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateOrderViolation(OrderViolation orderViolation) { public void updateOrderViolation(OrderViolation orderViolation) {
UserDTO userDTO = getBusinessUserByAppUser();
if (userDTO == null ) {
throw new BaseException(ResultCode.RSTOKEN_EXPIRED_CODE);
}
Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId()); Map<String, Object> status = mapper.getOrderAndVehicleStatus(orderViolation.getDetailId());
Integer orderStatus = (Integer) status.get("status"); Integer orderStatus = (Integer) status.get("status");
Integer refundStatus = (Integer) status.get("refundStatus"); Integer refundStatus = (Integer) status.get("refundStatus");
if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) { if (orderStatus >= 6 || (refundStatus <= 2 && refundStatus != 1)) {
orderViolation.setUpdHost(getRequest().getRemoteHost());
orderViolation.setUpdName(userDTO.getName());
orderViolation.setUpdUserId(userDTO.getId());
orderViolation.setUpdTime(new BigInteger(String.valueOf(System.currentTimeMillis())));
updateSelectiveByIdRe(orderViolation); updateSelectiveByIdRe(orderViolation);
} else { } else {
throw new BaseException("The operation cannot be changed at this time"); throw new BaseException("The operation cannot be changed at this time");
......
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.AssertUtils;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleCategory;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import org.mockito.internal.util.collections.Sets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.order.entity.SpecialRent; import com.xxfc.platform.order.entity.SpecialRent;
import com.xxfc.platform.order.mapper.SpecialRentMapper; import com.xxfc.platform.order.mapper.SpecialRentMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.xxfc.platform.order.entity.SpecialRent.STATUS_CRT;
import static com.xxfc.platform.vehicle.entity.Vehicle.STATE_DOWN;
/** /**
* 特惠租车 * 特惠租车
...@@ -15,4 +44,130 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz; ...@@ -15,4 +44,130 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
*/ */
@Service @Service
public class SpecialRentBiz extends BaseBiz<SpecialRentMapper, SpecialRent> { public class SpecialRentBiz extends BaseBiz<SpecialRentMapper, SpecialRent> {
@Autowired
OrderRentVehicleService orderRentVehicleService;
@Autowired
UserFeign userFeign;
@Autowired
VehicleFeign vehicleFeign;
/**
* 判断车辆是否有进行中的特惠租车
* @param vehicleId
* @return
*/
public Boolean checkHasSpecialRent(String vehicleId) {
List<SpecialRent> list = selectByWeekend(w -> {
w.andIn(SpecialRent::getStatus, CollUtil.newArrayList(SpecialRent.STATUS_CRT, SpecialRent.STATUS_ORDER))
.andEqualTo(SpecialRent::getVehicleId, vehicleId);
return w;
});
if(list.size() > 0) {
return Boolean.TRUE;
}
return Boolean.FALSE;
}
/**
* 添加发布特惠租车
* @param specialRent
* @param userDTO
*/
public void addRent(@RequestBody SpecialRent specialRent, UserDTO userDTO) {
AssertUtils.isBlank(userDTO);
if(StrUtil.isBlank(specialRent.getVehicleId())) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
Vehicle vehicle = vehicleFeign.get(specialRent.getVehicleId()).getData();
if(null == vehicle) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
//判断车辆是否下架、是否已经存在一个特惠租车
if(STATE_DOWN == vehicle.getStatus() || checkHasSpecialRent(vehicle.getId())) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
//设置当前经营门店为停靠门店、品牌id、型号id
specialRent.setStartCompanyId(vehicle.getManageCompanyId());
specialRent.setBrandId(vehicle.getBrandId());
specialRent.setCategoryId(vehicle.getCategoryId());
//缓存商品信息
specialRent.setGoodsJson(JSONUtil.parse(vehicle).toString());
DateTime startDateTime = DateUtil.date(specialRent.getStartTime());
// DateTime endDateTime = DateUtil.date(sFpecialRent.getEndTime());
// DateTime tomorrowBegin = DateUtil.beginOfDay(DateUtil.tomorrow());
DateTime afterDateTime = DateUtil.offsetHour(DateUtil.date(), 1);
if(!startDateTime.isAfterOrEquals(afterDateTime)) {
throw new BaseException(ResultCode.FAILED_CODE, Sets.newSet("请提前一小时特惠租车发布"));
}
if(null != specialRent.getStartCompanyId()) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(specialRent.getStartCompanyId()).getData();
specialRent.setStartCompanyName(companyDetail.getName());
specialRent.setStartCityCode(companyDetail.getAddrCity());
}
if(null != specialRent.getEndCompanyId()) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(specialRent.getEndCompanyId()).getData();
specialRent.setEndCompanyName(companyDetail.getName());
specialRent.setEndCityCode(companyDetail.getAddrCity());
}
if(null != specialRent.getEndCompanyId()) {
CompanyDetail companyDetail = vehicleFeign.getCompanyDetail(specialRent.getEndCompanyId()).getData();
specialRent.setEndCompanyName(companyDetail.getName());
specialRent.setEndCityCode(companyDetail.getAddrCity());
}
if(null != specialRent.getCategoryId()) {
VehicleCategory vehicleCategory = vehicleFeign.getVehicleCategory(specialRent.getEndCompanyId()).getData();
specialRent.setBrandName(vehicleCategory.getBrandName());
specialRent.setCategoryName(vehicleCategory.getName());
}
specialRent.setPublishUserId(userDTO.getId());
specialRent.setStatus(STATUS_CRT);
RentVehicleBO detail = new RentVehicleBO();
detail.setStartTime(specialRent.getStartTime());
detail.setEndTime(specialRent.getEndTime());
detail.setVehicleId(specialRent.getVehicleId());
detail.setStartAddr(specialRent.getStartCompanyName());
detail.setStartCompanyId(specialRent.getStartCompanyId());
detail.setEndCompanyId(specialRent.getEndCompanyId());
detail.setOrder(new BaseOrder(){{setNo(OrderUtil.GetOrderNumber("", OrderUtil.APP_MID));}});
detail.setRentFreeDay(SYS_FALSE);
detail.setBookVehicleVO(new BookVehicleVO(){{
setBookStartDate(DateUtil.date(specialRent.getStartTime()).toDateStr());
setBookEndDate(DateUtil.date(specialRent.getEndTime()).toDateStr());
setBookStartDateTime(DateUtil.date(specialRent.getStartTime()).toString());
setBookEndDateTime(DateUtil.date(specialRent.getEndTime()).toString());
}});
//预约车辆
orderRentVehicleService.acquireVehicle(detail, null , null);
specialRent.setOrderNo(detail.getOrder().getNo());
// specialRent.setOverTime(DateUtil.offsetHour(DateUtil.date(), 1).getTime());
specialRent.setBookRecordId(detail.getBookRecordId());
//设置车辆下架
ObjectRestResponse restResponse = vehicleFeign.updVehicleFeign(new Vehicle(){{
setId(vehicle.getId());
setState(STATE_DOWN);
}});
// rabbitProduct.sendApplyDelayMessage(baseBiz.selectById(specialRent.getId()), 1000L * 3601L);
// Long delayTime = DateUtil.date().getTime() - DateUtil.offsetDay(endDateTime, -1).getTime();
// specialRent.setOverTime(delayTime);
insertSelective(specialRent);
// rabbitProduct.sendApplyRequireDelayMessage(baseBiz.selectById(shuntApply.getId()), delayTime);
}
} }
\ No newline at end of file
...@@ -2,8 +2,6 @@ package com.xxfc.platform.order.rest; ...@@ -2,8 +2,6 @@ package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
...@@ -21,7 +19,6 @@ import tk.mybatis.mapper.entity.Example; ...@@ -21,7 +19,6 @@ import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigInteger;
import java.util.List; import java.util.List;
/** /**
...@@ -30,19 +27,16 @@ import java.util.List; ...@@ -30,19 +27,16 @@ import java.util.List;
* @author Administrator * @author Administrator
*/ */
@RestController @RestController
@RequestMapping("orderViolation") @RequestMapping("/chw/orderViolation")
@Slf4j @Slf4j
public class OrderViolationController extends BaseController<OrderViolationBiz, OrderViolation> implements UserRestInterface { public class OrderViolationController extends BaseController<OrderViolationBiz, OrderViolation> {
@Autowired @Autowired
private UserFeign userFeign; private UserFeign userFeign;
@Autowired @Autowired
OrderDepositRefundRecordBiz orderDepositRefundRecordBiz; OrderDepositRefundRecordBiz orderDepositRefundRecordBiz;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
private Long MAX_DRIVING_LICENSE_SIZE = 1024 * 1024 * 50L; private Long MAX_DRIVING_LICENSE_SIZE = 1024 * 1024 * 50L;
...@@ -58,19 +52,9 @@ public class OrderViolationController extends BaseController<OrderViolationBiz, ...@@ -58,19 +52,9 @@ public class OrderViolationController extends BaseController<OrderViolationBiz,
@PostMapping("/saveOrderViolation") @PostMapping("/saveOrderViolation")
public ObjectRestResponse saveOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) { public ObjectRestResponse saveOrderViolation(@RequestBody OrderViolation orderViolation, HttpServletRequest request) {
log.info("保存违章记录:orderViolation = {}", orderViolation.toString()); log.info("保存违章记录:orderViolation = {}", orderViolation.toString());
UserDTO userDTOD = getBusinessUserByAppUser();
if (orderViolation.getId() == null) { if (orderViolation.getId() == null) {
orderViolation.setIsDel(0);
orderViolation.setCrtHost(request.getRemoteHost());
orderViolation.setCrtName(userDTOD.getName());
orderViolation.setCrtUserId(userDTOD.getId());
orderViolation.setCrtTime(new BigInteger(String.valueOf(System.currentTimeMillis())));
getBaseBiz().insertOrderViolation(orderViolation); getBaseBiz().insertOrderViolation(orderViolation);
} else { } else {
orderViolation.setUpdHost(request.getRemoteHost());
orderViolation.setUpdName(userDTOD.getName());
orderViolation.setUpdUserId(userDTOD.getId());
orderViolation.setUpdTime(new BigInteger(String.valueOf(System.currentTimeMillis())));
getBaseBiz().updateOrderViolation(orderViolation); getBaseBiz().updateOrderViolation(orderViolation);
} }
orderDepositRefundRecordBiz.saveViolationDeposit(orderViolation); orderDepositRefundRecordBiz.saveViolationDeposit(orderViolation);
......
package com.xxfc.platform.order.rest; package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.AssertUtils;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.SpecialRentBiz; import com.xxfc.platform.order.biz.SpecialRentBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.SpecialRent; import com.xxfc.platform.order.entity.SpecialRent;
import org.springframework.stereotype.Controller; import com.xxfc.platform.order.mqhandler.RabbitProduct;
import org.springframework.web.bind.annotation.RequestMapping; import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import org.springframework.web.bind.annotation.RestController; import com.xxfc.platform.order.pojo.order.add.AddRentVehicleDTO;
import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.mockito.internal.util.collections.Sets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
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.STATUS_CRT;
import static com.xxfc.platform.vehicle.entity.Vehicle.STATE_DOWN;
@RestController @RestController
@RequestMapping("specialRent") @RequestMapping("/chw/specialRent")
public class SpecialRentController extends BaseController<SpecialRentBiz, SpecialRent> { public class SpecialRentController extends BaseController<SpecialRentBiz, SpecialRent> implements UserRestInterface {
@Autowired
RabbitProduct rabbitProduct;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderRentVehicleService orderRentVehicleService;
@Autowired
VehicleFeign vehicleFeign;
@Autowired
UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
@RequestMapping(value = "/appBusiness/addRent", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "添加发布特惠租车")
public ObjectRestResponse appBusinessAddRent(@RequestBody SpecialRent specialRent) {
UserDTO userDTO = getBusinessUserByAppUser();
baseBiz.addRent(specialRent, userDTO);
return ObjectRestResponse.succ();
}
@RequestMapping(value = "/appBusiness/cnlRent", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "取消发布特惠租车")
public ObjectRestResponse appBusinessCnlRent(@RequestBody SpecialRent specialRent) {
UserDTO userDTO = getBusinessUserByAppUser();
//拒绝原来的预约
orderRentVehicleService.errorRejectVehicle(new RentVehicleBO(){{
setBookRecordId(specialRent.getBookRecordId());
}});
return ObjectRestResponse.succ();
}
@RequestMapping(value = "/appBusiness/pageList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "分页查询可参加特惠租车")
public ObjectRestResponse<SpecialRentVO> pageList(QueryDTO dto) {
//查询列表数据
if (StrUtil.isBlank(getCurrentUserId())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
}
dto.setUserId(getCurrentUserIdInt());
Query query = new Query(dto);
PageDataVO<SpecialRentVO> pages = PageDataVO.pageInfo(query, () -> baseBiz.selectByWeekend(w -> {
w.andEqualTo(SpecialRent::getStatus, STATUS_CRT);
return w;
}, " crt_time desc "), SpecialRentVO.class);
return ObjectRestResponse.succ(pages);
}
@RequestMapping(value = "/appBusiness/specialOrder", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "特惠租车下单")
public ObjectRestResponse specialOrder(@RequestBody SpecialOrderDTO dto) {
//查询列表数据
if (StrUtil.isBlank(getCurrentUserId())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
}
if(null == dto.getSpecialId()) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
SpecialRent specialRent = baseBiz.selectById(dto.getSpecialId());
if(null == specialRent) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
if(
!(DateUtil.date(dto.getStartTime()).isAfterOrEquals(DateUtil.date(specialRent.getStartTime()))
&& DateUtil.date(dto.getEndTime()).isBeforeOrEquals(DateUtil.date(specialRent.getEndTime())))
) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE);
}
if(SpecialRent.STATUS_ORDER == specialRent.getStatus()) {
throw new BaseException("该特惠租车已下单", ResultCode.PARAM_ILLEGAL_CODE);
}
//拒绝原来的预约
orderRentVehicleService.errorRejectVehicle(new RentVehicleBO(){{
setBookRecordId(specialRent.getBookRecordId());
}});
//正式下单
dto.setVehicleId(specialRent.getVehicleId());
dto.setStartTime(specialRent.getStartTime());
dto.setEndTime(specialRent.getEndTime());
dto.setStartCompanyId(specialRent.getStartCompanyId());
dto.setEndCompanyId(specialRent.getEndCompanyId());
RentVehicleBO bo = orderRentVehicleBiz.initRentVehicleBO(dto);
// bo.setSpecialOrderSign(SYS_TRUE);
bo.setAppUserDTO(getAppUser());
// orderRentVehicleService.applyCreateOrder(bo, specialRent.getOrderNo());
orderRentVehicleService.createOrder(bo);
baseBiz.updateSelectiveById(new SpecialRent(){{
setId(specialRent.getId());
setStatus(SpecialRent.STATUS_ORDER);
setOrderStatus(SpecialRent.ORDER_STATUS_TOPAY);
}});
return ObjectRestResponse.succ(bo.getOrder());
}
@RequestMapping(value = "/app/unauth/checkHasSpecialRentFegin", method = RequestMethod.GET)
@ResponseBody
@IgnoreUserToken
@ApiOperation(value = "判断车辆是否有进行中的特惠租车")
public ObjectRestResponse checkHasSpecialRent(String vehicleId) {
return ObjectRestResponse.succ(baseBiz.checkHasSpecialRent(vehicleId));
}
@Data
public static class SpecialRentVO extends SpecialRent{
Vehicle vehicle;
@Override
public void setGoodsJson(String goodsJson) {
super.setGoodsJson(goodsJson);
if(StrUtil.isNotBlank(goodsJson)) {
setVehicle(JSONUtil.toBean(goodsJson, Vehicle.class));
super.setGoodsJson(null);
}
}
}
@Data
public static class QueryDTO extends PageParam {
Integer userId;
}
@Data
public static class SpecialOrderDTO extends AddRentVehicleDTO {
Integer specialId;
}
} }
\ No newline at end of file
package com.xxfc.platform.order.rest.background;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.AssertUtils;
import com.github.wxiaoqi.security.common.util.OrderUtil;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.github.wxiaoqi.security.common.vo.PageParam;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.SpecialRentBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.SpecialRent;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.order.add.AddRentVehicleDTO;
import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.mockito.internal.util.collections.Sets;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.xxfc.platform.order.entity.SpecialRent.STATUS_CRT;
import static com.xxfc.platform.vehicle.entity.Vehicle.STATE_DOWN;
@RestController
@RequestMapping("/background/specialRent")
public class BgSpecialRentController extends BaseController<SpecialRentBiz, SpecialRent> implements UserRestInterface {
@Autowired
RabbitProduct rabbitProduct;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderRentVehicleService orderRentVehicleService;
@Autowired
VehicleFeign vehicleFeign;
@Autowired
UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
@RequestMapping(value = "/business/addRent", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "添加特惠租车")
public ObjectRestResponse businessAddRent(@RequestBody SpecialRent specialRent) {
UserDTO userDTO = getAdminUserInfoV2();
baseBiz.addRent(specialRent, userDTO);
return ObjectRestResponse.succ();
}
}
\ No newline at end of file
...@@ -98,7 +98,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -98,7 +98,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
} }
/** /**
* 创建订单及其子项 * 创建订单及其子项 (需求预定申请)
* @param detail * @param detail
*/ */
public void applyCreateOrder(RentVehicleBO detail, String orderNo) { public void applyCreateOrder(RentVehicleBO detail, String orderNo) {
...@@ -112,12 +112,33 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -112,12 +112,33 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
handleDetail(detail); handleDetail(detail);
} }
// /**
// * 创建订单及其子项(特惠租车)
// * @param detail
// */
// public void specialCreateOrder(RentVehicleBO detail, String orderNo) {
// //初始化
// applyInitDetail(detail, orderNo);
// //计算价格
// handleCalculate(detail);
// //插入baseOrder
// baseOrderBiz.insertSelective(detail.getOrder());
// //处理detail
// handleDetail(detail);
// }
public void applyInitDetail(RentVehicleBO bo, String orderNo) { public void applyInitDetail(RentVehicleBO bo, String orderNo) {
BaseOrder order = createBaseOrder(bo.getOrderOrigin(), bo.getFacilitatePhone(), bo.getAppUserDTO(), orderNo); BaseOrder order = createBaseOrder(bo.getOrderOrigin(), bo.getFacilitatePhone(), bo.getAppUserDTO(), orderNo);
bo.setOrder(order); bo.setOrder(order);
initDetailSecond(bo); initDetailSecond(bo);
} }
// public void specialInitDetail(RentVehicleBO bo, String orderNo) {
// BaseOrder order = createBaseOrder(bo.getOrderOrigin(), bo.getFacilitatePhone(), bo.getAppUserDTO(), orderNo);
// bo.setOrder(order);
// initDetailSecond(bo);
// }
@Override @Override
public void initDetail(RentVehicleBO bo) { public void initDetail(RentVehicleBO bo) {
super.initDetail(bo); super.initDetail(bo);
......
...@@ -28,7 +28,7 @@ public class FileUploadServiceImpl implements FileUploadService { ...@@ -28,7 +28,7 @@ public class FileUploadServiceImpl implements FileUploadService {
private String xx_url ; private String xx_url ;
private static final String APK_SUFFIX=".apk"; private static final String APK_SUFFIX=".apk";
private static final String APK_NAME="xxfc.apk"; private static final String APK_NAME="chw.apk";
private static final String JPG=".jpg"; private static final String JPG=".jpg";
private static final String PNG=".png"; private static final String PNG=".png";
......
...@@ -41,6 +41,10 @@ public interface VehicleFeign { ...@@ -41,6 +41,10 @@ public interface VehicleFeign {
@RequestMapping(value = "/vehicleInfo/getByIds", method = RequestMethod.GET) @RequestMapping(value = "/vehicleInfo/getByIds", method = RequestMethod.GET)
public RestResponse<List<Vehicle>> getByIds(@RequestParam(value = "ids") List<String> id); public RestResponse<List<Vehicle>> getByIds(@RequestParam(value = "ids") List<String> id);
//提车
@PostMapping("/backstage/vehicle/unauth/app/updVehicleFeign")
public ObjectRestResponse updVehicleFeign(@RequestBody Vehicle vehicle);
//提车 //提车
@PostMapping("/active/small/departure") @PostMapping("/active/small/departure")
public RestResponse departureBySmall(@RequestBody VehicleDepartureVo departureVo); public RestResponse departureBySmall(@RequestBody VehicleDepartureVo departureVo);
......
...@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.rest.admin; ...@@ -3,6 +3,7 @@ package com.xxfc.platform.vehicle.rest.admin;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface; import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.biz.VehicleBiz; import com.xxfc.platform.vehicle.biz.VehicleBiz;
import com.xxfc.platform.vehicle.biz.VehicleExtensionBiz; import com.xxfc.platform.vehicle.biz.VehicleExtensionBiz;
...@@ -32,10 +33,6 @@ import java.util.stream.Collectors; ...@@ -32,10 +33,6 @@ import java.util.stream.Collectors;
@Api(tags = {"商品申请"}) @Api(tags = {"商品申请"})
public class AdminVehicleController extends BaseController<VehicleBiz>{ public class AdminVehicleController extends BaseController<VehicleBiz>{
@Autowired @Autowired
UserFeign userFeign; UserFeign userFeign;
...@@ -73,6 +70,14 @@ public class AdminVehicleController extends BaseController<VehicleBiz>{ ...@@ -73,6 +70,14 @@ public class AdminVehicleController extends BaseController<VehicleBiz>{
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
@PostMapping("/unauth/app/updVehicleFeign")
@IgnoreUserToken
@ApiModelProperty("更新商品信息Feign")
public ObjectRestResponse updVehicleFeign(@RequestBody Vehicle vehicle) {
baseBiz.updateSelectiveById(vehicle);
return ObjectRestResponse.succ();
}
@PostMapping("delVehicle") @PostMapping("delVehicle")
@ApiModelProperty("更新商品信息") @ApiModelProperty("更新商品信息")
public ObjectRestResponse delVehicle(@RequestBody Vehicle vehicle) { public ObjectRestResponse delVehicle(@RequestBody Vehicle vehicle) {
......
...@@ -1417,7 +1417,9 @@ ...@@ -1417,7 +1417,9 @@
v.*, v.*,
b.cn_name as brandName, b.cn_name as brandName,
c.`name` categoryName, c.`name` categoryName,
bc.`name` as companyName bc.`name` as companyName,
bc1.`leader` as manageCompanyLeader,
bc1.`leader_contact_info` as manageCompanyLeaderContact
<if test="lon != null and lat != null"> <if test="lon != null and lat != null">
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance ,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if> </if>
...@@ -1425,6 +1427,7 @@ ...@@ -1425,6 +1427,7 @@
LEFT JOIN vehicle_brand b ON v.brand_id=b.id LEFT JOIN vehicle_brand b ON v.brand_id=b.id
LEFT JOIN vehicle_category c ON v.category_id=c.id LEFT JOIN vehicle_category c ON v.category_id=c.id
LEFT JOIN branch_company bc ON v.subordinate_branch=bc.id LEFT JOIN branch_company bc ON v.subordinate_branch=bc.id
LEFT JOIN branch_company bc1 ON v.manage_company_id=bc1.id
<where> <where>
v.is_del = 0 v.is_del = 0
<if test="addrCity !=null"> <if test="addrCity !=null">
......
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