huminghao 5 päivää sitten
vanhempi
commit
04c34fd21c
21 muutettua tiedostoa jossa 245 lisäystä ja 58 poistoa
  1. 1
    1
      gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssDeviceResume.java
  2. 4
    0
      gly-base-core/src/main/java/cn/com/taiji/core/entity/issue/IssueOrderPay.java
  3. 11
    3
      gly-base-core/src/main/java/cn/com/taiji/core/manager/tools/issue/PayTools.java
  4. 1
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/VehicleChangeApllyRequest.java
  5. 1
    1
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/MsgwServiceSystem.java
  6. 2
    2
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/MsgwServiceType.java
  7. 3
    3
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/send/MsgwSendCmd.java
  8. 3
    0
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/DeviceResumeAddRequestDTO.java
  9. 5
    5
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/DeviceResumeManagerImpl.java
  10. 2
    0
      zhywpt-app-managew/src/main/java/cn/com/taiji/managew/manager/product/PromotionManagerImpl.java
  11. 1
    6
      zhywpt-app-managew/src/main/java/cn/com/taiji/managew/model/product/UseFeeModel.java
  12. 16
    0
      zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/api/WxMpPushController.java
  13. 1
    1
      zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/MyCommHandleManager.java
  14. 1
    1
      zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/handler/SendServiceHandler.java
  15. 1
    0
      zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/weixin/WxManager.java
  16. 32
    0
      zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/weixin/WxManagerImpl.java
  17. 41
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/FlexibleLocalDateTimeDeserializer.java
  18. 6
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/JsonConfig.java
  19. 22
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/AbstractIasManager.java
  20. 90
    22
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java
  21. 1
    13
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderInitManager.java

+ 1
- 1
gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssDeviceResume.java Näytä tiedosto

