@@ -116,7 +116,15 @@ task atsProtocol(type:Jar){ | |||
into('cn/com/taiji/core/model/comm/protocol/ats') | |||
dependsOn(classes) | |||
} | |||
task ifmwProtocol(type:Jar){ | |||
archiveBaseName='tj' | |||
archiveAppendix='ifmw-protocol' | |||
archiveVersion='1.0.0-SNAPSHOT' | |||
archiveExtension='jar' | |||
from("build/classes/java/main/cn/com/taiji/core/model/comm/protocol/ifmw") | |||
into('cn/com/taiji/core/model/comm/protocol/ifmw') | |||
dependsOn(classes) | |||
} | |||
task inssProtocol(type:Jar){ | |||
archiveBaseName='tj' | |||
archiveAppendix='inss-protocol' | |||
@@ -234,6 +242,13 @@ publishing { | |||
artifact atsProtocol | |||
artifact packageCoreSrc | |||
} | |||
myPublicationIfmwProtocol(MavenPublication) { | |||
groupId ="${groupname}" | |||
artifactId ='ifmw-protocol' | |||
version ='1.0.0-SNAPSHOT' | |||
artifact ifmwProtocol | |||
artifact packageCoreSrc | |||
} | |||
myPublicationInssProtocol(MavenPublication) { | |||
groupId ="${groupname}" | |||
artifactId ='inss-protocol' |
@@ -45,7 +45,7 @@ public class IssueMultipleEquity extends StringPropertyUUIDEntity { | |||
@Column(name = "MEMBER_POINTS") | |||
private Integer memberPoints;//会员积分 | |||
@Column(name = "REFUND_ON_ETC_CANCEL") | |||
private Integer refundOnEtcCancel;//ETC设备强绑定权益注销时是否退费(0---是;1---否) | |||
private Integer refundOnEtcCancel;//ETC设备强绑定权益注销时是否退费(1---是;0---否) | |||
@Column(name = "VALIDITY_FORMAT") | |||
private Integer validityFormat;//有效期格式 1日 2月 3季 4年 | |||
@Size(max = 1024) | |||
@@ -64,9 +64,9 @@ public class IssueMultipleEquity extends StringPropertyUUIDEntity { | |||
@Column(name = "EQUITY_PROVIDER") | |||
private String equityProvider;//权益提供方 | |||
@Column(name = "TRANSFERABLE") | |||
private Integer transferable;//是否支持权益产品过户(0---是;1---否) | |||
private Integer transferable;//是否支持权益产品过户(1---是;0---否) | |||
@Column(name = "DISCOUNT_COUPON_USABLE") | |||
private Integer discountCouponUsable;//是否可使用积分商城所兑换的折扣券(0---是;1---否) | |||
private Integer discountCouponUsable;//是否可使用积分商城所兑换的折扣券(1---是;0---否) | |||
@Column(name = "USAGE_VALIDITY") | |||
private Integer usageValidity;//使用有效期 | |||
@NotNull |
@@ -48,7 +48,7 @@ public class IssueSingleEquity extends StringPropertyUUIDEntity { | |||
@Column(name = "MEMBER_POINTS") | |||
private Integer memberPoints;//会员积分 | |||
@Column(name = "REFUND_ON_ETC_CANCEL") | |||
private Integer refundOnEtcCancel;//ETC设备强绑定权益注销时是否退费(0---是;1---否) | |||
private Integer refundOnEtcCancel;//ETC设备强绑定权益注销时是否退费(1---是;0---否) | |||
@Column(name = "VALIDITY_FORMAT") | |||
private Integer validityFormat;//有效期格式 1日 2月 3季 4年 | |||
@Size(max = 1024) | |||
@@ -67,9 +67,9 @@ public class IssueSingleEquity extends StringPropertyUUIDEntity { | |||
@Column(name = "EQUITY_PROVIDER") | |||
private String equityProvider;//权益提供方 | |||
@Column(name = "TRANSFERABLE") | |||
private Integer transferable;//是否支持权益产品过户(0---是;1---否) | |||
private Integer transferable;//是否支持权益产品过户(1---是;0---否) | |||
@Column(name = "DISCOUNT_COUPON_USABLE") | |||
private Integer discountCouponUsable;//是否可使用积分商城所兑换的折扣券(0---是;1---否) | |||
private Integer discountCouponUsable;//是否可使用积分商城所兑换的折扣券(1---是;0---否) | |||
@Column(name = "USAGE_VALIDITY") | |||
private Integer usageValidity;//使用有效期 | |||
@NotNull |
@@ -5,6 +5,7 @@ import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ats.anXin.AnXinServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ats.notice.NoticeServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ats.jpush.JpushServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ats.ocr.OcrServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.WeiXinServiceCmd; | |||
@@ -19,6 +20,7 @@ public enum AtsServiceType implements SignServiceType { | |||
ANXINSIGN("安心签","^ANXINSIGN_\\S+\\.json$", AnXinServiceCmd.values()), | |||
OCR("ocr","^OCR\\S+\\.json$", OcrServiceCmd.values()), | |||
JPUSH("极光发送","^JPUSH\\S+\\.json$", JpushServiceCmd.values()), | |||
NOTICE("通知","^NOTICE_\\S+\\.json$", NoticeServiceCmd.values()), | |||
; | |||
@Getter |
@@ -0,0 +1,85 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ats.model; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.common.pub.TimeTools; | |||
import cn.com.taiji.core.manager.tools.sm4.SM4Utils; | |||
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import org.apache.commons.lang3.RandomStringUtils; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
import java.time.LocalDateTime; | |||
import java.util.List; | |||
/** | |||
* @Author : cehnchaod | |||
* @Date: 2025/1/15 17:10 | |||
* @Description: 用于渠道回调 | |||
*/ | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class CallbackModel extends BaseModel { | |||
@NotBlank | |||
private String orderNo; | |||
/** | |||
* 当订单完成基本信息填写后上传 | |||
* 7-审核不通过(人工审核) | |||
* 4-审核通过,待支付 | |||
* 3-完成支付 | |||
* 5-完成签约 | |||
* 10-待激活 | |||
* 11-已激活 | |||
*/ | |||
@NotNull | |||
@IntegerConstant(values = "3,4,5,7,10,11") | |||
private Integer orderStep; | |||
/** | |||
* -1-取消 | |||
* 0-申办订单 | |||
* 1-已激活订单 | |||
*/ | |||
@NotNull | |||
@IntegerConstant(values = "-1,0,1") | |||
private Integer orderStatus; | |||
/** | |||
* 当orderStep=7时 必填 | |||
*/ | |||
private String msg; | |||
/** | |||
* orderStep为10或11时必填 | |||
*/ | |||
private String cardId; | |||
/** | |||
* orderStep为10或11时必填 | |||
*/ | |||
private String obuId; | |||
private String activeTime;//orderStep为11时必填 | |||
private List<PayInfoModelQd> payInfoList;//支付信息,orderStep=3时 必填 | |||
@NotBlank | |||
private String plateNum;//车牌号 | |||
@NotNull | |||
private Integer plateColor;//车牌颜色 | |||
public SignJsonRequest getJsonReq(String appId,String key,String singKey){ | |||
String reqId = appId + "_" + LocalDateTime.now().format(TimeTools.yyyyMMddHHmmssSSS) + "_" | |||
+ RandomStringUtils.randomNumeric(5); | |||
SignJsonRequest jsonReq = new SignJsonRequest(); | |||
jsonReq.setAppId(appId); | |||
jsonReq.setReqId(reqId); | |||
jsonReq.setTimestamp(LocalDateTime.now().format(TimeTools.ISO_LOCAL_DATE_TIME)); | |||
jsonReq.setEncryptType("SM4"); | |||
jsonReq.setSignType("SM3"); | |||
jsonReq.setBizContent(SM4Utils.encryptCBC(this.toJson(), key));// 设置业务内容并按要求加密 | |||
jsonReq.setSign(jsonReq.toSignContent(singKey)); | |||
return jsonReq; | |||
} | |||
} |
@@ -0,0 +1,13 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ats.model; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@Getter | |||
@Setter | |||
public class PayInfoModelQd extends BaseModel { | |||
private String payOrderNo; | |||
private Long fee; | |||
private String payTime; | |||
} |
@@ -0,0 +1,43 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ats.notice; | |||
import cn.com.taiji.core.model.comm.protocol.ats.AbstractAtsRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ats.model.CallbackModel; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import javax.validation.Valid; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/6/10 10:59 | |||
* @Filename:AtsChannelNoticeRequest | |||
* @description: | |||
*/ | |||
@Getter | |||
@Setter | |||
public class AtsChannelNoticeRequest extends AbstractAtsRequest<AtsChannelNoticeResponse> { | |||
public AtsChannelNoticeRequest() { | |||
super(NoticeServiceCmd.CHANNELNOTICE); | |||
} | |||
@NotBlank | |||
private String url;//通知地址 | |||
@NotNull | |||
@Valid | |||
private CallbackModel callbackModel;//通知内容 | |||
@NotBlank | |||
private String appId;//渠道appId | |||
@NotBlank | |||
private String key;//加密密钥 | |||
@NotBlank | |||
private String singKey;//签名密钥 | |||
@Override | |||
protected void validate(ErrorMsgBuilder builder) { | |||
} | |||
} |
@@ -0,0 +1,22 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ats.notice; | |||
import cn.com.taiji.core.model.comm.protocol.ats.AbstractAtsResponse; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/6/10 10:59 | |||
* @Filename:AtsChannelNoticeResponse | |||
* @description: | |||
*/ | |||
@Getter | |||
@Setter | |||
public class AtsChannelNoticeResponse extends AbstractAtsResponse { | |||
private String receiveTime; //接收时间 | |||
private Integer checkStatus; //激活校验状态 | |||
private String failReason; //失败原因 | |||
} |
@@ -0,0 +1,50 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ats.notice; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ats.AtsServiceType; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/6/10 9:32 | |||
* @Filename:NoticeCmdService | |||
* @description: | |||
*/ | |||
public enum NoticeServiceCmd implements SignServiceCommand { | |||
CHANNELNOTICE("渠道通知","channelNotice", AtsChannelNoticeRequest.class) | |||
; | |||
private final String value; | |||
private final String transCode; | |||
private final Class<? extends AbstractSignTypeRequest<?>> reqClass; | |||
NoticeServiceCmd(String value, String transCode, Class<? extends AbstractSignTypeRequest<?>> reqClass) { | |||
this.value = value; | |||
this.transCode = transCode; | |||
this.reqClass = reqClass; | |||
} | |||
@Override | |||
public SignServiceType getServiceType() { | |||
return AtsServiceType.NOTICE; | |||
} | |||
@Override | |||
public String getValue() { | |||
return value; | |||
} | |||
public static NoticeServiceCmd fromIfCode(String ifCode) { | |||
return SignServiceCommand.fromName(NoticeServiceCmd.class, SignServiceCommand.getCmdStr(ifCode)); | |||
} | |||
@Override | |||
public boolean isMyCommand(String ifCode) { | |||
return this == fromIfCode(ifCode); | |||
} | |||
@Override | |||
public Class<? extends AbstractSignTypeRequest<?>> getProtocolClass() { | |||
return reqClass; | |||
} | |||
} |
@@ -0,0 +1,24 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ifmw; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import javax.validation.constraints.NotBlank; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/6/10 17:09 | |||
* @Filename:GetKeyRequest | |||
* @description: | |||
*/ | |||
@Getter | |||
@Setter | |||
public class GetKeyRequest extends AbstractSignTypeRequest<GetKeyResponse> { | |||
public GetKeyRequest() { | |||
super(MysqlServiceCmd.GETKEY); | |||
} | |||
@NotBlank | |||
private String agencyId;//渠道id | |||
} |
@@ -0,0 +1,27 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ifmw; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import javax.validation.constraints.NotBlank; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/6/10 17:10 | |||
* @Filename:GetKeyResponse | |||
* @description: | |||
*/ | |||
@Getter | |||
@Setter | |||
public class GetKeyResponse extends AbstractSignTypeResponse { | |||
@NotBlank | |||
private String appId;//渠道appId | |||
@NotBlank | |||
private String key;//加密密钥 | |||
@NotBlank | |||
private String singKey;//签名密钥 | |||
} |
@@ -0,0 +1,47 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ifmw; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
public enum IfmwServiceSystem implements SignServiceSystem { | |||
IFMW("ifmw", "中台", "/inss/api/json", "/inss/common/binapi/") { | |||
public List<SignServiceType> listAllServices() { | |||
return Arrays.asList(IfmwServiceType.values()); | |||
} | |||
}; | |||
private final String appId;// 微服务环境当做注册中心的服务名 | |||
private final String appName; | |||
private final String jsonUri; | |||
IfmwServiceSystem(String appId, String appName, String jsonUri, String binUri) { | |||
this.appId = appId; | |||
this.appName = appName; | |||
this.jsonUri = jsonUri; | |||
} | |||
@Override | |||
public List<SignServiceType> listAllServices() { | |||
return new ArrayList<>(); | |||
} | |||
@Override | |||
public String getAppId() { | |||
return appId; | |||
} | |||
@Override | |||
public String getAppName() { | |||
return appName; | |||
} | |||
@Override | |||
public String getJsonUri() { | |||
return jsonUri; | |||
} | |||
} |
@@ -0,0 +1,51 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ifmw; | |||
import cn.com.taiji.core.manager.comm.client.CommServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceSystem; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import lombok.Getter; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import java.util.regex.Pattern; | |||
public enum IfmwServiceType implements SignServiceType { | |||
MYSQL("mysql操作", "^VFJ_\\S+\\.json$", MysqlServiceCmd.values()), | |||
; | |||
@Getter | |||
private final String value; | |||
@Getter | |||
private final Pattern reqNamePattern; | |||
private final List<SignServiceCommand> commands; | |||
IfmwServiceType(String value, String reqNameRegex, SignServiceCommand[] commands) { | |||
this.value = value; | |||
this.reqNamePattern = Pattern.compile(reqNameRegex); | |||
this.commands = Arrays.asList(commands); | |||
} | |||
@Override | |||
public SignServiceSystem getServiceSystem() { | |||
return IfmwServiceSystem.IFMW; | |||
} | |||
@Override | |||
public List<SignServiceCommand> listAllCommands() { | |||
return commands; | |||
} | |||
public static IfmwServiceType fromName(String name) { | |||
return CommServiceCommand.fromName(IfmwServiceType.class, name); | |||
} | |||
public static IfmwServiceType fromFileName(String filename) { | |||
return fromName(CommServiceCommand.getServiceTypeStr(filename)); | |||
} | |||
public static IfmwServiceType fromIfCode(String ifCode) { | |||
return SignServiceCommand.fromName(IfmwServiceType.class, SignServiceCommand.getServiceTypeStr(ifCode)); | |||
} | |||
} |
@@ -0,0 +1,51 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ifmw; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
public enum MysqlServiceCmd implements SignServiceCommand { | |||
GETKEY("获取渠道密钥", "GetKey", GetKeyRequest.class) | |||
; | |||
private final String value; | |||
private final String transCode; | |||
private final Class<? extends AbstractSignTypeRequest<?>> reqClass; | |||
MysqlServiceCmd(String value, String transCode, Class<? extends AbstractSignTypeRequest<?>> reqClass) { | |||
this.value = value; | |||
this.transCode = transCode; | |||
this.reqClass = reqClass; | |||
} | |||
@Override | |||
public SignServiceType getServiceType() { | |||
return IfmwServiceType.MYSQL; | |||
} | |||
public static MysqlServiceCmd fromIfCode(String ifCode) { | |||
return SignServiceCommand.fromName(MysqlServiceCmd.class, SignServiceCommand.getCmdStr(ifCode)); | |||
} | |||
@Override | |||
public boolean isMyCommand(String ifCode) { | |||
return this == fromIfCode(ifCode); | |||
} | |||
@Override | |||
public String getValue() { | |||
return value; | |||
} | |||
public String getTransCode() { | |||
return transCode; | |||
} | |||
@Override | |||
public Class<? extends AbstractSignTypeRequest<?>> getProtocolClass() { | |||
return reqClass; | |||
} | |||
} |
@@ -50,11 +50,11 @@ public class TestCodeManager extends AbstractManager { | |||
/* 全局配置参数,详细的参数说明参见GlobalConfigBuilder的属性注释 */ | |||
GlobalConfigBuilder configBuilder = GlobalConfigBuilder.create(); | |||
configBuilder.setAppName("core"); | |||
configBuilder.setModule("msgw"); | |||
String pak = "msgw"; | |||
configBuilder.setModule("issue"); | |||
String pak = "basic"; | |||
configBuilder.setEntityPackage("cn/com/taiji/core/entity/"+pak); | |||
configBuilder.setRepoPackage("cn/com/taiji/core/repo/jpa/"+pak); | |||
configBuilder.setTableName("MEGW_USER_MESSAGE"); | |||
configBuilder.setTableName("QTK_BRANDINFO"); | |||
// 生成分页查询request | |||
// configBuilder.setQueryField(List.of("intVal", "name", "mobile", "insertTime1", "insertTime2")); | |||
// configBuilder.setOrderBy("orderIndex"); |