车辆临时锁车
This commit is contained in:
parent
c434fc9321
commit
7c945c1efd
@ -4,6 +4,7 @@ import com.cdzy.common.enums.Code;
|
|||||||
import com.cdzy.common.ex.EbikeException;
|
import com.cdzy.common.ex.EbikeException;
|
||||||
import com.cdzy.common.model.request.PageParam;
|
import com.cdzy.common.model.request.PageParam;
|
||||||
import com.cdzy.common.model.response.JsonResult;
|
import com.cdzy.common.model.response.JsonResult;
|
||||||
|
import com.cdzy.user.model.dto.EbikeTempLockDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
||||||
import com.cdzy.user.model.entity.EbikeOrder;
|
import com.cdzy.user.model.entity.EbikeOrder;
|
||||||
@ -184,4 +185,16 @@ public class EbikeOrderController {
|
|||||||
ebikeOrderService.updateOrderAmount(paymentAmountDto);
|
ebikeOrderService.updateOrderAmount(paymentAmountDto);
|
||||||
return JsonResult.success();
|
return JsonResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 临时锁车
|
||||||
|
*
|
||||||
|
* @param tempLockDto 临时锁车参数
|
||||||
|
*/
|
||||||
|
@PostMapping("/tempLock")
|
||||||
|
public JsonResult<?> tempLock(@RequestBody @Validated EbikeTempLockDto tempLockDto) {
|
||||||
|
ebikeOrderService.tempLock(tempLockDto);
|
||||||
|
return JsonResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.cdzy.user.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 锁车状态
|
||||||
|
*
|
||||||
|
* @author yanglei
|
||||||
|
* @since 2026-02-25 16:26
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface EbikeTempLockStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 0-临时解锁
|
||||||
|
*/
|
||||||
|
int OPEN = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1-临时锁车
|
||||||
|
*/
|
||||||
|
int LOCK = 1;
|
||||||
|
}
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
package com.cdzy.user.model.dto;
|
||||||
|
|
||||||
|
import com.cdzy.user.handler.PointDeserializer;
|
||||||
|
import com.cdzy.user.handler.PointSerializer;
|
||||||
|
import com.cdzy.user.handler.PointTypeHandler;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.locationtech.jts.geom.Point;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author yanglei
|
||||||
|
* @since 2026-02-25 16:02
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class EbikeTempLockDto {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 锁车状态 0-开锁 1-临时锁车
|
||||||
|
*/
|
||||||
|
@NotNull(message = "开锁状态不能为空")
|
||||||
|
private Integer lockStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "订单id不能为空")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆编号
|
||||||
|
*/
|
||||||
|
@NotNull(message = "车辆编号不能为空")
|
||||||
|
private String bikeCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前位置
|
||||||
|
*/
|
||||||
|
@Column(typeHandler = PointTypeHandler.class)
|
||||||
|
@JsonSerialize(using = PointSerializer.class)
|
||||||
|
@JsonDeserialize(using = PointDeserializer.class)
|
||||||
|
private Point location;
|
||||||
|
}
|
||||||
@ -195,4 +195,9 @@ public class EbikeOrder implements Serializable {
|
|||||||
* 是否免费订单 true-免费 false-收费
|
* 是否免费订单 true-免费 false-收费
|
||||||
*/
|
*/
|
||||||
private Boolean isFreeOrder;
|
private Boolean isFreeOrder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 临时锁车 0-未临时锁车 1-临时锁车
|
||||||
|
*/
|
||||||
|
private Integer tempLock;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.cdzy.user.service;
|
package com.cdzy.user.service;
|
||||||
|
|
||||||
import com.cdzy.common.model.request.PageParam;
|
import com.cdzy.common.model.request.PageParam;
|
||||||
|
import com.cdzy.user.model.dto.EbikeTempLockDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
||||||
import com.cdzy.user.model.entity.EbikeOrder;
|
import com.cdzy.user.model.entity.EbikeOrder;
|
||||||
@ -142,4 +143,11 @@ public interface EbikeOrderService extends IService<EbikeOrder> {
|
|||||||
* @param paymentAmountDto 车辆编号
|
* @param paymentAmountDto 车辆编号
|
||||||
*/
|
*/
|
||||||
void updateOrderAmount(FeignEbikePaymentAmountDto paymentAmountDto);
|
void updateOrderAmount(FeignEbikePaymentAmountDto paymentAmountDto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 临时锁车
|
||||||
|
*
|
||||||
|
* @param tempLockDto 临时锁车参数
|
||||||
|
*/
|
||||||
|
void tempLock(EbikeTempLockDto tempLockDto);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,11 +8,13 @@ import com.cdzy.common.model.response.JsonResult;
|
|||||||
import com.cdzy.user.enums.EbikeOrderDetailType;
|
import com.cdzy.user.enums.EbikeOrderDetailType;
|
||||||
import com.cdzy.user.enums.EbikePaymentMethod;
|
import com.cdzy.user.enums.EbikePaymentMethod;
|
||||||
import com.cdzy.user.enums.EbikePaymentTradeStatus;
|
import com.cdzy.user.enums.EbikePaymentTradeStatus;
|
||||||
|
import com.cdzy.user.enums.EbikeTempLockStatus;
|
||||||
import com.cdzy.user.enums.OrderStatus;
|
import com.cdzy.user.enums.OrderStatus;
|
||||||
import com.cdzy.user.enums.OrderType;
|
import com.cdzy.user.enums.OrderType;
|
||||||
import com.cdzy.user.enums.TimeRangeEnum;
|
import com.cdzy.user.enums.TimeRangeEnum;
|
||||||
import com.cdzy.user.mapper.EbikeOrderMapper;
|
import com.cdzy.user.mapper.EbikeOrderMapper;
|
||||||
import com.cdzy.user.model.dto.EbikeCostDetailDto;
|
import com.cdzy.user.model.dto.EbikeCostDetailDto;
|
||||||
|
import com.cdzy.user.model.dto.EbikeTempLockDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingDto;
|
||||||
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
import com.cdzy.user.model.dto.EbikeUserCyclingEndDto;
|
||||||
import com.cdzy.user.model.entity.EbikeOrder;
|
import com.cdzy.user.model.entity.EbikeOrder;
|
||||||
@ -434,6 +436,36 @@ public class EbikeOrderServiceImpl extends ServiceImpl<EbikeOrderMapper, EbikeOr
|
|||||||
ebikePaymentService.updateCostPrice(ebikeOrder.getOrderId(), paymentAmountDto.getPrice());
|
ebikePaymentService.updateCostPrice(ebikeOrder.getOrderId(), paymentAmountDto.getPrice());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Override
|
||||||
|
public void tempLock(EbikeTempLockDto tempLockDto) {
|
||||||
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
|
.select(EBIKE_ORDER.ALL_COLUMNS)
|
||||||
|
.where(EBIKE_ORDER.ORDER_ID.eq(tempLockDto.getOrderId()));
|
||||||
|
EbikeOrder ebikeOrder = this.mapper.selectOneByQuery(queryWrapper);
|
||||||
|
// 临时锁车
|
||||||
|
if (tempLockDto.getLockStatus().equals(EbikeTempLockStatus.LOCK)) {
|
||||||
|
if (Objects.isNull(tempLockDto.getLocation())) {
|
||||||
|
throw new EbikeException("关锁时车辆位置不能为空");
|
||||||
|
}
|
||||||
|
EbikeLockVo ebikeLockVo = new EbikeLockVo();
|
||||||
|
ebikeLockVo.setBikeCode(tempLockDto.getBikeCode());
|
||||||
|
ebikeLockVo.setPoint(tempLockDto.getLocation());
|
||||||
|
JsonResult<FeignEbikeUserLockDto> jsonResult = operationsFeignClient.lock(ebikeLockVo);
|
||||||
|
if (jsonResult.getCode() != Code.SUCCESS) {
|
||||||
|
throw new EbikeException("临时关锁失败:" + jsonResult.getMessage());
|
||||||
|
}
|
||||||
|
} else if (tempLockDto.getLockStatus().equals(EbikeTempLockStatus.OPEN)) {
|
||||||
|
// 开锁
|
||||||
|
JsonResult<?> jsonResult = operationsFeignClient.openLock(tempLockDto.getBikeCode());
|
||||||
|
if (jsonResult.getCode() != Code.SUCCESS) {
|
||||||
|
throw new EbikeException("开锁失败:" + jsonResult.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ebikeOrder.setTempLock(tempLockDto.getLockStatus());
|
||||||
|
this.mapper.update(ebikeOrder);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算增长率并格式化为百分比字符串
|
* 计算增长率并格式化为百分比字符串
|
||||||
*
|
*
|
||||||
|
|||||||
@ -201,6 +201,7 @@ CREATE TABLE "public"."ebike_order" (
|
|||||||
"helmet_management_fee" numeric(10,2),
|
"helmet_management_fee" numeric(10,2),
|
||||||
"start_location" geometry(POINT, 4326),
|
"start_location" geometry(POINT, 4326),
|
||||||
"end_location" geometry(POINT, 4326),
|
"end_location" geometry(POINT, 4326),
|
||||||
|
"temp_lock" int2 DEFAULT 0 NOT NULL,
|
||||||
"create_by" int8,
|
"create_by" int8,
|
||||||
"create_time" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
|
"create_time" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
"update_by" int8,
|
"update_by" int8,
|
||||||
@ -232,6 +233,7 @@ COMMENT ON COLUMN "public"."ebike_order"."max_fee_amount" IS '封顶金额(元
|
|||||||
COMMENT ON COLUMN "public"."ebike_order"."helmet_management_fee" IS '头盔管理费(元)';
|
COMMENT ON COLUMN "public"."ebike_order"."helmet_management_fee" IS '头盔管理费(元)';
|
||||||
COMMENT ON COLUMN "public"."ebike_order"."start_location" IS '骑行初始点';
|
COMMENT ON COLUMN "public"."ebike_order"."start_location" IS '骑行初始点';
|
||||||
COMMENT ON COLUMN "public"."ebike_order"."end_location" IS '骑行还车点';
|
COMMENT ON COLUMN "public"."ebike_order"."end_location" IS '骑行还车点';
|
||||||
|
COMMENT ON COLUMN "public"."ebike_order"."temp_lock" IS '临时锁车 0-未临时锁车 1-临时锁车';
|
||||||
COMMENT ON COLUMN "public"."ebike_order"."create_by" IS '创建人ID';
|
COMMENT ON COLUMN "public"."ebike_order"."create_by" IS '创建人ID';
|
||||||
COMMENT ON COLUMN "public"."ebike_order"."create_time" IS '创建时间';
|
COMMENT ON COLUMN "public"."ebike_order"."create_time" IS '创建时间';
|
||||||
COMMENT ON COLUMN "public"."ebike_order"."update_by" IS '最后修改人ID';
|
COMMENT ON COLUMN "public"."ebike_order"."update_by" IS '最后修改人ID';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user