@@ -20,7 +20,7 @@ import java.time.LocalDateTime;
@Table(name = "ASS_DEVICE_RESUME")
public class AssDeviceResume extends AbstractStringPropertyUUIDEntity {

@NotNull
@NotBlank
@Column(name = "ORDER_NO")
private String orderNo; // 订单id
@Column(name = "CARD_EXPIRE_TIME")

+ 4
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/issue/IssueOrderPay.java Näytä tiedosto

@@ -3,6 +3,7 @@ package cn.com.taiji.core.entity.issue;
import cn.com.taiji.common.entity.StringPropertyUUIDEntity;
import cn.com.taiji.core.entity.dict.issue.OrderPayStatus;
import cn.com.taiji.core.entity.dict.issue.OrderPayType;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@@ -63,5 +64,8 @@ public class IssueOrderPay extends StringPropertyUUIDEntity {
private Long refundAmount;//退款金额
@Column(name = "REFUND_TIME")
private LocalDateTime refundTime;//退款时间
@Enumerated(EnumType.STRING)
@Column(name = "ORDER_TYPE")
private OrderType orderType = OrderType.ISSUE;//类型:发行、售后

}

+ 11
- 3
gly-base-core/src/main/java/cn/com/taiji/core/manager/tools/issue/PayTools.java Näytä tiedosto

@@ -8,6 +8,7 @@ import cn.com.taiji.common.pub.json.JsonTools;
import cn.com.taiji.core.entity.comm.CommonPayConfig;
import cn.com.taiji.core.entity.dict.issue.OrderPayStatus;
import cn.com.taiji.core.entity.dict.issue.OrderPayType;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import cn.com.taiji.core.entity.dict.pay.PayChannelType;
import cn.com.taiji.core.entity.dict.pay.TradeState;
import cn.com.taiji.core.entity.dict.pay.TradeType;
@@ -52,23 +53,26 @@ public class PayTools extends AbstractManager {
/**
* 创建支付单
* @param orderNo 订单号
* @param orderType 订单类型
* @param fee 金额==单位分
* @param payConfig 支付配置id
* @param payType 字符类型
* @param agencyId 渠道编号
*/
public void createPayOrder(String orderNo, Long fee, String payConfig, OrderPayType payType,String agencyId) {
public IssueOrderPay createPayOrder(String orderNo, OrderType orderType, Long fee, String payConfig, OrderPayType payType, String agencyId) {
if (fee <= 0){
return;
return null;
}
IssueOrderPay orderPay = new IssueOrderPay();
orderPay.setOrderNo(orderNo);
orderPay.setOrderType(orderType);
orderPay.setPayType(payType);
orderPay.setPayOrderNo(getPayOrderId(orderPay.getPayType(), agencyId));
orderPay.setPayStatus(OrderPayStatus.UNPAY);
orderPay.setFee(fee);
orderPay.setPayConfigId(payConfig);
orderPayRepo.persist(orderPay);
return orderPay;
}

/**
@@ -246,7 +250,11 @@ public class PayTools extends AbstractManager {
v2Request.setNotifyUrl("https://skx.mynatapp.cc/qtucpaymgt/wxv3/notify/");
v2Request.setTradeType(TradeType.valueOf(payConfig.getPayProductType()));
// v2Request.setOpenid(req.getSubOpenId());
v2Request.setSubOpenid(wxOpenId);
if (payConfig.getWxServiceType() == 1) {
v2Request.setOpenid(wxOpenId);
}else {
v2Request.setSubOpenid(wxOpenId);//昱路子商户号appid是九州
}
// v2Request.setSceneInfo();
v2Request.setAppId(payConfig.getWxAppId());
v2Request.setMchId(payConfig.getWxMchId());

+ 1
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/VehicleChangeApllyRequest.java Näytä tiedosto

@@ -24,6 +24,7 @@ public class VehicleChangeApllyRequest extends AbstractSignTypeRequest<VehicleCh
super(AssServiceCmd.VEHICLECHANGE);
}

private Boolean isSend;//是否邮寄
private String staffNum;
private String openId;
@NotBlank

+ 1
- 1
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/MsgwServiceSystem.java Näytä tiedosto

@@ -8,7 +8,7 @@ import cn.com.taiji.core.model.comm.protocol.SignServiceSystem;
import cn.com.taiji.core.model.comm.protocol.SignServiceType;

public enum MsgwServiceSystem implements SignServiceSystem {
SEND("send", "消息发送接口", "/send/api/json", "/send/common/binapi/") {
MSGW("msgw", "消息发送接口", "/msgw/api/json", "/msgw/common/binapi/") {
public List<SignServiceType> listAllServices() {
return Arrays.asList(MsgwServiceType.values());
}

+ 2
- 2
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/MsgwServiceType.java Näytä tiedosto

@@ -14,7 +14,7 @@ import lombok.Getter;

public enum MsgwServiceType implements SignServiceType {

NOTICE("消息发送", "^NOTICE\\S+\\.json$", MsgwSendCmd.values()),
SEND("消息发送", "^SEND\\S+\\.json$", MsgwSendCmd.values()),
;

@Getter
@@ -32,7 +32,7 @@ public enum MsgwServiceType implements SignServiceType {

@Override
public SignServiceSystem getServiceSystem() {
return MsgwServiceSystem.SEND;
return MsgwServiceSystem.MSGW;
}

@Override

+ 3
- 3
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/msgw/send/MsgwSendCmd.java Näytä tiedosto

@@ -8,8 +8,8 @@ import cn.com.taiji.core.model.comm.protocol.msgw.MsgwServiceType;

public enum MsgwSendCmd implements SignServiceCommand {
SMS("短信消息发送", MsgwSmsSendRequest.class),
WXMINI("微信小程序消息发送", BillReversalRequest.class),
WXMP("微信公众号消息发送", BillReversalRequest.class),
WXMINI("微信小程序消息发送", MsgwWxMiniSendRequest.class),
WXMP("微信公众号消息发送", MsgwWxMpSendRequest.class),
;

private final String value;
@@ -22,7 +22,7 @@ public enum MsgwSendCmd implements SignServiceCommand {

@Override
public SignServiceType getServiceType() {
return MsgwServiceType.NOTICE;
return MsgwServiceType.SEND;
}

public static MsgwSendCmd fromIfCode(String ifCode) {

+ 3
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/DeviceResumeAddRequestDTO.java Näytä tiedosto

@@ -34,6 +34,9 @@ public class DeviceResumeAddRequestDTO extends AbstractBizRequestDTO {
@NotBlank
@ApiModelProperty(value = "用户姓名")
private String customerName;// 用户姓名
@NotNull
@ApiModelProperty(value = "客户证件类型")
private IdType customerIdType;//客户证件类型
@NotBlank
@ApiModelProperty(value = "身份证号")
private String customerIdNum;// 身份证号

+ 5
- 5
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/DeviceResumeManagerImpl.java Näytä tiedosto

@@ -138,6 +138,7 @@ public class DeviceResumeManagerImpl extends AbstractCommManager implements Devi
QtkCustomerInfo customerInfo = customerInfoRepo.findByCustomerId(cardInfo.getCustomerId());
AssOrderinfo orderinfo = new AssOrderinfo();
BeanTools.copyProperties(reqDto, orderinfo);
orderinfo.setOrderNo(createOrderNo(cardInfo.getAgencyId()));
orderinfo.setOrderType(AssOrderType.DEVICE_RESUME);
orderinfo.setOrderSource(reqDto.getOrderSource());
orderinfo.setAgencyId(cardInfo.getAgencyId());
@@ -147,23 +148,22 @@ public class DeviceResumeManagerImpl extends AbstractCommManager implements Devi
orderinfo.setApplyTime(LocalDateTime.now());
orderinfo.setOpenId(findOpenIdByToken(reqDto.getAccessToken()));
orderinfo.setCustomerId(cardInfo.getCustomerId());
orderinfo.setCustomerName(reqDto.getCustomerName());
orderinfo.setCustomerTel(reqDto.getCustomerTel());
orderinfo.setUserType(customerInfo.getUserType());
orderinfo.setArtificialStatus(0);
orderinfo.setVehicleId(cardInfo.getVehicleId());
orderinfo.setVehiclePlate(reqDto.getVehiclePlate());
orderinfo.setVehiclePlateColor(reqDto.getVehiclePlateColor());
orderinfo.setCardId(cardInfo.getCardId());
orderinfo.setCardType(CardType.fromCode(cardInfo.getCardType()));
orderinfo.setObuId(reqDto.getObuId());
return orderinfoRepo.save(orderinfo);
}

public AssDeviceResume saveDeviceResume(DeviceResumeAddRequestDTO reqDto, AssOrderinfo orderinfo){
AssDeviceResume deviceResume = new AssDeviceResume();
QtkCardInfo cardInfo = cardInfoRepo.findByCardId(reqDto.getCardId());
QtkObuInfo obuInfo = obuInfoRepo.findByObuId(reqDto.getObuId());
BeanTools.copyProperties(reqDto, deviceResume);
deviceResume.setOrderNo(orderinfo.getOrderNo());
deviceResume.setCardStatus(cardInfo.getCardStatus());
deviceResume.setObuStatus(obuInfo.getObuStatus());
deviceResume.setInsertTime(LocalDateTime.now());
return deviceResumeRepo.save(deviceResume);
}

+ 2
- 0
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/manager/product/PromotionManagerImpl.java Näytä tiedosto

@@ -182,6 +182,8 @@ public class PromotionManagerImpl extends AbstractManagewManager implements Prom
UseFeeModel useFeeModel = new UseFeeModel();
useFeeModel.setFeeType(t.getUseFeeType());
useFeeModel.setFee(t.getFee());
useFeeModel.setBillingMode(t.getBillingMode());
useFeeModel.setPercentage(t.getPercentage());
//如果支付方式表有信息,则赋值
payUseMap.map(m -> m.get(t.getUseFeeType().name())).ifPresent(m -> copyProperties(m, useFeeModel));
useFeeModelList.add(useFeeModel);

+ 1
- 6
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/model/product/UseFeeModel.java Näytä tiedosto

@@ -4,11 +4,6 @@ import cn.com.taiji.core.entity.dict.issue.UseFeeJfType;
import cn.com.taiji.core.entity.dict.issue.UseFeeType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;


@@ -21,7 +16,7 @@ import javax.validation.constraints.NotNull;
@Data
public class UseFeeModel extends CommonFee{

@NotBlank
@NotNull
@ApiModelProperty(value = "费用类型")
private UseFeeType feeType;//费用类型


+ 16
- 0
zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/api/WxMpPushController.java Näytä tiedosto

@@ -2,6 +2,10 @@ package cn.com.taiji.msgw.api;

import javax.validation.Valid;

import cn.com.taiji.core.entity.dict.ass.AssOrderType;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwWxMpSendRequest;
import cn.com.taiji.msgw.manager.universalSend.UniversalSendManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -18,6 +22,8 @@ import cn.com.taiji.msgw.manager.weixin.WxManager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import java.time.LocalDateTime;

/**
* @Author ChenChao
* @Date 2024/10/7 0:15
@@ -31,6 +37,8 @@ public class WxMpPushController {

@Autowired
private WxManager wxManager;
@Autowired
private UniversalSendManager universalSendManager;

@ApiOperation(value = "微信公众号-消息模板列表")
@PostMapping(value = "/wxMpMessageList")
@@ -45,5 +53,13 @@ public class WxMpPushController {
MessageWxMpAddResponseDto response = wxManager.mpAdd(request);
return ApiResponse.of(response);
}
@ApiOperation(value = "微信公众号-1")
@PostMapping(value = "/test")
public ApiResponse test() throws ManagerException {
wxManager.test();
return ApiResponse.of("success");
}



}

+ 1
- 1
zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/MyCommHandleManager.java Näytä tiedosto

@@ -24,7 +24,7 @@ public class MyCommHandleManager extends AbstractCommHandleManager {
private SendServiceHandler sendServiceHandler;

public MyCommHandleManager() {
super(MsgwServiceSystem.SEND);
super(MsgwServiceSystem.MSGW);
}



+ 1
- 1
zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/handler/SendServiceHandler.java Näytä tiedosto

@@ -29,7 +29,7 @@ import cn.com.taiji.msgw.manager.universalSend.UniversalSendManager;
public class SendServiceHandler extends AbstractMsgwServiceHandler<MsgwSendCmd> {

public SendServiceHandler() {
super(MsgwServiceType.NOTICE);
super(MsgwServiceType.SEND);
}

@Autowired

+ 1
- 0
zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/weixin/WxManager.java Näytä tiedosto

@@ -27,4 +27,5 @@ public interface WxManager {

MessageWxMiniAddResponseDto miniAdd(MessageWxMiniAddRequestDto request) throws ManagerException;

void test();
}

+ 32
- 0
zhywpt-app-msgw/src/main/java/cn/com/taiji/msgw/manager/weixin/WxManagerImpl.java Näytä tiedosto

@@ -1,5 +1,8 @@
package cn.com.taiji.msgw.manager.weixin;

import cn.com.taiji.core.entity.dict.ass.AssOrderType;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import cn.com.taiji.core.model.comm.protocol.msgw.send.MsgwWxMpSendRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@@ -14,6 +17,8 @@ import cn.com.taiji.msgw.manager.AbstractCommManager;
import cn.com.taiji.msgw.manager.importReview.MessageImportManager;
import cn.com.taiji.msgw.manager.messageWaitSend.MessageWaitSendManager;

import java.time.LocalDateTime;

/**
* 微信开发工具(小程序、公众号)
*
@@ -60,4 +65,31 @@ public class WxManagerImpl extends AbstractCommManager implements WxManager {
return response;
}



@Override
public void test(){
String orderNo = "202509101018440001";

MsgwWxMpSendRequest mpSendRequest = new MsgwWxMpSendRequest();
mpSendRequest.setData("{" +
"\"first\":{\"value\":\"订单状态变更\"}," +
"\"keyword1\":{\"value\":\"" + orderNo + "\"}," +
"\"keyword2\":{\"value\":\"" + AssOrderType.CANCEL.getDesc() + "\"}," +
"\"keyword3\":{\"value\":\"" + LocalDateTime.now() + "\"}," +
"\"remark\":{\"value\":\"设备注销成功\"}" +
"}");
mpSendRequest.setClientId("bfc4040bda90473d8ceab246555361a3");
mpSendRequest.setTitle("订单状态变更");
mpSendRequest.setMpOpenId("ogb3at8cCVh9iy0cchtk5Yr3AR68");
mpSendRequest.setTemplateId("Wn_--Fg98Okqydw8YWLVSp2gxESXZ5DhJF60hKae-FM");
mpSendRequest.setSendOrderType(AssOrderType.CANCEL);
mpSendRequest.setOrderType(OrderType.AFTERSALE);
mpSendRequest.setOrderNo(orderNo);
try {
jsonPostRepeat(mpSendRequest);
} catch (Exception e) {
}
}

}

+ 41
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/FlexibleLocalDateTimeDeserializer.java Näytä tiedosto

@@ -0,0 +1,41 @@
package cn.com.taiji.ias.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class FlexibleLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {

private static final DateTimeFormatter[] FORMATS = {
// DateTimeFormatter.ISO_LOCAL_DATE_TIME, // yyyy-MM-dd'T'HH:mm:ss
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"), // yyyy-MM-dd HH:mm:ss
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"), // 可选:支持不带秒的 ISO
// DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") // 可选:支持不带秒的空格格式
};

@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext context) throws IOException {
String text = p.getValueAsString().trim();
if (text == null || text.isEmpty()) {
return null;
}

for (DateTimeFormatter formatter : FORMATS) {
try {
return LocalDateTime.parse(text, formatter);
} catch (DateTimeParseException e) {
// 尝试下一个格式
}
}

// 如果所有格式都失败,抛出异常
throw context.weirdStringException(text, LocalDateTime.class,
"无法解析为任何支持的 LocalDateTime 格式。支持格式: " +
"yyyy-MM-dd'T'HH:mm:ss, yyyy-MM-dd HH:mm:ss");
}
}

+ 6
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/JsonConfig.java Näytä tiedosto

@@ -2,6 +2,7 @@ package cn.com.taiji.ias.config;

import cn.com.taiji.common.pub.TimeTools;
import cn.com.taiji.common.pub.json.JsonTools;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@@ -9,12 +10,17 @@ import com.fasterxml.jackson.databind.ObjectMapper;

import cn.com.taiji.common.pub.json.ObjectMapperBuilder;

import java.time.LocalDateTime;

@Configuration
public class JsonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper =
ObjectMapperBuilder.create().setLocalDateTimeFormatter(TimeTools.DATE_TIME_FORMATTER).build();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addDeserializer(LocalDateTime.class,new FlexibleLocalDateTimeDeserializer());
objectMapper.registerModule(simpleModule);
JsonTools.customerMapper(objectMapper);
return objectMapper;
}

+ 22
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/AbstractIasManager.java Näytä tiedosto

@@ -3,6 +3,7 @@ package cn.com.taiji.ias.manager;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.TimeTools;
import cn.com.taiji.core.entity.ass.AssAgencyConfig;
import cn.com.taiji.core.entity.basic.QtkCardInfo;
import cn.com.taiji.core.entity.dict.issue.*;
import cn.com.taiji.core.entity.issue.IssueOrderPay;
import cn.com.taiji.core.entity.issue.IssueOrderRefund;
@@ -15,6 +16,10 @@ import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.ats.model.AbsQdCall;
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckRequest;
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckResponse;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsCardQueryRequest;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsCardQueryResponse;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsIssueOrderQueryRequest;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsIssueOrderQueryResponse;
import cn.com.taiji.core.repo.jpa.ass.AssAgencyConfigRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallRepo;
@@ -31,6 +36,7 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Random;

public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> extends AbstractHandleManager<T> {
@@ -170,4 +176,20 @@ public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> e

}

//发行:校验车牌是否已开卡
protected void validVehiclePlate(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsCardQueryRequest req = new OqsCardQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsCardQueryResponse res = jsonPostRepeat(req);
List<QtkCardInfo> qtkCardInfos = res.getQtkCardInfos();
throwBisExceptionOn(qtkCardInfos != null && !qtkCardInfos.isEmpty(), "此车牌号已开卡!");
}
//发行:检验老库订单
protected void checkOldOrder(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsIssueOrderQueryRequest req = new OqsIssueOrderQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsIssueOrderQueryResponse res = jsonPostRepeat(req);
throwBisExceptionOn(res.getIsExist(), "当前车辆存在未完成订单");
}

}

+ 90
- 22
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java Näytä tiedosto

@@ -14,7 +14,8 @@ import cn.com.taiji.core.entity.dict.ass.AssOrderStatus;
import cn.com.taiji.core.entity.dict.ass.AssOrderStep;
import cn.com.taiji.core.entity.dict.ass.AssOrderType;
import cn.com.taiji.core.entity.dict.basic.*;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import cn.com.taiji.core.entity.dict.issue.*;
import cn.com.taiji.core.entity.issue.*;
import cn.com.taiji.core.entity.user.Staff;
import cn.com.taiji.core.model.comm.protocol.ats.model.AssOrderChannelNoticeModel;
import cn.com.taiji.core.model.comm.protocol.ats.model.VehicleChangeModel;
@@ -26,6 +27,10 @@ import cn.com.taiji.core.repo.jpa.ass.AssAgencyConfigRepo;
import cn.com.taiji.core.repo.jpa.ass.AssVehicleInfoChangeRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkCardInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkObuInfoRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPayRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPromotionRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo;
import cn.com.taiji.ias.dict.DataType;
import cn.com.taiji.ias.manager.ass.AbstractAssManager;
import cn.com.taiji.ias.model.ServiceLogEvent;
@@ -49,6 +54,14 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

@Autowired
private AssVehicleInfoChangeRepo assVehicleInfoChangeRepo;
@Autowired
private IssueProductPayRepo issueProductPayRepo;
@Autowired
private IssueOrderinfoRepo issueorderInfoRepo;
@Autowired
private IssueProductRepo issueProductRepo;
@Autowired
private IssueProductPromotionRepo promotionRepo;

public VehicleChangeApplyManager() {
super(DataType.VEHICLE_CHANGE_APPLY);
@@ -62,6 +75,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
private static final String ZC_CARD = "zcCard";
private static final String ZC_OBU = "zcOBU";
private static final String CHANGE_INFO = "zcCardInfo";
private static final String PRODUCT = "product";

@Autowired
private AssAgencyConfigRepo agencyConfigRepo;
@@ -127,25 +141,9 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
if (cardInfo.getCardId().startsWith("9901")) {
throw newBusinessException("在中国ETC小程序操作过户/取消订单后再在九州小程序进行新办");
}
//更换车牌,校验新车牌
//更换车牌,新车牌相关校验
if (req.getOldVehicleId().equals(req.getVehiclePlate()+"_"+req.getVehiclePlateColor())){
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
throwBisExceptionOn(res.getResult() != 4, res.getInfo());
// 工建行储值卡引导用户到银行线下网点办理。 todo
AssAgencyConfig agencyConfig = agencyConfigRepo.findByAgencyId(cardInfo.getAgencyId());
if (agencyConfig == null) {
throw newBusinessException("渠道配置信息不存在");
}
if (!agencyConfig.getVehicleChange()) {
if (SourceType.CHANNEL.equals(req.getOrderSource())){
throw newBusinessException("渠道不支持车辆信息变更");
}else{
if (!hasText(req.getProductId())){
throw newBusinessException("需要选择产品办理");
}
}
// throw newBusinessException(agencyConfig.getDealType() == 1?"渠道不支持车辆信息变更,请注销新办":agencyConfig.getDeviceChangeNotice());
}
validNewCar(req, cardInfo,dataStream);
dataStream.put(PLATE_CHANGEFLAG, true);
}else {
dataStream.put(PLATE_CHANGEFLAG, false);
@@ -153,14 +151,44 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

}

private void validNewCar(VehicleChangeApllyRequest req, QtkCardInfo cardInfo,Map<String, Object> dataStream) throws ServiceHandleException {
// 工建行储值卡引导用户到银行线下网点办理。 todo
AssAgencyConfig agencyConfig = agencyConfigRepo.findByAgencyId(cardInfo.getAgencyId());
if (agencyConfig == null) {
throw newBusinessException("渠道配置信息不存在");
}
if (!agencyConfig.getVehicleChange() && !hasText(req.getProductId())) {
throw newBusinessException("需要选择产品办理");
}
//校验产品
if (hasText(req.getProductId())) {
IssueProduct product = issueProductRepo.findByReleaseId(req.getProductId());
IssueProductPromotion promotion = promotionRepo.findByReleaseId(req.getProductId());
if (product == null || promotion == null) {
throw newBusinessException("当前选择的产品不存在");
}
dataStream.put(PRODUCT, product);
}
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
throwBisExceptionOn(res.getResult() != 4, res.getInfo());
//校验新车是否开过卡
validVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
// 校验车牌是否有老订单
checkOldOrder(req.getVehiclePlate(), req.getVehiclePlateColor());
//校验本地发行订单
IssueOrderinfo order = issueorderInfoRepo.findNormalByVehicleId(req.getVehiclePlate() + "_" + req.getVehiclePlateColor());
if (order != null) throw newBusinessException("新车辆存在发行订单,不可办理");
}

@Override
protected void persistInternal(VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
QtkVehicleInfo vehicleInfo = (QtkVehicleInfo) dataStream.get(VEHICLE_INFO);
QtkCustomerInfo customerInfo = customerInfoRepo.findByCustomerId(vehicleInfo.getCustomerId());
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(ZC_OBU);
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(ZC_CARD);
IssueProduct product = (IssueProduct) dataStream.get(PRODUCT);

//售后表
//=====================================================售后表========================================
AssOrderinfo order = new AssOrderinfo();
LocalDateTime now = LocalDateTime.now();
order.setCardId(qtkCardInfo.getCardId());
@@ -198,7 +226,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
order.setOpenId(req.getOpenId());
}

//车辆信息
//=========================================车辆信息======================================================
AssVehicleInfoChange changeInfo = new AssVehicleInfoChange();
changeInfo.setOrderNo(order.getOrderNo());
changeInfo.setChangeType((Boolean) dataStream.get(PLATE_CHANGEFLAG));
@@ -255,7 +283,15 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
//===========申请人结束=================
changeInfo.setProductId(req.getProductId());
changeInfo.setOldType(vehicleInfo.getType());

if (product != null) {
changeInfo.setAccountId(product.getAgencyId());
changeInfo.setShippingStatus(req.getIsSend()?ShippingStatus.WAIT_SHIPPING:ShippingStatus.NONE);
changeInfo.setProductId(product.getReleaseId());
changeInfo.setProductName(product.getProductName());
changeInfo.setAmount(product.getAmount());
//创建支付单
createPayOrder(order, product);
}
//ocr信息比对
String failReson = checkOcr(req, dataStream);
order.setAuditReason(failReson);
@@ -266,6 +302,38 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

}

private void createPayOrder(AssOrderinfo order, IssueProduct product) {
List<IssueProductPay> productPays = issueProductPayRepo.findByFeeCategoryAndReleaseId(FeeCategory.HANDLE, product.getReleaseId());
// for (IssueProductPay productPay : productPays) {
// IssueOrderPay orderPay = new IssueOrderPay();
// orderPay.setOrderNo(order.getOrderNo());
// orderPay.setPayType(OrderPayType.valueOf(productPay.getFeeType()));
//// orderPay.setPayOrderNo(getPayOrderId(orderPay.getPayType(), order.getAccountId()));
// orderPay.setPayStatus(OrderPayStatus.UNPAY);
// Long fee = 0l;
// switch (orderPay.getPayType()) {
// case HANDLE:
// fee = product.getHandleFee();
// break;
// case MARGIN:
// fee = product.getMarginFee();
// break;
// case PRESTORE:
// fee = product.getPrestoreFee();
// break;
// case PROCESS:
// fee = product.getProcessFee();
// break;
// default:
// break;
// }
// payTools.createPayOrder(order.getOrderNo(),OrderType.ISSUE, fee, productPay.getPayConfigId(), req.getH5Type(), order);
// orderPay.setPayConfigId(productPay.getPayConfigId());
//// if (orderPay.getFee() > 0)
//// orderPays.add(orderPay);
// }
}

@Override
protected void onSuccessInternal(VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo assOrderinfo = (AssOrderinfo) dataStream.get(ORDER);

+ 1
- 13
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderInitManager.java Näytä tiedosto

@@ -197,20 +197,7 @@ public class OrderInitManager extends AbstractOrderManager<OrderInitRequest> {
return res;
}

private void checkOldOrder(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsIssueOrderQueryRequest req = new OqsIssueOrderQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsIssueOrderQueryResponse res = jsonPostRepeat(req);
throwBisExceptionOn(res.getIsExist(), "当前车辆存在未完成订单");
}

private void validVehiclePlate(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsCardQueryRequest req = new OqsCardQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsCardQueryResponse res = jsonPostRepeat(req);
List<QtkCardInfo> qtkCardInfos = res.getQtkCardInfos();
throwBisExceptionOn(qtkCardInfos != null && !qtkCardInfos.isEmpty(), "此车牌号已开卡!");
}

private void checkLocalOrder(OrderInitRequest request) throws ServiceHandleException {
IssueOrderinfo order = orderInfoRepo.findNormalByVehicleId(request.getVehiclePlate() + "_" + request.getVehiclePlateColor());
@@ -285,6 +272,7 @@ public class OrderInitManager extends AbstractOrderManager<OrderInitRequest> {
for (IssueProductPay productPay : productPays) {
IssueOrderPay orderPay = new IssueOrderPay();
orderPay.setOrderNo(order.getOrderNo());
orderPay.setOrderType(OrderType.ISSUE);
orderPay.setPayType(OrderPayType.valueOf(productPay.getFeeType()));
orderPay.setPayOrderNo(getPayOrderId(orderPay.getPayType(), order.getAccountId()));
orderPay.setPayStatus(OrderPayStatus.UNPAY);

Loading…
Peruuta
Tallenna