Commit 46775ece authored by 周健威's avatar 周健威

车辆相关和优惠券相关

parent 61c999f3
......@@ -251,4 +251,10 @@ public class Coupon implements Serializable {
@ApiModelProperty(value = "可使用门店ids")
private String companyIds;
/**
* 是否可领取;0-否;1-是
*/
@Column(name = "is_led")
@ApiModelProperty(value = "是否可领取;0-否;1-是")
private Integer isLed;
}
......@@ -41,7 +41,7 @@ public class CouponAdminController implements UserRestInterface {
}
@ApiOperation("优惠券列表")
@GetMapping("/page")
@GetMapping("/operate/page")
public ObjectRestResponse<PageDataVO<CouponPagVo>> listCouponWithPage(CouponFindDTO couponFindDTO) {
DataInterBean dataInterBean = getDataInter();
couponFindDTO.setBizType(dataInterBean.getBizType());
......
......@@ -346,4 +346,7 @@ public class BaseOrder implements Serializable {
@Column(name = "revenue_json")
private String revenueJson;
@Column(name = "goods_type")
private Integer goodsType;
}
......@@ -110,6 +110,18 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
handleDetail(detail);
}
@Override
public void createOrder(RentVehicleBO detail) {
//初始化
initDetail(detail);
//计算价格
handleCalculate(detail);
//插入baseOrder
baseOrderBiz.insertSelective(detail.getOrder());
//处理detail
handleDetail(detail);
}
public void applyInitDetail(RentVehicleBO bo, String orderNo) {
BaseOrder order = createBaseOrder(bo.getOrderOrigin(), bo.getFacilitatePhone(), bo.getAppUserDTO(), orderNo);
bo.setOrder(order);
......@@ -357,6 +369,15 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Override
public RentVehiclePriceVO calculatePrice(RentVehicleBO detail) {
if(Vehicle.GOODS_TYPE_RV == detail.getOrder().getGoodsType()) {
return dayCalculatePrice(detail);
}else {
return hourCalculatePrice(detail);
}
}
private RentVehiclePriceVO dayCalculatePrice(RentVehicleBO detail) {
BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
......@@ -378,7 +399,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
detail.initDate();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getByVehicleIdFeign(detail.getVehicleId(), detail.getStartDateStr(), detail.getEndDateStr(), dto.getUserid(), detail.getStartCompanyId()).getData();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getPriceByVehicleIdFeignV2(detail.getVehicleId(), detail.getStartDateStr(), detail.getEndDateStr(), dto.getUserid(), detail.getStartCompanyId()).getData();
// List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.findVehicleModelCalendarPriceByDate(detail.getStartTime(), detail.getEndTime(), detail.getModelId(), dto.getUserid()).getData();
// List<VehicleModelCalendarPriceDTO> metaVmcpds;
// for (VehicleHolidayPriceInfo vhpi : vhpis) {
......@@ -534,6 +555,180 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
return rvp;
}
private RentVehiclePriceVO hourCalculatePrice(RentVehicleBO detail) {
BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal vehicleAmount = BigDecimal.ZERO;
BigDecimal metaVehicleAmount = BigDecimal.ZERO;
BigDecimal driverAmount = BigDecimal.ZERO;
BigDecimal damageSafeAmount = BigDecimal.ZERO;
BigDecimal couponAmount = BigDecimal.ZERO;
String couponDesc = "";
Integer vehicleDayNum = 0;
Integer freeDayNum = 0;
//抵消的天数
Integer offsetNum = 0;
//当前用户
AppUserDTO dto = detail.getAppUserDTO();
//车型信息
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
detail.initDate();
List<VehicleModelCalendarPriceDTO> metaVmcpds = vehicleFeign.getPriceByVehicleIdFeignV2(detail.getVehicleId(), detail.getStartDateStr(), detail.getEndDateStr(), dto.getUserid(), detail.getStartCompanyId()).getData();
List<VMCalendarPriceCostDTO> vmcpds = Convert.toList(VMCalendarPriceCostDTO.class, metaVmcpds);
//设置Item
VehicleItemDTO vehicleOrderItem = BeanUtil.toBean(
orderItemBiz.initOrderItem(vehicleModel.getPrice(), detail.getDayNum(), vehicleModel.getName()
, vehicleModel.getId(), ItemTypeEnum.VEHICLE_MODEL, JSONUtil.parseArray(vmcpds).toString())
, VehicleItemDTO.class);
OrderItem driverOrderItem = orderItemBiz.initOrderItem(DRIVER_PRICE, detail.getDayNum(), "平台司机", null, ItemTypeEnum.DRIVER);
OrderItem damageSafeOrderItem = orderItemBiz.initOrderItem(DAMAGE_SAFE, detail.getDayNum(), "免赔费用", null, ItemTypeEnum.DAMAGE_SAFE);
detail.setItems(new ArrayList<OrderItem>());
detail.getItems().add(vehicleOrderItem);
//如果用户存在,免费天数
if(null != dto && null != detail.getRentFreeDay() && detail.getRentFreeDay() > 0 ) {
if(null == dto.getRentFreeDays() || dto.getRentFreeDays() <= 0) {
throw new BaseException(ResultCode.PARAM_EPIRE_CODE, new HashSet<String>() {{
add("免费租车天数不存在或为0");
}});
}
// //循环价格列表 获得对应消耗的免费天数
vehicleOrderItem.initDetail(dto.getRentFreeDays());
freeDayNum = vehicleOrderItem.getCutNum();
offsetNum = vehicleOrderItem.getOffsetNum();
vehicleDayNum = detail.getDayNum() - offsetNum;
detail.getOrder().setHasMemberRight(SYS_TRUE);
}else {
vehicleOrderItem.initDetail(0);
vehicleDayNum = detail.getDayNum();
}
vmcpds = vehicleOrderItem.getVehicleDetail();
detail.setFreeDays(freeDayNum);
//计算价格
//计算车辆费用
//如果用户存在,并且为会员,并且车辆有优惠价
//默认折扣默认100
detail.setRebate(100);
if(null != dto && SYS_TRUE.equals(dto.getIsMember()) && !NONE.getCode().equals(dto.getMemberLevel()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) {
String[] prices = StrUtil.isBlank(vehicleModel.getRentDiscountPrice())
?new String[]{vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString()}
:vehicleModel.getRentDiscountPrice().split(",");
//设置是否使用会员权益
for(VMCalendarPriceCostDTO vmcpcd : vehicleOrderItem.getVehicleDetail()) {
if(!vmcpcd.getNo_discount_price().equals(vmcpcd.getPrice())) {
detail.getOrder().setHasMemberRight(SYS_TRUE);
break;
}
}
detail.setRebate(dto.getDiscount());
}
//计算价格
if(vehicleDayNum > 0) {
for(int i = offsetNum; i < vmcpds.size(); i++) {
vehicleAmount = vehicleAmount.add(vmcpds.get(i).getConsumeAmount());
metaVehicleAmount = metaVehicleAmount.add(vmcpds.get(i).getNo_discount_price());
}
}else {
vehicleOrderItem.setUnitPrice(BigDecimal.ZERO);
}
//如果有使用会员权益或者优惠券,则设置订单已优惠
if(SYS_TRUE.equals(detail.getOrder().getHasMemberRight())) {
detail.getOrder().setHasDiscount(SYS_TRUE);
}
//平均单价 = 总价 / 实际消费天数
vehicleOrderItem.calculateVehicleUnitPrice(vehicleAmount, metaVehicleAmount, Boolean.TRUE);
if(DRIVER_TYPE_COMPANY.equals(detail.getDriverType())) {
//计算司机费用
driverAmount = driverAmount.add(driverOrderItem.getCalculateAmount(Boolean.TRUE));
detail.getItems().add(driverOrderItem);
}
if(DRIVER_TYPE_DAMAGE_SAFE.equals(detail.getDamageSafe())) {
//免赔费用
damageSafeAmount = damageSafeAmount.add(damageSafeOrderItem.getCalculateAmount(Boolean.TRUE));
detail.getItems().add(damageSafeOrderItem);
}
//商品价格
goodsAmount = goodsAmount.add(vehicleAmount).add(driverAmount).add(damageSafeAmount);
//vehicleAmount 优惠券处理
if(null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
List<String> usedTickerNos = CollUtil.newArrayList();
for(String no : detail.getTickerNo()) {
BigDecimal tempCouponAmount = activityFeign.use(dto.getUserid(), CollUtil.newArrayList(no), detail.getOrder().getNo(), channel, vehicleAmount, ActivityFeign.TYPE_NO_USE);
if(tempCouponAmount.compareTo(BigDecimal.ZERO) > 0) {
//加入总couponAmount
couponAmount = couponAmount.add(tempCouponAmount);
usedTickerNos.add(no);
//设置描述
couponDesc += activityFeign.info(no).getTitle();
}
}
if(couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(usedTickerNos.stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
vehicleOrderItem.handleCouponAmount(couponAmount);
}
}
//总价格(包含押金)
orderAmount = orderAmount.add(goodsAmount).add(vehicleModel.getDeposit());
realAmount = orderAmount.subtract(couponAmount);
//生成订单明细
RentVehiclePriceVO rvp = new RentVehiclePriceVO();
rvp.setDeposit(vehicleModel.getDeposit());
rvp.setDriverPrice(DRIVER_PRICE);
rvp.setDamageSafePrice(DAMAGE_SAFE);
rvp.setModelName(vehicleModel.getName());
rvp.setDayNum(detail.getDayNum());
rvp.setVehicleNum(1);
rvp.setDriverNum(1);
rvp.setCouponAmount(couponAmount);
rvp.setOrderAmount(orderAmount);
rvp.setGoodsAmount(goodsAmount);
rvp.setRealAmount(realAmount);
rvp.setDriverAmount(driverAmount);
rvp.setVehicleAmount(vehicleAmount);
rvp.setDamageSafeAmount(damageSafeAmount);
rvp.setModelAmount(vehicleOrderItem.getUnitPrice());
rvp.setVehicleDayNum(vehicleDayNum);
rvp.setFreeDayNum(freeDayNum);
rvp.setCutDayNum(offsetNum);
rvp.setFreeAmount(vehicleOrderItem.getCutAmount());
rvp.setBuyVehicleAmount(vehicleOrderItem.getBuyAmount());
rvp.setRealVehicleAmount(vehicleOrderItem.getRealAmount());
rvp.setCouponDesc(couponDesc);
rvp.setUseAmountList(vehicleOrderItem.getVehicleDetail());
rvp.setSameUnitPrice(vehicleOrderItem.getSameUnitPrice());
rvp.initParamJson();
//设置收费明细
costDetail(rvp, handleChildren(detail, vehicleDayNum));
return rvp;
}
/**
* 获取会员比例或者会员价
* @param vehicleModel
......@@ -638,6 +833,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
throw new BaseException(orr.getMessage(), orr.getStatus());
}
detail.setVehicleId(orr.getData().getVehicleId());
//获取车辆信息 设置订单的goodsType
Vehicle vehicle = vehicleFeign.get(orr.getData().getVehicleId()).getData();
detail.getOrder().setGoodsType(vehicle.getGoodsType());
detail.setBookRecordId(orr.getData().getId());
}
......
......@@ -13,6 +13,13 @@ import java.util.Date;
@Data
@Table(name = "vehicle")
public class Vehicle {
public static final int GOODS_TYPE_RV = 1;
public static final int GOODS_TYPE_HM = 2;
public static final int GOODS_TYPE_YACHT = 3;
public static final int STATE_UP = 1;
public static final int STATE_DOWN = 2;
/**
* 主键(uuid)
*/
......
......@@ -234,9 +234,12 @@ public interface VehicleFeign {
ObjectRestResponse<List<CompanySearchVO>> listByIds(@RequestBody CompanySearchDTO vo);
@GetMapping(value = "/vehicleHolidayPriceInfo/getByVehicleIdFeign")
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getByVehicleIdFeign(
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getPriceByVehicleIdFeign(
@RequestParam("vehicleId") String vehicleId, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate, @RequestParam("userId") Integer userId, @RequestParam("companyId") Integer companyId);
@GetMapping(value = "/vehicleInfo/getPriceByVehicleFeign")
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getPriceByVehicleIdFeignV2(
@RequestParam("vehicleId") String vehicleId, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate, @RequestParam("userId") Integer userId, @RequestParam("companyId") Integer companyId);
@RequestMapping(value = "/vehicleInfo/selectByParam", method = RequestMethod.GET)
public RestResponse<List<Vehicle>> vehicleSelectByParam(@RequestParam(value = "vehicle")Map<String, Object> vehicleMap);
......
package com.xxfc.platform.vehicle.pojo.dto;
import com.github.wxiaoqi.security.common.vo.DataInter;
import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/8/23 16:27
*/
@Data
public class VehicleFindAppDTO extends PageParam implements DataInter {
@ApiModelProperty("商品Id")
private String vehicleId;
@ApiModelProperty("商品名称")
private String name;
@ApiModelProperty("商品类型 1--房车;2--机车;3--游艇")
private Integer goodsType;
@ApiModelProperty("状态:1-上架;2-下架")
private Integer state;
@ApiModelProperty("品牌id")
private Integer brandId;
@ApiModelProperty("型号id")
private Integer categoryId;
@ApiModelProperty("店铺id")
private Integer branchId;
@ApiModelProperty("是否全网最低价")
private Integer isMinPrice;
List<Integer> dataCorporationIds;
List<Integer> dataCompanyIds;
Integer bizType;
@ApiModelProperty("经度")
Double lon;
@ApiModelProperty("纬度")
Double lat;
/**
* 所属市区(id)
*/
private Integer addrCity;
}
......@@ -27,4 +27,6 @@ public class VehicleVO extends Vehicle {
private VehicleApply vehicleApply;
private List<VehicleExtensionVO> extensionVOS;
private Double distance;
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ import com.xxfc.platform.vehicle.mapper.BookRecordAccItemMapper;
import com.xxfc.platform.vehicle.mapper.VehicleBookInfoMapper;
import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO;
......@@ -1628,6 +1629,10 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
return ObjectRestResponse.succ(PageDataVO.pageInfo(pageInfo));
}
public PageDataVO<VehicleVO> appSelectList(VehicleFindAppDTO vehicleFindAppDTO){
return PageDataVO.pageInfo(vehicleFindAppDTO.initQuery(), ()-> mapper.appSelectList(vehicleFindAppDTO));
}
public VehicleVO info(VehicleFindDTO vehicleFindDTO){
List<VehicleVO> vehicleVOS=getList(vehicleFindDTO);
if (vehicleVOS != null && vehicleVOS.size() > 0){
......
......@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
import com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO;
......@@ -65,4 +66,6 @@ public interface VehicleMapper extends Mapper<Vehicle> {
@Select("SELECT COUNT(*) FROM vehicle WHERE is_del=0 and subordinate_branch = #{commpanyId}")
Long countByCompamyId(@Param("commpanyId") Integer commpanyId);
List<VehicleVO> appSelectList(VehicleFindAppDTO vehicleFindAppDTO);
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
......@@ -22,6 +23,8 @@ import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.constant.VehicleMemberType;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.entity.VehicleCommonPriceInfo;
import com.xxfc.platform.vehicle.entity.VehicleHolidayPriceInfo;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.vo.UsableVeicleVO;
......@@ -34,12 +37,14 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP;
......@@ -51,6 +56,12 @@ import static com.xxfc.platform.vehicle.constant.VehicleConstant.USER_APP_NAME;
@IgnoreClientToken
@Api(value="租车相关车辆管理controller",tags={"租车相关车辆管理接口"})
public class RentVehicleController extends BaseController<VehicleBiz> implements UserRestInterface {
private static final Integer DEFAULT_DISCOUNT = 100;
private static final Integer DEFAULT_MEMBER_LEVEL = 0;
private static final Integer DEFAULT_MEMBER_TYPE = 0;
private static final Integer MEMBER_TYPE_ALL = 1;
private static final Integer MEMBER_TYPE_FORBID = 4;
@Autowired
private VehiclePlatCataBiz vehiclePlatCataBiz;
......@@ -352,4 +363,100 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
VehicleBookRecord vehicleBookRecord = baseBiz.applyVehicle(operatorId, bookVehicleVo, userName);
return ObjectRestResponse.succ(vehicleBookRecord);
}
@GetMapping(value = "getPriceByVehicleFeign")
@IgnoreUserToken
public ObjectRestResponse<List<VehicleModelCalendarPriceDTO>> getByVehicleIdFeign(String vehicleId, String startDate, String endDate, Integer userId, Integer companyId) {
return ObjectRestResponse.succ(getSynthesizePrice(vehicleId, startDate, endDate, userId, companyId));
}
public List<VehicleModelCalendarPriceDTO> getSynthesizePrice (String vehicleId, String startDate, String endDate, Integer userId, Integer companyId) {
List<VehicleModelCalendarPriceDTO> priceDTOS = CollUtil.newArrayList();
cn.hutool.core.date.DateTime beginOfStartDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
cn.hutool.core.date.DateTime endOfStartDate = DateUtil.endOfDay(DateUtil.parse(endDate));
//获取基本和周末价格
// VehicleCommonPriceInfo vehicleCommonPriceInfo = vehicleCommonPriceInfoBiz.selectOne(new VehicleCommonPriceInfo(){{
// setCompanyId(companyId);
// setVehicleId(vehicleId);
// }});
Vehicle vehicle = vehicleBiz.selectOne(new Vehicle(){{
setParkBranchCompanyId(companyId);
setId(vehicleId);
}});
if(null == vehicle) {
return CollUtil.newArrayList();
}
//Date currentDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
for(cn.hutool.core.date.DateTime currentDate = DateUtil.beginOfDay(DateUtil.parse(startDate));
(currentDate.isAfterOrEquals(beginOfStartDate) && currentDate.isBeforeOrEquals(endOfStartDate));
currentDate = DateUtil.offsetDay(currentDate, 1)) {
cn.hutool.core.date.DateTime finalCurrentDate = currentDate;
VehicleModelCalendarPriceDTO dto = new VehicleModelCalendarPriceDTO(){{
setDate(DateUtil.beginOfDay(finalCurrentDate));
}};
if(currentDate.isWeekend()) {
dto.setNo_discount_price(vehicle.getHolidayPrice());
dto.setPrice(vehicle.getHolidayPrice());
dto.setFreeDays(1);
}else {
dto.setNo_discount_price(vehicle.getPrice());
dto.setPrice(vehicle.getPrice());
dto.setFreeDays(1);
}
priceDTOS.add(dto);
}
//获取节假日价格
// List<VehicleHolidayPriceInfo> vehicleHolidayPriceInfoList = getByVehicleIdAndDate(vehicleId, startDate, endDate);
//
// if(CollUtil.isNotEmpty(vehicleHolidayPriceInfoList)) {
// vehicleHolidayPriceInfoList.forEach(info -> {
// priceDTOS.forEach(tmpDto -> {
// if(DateUtil.isSameDay(info.getFestivalDate(), tmpDto.getDate())) {
// tmpDto.setNo_discount_price(info.getRentPrice());
// tmpDto.setPrice(info.getRentPrice());
// tmpDto.setFreeDays(info.getRentFreeDay());
// }
// });
// });
// }
//获取会员折扣
//查询车辆信息
// Vehicle vehicle = vehicleBiz.selectById(vehicleId);
//查询会员信息
//默认折扣
Integer discount = DEFAULT_DISCOUNT;
//会员默认等级
Integer memberLevel = DEFAULT_MEMBER_LEVEL;
Integer memberType = DEFAULT_MEMBER_TYPE;
if (Objects.nonNull(userId)) {
BaseUserMember baseUserMember = userFeign.findBaseUserMemberByUserId(userId.intValue());
log.info("用户会员信息:【{}】",baseUserMember);
discount = baseUserMember == null ? discount : baseUserMember.getDiscount();
memberLevel = baseUserMember == null ? memberLevel : baseUserMember.getMemberLevel();
memberType = baseUserMember == null ? memberType : baseUserMember.getMemberType();
}
//非会员禁用 非无会员
if(vehicle.getMemberUse() != MEMBER_TYPE_FORBID && DEFAULT_MEMBER_TYPE != memberType) {
//判断 允许所有会员,或者 memberType 和 车辆memberUse 相等
if(vehicle.getMemberUse().equals(MEMBER_TYPE_ALL) || (vehicle.getMemberUse().equals(memberType))) {
//设置会员价格
Integer finalDiscount = discount;
priceDTOS.forEach(dto -> {
dto.setPrice(dto.getNo_discount_price()
.multiply(new BigDecimal(""+ finalDiscount)
.divide(new BigDecimal("100"))));
});
}
}
return priceDTOS;
}
}
......@@ -28,6 +28,7 @@ import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.jobhandler.VehicleJobHandler;
import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehiclePlanDto;
......@@ -50,6 +51,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
@RestController
@RequestMapping("/vehicleInfo")
@Slf4j
......@@ -694,6 +697,15 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
return baseBiz.selectList(vehicleFindDTO);
}
@GetMapping("app/unauth/shop/selectList")
@ApiModelProperty("店铺商品列表(精选商品)")
@IgnoreUserToken
public ObjectRestResponse<PageDataVO<VehicleVO>> shopSelectList(VehicleFindAppDTO vehicleFindAppDTO) {
vehicleFindAppDTO.setState(Vehicle.STATE_UP);
vehicleFindAppDTO.setIsMinPrice(SYS_TRUE);
return ObjectRestResponse.succ(baseBiz.appSelectList(vehicleFindAppDTO));
}
@Data
static public class VehicleVO extends Vehicle {
private VehicleModel vehicleModel;
......
......@@ -1349,4 +1349,71 @@
</select>
<select id="appSelectList" resultType="com.xxfc.platform.vehicle.pojo.vo.VehicleVO" parameterType="com.xxfc.platform.vehicle.pojo.dto.VehicleFindAppDTO">
SELECT
v.*,
b.cn_name as brandName,
c.`name` categoryName,
bc.`name` as companyName
<if test="lon != null and lat != null">
,st_distance_sphere(point(#{lon}, #{lat}), point(bc.longitude, bc.latitude)) as distance
</if>
FROM vehicle v
LEFT JOIN vehicle_brand b ON v.brand_id=b.id
LEFT JOIN vehicle_category c ON v.category_id=c.id
LEFT JOIN branch_company bc ON v.subordinate_branch=bc.id
<where>
v.is_del = 0
<if test="addrCity !=null">
AND bc.addr_city=#{addrCity}
</if>
<if test="name != null and name != ''">
AND ( v.`name` like concat('%',#{name},'%') or v.`number_plate` like concat('%',#{name},'%') )
</if>
<if test="brandId != null and brandId > 0">
AND v.`brand_id`= #{brandId}
</if>
<if test="vehicleId != null and vehicleId != '' ">
AND v.`id`= #{vehicleId}
</if>
<if test="categoryId != null and categoryId > 0">
AND v.`category_id`= #{categoryId}
</if>
<if test="branchId != null and branchId > 0">
AND v.`subordinate_branch`= #{branchId}
</if>
<if test="state != null ">
AND v.`state`= #{state}
</if>
<if test="goodsType != null ">
AND v.`goods_type`= #{goodsType}
</if>
<if test="dataCompanyIds != null and dataCompanyIds.size > 0">
and bc.id in
<foreach collection="dataCompanyIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="dataCorporationIds != null and dataCorporationIds.size > 0">
and bc.company_id in
<foreach collection="dataCorporationIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
order by
<if test="lon != null and lat != null">
distance asc,
</if>
<choose>
<when test="isMinPrice !=null and isMinPrice==1">
v.price ASC,v.create_time DESC
</when>
<otherwise>
v.create_time DESC
</otherwise>
</choose>
</select>
</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