Commit 14d803bd authored by tianchao's avatar tianchao

init

parents
Pipeline #898 failed with stages
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# Gradle
.gradle
build
bin
# Cache of project
.gradletasknamecache
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
target/
.idea/
*.iml
hs_err_pid*
.project
.settings/
.classpath
.factorypath
.DS_Store
tmp/
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
*.tmp.*
*-local.*
**模块介绍**
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-core</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>cnpc-common</artifactId>
<version>1.0.0-gf</version>
<properties>
<maven.build.timestamp.format>yyyy.MMdd.HHmmss</maven.build.timestamp.format>
</properties>
<dependencies>
<dependency>
<groupId>xstartup</groupId>
<artifactId>xstartup-toolkit-office</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-android</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration combine.self="override">
<archive>
<manifestEntries>
<Component-Group-Name>${project.groupId}</Component-Group-Name>
<Component-Artifactid>${project.artifactId}</Component-Artifactid>
<Component-Version>${project.version}</Component-Version>
<Component-Build-Time>${maven.build.timestamp}</Component-Build-Time>
<Component-Description>${project.description}</Component-Description>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package cnpc.core.common.cache;
import xstartup.base.XContext;
import xstartup.cache.XCacheLife;
import xstartup.cache.XCacheObject;
import xstartup.cache.XSingleCache;
import xstartup.core.base.annotation.XCacheKeyPrefix;
import java.util.function.Supplier;
@XCacheKeyPrefix("CONFIG_CACHE")
public class ConfigCache implements XCacheObject, XCacheLife {
/*
* 配置名称
* */
private String configName;
/*
* 配置值
* */
private String configValue;
public String getConfigName() {
return configName;
}
public void setConfigName(String configName) {
this.configName = configName;
}
public String getConfigValue() {
return configValue;
}
public void setConfigValue(String configValue) {
this.configValue = configValue;
}
@Override
public Integer getDuration() {
//30秒
return 30;
}
@Override
public String getCacheKey() {
return configName;
}
/**
* 获取缓存的token
*/
public static ConfigCache get(XContext context, String configName, boolean deleteOriginal, Supplier<String> valueProvider) {
ConfigCacheRefreshTool tool = ConfigCacheRefreshTool.get(ConfigCacheRefreshTool.class);
tool.setValueProvider(valueProvider);
ConfigCache cache = tool.find(context, configName, ConfigCache.class);
if( deleteOriginal){
try{
tool.delete(context, cache);
}catch(Exception e){
context.getLogger().error("delete cache exception.", e);
}
cache = tool.find(context, configName, ConfigCache.class);
}
return cache;
}
static class ConfigCacheRefreshTool extends XSingleCache<ConfigCache> {
private Supplier<String> valueProvider;
public Supplier<String> getValueProvider() {
return valueProvider;
}
public void setValueProvider(Supplier<String> valueProvider) {
this.valueProvider = valueProvider;
}
@Override
protected ConfigCache restore(XContext context, String cacheKey) {
//生成缓存对象
if(valueProvider != null){
ConfigCache cache = new ConfigCache();
cache.configName = cacheKey;
cache.configValue = valueProvider.get();
return cache;
}
return null;
}
}
}
package cnpc.core.common.constant;
/**
* 常量
*
* @author lixueyan
*/
public interface Constant {
int FLAG_TRUE = 1;
int FLAG_FALSE = 0;
/**
* 成功
*/
int SUCCESS = 1;
/**
* 失败
*/
int FAIL = 0;
/**
* 表单类型-草稿
*/
int FORMTEMPLATE_DRAFT = 1;
/**
* 表单类型-已发布
*/
int FORMTEMPLATE_COMMIT = 2;
/**
* 有子集
*/
int ISHASHCHILDREN_TRUE = 1;
/**
* 无子集
*/
int ISHASHCHILDREN_FALSE = 0;
/**
* 菜单根节点标识
*/
Long MENU_ROOT = 0L;
/**
* 部门根节点标识
*/
Long DEPT_ROOT = 0L;
/**
* 升序
*/
String ASC = "asc";
/**
* 降序
*/
String DESC = "desc";
/**
* 创建时间字段名
*/
String CREATE_DATE = "create_date";
/**
* 数据权限过滤
*/
String SQL_FILTER = "sqlFilter";
/**
* 当前页码
*/
String PAGE = "page";
/**
* 每页显示记录数
*/
String LIMIT = "limit";
/**
* 排序字段
*/
String ORDER_FIELD = "orderField";
/**
* 排序方式
*/
String ORDER = "order";
/**
* token header
*/
String TOKEN_HEADER = "token";
/**
* 云存储配置KEY
*/
String CLOUD_STORAGE_CONFIG_KEY = "CLOUD_STORAGE_CONFIG_KEY";
}
package cnpc.core.common.enums;
public interface DictEnum {
Integer getValue();
String getDesc();
public static <T> T findByValue(Integer v, DictEnum[] values){
if( v == null){
return null;
}
for(DictEnum e : values){
if( e.getValue() .equals(v) ){
return (T)e;
}
}
return null;
}
public static <T> T findByDesc(String desc, DictEnum[] values){
for(DictEnum e : values){
if( e.getDesc().equals(desc) ){
return (T)e;
}
}
return null;
}
}
package cnpc.core.common.enums;
import xstartup.data.XFileType;
public enum FileTypeEnum {
IMAGE_PNG(".png",XFileType.IMAGE_PNG),
IMAGE_GIF(".gif",XFileType.IMAGE_GIF),
IMAGE_JPEG(".jpeg",XFileType.IMAGE_JPEG),
TEXT_HTML(".html",XFileType.TEXT_HTML),
TEXT_PLAIN(".txt",XFileType.TEXT_PLAIN),
TEXT_XML(".xml",XFileType.TEXT_XML),
VIDEO_MP4(".mpeg4",XFileType.VIDEO_MP4),
VIDEO_MP3(".mpeg3",XFileType.VIDEO_MP3),
APPLICATION_XLSX(".xlsx",XFileType.APPLICATION_XLSX),
APPLICATION_XLS(".xls",XFileType.APPLICATION_XLSX),
APPLICATION_DOCX(".docx",XFileType.APPLICATION_DOCX),
APPLICATION_DOC(".doc",XFileType.APPLICATION_DOCX),
APPLICATION_JSON(".json",XFileType.APPLICATION_JSON),
APPLICATION_PDF(".pdf",XFileType.APPLICATION_PDF),
APPLICATION_ZIP(".zip",XFileType.APPLICATION_ZIP),
OTHER("",XFileType.APPLICATION_OCTET_STREAM)
;
private String attachType;
private XFileType fileType;
FileTypeEnum(String attachType, XFileType fileType) {
this.attachType = attachType;
this.fileType = fileType;
}
public String getAttachType() {
return attachType;
}
public void setAttachType(String attachType) {
this.attachType = attachType;
}
public XFileType getFileType() {
return fileType;
}
public void setFileType(XFileType fileType) {
this.fileType = fileType;
}
public static FileTypeEnum findByType(String attachType){
for(FileTypeEnum e : values()){
if( e.getAttachType() .equals(attachType) ){
return e;
}
}
return OTHER;
}
}
package cnpc.core.common.module;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XModule;
@XText("公共模块")
public class CnpcCoreCommonModule extends XModule {
protected CnpcCoreCommonModule() {
super(1000);
}
@Override
protected void onStarted(XContext context) {
}
}
package cnpc.core.common.mybatis;
import com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator;
import java.util.UUID;
public class MyIDGenerator extends DefaultIdentifierGenerator {
@Override
public String nextUUID(Object entity) {
return UUID.randomUUID().toString().replace("-","");
}
}
package cnpc.core.common.mybatis;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
import java.util.function.Supplier;
public enum MybaitisGlobalConfigSuppiler implements Supplier<GlobalConfig> {
INSTANCE;
private final GlobalConfig globalConfig ;
private MybaitisGlobalConfigSuppiler(){
this.globalConfig = GlobalConfigUtils.defaults();
this.globalConfig.setIdentifierGenerator(new MyIDGenerator());
}
@Override
public GlobalConfig get() {
return globalConfig;
}
}
package cnpc.core.common.mybatis;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import xstartup.service.mybatis.XMybatis;
/**
* mybatis 配置类
*/
@Component
@EnableTransactionManagement
@MapperScan(sqlSessionTemplateRef = "sqlSessionTemplateRef.pps.core.common",
sqlSessionFactoryRef = "sqlSessionFactoryRef.pps.core.common",
basePackages = {"pps.core.common.mapper"})
public class PpsCoreCommonMybatis extends XMybatis {
@Override
public GlobalConfig getGlobalConfig() {
return MybaitisGlobalConfigSuppiler.INSTANCE.get();
}
}
package cnpc.core.common.pattern;
import java.util.Objects;
public class Builder<T> {
@FunctionalInterface
public static interface FieldsValidator<T> {
boolean valid(T instance);
}
@FunctionalInterface
public static interface FillField<T> {
void fill(T instance);
}
@FunctionalInterface
public static interface Init<T> {
void initialize(T instanse);
}
private final Class<T> clazz;
private Init<T> init;
private FieldsValidator<T> fieldsValidator;
public Builder(Class<T> clazz) {
this.clazz = clazz;
}
public Builder(Class<T> clazz, Init<T> init) {
this.clazz = clazz;
this.init = init;
}
public Builder(Class<T> clazz, Init<T> init, FieldsValidator<T> fieldsValidator) {
this.clazz = clazz;
this.init = init;
this.fieldsValidator = fieldsValidator;
}
public static <T> Builder<T> create(Class<T> clazz) {
return new Builder<>(clazz);
}
public static <T> Builder<T> create(Class<T> clazz, Init<T> init) {
return new Builder<>(clazz, init);
}
public static <T> Builder<T> create(Class<T> clazz, Init<T> init, FieldsValidator<T> fieldsValidator) {
return new Builder<>(clazz, init, fieldsValidator);
}
public Builder<T> addValid(FieldsValidator<T> valid){
this.fieldsValidator = valid;
return this;
}
public T build(FillField<T> fillField) {
T instance = null;
try {
instance = this.clazz.newInstance();
if (Objects.nonNull(init)){
init.initialize(instance);
}
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
fillField.fill(instance);
if (Objects.isNull(fieldsValidator)){
return instance;
}
boolean validRet = this.fieldsValidator.valid(instance);
if (validRet){
return instance;
}
throw new RuntimeException(String.format("instance fields valid error, Class is %s", instance.getClass().getName()));
}
}
package cnpc.core.common.pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**
* Node of Chain Pattern
*/
public class ChainNode<T> {
private T node;
private ChainNode<T> successor;
public T getNode() {
return node;
}
public void setNode(T node) {
this.node = node;
}
public ChainNode<T> getSuccessor() {
return successor;
}
// public void setSuccessor(ChainNode<T> successor) {
// this.successor = successor;
// }
public ChainNode<T> append(T successorNode){
ChainNode<T> successorChainNode = new ChainNode<>();
successorChainNode.setNode(successorNode);
// this.setSuccessor(successorChainNode);
this.successor = successorChainNode;
return successorChainNode;
}
public ChainNode<T> getLastSuccessor(){
if( this.successor == null){
return this;
}else{
return this.successor.getLastSuccessor();
}
}
public ChainNode<T> setOrAppendLast(T node){
if( this.node == null){
this.node = node;
return this;
}
ChainNode<T> lastSuccessor = this.getLastSuccessor();
if( lastSuccessor.node == null){
lastSuccessor.node = node;
return lastSuccessor;
}
return lastSuccessor.append(node);
}
public void walkThroughLast(Consumer<T> consumer){
if( this.node != null){
consumer.accept(this.node);
}
if( this.successor != null){
this.successor.walkThroughLast(consumer);
}
}
public List<ChainNode<T>> walkThroughLast(){
return walkThroughLast(new ArrayList<>());
}
public List<ChainNode<T>> walkThroughLast(List<ChainNode<T>> list){
if( list == null){
list = new ArrayList<>();
}
list.add(this);
if( this.successor == null){
return list;
}else{
return this.successor.walkThroughLast(list);
}
}
}
package cnpc.core.common.utils;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.lang3.StringUtils;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.security.SecureRandom;
import java.util.Date;
import java.util.logging.Logger;
/**
* @author lixueyan
* @date 2023/5/19 0019 10:04
*/
public class AESUtil {
private static final String KEY_ALGORITHM = "AES";
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
/**
* 指定随机字符串(密码)生成密钥
*
* @param randomKey 加解密的密码
* @throws Exception
*/
public static byte[] getSecretKey(String randomKey) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGORITHM); //秘钥生成器,指定秘钥算法
//初始化此密钥生成器,指定AES的秘钥长度为128
if (StringUtils.isBlank(randomKey)) { //不指定密码
keyGenerator.init(128);
} else { //指定密码
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(randomKey.getBytes());
keyGenerator.init(128, random);
}
SecretKey secretKey = keyGenerator.generateKey(); //生成密钥
return secretKey.getEncoded();
}
/**
* 加密
*
* @param data 待加密数据
* @param key 密钥
* @return byte[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data, Key key) throws Exception {
return encrypt(data, key, DEFAULT_CIPHER_ALGORITHM);
}
/**
* 加密
*
* @param data 待加密数据
* @param key 二进制密钥
* @return byte[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
return encrypt(data, key, DEFAULT_CIPHER_ALGORITHM);
}
/**
* 加密
*
* @param data 待加密数据
* @param key 二进制密钥
* @param cipherAlgorithm 加密算法/工作模式/填充方式
* @return byte[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data, byte[] key, String cipherAlgorithm) throws Exception {
Key k = toKey(key);
return encrypt(data, k, cipherAlgorithm);
}
/**
* 加密
*
* @param data 待加密数据
* @param key 密钥
* @param cipherAlgorithm 加密算法/工作模式/填充方式
* @return byte[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data, Key key, String cipherAlgorithm) throws Exception {
Cipher cipher = Cipher.getInstance(cipherAlgorithm); //获取算法
cipher.init(Cipher.ENCRYPT_MODE, key); //设置加密模式,并指定秘钥
return cipher.doFinal(data); //加密数据
}
/**
* 解密
*
* @param data 待解密数据
* @param key 二进制密钥
* @return byte[] 解密数据
* @throws Exception
*/
public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
return decrypt(data, key, DEFAULT_CIPHER_ALGORITHM);
}
/**
* 解密
*
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密数据
* @throws Exception
*/
public static byte[] decrypt(byte[] data, Key key) throws Exception {
return decrypt(data, key, DEFAULT_CIPHER_ALGORITHM);
}
/**
* 解密
*
* @param data 待解密数据
* @param key 二进制密钥
* @param cipherAlgorithm 加密算法/工作模式/填充方式
* @return byte[] 解密数据
* @throws Exception
*/
public static byte[] decrypt(byte[] data, byte[] key, String cipherAlgorithm) throws Exception {
Key k = toKey(key);
return decrypt(data, k, cipherAlgorithm);
}
/**
* 解密
*
* @param data 待解密数据
* @param key 密钥
* @param cipherAlgorithm 加密算法/工作模式/填充方式
* @return byte[] 解密数据
* @throws Exception
*/
public static byte[] decrypt(byte[] data, Key key, String cipherAlgorithm) throws Exception {
Cipher cipher = Cipher.getInstance(cipherAlgorithm); //获取算法
cipher.init(Cipher.DECRYPT_MODE, key); //设置解密模式,并指定秘钥
return cipher.doFinal(data); //解密数据
}
/**
* 转换密钥
*
* @param secretKey 二进制密钥
* @return 密钥
*/
public static Key toKey(byte[] secretKey) {
return new SecretKeySpec(secretKey, KEY_ALGORITHM); //生成密钥
}
public static String encrypt(String data,String secret) {
String encryptDataHex = null;
try {
byte[] secretKey = getSecretKey(secret);
Key key = toKey(secretKey);
byte[] encryptData = encrypt(data.getBytes(), key);
encryptDataHex = Hex.encodeHexString(encryptData);
}catch (Exception e){
System.out.println("加密出现错误"+e.getMessage());
}
return encryptDataHex;
}
public static String decrypt(String data,String secret) {
try {
byte[] secretKey = getSecretKey(secret);
Key key = toKey(secretKey);
byte[] decryptData = decrypt(Hex.decodeHex(data.toCharArray()), key);
return new String(decryptData);
}catch (Exception e){
System.out.println("解密出现错误"+e.getMessage());
return null;
}
}
public static void main(String[] args) throws Exception {
String password = "123456"; //加解密的密码
String data = "123456"+new Date().getTime();
System.out.println("明文 :" + data);
String encryptDataHex = encrypt(data, password);
System.out.println("加密 : " + encryptDataHex);
String decryptData = decrypt(encryptDataHex,password);
System.out.println("解密 : " + new String(decryptData));
}
}
package cnpc.core.common.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* 转换工具类
*
* @author lixueyan
*/
public class ConvertUtils {
private static Logger logger = LoggerFactory.getLogger(ConvertUtils.class);
public static <T> T sourceToTarget(Object source, Class<T> target){
if(source == null){
return null;
}
T targetObject = null;
try {
targetObject = target.newInstance();
BeanUtils.copyProperties(source, targetObject);
} catch (Exception e) {
logger.error("convert error ", e);
}
return targetObject;
}
public static <T> List<T> sourceToTarget(Collection<?> sourceList, Class<T> target){
if(sourceList == null){
return null;
}
List targetList = new ArrayList<>(sourceList.size());
try {
for(Object source : sourceList){
T targetObject = target.newInstance();
BeanUtils.copyProperties(source, targetObject);
targetList.add(targetObject);
}
}catch (Exception e){
logger.error("convert error ", e);
}
return targetList;
}
}
package cnpc.core.common.utils;
import com.google.common.base.Strings;
import xstartup.base.util.XDateUtils;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;
import java.util.function.Function;
import java.util.regex.Pattern;
public class DateUtil {
private static final String HYPHEN = "-";
private static final String COLON = ":";
private static final Pattern DATETIMEPATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}");
private static final ThreadLocal<SimpleDateFormat> simpleDateFormat =
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
private static final ThreadLocal<SimpleDateFormat> simpleDateFormatWithMS =
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
private static final ThreadLocal<SimpleDateFormat> simpleDateFormatShort =
ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));
// private static final ThreadLocal<DateTimeFormatter> dateTimeFormatter =
// ThreadLocal.withInitial(()-> DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") );
// private static final ThreadLocal<DateTimeFormatter> dateTimeNoSymbolFormatter =
// ThreadLocal.withInitial(()-> DateTimeFormatter.ofPattern("yyyyMMddHHmmss") );
// private static final ThreadLocal<DateTimeFormatter> dateTimeShortFormatter =
// ThreadLocal.withInitial(()-> DateTimeFormatter.ofPattern("yyyy-MM-dd") );
// private static final ThreadLocal<DateTimeFormatter> dateTimeShortTimeFormatter =
// ThreadLocal.withInitial(()-> DateTimeFormatter.ofPattern("HH:mm:ss") );
public static SimpleDateFormat getSimpleDateFormat() {
return simpleDateFormat.get();
}
public static SimpleDateFormat getSimpleDateFormatWithMS() {
return simpleDateFormatWithMS.get();
}
public static SimpleDateFormat getSimpleDateFormatShort() {
return simpleDateFormatShort.get();
}
public static DateTimeFormatter getDateTimeFormatter() {
return FormatEnum.FORMAT_DATA_TIME.value;
}
public static DateTimeFormatter getDateTimeFormatterNoSymbol() {
return FormatEnum.FORMAT_DATA_TIME_NO_SYMBOL.value;
}
public static DateTimeFormatter getDateTimeFormatterDateOnly() {
return FormatEnum.FORMAT_DATE.value;
}
public static DateTimeFormatter getDateTimeFormatterTimeOnly() {
return FormatEnum.FORMAT_TIME.value;
}
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 时间格式 DateTimeFormatter (Java8) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
public enum FormatEnum {
/**
* 返回 DateTimeFormatter "yyyy-MM-dd HH:mm:ss" 时间格式
*/
FORMAT_DATA_TIME(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)),
/**
* 返回 DateTimeFormatter "yyyyMMddHHmmss"的时间格式
*/
FORMAT_DATA_TIME_NO_SYMBOL(DateTimeFormatter.ofPattern(DATETIME_FORMAT)),
/**
* 返回 DateTimeFormatter "yyyy-MM-dd"的时间格式
*/
FORMAT_DATE(DateTimeFormatter.ofPattern(DATE_FORMAT)),
/**
* 返回 DateTimeFormatter "HH:mm:ss"的时间格式
*/
FORMAT_TIME(DateTimeFormatter.ofPattern(TIME_FORMAT));
private DateTimeFormatter value;
FormatEnum(DateTimeFormatter format) {
this.value = format;
}
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 时间格式 DateTimeFormatter (Java8) ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 时间格式 字符串 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 年的时间格式
* <br/>
* 返回 "yyyy" 字符串
*/
public static final String YEAR_FORMAT = "yyyy";
/**
* 月的时间格式
* <br/>
* 返回 "MM" 字符串
*/
public static final String MONTH_FORMAT = "MM";
/**
* 日的时间格式
* <br/>
* 返回 "dd" 字符串
*/
public static final String DAY_FORMAT = "dd";
/**
* 时的时间格式
* <br/>
* 返回 "HH" 字符串
*/
public static final String HOUR_FORMAT = "HH";
/**
* 分的时间格式
* <br/>
* 返回 "mm" 字符串
*/
public static final String MINUTE_FORMAT = "mm";
/**
* 秒的时间格式
* <br/>
* 返回 "ss" 字符串
*/
public static final String SECOND_FORMAT = "ss";
/**
* <span color='red'>年-月-日</span>的时间格式
* <br/>
* 返回 "yyyy-MM-dd" 字符串
*/
public static final String DATE_FORMAT = YEAR_FORMAT + HYPHEN + MONTH_FORMAT + HYPHEN + DAY_FORMAT;
/**
* <span color='red'>时:分:秒</span>的时间格式
* <br/>
* 返回 "HH:mm:ss" 字符串
*/
public static final String TIME_FORMAT = HOUR_FORMAT + COLON + MINUTE_FORMAT + COLON + SECOND_FORMAT;
/**
* <span color='red'>年-月-日 时:分:秒</span>的时间格式
* <br/>
* 返回 "yyyy-MM-dd HH:mm:ss" 字符串
*/
public static final String DATE_TIME_FORMAT = DATE_FORMAT + " " + TIME_FORMAT;
/**
* <span color='red'>年月日时分秒</span>的时间格式(无符号)
* <br/>
* 返回 "yyyyMMddHHmmss" 字符串
*/
public static final String DATETIME_FORMAT = YEAR_FORMAT + MONTH_FORMAT + DAY_FORMAT + HOUR_FORMAT + MINUTE_FORMAT + SECOND_FORMAT;
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 时间格式 字符串 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 时间戳 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 获取秒级时间戳
*/
public static Long epochSecond() {
return localDateTime().toEpochSecond(ZoneOffset.of("+8"));
}
/**
* 获取毫秒级时间戳
*/
public static Long epochMilli() {
return localDateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 时间戳 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 当前时间相关 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 获取当前详细时间,like 2018-08-27 17:20:06
*/
public static String dateTime() {
return localDateTime().format(FormatEnum.FORMAT_DATA_TIME.value);
}
/**
* 获取当前详细时间,like 20180827172006
*/
public static String dateTimeNoSymbol() {
return localDateTime().format(FormatEnum.FORMAT_DATA_TIME_NO_SYMBOL.value);
}
/**
* 获取当前日期,like 2018-08-27
*/
public static String date() {
return localDate() + "";
}
/**
* 获取当前时间,like 17:20:06
*/
public static String time() {
return localTime().format(FormatEnum.FORMAT_TIME.value);
}
/**
* 获取当前年
*/
public static Integer year() {
return localDate().getYear();
}
/**
* 获取当前月
*/
public static int month() {
return localDate().getMonthValue();
}
/**
* 获取当前年中的日
*/
public static Integer dayOfYear() {
return localDate().getDayOfYear();
}
/**
* 获取当前月中的日
*/
public static Integer dayOfMonth() {
return localDate().getDayOfMonth();
}
/**
* 获取当前星期中的日
*/
public static Integer dayOfWeek() {
return localDate().getDayOfWeek().getValue();
}
/**
* 获取当前小时
*/
public static Integer hour() {
return localTime().getHour();
}
/**
* 获取当前分钟
*/
public static Integer minute() {
return localTime().getMinute();
}
/**
* 获取当前秒
*/
public static Integer second() {
return localTime().getSecond();
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 当前时间相关 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 未来、历史时间相关 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 获取当前年的 前几年 的日期
* <p>
*
* @param years 前几年 正整数
* @param formatEnum 格式
* @return 当前年的 前几年 的 对应 格式 日期
*/
public static String minusYears(Long years, FormatEnum formatEnum) {
return minusOrPlusYears(-years, formatEnum);
}
/**
* 获取当前年的 后几年 的日期
* <p>
*
* @param years 后几年 正整数
* @param formatEnum 格式
* @return 当前年的 后几年 的 对应 格式 日期
*/
public static String plusYears(Long years, FormatEnum formatEnum) {
return minusOrPlusYears(years, formatEnum);
}
/**
* 获取当前月的 前几月 日期
*
* @param months 前几月 正整数
* @param formatEnum 格式
* @return 当前月的 前几月 的 对应 格式 日期
*/
public static String minusMonths(Long months, FormatEnum formatEnum) {
return minusOrPlusMonths(-months, formatEnum);
}
/**
* 获取当前月的 后几月 的日期
*
* @param months 后几月 正整数
* @param formatEnum 格式
* @return 当前月的 后几月 的 对应 格式 日期
*/
public static String plusMonths(Long months, FormatEnum formatEnum) {
return minusOrPlusMonths(months, formatEnum);
}
/**
* 获取当前日的 前几日 的日期
*
* @param days 前几日 正整数
* @param formatEnum 格式
* @return 当前日的 前几日 的 对应 格式 日期
*/
public static String minusDays(Long days, FormatEnum formatEnum) {
return minusOrPlusDays(-days, formatEnum);
}
/**
* 获取当前日的 后几日 的日期
*
* @param days 后几日 正整数
* @param formatEnum 格式
* @return 当前日的 后几日 的 对应 格式 日期
*/
public static String plusDays(Long days, FormatEnum formatEnum) {
return minusOrPlusDays(days, formatEnum);
}
/**
* 获取当前星期的 前几星期 的日期
*
* @param weeks 前几星期 正整数
* @param formatEnum 格式
* @return 当前星期的 前几星期 的 对应 格式 日期
*/
public static String minusWeeks(Long weeks, FormatEnum formatEnum) {
return minusOrPlusWeeks(-weeks, formatEnum);
}
/**
* 获取当前星期的 后几星期 的日期
*
* @param weeks 后几星期 正整数
* @param formatEnum 格式
* @return 当前星期的 后几星期 的 对应 格式 日期
*/
public static String plusWeeks(Long weeks, FormatEnum formatEnum) {
return minusOrPlusWeeks(weeks, formatEnum);
}
/**
* 获取当前小时的 前几小时 的日期
*
* @param hours 前几小时 正整数
* @param formatEnum 格式
* @return 当前小时的 前几小时 的 对应 格式 日期
*/
public static String minusHours(Long hours, FormatEnum formatEnum) {
return minusOrPlusHours(-hours, formatEnum);
}
/**
* 获取当前小时的 后几小时 的日期
*
* @param hours 后几小时 正整数
* @param formatEnum 格式
* @return 当前小时的 后几小时 的 对应 格式 日期
*/
public static String plusHours(Long hours, FormatEnum formatEnum) {
return minusOrPlusHours(hours, formatEnum);
}
/**
* 获取当前分钟的 前几分钟 的日期
*
* @param minutes 前几分钟 正整数
* @param formatEnum 格式
* @return 当前分钟的 前几分钟 的 对应 格式 日期
*/
public static String minusMinutes(Long minutes, FormatEnum formatEnum) {
return minusOrPlusMinutes(-minutes, formatEnum);
}
/**
* 获取当前分钟的 后几分钟 的日期
*
* @param minutes 后几分钟 正整数
* @param formatEnum 格式
* @return 当前分钟的 后几分钟 的 对应 格式 日期
*/
public static String plusMinutes(Long minutes, FormatEnum formatEnum) {
return minusOrPlusMinutes(minutes, formatEnum);
}
/**
* 获取当前秒的 前几秒 的日期
*
* @param seconds 前几秒 正整数
* @param formatEnum 格式
* @return 当前秒的 前几秒 的 对应 格式 日期
*/
public static String minusSeconds(Long seconds, FormatEnum formatEnum) {
return minusOrPlusSeconds(-seconds, formatEnum);
}
/**
* 获取当前秒的 前几秒/后几秒 的日期
*
* @param seconds 后几秒 正整数
* @param formatEnum 格式
* @return 当前秒的 后几秒 的 对应 格式 日期
*/
public static String plusSeconds(Long seconds, FormatEnum formatEnum) {
return minusOrPlusSeconds(seconds, formatEnum);
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 未来、历史时间相关 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
public static String toDateStr(Date date ){
return getSimpleDateFormatShort().format(date);
}
public static String toDateTimeStr(Date date ){
return getSimpleDateFormat().format(date);
}
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 时间转换相关 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* Date类型转LocalDateTime
* <p>
*
* @param date date类型时间
* @return LocalDateTime
*/
public static LocalDateTime toLocalDateTime(Date date) {
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
/**
* Date类型转LocalDate
* <p>
*
* @param date date类型时间
* @return LocalDate
*/
public static LocalDate toLocalDate(Date date) {
return toLocalDateTime(date).toLocalDate();
}
/**
* Date类型转LocalTime
* <p>
*
* @param date date类型时间
* @return LocalTime
*/
public static LocalTime toLocalTime(Date date) {
return toLocalDateTime(date).toLocalTime();
}
/**
* LocalDateTime 类型转 Date
*
* @param localDateTime localDateTime
* @return 转换后的Date类型日期
*/
public static Date toDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* LocalDate类型转Date
*
* @param localDate localDate
* @return 转换后的Date类型日期
*/
public static Date toDate(LocalDate localDate) {
return toDate(localDate.atStartOfDay());
}
/**
* LocalTime类型转Date
*
* @param localTime localTime
* @return 转换后的Date类型日期
*/
public static Date toDate(LocalTime localTime) {
return toDate(LocalDateTime.of(localDate(), localTime));
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 时间转换相关 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 时间间隔相关 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 获取 endDate-startDate 时间间隔天数
* <br>创建人: leigq
* <br>创建时间: 2018-11-07 09:55
* <br>
*
* @param startDate 开始时间
* @param endDate 结束时间
* @return 时间间隔天数
*/
public static Long daysInterval(LocalDate startDate, LocalDate endDate) {
return endDate.toEpochDay() - startDate.toEpochDay();
}
/**
* 获取 endDate-startDate 时间间隔天数
* <br>创建人: leigq
* <br>创建时间: 2018-11-07 09:55
* <br>
*
* @param startDate 开始时间
* @param endDate 结束时间
* @return 时间间隔天数
*/
public static Long daysInterval(String startDate, String endDate) {
return daysInterval(Objects.requireNonNull(parseLocalDateTime(endDate)).toLocalDate(),//LocalDateTime.parse(endDate, FormatEnum.FORMAT_DATA_TIME.value)
Objects.requireNonNull(parseLocalDateTime(startDate)).toLocalDate());
}
/**
* 获取 endDate-startDate 时间间隔天数
* <br>创建人: leigq
* <br>创建时间: 2018-11-07 09:55
* <br>
*
* @param startDate 开始时间
* @param endDate 结束时间
* @return 时间间隔天数
*/
public static Long daysInterval(LocalDateTime startDate, LocalDateTime endDate) {
return daysInterval(startDate.toLocalDate(), endDate.toLocalDate());
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 时间间隔相关 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓只允许此类调用↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
/**
* 获取 当前年 的前几年/后几年的日期
* <p>
*
* @param yearsToAddOrSubtract 后几年传正整数,前几年传负数
* @param formatEnum 格式
* @return 当前年的前几年/后几年的对应 格式 日期
*/
private static String minusOrPlusYears(Long yearsToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusYears(yearsToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取 当前月 的前几月/后几月的日期
*
* @param monthsToAddOrSubtract 后几月传正整数,前几月传负数
* @param formatEnum 格式
* @return 当前月的前几月/后几月的对应 格式 日期
*/
private static String minusOrPlusMonths(Long monthsToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusMonths(monthsToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取 当前日 的前几日/后几日的日期
*
* @param daysToAddOrSubtract 后几日传正整数,前几日传负数
* @param formatEnum 格式
* @return 当前日的前几日/后几日的 对应 格式 日期
*/
private static String minusOrPlusDays(Long daysToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusDays(daysToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取当前星期的前几星期/后几星期的日期
*
* @param weeksToAddOrSubtract 后几星期传正整数,前几星期传负数
* @param formatEnum 格式
* @return 当前星期的前几星期/后几星期的 对应 格式 日期
*/
private static String minusOrPlusWeeks(Long weeksToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusWeeks(weeksToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取当前小时的前几小时/后几小时的日期
*
* @param hoursToAddOrSubtract 后几小时传正整数,前几小时传负数
* @param formatEnum 格式
* @return 当前小时的前几小时/后几小时的 对应 格式 日期
*/
private static String minusOrPlusHours(Long hoursToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusHours(hoursToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取当前分钟的前几分钟/后几分钟的日期
*
* @param minutesToAddOrSubtract 后几分钟传正整数,前几分钟传负数
* @param formatEnum 格式
* @return 当前分钟的前几分钟/后几分钟的 对应 格式 日期
*/
private static String minusOrPlusMinutes(Long minutesToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusMinutes(minutesToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取当前秒的前几秒/后几秒的日期
*
* @param secondsToAddOrSubtract 后几秒传正整数,前几秒传负数
* @param formatEnum 格式
* @return 当前秒的前几秒/后几秒的 对应 格式 日期
*/
private static String minusOrPlusSeconds(Long secondsToAddOrSubtract, FormatEnum formatEnum) {
return localDateTime().plusSeconds(secondsToAddOrSubtract).format(formatEnum.value);
}
/**
* 获取 LocalDate
*/
private static LocalDate localDate() {
return localDateTime().toLocalDate();
}
/**
* 获取 LocalTime
*/
private static LocalTime localTime() {
return localDateTime().toLocalTime();
}
/**
* 获取 LocalDateTime
*/
private static LocalDateTime localDateTime() {
return LocalDateTime.now();
}
/**
* 返回unix时间戳 (1970年至今的秒数)
*
* @return
*/
public static long getUnixStamp() {
return System.currentTimeMillis() / 1000;
}
/**
* 得到昨天的日期
*
* @return
*/
public static String getYestoryDate() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String yestoday = getSimpleDateFormat().format(calendar.getTime());
return yestoday;
}
public static String getPreDay(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -days);
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String yestoday = getSimpleDateFormat().format(calendar.getTime());
return yestoday;
}
public static String getCurrentDateTime(){
return getSimpleDateFormat().format(new Date());
}
public static String getCurrentDateTimeWithMs(){
return getSimpleDateFormatWithMS().format(new Date());
}
/**
* 得到今天的日期
*
* @return
*/
public static String getTodayDate() {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = getSimpleDateFormatShort().format(new Date());
return date;
}
/**
* 时间戳转化为时间格式
*
* @param timeStamp
* @return
*/
public static String timeStampToStr(long timeStamp) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = getSimpleDateFormat().format(timeStamp * 1000);
return date;
}
/**
* 时间戳转化为时间格式
*
* @param datetime
* @return
*/
public static String datetimeToStr(long datetime) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = getSimpleDateFormat().format(datetime);
return date;
}
/**
* 得到日期 yyyy-MM-dd
*
* @param timeStamp 时间戳
* @return
*/
public static String timeStampToDate(long timeStamp) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = getSimpleDateFormat().format(timeStamp * 1000);
return date;
}
/**
* 得到时间 HH:mm:ss
*
* @param timeStamp 时间戳
* @return
*/
public static String getTimeOfTimeStamp(long timeStamp) {
String time = null;
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = getSimpleDateFormat().format(timeStamp * 1000);
String[] split = date.split("\\s");
if (split.length > 1) {
time = split[1];
}
return time;
}
/**
* 将一个时间戳转换成提示性时间字符串,如刚刚,1秒前
*
* @param timeStamp
* @return
*/
public static String convertTimeToFormat(long timeStamp) {
long curTime = System.currentTimeMillis() / (long) 1000;
long time = curTime - timeStamp;
if (time < 60 && time >= 0) {
return "刚刚";
} else if (time >= 60 && time < 3600) {
return time / 60 + "分钟前";
} else if (time >= 3600 && time < 3600 * 24) {
return time / 3600 + "小时前";
} else if (time >= 3600 * 24 && time < 3600 * 24 * 30) {
return time / 3600 / 24 + "天前";
} else if (time >= 3600 * 24 * 30 && time < 3600 * 24 * 30 * 12) {
return time / 3600 / 24 / 30 + "个月前";
} else if (time >= 3600 * 24 * 30 * 12) {
return time / 3600 / 24 / 30 / 12 + "年前";
} else {
return "刚刚";
}
}
/**
* 将一个时间戳转换成提示性时间字符串,(多少分钟)
*
* @param timeStamp
* @return
*/
public static String timeStampToFormat(long timeStamp) {
long curTime = System.currentTimeMillis() / (long) 1000;
long time = curTime - timeStamp;
return time / 60 + "";
}
public static LocalDateTime parseLocalDateTime(String dateTime) {
if (Strings.isNullOrEmpty(dateTime)) {
return null;
}
if (DATETIMEPATTERN.matcher(dateTime).matches()) {
return LocalDateTime.parse(dateTime);
}
boolean hasTime = dateTime.contains(":");
String[] items = dateTime.trim().replace(" ", "-").replace(":", "-").split("-");
if (items.length == 6) {
return LocalDateTime.of(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2]),
Integer.parseInt(items[3]), Integer.parseInt(items[4]), Integer.parseInt(items[5]));
} else if (items.length == 3 && !hasTime) {
return LocalDateTime.of(Integer.parseInt(items[0]), Integer.parseInt(items[1]), Integer.parseInt(items[2]), 0, 0, 0);
} else {
return null;
}
}
public static Integer getWeekNumber(Date date) {
synchronized (DateUtil.class){
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
calendar.setMinimalDaysInFirstWeek(4);//可以不用设置
calendar.setTimeInMillis(date.getTime());//获得当前的时间戳
//int weekYear = calendar.get(Calendar.YEAR);//获得当前的年
return calendar.get(Calendar.WEEK_OF_YEAR);//获得当前日期属于今年的第几周
}
}
public static Integer getWeekNumber(String strDate) throws ParseException {
return getWeekNumber(getSimpleDateFormatShort().parse(strDate));
}
public static Integer getQuarterNumber(Date dt) {
if( dt.getMonth() >=1 && dt.getMonth() <=3){
return 1;
}else if( dt.getMonth() >=4 && dt.getMonth() <=6){
return 2;
}else if( dt.getMonth() >=7 && dt.getMonth() <= 9){
return 3;
}else{
return 4;
}
}
public static String calcTimeSpan(String begin, String end) {
if(Strings.isNullOrEmpty(begin) || Strings.isNullOrEmpty(end)){
return "";
}
try{
long start = getSimpleDateFormat().parse(begin).getTime();
long stop = getSimpleDateFormat().parse(end).getTime();
return String.format("%.3fs", (stop - start) / 1000.0);
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
public static String calcTimeSpanWithMs(String begin, String end) {
if(Strings.isNullOrEmpty(begin) || Strings.isNullOrEmpty(end)){
return "";
}
try{
long start = getSimpleDateFormatWithMS().parse(begin).getTime();
long stop = getSimpleDateFormatWithMS().parse(end).getTime();
return String.format("%.3fs", (stop - start) / 1000.0);
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
public static void main(String[] args) {
System.out.println(getWeekNumber(new Date()));
LocalDateTime dt = parseLocalDateTime("2000-1-1 1:1:1");
System.out.println(dt);
dt = parseLocalDateTime("2000-1-1");
System.out.println(dt);
dt = parseLocalDateTime("1:1:1");
System.out.println(dt);
try {
String date1String = "2015-12-31";
String date2String = "2021-01-01";
SimpleDateFormat sdf = getSimpleDateFormatShort();// new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(date1String);
Date date2 = sdf.parse(date2String);
System.out.println("day of weak:" + getWeekNumber(date2));
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date1);
int week1 = calendar.get(Calendar.WEEK_OF_YEAR);
System.out.println(date1String + " week of year:" + week1);
calendar.setTime(date2);
int week2 = calendar.get(Calendar.WEEK_OF_YEAR);
System.out.println(date2String + " week of year:" + week2);
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 获取指定日期最后一天日期
*
* @param date 当前日期
* @return
*/
public static Date getThisYearLastDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int currentYear = cal.get(Calendar.YEAR);
cal.clear();
cal.set(Calendar.YEAR, currentYear);
cal.roll(Calendar.DAY_OF_YEAR, -1);
Date sunDate = new Date(cal.getTimeInMillis());
return sunDate;
}
/* 获取指定日期第一天日期
* @return
*/
public static Date getThisYearFirstDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_YEAR, 1);
Date sunDate = new Date(cal.getTimeInMillis());
return sunDate;
}
//根据日期获取该天所在周的开始与结束日期(周跨年周,只计算本年内那部分天数)
public static String[] getStartAndEndDayByDate(Date date){
SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");
String format = sm.format(date);
String[] dateZone = new String[3];
Calendar cal = getCalendarByDateStr(date);
int year = XDateUtils.getYear(date);
Function<Integer, String> add0 = (i -> i < 10 ? "0" + i : String.valueOf(i));//补0
dateZone[0] = cal.get(Calendar.YEAR) +"-"+ add0.apply(cal.get(Calendar.MONTH) + 1) + "-" + add0.apply(cal.get(Calendar.DAY_OF_MONTH));
if(cal.get(Calendar.YEAR) < year)dateZone[0] = year + "-01-01";
cal.add(Calendar.DATE, 6);
dateZone[1] = cal.get(Calendar.YEAR) +"-"+ add0.apply(cal.get(Calendar.MONTH) + 1) + "-" + add0.apply(cal.get(Calendar.DAY_OF_MONTH));
if(cal.get(Calendar.YEAR) > year)dateZone[1] = year + "-12-31";
dateZone[2] = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));
return dateZone;
}
private static Calendar getCalendarByDateStr(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
//判断要计算的日期是否是周日,如果是,则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
if(1 == dayWeek) cal.add(Calendar.DAY_OF_MONTH, -1);
cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
return cal;
}
public static Date asDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
}
public static Date asDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
public static LocalDate asLocalDate(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
}
public static LocalDateTime asLocalDateTime(Date date) {
return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
}
/**
* 秒 转 时分
* @param second
* @return
*/
public static String secondToTime(Long second) {
if (second == null || second < 0) {
return "00:00";
}
long h = second / 3600;
long m = (second % 3600) / 60;
String str = "";
if (h > 0) {
str = (h < 10 ? ("0" + h) : h) + ":";
}
str += (m < 10 ? ("0" + m) : m) + ":";
return str;
}
public static Date getBeginDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return getDayStartTime(calendar.getTime());
}
public static Date getEndDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
return getDayEndTime(calendar.getTime());
}
public static Date getBeginDayOfWeek(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek);
return getDayStartTime(cal.getTime());
}
public static Date getEndDayOfWeek(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(getBeginDayOfWeek(date));
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
//获取某个日期的开始时间
public static Timestamp getDayStartTime(Date d) {
Calendar calendar = Calendar.getInstance();
if(null != d) calendar.setTime(d);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
return new Timestamp(calendar.getTimeInMillis());
}
//获取某个日期的结束时间
public static Timestamp getDayEndTime(Date d) {
Calendar calendar = Calendar.getInstance();
if(null != d) calendar.setTime(d);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
calendar.set(Calendar.MILLISECOND, 999);
return new Timestamp(calendar.getTimeInMillis());
}
}
package cnpc.core.common.utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.InputStreamEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
public class HttpUtil {
private static final Log logger = LogFactory.getLog(HttpUtil.class);
public static String charset = "utf-8";
public static String requestPost(String url, List<NameValuePair> params) throws ClientProtocolException, IOException {
CloseableHttpClient httpclient = HttpClientBuilder.create().build();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
CloseableHttpResponse response = httpclient.execute(httppost);
System.out.println(response.toString());
HttpEntity entity = response.getEntity();
String jsonStr = EntityUtils.toString(entity, "utf-8");
System.out.println(jsonStr);
httppost.releaseConnection();
return jsonStr;
}
public static String sendGet(String url, String param, Map<String, String> reqHead) {
return sendGet(url, param, reqHead, charset);
}
public static String sendGet(String url, String param, Map<String, String> reqHead, String charset) {
StringBuffer result = new StringBuffer();
BufferedReader in = null;
try {
InputStream inputStream = HttpUtil.sendGetInputStream(url, param, reqHead);
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(inputStream, charset));
String line;
while ((line = in.readLine()) != null) {
line = line.trim();
result.append(line);
}
} catch (Exception e) {
logger.error("发送GET请求出现异常!" + url + param, e);
} finally {
if(in!=null) {
try {
in.close();
} catch (IOException e) {
logger.error(e, e);
}
}
}
return result.toString();
}
public static InputStream sendGetInputStream(String url, String param, Map<String, String> reqHead) {
StringBuffer result = new StringBuffer();
InputStream in = null;
try {
if (param != null)
url = url + "?" + param;
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
if (reqHead != null) {
for (Map.Entry<String, String> entry : reqHead.entrySet()) {
if (StringUtils.isNotBlank(entry.getValue())) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}
}
}
// 建立实际的连接
try {
connection.connect();
} catch (Exception e) {
connection.connect();
}
// 定义 BufferedReader输入流来读取URL的响应
in = connection.getInputStream();
} catch (Exception e) {
logger.error("发送GET请求出现异常!" + url + param, e);
} finally {
}
return in;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
return sendPost(url, param, charset);
}
public static String sendPost(String url, String param, String charset) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Referer", url);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
logger.error("发送POST请求出现异常!" + url + ",param:" + param, e);
}
// 使用finally块来关闭输出流、输入流
finally {
if(in!=null) {
try {
in.close();
} catch (IOException e) {
logger.error(e, e);
}
}
if(out!=null) {
out.close();
}
}
return result;
}
public static String doPost(String url, String content, String contentType
, int connTimeOut, int readTimeOut) throws Exception {
CloseableHttpClient httpClient = null;
CloseableHttpResponse httpResponse = null;
String result = "";
// 创建httpClient实例
httpClient = HttpClients.createDefault();
// 创建httpPost远程连接实例
HttpPost httpPost = new HttpPost(url);
// 配置请求参数实例
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(connTimeOut)// 设置连接主机服务超时时间
.setConnectionRequestTimeout(connTimeOut)// 设置连接请求超时时间
.setSocketTimeout(readTimeOut)// 设置读取数据连接超时时间
.build();
// 为httpPost实例设置配置
httpPost.setConfig(requestConfig);
// 设置请求头
httpPost.addHeader("Content-Type", contentType);
// 封装post请求参数
if (null != content) {
// 为httpPost设置封装好的请求参数
byte[] b = content.getBytes(StandardCharsets.UTF_8);
InputStream is = new ByteArrayInputStream(b, 0, b.length);
httpPost.setEntity(new InputStreamEntity(is, b.length
, ContentType.create(contentType, StandardCharsets.UTF_8)));
}
try {
// httpClient对象执行post请求,并返回响应参数对象
httpResponse = httpClient.execute(httpPost);
// 从响应对象中获取响应内容
HttpEntity entity = httpResponse.getEntity();
result = EntityUtils.toString(entity);
if (httpResponse.getStatusLine().getStatusCode() != 200) {
throw new Exception(result);
}
} catch (ClientProtocolException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
// 关闭资源
if (null != httpResponse) {
try {
httpResponse.close();
} catch (IOException e) {
throw e;
}
}
if (null != httpClient) {
try {
httpClient.close();
} catch (IOException e) {
throw e;
}
}
}
return result;
}
/**
* 发送get请求
* @param url 请求地址,返回码不为200时,返回错误信息
* @return 请求结果
*/
public static String doGet(String url) throws Exception {
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
String responseResult = "";
int code;
// 打开连接
URL requestUrl = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection) requestUrl.openConnection();
// 加入数据
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Accept", "application/json");
httpConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
httpConn.setRequestProperty("Accept-Charset", "utf-8");
httpConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
code = httpConn.getResponseCode();
System.out.println(code);
if (code == HttpsURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
responseResult = buffer.toString();
//responseResult = responseResult.substring(1, responseResult.lastIndexOf('"'));
responseResult = responseResult.replaceAll("\\\\", "");
return responseResult;
} else {
InputStream is = httpConn.getErrorStream(); //通过getErrorStream了解错误的详情,因为错误详情也以XML格式返回,因此也可以用JDOM来获取。
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader in = new BufferedReader(isr);
String inputLine;
String responseErrorResult = null;
while ((inputLine = in.readLine()) != null) {
responseErrorResult = inputLine;
}
in.close();
logger.info("Http返回状态码为非200:" + responseErrorResult);
return responseErrorResult;
}
}
}
package cnpc.core.common.utils;
/**
* @Description 雪花算法
*
*/
public class IdWorker {
private final long twepoch = 1288834974657L;
private final long workerIdBits = 5L;
private final long datacenterIdBits = 5L;
private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits);
private final long sequenceBits = 12L;
private final long workerIdShift = sequenceBits;
private final long datacenterIdShift = sequenceBits + workerIdBits;
private final long timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
private final long sequenceMask = -1L ^ (-1L << sequenceBits);
private long workerId;
private long datacenterId;
private long sequence = 0L;
private long lastTimestamp = -1L;
public IdWorker(long workerId, long datacenterId) {
if (workerId > maxWorkerId || workerId < 0) {
throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
}
if (datacenterId > maxDatacenterId || datacenterId < 0) {
throw new IllegalArgumentException(String.format("datacenter Id can't be greater than %d or less than 0", maxDatacenterId));
}
this.workerId = workerId;
this.datacenterId = datacenterId;
}
/**
* 获得下一个ID (该方法是线程安全的)
* @return SnowflakeId
*/
public synchronized long nextId() {
long timestamp = timeGen();
//如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
if (timestamp < lastTimestamp) {
throw new RuntimeException(
String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
}
//如果是同一时间生成的,则进行毫秒内序列
if (lastTimestamp == timestamp) {
//如果毫秒相同,则从0递增生成序列号
sequence = (sequence + 1) & sequenceMask;
//毫秒内序列溢出
if (sequence == 0) {
//阻塞到下一个毫秒,获得新的时间戳
timestamp = tilNextMillis(lastTimestamp);
}
}
//时间戳改变,毫秒内序列重置
else {
sequence = 0L;
}
//上次生成ID的时间截
lastTimestamp = timestamp;
//移位并通过或运算拼到一起组成64位的ID
return ((timestamp - twepoch) << timestampLeftShift) //
| (workerId << workerIdShift) //
| sequence;
}
protected long tilNextMillis(long lastTimestamp) {
long timestamp = timeGen();
while (timestamp <= lastTimestamp) {
timestamp = timeGen();
}
return timestamp;
}
protected long timeGen() {
return System.currentTimeMillis();
}
public static void main(String[] args) {
IdWorker idWorker = new IdWorker(0, 0);
for (int i = 0; i < 100; i++) {
long id = idWorker.nextId();
System.out.println(id);
}
}
}
package cnpc.core.common.utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import java.util.List;
public class ImportExcelUtils {
/**
* 判断Excel当前行是否为空
* @param row
* @return
*/
public static boolean isRowEmpty(Row row){
for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
Cell cell = row.getCell(c);
if (cell != null && cell.getCellType() != CellType.BLANK)
return false;
}
return true;
}
/**
* 数据非空校验
* 规则:titles 中 含有 * 的 会进行非空校验
* @param row
* @param titles
* @return
*/
public static String checkData(Row row, List<String> titles){
DataFormatter formatter = new DataFormatter();
for (int i = 0; i < titles.size(); i++) {
Cell cell = row.getCell(i);
if(titles.get(i).startsWith("*") && StringUtils.isBlank(formatter.formatCellValue(cell))){
String msg = String.format("第%s行 %s 不能为空",(i+1),titles.get(i).replace("*",""));
return msg;
}
}
return null;
}
}
package cnpc.core.common.utils;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
/**
* IP地址
*
* @author lixueyan
*/
public class IpUtils {
private static Logger logger = LoggerFactory.getLogger(IpUtils.class);
/**
* 获取IP地址
* <p>
* 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
* 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
*/
public static String getIpAddr(HttpServletRequest request) {
String unknown = "unknown";
String ip = null;
try {
ip = request.getHeader("x-forwarded-for");
if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
} catch (Exception e) {
logger.error("IPUtils ERROR ", e);
}
return ip;
}
private volatile static String ips;
public synchronized static String getHostIPs() {
return getHostIPs(false);
}
public static String getHostIPs(boolean refresh) {
if(!refresh && !Strings.isNullOrEmpty(ips)){
return ips;
}
List<String> list = new ArrayList<String>();
try {
Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface nint = en.nextElement();
if (nint.isLoopback()) {
continue;
}
if (nint.isPointToPoint()) {
continue;
}
if (nint.isVirtual()) {
continue;
}
if(!nint.isUp()){
continue;
}
List<InterfaceAddress> interfaceAddresses = nint.getInterfaceAddresses();
if (interfaceAddresses == null) {
continue;
}
interfaceAddresses.forEach(item -> {
String addr = item.getAddress().getHostAddress();
if (!Strings.isNullOrEmpty(addr)) {
list.add(addr.trim());
}
});
}
} catch (java.net.SocketException e) {
// fine, let's take is as signal of not having any interfaces
}
list.sort((x, y) -> {
return x.compareTo(y);
});
ips = Joiner.on(",").join(list);
return ips;
}
}
package cnpc.core.common.utils;
import org.apache.commons.lang3.StringUtils;
/**
* @author lixueyan
* @date 2023/1/10 0010 16:45
*/
public class JsonUtil {
/**
* json字符串特殊字符处理
* @param jsonStr
* @return
*/
public static String string2Json(String jsonStr) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < jsonStr.length(); i++) {
char c = jsonStr.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
public static String escapeExprSpecialWord(String keyword) {
if (StringUtils.isNotBlank(keyword)) {
String[] fbsArr = {"\\", "$", "(", ")", "*", "+", "?", "'", "^", "|","\b","\t","\f","\n","\r"};
for (String key : fbsArr) {
if (keyword.contains(key)) {
keyword = keyword.replace(key, "\\" + key);
}
}
}
return keyword;
}
}
package cnpc.core.common.utils;
import java.security.MessageDigest;
/**
* @author lixueyan
* @date 2022/11/11 0011 16:11
*/
public class MD5Util {
private static byte[] md5(String s) {
MessageDigest algorithm;
try {
algorithm = MessageDigest.getInstance("MD5");
algorithm.reset();
algorithm.update(s.getBytes("UTF-8"));
byte[] messageDigest = algorithm.digest();
return messageDigest;
} catch (Exception e) {
System.out.println("MD5 Error..."+e.getMessage());
}
return null;
}
private static final String toHex(byte hash[]) {
if (hash == null) {
return null;
}
StringBuffer buf = new StringBuffer(hash.length * 2);
int i;
for (i = 0; i < hash.length; i++) {
if ((hash[i] & 0xff) < 0x10) {
buf.append("0");
}
buf.append(Long.toString(hash[i] & 0xff, 16));
}
return buf.toString();
}
public static String hash(String s) {
try {
return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8");
} catch (Exception e) {
System.out.println("not supported charset..."+e.getMessage());
return s;
}
}
/**
* 对密码按照用户名,密码,盐进行加密
* @param username 用户名
* @param password 密码
* @param salt 盐
* @return
*/
public static String encryptPassword(String username, String password, String salt) {
return MD5Util.hash(username + password + salt);
}
/**
* 对密码按照密码,盐进行加密
* @param password 密码
* @param salt 盐
* @return
*/
public static String encryptPassword(String password, String salt) {
return MD5Util.hash(password + salt);
}
/**
* 对密码按照密码,盐进行加密
* @param password 密码
* @return
*/
public static String encryptPassword(String password) {
return MD5Util.hash(password);
}
}
package cnpc.core.common.utils;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import xstartup.base.util.XDateUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author lixueyan
* @date 2022/8/9 0009 15:38
*/
public class MapUtil {
private static Map<Class, List<Method>> classMethodMap = new ConcurrentHashMap<Class, List<Method>>();
private static Map<Class<?>, Map<String, Method>> getMethods = new HashMap<Class<?>, Map<String, Method>>();
public static Map<String, Object> objectToMapObject(Object bean) {
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Method> fields = recursiveGetMethodMap(bean);
for (String fieldName : fields.keySet()) {
Method method = fields.get(fieldName);
if (method == null) continue;
JsonIgnore jsonIgnore = method.getAnnotation(JsonIgnore.class);
if (jsonIgnore != null)
continue;
Object value = invokeMethod(bean, method);
Class<?> returnType = method.getReturnType();
if(returnType!=null && returnType==Date.class && value!=null){
map.put(fieldName, XDateUtils.getDateTimeString((Date) value));
}else{
map.put(fieldName, value);
}
}
return map;
}
public static Map<String, Object> objectToMapNotContainNull(Object bean) {
Map<String, Object> map = objectToMapObject(bean);
Map<String, Object> mapResult = new HashMap<String, Object>();
for (String key : map.keySet()) {
if (map.get(key) != null) {
mapResult.put(key, map.get(key));
}
}
return mapResult;
}
private static Map<String, Method> recursiveGetMethodMap(Object obj) {
return recursiveGetMethodMap(obj.getClass());
}
private static Object invokeMethod(Object obj, Method method, Object... args) {
if (method == null)
return null;
try {
return method.invoke(obj, args);
} catch (Exception e) {
}
return null;
}
private static Map<String, Method> recursiveGetMethodMap(Class<?> _class) {
Map<String, Method> methodMap = getMethods.get(_class);
if (methodMap == null) {
synchronized (getMethods) {
if ((methodMap = getMethods.get(_class)) == null) {
methodMap = new HashMap<String, Method>();
List<Method> methodList = getDeclaredMethods(_class);
for (Method method : methodList) {
String methodName = method.getName();
int modifiers = method.getModifiers();
if (!Modifier.isPublic(modifiers))
continue;
if (Modifier.isStatic(modifiers))
continue;
if (method.getParameterCount() != 0)
continue;
if (method.getDeclaringClass() == Object.class)
continue;
if (methodName.startsWith("get") && methodName.length() > 3) {
String propertyName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4, methodName.length());
methodMap.put(propertyName, method);
}
}
getMethods.put(_class, methodMap);
}
}
}
return methodMap;
}
private static List<Method> getDeclaredMethods(Class<?> clazz) {
if (classMethodMap.containsKey(clazz))
return classMethodMap.get(clazz);
synchronized (classMethodMap) {
if (classMethodMap.containsKey(clazz))
return classMethodMap.get(clazz);
List<Method> methodList = Arrays.asList(clazz.getMethods());
classMethodMap.put(clazz, methodList);
return methodList;
}
}
public static <T> T mapToObj(Map<String,Object> map,Class<T> clz) throws Exception{
Object obj = clz.newInstance();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for(Field field:declaredFields){
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
continue;
}
field.setAccessible(true);
field.set(obj, objToValue(map.get(field.getName()),field.getType()));
}
return (T) obj;
}
public static <T> List<T> mapToList(List<Map<String,Object>> mapList,Class<T> clz) throws Exception{
List<T> list = new ArrayList<>();
for (Map<String, Object> map : mapList) {
list.add((T) mapToObj(map,clz));
}
return list;
}
public static Object objToValue(Object o, Class c) {
if(o==null || StringUtils.isBlank(String.valueOf(o))){
if(c == String.class){
return o;
}else {
return null;
}
}
if (c == Integer.class) {
if (o instanceof Long) {
return o;
}
return Integer.parseInt(String.valueOf(o));
} else if (c == Float.class) {
return Float.parseFloat(String.valueOf(o));
} else if (c == Double.class) {
return Double.parseDouble(String.valueOf(o));
} else if (c == BigDecimal.class) {
return new BigDecimal(String.valueOf(o));
} else if (c == Boolean.class) {
if (o != null) {
if ((Boolean.parseBoolean(String.valueOf(o))) == true)
return 1;
else
return 0;
} else {
return null;
}
} else if (c == Date.class) {
return XDateUtils.parse(String.valueOf(o));
} else {
return o;
}
}
}
package cnpc.core.common.utils;
import org.apache.commons.lang3.StringUtils;
import java.util.regex.Pattern;
/**
* @author lixueyan
* @date 2022/11/11 0011 10:31
*/
public class PatternUtil {
private static final String phonePattern = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
public static boolean checkPhone(String phone){
//用户手机号码校验
if(Pattern.matches(phonePattern,phone)){
return true;
}else {
return false;
}
}
/**
* 字符串脱敏模糊处理
*/
public static String desensitization(String str){
if(StringUtils.isBlank(str)){
return str;
}
//先判断手机号
String s = rePhone(str);
if(!s.contains("****")){
//在判断身份证号
s = reNo(str);
}
return s;
}
/**
* 身份证号简单校验
* @param IdCard
* @return
*/
public static boolean easyCheckIdCard(String IdCard) {
//字符串为空或者不符合简单的18位校验返回false
String regex = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
if (StringUtils.isBlank(IdCard) || !Pattern.matches(regex, IdCard)) {
return false;
}
return true;
}
//身份证号加*号
public static String reNo(String realNo) {
String newNo = "";
if(easyCheckIdCard(realNo)) {
if (realNo.length() == 15)
newNo = realNo.replaceAll("(\\d{4})\\d{7}(\\d{4})", "$1*******$2");
if (realNo.length() == 18)
newNo = realNo.replaceAll("(\\d{4})\\d{10}(\\d{4})", "$1**********$2");
}else{
newNo = reStr(realNo);
}
return newNo;
}
//邮箱加*号
public static String reStr(String str) {
if(StringUtils.isBlank(str)){
return str;
}
String name = str;
if(str.contains("@") && str.length()>9){
StringBuilder stringBuilder = new StringBuilder(str);
name = stringBuilder.replace(3, 7, "****").toString();
}
return name;
}
//手机号加*号
public static String rePhone(String realPhone) {
String phoneNumber = "";
if (realPhone.length() == 11 && checkPhone(realPhone))
phoneNumber = realPhone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
else
phoneNumber = realPhone;
return phoneNumber;
}
}
package cnpc.core.common.utils;
/**
* @author lixueyan
* @date 2022/12/22 0022 18:52
*/
import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
import java.util.Base64;
public class RSAUtil {
//将Base64编码后的公钥转换成PublicKey对象
public static PublicKey string2PublicKey(String pubStr) throws Exception{
byte[] keyBytes = base642Byte(pubStr);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
return publicKey;
}
//将Base64编码后的私钥转换成PrivateKey对象
public static PrivateKey string2PrivateKey(String priStr) throws Exception{
byte[] keyBytes = base642Byte(priStr);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
return privateKey;
}
//Base64编码转字节数组
public static byte[] base642Byte(String base64Key) throws IOException{
Base64.Decoder decoder = Base64.getDecoder();
return decoder.decode(base64Key);
}
/**
* 解密方法
* @param byte2Base64
* @return
*/
public static String RsaDecrypt(String byte2Base64,String privateKeyStr){
byte[] decryptedData=null;
try {
//将Base64编码后的私钥转换成PrivateKey对象
PrivateKey privateKey = RSAUtil.string2PrivateKey(privateKeyStr);
Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
cipher.init(2, privateKey);
byte[] encryptedData = RSAUtil.base642Byte(byte2Base64);
int inputLen = encryptedData.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
for(int i = 0; inputLen - offSet > 0; offSet = i * 256) {
byte[] cache;
if(inputLen - offSet > 256) {
cache = cipher.doFinal(encryptedData, offSet, 256);
} else {
cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
++i;
}
decryptedData = out.toByteArray();
out.close();
}catch (Exception e){
e.printStackTrace();
}
return new String(decryptedData);
}
/**
* 分断加密
* @param byte2Base642
* @return
*/
public static String rsaEncrypt(String byte2Base642,String publicKeyStr) {
String result = "";
try {
// 将Base64编码后的公钥转换成PublicKey对象
PublicKey publicKey = RSAUtil.string2PublicKey(publicKeyStr);
// 加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] inputArray = byte2Base642.getBytes();
int inputLength = inputArray.length;
// 最大加密字节数,超出最大字节数需要分组加密
int MAX_ENCRYPT_BLOCK = 117;
// 标识
int offSet = 0;
byte[] resultBytes = {};
byte[] cache = {};
while (inputLength - offSet > 0) {
if (inputLength - offSet > MAX_ENCRYPT_BLOCK) {
cache = cipher.doFinal(inputArray, offSet, MAX_ENCRYPT_BLOCK);
offSet += MAX_ENCRYPT_BLOCK;
} else {
cache = cipher.doFinal(inputArray, offSet, inputLength - offSet);
offSet = inputLength;
}
resultBytes = Arrays.copyOf(resultBytes, resultBytes.length + cache.length);
System.arraycopy(cache, 0, resultBytes, resultBytes.length - cache.length, cache.length);
}
Base64.Encoder encoder = Base64.getEncoder();
result = encoder.encodeToString(resultBytes);
} catch (Exception e) {
System.out.println(e.toString());
System.out.println("rsaEncrypt error:" + e.getMessage());
}
return result;
}
public static void main(String[] args) {
//公钥
String publicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2S4SMvvQJ7uO8shBO6STUhgT3zp/WbHT0j89rDQ4Q1dGV6nsCMQJNfJ6jhdQNxNSwfoZGf4bLbXfxxvdgMqisYxwBcOgfxZkEsmAl1MXr9JmNgD6MkqvxK3WCb8NsyeUsOK7frvL7OJjo2P9LLbR5SS2iBXz4Vh+2GT0C/aZmbyF0lW+qd8LTr3VPIuz0/m5cLqmatsZs3w//2rca2kaBpJ5PhL1g5OXCII76HuKQHJYsKspcziLZwtX1c5q6PFCnHFMQl6hRL62p6DgRY9PmFAUKRP3fFJWmyhevwd+6mh4Ra+puSosd1SSfWZATsT1CBUZEtnHBIfzO0Uqq25xKQIDAQAB";
//私钥
String privateKey="11111";
String string="{\"loginName\":\"cnpc\",\"phone\":\"15000000000\"}";
System.out.println("加密内容 : "+string);
String encryptRes = RSAUtil.rsaEncrypt(string,publicKey);
System.out.println("res加密后的密文 : "+encryptRes);
String decryptRes = RSAUtil.RsaDecrypt(encryptRes,privateKey);
System.out.println("res加密密文解密后的内容 : "+decryptRes);
}
}
package cnpc.core.common.utils;
import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.Set;
public class ThreadHelper {
public static final String LINE_SEPERATOR = System.getProperty("line.separator");
public static String buildThreadsSimpleInfos(StringBuilder sb) {
if (sb == null) {
sb = new StringBuilder();
}
try{
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
ArrayList<Thread> threads = new ArrayList<>(threadSet.size());
threads.addAll(threadSet);
threads.sort((x, y) -> x.getName().compareTo(y.getName()));
//int i = 0;
for (Thread t : threads) {
//i++;
sb.append(t.getName());
sb.append("(");
sb.append(t.getId());
sb.append("),");
}
sb.append("TOTAL : ").append(threadSet.size());
}catch (Exception ex){
}
return sb.toString();
}
public static void buildThreadsInfos(StringBuilder sb){
if( sb == null){
sb = new StringBuilder();
}
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
ArrayList<Thread> threads = new ArrayList<>(threadSet.size());
threads.addAll(threadSet);
threads.sort((x,y) -> x.getName().compareTo(y.getName()));
//int i = 0;
for( Thread t : threads){
//i++;
sb.append("[");
sb.append(t.getName());
sb.append("] ID:");
sb.append(t.getId());
sb.append(LINE_SEPERATOR);
sb.append(arrayToString(t.getStackTrace(), LINE_SEPERATOR));
sb.append(LINE_SEPERATOR);
sb.append(LINE_SEPERATOR);
}
sb.append("TOTAL : ").append(threadSet.size()).append(LINE_SEPERATOR);
for (Thread item : threads) {
sb.append(item.getName()).append(LINE_SEPERATOR);
}
}
public static String arrayToString(Object[] a, String seperator) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
if (Strings.isNullOrEmpty(seperator))
seperator = ", ";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(String.valueOf(a[i]));
if (i == iMax) {
return b.append(']').toString();
}
b.append(seperator);
}
}
}
package cnpc.core.common.utils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 树节点,所有需要实现树节点的,都需要继承该类
*
* @author lixueyan
* @since 1.0.0
*/
public class TreeNode<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 上级ID
*/
private String pid;
/**
* 子节点列表
*/
private List<T> children = new ArrayList<>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public List<T> getChildren() {
return children;
}
public void setChildren(List<T> children) {
this.children = children;
}
}
package cnpc.core.common.utils;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 树形结构工具类,如:菜单、部门等
*
* @author lixueyan
* @since 1.0.0
*/
public class TreeUtils {
/**
* 根据pid,构建树节点
*/
public static <T extends TreeNode> List<T> build(List<T> treeNodes, Long pid) {
//pid不能为空
//AssertUtils.isNull(pid, "pid");
List<T> treeList = new ArrayList<>();
for(T treeNode : treeNodes) {
if (pid.equals(treeNode.getPid())) {
treeList.add(findChildren(treeNodes, treeNode));
}
}
return treeList;
}
/**
* 查找子节点
*/
private static <T extends TreeNode> T findChildren(List<T> treeNodes, T rootNode) {
for(T treeNode : treeNodes) {
if(rootNode.getId().equals(treeNode.getPid())) {
rootNode.getChildren().add(findChildren(treeNodes, treeNode));
}
}
return rootNode;
}
/**
* 构建树节点
*/
public static <T extends TreeNode> List<T> build(List<T> treeNodes) {
List<T> result = new ArrayList<>();
//list转map
Map<String, T> nodeMap = new LinkedHashMap<>(treeNodes.size());
for(T treeNode : treeNodes){
nodeMap.put(treeNode.getId(), treeNode);
}
for(T node : nodeMap.values()) {
T parent = nodeMap.get(node.getPid());
if(parent != null && !(node.getId().equals(parent.getId()))){
parent.getChildren().add(node);
continue;
}
result.add(node);
}
return result;
}
}
package xstartup.base;
import xstartup.base.exception.XServiceException;
import xstartup.base.util.XUuidUtils;
/**
* @author lixueyan
* @date 2023/4/4 0004 13:36
* 为满足定时任务等 非前端请求需要用户信息的 接口,特创建此类
*/
public class XSelfServiceContext extends XContext{
XSelfServiceContext(String logTag) {
super(XUuidUtils.randomUUID(), "UNKNOWN", XStartup.getCurrent().getScope(), logTag);
}
public XApp getApp() {
if (this.app == null) {
XAppInfo appInfo = XStartup.getApplication();
this.app = new XApp(appInfo.getSystemId(), appInfo.getTenantId(), appInfo.getId());
}
return this.app;
}
public static XSelfServiceContext build(String logTag) {
XSelfServiceContext context = new XSelfServiceContext(logTag);
return context;
}
public static XSelfServiceContext build(Class<?> targetClass) {
XSelfServiceContext context = new XSelfServiceContext(targetClass.getName());
return context;
}
public void setUser(XUser user) throws XServiceException {
this.user = user;
}
public XUser getUser() {
if (this.user == null) {
this.user = XUser.createAnonymousUser("local", 1L, 1L, 1L, "xservice", "xservice");
}
return this.user;
}
public String getSessionId() {
return this.getUser().getSessionId();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>urdp-hub</artifactId>
<groupId>gf</groupId>
<version>1.0.0-gf</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>C00-common</artifactId>
<version>1.0.0-gf</version>
<packaging>pom</packaging>
<modules>
<module>cnpc-common</module>
</modules>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-cloud</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-main</artifactId>
<version>1.0.0-gf</version>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<maven.build.timestamp.format>yyyy.MMdd.HHmmss</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration combine.self="override">
<archive>
<manifestEntries>
<Component-Group-Name>${project.groupId}</Component-Group-Name>
<Component-Artifactid>${project.artifactId}</Component-Artifactid>
<Component-Version>${project.version}</Component-Version>
<Component-Build-Time>${maven.build.timestamp}</Component-Build-Time>
<Component-Description>${project.description}</Component-Description>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package gf.cloud.main.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import xstartup.base.exception.XServiceException;
public enum MessageTypeEnum {
TEXT("text","文本消息"),
IM("image","图片消息"),
EMAIL("voice","语音消息"),
VIDEO("video","视频消息"),
FILE("file","文件消息"),
TEXT_CARD("textcard","文本卡片消息"),
NEWS("news","图文消息"),
MINIPROGRAM_NOTICE("miniprogram_notice","小程序通知消息"),
;
@EnumValue
private String key;
private String value;
MessageTypeEnum(String key, String value){
this.value = value;
this.key = key;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
public static MessageTypeEnum findByValue(String key){
for(MessageTypeEnum item : values()){
if(item.getKey().equals(key)){
return item;
}
}
throw new XServiceException(1000,"不支持的消息类型");
}
}
package gf.cloud.main.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum SendStateEnum {
Unknow(0,"未知"),
SUCCESS(1,"成功"),
Failure(2,"失败"),
;
@EnumValue
private Integer value;
private String desc;
SendStateEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
public Integer getValue() {
return value;
}
public String getDesc() {
return desc;
}
public static SendStateEnum findByValue(Integer value){
for(SendStateEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.cloud.main.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum SendTypeEnum {
Single_Targert_Single_SMS(1,"发送单条短信","sendSms"),
Single_Targert_Single_IM(2,"发送单条即时通讯","sendIm"),
Single_Targert_Single_Message(3,"发送单条消息","sendMessage"),
More_Targert_Single_SMS(4,"发送多目标单条短信","sendBatchOneSms"),
More_Targert_Single_IM(5,"发送多目标单条即时通讯","sendBatchOneIm"),
More_Targert_Single_Message(6,"发送多目标单条消息","sendBatchOneMessage"),
More_Targert_More_SMS(7,"发送多手机号多条短信","sendBatchMoreSms"),
More_Targert_More_IM(8,"发送多手机号多条即时通讯","sendBatchMoreIm"),
More_Targert_More_Message(9,"发送多手机号多条消息","sendBatchMoreMessage"),
;
@EnumValue
private Integer value;
private String desc;
private String methodName;
SendTypeEnum(Integer value, String desc, String methodName){
this.desc =desc;
this.value = value;
this.methodName = methodName;
}
public Integer getValue() {
return value;
}
public String getDesc() {
return desc;
}
public String getMethodName() {
return methodName;
}
public static SendTypeEnum findByValue(Integer value){
for(SendTypeEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/30 0030 14:29
*/
public class ExecuteTaskPlanInput {
@NotNull
@XText("任务id")
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
import java.util.Date;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/29 0029 17:49
*/
public class GetSmsReplyInput {
@XText("回复手机号")
private List<String> mobile;
@XText("回复开始时间")
private Date startDate;
@XText("回复结束时间")
private Date endDate;
public List<String> getMobile() {
return mobile;
}
public void setMobile(List<String> mobile) {
this.mobile = mobile;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
import java.util.Date;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/29 0029 17:49
*/
public class GetSmsReplyOutput {
@XText("回复手机号")
private String mobile;
@XText("回复内容")
private String content;
@XText("回复时间")
private Date replyDate;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getReplyDate() {
return replyDate;
}
public void setReplyDate(Date replyDate) {
this.replyDate = replyDate;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:14
*/
public class GetTypeOutput {
@XText("消息类型")
private String type;
@XText("消息类型名称")
private String typeName;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
import java.util.Date;
public class QueryMessageTaskPlanOutput {
@XText("主键")
private Integer id;
@XText("任务id")
private Integer taskId;
@XText("计划时间")
private Date planTime;
@XText("开始时间")
private Date startTime;
@XText("结束时间")
private Date endTime;
@XText("执行状态(0:未开始,1:执行中,2:执行成功,3:执行失败)")
private Integer state;
@XText("结果信息")
private String retMsg;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public Integer getTaskId() {
return this.taskId;
}
public void setTaskId(Integer value) {
this.taskId = value;
}
public Date getPlanTime() {
return this.planTime;
}
public void setPlanTime(Date value) {
this.planTime = value;
}
public Date getStartTime() {
return this.startTime;
}
public void setStartTime(Date value) {
this.startTime = value;
}
public Date getEndTime() {
return this.endTime;
}
public void setEndTime(Date value) {
this.endTime = value;
}
public Integer getState() {
return this.state;
}
public void setState(Integer value) {
this.state = value;
}
public String getRetMsg() {
return this.retMsg;
}
public void setRetMsg(String value) {
this.retMsg = value;
}
}
package gf.cloud.main.service.data;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.Date;
/**
* @author lixueyan
* @date 2023/5/30 0030 9:35
*/
public class SendBaseInput {
@XText("发送方式 , 0:立即发送,1:定时发送(指定时间 一次性发送),2:周期发送(cron 表达式 多次发送)")
private Integer sendWay = 0;
@XText("发送时间, 发送方式=1时 值为:yyyy-MM-dd HH:mm:ss; 发送方式=2时 值为 ‘0/20 * * * * ?’")
private String sendTime;
@XText("截至时间,发送方式=2时,默认当前时间+1年")
private Date endTime;
@XText("发送标记,请勿赋值")
private Boolean sendFlag = false;
@XText("发送标记,请勿赋值")
@JsonIgnore
private Integer sendId;
public Integer getSendWay() {
return sendWay;
}
public void setSendWay(Integer sendWay) {
this.sendWay = sendWay;
}
public String getSendTime() {
return sendTime;
}
public void setSendTime(String sendTime) {
this.sendTime = sendTime;
}
public Boolean getSendFlag() {
return sendFlag;
}
public void setSendFlag(Boolean sendFlag) {
this.sendFlag = sendFlag;
}
public Integer getSendId() {
return sendId;
}
public void setSendId(Integer sendId) {
this.sendId = sendId;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreImInput extends SendBaseInput {
@XText("消息对象集合")
@NotNull
private List<SendImInput> messageList;
public List<SendImInput> getMessageList() {
return messageList;
}
public void setMessageList(List<SendImInput> messageList) {
this.messageList = messageList;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreImOutput {
@XText("错误码:0-成功,其他-失败")
private Integer errcode;
@XText("错误描述")
private String errmsg;
@XText("无效的成员id")
private String invaliduser; // 不区分大小写,返回的列表都统一转为小写
@XText("无效的部门id")
private String invalidparty;
@XText("无效的标签ID")
private String invalidtag;
@XText("im消息id")
private String jobid;
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public String getInvaliduser() {
return invaliduser;
}
public void setInvaliduser(String invaliduser) {
this.invaliduser = invaliduser;
}
public String getInvalidparty() {
return invalidparty;
}
public void setInvalidparty(String invalidparty) {
this.invalidparty = invalidparty;
}
public String getInvalidtag() {
return invalidtag;
}
public void setInvalidtag(String invalidtag) {
this.invalidtag = invalidtag;
}
public String getJobid() {
return jobid;
}
public void setJobid(String jobid) {
this.jobid = jobid;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreMessageInput extends SendBaseInput {
@XText("消息对象集合")
@NotNull
private List<SendMessageInput> messageList;
public List<SendMessageInput> getMessageList() {
return messageList;
}
public void setMessageList(List<SendMessageInput> messageList) {
this.messageList = messageList;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreMessageOutput {
@XText("消息对象集合")
@NotNull
private List<SendMessageInput> messageList;
public List<SendMessageInput> getMessageList() {
return messageList;
}
public void setMessageList(List<SendMessageInput> messageList) {
this.messageList = messageList;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreSmsInput extends SendBaseInput {
@XText("消息对象集合")
@NotNull
private List<SendImInput> messageList;
public List<SendImInput> getMessageList() {
return messageList;
}
public void setMessageList(List<SendImInput> messageList) {
this.messageList = messageList;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchMoreSmsOutput {
@XText("手机号")
private String mobile;
@XText("消息 ID")
private String smsId;
@XText("客户自定义 SMSID")
private String customSmsId;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getSmsId() {
return smsId;
}
public void setSmsId(String smsId) {
this.smsId = smsId;
}
public String getCustomSmsId() {
return customSmsId;
}
public void setCustomSmsId(String customSmsId) {
this.customSmsId = customSmsId;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneImInput extends SendBaseInput {
@XText("手机号")
@NotNull
private List<String> mobile;
@XText("短信内容")
@NotNull
private String content;
public List<String> getMobile() {
return mobile;
}
public void setMobile(List<String> mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneImOutput {
@XText("错误码:0-成功,其他-失败")
private Integer errcode;
@XText("错误描述")
private String errmsg;
@XText("无效的成员id")
private String invaliduser; // 不区分大小写,返回的列表都统一转为小写
@XText("无效的部门id")
private String invalidparty;
@XText("无效的标签ID")
private String invalidtag;
@XText("im消息id")
private String jobid;
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public String getInvaliduser() {
return invaliduser;
}
public void setInvaliduser(String invaliduser) {
this.invaliduser = invaliduser;
}
public String getInvalidparty() {
return invalidparty;
}
public void setInvalidparty(String invalidparty) {
this.invalidparty = invalidparty;
}
public String getInvalidtag() {
return invalidtag;
}
public void setInvalidtag(String invalidtag) {
this.invalidtag = invalidtag;
}
public String getJobid() {
return jobid;
}
public void setJobid(String jobid) {
this.jobid = jobid;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneMessageInput extends SendBaseInput {
@XText("手机号")
@NotNull
private List<String> mobile;
@XText("短信内容")
@NotNull
private String content;
@XText("类型")
@NotNull
private String type;
public List<String> getMobile() {
return mobile;
}
public void setMobile(List<String> mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneMessageOutput {
@XText("手机号")
private String mobile;
@XText("短信内容")
private String content;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.List;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneSmsInput extends SendBaseInput {
@XText("手机号")
private List<String> mobile;
@XText("短信内容")
@NotNull
private String content;
public List<String> getMobile() {
return mobile;
}
public void setMobile(List<String> mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendBatchOneSmsOutput {
@XText("手机号")
private String mobile;
@XText("消息 ID")
private String smsId;
@XText("客户自定义 SMSID")
private String customSmsId;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getSmsId() {
return smsId;
}
public void setSmsId(String smsId) {
this.smsId = smsId;
}
public String getCustomSmsId() {
return customSmsId;
}
public void setCustomSmsId(String customSmsId) {
this.customSmsId = customSmsId;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendImInput extends SendBaseInput {
@XText("手机号")
@NotNull
private String mobile;
@XText("短信内容")
@NotNull
private String content;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendImOutput {
@XText("错误码:0-成功,其他-失败")
private Integer errcode;
@XText("错误描述")
private String errmsg;
@XText("无效的成员id")
private String invaliduser; // 不区分大小写,返回的列表都统一转为小写
@XText("无效的部门id")
private String invalidparty;
@XText("无效的标签ID")
private String invalidtag;
@XText("im消息id")
private String jobid;
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public String getInvaliduser() {
return invaliduser;
}
public void setInvaliduser(String invaliduser) {
this.invaliduser = invaliduser;
}
public String getInvalidparty() {
return invalidparty;
}
public void setInvalidparty(String invalidparty) {
this.invalidparty = invalidparty;
}
public String getInvalidtag() {
return invalidtag;
}
public void setInvalidtag(String invalidtag) {
this.invalidtag = invalidtag;
}
public String getJobid() {
return jobid;
}
public void setJobid(String jobid) {
this.jobid = jobid;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendMessageInput extends SendBaseInput {
@XText("手机号")
@NotNull
private String mobile;
@XText("短信内容")
@NotNull
private String content;
@XText("消息类型, ALL-全渠道发送,SMS|IM - 多渠道发送")
@NotNull
private String type;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendMessageOutput {
@XText("手机号")
private String mobile;
@XText("短信内容")
private String content;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendSmsInput extends SendBaseInput {
@XText("手机号")
@NotNull
private String mobile;
@XText("短信内容")
@NotNull
private String content;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package gf.cloud.main.service.data;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/19 0019 14:17
*/
public class SendSmsOutput {
@XText("手机号")
private String mobile;
@XText("消息 ID")
private String smsId;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getSmsId() {
return smsId;
}
public void setSmsId(String smsId) {
this.smsId = smsId;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-core</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>gf-core-main</artifactId>
<version>1.0.0-gf</version>
<properties>
<maven.build.timestamp.format>yyyy.MMdd.HHmmss</maven.build.timestamp.format>
</properties>
<dependencies>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-common</artifactId>
<version>1.0.0-gf</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-main</artifactId>
<version>1.0.0-gf</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-auth</artifactId>
<version>1.16.10-xstartup-cloud</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration combine.self="override">
<archive>
<manifestEntries>
<Component-Group-Name>${project.groupId}</Component-Group-Name>
<Component-Artifactid>${project.artifactId}</Component-Artifactid>
<Component-Version>${project.version}</Component-Version>
<Component-Build-Time>${maven.build.timestamp}</Component-Build-Time>
<Component-Description>${project.description}</Component-Description>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.ini</include>
</includes>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package gf.core.main.constant;
/**
* @author lixueyan
* @date 2023/5/25 0025 18:08
*/
public class MessageConstants {
public static final Integer MESSAGE_FLAG_NE_ONE = -888;
public static final Integer MESSAGE_FLAG_NE_999 = -999;
}
package gf.core.main.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;
@TableName("weather_data")
public class WeatherDataEnt implements java.io.Serializable{
//字段
@TableId(type = IdType.AUTO)
private int id;//主键
@TableField
private String oilFieldName;//油田名称
@TableField
private String wellSiteName;//井场
@TableField
private String lineName;//线路名称
@TableField
private BigDecimal lon;//经度
@TableField
private BigDecimal lat;//纬度
@TableField
private BigDecimal cap;//装机容量
@TableField
private BigDecimal tilt;//阵列倾角
@TableField
private BigDecimal azimuth;//阵列朝向
@TableField
private Date utc;//世界时间
@TableField
private Date cst;//北京时间
@TableField
private BigDecimal seaPressure;//海平面气压
@TableField
private BigDecimal surfacePressure;//地面气压
@TableField
private BigDecimal temperature;//气温2m
@TableField
private BigDecimal precipitation;//降水量(mm)
@TableField
private BigDecimal snowFall;//降雪量
@TableField
private BigDecimal snowDepth;//积雪深度
@TableField
private BigDecimal snowDensity;//积雪密度
@TableField
private BigDecimal snowLayerTemperature;//雪层温度
@TableField
private BigDecimal surfaceTemperature;//地表温度
@TableField
private BigDecimal dewPointTemperature;//露点温度
@TableField
private BigDecimal relativeHumidity;//相对湿度
@TableField
private BigDecimal evaporationCapacity;//蒸发量
@TableField
private BigDecimal potentialEvaporation;//潜在蒸发量
@TableField
private BigDecimal lonWindSpeed;//经向风速
@TableField
private BigDecimal latWindSpeed;//纬向风速
@TableField
private BigDecimal maximumGust;//最大阵风(上一小时内,m/s)
@TableField
private BigDecimal cbh;//云底高度
@TableField
private BigDecimal lcc;//低层云量
@TableField
private BigDecimal mcc;//中层云量
@TableField
private BigDecimal hcc;//高层云量
@TableField
private BigDecimal tcc;//总云量
@TableField
private BigDecimal totalSolarIrradiance;//总太阳辐射度(down,J/m2)
@TableField
private BigDecimal netSolarIrradiance;//净太阳辐射度(net,J/m2)
@TableField
private BigDecimal directRadiation;//直接辐射(J/m2)
@TableField
private BigDecimal uvIntensity;//紫外强度(J/m2)
@TableField
private BigDecimal runoff;//径流(mm)
@TableField
private BigDecimal surfaceRunoff;//地表径流(mm)
@TableField
private BigDecimal undergroundRunoff;//地下径流(mm)
@TableField
private BigDecimal thunderstormProbability;//雷暴概率(TT,K)
@TableField
private BigDecimal kIndex;//K指数(K)
@TableField
private BigDecimal convectiveAvailablePotentialEnergy;//对流可用位能(J/kg)
@TableField
private BigDecimal photovoltaicPowerGeneration;//光伏发电功率Kw
@TableField
private BigDecimal totalSolarRadiation;//太阳总辐射Kwh/m2
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOilFieldName() {
return oilFieldName;
}
public void setOilFieldName(String oilFieldName) {
this.oilFieldName = oilFieldName;
}
public String getWellSiteName() {
return wellSiteName;
}
public void setWellSiteName(String wellSiteName) {
this.wellSiteName = wellSiteName;
}
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
public BigDecimal getLon() {
return lon;
}
public void setLon(BigDecimal lon) {
this.lon = lon;
}
public BigDecimal getLat() {
return lat;
}
public void setLat(BigDecimal lat) {
this.lat = lat;
}
public BigDecimal getCap() {
return cap;
}
public void setCap(BigDecimal cap) {
this.cap = cap;
}
public BigDecimal getTilt() {
return tilt;
}
public void setTilt(BigDecimal tilt) {
this.tilt = tilt;
}
public BigDecimal getAzimuth() {
return azimuth;
}
public void setAzimuth(BigDecimal azimuth) {
this.azimuth = azimuth;
}
public Date getUtc() {
return utc;
}
public void setUtc(Date utc) {
this.utc = utc;
}
public Date getCst() {
return cst;
}
public void setCst(Date cst) {
this.cst = cst;
}
public BigDecimal getSeaPressure() {
return seaPressure;
}
public void setSeaPressure(BigDecimal seaPressure) {
this.seaPressure = seaPressure;
}
public BigDecimal getSurfacePressure() {
return surfacePressure;
}
public void setSurfacePressure(BigDecimal surfacePressure) {
this.surfacePressure = surfacePressure;
}
public BigDecimal getTemperature() {
return temperature;
}
public void setTemperature(BigDecimal temperature) {
this.temperature = temperature;
}
public BigDecimal getPrecipitation() {
return precipitation;
}
public void setPrecipitation(BigDecimal precipitation) {
this.precipitation = precipitation;
}
public BigDecimal getSnowFall() {
return snowFall;
}
public void setSnowFall(BigDecimal snowFall) {
this.snowFall = snowFall;
}
public BigDecimal getSnowDepth() {
return snowDepth;
}
public void setSnowDepth(BigDecimal snowDepth) {
this.snowDepth = snowDepth;
}
public BigDecimal getSnowDensity() {
return snowDensity;
}
public void setSnowDensity(BigDecimal snowDensity) {
this.snowDensity = snowDensity;
}
public BigDecimal getSnowLayerTemperature() {
return snowLayerTemperature;
}
public void setSnowLayerTemperature(BigDecimal snowLayerTemperature) {
this.snowLayerTemperature = snowLayerTemperature;
}
public BigDecimal getSurfaceTemperature() {
return surfaceTemperature;
}
public void setSurfaceTemperature(BigDecimal surfaceTemperature) {
this.surfaceTemperature = surfaceTemperature;
}
public BigDecimal getDewPointTemperature() {
return dewPointTemperature;
}
public void setDewPointTemperature(BigDecimal dewPointTemperature) {
this.dewPointTemperature = dewPointTemperature;
}
public BigDecimal getRelativeHumidity() {
return relativeHumidity;
}
public void setRelativeHumidity(BigDecimal relativeHumidity) {
this.relativeHumidity = relativeHumidity;
}
public BigDecimal getEvaporationCapacity() {
return evaporationCapacity;
}
public void setEvaporationCapacity(BigDecimal evaporationCapacity) {
this.evaporationCapacity = evaporationCapacity;
}
public BigDecimal getPotentialEvaporation() {
return potentialEvaporation;
}
public void setPotentialEvaporation(BigDecimal potentialEvaporation) {
this.potentialEvaporation = potentialEvaporation;
}
public BigDecimal getLonWindSpeed() {
return lonWindSpeed;
}
public void setLonWindSpeed(BigDecimal lonWindSpeed) {
this.lonWindSpeed = lonWindSpeed;
}
public BigDecimal getLatWindSpeed() {
return latWindSpeed;
}
public void setLatWindSpeed(BigDecimal latWindSpeed) {
this.latWindSpeed = latWindSpeed;
}
public BigDecimal getMaximumGust() {
return maximumGust;
}
public void setMaximumGust(BigDecimal maximumGust) {
this.maximumGust = maximumGust;
}
public BigDecimal getCbh() {
return cbh;
}
public void setCbh(BigDecimal cbh) {
this.cbh = cbh;
}
public BigDecimal getLcc() {
return lcc;
}
public void setLcc(BigDecimal lcc) {
this.lcc = lcc;
}
public BigDecimal getMcc() {
return mcc;
}
public void setMcc(BigDecimal mcc) {
this.mcc = mcc;
}
public BigDecimal getHcc() {
return hcc;
}
public void setHcc(BigDecimal hcc) {
this.hcc = hcc;
}
public BigDecimal getTcc() {
return tcc;
}
public void setTcc(BigDecimal tcc) {
this.tcc = tcc;
}
public BigDecimal getTotalSolarIrradiance() {
return totalSolarIrradiance;
}
public void setTotalSolarIrradiance(BigDecimal totalSolarIrradiance) {
this.totalSolarIrradiance = totalSolarIrradiance;
}
public BigDecimal getNetSolarIrradiance() {
return netSolarIrradiance;
}
public void setNetSolarIrradiance(BigDecimal netSolarIrradiance) {
this.netSolarIrradiance = netSolarIrradiance;
}
public BigDecimal getDirectRadiation() {
return directRadiation;
}
public void setDirectRadiation(BigDecimal directRadiation) {
this.directRadiation = directRadiation;
}
public BigDecimal getUvIntensity() {
return uvIntensity;
}
public void setUvIntensity(BigDecimal uvIntensity) {
this.uvIntensity = uvIntensity;
}
public BigDecimal getRunoff() {
return runoff;
}
public void setRunoff(BigDecimal runoff) {
this.runoff = runoff;
}
public BigDecimal getSurfaceRunoff() {
return surfaceRunoff;
}
public void setSurfaceRunoff(BigDecimal surfaceRunoff) {
this.surfaceRunoff = surfaceRunoff;
}
public BigDecimal getUndergroundRunoff() {
return undergroundRunoff;
}
public void setUndergroundRunoff(BigDecimal undergroundRunoff) {
this.undergroundRunoff = undergroundRunoff;
}
public BigDecimal getThunderstormProbability() {
return thunderstormProbability;
}
public void setThunderstormProbability(BigDecimal thunderstormProbability) {
this.thunderstormProbability = thunderstormProbability;
}
public BigDecimal getkIndex() {
return kIndex;
}
public void setkIndex(BigDecimal kIndex) {
this.kIndex = kIndex;
}
public BigDecimal getConvectiveAvailablePotentialEnergy() {
return convectiveAvailablePotentialEnergy;
}
public void setConvectiveAvailablePotentialEnergy(BigDecimal convectiveAvailablePotentialEnergy) {
this.convectiveAvailablePotentialEnergy = convectiveAvailablePotentialEnergy;
}
public BigDecimal getPhotovoltaicPowerGeneration() {
return photovoltaicPowerGeneration;
}
public void setPhotovoltaicPowerGeneration(BigDecimal photovoltaicPowerGeneration) {
this.photovoltaicPowerGeneration = photovoltaicPowerGeneration;
}
public BigDecimal getTotalSolarRadiation() {
return totalSolarRadiation;
}
public void setTotalSolarRadiation(BigDecimal totalSolarRadiation) {
this.totalSolarRadiation = totalSolarRadiation;
}
}
package gf.core.main.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.util.Date;
public class WeatherDataView implements java.io.Serializable{
@TableId(type = IdType.AUTO)
private int id;//主键
@TableField
private String oilFieldName;//油田名称
@TableField
private String wellSiteName;//井场
@TableField
private String lineName;//线路名称
@TableField
private BigDecimal lon;//经度
@TableField
private BigDecimal lat;//纬度
@TableField
private BigDecimal cap;//装机容量
@TableField
private BigDecimal tilt;//阵列倾角
@TableField
private BigDecimal azimuth;//阵列朝向
@TableField
private Date utc;//世界时间
@TableField
private Date cst;//北京时间
@TableField
private BigDecimal seaPressure;//海平面气压
@TableField
private BigDecimal surfacePressure;//地面气压
@TableField
private BigDecimal temperature;//气温2m
@TableField
private BigDecimal precipitation;//降水量(mm)
@TableField
private BigDecimal snowFall;//降雪量
@TableField
private BigDecimal snowDepth;//积雪深度
@TableField
private BigDecimal snowDensity;//积雪密度
@TableField
private BigDecimal snowLayerTemperature;//雪层温度
@TableField
private BigDecimal surfaceTemperature;//地表温度
@TableField
private BigDecimal dewPointTemperature;//露点温度
@TableField
private BigDecimal relativeHumidity;//相对湿度
@TableField
private BigDecimal evaporationCapacity;//蒸发量
@TableField
private BigDecimal potentialEvaporation;//潜在蒸发量
@TableField
private BigDecimal lonWindSpeed;//经向风速
@TableField
private BigDecimal latWindSpeed;//纬向风速
@TableField
private BigDecimal maximumGust;//最大阵风(上一小时内,m/s)
@TableField
private BigDecimal cbh;//云底高度
@TableField
private BigDecimal lcc;//低层云量
@TableField
private BigDecimal mcc;//中层云量
@TableField
private BigDecimal hcc;//高层云量
@TableField
private BigDecimal tcc;//总云量
@TableField
private BigDecimal totalSolarIrradiance;//总太阳辐射度(down,J/m2)
@TableField
private BigDecimal netWolarIrradiance;//净太阳辐射度(net,J/m2)
@TableField
private BigDecimal directRadiation;//直接辐射(J/m2)
@TableField
private BigDecimal uvIntensity;//紫外强度(J/m2)
@TableField
private BigDecimal runoff;//径流(mm)
@TableField
private BigDecimal surfaceRunoff;//地表径流(mm)
@TableField
private BigDecimal undergroundRunoff;//地下径流(mm)
@TableField
private BigDecimal thunderstormProbability;//雷暴概率(TT,K)
@TableField
private BigDecimal kIndex;//K指数(K)
@TableField
private BigDecimal convectiveAvailablePotentialEnergy;//对流可用位能(J/kg)
@TableField
private BigDecimal photovoltaicPowerGeneration;//光伏发电功率Kw
@TableField
private BigDecimal totalSolarRadiation;//太阳总辐射Kwh/m2
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOilFieldName() {
return oilFieldName;
}
public void setOilFieldName(String oilFieldName) {
this.oilFieldName = oilFieldName;
}
public String getWellSiteName() {
return wellSiteName;
}
public void setWellSiteName(String wellSiteName) {
this.wellSiteName = wellSiteName;
}
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
public BigDecimal getLon() {
return lon;
}
public void setLon(BigDecimal lon) {
this.lon = lon;
}
public BigDecimal getLat() {
return lat;
}
public void setLat(BigDecimal lat) {
this.lat = lat;
}
public BigDecimal getCap() {
return cap;
}
public void setCap(BigDecimal cap) {
this.cap = cap;
}
public BigDecimal getTilt() {
return tilt;
}
public void setTilt(BigDecimal tilt) {
this.tilt = tilt;
}
public BigDecimal getAzimuth() {
return azimuth;
}
public void setAzimuth(BigDecimal azimuth) {
this.azimuth = azimuth;
}
public Date getUtc() {
return utc;
}
public void setUtc(Date utc) {
this.utc = utc;
}
public Date getCst() {
return cst;
}
public void setCst(Date cst) {
this.cst = cst;
}
public BigDecimal getSeaPressure() {
return seaPressure;
}
public void setSeaPressure(BigDecimal seaPressure) {
this.seaPressure = seaPressure;
}
public BigDecimal getSurfacePressure() {
return surfacePressure;
}
public void setSurfacePressure(BigDecimal surfacePressure) {
this.surfacePressure = surfacePressure;
}
public BigDecimal getTemperature() {
return temperature;
}
public void setTemperature(BigDecimal temperature) {
this.temperature = temperature;
}
public BigDecimal getPrecipitation() {
return precipitation;
}
public void setPrecipitation(BigDecimal precipitation) {
this.precipitation = precipitation;
}
public BigDecimal getSnowFall() {
return snowFall;
}
public void setSnowFall(BigDecimal snowFall) {
this.snowFall = snowFall;
}
public BigDecimal getSnowDepth() {
return snowDepth;
}
public void setSnowDepth(BigDecimal snowDepth) {
this.snowDepth = snowDepth;
}
public BigDecimal getSnowDensity() {
return snowDensity;
}
public void setSnowDensity(BigDecimal snowDensity) {
this.snowDensity = snowDensity;
}
public BigDecimal getSnowLayerTemperature() {
return snowLayerTemperature;
}
public void setSnowLayerTemperature(BigDecimal snowLayerTemperature) {
this.snowLayerTemperature = snowLayerTemperature;
}
public BigDecimal getSurfaceTemperature() {
return surfaceTemperature;
}
public void setSurfaceTemperature(BigDecimal surfaceTemperature) {
this.surfaceTemperature = surfaceTemperature;
}
public BigDecimal getDewPointTemperature() {
return dewPointTemperature;
}
public void setDewPointTemperature(BigDecimal dewPointTemperature) {
this.dewPointTemperature = dewPointTemperature;
}
public BigDecimal getRelativeHumidity() {
return relativeHumidity;
}
public void setRelativeHumidity(BigDecimal relativeHumidity) {
this.relativeHumidity = relativeHumidity;
}
public BigDecimal getEvaporationCapacity() {
return evaporationCapacity;
}
public void setEvaporationCapacity(BigDecimal evaporationCapacity) {
this.evaporationCapacity = evaporationCapacity;
}
public BigDecimal getPotentialEvaporation() {
return potentialEvaporation;
}
public void setPotentialEvaporation(BigDecimal potentialEvaporation) {
this.potentialEvaporation = potentialEvaporation;
}
public BigDecimal getLonWindSpeed() {
return lonWindSpeed;
}
public void setLonWindSpeed(BigDecimal lonWindSpeed) {
this.lonWindSpeed = lonWindSpeed;
}
public BigDecimal getLatWindSpeed() {
return latWindSpeed;
}
public void setLatWindSpeed(BigDecimal latWindSpeed) {
this.latWindSpeed = latWindSpeed;
}
public BigDecimal getMaximumGust() {
return maximumGust;
}
public void setMaximumGust(BigDecimal maximumGust) {
this.maximumGust = maximumGust;
}
public BigDecimal getCbh() {
return cbh;
}
public void setCbh(BigDecimal cbh) {
this.cbh = cbh;
}
public BigDecimal getLcc() {
return lcc;
}
public void setLcc(BigDecimal lcc) {
this.lcc = lcc;
}
public BigDecimal getMcc() {
return mcc;
}
public void setMcc(BigDecimal mcc) {
this.mcc = mcc;
}
public BigDecimal getHcc() {
return hcc;
}
public void setHcc(BigDecimal hcc) {
this.hcc = hcc;
}
public BigDecimal getTcc() {
return tcc;
}
public void setTcc(BigDecimal tcc) {
this.tcc = tcc;
}
public BigDecimal getTotalSolarIrradiance() {
return totalSolarIrradiance;
}
public void setTotalSolarIrradiance(BigDecimal totalSolarIrradiance) {
this.totalSolarIrradiance = totalSolarIrradiance;
}
public BigDecimal getNetWolarIrradiance() {
return netWolarIrradiance;
}
public void setNetWolarIrradiance(BigDecimal netWolarIrradiance) {
this.netWolarIrradiance = netWolarIrradiance;
}
public BigDecimal getDirectRadiation() {
return directRadiation;
}
public void setDirectRadiation(BigDecimal directRadiation) {
this.directRadiation = directRadiation;
}
public BigDecimal getUvIntensity() {
return uvIntensity;
}
public void setUvIntensity(BigDecimal uvIntensity) {
this.uvIntensity = uvIntensity;
}
public BigDecimal getRunoff() {
return runoff;
}
public void setRunoff(BigDecimal runoff) {
this.runoff = runoff;
}
public BigDecimal getSurfaceRunoff() {
return surfaceRunoff;
}
public void setSurfaceRunoff(BigDecimal surfaceRunoff) {
this.surfaceRunoff = surfaceRunoff;
}
public BigDecimal getUndergroundRunoff() {
return undergroundRunoff;
}
public void setUndergroundRunoff(BigDecimal undergroundRunoff) {
this.undergroundRunoff = undergroundRunoff;
}
public BigDecimal getThunderstormProbability() {
return thunderstormProbability;
}
public void setThunderstormProbability(BigDecimal thunderstormProbability) {
this.thunderstormProbability = thunderstormProbability;
}
public BigDecimal getkIndex() {
return kIndex;
}
public void setkIndex(BigDecimal kIndex) {
this.kIndex = kIndex;
}
public BigDecimal getConvectiveAvailablePotentialEnergy() {
return convectiveAvailablePotentialEnergy;
}
public void setConvectiveAvailablePotentialEnergy(BigDecimal convectiveAvailablePotentialEnergy) {
this.convectiveAvailablePotentialEnergy = convectiveAvailablePotentialEnergy;
}
public BigDecimal getPhotovoltaicPowerGeneration() {
return photovoltaicPowerGeneration;
}
public void setPhotovoltaicPowerGeneration(BigDecimal photovoltaicPowerGeneration) {
this.photovoltaicPowerGeneration = photovoltaicPowerGeneration;
}
public BigDecimal getTotalSolarRadiation() {
return totalSolarRadiation;
}
public void setTotalSolarRadiation(BigDecimal totalSolarRadiation) {
this.totalSolarRadiation = totalSolarRadiation;
}
}
package gf.core.main.enums;
import cnpc.core.common.enums.DictEnum;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum SendStateEnum implements DictEnum {
Doing(0,"处理中"),
SUCCESS(1,"成功"),
Party_SUCCESS(2,"部分成功"),
Failure(3,"失败"),
;
@EnumValue
private Integer value;
private String desc;
SendStateEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
public static SendStateEnum findByValue(Integer value){
for(SendStateEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.core.main.enums;
import cnpc.core.common.enums.DictEnum;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum SendWayEnum implements DictEnum {
Send_Now(0,"立即发送"),
Send_Time(1,"定时发送"),
Send_Cycle(2,"周期发送"),
;
@EnumValue
private Integer value;
private String desc;
SendWayEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
public static SendWayEnum findByValue(Integer value){
for(SendWayEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.core.main.enums;
import cnpc.core.common.enums.DictEnum;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum TaskAnalysisStateEnum implements DictEnum {
NO(0,"未解析"),
YES(1,"已解析"),
;
@EnumValue
private Integer value;
private String desc;
TaskAnalysisStateEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
public static TaskAnalysisStateEnum findByValue(Integer value){
for(TaskAnalysisStateEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.core.main.enums;
import cnpc.core.common.enums.DictEnum;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum TaskPlanStateEnum implements DictEnum {
Wait(0,"未开始"),
Doing(1,"进行中"),
Success(2,"成功"),
Failure(3,"失败"),
;
@EnumValue
private Integer value;
private String desc;
TaskPlanStateEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
public static TaskPlanStateEnum findByValue(Integer value){
for(TaskPlanStateEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.core.main.enums;
import cnpc.core.common.enums.DictEnum;
import com.baomidou.mybatisplus.annotation.EnumValue;
public enum TaskStateEnum implements DictEnum {
Delete(0,"已删除"),
Enable(1,"启用"),
Disable(2,"禁用"),
;
@EnumValue
private Integer value;
private String desc;
TaskStateEnum(Integer value, String desc){
this.desc =desc;
this.value = value;
}
@Override
public Integer getValue() {
return value;
}
@Override
public String getDesc() {
return desc;
}
public static TaskStateEnum findByValue(Integer value){
for(TaskStateEnum item : values()){
if(item.getValue().equals(value)){
return item;
}
}
return null;
}
}
package gf.core.main.error;
import xstartup.error.XError;
/**
* @author lixueyan
* @date 2023/5/18 0018 10:33
*/
public enum MessageError implements XError {
Send_Not_Exists_Error(1001001,"定时发送请求不存在"),
Send_Time_Error(1001002,"发送时间不合法"),
Send_Time_Fast_Error(1001003,"不允许秒级的定时发送请求"),
;
private int code;
private String text;
MessageError(int code, String text) {
this.code = code;
this.text = text;
}
@Override
public int getCode() {
return code;
}
@Override
public String getText() {
return text;
}
}
package gf.core.main.mapper;
import gf.core.main.entity.WeatherDataEnt;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository(value="gf.core.main.mapper.WeatherDataMapper")
public interface WeatherDataMapper extends BaseMapper<WeatherDataEnt> {
}
package gf.core.main.mapper;
import gf.core.main.entity.WeatherDataView;
import org.springframework.stereotype.Repository;
@Repository(value="gf.core.main.mapper.WeatherDataViewMapper")
public interface WeatherDataViewMapper {
WeatherDataView selectOne(WeatherDataView record);
}
package gf.core.main.module;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XModule;
@XText("主模块")
public class GfCoreMainModule extends XModule {
protected GfCoreMainModule() {
super(1001);
}
@Override
protected void onStarted(XContext context) {
//配置信息 自定义实现类
System.out.println("2323423");
}
}
package gf.core.main.mybatis;
import cnpc.core.common.mybatis.MybaitisGlobalConfigSuppiler;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import xstartup.service.mybatis.XMybatis;
/**
* mybatis 配置类
*/
@Component
@EnableTransactionManagement
@MapperScan(sqlSessionTemplateRef = "sqlSessionTemplateRef.gf.core.main",
sqlSessionFactoryRef = "sqlSessionFactoryRef.gf.core.main",
basePackages = {"gf.core.main.mapper"})
public class GfCoreMainMybatis extends XMybatis {
@Override
public GlobalConfig getGlobalConfig() {
return MybaitisGlobalConfigSuppiler.INSTANCE.get();
}
}
package gf.core.main.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import gf.core.main.entity.WeatherDataEnt;
import gf.core.main.entity.WeatherDataView;
import gf.core.main.mapper.WeatherDataMapper;
import gf.core.main.mapper.WeatherDataViewMapper;
import gf.core.main.service.data.weather_data.GetWeatherDataViewInput;
import xstartup.annotation.XService;
import xstartup.base.XContext;
import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet;
@XService
public class OilFieldDataService {
@XApiAnonymous
@XApiGet
public XSingleResult getOilFieldData(XContext context, GetWeatherDataViewInput input){
WeatherDataMapper weatherDataMapper = context.getBean(WeatherDataMapper.class);
QueryWrapper<WeatherDataEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(WeatherDataEnt::getId , input.getId());
WeatherDataEnt ent = weatherDataMapper.selectOne(queryWrapper);
return XSingleResult.success(ent);
}
@XApiAnonymous
@XApiGet
public XSingleResult getOilFieldDataView(XContext context, GetWeatherDataViewInput input){
WeatherDataViewMapper viewMapper = context.getBean(WeatherDataViewMapper.class);
WeatherDataView view = new WeatherDataView();
view.setId(input.getId());
view = viewMapper.selectOne(view);
return XSingleResult.success(view);
}
}
package gf.core.main.service.data.weather_data;
import java.math.BigDecimal;
import java.util.Date;
public class GetWeatherDataViewInput {
private int id;//主键
private String oilFieldName;//油田名称
private String wellSiteName;//井场
private String lineName;//线路名称
private BigDecimal lon;//经度
private BigDecimal lat;//纬度
private BigDecimal cap;//装机容量
private BigDecimal tilt;//阵列倾角
private BigDecimal azimuth;//阵列朝向
private Date utc;//世界时间
private Date cst;//北京时间
private BigDecimal seaPressure;//海平面气压
private BigDecimal surfacePressure;//地面气压
private BigDecimal temperature;//气温2m
private BigDecimal precipitation;//降水量(mm)
private BigDecimal snowFall;//降雪量
private BigDecimal snowDepth;//积雪深度
private BigDecimal snowDensity;//积雪密度
private BigDecimal snowLayerTemperature;//雪层温度
private BigDecimal surfaceTemperature;//地表温度
private BigDecimal dewPointTemperature;//露点温度
private BigDecimal relativeHumidity;//相对湿度
private BigDecimal evaporationCapacity;//蒸发量
private BigDecimal potentialEvaporation;//潜在蒸发量
private BigDecimal lonWindSpeed;//经向风速
private BigDecimal latWindSpeed;//纬向风速
private BigDecimal maximumGust;//最大阵风(上一小时内,m/s)
private BigDecimal cbh;//云底高度
private BigDecimal lcc;//低层云量
private BigDecimal mcc;//中层云量
private BigDecimal hcc;//高层云量
private BigDecimal tcc;//总云量
private BigDecimal totalSolarIrradiance;//总太阳辐射度(down,J/m2)
private BigDecimal netWolarIrradiance;//净太阳辐射度(net,J/m2)
private BigDecimal directRadiation;//直接辐射(J/m2)
private BigDecimal uvIntensity;//紫外强度(J/m2)
private BigDecimal runoff;//径流(mm)
private BigDecimal surfaceRunoff;//地表径流(mm)
private BigDecimal undergroundRunoff;//地下径流(mm)
private BigDecimal thunderstormProbability;//雷暴概率(TT,K)
private BigDecimal kIndex;//K指数(K)
private BigDecimal convectiveAvailablePotentialEnergy;//对流可用位能(J/kg)
private BigDecimal photovoltaicPowerGeneration;//光伏发电功率Kw
private BigDecimal totalSolarRadiation;//太阳总辐射Kwh/m2
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOilFieldName() {
return oilFieldName;
}
public void setOilFieldName(String oilFieldName) {
this.oilFieldName = oilFieldName;
}
public String getWellSiteName() {
return wellSiteName;
}
public void setWellSiteName(String wellSiteName) {
this.wellSiteName = wellSiteName;
}
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
public BigDecimal getLon() {
return lon;
}
public void setLon(BigDecimal lon) {
this.lon = lon;
}
public BigDecimal getLat() {
return lat;
}
public void setLat(BigDecimal lat) {
this.lat = lat;
}
public BigDecimal getCap() {
return cap;
}
public void setCap(BigDecimal cap) {
this.cap = cap;
}
public BigDecimal getTilt() {
return tilt;
}
public void setTilt(BigDecimal tilt) {
this.tilt = tilt;
}
public BigDecimal getAzimuth() {
return azimuth;
}
public void setAzimuth(BigDecimal azimuth) {
this.azimuth = azimuth;
}
public Date getUtc() {
return utc;
}
public void setUtc(Date utc) {
this.utc = utc;
}
public Date getCst() {
return cst;
}
public void setCst(Date cst) {
this.cst = cst;
}
public BigDecimal getSeaPressure() {
return seaPressure;
}
public void setSeaPressure(BigDecimal seaPressure) {
this.seaPressure = seaPressure;
}
public BigDecimal getSurfacePressure() {
return surfacePressure;
}
public void setSurfacePressure(BigDecimal surfacePressure) {
this.surfacePressure = surfacePressure;
}
public BigDecimal getTemperature() {
return temperature;
}
public void setTemperature(BigDecimal temperature) {
this.temperature = temperature;
}
public BigDecimal getPrecipitation() {
return precipitation;
}
public void setPrecipitation(BigDecimal precipitation) {
this.precipitation = precipitation;
}
public BigDecimal getSnowFall() {
return snowFall;
}
public void setSnowFall(BigDecimal snowFall) {
this.snowFall = snowFall;
}
public BigDecimal getSnowDepth() {
return snowDepth;
}
public void setSnowDepth(BigDecimal snowDepth) {
this.snowDepth = snowDepth;
}
public BigDecimal getSnowDensity() {
return snowDensity;
}
public void setSnowDensity(BigDecimal snowDensity) {
this.snowDensity = snowDensity;
}
public BigDecimal getSnowLayerTemperature() {
return snowLayerTemperature;
}
public void setSnowLayerTemperature(BigDecimal snowLayerTemperature) {
this.snowLayerTemperature = snowLayerTemperature;
}
public BigDecimal getSurfaceTemperature() {
return surfaceTemperature;
}
public void setSurfaceTemperature(BigDecimal surfaceTemperature) {
this.surfaceTemperature = surfaceTemperature;
}
public BigDecimal getDewPointTemperature() {
return dewPointTemperature;
}
public void setDewPointTemperature(BigDecimal dewPointTemperature) {
this.dewPointTemperature = dewPointTemperature;
}
public BigDecimal getRelativeHumidity() {
return relativeHumidity;
}
public void setRelativeHumidity(BigDecimal relativeHumidity) {
this.relativeHumidity = relativeHumidity;
}
public BigDecimal getEvaporationCapacity() {
return evaporationCapacity;
}
public void setEvaporationCapacity(BigDecimal evaporationCapacity) {
this.evaporationCapacity = evaporationCapacity;
}
public BigDecimal getPotentialEvaporation() {
return potentialEvaporation;
}
public void setPotentialEvaporation(BigDecimal potentialEvaporation) {
this.potentialEvaporation = potentialEvaporation;
}
public BigDecimal getLonWindSpeed() {
return lonWindSpeed;
}
public void setLonWindSpeed(BigDecimal lonWindSpeed) {
this.lonWindSpeed = lonWindSpeed;
}
public BigDecimal getLatWindSpeed() {
return latWindSpeed;
}
public void setLatWindSpeed(BigDecimal latWindSpeed) {
this.latWindSpeed = latWindSpeed;
}
public BigDecimal getMaximumGust() {
return maximumGust;
}
public void setMaximumGust(BigDecimal maximumGust) {
this.maximumGust = maximumGust;
}
public BigDecimal getCbh() {
return cbh;
}
public void setCbh(BigDecimal cbh) {
this.cbh = cbh;
}
public BigDecimal getLcc() {
return lcc;
}
public void setLcc(BigDecimal lcc) {
this.lcc = lcc;
}
public BigDecimal getMcc() {
return mcc;
}
public void setMcc(BigDecimal mcc) {
this.mcc = mcc;
}
public BigDecimal getHcc() {
return hcc;
}
public void setHcc(BigDecimal hcc) {
this.hcc = hcc;
}
public BigDecimal getTcc() {
return tcc;
}
public void setTcc(BigDecimal tcc) {
this.tcc = tcc;
}
public BigDecimal getTotalSolarIrradiance() {
return totalSolarIrradiance;
}
public void setTotalSolarIrradiance(BigDecimal totalSolarIrradiance) {
this.totalSolarIrradiance = totalSolarIrradiance;
}
public BigDecimal getNetWolarIrradiance() {
return netWolarIrradiance;
}
public void setNetWolarIrradiance(BigDecimal netWolarIrradiance) {
this.netWolarIrradiance = netWolarIrradiance;
}
public BigDecimal getDirectRadiation() {
return directRadiation;
}
public void setDirectRadiation(BigDecimal directRadiation) {
this.directRadiation = directRadiation;
}
public BigDecimal getUvIntensity() {
return uvIntensity;
}
public void setUvIntensity(BigDecimal uvIntensity) {
this.uvIntensity = uvIntensity;
}
public BigDecimal getRunoff() {
return runoff;
}
public void setRunoff(BigDecimal runoff) {
this.runoff = runoff;
}
public BigDecimal getSurfaceRunoff() {
return surfaceRunoff;
}
public void setSurfaceRunoff(BigDecimal surfaceRunoff) {
this.surfaceRunoff = surfaceRunoff;
}
public BigDecimal getUndergroundRunoff() {
return undergroundRunoff;
}
public void setUndergroundRunoff(BigDecimal undergroundRunoff) {
this.undergroundRunoff = undergroundRunoff;
}
public BigDecimal getThunderstormProbability() {
return thunderstormProbability;
}
public void setThunderstormProbability(BigDecimal thunderstormProbability) {
this.thunderstormProbability = thunderstormProbability;
}
public BigDecimal getkIndex() {
return kIndex;
}
public void setkIndex(BigDecimal kIndex) {
this.kIndex = kIndex;
}
public BigDecimal getConvectiveAvailablePotentialEnergy() {
return convectiveAvailablePotentialEnergy;
}
public void setConvectiveAvailablePotentialEnergy(BigDecimal convectiveAvailablePotentialEnergy) {
this.convectiveAvailablePotentialEnergy = convectiveAvailablePotentialEnergy;
}
public BigDecimal getPhotovoltaicPowerGeneration() {
return photovoltaicPowerGeneration;
}
public void setPhotovoltaicPowerGeneration(BigDecimal photovoltaicPowerGeneration) {
this.photovoltaicPowerGeneration = photovoltaicPowerGeneration;
}
public BigDecimal getTotalSolarRadiation() {
return totalSolarRadiation;
}
public void setTotalSolarRadiation(BigDecimal totalSolarRadiation) {
this.totalSolarRadiation = totalSolarRadiation;
}
}
package gf.core.main.utils;
import cnpc.cloud.auth.service.AuthCloudService;
import cnpc.cloud.auth.service.data.GetAuthBaseThirdAuthInput;
import cnpc.cloud.auth.service.data.GetAuthBaseThirdAuthOutput;
import xstartup.base.XContext;
import xstartup.base.XSelfServiceContext;
import xstartup.base.XSsoAuth;
import xstartup.base.XUser;
import xstartup.base.conf.XConfManager;
import xstartup.base.exception.XServiceException;
import xstartup.base.util.XUuidUtils;
import xstartup.core.base.provider.data.XToken;
import xstartup.data.XSingleResult;
import xstartup.feature.api.conf.XApiCookieConf;
import xstartup.helper.XTokenHelper;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* @author lixueyan
* @date 2023/4/7 0007 16:54
*/
public class SystemLoginUtil {
private static ConcurrentMap<String,String> tokenMap = new ConcurrentHashMap();
/**
* 定时任务系统登陆
*/
public static XContext systemLogin(XContext context, String tenantId){
context = XSelfServiceContext.build(SystemLoginUtil.class);
if(tokenMap.containsKey(tenantId)){
XSingleResult<XUser> result = XTokenHelper.loadUser(context, tokenMap.get(tenantId));
if(result.isSuccess()){
context.setUser(result.getResult());
return context;
}else{
tokenMap.remove(tenantId);
}
}
AuthCloudService authService = context.getBean(AuthCloudService.class);
GetAuthBaseThirdAuthInput input = new GetAuthBaseThirdAuthInput();
input.setId(Integer.valueOf(tenantId));
XSingleResult<GetAuthBaseThirdAuthOutput> result = authService.getTenantInfo(context, input);
result.throwIfFail();
GetAuthBaseThirdAuthOutput authOutput = result.getResult();
if(authOutput==null){
throw new XServiceException(999,"系统错误");
}
XApiCookieConf apiCookieConf = XConfManager.getConf(XApiCookieConf.class);
Integer expiresIn = apiCookieConf.getExpires();
String userName = authOutput.getTenantName(); //姓名
Long orgId = 1L; //组织机构id
Long roleId0 = 1L; //角色id1
Long roleId1 = 1L; //角色id2
Long userId = Long.valueOf(tenantId); //用户id
String userCode = authOutput.getAppId();//这个是用户字符串类型的唯一标志
String ssoToken = null; //sso系统授权的token
String ssoRefreshToken = null; //sso系统授权的刷新token
String uniqueId = XUuidUtils.randomUUID();
XUser user = XUser.createUser(XUser.ENTRY_API,
orgId,
new Long[]{roleId0, roleId1},
userId,
userCode,
authOutput.getSmsExtendedCode(), //userAccount 存储租户短信扩展码
userName,
new XSsoAuth(uniqueId, ssoToken, ssoRefreshToken));
XSingleResult<XToken> saveUserResult = XTokenHelper.saveUser(context, user, expiresIn);
saveUserResult.throwIfException();
tokenMap.putIfAbsent(tenantId,saveUserResult.getResult().getToken());
return context;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gf.core.main.mapper.WeatherDataViewMapper">
<resultMap id="BaseResultMap" type="gf.core.main.entity.WeatherDataView">
<id column="id" property="id" jdbcType="INTEGER" />
<id column="oil_field_name" property="oilFieldName" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List">
id,
oil_field_name,
well_site_name,
line_name,
lon,
lat,
cap,
tilt,
azimuth,
utc,
cst,
sea_pressure,
surface_pressure,
temperature,
precipitation,
snow_fall,
snow_depth,
snow_density,
snow_layer_temperature,
surface_temperature,
dew_point_temperature,
relative_humidity,
evaporation_capacity,
potential_evaporation,
lon_wind_speed,
lat_wind_speed,
maximum_gust,
cbh,
lcc,
mcc,
hcc,
tcc,
total_solar_irradiance,
net_solar_irradiance,
direct_radiation,
uv_intensity,
runoff,
surface_runoff,
underground_runoff,
thunderstorm_probability,
k_index,
convective_available_potential_energy,
photovoltaic_power_generation,
total_solar_radiation
</sql>
<select id="selectOne" parameterType="gf.core.main.entity.WeatherDataView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from weather_data
where
id=#{id}
</select>
<select id="selectList" parameterType="gf.core.main.entity.WeatherDataView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from weather_data
where
id=#{id}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>urdp-hub</artifactId>
<groupId>gf</groupId>
<version>1.0.0-gf</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>C01-main</artifactId>
<version>1.0.0-gf</version>
<packaging>pom</packaging>
<modules>
<module>gf-cloud-main</module>
<module>gf-core-main</module>
</modules>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-core</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-auth</artifactId>
<build>
<plugins>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration combine.self="override">
<archive>
<manifestEntries>
<Component-Group-Name>${project.groupId}</Component-Group-Name>
<Component-Artifactid>${project.artifactId}</Component-Artifactid>
<Component-Version>${project.version}</Component-Version>
<Component-Build-Time>${maven.build.timestamp}</Component-Build-Time>
<Component-Description>${project.description}</Component-Description>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package cnpc.cloud.auth.service;
import cnpc.cloud.auth.service.data.GetAuthBaseThirdAuthInput;
import cnpc.cloud.auth.service.data.GetAuthBaseThirdAuthOutput;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.data.XSingleResult;
@XService
public interface AuthCloudService {
@XText("获取租户信息")
public XSingleResult<GetAuthBaseThirdAuthOutput> getTenantInfo(XContext context, GetAuthBaseThirdAuthInput input);
}
package cnpc.cloud.auth.service.data;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
import java.util.Date;
public class GetAuthBaseThirdAuthInput {
@NotNull
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
package cnpc.cloud.auth.service.data;
import xstartup.annotation.XText;
import java.util.Date;
public class GetAuthBaseThirdAuthOutput {
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
public String getTenantName() {
return tenantName;
}
public void setTenantName(String tenantName) {
this.tenantName = tenantName;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getSmsSign() {
return smsSign;
}
public void setSmsSign(String smsSign) {
this.smsSign = smsSign;
}
public String getSmsExtendedCode() {
return smsExtendedCode;
}
public void setSmsExtendedCode(String smsExtendedCode) {
this.smsExtendedCode = smsExtendedCode;
}
public Boolean getState() {
return state;
}
public void setState(Boolean state) {
this.state = state;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-core</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0-gf</version>
<groupId>gf</groupId>
<artifactId>cnpc-core-auth</artifactId>
<dependencies>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-common</artifactId>
<version>1.0.0-gf</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-auth</artifactId>
<version>1.16.10-xstartup-cloud</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<configuration combine.self="override">
<archive>
<manifestEntries>
<Component-Group-Name>${project.groupId}</Component-Group-Name>
<Component-Artifactid>${project.artifactId}</Component-Artifactid>
<Component-Version>${project.version}</Component-Version>
<Component-Build-Time>${maven.build.timestamp}</Component-Build-Time>
<Component-Description>${project.description}</Component-Description>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package cnpc.core.auth.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import xstartup.annotation.XText;
@TableName("auth_base_third_auth")
public class AuthBaseThirdAuthEnt implements Serializable {
@XText("主键")
@TableId(type = IdType.AUTO)
private Integer id;
@XText("租户名称")
@TableField
private String tenantName;
@XText("应用id")
@TableField
private String appId;
@XText("密钥key")
@TableField
private String secretKey;
@XText("短信签名")
@TableField
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
@TableField
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
@TableField
private Boolean state;
@XText("备注")
@TableField
private String remark;
@XText("创建人id")
@TableField
private Integer createById;
@XText("创建人名称")
@TableField
private String createByName;
@XText("创建时间")
@TableField
private Date createTime;
@XText("修改人id")
@TableField
private Integer modifyById;
@XText("修改人名称")
@TableField
private String modifyByName;
@XText("修改时间")
@TableField
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.entity;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import xstartup.annotation.XText;
public class AuthBaseThirdAuthView implements Serializable {
@XText("主键")
@TableField
private Integer id;
@XText("租户名称")
@TableField
private String tenantName;
@XText("应用id")
@TableField
private String appId;
@XText("密钥key")
@TableField
private String secretKey;
@XText("短信签名")
@TableField
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
@TableField
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
@TableField
private Boolean state;
@XText("备注")
@TableField
private String remark;
@XText("创建人id")
@TableField
private Integer createById;
@XText("创建人名称")
@TableField
private String createByName;
@XText("创建时间")
@TableField
private Date createTime;
@XText("修改人id")
@TableField
private Integer modifyById;
@XText("修改人名称")
@TableField
private String modifyByName;
@XText("修改时间")
@TableField
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.error;
import xstartup.error.XError;
/**
* @author lixueyan
* @date 2023/5/31 0031 17:39
*/
public enum AuthError implements XError {
Tenant_Not_Exists_Error(1002001,"租户不存在"),
Secret_Has_Error(1002002,"密钥错误"),
Timestamp_Has_Error(1002003,"请求时间戳错误"),
;
private int code;
private String text;
AuthError(int code, String text) {
this.code = code;
this.text = text;
}
@Override
public int getCode() {
return code;
}
@Override
public String getText() {
return text;
}
}
package cnpc.core.auth.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import cnpc.core.auth.entity.AuthBaseThirdAuthEnt;
@Repository(value="cnpc.core.auth.mapper.AuthBaseThirdAuthMapper")
public interface AuthBaseThirdAuthMapper extends BaseMapper<AuthBaseThirdAuthEnt> {
}
package cnpc.core.auth.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import cnpc.core.auth.entity.AuthBaseThirdAuthView;
import java.util.List;
@Repository(value="cnpc.core.auth.mapper.AuthBaseThirdAuthViewMapper")
public interface AuthBaseThirdAuthViewMapper {
AuthBaseThirdAuthView selectOne(AuthBaseThirdAuthView record);
List<AuthBaseThirdAuthView> selectList(AuthBaseThirdAuthView record);
}
package cnpc.core.auth.module;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XModule;
@XText("认证模块")
public class CnpcCoreAuthModule extends XModule {
protected CnpcCoreAuthModule() {
super(1002);
}
@Override
protected void onStarted(XContext context) {
//配置信息 自定义实现类
}
}
package cnpc.core.auth.mybatis;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import xstartup.service.mybatis.XMybatis;
/**
* mybatis 配置类
*/
@Component
@EnableTransactionManagement
@MapperScan(sqlSessionTemplateRef = "sqlSessionTemplateRef.cnpc.core.auth",
sqlSessionFactoryRef = "sqlSessionFactoryRef.cnpc.core.auth",
basePackages = {"cnpc.core.auth.mapper"})
public class CnpcCoreAuthMybatis extends XMybatis {
}
package cnpc.core.auth.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XSsoAuth;
import xstartup.base.XUser;
import xstartup.base.conf.XConfManager;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XUuidUtils;
import xstartup.core.base.provider.data.XToken;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.api.conf.XApiCookieConf;
import xstartup.helper.XTokenHelper;
import java.util.Date;
@XService
public class AuthService {
}
package cnpc.core.auth.service.data.auth;
import jakarta.validation.constraints.NotNull;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/31 0031 17:32
*/
public class GetAccessTokenInput {
@XText("应用id")
@NotNull
private String appId;
@XText("时间戳")
@NotNull
private Long timestamp;
@XText("签名信息 , 对{appId}+{timestamp}使用AES加密后的数据")
@NotNull
private String sign;
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public Long getTimestamp() {
return timestamp;
}
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}
}
package cnpc.core.auth.service.data.auth;
/**
* @author lixueyan
* @date 2023/6/1 0001 14:37
*/
public class GetAccessTokenModel {
private String appId;
private String secretKey;
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
}
package cnpc.core.auth.service.data.auth;
import xstartup.annotation.XText;
/**
* @author lixueyan
* @date 2023/5/31 0031 17:32
*/
public class GetAccessTokenOutput {
@XText("token")
private String token;
@XText("过期时间,单位s")
private Integer expiresIn;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public Integer getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(Integer expiresIn) {
this.expiresIn = expiresIn;
}
}
package cnpc.core.auth.service.data.auth;
public class TestTokenOutput {
private String tenantName;
public String getTenantName() {
return tenantName;
}
public void setTenantName(String tenantName) {
this.tenantName = tenantName;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class CreateAuthBaseThirdAuthInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class CreateAuthBaseThirdAuthOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class DeleteAuthBaseThirdAuthInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class DeleteAuthBaseThirdAuthOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class DynamicQueryAuthBaseThirdAuthInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class DynamicQueryAuthBaseThirdAuthOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class DynamicQueryAuthBaseThirdAuthViewOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class GetAuthBaseThirdAuthInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class GetAuthBaseThirdAuthOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class GetAuthBaseThirdAuthViewInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class GetAuthBaseThirdAuthViewOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
import xstartup.base.data.XPageInput;
public class QueryAuthBaseThirdAuthInput extends XPageInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
import xstartup.base.data.XPageInput;
public class QueryAuthBaseThirdAuthOutput extends XPageInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
import xstartup.base.data.XPageInput;
public class QueryAuthBaseThirdAuthViewInput extends XPageInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
import xstartup.base.data.XPageInput;
public class QueryAuthBaseThirdAuthViewOutput extends XPageInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class UpdateAuthBaseThirdAuthInput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
package cnpc.core.auth.service.data.auth_base_third_auth;
import xstartup.annotation.XText;
import java.util.Date;
import java.math.BigDecimal;
public class UpdateAuthBaseThirdAuthOutput {
@XText("主键")
private Integer id;
@XText("租户名称")
private String tenantName;
@XText("应用id")
private String appId;
@XText("密钥key")
private String secretKey;
@XText("短信签名")
private String smsSign;
@XText("短信扩展码(短信回复时,区分业务类型)")
private String smsExtendedCode;
@XText("状态(0:禁用,1:启用)")
private Boolean state;
@XText("备注")
private String remark;
@XText("创建人id")
private Integer createById;
@XText("创建人名称")
private String createByName;
@XText("创建时间")
private Date createTime;
@XText("修改人id")
private Integer modifyById;
@XText("修改人名称")
private String modifyByName;
@XText("修改时间")
private Date modifyTime;
public Integer getId() {
return this.id;
}
public void setId(Integer value) {
this.id = value;
}
public String getTenantName() {
return this.tenantName;
}
public void setTenantName(String value) {
this.tenantName = value;
}
public String getAppId() {
return this.appId;
}
public void setAppId(String value) {
this.appId = value;
}
public String getSecretKey() {
return this.secretKey;
}
public void setSecretKey(String value) {
this.secretKey = value;
}
public String getSmsSign() {
return this.smsSign;
}
public void setSmsSign(String value) {
this.smsSign = value;
}
public String getSmsExtendedCode() {
return this.smsExtendedCode;
}
public void setSmsExtendedCode(String value) {
this.smsExtendedCode = value;
}
public Boolean getState() {
return this.state;
}
public void setState(Boolean value) {
this.state = value;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String value) {
this.remark = value;
}
public Integer getCreateById() {
return this.createById;
}
public void setCreateById(Integer value) {
this.createById = value;
}
public String getCreateByName() {
return this.createByName;
}
public void setCreateByName(String value) {
this.createByName = value;
}
public Date getCreateTime() {
return this.createTime;
}
public void setCreateTime(Date value) {
this.createTime = value;
}
public Integer getModifyById() {
return this.modifyById;
}
public void setModifyById(Integer value) {
this.modifyById = value;
}
public String getModifyByName() {
return this.modifyByName;
}
public void setModifyByName(String value) {
this.modifyByName = value;
}
public Date getModifyTime() {
return this.modifyTime;
}
public void setModifyTime(Date value) {
this.modifyTime = value;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cnpc.core.auth.mapper.AuthBaseThirdAuthViewMapper">
<resultMap id="BaseResultMap" type="cnpc.core.auth.entity.AuthBaseThirdAuthView">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="tenant_name" property="tenantName" jdbcType="VARCHAR" />
<result column="app_id" property="appId" jdbcType="VARCHAR" />
<result column="secret_key" property="secretKey" jdbcType="VARCHAR" />
<result column="sms_sign" property="smsSign" jdbcType="VARCHAR" />
<result column="sms_extended_code" property="smsExtendedCode" jdbcType="VARCHAR" />
<result column="state" property="state" jdbcType="BIT" />
<result column="remark" property="remark" jdbcType="VARCHAR" />
<result column="create_by_id" property="createById" jdbcType="INTEGER" />
<result column="create_by_name" property="createByName" jdbcType="VARCHAR" />
<result column="create_time" property="createTime" jdbcType="DATE" />
<result column="modify_by_id" property="modifyById" jdbcType="INTEGER" />
<result column="modify_by_name" property="modifyByName" jdbcType="VARCHAR" />
<result column="modify_time" property="modifyTime" jdbcType="DATE" />
</resultMap>
<sql id="Base_Column_List">
id,
tenant_name,
app_id,
secret_key,
sms_sign,
sms_extended_code,
state,
remark,
create_by_id,
create_by_name,
create_time,
modify_by_id,
modify_by_name,
modify_time
</sql>
<select id="selectOne" parameterType="cnpc.core.auth.entity.AuthBaseThirdAuthView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from auth_base_third_auth
where
id=#{id}
</select>
<select id="selectList" parameterType="cnpc.core.auth.entity.AuthBaseThirdAuthView" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from auth_base_third_auth
where
id=#{id}
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>urdp-hub</artifactId>
<groupId>gf</groupId>
<version>1.0.0-gf</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>C02-auth</artifactId>
<packaging>pom</packaging>
<modules>
<module>cnpc-cloud-auth</module>
<module>cnpc-core-auth</module>
</modules>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>gf</groupId>
<modelVersion>4.0.0</modelVersion>
<artifactId>cnpc-dependency-all</artifactId>
<version>1.0.0-gf</version>
<packaging>jar</packaging>
<properties>
<cnpc.version>1.0.0-gf</cnpc.version>
<spring-cloud-huawei.version>1.8.0-2020.0.x</spring-cloud-huawei.version>
</properties>
<dependencies>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-common</artifactId>
<version>${cnpc.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>urdp-hub</artifactId>
<groupId>gf</groupId>
<version>1.0.0-gf</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>D01-dependency</artifactId>
<version>1.0.0-gf</version>
<packaging>pom</packaging>
<modules>
<module>cnpc-dependency-all</module>
</modules>
</project>
FROM java:8
EXPOSE 10087
VOLUME /tmp
ADD deploy-main.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-parent-app</artifactId>
<version>1.16.10-xstartup-cloud</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>deploy-main</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<properties>
<project.mainClass>app.DeployGfMainApplication</project.mainClass>
<cnpc.version>1.0.0-gf</cnpc.version>
<docker.plugin.version>1.1.1</docker.plugin.version>
<maven.build.timestamp.format>yyyy.MMdd.HHmmss</maven.build.timestamp.format>
</properties>
<dependencies>
<dependency>
<groupId>gf</groupId>
<artifactId>gf-core-main</artifactId>
<version>${cnpc.version}</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-cloud-main</artifactId>
<version>${cnpc.version}</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-core-auth</artifactId>
<version>${cnpc.version}</version>
</dependency>
<dependency>
<groupId>gf</groupId>
<artifactId>cnpc-dependency-all</artifactId>
<version>${cnpc.version}</version>
</dependency>
<dependency>
<groupId>xstartup-cloud</groupId>
<artifactId>xstartup-cloud-feature-alibaba</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>xstartup</groupId>
<artifactId>xstartup-feature-mybatis</artifactId>
</dependency>
<dependency>
<groupId>xstartup</groupId>
<artifactId>xstartup-toolkit-kafka</artifactId>
</dependency>
<dependency>
<groupId>xstartup</groupId>
<artifactId>xstartup-feature-swagger-doc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
<profiles>
<!-- 开发环境,默认激活 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 生产环境 -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
<!--开发测试环境 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<!--sit -->
<profile>
<id>sit</id>
<properties>
<env>sit</env>
</properties>
</profile>
<!--vpn连接开发环境 -->
<profile>
<id>vpn</id>
<properties>
<env>vpn</env>
</properties>
</profile>
<!--uat -->
<profile>
<id>uat</id>
<properties>
<env>uat</env>
</properties>
</profile>
<!--xcd开发环境 -->
<profile>
<id>stg</id>
<properties>
<env>stg</env>
</properties>
</profile>
</profiles>
<build>
<filters>
<filter>../filters/filter-${env}.properties</filter>
</filters>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.7</version>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
package app;
import xstartup.base.XStartup;
import xstartup.base.conf.XServerConf;
import xstartup.base.conf.XServiceConf;
import xstartup.base.util.XEncryptUtils;
import xstartup.boot.XStartupApplication;
import xstartup.feature.XSwaggerDocFeature;
import xstartup.feature.api.XApiFeature;
import xstartup.feature.api.conf.XApiCookieConf;
import xstartup.feature.mybatis.XMybatisFeature;
import xstartup.feature.rpc.XRpcFeature;
public class DeployGfMainApplication {
public static void main(String... args) {
System.out.println(XEncryptUtils.encrypt("Gauss_234"));
XStartup startup = new XStartupApplication("gf");
startup.config(new XServerConf(22061).naming("gf-main"))
.config(new XServiceConf("gf"));
startup.enable(XApiFeature.class)
.config(new XApiCookieConf("%4bH8s9&",43200));
startup.enable(XSwaggerDocFeature.class);
startup.enable(XMybatisFeature.class);
startup.enable(XRpcFeature.class);
startup.run(args);
}
}
x.app.env=${env}
x.app.buildtime=${maven.build.timestamp}
#session
x.session.cache.key-prefix=gf
x.log.level=@x.log.level@
x.log.directory=@x.log.directory@
x.server.name=gf-main
x.server.port=@x.server.port.main@
x.server.host=127.0.0.1
#task
x.job.service=cnpc.core.task.job.SmsReportJob,cnpc.core.task.job.SmsReplyJob,cnpc.core.task.job.MessageSendTaskJob,cnpc.core.task.job.MessageSendTaskPlanJob
# redis
x.cache.type=@x.cache.type@
x.cache.host=@x.cache.host@
x.cache.port=@x.cache.port@
x.cache.auth=@x.cache.auth@
x.cache.db=@x.cache.db@
#mqs
x.mq.factory=@x.mq.factory@
x.mq.host=@x.mq.host@
x.mq.port=@x.mq.port@
x.mq.vhost=null
x.mq.username=@x.mq.username@
x.mq.password=@x.mq.password@
x.mq.group=group_system
x.mq.consumer-type=pull
x.mq.ssl-truststore-location=@x.mq.ssl-truststore-location@
x.mq.sasl-mechanism=@x.mq.sasl-mechanism@
x.mq.ssl-endpoint-identification-algorithm=
# datasource
x.db.sharding=@x.db.sharding@
x.db.driver=@x.db.driver@
x.db.url=@x.db.url@
x.db.user=@x.db.user@
x.db.password=@x.db.password@
x.db.naming=@x.db.naming@
x.db.cnpc.core.message.sharding=@x.db.cnpc.core.message.sharding@
x.db.cnpc.core.message.driver=@x.db.cnpc.core.message.driver@
x.db.cnpc.core.message.url=@x.db.cnpc.core.message.url@
x.db.cnpc.core.message.user=@x.db.cnpc.core.message.user@
x.db.cnpc.core.message.password=@x.db.cnpc.core.message.password@
x.db.cnpc.core.message.naming=@x.db.cnpc.core.message.naming@
x.db.cnpc.core.auth.sharding=@x.db.cnpc.core.auth.sharding@
x.db.cnpc.core.auth.driver=@x.db.cnpc.core.auth.driver@
x.db.cnpc.core.auth.url=@x.db.cnpc.core.auth.url@
x.db.cnpc.core.auth.user=@x.db.cnpc.core.auth.user@
x.db.cnpc.core.auth.password=@x.db.cnpc.core.auth.password@
x.db.cnpc.core.auth.naming=@x.db.cnpc.core.auth.naming@
#注册中心
x.cloud.discovery.server-addr=@x.cloud.discovery.server-addr@
x.cloud.discovery.namespace=@x.cloud.discovery.namespace@
x.cloud.discovery.group=@x.cloud.discovery.group@
x.cloud.discovery.username=@x.cloud.discovery.username@
x.cloud.discovery.password=@x.cloud.discovery.password@
#配置中心
x.cloud.config.server-addr=@x.cloud.config.server-addr@
x.cloud.config.namespace=@x.cloud.config.namespace@
x.cloud.config.group=@x.cloud.config.group@
x.cloud.config.file-extension=@x.cloud.config.file-extension@
x.cloud.config.username=@x.cloud.config.username@
x.cloud.config.password=@x.cloud.config.password@
x.server.port.all=10078
x.server.port.gateway=10079
x.server.port.main=10087
x.server.port.system=10088
x.server.host=127.0.0.1
#自定义配置
#日志级别配置
x.log.level=debug
x.log.directory=/home/cnpc/log
# redis
x.cache.type=redis
x.cache.host=10.28.89.16
x.cache.port=6379
x.cache.auth=eQRaprI3J27PVlA==
x.cache.db=0
x.mq.factory=xstartup.toolkit.mq.kafka.SaslSslKafkaMqFactory
x.mq.host=10.21.140.83,10.21.140.83,10.21.140.83
x.mq.port=9096,9097,9095
x.mq.username=
x.mq.password=
x.mq.group=group002
x.mq.sasl-mechanism=PLAIN
x.mq.ssl-endpoint-identification-algorithm=
x.mq.ssl-truststore-location=classpath:kafka/truststore-uat.jks
# datasource
x.db.sharding=1
x.db.driver=com.mysql.jdbc.Driver
x.db.url=jdbc:mysql://81.70.29.235:3306/gf_demo?characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
x.db.user=gf_demo
x.db.password=yCimDc1KyfJbgDJ3p7Cqyg==
x.db.naming=snake-case
x.db.cnpc.core.message.sharding=1
x.db.cnpc.core.message.driver=com.mysql.jdbc.Driver
x.db.cnpc.core.message.url=jdbc:mysql://81.70.29.235:3306/gf_demo?characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
x.db.cnpc.core.message.user=gf_demo
x.db.cnpc.core.message.password=yCimDc1KyfJbgDJ3p7Cqyg==
x.db.cnpc.core.message.naming=snake-case
x.db.cnpc.core.auth.sharding=1
x.db.cnpc.core.auth.driver=com.mysql.jdbc.Driver
x.db.cnpc.core.auth.url=jdbc:mysql://81.70.29.235:3306/gf_demo?characterEncoding=utf8&allowEncodingChanges=true&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
x.db.cnpc.core.auth.user=gf_demo
x.db.cnpc.core.auth.password=yCimDc1KyfJbgDJ3p7Cqyg==
x.db.cnpc.core.auth.naming=snake-case
#nacos-注册中心
x.cloud.discovery.server-addr=10.28.88.149:8848
x.cloud.discovery.namespace=public
x.cloud.discovery.group=DEFAULT_GROUP
x.cloud.discovery.username=nacos
x.cloud.discovery.password=$dO2NsG
#nacos-配置中心
x.cloud.config.server-addr=10.28.88.149:8848
x.cloud.config.namespace=public
x.cloud.config.group=DEFAULT_GROUP
x.cloud.config.file-extension=properties
x.cloud.config.username=nacos
x.cloud.config.password=$dO2NsG
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>D03-deploy</artifactId>
<groupId>gf</groupId>
<version>1.0.0-gf</version>
<packaging>pom</packaging>
<modules>
<module>deploy-gf-main</module>
</modules>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>xstartup-hz</id>
<url>http://dev.sunboxauto.com/HZ/_packaging/xstartup-hz/maven/v1</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</project>
**项目介绍**
-
-
**模块划分**
```csv
模块名称 模块编码
cnpc-common 1000
cnpc-message 1001
cnpc-auth 1002
cnpc-task 1003
cnpc-third-im 1110
cnpc-third-sms 1111
```
**项目模块**
- C00-common 公共模块:通用Util、基础服务接口、基础dao接口、异常、分页等
- C01-message 消息模块:接收业务系统的消息发送请求并做相应处理转发到 im、sms、email等服务中
- D00-third-party 调用第三方模块:im、短信等
- D01-dependency 模块的依赖整合模块:
- D03-deploy 微服务整合部署模块, 各种Application
**项目结构**
```
platform
├─C00-common 公共模块
├─C01-message 消息模块
│ ├─cnpc-message-core 消息-核心模块:
│ │ ├─cnpc.core.message module 总包名
│ │ │ ├─constant 常量
│ │ │ ├─entity 实体
│ │ │ ├─mapper 映射
│ │ │ ├─module 包含的模块,以及初始化架构模块实现类
│ │ │ ├─mybatis mybatis 配置类
│ │ │ ├─service 服务实现类
│ │ │ │ ├─data.{表名} 出入参model
│ │ │ ├─utils 工具类
│ │ │ ├─provider.impl 架构基础功能实现类
│ ├─cnpc-message-cloud 消息-api模块:
├─D00-third-party 调用第三方模块
├─D01-dependency 产品依赖整合模块
├─D03-deploy 微服务部署模块
│ ├─deploy-cnpc-auth 认证服务
│ ├─deploy-cnpc-message 系统服务
```
**项目模块编号(错误码基号)**
- C00-common 1000
- C01-message 1001
*third-party 以2000为基号*
- cnpc-third-im 2001
- cnpc-third-sms 2002
**快速开始:**
```shell
1 导入项目
pom.xml
2 执行
mvn clean install
```
```shell
1 导入项目
D03-deploy/pom.xml
2 执行
mvn clean package
```
<br>
**技术选型:**
- 核心框架:Spring Boot 2.6.7 + Spring Cloud 3.1.1 + Spring 5.3.19
- 持久层框架:MyBatis 3.5
- 缓存中间件:Redis 4.x
- 定时器:Quartz 2.3
- 日志管理:Logback
- 接口文档:Swagger3.x
- 数据库版本管理:Flayway6.x
- 数据校验:JSR303
- 方法构建:Lombook
<br>
**项目架构**
1、springboot + flyway + swagger + alibaba
**项目规范**
一、 命名规范
- 1、遵守java命名规范
- 2、在常量与变量的命名时,表示类型的名词放在词尾
二、结构规范
- 1、每个模块包括 core 和 api 两部分,core模块之间不可依赖
三、表命名规范
- 1、小写
- 2、公用模块表命名 以base_ 为前缀,业务含义的英文单词结尾,多个中间添加 下划线“_”
四、表结构升级规范
- 1、flyway 规范
**技术点**
- 分布式id: gaussdb 的UUID 数据类型,不合适用于分布式数据库中,可能产生相同UUID,建议业间件平台提供的分布式ID
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>gf</groupId>
<artifactId>urdp-hub</artifactId>
<packaging>pom</packaging>
<version>1.0.0-gf</version>
<modules>
<module>C00-common</module>
<module>C01-main</module>
<module>D01-dependency</module>
<module>C02-auth</module>
</modules>
</project>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment