Explorar el Código

ias、iaw签约信息调整,车辆信息变更申请

master
chenchaod hace 1 día
padre
commit
5cdb89956c
Se han modificado 16 ficheros con 259 adiciones y 275 borrados
  1. 61
    61
      gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssVehicleInfoChange.java
  2. 13
    2
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/AssSignQueryResponse.java
  3. 33
    33
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/VehicleChangeApllyRequest.java
  4. 12
    0
      gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/order/SignQueryResponse.java
  5. 9
    2
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/AssSignQueryResDTO.java
  6. 9
    1
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/sign/ResignCheckResDTO.java
  7. 2
    2
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/sign/ResignResponseDTO.java
  8. 20
    50
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/order/SignQueryResponseDTO.java
  9. 1
    1
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/AssOrderinfoManagerImpl.java
  10. 0
    2
      zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/ResignManagerImpl.java
  11. 6
    5
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/AssOrderSignQueryManager.java
  12. 13
    13
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/assSign/AbsAssSignManager.java
  13. 3
    0
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/resign/ResignManager.java
  14. 71
    99
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java
  15. 4
    3
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignCommonManager.java
  16. 2
    1
      zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignQueryManager.java

+ 61
- 61
gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssVehicleInfoChange.java Ver fichero

@@ -122,25 +122,25 @@ public class AssVehicleInfoChange extends StringPropertyUUIDEntity {
private Integer permittedTowWeight;//准牵引总质量;

//=======================车主========================
@Size(max = 512)
@Column(name = "OWNER_NAME")
private String ownerName;//车主姓名;
@Column(name = "OWNER_IDTYPE")
@Enumerated(EnumType.STRING)
private IdType ownerIdType;//车主证件类型;
@Size(max = 128)
@Column(name = "OWNER_IDNUM")
private String ownerIdNum;//车主证件号码;
@Size(max = 255)
@Column(name = "OWNER_POS_IMGURL")
private String ownerPosImgUrl;//车主证件正面图片的BASE64编码;
@Size(max = 255)
@Column(name = "OWNER_NEG_IMGURL")
private String ownerNegImgUrl;//车主证件反面图片的BASE64编码;
@Column(name = "OWNER_ID_ADDRESS")
private String ownerIdAddress;// 车主证件ocr地址
@Column(name = "PROXY_URL")
private String proxyUrl;//委托书照片
// @Size(max = 512)
// @Column(name = "OWNER_NAME")
// private String ownerName;//车主姓名;
// @Column(name = "OWNER_IDTYPE")
// @Enumerated(EnumType.STRING)
// private IdType ownerIdType;//车主证件类型;
// @Size(max = 128)
// @Column(name = "OWNER_IDNUM")
// private String ownerIdNum;//车主证件号码;
// @Size(max = 255)
// @Column(name = "OWNER_POS_IMGURL")
// private String ownerPosImgUrl;//车主证件正面图片的BASE64编码;
// @Size(max = 255)
// @Column(name = "OWNER_NEG_IMGURL")
// private String ownerNegImgUrl;//车主证件反面图片的BASE64编码;
// @Column(name = "OWNER_ID_ADDRESS")
// private String ownerIdAddress;// 车主证件ocr地址
// @Column(name = "PROXY_URL")
// private String proxyUrl;//委托书照片
//================================================

//申请人
@@ -165,9 +165,9 @@ public class AssVehicleInfoChange extends StringPropertyUUIDEntity {
// 换渠道相关字段
@Column(name = "ACCOUNT_ID")
private String accountId;//扣款渠道
@Column(name = "SHIPPING_STATUS")
@Enumerated(EnumType.STRING)
private ShippingStatus shippingStatus = ShippingStatus.NONE;//货物状态
// @Column(name = "SHIPPING_STATUS")
// @Enumerated(EnumType.STRING)
// private ShippingStatus shippingStatus = ShippingStatus.NONE;//货物状态
@Column(name = "PRODUCT_ID")
private String productId;//产品编号
@Column(name = "PRODUCT_NAME")
@@ -178,31 +178,31 @@ public class AssVehicleInfoChange extends StringPropertyUUIDEntity {
private LocalDateTime agreementEnableTime;//签约启用时间
@Column(name = "AGREEMENT_ID")
private String agreementId;//签约协议编号,暂时和车签约,字段值其实是微信openId或支付宝openId,渠道签约结果通知,不知传的啥玩意
@Column(name = "CARD_TYPE")
@Enumerated(EnumType.STRING)
private CardType cardType;//卡类型
@Column(name = "CARD_ID")
private String cardId;//卡号
@Column(name = "CARD_STATUS")
@Enumerated(EnumType.STRING)
private CardStatus cardStatus;//etc卡状态
@Column(name = "CARD_ENABLE_TIME")
private LocalDateTime cardEnableTime;//卡启用时间
@Column(name = "CARD_EXPIRE_TIME")
private LocalDateTime cardExpireTime;//卡到期时间
@Column(name = "OBU_ID")
private String obuId;//签号
@Column(name = "OBU_STATUS")
@Enumerated(EnumType.STRING)
private ObuStatus obuStatus;//obu状态
@Column(name = "OBU_ENABLE_TIME")
private LocalDateTime obuEnableTime;//obu启用时间
@Column(name = "OBU_EXPIRE_TIME")
private LocalDateTime obuExpireTime;//obu到期时间
@Column(name = "ACTIVATION_TIME")
private LocalDateTime activationTime;//订单激活时间
@Column(name = "DELIVERY_TIME")
private LocalDateTime deliveryTime;//邮寄时间
// @Column(name = "CARD_TYPE")
// @Enumerated(EnumType.STRING)
// private CardType cardType;//卡类型
// @Column(name = "CARD_ID")
// private String cardId;//卡号
// @Column(name = "CARD_STATUS")
// @Enumerated(EnumType.STRING)
// private CardStatus cardStatus;//etc卡状态
// @Column(name = "CARD_ENABLE_TIME")
// private LocalDateTime cardEnableTime;//卡启用时间
// @Column(name = "CARD_EXPIRE_TIME")
// private LocalDateTime cardExpireTime;//卡到期时间
// @Column(name = "OBU_ID")
// private String obuId;//签号
// @Column(name = "OBU_STATUS")
// @Enumerated(EnumType.STRING)
// private ObuStatus obuStatus;//obu状态
// @Column(name = "OBU_ENABLE_TIME")
// private LocalDateTime obuEnableTime;//obu启用时间
// @Column(name = "OBU_EXPIRE_TIME")
// private LocalDateTime obuExpireTime;//obu到期时间
// @Column(name = "ACTIVATION_TIME")
// private LocalDateTime activationTime;//订单激活时间
// @Column(name = "DELIVERY_TIME")
// private LocalDateTime deliveryTime;//邮寄时间
@Column(name = "PROTOCOL")
private String protocol = "0"; // 是否同意协议:1:是 0:否
@Column(name = "PROTOCOL_URL")
@@ -220,19 +220,19 @@ public class AssVehicleInfoChange extends StringPropertyUUIDEntity {
@Column(name = "CALL_AGENCYID")
private String callAgencyId;//通知的渠道id

@Column(name = "CONSIGNEE")
private String consignee;//收货人
@Column(name = "CONSIGNEE_TEL")
private String consigneeTel;//收货人电话
@Column(name = "REGION")
private String region;//收货所在地区(省、市、区、街道)
@Column(name = "ADDRESS")
private String address;//收货详细地址
@Column(name = "POST_CODE")
private String postCode;
@Column(name = "TRACKING_NUMBER")
private String trackingNumber;//快递单号
@Column(name = "COURIER_COMPANY")
private String courierCompany;//快递公司
// @Column(name = "CONSIGNEE")
// private String consignee;//收货人
// @Column(name = "CONSIGNEE_TEL")
// private String consigneeTel;//收货人电话
// @Column(name = "REGION")
// private String region;//收货所在地区(省、市、区、街道)
// @Column(name = "ADDRESS")
// private String address;//收货详细地址
// @Column(name = "POST_CODE")
// private String postCode;
// @Column(name = "TRACKING_NUMBER")
// private String trackingNumber;//快递单号
// @Column(name = "COURIER_COMPANY")
// private String courierCompany;//快递公司

}

+ 13
- 2
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/AssSignQueryResponse.java Ver fichero

@@ -16,8 +16,19 @@ import lombok.Setter;
@Setter
public class AssSignQueryResponse extends AbstractSignTypeResponse {

// private String userState;//用户签约状态 UNAUTHORIZED 未签约 是
private Boolean sign; //true 已签约 false 未签约
/**
* v2
* NORMAL:正常用户,已开通车主服务,且已授权访问
* PAUSED:已暂停车主服务
* OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务
* UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口
* v3:
* OPENED: 已开通
* PAUSE:已暂停
* DELETED: 已关闭
*/
private String userState;//用户签约状态 是
// private Boolean sign; //true 已签约 false 未签约

private String id;// 记录操作日志的id


+ 33
- 33
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/VehicleChangeApllyRequest.java Ver fichero

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

private Boolean whetherToMail = false;// 是否需要邮寄
// private Boolean whetherToMail = false;// 是否需要邮寄
private String staffNum;
private String openId;
@NotBlank
@@ -111,24 +111,24 @@ public class VehicleChangeApllyRequest extends AbstractSignTypeRequest<VehicleCh
private String userAdress;//地址

//========================车主信息===========================
@EnumInteger(enumClazz = IdType.class, message = "用户证件类型不合规")
private Integer ownerIdType;// 车主证件类型
private String ownerIdNum;// 车主证件号码
private String ownerIdAddress;// 车主证件ocr地址
private String ownerPosImgUrl;//车主证件正面照片地址
private String ownerNegImgUrl;//车主证件反面照片地址, 单位的填不上,个人必填
private String ownerTel;//车主手机号,单位的填不上,个人必填
private String ownerName;//身份证上姓名
private String proxyUrl;// 委托书地址
// @EnumInteger(enumClazz = IdType.class, message = "用户证件类型不合规")
// private Integer ownerIdType;// 车主证件类型
// private String ownerIdNum;// 车主证件号码
// private String ownerIdAddress;// 车主证件ocr地址
// private String ownerPosImgUrl;//车主证件正面照片地址
// private String ownerNegImgUrl;//车主证件反面照片地址, 单位的填不上,个人必填
// private String ownerTel;//车主手机号,单位的填不上,个人必填
// private String ownerName;//身份证上姓名
// private String proxyUrl;// 委托书地址

private String productId;//产品编号
//==========================收货信息==========================
private String consignee;// 收货人
private String consigneeTel;// 收货人电话
private String region;// 收货所在地区(省、市、区、街道)
private String address;// 收货详细地址
private String postalCode;// 收货邮政编码
private String detailedAddress;// 办理时的详细地址
// private String consignee;// 收货人
// private String consigneeTel;// 收货人电话
// private String region;// 收货所在地区(省、市、区、街道)
// private String address;// 收货详细地址
// private String postalCode;// 收货邮政编码
// private String detailedAddress;// 办理时的详细地址
public void relatedValid(ErrorMsgBuilder validator) {
if (SourceType.WECHAT.equals(orderSource) || SourceType.ALI.equals(orderSource)) {
validator.validFieldNotBlank("openId", openId);
@@ -160,23 +160,23 @@ public class VehicleChangeApllyRequest extends AbstractSignTypeRequest<VehicleCh
validator.validFieldNotBlank("roadTransportPermitPicUrl", roadTransportPermitPicUrl);
validator.validFieldNotBlank("licenseIdNum",licenseIdNum);
}
if (whetherToMail) {
validator.validFieldNotBlank("consignee", consignee);
validator.validFieldNotBlank("consigneeTel", consigneeTel);
validator.validFieldNotBlank("region", region);
validator.validFieldNotBlank("address", address);
}
if (ownerIdType != null){
//有车主信息
validator.validFieldNotBlank("ownerName",ownerName);
validator.validFieldNotBlank("ownerIdNum",ownerIdNum);
validator.validFieldNotBlank("ownerIdAddress",ownerIdAddress);
validator.validFieldNotBlank("ownerPosImgUrl",ownerPosImgUrl);
if (ownerIdType != null && IdType.SFZ.getCode()== ownerIdType){
validator.validFieldNotBlank("ownerNegImgUrl",ownerNegImgUrl);// 单位的填不上,个人必填
validator.validFieldNotBlank("ownerTel",ownerTel);
}
}
// if (whetherToMail) {
// validator.validFieldNotBlank("consignee", consignee);
// validator.validFieldNotBlank("consigneeTel", consigneeTel);
// validator.validFieldNotBlank("region", region);
// validator.validFieldNotBlank("address", address);
// }
// if (ownerIdType != null){
// //有车主信息
// validator.validFieldNotBlank("ownerName",ownerName);
// validator.validFieldNotBlank("ownerIdNum",ownerIdNum);
// validator.validFieldNotBlank("ownerIdAddress",ownerIdAddress);
// validator.validFieldNotBlank("ownerPosImgUrl",ownerPosImgUrl);
// if (ownerIdType != null && IdType.SFZ.getCode()== ownerIdType){
// validator.validFieldNotBlank("ownerNegImgUrl",ownerNegImgUrl);// 单位的填不上,个人必填
// validator.validFieldNotBlank("ownerTel",ownerTel);
// }
// }

}


+ 12
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/order/SignQueryResponse.java Ver fichero

@@ -33,6 +33,18 @@ public class SignQueryResponse extends AbstractSignTypeResponse {
private IssueOrderStep step;//订单状态 是(不是签约参数,用于通知小程序订单状态)


/**
* v2
* NORMAL:正常用户,已开通车主服务,且已授权访问
* PAUSED:已暂停车主服务
* OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务
* UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口
* v3:
* OPENED: 已开通
* PAUSE:已暂停
* DELETED: 已关闭
*/

private String userState;//用户签约状态 是

private String deductMode;//发起扣费方式PROACTIVE:表示用户主动发起的免密支付 AUTOPAY:表示用户无感的支付 否

+ 9
- 2
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/AssSignQueryResDTO.java Ver fichero

@@ -16,8 +16,15 @@ import lombok.Data;
@ApiModel(description = "售后签约查询参数")
public class AssSignQueryResDTO extends AbstractBizRequestDTO {

@ApiModelProperty(value = "签约状态 true已签约,false 未签约", required = true)
private Boolean sign;
@ApiModelProperty(value = "签约状态:NORMAL:正常用户,已开通车主服务,且已授权访问\n" +
" * PAUSED:已暂停车主服务\n" +
" * OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务\n" +
" * UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口\n" +
" * v3:\n" +
" * OPENED: 已开通\n" +
" * PAUSE:已暂停\n" +
" * DELETED: 已关闭", required = true)
private String userState;//用户签约状态

@ApiModelProperty(value = "售后订单阶段", required = true)
private AssOrderStep orderStep;//订单阶段

+ 9
- 1
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/sign/ResignCheckResDTO.java Ver fichero

@@ -11,6 +11,14 @@ import lombok.Data;
*/
@Data
public class ResignCheckResDTO {
@ApiModelProperty(value = "用户签约状态 UNAUTHORIZED 未签约")
@ApiModelProperty(value = "用户签约状态:v2:\n" +
" * NORMAL:正常用户,已开通车主服务,且已授权访问\n" +
" * PAUSED:已暂停车主服务\n" +
" * OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务\n" +
" * UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口\n" +
" * v3:\n" +
" * OPENED: 已开通\n" +
" * PAUSE:已暂停\n" +
" * DELETED: 已关闭")
private String userState;//用户签约状态 是
}

+ 2
- 2
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/ass/sign/ResignResponseDTO.java Ver fichero

@@ -12,8 +12,8 @@ import lombok.Data;
@Data
public class ResignResponseDTO {

@ApiModelProperty(value = "用户签约状态 UNAUTHORIZED 未签约")
private String userState;//用户签约状态 是
// @ApiModelProperty(value = "用户签约状态 UNAUTHORIZED 未签约")
// private String userState;//用户签约状态 是

@ApiModelProperty(value = "发起扣费方式PROACTIVE:表示用户主动发起的免密支付 AUTOPAY:表示用户无感的支付")
private String deductMode;//发起扣费方式PROACTIVE:表示用户主动发起的免密支付 AUTOPAY:表示用户无感的支付 否

+ 20
- 50
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/order/SignQueryResponseDTO.java Ver fichero

@@ -16,56 +16,26 @@ import lombok.Data;
public class SignQueryResponseDTO {
@ApiModelProperty(value = "订单阶段(通知小程序订单阶段)")
private IssueOrderStep step;
@ApiModelProperty(value = "用户签约状态 UNAUTHORIZED 未签约")
/**
* v2
* NORMAL:正常用户,已开通车主服务,且已授权访问
* PAUSED:已暂停车主服务
* OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务
* UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口
* v3:
* OPENED: 已开通
* PAUSE:已暂停
* DELETED: 已关闭
*/
@ApiModelProperty(value = "用户签约状态:v2:\n" +
" * NORMAL:正常用户,已开通车主服务,且已授权访问\n" +
" * PAUSED:已暂停车主服务\n" +
" * OVERDUE: 用户已开通车主服务,但欠费状态。提示用户还款,请跳转到车主服务\n" +
" * UNAUTHORIZED:用户未授权使用当前业务,或未开通车主服务。请跳转到授权接口\n" +
" * v3:\n" +
" * OPENED: 已开通\n" +
" * PAUSE:已暂停\n" +
" * DELETED: 已关闭")
private String userState;//用户签约状态 是

// @ApiModelProperty(value = "发起扣费方式PROACTIVE:表示用户主动发起的免密支付 AUTOPAY:表示用户无感的支付")
// private String deductMode;//发起扣费方式PROACTIVE:表示用户主动发起的免密支付 AUTOPAY:表示用户无感的支付 否
//
// @ApiModelProperty(value = "车牌信息")
// private String plateNumberInfo;//车牌信息 否
//
// //=====================前端请求微信签约参数==============参与签名字段 +
// @ApiModelProperty(value = "V2 签约参数appid")
// private String appId;//请求appid 是 +
//
// @ApiModelProperty(value = "V2 签约参数商户号")
// private String mchId;//商户号 是 +
//
// @ApiModelProperty(value = "V2 签约参数子商户号")
// private String subMchId;//子商户号 是 +
//
// @ApiModelProperty(value = "V2 签约参数 子商户公众账号id")
// private String subAppId;//子商户公众账号id 是 +
//
// @ApiModelProperty(value = "V2 签约参数 随机字符串")
// private String nonceStr;//随机字符串 是 +
//
// @ApiModelProperty(value = "V2 签约参数 签名类型")
// private String signType;//签名类型 是 +
//
// @ApiModelProperty(value = "V2 签约参数 sign")
// private String sign;//签名 是
//
// @ApiModelProperty(value = "V2 签约参数 交易场景")
// private String tradeScene = "HIGHWAY";//交易场景 写死 是 +
// @ApiModelProperty(value = "V2 签约参数 openId")
// private String openId;//用户标识 否
// @ApiModelProperty(value = "V2 签约参数 subOpenId")
// private String subOpenId;//用户子标识 是 +
// @ApiModelProperty(value = "V2 签约参数 车牌号")
// private String plateNumber;//车牌号 是 +
// @ApiModelProperty(value = "V2 签约参数 通道类型")
// private String channelType = "ETC";//通道类型 写死 ETC +
// @ApiModelProperty(value = "V2 跳转路径")
// private String path;//跳转路径 是
//
// @ApiModelProperty(value = "V3 签约参数 id")
// private String preopenId;//V3黄牌 签约参数 +
//
//
// @ApiModelProperty(value = "跳转渠道AppId")
// private String channelSignAppId;
// @ApiModelProperty(value = "渠道签约地址")
// private String channelSignUrl;
}

+ 1
- 1
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/AssOrderinfoManagerImpl.java Ver fichero

@@ -136,7 +136,7 @@ public class AssOrderinfoManagerImpl extends AbstractIawManager implements AssOr
request.setAccessToken(reqDto.getAccessToken());
AssSignQueryResponse response = jsonPostRepeat(request);
AssSignQueryResDTO resDTO = new AssSignQueryResDTO();
resDTO.setSign(response.getSign());
resDTO.setUserState(response.getUserState());
resDTO.setOrderStep(response.getOrderStep());
//记录日志
sysPersistOperateLog(response.getOperateType(), response.getId(), reqDto.getOrderSource(), findOpenIdByToken(reqDto.getAccessToken()), response.getOperateType().getValue());

+ 0
- 2
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/ass/ResignManagerImpl.java Ver fichero

@@ -1,7 +1,6 @@
package cn.com.taiji.iaw.manager.ass;

import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.core.entity.ass.AssAgencyConfig;
import cn.com.taiji.core.entity.basic.QtkCardInfo;
@@ -17,7 +16,6 @@ import cn.com.taiji.core.repo.jpa.basic.QtkCardInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo;
import cn.com.taiji.iaw.dto.ass.sign.*;
import cn.com.taiji.iaw.dto.issue.order.SignQueryResponseDTO;
import cn.com.taiji.iaw.manager.AbstractCommManager;
import cn.com.taiji.iaw.repo.jpa.request.comm.VehicleSignPageRequest;
import org.springframework.beans.factory.annotation.Autowired;

+ 6
- 5
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/AssOrderSignQueryManager.java Ver fichero

@@ -10,6 +10,7 @@ import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder;
import cn.com.taiji.ias.dict.DataType;
import cn.com.taiji.ias.manager.ass.assSign.AssSignChangeManager;
import cn.com.taiji.ias.model.ServiceLogEvent;
import org.apache.kafka.common.protocol.types.Field;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
@@ -56,22 +57,22 @@ public class AssOrderSignQueryManager extends AbstractAssManager<AssSignQueryReq
protected void persistInternal(AssSignQueryRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo orderinfo = (AssOrderinfo) dataStream.get(ORDER);
AccountInfo accountInfo = findAccountInfoByToken(req.getAccessToken());
Boolean b = false;
String userState = "";
switch (orderinfo.getOrderType()){
case PLATE_INFO_CHANGE://签约信息变更
b = assSignChangeManager.check(accountInfo,orderinfo,req);
userState = assSignChangeManager.check(accountInfo,orderinfo,req);
break;
// case todo
}
dataStream.put(SIGN,b);
dataStream.put(SIGN,userState);
}

@Override
protected AssSignQueryResponse getRes(AssSignQueryRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException {
AssOrderinfo orderinfo = (AssOrderinfo) dataStream.get(ORDER);
Boolean b = (Boolean) dataStream.get(SIGN);
String userState = (String) dataStream.get(SIGN);
AssSignQueryResponse response = new AssSignQueryResponse();
response.setSign(b);
response.setUserState(userState);
response.setId(orderinfo.getId());
response.setOrderStep(orderinfo.getOrderStep());
switch (orderinfo.getOrderType()){

+ 13
- 13
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/assSign/AbsAssSignManager.java Ver fichero

@@ -37,15 +37,15 @@ public abstract class AbsAssSignManager {
* @param req
* @return
*/
public Boolean check(AccountInfo accountInfo, AssOrderinfo orderinfo, AssSignQueryRequest req) throws ServiceHandleException {
public String check(AccountInfo accountInfo, AssOrderinfo orderinfo, AssSignQueryRequest req) throws ServiceHandleException {
Map<String, Object> dataStream = Maps.newHashMap();
getAgencyId(orderinfo,dataStream);//此处虽然用不上,但是需要调用(保证子类从上到下的实现dataStream有值)
ResignRequest request = getRequest(accountInfo,orderinfo,1,dataStream);
Boolean b = checkSign(request);
if (b){
SignQueryResponse response = resignManager.serviceHandle(request);
if (response.getUserState().equals("NORMAL") || response.getUserState().equals("OPENED")){
persistHandle(orderinfo, req,dataStream);
}
return b;
return response.getUserState();
}


@@ -105,15 +105,15 @@ public abstract class AbsAssSignManager {
*/
public abstract void persistHandle(AssOrderinfo orderinfo, AssSignQueryRequest req,Map<String, Object> dataStream);

/**
* 检测车辆是否已经签约
* @param
* @return true 已签 false 未签
*/
private Boolean checkSign(ResignRequest request) throws ServiceHandleException {
SignQueryResponse response = resignManager.serviceHandle(request);
return !response.getUserState().equals("UNAUTHORIZED");
}
// /**
// * 检测车辆是否已经签约
// * @param
// * @return true 已签 false 未签
// */
// private Boolean checkSign(ResignRequest request) throws ServiceHandleException {
// SignQueryResponse response = resignManager.serviceHandle(request);
// return !response.getUserState().equals("UNAUTHORIZED");
// }
private ResignRequest getRequest(AccountInfo accountInfo,AssOrderinfo orderinfo,Integer flag,Map<String, Object> dataStream) throws ServiceHandleException {
String productId = getProductId(orderinfo,dataStream);
if (!StringUtils.hasText(productId)) {

+ 3
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/resign/ResignManager.java Ver fichero

@@ -41,6 +41,9 @@ public class ResignManager extends AbstractCommManager {
default:
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("微信签约只支持,蓝、渐变绿、黄,三种车牌签约");
}
if (request.getFlag() == 2){//获取参数,不需要返回状态
res.setUserState("");
}
return res;
}
}

+ 71
- 99
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java Ver fichero

@@ -1,15 +1,11 @@
package cn.com.taiji.ias.manager.ass.vehicleChange;

import cn.com.taiji.common.manager.ManagerException;
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.ass.AssOrderinfo;
import cn.com.taiji.core.entity.ass.AssVehicleInfoChange;
import cn.com.taiji.core.entity.basic.QtkCardInfo;
import cn.com.taiji.core.entity.basic.QtkCustomerInfo;
import cn.com.taiji.core.entity.basic.QtkObuInfo;
import cn.com.taiji.core.entity.basic.QtkVehicleInfo;
import cn.com.taiji.core.entity.basic.*;
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;
@@ -25,6 +21,8 @@ import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckResponse
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder;
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.QtkBlackCardRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkBlackObuRepo;
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;
@@ -34,7 +32,7 @@ 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;
import cn.com.taiji.ias.model.issue.OrderVerificationModel;
import cn.com.taiji.ias.model.issue.CarOcrCheck;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -62,6 +60,10 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
private IssueProductRepo issueProductRepo;
@Autowired
private IssueProductPromotionRepo promotionRepo;
@Autowired
private QtkBlackCardRepo qtkBlackCardRepo;
@Autowired
private QtkBlackObuRepo qtkBlackObuRepo;

public VehicleChangeApplyManager() {
super(DataType.VEHICLE_CHANGE_APPLY);
@@ -99,17 +101,6 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
@Override
protected void businessValidateInternal(ErrorMsgBuilder builder, VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {

if (req.getOwnerIdType() == null) {
//没有车主信息,校验申请人信息
if (req.getName().equals(req.getVehicleName())) {
throw newBusinessException("车辆信息与办理人信息不符");
}
} else {
//有车主信息,就校验车主信息
if (req.getOwnerName().equals(req.getVehicleName())) {
throw newBusinessException("车辆信息与车主信息不符");
}
}
List<AssOrderinfo> assOrderinfoList = orderInfoRepo.listByVehicleId(req.getOldVehicleId(), disableList);
if (!isEmpty(assOrderinfoList)) {
throw newBusinessException("待修改车辆有进行中的订单,请到进度查询处理");
@@ -119,10 +110,11 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
throw newBusinessException("待修改车辆不存在");
}
dataStream.put(VEHICLE_INFO, vehicleInfo);
//校验卡签
QtkCardInfo cardInfo = checkCardObu(req, dataStream);
//校验车辆持卡人是否是办理人的(后面涉及支付、签约、升级、激活)
QtkCustomerInfo customerInfo = customerInfoRepo.findByCustomerId(vehicleInfo.getCustomerId());
if (customerInfo == null) {
throw newBusinessException("车辆用户信息不存在");
}
if (UserType.PERSONAL_USER == customerInfo.getUserType()) {
if (!req.getUserIdNum().equals(customerInfo.getCustomerIdNum())) {
throw newBusinessException("车辆持卡人与办理人信息不符");
@@ -132,12 +124,14 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
throw newBusinessException("车辆持卡人与办理人信息不符");
}
}
//校验卡签
QtkCardInfo cardInfo = checkCardObu(req, dataStream);
//9901
if (cardInfo.getCardId().startsWith("9901")) {
throw newBusinessException("在中国ETC小程序操作过户/取消订单后再在九州小程序进行新办");
}
//更换车牌,新车牌相关校验
if (req.getOldVehicleId().equals(req.getVehiclePlate()+"_"+req.getVehiclePlateColor())){
//是否更换车牌,并进行相关校验
if (!req.getOldVehicleId().equals(req.getVehiclePlate()+"_"+req.getVehiclePlateColor())){
validNewCar(req, cardInfo,dataStream);
dataStream.put(PLATE_CHANGEFLAG, true);
}else {
@@ -148,44 +142,51 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

//校验卡签
private QtkCardInfo checkCardObu(VehicleChangeApllyRequest req, Map<String, Object> dataStream) throws ServiceHandleException {
List<QtkCardInfo> qtkCardInfos = qtkCardInfoRepo.listByVehicleIdInUse(req.getOldVehicleId(), new CardStatus[]{CardStatus.YKGQ, CardStatus.WKGQ, CardStatus.YKZX, CardStatus.WKZX});
if (!isEmpty(qtkCardInfos)) {
throw newBusinessException("待修改车辆卡存在注销或挂起,不可办理");
List<QtkCardInfo> qtkCardInfos = qtkCardInfoRepo.listByVehicleIdInUse(req.getOldVehicleId(), new CardStatus[]{CardStatus.ZC, CardStatus.KGS});
if (isEmpty(qtkCardInfos)) {
throw newBusinessException("未找到正常卡信息,不可办理");
}
List<QtkObuInfo> obuInfos = qtkObuInfoRepo.listObuByVehicleIdInUse(req.getOldVehicleId(), new ObuStatus[]{ObuStatus.YQGQ, ObuStatus.WQGQ, ObuStatus.YQZX, ObuStatus.WQZX});
if (!isEmpty(obuInfos)) {
throw newBusinessException("待修改车辆OBU存在注销或挂起,不可办理");
QtkCardInfo cardInfo = qtkCardInfos.get(0);
List<QtkBlackCard> qtkBlackCards = qtkBlackCardRepo.listCardBlackByStatus(cardInfo.getCardId(),1);
if (!isEmpty(qtkBlackCards)) {
throw newBusinessException("此卡存在黑名单");
}
QtkCardInfo cardInfo = qtkCardInfoRepo.findByVehicleIdAndCardStatus(req.getOldVehicleId());
if (cardInfo == null) {
throw newBusinessException("待修改车辆,无正常卡信息,不可修改");
List<QtkObuInfo> qtkObuInfos = qtkObuInfoRepo.listObuByVehicleIdInUse(req.getOldVehicleId(),new ObuStatus[]{ObuStatus.ZC,ObuStatus.BQGS,ObuStatus.YFX});
if (isEmpty(qtkObuInfos)) {
throw newBusinessException("未找到正常OBU信息,不可办理");
}
dataStream.put(ZC_CARD, cardInfo);
QtkObuInfo obuInfo = qtkObuInfoRepo.findByVehicleIdAndObuStatus(req.getOldVehicleId(),ObuStatus.ZC);
if (obuInfo == null){
throw newBusinessException("待修改车辆,无正常OBU信息,不可修改");
QtkObuInfo obuInfo = qtkObuInfos.get(0);
List<QtkBlackObu> qtkBlackObus = qtkBlackObuRepo.listObuBlackByStatus(obuInfo.getObuId(), 1);
if (!isEmpty(qtkBlackObus)) {
throw newBusinessException("此OBU存在黑名单");
}
dataStream.put(ZC_CARD, cardInfo);
dataStream.put(ZC_OBU, obuInfo);
return cardInfo;
}

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 (!agencyConfig.getVehicleChange() && hasText(req.getProductId())) {
IssueProduct product = issueProductRepo.findByReleaseId(req.getProductId());
IssueProductPromotion promotion = promotionRepo.findByReleaseId(req.getProductId());
if (product == null || promotion == null) {
throw newBusinessException("当前选择的产品不存在");
//只有记账卡,需要判断渠道是否支持车牌更换,其他直接修改(即不需要选择产品)
if (CardType.CHARGE_CARD == cardInfo.getCardTypeNew()) {
AssAgencyConfig agencyConfig = agencyConfigRepo.findByAgencyId(cardInfo.getAgencyId());
if (agencyConfig == null) {
throw newBusinessException("渠道配置信息不存在");
}
dataStream.put(PRODUCT, product);
if (!agencyConfig.getVehicleChange()) {
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);
}else {
throw newBusinessException("需要选择产品办理");
}
}

}
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
throwBisExceptionOn(res.getResult() != 4, res.getInfo());
@@ -231,7 +232,6 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
order.setCustomerIdType(customerInfo.getCustomerIdType());//原车牌 ETC用户证件类型
order.setCustomerIdNum(customerInfo.getCustomerIdNum());//原车牌 ETC用户证件号码
order.setUserType(customerInfo.getUserType());//原车牌 ETC用户类型
// FIXME: 业务员申请的单子,用户怎么查看
if (SourceType.SERVICE_HALL == req.getOrderSource() || SourceType.WEB == req.getOrderSource()){
Staff staff = staffRepo.findByStaffId(req.getStaffNum());
order.setStaffOpenId(staff.getOpenId());
@@ -258,7 +258,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
changeInfo.setApprovedCount(req.getApprovedCount());
changeInfo.setTotalMass(req.getTotalMass());
changeInfo.setMaintenaceMass(req.getMaintenaceMass());
changeInfo.setVehicleDimensions(req.getVehicleDimensions().replace("m",""));
changeInfo.setVehicleDimensions(req.getVehicleDimensions().replace("m","").replace("[Xx×*]", "X"));
changeInfo.setAxleCount(req.getAxleCount());
changeInfo.setUseUserType(UseUserType.valueOfCode(req.getUseUserType()));
changeInfo.setVin(req.getVin());
@@ -281,15 +281,6 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
} else {
changeInfo.setEmergencyFlag(0);// 非应急车辆
}
//==========车主信息开始=================
changeInfo.setOwnerName(req.getOwnerName());
changeInfo.setOwnerIdType(IdType.findByCode(req.getOwnerIdType()));
changeInfo.setOwnerIdNum(req.getOwnerIdNum());
changeInfo.setOwnerPosImgUrl(req.getOwnerPosImgUrl());
changeInfo.setOwnerNegImgUrl(req.getOwnerNegImgUrl());
changeInfo.setOwnerIdAddress(req.getOwnerIdAddress());
changeInfo.setProxyUrl(req.getProxyUrl());
//===========车主信息结束=================
//===========申请人开始=================
changeInfo.setUserIdType(IdType.findByCode(req.getUserIdType()));
changeInfo.setUserName(req.getName());
@@ -299,25 +290,20 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
changeInfo.setUserNegImagesUrl(req.getUserNegImagesUrl());
changeInfo.setUserAdress(req.getUserAdress());
//===========申请人结束=================
// changeInfo.setProductId(req.getProductId());
changeInfo.setOldType(vehicleInfo.getType());
if (product != null) {
//只有记账卡才选择产品
if (qtkCardInfo.getCardTypeNew() == CardType.CHARGE_CARD && product != null) {
changeInfo.setProductId(product.getReleaseId());
changeInfo.setAccountId(product.getAgencyId());
changeInfo.setShippingStatus(req.getWhetherToMail()?ShippingStatus.WAIT_SHIPPING:ShippingStatus.NONE);
changeInfo.setProductName(product.getProductName());
changeInfo.setAmount(product.getAmount());
changeInfo.setConsignee(req.getConsignee());
changeInfo.setConsigneeTel(req.getConsigneeTel());
changeInfo.setRegion(req.getRegion());
changeInfo.setAddress(req.getAddress());
changeInfo.setCallAgencyId(product.getAgencyId());
//创建支付单
createPayOrder(order, product);
}
changeInfo.setCallAgencyId(qtkCardInfo.getAgencyId());
//ocr信息比对
String failReson = checkOcr(req, dataStream);
String failReson = checkOcr(req);
order.setAuditReason(failReson);
orderInfoRepo.persist(order);
assVehicleInfoChangeRepo.persist(changeInfo);
@@ -377,38 +363,24 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

}

private String checkOcr(VehicleChangeApllyRequest req, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo orderinfo = (AssOrderinfo) dataStream.get(ORDER);
OrderVerificationModel model = new OrderVerificationModel();
model.setType(OrderType.AFTERSALE);
model.setOrderNo(orderinfo.getOrderNo());
model.setCustomerIdType(IdType.findByCode(req.getUserIdType()));
model.setCustomerName(req.getName());
model.setCustomerIdNum(req.getUserIdNum());
model.setCusPosImageUrl(req.getUserPosImagesUrl());

model.setVehiclePlate(req.getVehiclePlate());
model.setVehPosImgUrl(req.getVehPosImgUrl());
model.setVehNegImgUrl(req.getVehNegImgUrl());
model.setVehicleDimensions(req.getVehicleDimensions());
model.setOwnerName(req.getOwnerName());
model.setOwnerIdType(IdType.findByCode(req.getOwnerIdType()));
model.setOwnerIdNum(req.getOwnerIdNum());
model.setOwnerPosImgUrl(req.getOwnerPosImgUrl());
model.setFeeVehicleType(req.getFeeVehicleType());
model.setVanType(req.getVanType());
model.setApprovedCount(req.getApprovedCount());
model.setAxleCount(req.getAxleCount());
model.setTotalMass(req.getTotalMass());
model.setVin(req.getVin());
model.setVehicleModel(req.getVehicleModel());
String failReason;
try {
failReason = verificationRuleManager.autoVerify(model);
} catch (ManagerException e) {
throw newBusinessException(e.getMessage());
}
return failReason;
private String checkOcr(VehicleChangeApllyRequest req) {
StringBuilder builder = new StringBuilder();
//校验身份证
verificationRuleManager.ocrVarifyIdCard(req.getName(), req.getUserIdNum(), req.getUserPosImagesUrl(),builder,"申请人");
//校验车辆
CarOcrCheck carOcrCheck = new CarOcrCheck();
carOcrCheck.setVehiclePlate(req.getVehiclePlate());
carOcrCheck.setOwnerName(req.getVehicleName());
carOcrCheck.setVin(req.getVin());
carOcrCheck.setVehicleModel(req.getVehicleModel());
carOcrCheck.setVehPosImgUrl(req.getVehPosImgUrl());
carOcrCheck.setVanType(req.getVanType());
carOcrCheck.setVehicleDimensions(req.getVehicleDimensions());
carOcrCheck.setApprovedCount(req.getApprovedCount());
carOcrCheck.setTotalMass(req.getTotalMass());
carOcrCheck.setVehNegImgUrl(req.getVehNegImgUrl());
verificationRuleManager.ocrVarifyVehicle(carOcrCheck, builder);
return builder.toString();
}



+ 4
- 3
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignCommonManager.java Ver fichero

@@ -155,10 +155,11 @@ public class SignCommonManager extends AbstractCommManager {
vehicleInfo.setContractId(resultResponse.getContractId());
vehicleInfoRepo.merge(vehicleInfo);
// dataStream.put(RES, new SignQueryResponse().setUserState(resultResponse.getBindState()));
return new SignQueryResponse().setUserState(resultResponse.getBindState());
}else {
return new SignQueryResponse().setUserState("UNAUTHORIZED");
}
// else {
// return new SignQueryResponse().setUserState("UNAUTHORIZED");
// }
return new SignQueryResponse().setUserState(resultResponse.getBindState());
}

}

+ 2
- 1
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/SignQueryManager.java Ver fichero

@@ -71,7 +71,8 @@ public class SignQueryManager extends AbstractOrderManager<SignQueryRequest> {
case BLUE:
case GREEN:
res = signCommonManager.carSignV2(request.getSubOpenId(), order.getProductId(), order.getVehicleId());
flag = !"UNAUTHORIZED".equals(res.getUserState());
// flag = !"UNAUTHORIZED".equals(res.getUserState());
flag = "NORMAL".equals(res.getUserState());
break;
case YELLOW:
res = signCommonManager.carSignV3Result(request.getSubOpenId(), order.getProductId(), order.getVehicleId());

Cargando…
Cancelar
Guardar