Commit 0361322c authored by youjj's avatar youjj

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

parents 9f198bc6 30ba5f9d
......@@ -85,5 +85,5 @@ public class ObjectRestResponse<T> extends BaseResponse {
*/
public static ObjectRestResponse createDefaultFail() {
return new ObjectRestResponse().status(WEB_CALL_RESULT_FAILED).msg(RESULT_FAIL_MSG).rel(false);
}
}
}
......@@ -172,6 +172,9 @@ public class ResultCode {
// 未绑定社保卡
public static int NOT_BIND_SOCIAL_CARD = Integer.valueOf(SystemProperty.getResultConfig("NOT_BIND_SOCIAL_CARD"));
// 操作失败
public static int STOCK_CODE = Integer.valueOf(SystemProperty.getResultConfig("STOCK_CODE"));
public static String getMsg(int code) {
return SystemProperty.getResultConfig(String.valueOf(code));
......
package com.github.wxiaoqi.security.common.vo;
import com.github.pagehelper.ISelect;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.util.Query;
import lombok.Data;
import java.util.List;
......@@ -34,10 +36,16 @@ public class PageDataVO<T> {
return pageDataVo;
}
public static <M> PageDataVO<M> pageInfo(Integer page, Integer limit, List<M> list){
PageHelper.startPage(page,limit);
PageInfo<M> listPageInfo = new PageInfo<M>(list);
return pageInfo(listPageInfo);
// public static <M> PageDataVO<M> pageInfo(Integer page, Integer limit, List<M> list){
// PageInfo<M> pageInfo = new PageInfo<M>(list);
// return PageDataVO.pageInfo(pageInfo);
// }
public static <M> PageDataVO<M> pageInfo(Integer page, Integer limit, ISelect select){
return PageDataVO.pageInfo(PageHelper.startPage(page, limit).doSelectPageInfo(select));
}
public static <M> PageDataVO<M> pageInfo(Query query, ISelect select){
return PageDataVO.pageInfo(PageHelper.startPage(query.getPage(), query.getLimit()).doSelectPageInfo(select));
}
}
......@@ -179,3 +179,5 @@ SCRM_RESULTINFO_SUCCESS_CODE=10344
NO_SELECT_BY_RS=1010
#还未绑定社保卡
NOT_BIND_SOCIAL_CARD=3010
#库存不足
STOCK_CODE=201
\ No newline at end of file
......@@ -53,6 +53,11 @@
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.github.drtrang</groupId>
......
......@@ -48,11 +48,6 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<!-- excel 组件 -->
<dependency>
......
......@@ -19,6 +19,12 @@
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-tour-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-universal-api</artifactId>
......
......@@ -5,6 +5,7 @@ import java.util.Map;
public enum OrderTypeEnum {
RentVehicle(1, "租车订单"),
TOUR(2, "旅游订单"),
;
/**
* 编码
......
......@@ -91,9 +91,9 @@ public class OrderTourDetail implements Serializable {
private String endCityName;
//自己乘客ids
@Column(name = "my_passager_ids")
@ApiModelProperty(value = "自己乘客ids")
private String myPassagerIds;
@Column(name = "tour_user_ids")
@ApiModelProperty(value = "出游乘客ids")
private String tourUserIds;
//出发公司Id
@Column(name = "start_company_id")
......
......@@ -4,10 +4,12 @@ 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.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import lombok.Data;
@Data
public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail {
private BaseOrder order;
private VehicleModel vehicleModel;
private BookVehicleVO bookVehicleVO;
}
......@@ -4,11 +4,16 @@ import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.tour.entity.TourUser;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import lombok.Data;
import java.util.List;
@Data
public class TourBO extends OrderTourDetail implements OrderDetail {
private BaseOrder order;
// private Tour
List<TourUser> tourUsers;
Integer number;
Integer childNumber;
}
package com.xxfc.platform.order.pojo.price;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class TourPriceVO extends OrderPriceVO{
@ApiModelProperty(value = "车辆价格")
BigDecimal vehicleAmount;
@ApiModelProperty(value = "司机价格")
BigDecimal driverAmount;
@ApiModelProperty(value = "押金价格")
BigDecimal deposit;
@ApiModelProperty(value = "天数")
Integer dayNum;
@ApiModelProperty(value = "车辆个数")
Integer vehicleNum;
@ApiModelProperty(value = "司机个数")
Integer driverNum;
@ApiModelProperty(value = "车型名称")
String modelName;
@ApiModelProperty(value = "车型价格")
BigDecimal modelAmount;
@ApiModelProperty(value = "司机单价")
BigDecimal driverPrice;
@ApiModelProperty(value = "费用详情")
private String costDetail;
}
......@@ -26,18 +26,6 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-vehicle-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-tour-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
......
......@@ -3,6 +3,7 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.pagehelper.PageHelper;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
......@@ -69,7 +70,7 @@ public class BaseOrderController extends CommonBaseController {
}
dto.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
Query query = new Query(dto);
return new ObjectRestResponse<>().data(PageDataVO.pageInfo(query.getPage(), query.getLimit(), baseOrderBiz.pageByParm(query.getSuper())));
return new ObjectRestResponse<>().data(PageDataVO.pageInfo(query, () -> baseOrderBiz.pageByParm(query.getSuper())));
}
@ApiOperation("订单详情")
......@@ -81,17 +82,22 @@ public class BaseOrderController extends CommonBaseController {
if(StringUtils.isBlank(BaseContextHandler.getUserID())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
}
Query query = initQuery(no);
PageDataVO<OrderPageVO> page = PageDataVO.pageInfo(query, () -> baseOrderBiz.pageByParm(query.getSuper()));
if(page.getData().isEmpty()) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
return new ObjectRestResponse<>().data(page.getData().get(0));
}
private Query initQuery(String no) {
QueryOrderDetailDTO qodd = new QueryOrderDetailDTO();
qodd.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
qodd.setNo(no);
qodd.setLimit(1);
qodd.setPage(1);
Query query = new Query(qodd);
PageDataVO<OrderPageVO> page = PageDataVO.pageInfo(query.getPage(), query.getLimit(), baseOrderBiz.pageByParm(query.getSuper()));
if(page.getData().isEmpty()) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
return new ObjectRestResponse<>().data(page.getData().get(0));
return query;
}
@RequestMapping(value = "/pay",method = RequestMethod.POST)
......
......@@ -7,11 +7,13 @@ 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.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.service.OrderRentVehicleService;
import com.xxfc.platform.order.pojo.AddRentVehicleDTO;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
......@@ -38,17 +40,21 @@ public class OrderRentVehicleController extends CommonBaseController {
@RequestMapping(value = "add",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "确认租车订单")
public ObjectRestResponse<OrderRentVehicleDetail> add(@RequestBody AddRentVehicleDTO vo){
public ObjectRestResponse<BaseOrder> add(@RequestBody AddRentVehicleDTO vo){
RentVehicleBO bo = BeanUtil.toBean(vo, RentVehicleBO.class);
bo.setBookVehicleVO(new BookVehicleVO(){{
setBookStartDate(vo.getBookStartDate());
setBookEndDate(vo.getBookEndDate());
}});
orderRentVehicleService.createOrder(bo);
return new ObjectRestResponse<>().rel(true).data(bo.getOrder());
return ObjectRestResponse.succ(bo.getOrder());
}
@RequestMapping(value = "list-by-order/{orderId}",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "租车列表by订单Id")
public ObjectRestResponse<OrderRentVehicleDetail> listByOrder(@PathVariable("orderId") Integer orderId){
return new ObjectRestResponse<>().data(orderRentVehicleBiz.listByOrderId(orderId));
return ObjectRestResponse.succ(orderRentVehicleBiz.listByOrderId(orderId));
}
@RequestMapping(value = "/app/unauth/calculate-price",method = RequestMethod.GET)
......@@ -57,7 +63,7 @@ public class OrderRentVehicleController extends CommonBaseController {
@IgnoreUserToken
public ObjectRestResponse<RentVehiclePriceVO> calculatePrice(CalculatePriceVO vo){
RentVehicleBO bo = BeanUtil.toBean(vo, RentVehicleBO.class);
return new ObjectRestResponse<>().rel(true).data(orderRentVehicleService.calculatePrice(bo));
return ObjectRestResponse.succ(orderRentVehicleService.calculatePrice(bo));
}
@Data
......
package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderTourDetailBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderTourDetail;
import com.xxfc.platform.order.pojo.AddRentVehicleDTO;
import com.xxfc.platform.order.pojo.AddTourDTO;
import com.xxfc.platform.order.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.order.pojo.price.TourPriceVO;
import com.xxfc.platform.order.service.OrderTourService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -18,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.persistence.Column;
@Controller
@RequestMapping("orderTour")
public class OrderTourController extends BaseController<OrderTourDetailBiz,OrderTourDetail> {
......@@ -28,9 +37,37 @@ public class OrderTourController extends BaseController<OrderTourDetailBiz,Order
@RequestMapping(value = "add",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "确认旅游订单")
public ObjectRestResponse<OrderRentVehicleDetail> add(@RequestBody AddTourDTO vo){
RentVehicleBO bo = BeanUtil.toBean(vo, RentVehicleBO.class);
public ObjectRestResponse<BaseOrder> add(@RequestBody AddTourDTO vo){
TourBO bo = BeanUtil.toBean(vo, TourBO.class);
orderTourService.createOrder(bo);
return new ObjectRestResponse<>().rel(true).data(bo.getOrder());
return ObjectRestResponse.succ(bo.getOrder());
}
@RequestMapping(value = "/app/unauth/calculate-price",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "价格计算")
@IgnoreUserToken
public ObjectRestResponse<TourPriceVO> calculatePrice(CalculatePriceVO vo){
TourBO bo = BeanUtil.toBean(vo, TourBO.class);
return ObjectRestResponse.succ(orderTourService.calculatePrice(bo));
}
@Data
public class CalculatePriceVO {
//商品id
@ApiModelProperty(value = "商品id")
private Integer goodId;
//商品规格ids
@ApiModelProperty(value = "商品规格ids")
private String speIds;
//具体商品(商品项)id
@ApiModelProperty(value = "具体商品(商品项)id")
private String spePriceId;
//自己乘客ids
@ApiModelProperty(value = "自己乘客ids")
private String tourUserIds;
}
}
\ No newline at end of file
......@@ -32,7 +32,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
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");
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
VehicleFeign vehicleFeign;
......@@ -95,7 +95,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//商品价格
goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount);
//总价格(包含押金)
orderAmount = orderAmount.add(goodsAmount).add(DEPOSIT);
orderAmount = orderAmount.add(goodsAmount).add(vehicleModel.getDeposit());
//生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO();
......@@ -104,7 +104,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rvp.setDriverAmount(driverAmount);
rvp.setVehicleAmount(vehicleAmount);
rvp.setRealAmount(orderAmount);
rvp.setDeposit(DEPOSIT);
rvp.setDeposit(vehicleModel.getDeposit());
rvp.setModelAmount(vehicleModel.getPrice());
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setModelName(vehicleModel.getName());
......@@ -133,9 +133,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
private String acquireVehicle(RentVehicleBO detail) {
//根据车型、时间、距离,门店,预定车辆
// BookVehicleVO bookVehicleVO = new BookVehicleVO(){{
// setBookStartDate(detail);
// }};
BookVehicleVO bookVehicleVO = new BookVehicleVO(){{
// setBookStartDate(detail.getS);
}};
// vehicleFeign.rentApplyVehicle()
String vehicleId = "0e9a88db-cb1b-48a4-b307-40f89eed906f";
detail.setVehicleId(vehicleId);
......
......@@ -14,7 +14,10 @@ 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.pojo.order.RentVehicleBO;
import com.xxfc.platform.order.pojo.order.TourBO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.log4j.Log4j;
......@@ -26,12 +29,14 @@ import java.math.BigDecimal;
@Service
@Log4j
public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, RentVehicleBO> {
public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, TourBO> {
@Autowired
TourFeign tourFeign;
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");
// private static BigDecimal DEPOSIT = new BigDecimal("20000.00");
@Autowired
VehicleFeign vehicleFeign;
......@@ -44,74 +49,77 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, R
@PostConstruct
public void init(){
this.orderTypeEnum = OrderTypeEnum.RentVehicle;
this.orderTypeEnum = OrderTypeEnum.TOUR;
}
@Override
public void initDetail(RentVehicleBO bo) {
public void initDetail(TourBO bo) {
super.initDetail(bo);
VehicleModel vehicleModel = vehicleFeign.get(bo.getModelId()).getData();
bo.setVehicleModel(vehicleModel);
//VehicleModel vehicleModel = vehicleFeign.get(bo.getModelId()).getData();
//bo.setVehicleModel(vehicleModel);
}
@Override
public void handleDetail(RentVehicleBO bo) {
//获取可用车辆
acquireVehicle(bo);
public void handleDetail(TourBO bo) {
//设置订单状态为3
bo.getOrder().setStatus(OrderStatusEnum.ORDER_UNPAY.getCode());
//设置订单图片
bo.getOrder().setPicture(bo.getVehicleModel().getPicture());
//bo.getOrder().setPicture(bo.getVehicleModel().getPicture());
//设置订单名称
bo.getOrder().setName(bo.getVehicleModel().getName());
//bo.getOrder().setName(bo.getVehicleModel().getName());
super.handleDetail(bo);
}
@Override
public void handleCalculate(RentVehicleBO bo) {
public void handleCalculate(TourBO bo) {
RentVehiclePriceVO rvpv = calculatePrice(bo);
BeanUtil.copyProperties(rvpv, bo.getOrder());
BeanUtil.copyProperties(rvpv, bo);
}
@Override
public RentVehiclePriceVO calculatePrice(RentVehicleBO detail) {
public RentVehiclePriceVO calculatePrice(TourBO detail) {
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal vehicleAmount = BigDecimal.ZERO;
BigDecimal driverAmount = BigDecimal.ZERO;
BigDecimal tourAmount = BigDecimal.ZERO;
//计算旅游价格
tourFeign.refund(new TourSpePriceDTO(){{
setChildNumber(detail.getChildNumber());
setChildNumber(detail.getChildNumber());
}});
//计算价格
//计算车辆费用
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
vehicleAmount = vehicleAmount.add(vehicleModel.getPrice().multiply(BigDecimal.valueOf(detail.getDayNum())));
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
//计算司机费用
driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
}
// VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
// vehicleAmount = vehicleAmount.add(vehicleModel.getPrice().multiply(BigDecimal.valueOf(detail.getDayNum())));
// if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
// //计算司机费用
// driverAmount = driverAmount.add(DRIVER_PRICE.multiply(BigDecimal.valueOf(detail.getDayNum())));
// }
//商品价格
goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount);
// goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount);
//总价格(包含押金)
orderAmount = orderAmount.add(goodsAmount).add(DEPOSIT);
// orderAmount = orderAmount.add(goodsAmount).add(DEPOSIT);
//生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO();
rvp.setOrderAmount(orderAmount);
rvp.setGoodsAmount(goodsAmount);
rvp.setDriverAmount(driverAmount);
rvp.setVehicleAmount(vehicleAmount);
// rvp.setDriverAmount(driverAmount);
// rvp.setVehicleAmount(vehicleAmount);
rvp.setRealAmount(orderAmount);
rvp.setDeposit(DEPOSIT);
rvp.setModelAmount(vehicleModel.getPrice());
// rvp.setDeposit(DEPOSIT);
// rvp.setModelAmount(vehicleModel.getPrice());
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setModelName(vehicleModel.getName());
// rvp.setModelName(vehicleModel.getName());
rvp.setDayNum(detail.getDayNum());
rvp.setVehicleNum(1);
rvp.setDriverNum(1);
detail.setCostDetail(costDetail(rvp));
//detail.setCostDetail(costDetail(rvp));
return rvp;
}
......@@ -129,15 +137,4 @@ public class OrderTourService extends AbstractOrderHandle<OrderRentVehicleBiz, R
vo.setCostDetail(result);
return result;
}
private String acquireVehicle(RentVehicleBO detail) {
//根据车型、时间、距离,门店,预定车辆
// BookVehicleVO bookVehicleVO = new BookVehicleVO(){{
// setBookStartDate(detail);
// }};
// vehicleFeign.rentApplyVehicle()
String vehicleId = "0e9a88db-cb1b-48a4-b307-40f89eed906f";
detail.setVehicleId(vehicleId);
return vehicleId;
}
}
......@@ -4,13 +4,11 @@ package com.xxfc.platform.tour.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 计算价格
*/
@Data
public class TourSpePriceDto {
public class TourSpePriceDTO {
//用户id
@ApiModelProperty(value = "用户id")
......@@ -26,11 +24,11 @@ public class TourSpePriceDto {
//儿童人数
@ApiModelProperty(value = "儿童人数")
private String childNumber;
private Integer childNumber;
//"成人人数
@ApiModelProperty(value = "成人人数")
private String endTime;
private Integer number;
}
package com.xxfc.platform.tour.feign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-21 8:11
*/
@FeignClient(value = "xx-tour")
public interface TourFeign {
/**
* 计算价格
* @param spePriceDto
* @return
*/
@RequestMapping(value = "/spe/user/prices", method = RequestMethod.POST)
public ObjectRestResponse<TourSpePriceVo> refund(@RequestBody TourSpePriceDTO spePriceDto);
@RequestMapping(value = "/spe/stock", method = RequestMethod.GET)
public ObjectRestResponse<TourSpePriceVo> stock(Integer speId,Integer number);
}
package com.xxfc.platform.tour.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 等级金额表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-06 11:41:51
*/
@Data
public class TourSpePriceVo {
//用户id
@ApiModelProperty(value = "/用户id")
private Integer userId;
//等级
@ApiModelProperty(value = "等级")
private Integer level;
//大人单价"
@ApiModelProperty(value = "大人单价")
private BigDecimal price;
//大人总价
@ApiModelProperty(value = "大人总价")
private BigDecimal totalPrice;
//儿童单价
@ApiModelProperty(value = "儿童单价")
private BigDecimal childPrice;
//儿童总价
@ApiModelProperty(value = "儿童总价")
private BigDecimal totaiChildPrice;
//库存
@ApiModelProperty(value = "库存")
private Integer stock;
}
......@@ -14,7 +14,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableDiscoveryClient
@EnableScheduling
@EnableAceAuthClient
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign","com.github.wxiaoqi.security.admin.feign"})
@EnableFeignClients({"com.github.wxiaoqi.security.auth.client.feign","com.github.wxiaoqi.security.admin.feign","com.xxfc.platform.tour.feign"})
@EnableAceCache
@tk.mybatis.spring.annotation.MapperScan(basePackages = "com.xxfc.platform.tour.mapper")
public class TourApplication {
......
package com.xxfc.platform.tour.biz;
import com.github.pagehelper.PageHelper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.tour.entity.TourGood;
import com.xxfc.platform.tour.mapper.TourGoodMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xxfc.platform.tour.entity.TourGood;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import java.util.HashMap;
import java.util.Map;
......@@ -28,7 +28,6 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
/**
* 查询旅游路线列表
*
* @param page
* @param limit
* @param query
......@@ -38,15 +37,18 @@ public class TourGoodBiz extends BaseBiz<TourGoodMapper, TourGood> {
* @param distance
* @return
*/
public PageDataVO<TourGood> getGoodList(int page, int limit, String query, Double latitude, Double longitude, Integer tagId, Double distance) {
//查询参数
Map<String, Object> params = new HashMap<String, Object>();
params.put("query", query);
params.put("latitude", latitude);
params.put("longitude", longitude);
params.put("tagId", tagId);
params.put("distance", distance);
// List<TourGood> list = tourGoodMapper.getGoodList(params);
return PageDataVO.pageInfo(page, limit, mapper.getGoodList(params));
public PageDataVO<TourGood> getGoodList(int page, int limit , String query , Double latitude, Double longitude, Integer tagId, Double distance){
Map<String, Object> params = initParam(page, limit, query, latitude, longitude, tagId, distance);
return PageDataVO.pageInfo(page, limit, () -> mapper.getGoodList(params));
}
private Map<String, Object> initParam(int page, int limit, String query, Double latitude, Double longitude, Integer tagId, Double distance) {
Map<String,Object> params = new HashMap<String,Object>();
params.put("query",query);
params.put("latitude",latitude);
params.put("longitude",longitude);
params.put("tagId",tagId);
params.put("distance",distance);
return params;
}
}
\ No newline at end of file
package com.xxfc.platform.tour.biz;
import com.xxfc.platform.tour.mapper.TourGoodSpeMapper;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.entity.TourGoodSpePrice;
import com.xxfc.platform.tour.mapper.TourGoodSpePriceMapper;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.xxfc.platform.tour.entity.TourGoodSpe;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 旅游商品规格表
*
......@@ -14,5 +24,67 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
* @date 2019-06-06 11:41:51
*/
@Service
public class TourGoodSpeBiz extends BaseBiz<TourGoodSpeMapper,TourGoodSpe> {
@Slf4j
public class TourGoodSpeBiz extends BaseBiz<TourGoodSpePriceMapper, TourGoodSpePrice> {
public ObjectRestResponse<TourSpePriceVo> getPricesByuserid(TourSpePriceDTO priceDto) {
if (priceDto == null || priceDto.getUserId() == null || priceDto.getUserId() == 0 ||
priceDto.getNumber() == null || priceDto.getNumber() == 0||priceDto.getSpeId()==null) {
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
}
TourSpePriceVo priceVo = new TourSpePriceVo();
Integer speId = priceDto.getSpeId();
Integer number = priceDto.getNumber();
Integer childNumber = priceDto.getChildNumber() == null ? 0 : priceDto.getChildNumber();
if (speId != null) {
TourGoodSpePrice spePrice = mapper.selectByPrimaryKey(speId);
if (spePrice != null) {
Integer level = priceDto.getLevel();
priceVo.setUserId(priceDto.getUserId());
priceVo.setLevel(priceDto.getLevel());
priceVo.setStock(spePrice.getStock());
BigDecimal price = spePrice.getPrice();
BigDecimal childPrice = spePrice.getChildPrice();
if (level != null && level > 0) {
String memberPrice = spePrice.getMemberPrice();
JSONArray array = JSONArray.parseArray(memberPrice);
if (array.size() > 0) {
for (Object obj : array) {
JSONObject jsonObject = JSONObject.parseObject(obj.toString());
Integer levels = jsonObject.getInteger("level");
if (level == levels) {
String money = jsonObject.getString("price");
price = new BigDecimal(StringUtils.isNotBlank(money) ? money : "0.00");
String childMoney = jsonObject.getString("child_price");
childPrice = new BigDecimal(StringUtils.isNotBlank(childMoney) ? childMoney : "0.00");
break;
}
}
}
}
BigDecimal totalPrice = price.multiply(new BigDecimal(number)).setScale(2, RoundingMode.HALF_UP);
BigDecimal totalChildPrice = childNumber > 0 ? price.multiply(new BigDecimal(childNumber)).setScale(2, RoundingMode.HALF_UP): new BigDecimal("0.00");
priceVo.setPrice(price);
priceVo.setChildPrice(childPrice);
priceVo.setTotalPrice(totalPrice);
priceVo.setTotaiChildPrice(totalChildPrice);
return ObjectRestResponse.succ(priceVo);
}
}
return ObjectRestResponse.createDefaultFail();
}
//减库存
public ObjectRestResponse cutStock(Integer speId,Integer number) {
TourGoodSpePrice spePrice = mapper.selectByPrimaryKey(speId);
if (spePrice != null && spePrice.getStock() > 0 && spePrice.getStock() >= number) {
mapper.updStockById(speId, number);
return ObjectRestResponse.succ();
} else {
return ObjectRestResponse.createFailedResult(ResultCode.STOCK_CODE, "库存不足");
}
}
}
\ No newline at end of file
......@@ -18,6 +18,9 @@ public interface TourGoodSpePriceMapper extends Mapper<TourGoodSpePrice> {
List<TourDepartTimeVo> getAllByGoodId(@Param("goodId") Integer goodId);
//减库存
int updStockById(@Param("id") Integer id,@Param("number") Integer number);
}
package com.xxfc.platform.tour.rest;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
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.xxfc.platform.tour.biz.TourGoodSpeBiz;
import com.xxfc.platform.tour.common.TourBaseController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.xxfc.platform.tour.dto.TourSpePriceDTO;
import com.xxfc.platform.tour.vo.TourSpePriceVo;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("spe")
......@@ -19,10 +16,17 @@ public class TourGoodSpeController extends TourBaseController<TourGoodSpeBiz> {
//获取商品详情
@RequestMapping(value = "/user/prices", method = RequestMethod.GET)
public ObjectRestResponse user() {
AppUserDTO userDTO=getUserInfo();
return ObjectRestResponse.succ(userDTO);
@RequestMapping(value = "/user/prices", method = RequestMethod.POST)
public ObjectRestResponse<TourSpePriceVo> prices(@RequestBody TourSpePriceDTO priceDto) {
return baseBiz.getPricesByuserid(priceDto);
}
//减库存
@RequestMapping(value = "/stock", method = RequestMethod.GET)
public ObjectRestResponse<TourSpePriceVo> stock(
@RequestParam(value = "speId",defaultValue = "0")Integer speId,
@RequestParam(value = "number",defaultValue = "0") Integer number){
return baseBiz.cutStock(speId,number);
}
}
\ No newline at end of file
......@@ -40,6 +40,11 @@
FROM tour_good_spe_price WHERE good_id=#{goodId} and is_del=0
</select>
<!-- 减库存-->
<update id="updStockById">
update tour_good_spe_price set stock=stock-#{number} where id=#{id}
</update>
</mapper>
\ No newline at end of file
......@@ -62,6 +62,11 @@ public class VehicleModel implements Serializable {
@ApiModelProperty(value = "价格")
private BigDecimal price;
//价格
@Column(name = "deposit")
@ApiModelProperty(value = "押金")
private BigDecimal deposit;
//创建时间
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
......
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