生成占桩订单

This commit is contained in:
2023-08-18 12:02:34 +08:00
parent 5bf5ffc3b7
commit 31c295ee90
7 changed files with 104 additions and 48 deletions

View File

@@ -1,22 +1,18 @@
package com.jsowell.api.uniapp;
import com.alibaba.fastjson2.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.response.RestApiResponse;
import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.ykcCommond.RemoteControlGroundLockCommand;
import com.jsowell.pile.dto.GenerateOccupyOrderDTO;
import com.jsowell.pile.dto.QueryConnectorListDTO;
import com.jsowell.pile.dto.QueryStationDTO;
import com.jsowell.pile.dto.RemoteGroundLockDTO;
import com.jsowell.pile.service.*;
import com.jsowell.pile.vo.uniapp.BillingPriceVO;
import com.jsowell.pile.vo.uniapp.GroundLockInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -149,33 +145,21 @@ public class PileController extends BaseController {
/**
* 远程遥控地锁指令 + 生成占桩订单
* @param command
* @return
*/
@PostMapping("/remoteGroundLock")
public RestApiResponse<?> remoteGroundLock(HttpServletRequest request, @RequestBody RemoteControlGroundLockCommand command) {
logger.info("遥控地锁指令 params:{}", JSONObject.toJSONString(command));
public RestApiResponse<?> remoteGroundLock(HttpServletRequest request, @RequestBody RemoteGroundLockDTO dto) {
logger.info("遥控地锁指令 params:{}", JSONObject.toJSONString(dto));
RestApiResponse<?> response = null;
try {
ykcPushCommandService.pushRemoteControlGroundLock(command);
if (StringUtils.equals(command.getOperate(), Constants.ONE)) {
// 升锁不生成占桩订单
return new RestApiResponse<>();
// 校验参数
if (StringUtils.isBlank(dto.getPileSn()) || StringUtils.isBlank(dto.getConnectorCode())
|| StringUtils.isBlank(dto.getOperate())) {
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
}
// 获取memberId
String memberId = getMemberIdByAuthorization(request);
if (StringUtils.isEmpty(memberId)) {
throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR);
}
GenerateOccupyOrderDTO dto = new GenerateOccupyOrderDTO();
dto.setMemberId(memberId);
dto.setPileSn(command.getPileSn());
dto.setConnectorCode(command.getConnectorCode());
// 生成占桩订单(草稿单)
String occupyOrderCode = orderPileOccupyService.generateOccupyPileOrder(dto);
if (StringUtils.isNotBlank(occupyOrderCode)) {
response = new RestApiResponse<>(ImmutableMap.of("occupyOrderCode", occupyOrderCode));
}
dto.setMemberId(getMemberIdByAuthorization(request));
orderPileOccupyService.remoteGroundLock(dto);
response = new RestApiResponse<>();
} catch (Exception e) {
logger.error("遥控地锁指令 error, ", e);
response = new RestApiResponse<>(e);

View File

@@ -6,7 +6,7 @@ package com.jsowell.common.enums.uniapp;
* @author Lemon
* @Date 2023/8/18 9:49
*/
public enum OrderPileOccupyPayStatusEnum {
public enum OccupyOrderPayStatusEnum {
UN_PAY("0", "未支付"),
PAYMENT_COMPLETION("1", "支付完成"),
NO_PAYMENT_REQUIRED("2", "无需支付"),
@@ -31,7 +31,7 @@ public enum OrderPileOccupyPayStatusEnum {
this.value = value;
}
OrderPileOccupyPayStatusEnum(String code, String value) {
OccupyOrderPayStatusEnum(String code, String value) {
this.code = code;
this.value = value;
}
@@ -42,7 +42,7 @@ public enum OrderPileOccupyPayStatusEnum {
* @return
*/
public static String getValueByCode(String code) {
for (OrderPileOccupyPayStatusEnum item : OrderPileOccupyPayStatusEnum.values()) {
for (OccupyOrderPayStatusEnum item : OccupyOrderPayStatusEnum.values()) {
if (item.getCode().equals(code)) {
return item.getValue();
}

View File

@@ -6,7 +6,7 @@ package com.jsowell.common.enums.uniapp;
* @author Lemon
* @Date 2023/8/18 9:41
*/
public enum OrderPileOccupyStatusEnum {
public enum OccupyOrderStatusEnum {
OCCUPIED("0", "占桩中"),
ORDER_COMPLETE("1", "订单完成"),
ORDER_HANG_UP("2", "订单挂起"),
@@ -32,7 +32,7 @@ public enum OrderPileOccupyStatusEnum {
this.value = value;
}
OrderPileOccupyStatusEnum(String code, String value) {
OccupyOrderStatusEnum(String code, String value) {
this.code = code;
this.value = value;
}
@@ -43,7 +43,7 @@ public enum OrderPileOccupyStatusEnum {
* @return
*/
public static String getValueByCode(String code) {
for (OrderPileOccupyStatusEnum item : OrderPileOccupyStatusEnum.values()) {
for (OccupyOrderStatusEnum item : OccupyOrderStatusEnum.values()) {
if (item.getCode().equals(code)) {
return item.getValue();
}

View File

@@ -3,6 +3,7 @@ package com.jsowell.netty.handler;
import com.alibaba.fastjson2.JSONObject;
import com.jsowell.common.core.domain.ykc.YKCDataProtocol;
import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode;
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
import com.jsowell.common.util.BytesUtil;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.StringUtils;
@@ -71,18 +72,28 @@ public class RemoteControlGroundLockResponseHandler extends AbstractHandler{
if (StringUtils.equals(controlResult, "01")) {
// 鉴权成功
updateOrder(pileSn, connectorCode);
}
return null;
}
/**
* 降锁成功的时候调用
* @param pileSn
* @param connectorCode
*/
private void updateOrder(String pileSn, String connectorCode) {
// 查出占桩订单将开始时间set进订单信息
OrderPileOccupy orderInfo = orderPileOccupyService.getOrderInfoByPile(pileSn, connectorCode);
if (orderInfo == null) {
return null;
return;
}
if (Objects.isNull(orderInfo.getStartTime())) {
orderInfo.setStatus(OccupyOrderStatusEnum.OCCUPIED.getValue());
orderInfo.setStartTime(DateUtils.getNowDate());
// 修改数据库
orderPileOccupyService.updateByPrimaryKey(orderInfo);
}
return null;
}
}

View File

@@ -0,0 +1,27 @@
package com.jsowell.pile.dto;
import lombok.Data;
@Data
public class RemoteGroundLockDTO {
/**
* 桩编号
*/
private String pileSn;
/**
* 枪口编号
*/
private String connectorCode;
/**
* 地锁操作
* 0-降 1-升
*/
private String operate;
/**
* 会员id
*/
private String memberId;
}

View File

@@ -4,6 +4,7 @@ import com.jsowell.pile.domain.OrderPileOccupy;
import com.jsowell.pile.dto.PayOrderDTO;
import com.jsowell.pile.dto.GenerateOccupyOrderDTO;
import com.jsowell.pile.dto.QueryOccupyOrderDTO;
import com.jsowell.pile.dto.RemoteGroundLockDTO;
import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO;
import java.util.List;
@@ -71,4 +72,10 @@ public interface OrderPileOccupyService{
* @return
*/
OrderPileOccupy getOrderInfoByPile(String pileSn, String connectorCode);
/**
* 控制地锁方法
* @param dto
*/
void remoteGroundLock(RemoteGroundLockDTO dto);
}

View File

@@ -5,20 +5,18 @@ import com.jsowell.adapay.service.AdapayService;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.enums.MemberWalletEnum;
import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.enums.uniapp.OrderPileOccupyPayStatusEnum;
import com.jsowell.common.enums.uniapp.OrderPileOccupyStatusEnum;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.PageUtils;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.id.IdUtils;
import com.jsowell.pile.domain.OrderPileOccupy;
import com.jsowell.pile.dto.PayOrderDTO;
import com.jsowell.pile.dto.GenerateOccupyOrderDTO;
import com.jsowell.pile.dto.QueryOccupyOrderDTO;
import com.jsowell.pile.dto.QueryOrderDTO;
import com.jsowell.pile.domain.ykcCommond.RemoteControlGroundLockCommand;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.mapper.OrderPileOccupyMapper;
import com.jsowell.pile.service.*;
import com.jsowell.pile.vo.base.PileInfoVO;
@@ -28,6 +26,7 @@ import com.jsowell.pile.vo.web.BillingTemplateVO;
import com.jsowell.pile.vo.web.OrderListVO;
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -58,6 +57,12 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
@Resource
private IMemberBasicInfoService memberBasicInfoService;
@Autowired
private YKCPushCommandService ykcPushCommandService;
@Autowired
private OrderPileOccupyService orderPileOccupyService;
@Override
public int deleteByPrimaryKey(Integer id) {
return orderPileOccupyMapper.deleteByPrimaryKey(id);
@@ -154,7 +159,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
String occupyCode = "OP" + IdUtils.getOrderCode();
orderPileOccupy.setOccupyCode(occupyCode);
orderPileOccupy.setMemberId(memberId);
orderPileOccupy.setStatus(OrderPileOccupyStatusEnum.DRAFT_ORDER.getCode()); // 占桩中
orderPileOccupy.setStatus(OccupyOrderStatusEnum.DRAFT_ORDER.getCode()); // 占桩中
orderPileOccupy.setPayStatus(Constants.ZERO); // 未支付
orderPileOccupy.setPileSn(pileSn);
PileInfoVO pileInfoVO = pileBasicInfoService.selectPileInfoBySn(pileSn);
@@ -298,9 +303,9 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
List<OrderPileOccupyVO> list = orderPileOccupyMapper.getOccupyOrderInfo(memberId);
for (OrderPileOccupyVO orderPileOccupyVO : list) {
// 订单状态
orderPileOccupyVO.setStatus(OrderPileOccupyStatusEnum.getValueByCode(orderPileOccupyVO.getStatus()));
orderPileOccupyVO.setStatus(OccupyOrderStatusEnum.getValueByCode(orderPileOccupyVO.getStatus()));
// 支付状态
orderPileOccupyVO.setPayStatus(OrderPileOccupyPayStatusEnum.getValueByCode(orderPileOccupyVO.getPayStatus()));
orderPileOccupyVO.setPayStatus(OccupyOrderPayStatusEnum.getValueByCode(orderPileOccupyVO.getPayStatus()));
}
return list;
}
@@ -315,6 +320,28 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
public OrderPileOccupy getOrderInfoByPile(String pileSn, String connectorCode) {
return orderPileOccupyMapper.getOrderInfoByPile(pileSn, connectorCode);
}
@Override
public void remoteGroundLock(RemoteGroundLockDTO dto) {
// 控制地锁升降
RemoteControlGroundLockCommand command = new RemoteControlGroundLockCommand();
command.setPileSn(dto.getPileSn());
command.setConnectorCode(dto.getConnectorCode());
command.setOperate(dto.getOperate());
ykcPushCommandService.pushRemoteControlGroundLock(command);
// 如果是降锁生成占桩订单
if (StringUtils.equals(dto.getOperate(), Constants.ZERO)) {
// 生成占桩订单
GenerateOccupyOrderDTO generateOccupyOrderDTO = new GenerateOccupyOrderDTO();
generateOccupyOrderDTO.setMemberId(dto.getMemberId());
generateOccupyOrderDTO.setPileSn(dto.getPileSn());
generateOccupyOrderDTO.setConnectorCode(dto.getConnectorCode());
// 生成占桩订单(草稿单)
orderPileOccupyService.generateOccupyPileOrder(generateOccupyOrderDTO);
}
}
/*
* 支付占桩订单
*
@@ -367,16 +394,16 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
// 更新占桩订单状态
OrderPileOccupy orderPileOccupy = queryByOccupyCode(dto.getOrderCode());
orderPileOccupy.setStatus(OrderPileOccupyStatusEnum.ORDER_COMPLETE.getValue());
orderPileOccupy.setPayStatus(OrderPileOccupyPayStatusEnum.PAYMENT_COMPLETION.getValue());
orderPileOccupy.setStatus(OccupyOrderStatusEnum.ORDER_COMPLETE.getValue());
orderPileOccupy.setPayStatus(OccupyOrderPayStatusEnum.PAYMENT_COMPLETION.getValue());
updateByPrimaryKeySelective(orderPileOccupy);
}
private void whiteListPayOccupyPileOrder(PayOrderDTO dto) {
// 更新占桩订单状态
OrderPileOccupy orderPileOccupy = queryByOccupyCode(dto.getOrderCode());
orderPileOccupy.setStatus(OrderPileOccupyStatusEnum.ORDER_COMPLETE.getValue());
orderPileOccupy.setPayStatus(OrderPileOccupyPayStatusEnum.NO_PAYMENT_REQUIRED.getValue());
orderPileOccupy.setStatus(OccupyOrderStatusEnum.ORDER_COMPLETE.getValue());
orderPileOccupy.setPayStatus(OccupyOrderPayStatusEnum.NO_PAYMENT_REQUIRED.getValue());
updateByPrimaryKeySelective(orderPileOccupy);
}
}