tao.mo

项目初始化

mt
2024年10月31日17:21:37
Showing 90 changed files with 3806 additions and 445 deletions
echo '###############################自动打包,打包后的文件生成在../../server目录下####################################'
echo '###############################自动打包,打包后的文件生成在../../package目录下####################################'
#环境
profile='prod'
profile=$1
echo '######## 打包环境: '${profile}
#maven打包版本
echo '######## maven打包版本: '${sVersion}
sh ./init.sh
cd ../../server
echo init start!
cd ../../
base_dir=`pwd`
pName='package'
server='server'
rm -f $base_dir/*.war
echo '######## 删除所有war包'
mkdir $base_dir/${pName}
rm -f $base_dir/${pName}/*.war
echo '######## 清除历史war包'
moduleName='bus-customer'
version='1.2.9'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
cd $base_dir/${server}/common-dao
mvn clean install -Dmaven.test.skip=true
moduleName='bus-employees'
version='1.2.9'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
cd $base_dir/${server}/common-dependencies
mvn clean install -Dmaven.test.skip=true
moduleName='kafka-cndc-output'
version='1.2.9'
moduleName='kafka-cndc-server'
sVersion='1.0.0'
version='1.0.0'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
cd $base_dir/${server}/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
oriName=${moduleName}-${sVersion}_${profile}.war.original
tarName=${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${pName}/${tarName}
echo '######## 打包完成目录: '$base_dir/${pName}/${tarName}
moduleName='manager-server'
version='1.2.9'
moduleName='biz-customer'
sVersion='1.0.0'
version='1.0.0'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
cd $base_dir/${server}/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
oriName=${moduleName}-${sVersion}_${profile}.war.original
tarName=${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${pName}/${tarName}
echo '######## 打包完成目录: '$base_dir/${pName}/${tarName}
moduleName='openapi-server'
version='1.2.9'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
moduleName='task-schedule'
version='1.2.9'
moduleName='manager-server'
sVersion='1.0.0'
version='1.0.0'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
cd $base_dir/${server}/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
oriName=${moduleName}-${sVersion}_${profile}.war.original
tarName=${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${pName}/${tarName}
echo '######## 打包完成目录: '$base_dir/${pName}/${tarName}
moduleName='config-center'
version='1.2.9'
moduleName='manager-server'
sVersion='1.0.0'
version='1.0.0'
echo '######## 打包模块: '${moduleName}
cd $base_dir/${moduleName}
cd $base_dir/${server}/${moduleName}
mvn clean install -Dmaven.test.skip=true -P$profile
oriName=exp-${moduleName}-${version}_${profile}.war.original
tarName=exp-${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${tarName}
echo '######## 打包完成目录: '$base_dir/${tarName}
oriName=${moduleName}-${sVersion}_${profile}.war.original
tarName=${moduleName}-${version}_${profile}.war
cp target/${oriName} $base_dir && mv $base_dir/${oriName} $base_dir/${pName}/${tarName}
echo '######## 打包完成目录: '$base_dir/${pName}/${tarName}
echo install finished!
......
......@@ -239,12 +239,6 @@
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
......
......@@ -35,11 +35,15 @@
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>common-dependencies</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>base-starter</artifactId>
<version>1.0.0</version>
<scope>${install.scope}</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
......
server:
port: 8086
port: 8081
servlet:
context-path: /biz-customer
session:
......@@ -22,8 +22,7 @@ spring:
mybatis:
mapper-locations:
- classpath*:com/fedex/export/**/mapper/*.xml
- classpath*:com/fedex/export/**/mapper/log/*.xml
- classpath*:com/fedex/connect/**/mapper/**/*.xml
configuration:
#开启驼峰与下划线转换
map-underscore-to-camel-case: true
......
......@@ -2,11 +2,11 @@
<configuration>
<springProfile name="dev,uat,prod">
<!-- 日志存放路径 -->
<property name="log.path" value="/var/fedex/iclearconnect/weblogic/iclearconnect/export-tw-server" />
<property name="log.path" value="/var/fedex/iclearConnect/weblogic/iclearConnect/biz-customer" />
</springProfile>
<springProfile name="test">
<!-- 日志存放路径 -->
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearconnect/export-tw-server"></property>
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearConnect/biz-customer"></property>
</springProfile>
<!-- 日志输出格式 -->
<property name="log.pattern"
......@@ -109,10 +109,16 @@
<root level="info">
<appender-ref ref="console"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.customer.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.customer.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......@@ -121,10 +127,16 @@
<appender-ref ref="file_info"></appender-ref>
<appender-ref ref="file_error"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.customer.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.customer.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......
......@@ -20,9 +20,16 @@
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.erry</groupId>
<artifactId>imac-common</artifactId>
<version>0.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
......
package com.fedex.connect.common.dao.bi;
\ No newline at end of file
package com.fedex.connect.common.dao;
\ No newline at end of file
......@@ -2,9 +2,8 @@ package com.fedex.connect.common.dao.sys;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import com.fedex.connect.common.model.sys.KafkaStorageHistoryExample;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface KafkaStorageHistoryMapper {
long countByExample(KafkaStorageHistoryExample example);
......
package com.fedex.connect.common.mapper.bi;
\ No newline at end of file
package com.fedex.connect.common.mapper;
\ No newline at end of file
......@@ -10,6 +10,502 @@
<result column="SEND_TIME" jdbcType="TIMESTAMP" property="sendTime" />
<result column="CONSIGNMENT_CODE" jdbcType="VARCHAR" property="consignmentCode" />
<result column="FREQUENCY" jdbcType="NUMERIC" property="frequency" />
<result column="STATUS" jdbcType="NUMERIC" property="status" />
<result column="STATUS_NAME" jdbcType="VARCHAR" property="statusName" />
<result column="REMARK" jdbcType="VARCHAR" property="remark" />
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
<result column="CREATE_USER_ID" jdbcType="NUMERIC" property="createUserId" />
<result column="CREATE_USER_NAME" jdbcType="VARCHAR" property="createUserName" />
<result column="MODIFY_TIME" jdbcType="TIMESTAMP" property="modifyTime" />
<result column="MODIFY_USER_ID" jdbcType="NUMERIC" property="modifyUserId" />
<result column="MODIFY_USER_NAME" jdbcType="VARCHAR" property="modifyUserName" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<result column="DATA" jdbcType="CLOB" property="data" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
<foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause">
<where>
<foreach collection="example.oredCriteria" item="criteria" separator="or">
<if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List">
ID, MESSAGE_ID, MESSAGE_CODE, SENDER_ID, RECEIVER_ID, SEND_TIME, CONSIGNMENT_CODE,
FREQUENCY, STATUS, STATUS_NAME, REMARK, CREATE_TIME, CREATE_USER_ID, CREATE_USER_NAME,
MODIFY_TIME, MODIFY_USER_ID, MODIFY_USER_NAME
</sql>
<sql id="Blob_Column_List">
DATA
</sql>
<select id="selectByExampleWithBLOBs" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample" resultMap="ResultMapWithBLOBs">
select
<if test="distinct">
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
</select>
<select id="selectByExample" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample" resultMap="BaseResultMap">
<include refid="OracleDialectPrefix" />
select
<if test="distinct">
distinct
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<include refid="OracleDialectSuffix" />
</select>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="ResultMapWithBLOBs">
select
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
where ID = #{id,jdbcType=NUMERIC}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from T_SYS_KAFKA_STORAGE_HISTORY
where ID = #{id,jdbcType=NUMERIC}
</delete>
<delete id="deleteByExample" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample">
delete from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_STORAGE_HISTORY (ID, MESSAGE_ID, MESSAGE_CODE,
SENDER_ID, RECEIVER_ID, SEND_TIME,
CONSIGNMENT_CODE, FREQUENCY, STATUS,
STATUS_NAME, REMARK, CREATE_TIME,
CREATE_USER_ID, CREATE_USER_NAME, MODIFY_TIME,
MODIFY_USER_ID, MODIFY_USER_NAME, DATA
)
values (#{id,jdbcType=NUMERIC}, #{messageId,jdbcType=VARCHAR}, #{messageCode,jdbcType=VARCHAR},
#{senderId,jdbcType=VARCHAR}, #{receiverId,jdbcType=VARCHAR}, #{sendTime,jdbcType=TIMESTAMP},
#{consignmentCode,jdbcType=VARCHAR}, #{frequency,jdbcType=NUMERIC}, #{status,jdbcType=NUMERIC},
#{statusName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{createUserId,jdbcType=NUMERIC}, #{createUserName,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP},
#{modifyUserId,jdbcType=NUMERIC}, #{modifyUserName,jdbcType=VARCHAR}, #{data,jdbcType=CLOB}
)
</insert>
<insert id="insertSelective" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_STORAGE_HISTORY
<trim prefix="(" suffix=")" suffixOverrides=",">
ID,
<if test="messageId != null">
MESSAGE_ID,
</if>
<if test="messageCode != null">
MESSAGE_CODE,
</if>
<if test="senderId != null">
SENDER_ID,
</if>
<if test="receiverId != null">
RECEIVER_ID,
</if>
<if test="sendTime != null">
SEND_TIME,
</if>
<if test="consignmentCode != null">
CONSIGNMENT_CODE,
</if>
<if test="frequency != null">
FREQUENCY,
</if>
<if test="status != null">
STATUS,
</if>
<if test="statusName != null">
STATUS_NAME,
</if>
<if test="remark != null">
REMARK,
</if>
<if test="createTime != null">
CREATE_TIME,
</if>
<if test="createUserId != null">
CREATE_USER_ID,
</if>
<if test="createUserName != null">
CREATE_USER_NAME,
</if>
<if test="modifyTime != null">
MODIFY_TIME,
</if>
<if test="modifyUserId != null">
MODIFY_USER_ID,
</if>
<if test="modifyUserName != null">
MODIFY_USER_NAME,
</if>
<if test="data != null">
DATA,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{id,jdbcType=NUMERIC},
<if test="messageId != null">
#{messageId,jdbcType=VARCHAR},
</if>
<if test="messageCode != null">
#{messageCode,jdbcType=VARCHAR},
</if>
<if test="senderId != null">
#{senderId,jdbcType=VARCHAR},
</if>
<if test="receiverId != null">
#{receiverId,jdbcType=VARCHAR},
</if>
<if test="sendTime != null">
#{sendTime,jdbcType=TIMESTAMP},
</if>
<if test="consignmentCode != null">
#{consignmentCode,jdbcType=VARCHAR},
</if>
<if test="frequency != null">
#{frequency,jdbcType=NUMERIC},
</if>
<if test="status != null">
#{status,jdbcType=NUMERIC},
</if>
<if test="statusName != null">
#{statusName,jdbcType=VARCHAR},
</if>
<if test="remark != null">
#{remark,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="createUserId != null">
#{createUserId,jdbcType=NUMERIC},
</if>
<if test="createUserName != null">
#{createUserName,jdbcType=VARCHAR},
</if>
<if test="modifyTime != null">
#{modifyTime,jdbcType=TIMESTAMP},
</if>
<if test="modifyUserId != null">
#{modifyUserId,jdbcType=NUMERIC},
</if>
<if test="modifyUserName != null">
#{modifyUserName,jdbcType=VARCHAR},
</if>
<if test="data != null">
#{data,jdbcType=CLOB},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample" resultType="java.lang.Long">
select count(*) from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
<set>
<if test="record.id != null">
ID = #{record.id,jdbcType=NUMERIC},
</if>
<if test="record.messageId != null">
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
</if>
<if test="record.messageCode != null">
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
</if>
<if test="record.senderId != null">
SENDER_ID = #{record.senderId,jdbcType=VARCHAR},
</if>
<if test="record.receiverId != null">
RECEIVER_ID = #{record.receiverId,jdbcType=VARCHAR},
</if>
<if test="record.sendTime != null">
SEND_TIME = #{record.sendTime,jdbcType=TIMESTAMP},
</if>
<if test="record.consignmentCode != null">
CONSIGNMENT_CODE = #{record.consignmentCode,jdbcType=VARCHAR},
</if>
<if test="record.frequency != null">
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
</if>
<if test="record.status != null">
STATUS = #{record.status,jdbcType=NUMERIC},
</if>
<if test="record.statusName != null">
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
</if>
<if test="record.remark != null">
REMARK = #{record.remark,jdbcType=VARCHAR},
</if>
<if test="record.createTime != null">
CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
</if>
<if test="record.createUserId != null">
CREATE_USER_ID = #{record.createUserId,jdbcType=NUMERIC},
</if>
<if test="record.createUserName != null">
CREATE_USER_NAME = #{record.createUserName,jdbcType=VARCHAR},
</if>
<if test="record.modifyTime != null">
MODIFY_TIME = #{record.modifyTime,jdbcType=TIMESTAMP},
</if>
<if test="record.modifyUserId != null">
MODIFY_USER_ID = #{record.modifyUserId,jdbcType=NUMERIC},
</if>
<if test="record.modifyUserName != null">
MODIFY_USER_NAME = #{record.modifyUserName,jdbcType=VARCHAR},
</if>
<if test="record.data != null">
DATA = #{record.data,jdbcType=CLOB},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExampleWithBLOBs" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
SENDER_ID = #{record.senderId,jdbcType=VARCHAR},
RECEIVER_ID = #{record.receiverId,jdbcType=VARCHAR},
SEND_TIME = #{record.sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{record.consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
STATUS = #{record.status,jdbcType=NUMERIC},
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
REMARK = #{record.remark,jdbcType=VARCHAR},
CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
CREATE_USER_ID = #{record.createUserId,jdbcType=NUMERIC},
CREATE_USER_NAME = #{record.createUserName,jdbcType=VARCHAR},
MODIFY_TIME = #{record.modifyTime,jdbcType=TIMESTAMP},
MODIFY_USER_ID = #{record.modifyUserId,jdbcType=NUMERIC},
MODIFY_USER_NAME = #{record.modifyUserName,jdbcType=VARCHAR},
DATA = #{record.data,jdbcType=CLOB}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
SENDER_ID = #{record.senderId,jdbcType=VARCHAR},
RECEIVER_ID = #{record.receiverId,jdbcType=VARCHAR},
SEND_TIME = #{record.sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{record.consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
STATUS = #{record.status,jdbcType=NUMERIC},
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
REMARK = #{record.remark,jdbcType=VARCHAR},
CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
CREATE_USER_ID = #{record.createUserId,jdbcType=NUMERIC},
CREATE_USER_NAME = #{record.createUserName,jdbcType=VARCHAR},
MODIFY_TIME = #{record.modifyTime,jdbcType=TIMESTAMP},
MODIFY_USER_ID = #{record.modifyUserId,jdbcType=NUMERIC},
MODIFY_USER_NAME = #{record.modifyUserName,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_STORAGE_HISTORY
<set>
<if test="messageId != null">
MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
</if>
<if test="messageCode != null">
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
</if>
<if test="senderId != null">
SENDER_ID = #{senderId,jdbcType=VARCHAR},
</if>
<if test="receiverId != null">
RECEIVER_ID = #{receiverId,jdbcType=VARCHAR},
</if>
<if test="sendTime != null">
SEND_TIME = #{sendTime,jdbcType=TIMESTAMP},
</if>
<if test="consignmentCode != null">
CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR},
</if>
<if test="frequency != null">
FREQUENCY = #{frequency,jdbcType=NUMERIC},
</if>
<if test="status != null">
STATUS = #{status,jdbcType=NUMERIC},
</if>
<if test="statusName != null">
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
</if>
<if test="remark != null">
REMARK = #{remark,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="createUserId != null">
CREATE_USER_ID = #{createUserId,jdbcType=NUMERIC},
</if>
<if test="createUserName != null">
CREATE_USER_NAME = #{createUserName,jdbcType=VARCHAR},
</if>
<if test="modifyTime != null">
MODIFY_TIME = #{modifyTime,jdbcType=TIMESTAMP},
</if>
<if test="modifyUserId != null">
MODIFY_USER_ID = #{modifyUserId,jdbcType=NUMERIC},
</if>
<if test="modifyUserName != null">
MODIFY_USER_NAME = #{modifyUserName,jdbcType=VARCHAR},
</if>
<if test="data != null">
DATA = #{data,jdbcType=CLOB},
</if>
</set>
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_STORAGE_HISTORY
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
RECEIVER_ID = #{receiverId,jdbcType=VARCHAR},
SEND_TIME = #{sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{frequency,jdbcType=NUMERIC},
STATUS = #{status,jdbcType=NUMERIC},
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
REMARK = #{remark,jdbcType=VARCHAR},
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
CREATE_USER_ID = #{createUserId,jdbcType=NUMERIC},
CREATE_USER_NAME = #{createUserName,jdbcType=VARCHAR},
MODIFY_TIME = #{modifyTime,jdbcType=TIMESTAMP},
MODIFY_USER_ID = #{modifyUserId,jdbcType=NUMERIC},
MODIFY_USER_NAME = #{modifyUserName,jdbcType=VARCHAR},
DATA = #{data,jdbcType=CLOB}
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKey" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_STORAGE_HISTORY
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
RECEIVER_ID = #{receiverId,jdbcType=VARCHAR},
SEND_TIME = #{sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{frequency,jdbcType=NUMERIC},
STATUS = #{status,jdbcType=NUMERIC},
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
REMARK = #{remark,jdbcType=VARCHAR},
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
CREATE_USER_ID = #{createUserId,jdbcType=NUMERIC},
CREATE_USER_NAME = #{createUserName,jdbcType=VARCHAR},
MODIFY_TIME = #{modifyTime,jdbcType=TIMESTAMP},
MODIFY_USER_ID = #{modifyUserId,jdbcType=NUMERIC},
MODIFY_USER_NAME = #{modifyUserName,jdbcType=VARCHAR}
where ID = #{id,jdbcType=NUMERIC}
</update>
<sql id="OracleDialectPrefix">
<if test="limitStart != null and limitStart&gt;=0">
select * from ( select row_.*, rownum rownum_ from (
</if>
</sql>
<sql id="OracleDialectSuffix">
<if test="limitStart != null and limitStart&gt;=0">
<![CDATA[ ) row_ ) where rownum_ > #{limitStart} and rownum_ <= #{limitStart}+#{limitSize} ]]>
</if>
</sql>
<resultMap id="BaseResultMap" type="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<id column="ID" jdbcType="NUMERIC" property="id" />
<result column="MESSAGE_ID" jdbcType="VARCHAR" property="messageId" />
<result column="MESSAGE_CODE" jdbcType="VARCHAR" property="messageCode" />
<result column="SENDER_ID" jdbcType="VARCHAR" property="senderId" />
<result column="RECEIVER_ID" jdbcType="VARCHAR" property="receiverId" />
<result column="SEND_TIME" jdbcType="TIMESTAMP" property="sendTime" />
<result column="CONSIGNMENT_CODE" jdbcType="VARCHAR" property="consignmentCode" />
<result column="FREQUENCY" jdbcType="NUMERIC" property="frequency" />
<result column="STATUS_ID" jdbcType="NUMERIC" property="statusId" />
<result column="STATUS_NAME" jdbcType="VARCHAR" property="statusName" />
<result column="REMARK" jdbcType="VARCHAR" property="remark" />
......@@ -98,7 +594,7 @@
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_TEMPORARY_STORAGE
from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
......@@ -114,7 +610,7 @@
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from T_SYS_KAFKA_TEMPORARY_STORAGE
from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
......@@ -128,24 +624,24 @@
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_TEMPORARY_STORAGE
from T_SYS_KAFKA_STORAGE_HISTORY
where ID = #{id,jdbcType=NUMERIC}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from T_SYS_KAFKA_TEMPORARY_STORAGE
delete from T_SYS_KAFKA_STORAGE_HISTORY
where ID = #{id,jdbcType=NUMERIC}
</delete>
<delete id="deleteByExample" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample">
delete from T_SYS_KAFKA_TEMPORARY_STORAGE
delete from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_TEMPORARY_STORAGE.NEXTVAL FROM DUAL
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_TEMPORARY_STORAGE (ID, MESSAGE_ID, MESSAGE_CODE,
insert into T_SYS_KAFKA_STORAGE_HISTORY (ID, MESSAGE_ID, MESSAGE_CODE,
SENDER_ID, RECEIVER_ID, SEND_TIME,
CONSIGNMENT_CODE, FREQUENCY, STATUS_ID,
STATUS_NAME, REMARK, CREATE_TIME,
......@@ -162,9 +658,9 @@
</insert>
<insert id="insertSelective" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_TEMPORARY_STORAGE.NEXTVAL FROM DUAL
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_TEMPORARY_STORAGE
insert into T_SYS_KAFKA_STORAGE_HISTORY
<trim prefix="(" suffix=")" suffixOverrides=",">
ID,
<if test="messageId != null">
......@@ -275,13 +771,13 @@
</trim>
</insert>
<select id="countByExample" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistoryExample" resultType="java.lang.Long">
select count(*) from T_SYS_KAFKA_TEMPORARY_STORAGE
select count(*) from T_SYS_KAFKA_STORAGE_HISTORY
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
<set>
<if test="record.id != null">
ID = #{record.id,jdbcType=NUMERIC},
......@@ -343,7 +839,7 @@
</if>
</update>
<update id="updateByExampleWithBLOBs" parameterType="map">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
......@@ -367,7 +863,7 @@
</if>
</update>
<update id="updateByExample" parameterType="map">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
......@@ -390,7 +886,7 @@
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
<set>
<if test="messageId != null">
MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
......@@ -447,7 +943,7 @@
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
......@@ -468,7 +964,7 @@
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKey" parameterType="com.fedex.connect.common.model.sys.KafkaStorageHistory">
update T_SYS_KAFKA_TEMPORARY_STORAGE
update T_SYS_KAFKA_STORAGE_HISTORY
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
......@@ -488,12 +984,12 @@
where ID = #{id,jdbcType=NUMERIC}
</update>
<sql id="OracleDialectPrefix">
<if test="limitStart != null and limitStart>=0">
<if test="limitStart != null and limitStart&gt;=0">
select * from ( select row_.*, rownum rownum_ from (
</if>
</sql>
<sql id="OracleDialectSuffix">
<if test="limitStart != null and limitStart>=0">
<if test="limitStart != null and limitStart&gt;=0">
<![CDATA[ ) row_ ) where rownum_ > #{limitStart} and rownum_ <= #{limitStart}+#{limitSize} ]]>
</if>
</sql>
......
......@@ -10,7 +10,7 @@
<result column="SEND_TIME" jdbcType="TIMESTAMP" property="sendTime" />
<result column="CONSIGNMENT_CODE" jdbcType="VARCHAR" property="consignmentCode" />
<result column="FREQUENCY" jdbcType="NUMERIC" property="frequency" />
<result column="STATUS_ID" jdbcType="NUMERIC" property="statusId" />
<result column="STATUS" jdbcType="NUMERIC" property="status" />
<result column="STATUS_NAME" jdbcType="VARCHAR" property="statusName" />
<result column="REMARK" jdbcType="VARCHAR" property="remark" />
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
......@@ -83,7 +83,7 @@
</sql>
<sql id="Base_Column_List">
ID, MESSAGE_ID, MESSAGE_CODE, SENDER_ID, RECEIVER_ID, SEND_TIME, CONSIGNMENT_CODE,
FREQUENCY, STATUS_ID, STATUS_NAME, REMARK, CREATE_TIME, CREATE_USER_ID, CREATE_USER_NAME,
FREQUENCY, STATUS, STATUS_NAME, REMARK, CREATE_TIME, CREATE_USER_ID, CREATE_USER_NAME,
MODIFY_TIME, MODIFY_USER_ID, MODIFY_USER_NAME
</sql>
<sql id="Blob_Column_List">
......@@ -98,7 +98,7 @@
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
from T_SYS_KAFKA_TEMPORARY_STORAGE
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
......@@ -114,7 +114,7 @@
</if>
'true' as QUERYID,
<include refid="Base_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
from T_SYS_KAFKA_TEMPORARY_STORAGE
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
......@@ -128,33 +128,33 @@
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from T_SYS_KAFKA_STORAGE_HISTORY
from T_SYS_KAFKA_TEMPORARY_STORAGE
where ID = #{id,jdbcType=NUMERIC}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
delete from T_SYS_KAFKA_STORAGE_HISTORY
delete from T_SYS_KAFKA_TEMPORARY_STORAGE
where ID = #{id,jdbcType=NUMERIC}
</delete>
<delete id="deleteByExample" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorageExample">
delete from T_SYS_KAFKA_STORAGE_HISTORY
delete from T_SYS_KAFKA_TEMPORARY_STORAGE
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorage">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
SELECT SEQ_T_SYS_KAFKA_TEMPORARY_STORAGE.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_STORAGE_HISTORY (ID, MESSAGE_ID, MESSAGE_CODE,
insert into T_SYS_KAFKA_TEMPORARY_STORAGE (ID, MESSAGE_ID, MESSAGE_CODE,
SENDER_ID, RECEIVER_ID, SEND_TIME,
CONSIGNMENT_CODE, FREQUENCY, STATUS_ID,
CONSIGNMENT_CODE, FREQUENCY, STATUS,
STATUS_NAME, REMARK, CREATE_TIME,
CREATE_USER_ID, CREATE_USER_NAME, MODIFY_TIME,
MODIFY_USER_ID, MODIFY_USER_NAME, DATA
)
values (#{id,jdbcType=NUMERIC}, #{messageId,jdbcType=VARCHAR}, #{messageCode,jdbcType=VARCHAR},
#{senderId,jdbcType=VARCHAR}, #{receiverId,jdbcType=VARCHAR}, #{sendTime,jdbcType=TIMESTAMP},
#{consignmentCode,jdbcType=VARCHAR}, #{frequency,jdbcType=NUMERIC}, #{statusId,jdbcType=NUMERIC},
#{consignmentCode,jdbcType=VARCHAR}, #{frequency,jdbcType=NUMERIC}, #{status,jdbcType=NUMERIC},
#{statusName,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{createUserId,jdbcType=NUMERIC}, #{createUserName,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP},
#{modifyUserId,jdbcType=NUMERIC}, #{modifyUserName,jdbcType=VARCHAR}, #{data,jdbcType=CLOB}
......@@ -162,9 +162,9 @@
</insert>
<insert id="insertSelective" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorage">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL
SELECT SEQ_T_SYS_KAFKA_TEMPORARY_STORAGE.NEXTVAL FROM DUAL
</selectKey>
insert into T_SYS_KAFKA_STORAGE_HISTORY
insert into T_SYS_KAFKA_TEMPORARY_STORAGE
<trim prefix="(" suffix=")" suffixOverrides=",">
ID,
<if test="messageId != null">
......@@ -188,8 +188,8 @@
<if test="frequency != null">
FREQUENCY,
</if>
<if test="statusId != null">
STATUS_ID,
<if test="status != null">
STATUS,
</if>
<if test="statusName != null">
STATUS_NAME,
......@@ -242,8 +242,8 @@
<if test="frequency != null">
#{frequency,jdbcType=NUMERIC},
</if>
<if test="statusId != null">
#{statusId,jdbcType=NUMERIC},
<if test="status != null">
#{status,jdbcType=NUMERIC},
</if>
<if test="statusName != null">
#{statusName,jdbcType=VARCHAR},
......@@ -275,13 +275,13 @@
</trim>
</insert>
<select id="countByExample" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorageExample" resultType="java.lang.Long">
select count(*) from T_SYS_KAFKA_STORAGE_HISTORY
select count(*) from T_SYS_KAFKA_TEMPORARY_STORAGE
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
<set>
<if test="record.id != null">
ID = #{record.id,jdbcType=NUMERIC},
......@@ -307,8 +307,8 @@
<if test="record.frequency != null">
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
</if>
<if test="record.statusId != null">
STATUS_ID = #{record.statusId,jdbcType=NUMERIC},
<if test="record.status != null">
STATUS = #{record.status,jdbcType=NUMERIC},
</if>
<if test="record.statusName != null">
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
......@@ -343,7 +343,7 @@
</if>
</update>
<update id="updateByExampleWithBLOBs" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
......@@ -352,7 +352,7 @@
SEND_TIME = #{record.sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{record.consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
STATUS_ID = #{record.statusId,jdbcType=NUMERIC},
STATUS = #{record.status,jdbcType=NUMERIC},
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
REMARK = #{record.remark,jdbcType=VARCHAR},
CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
......@@ -367,7 +367,7 @@
</if>
</update>
<update id="updateByExample" parameterType="map">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
set ID = #{record.id,jdbcType=NUMERIC},
MESSAGE_ID = #{record.messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{record.messageCode,jdbcType=VARCHAR},
......@@ -376,7 +376,7 @@
SEND_TIME = #{record.sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{record.consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{record.frequency,jdbcType=NUMERIC},
STATUS_ID = #{record.statusId,jdbcType=NUMERIC},
STATUS = #{record.status,jdbcType=NUMERIC},
STATUS_NAME = #{record.statusName,jdbcType=VARCHAR},
REMARK = #{record.remark,jdbcType=VARCHAR},
CREATE_TIME = #{record.createTime,jdbcType=TIMESTAMP},
......@@ -390,7 +390,7 @@
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorage">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
<set>
<if test="messageId != null">
MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
......@@ -413,8 +413,8 @@
<if test="frequency != null">
FREQUENCY = #{frequency,jdbcType=NUMERIC},
</if>
<if test="statusId != null">
STATUS_ID = #{statusId,jdbcType=NUMERIC},
<if test="status != null">
STATUS = #{status,jdbcType=NUMERIC},
</if>
<if test="statusName != null">
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
......@@ -447,7 +447,7 @@
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorage">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
......@@ -455,7 +455,7 @@
SEND_TIME = #{sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{frequency,jdbcType=NUMERIC},
STATUS_ID = #{statusId,jdbcType=NUMERIC},
STATUS = #{status,jdbcType=NUMERIC},
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
REMARK = #{remark,jdbcType=VARCHAR},
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
......@@ -468,7 +468,7 @@
where ID = #{id,jdbcType=NUMERIC}
</update>
<update id="updateByPrimaryKey" parameterType="com.fedex.connect.common.model.sys.KafkaTemporaryStorage">
update T_SYS_KAFKA_STORAGE_HISTORY
update T_SYS_KAFKA_TEMPORARY_STORAGE
set MESSAGE_ID = #{messageId,jdbcType=VARCHAR},
MESSAGE_CODE = #{messageCode,jdbcType=VARCHAR},
SENDER_ID = #{senderId,jdbcType=VARCHAR},
......@@ -476,7 +476,7 @@
SEND_TIME = #{sendTime,jdbcType=TIMESTAMP},
CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR},
FREQUENCY = #{frequency,jdbcType=NUMERIC},
STATUS_ID = #{statusId,jdbcType=NUMERIC},
STATUS = #{status,jdbcType=NUMERIC},
STATUS_NAME = #{statusName,jdbcType=VARCHAR},
REMARK = #{remark,jdbcType=VARCHAR},
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
......
package com.fedex.connect.common.model;
\ No newline at end of file
......@@ -4,8 +4,8 @@ import java.io.Serializable;
import java.util.Date;
/**
* DESC: KAFKA临时
* TABLE: T_SYS_KAFKA_TEMPORARY_STORAGE
* DESC: KAFKA数据历史
* TABLE: T_SYS_KAFKA_STORAGE_HISTORY
*/
public class KafkaStorageHistory implements Serializable {
/**
......@@ -49,12 +49,12 @@ public class KafkaStorageHistory implements Serializable {
private Long frequency;
/**
* KAFKA消息状态ID,关联数据字典表。指定字典目录CODE:KAFKA_MSG_STATUS
* KAFKA消息数据状态(0:待处理,1:已处理,2:处理失败)
*/
private Long statusId;
private Long status;
/**
* KAFKA消息状态NAME
* KAFKA消息数据状态NAME,(0:待处理,1:已处理,2:处理失败)
*/
private String statusName;
......@@ -164,12 +164,12 @@ public class KafkaStorageHistory implements Serializable {
this.frequency = frequency;
}
public Long getStatusId() {
return statusId;
public Long getStatus() {
return status;
}
public void setStatusId(Long statusId) {
this.statusId = statusId;
public void setStatus(Long status) {
this.status = status;
}
public String getStatusName() {
......@@ -258,7 +258,7 @@ public class KafkaStorageHistory implements Serializable {
sb.append(", sendTime=").append(sendTime);
sb.append(", consignmentCode=").append(consignmentCode);
sb.append(", frequency=").append(frequency);
sb.append(", statusId=").append(statusId);
sb.append(", status=").append(status);
sb.append(", statusName=").append(statusName);
sb.append(", remark=").append(remark);
sb.append(", createTime=").append(createTime);
......
......@@ -655,63 +655,63 @@ public class KafkaStorageHistoryExample {
return (Criteria) this;
}
public Criteria andStatusIdIsNull() {
addCriterion("STATUS_ID is null");
public Criteria andStatusIsNull() {
addCriterion("STATUS is null");
return (Criteria) this;
}
public Criteria andStatusIdIsNotNull() {
addCriterion("STATUS_ID is not null");
public Criteria andStatusIsNotNull() {
addCriterion("STATUS is not null");
return (Criteria) this;
}
public Criteria andStatusIdEqualTo(Long value) {
addCriterion("STATUS_ID =", value, "statusId");
public Criteria andStatusEqualTo(Long value) {
addCriterion("STATUS =", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotEqualTo(Long value) {
addCriterion("STATUS_ID <>", value, "statusId");
public Criteria andStatusNotEqualTo(Long value) {
addCriterion("STATUS <>", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdGreaterThan(Long value) {
addCriterion("STATUS_ID >", value, "statusId");
public Criteria andStatusGreaterThan(Long value) {
addCriterion("STATUS >", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdGreaterThanOrEqualTo(Long value) {
addCriterion("STATUS_ID >=", value, "statusId");
public Criteria andStatusGreaterThanOrEqualTo(Long value) {
addCriterion("STATUS >=", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdLessThan(Long value) {
addCriterion("STATUS_ID <", value, "statusId");
public Criteria andStatusLessThan(Long value) {
addCriterion("STATUS <", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdLessThanOrEqualTo(Long value) {
addCriterion("STATUS_ID <=", value, "statusId");
public Criteria andStatusLessThanOrEqualTo(Long value) {
addCriterion("STATUS <=", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdIn(List<Long> values) {
addCriterion("STATUS_ID in", values, "statusId");
public Criteria andStatusIn(List<Long> values) {
addCriterion("STATUS in", values, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotIn(List<Long> values) {
addCriterion("STATUS_ID not in", values, "statusId");
public Criteria andStatusNotIn(List<Long> values) {
addCriterion("STATUS not in", values, "status");
return (Criteria) this;
}
public Criteria andStatusIdBetween(Long value1, Long value2) {
addCriterion("STATUS_ID between", value1, value2, "statusId");
public Criteria andStatusBetween(Long value1, Long value2) {
addCriterion("STATUS between", value1, value2, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotBetween(Long value1, Long value2) {
addCriterion("STATUS_ID not between", value1, value2, "statusId");
public Criteria andStatusNotBetween(Long value1, Long value2) {
addCriterion("STATUS not between", value1, value2, "status");
return (Criteria) this;
}
......
......@@ -4,8 +4,8 @@ import java.io.Serializable;
import java.util.Date;
/**
* DESC: KAFKA数据历史
* TABLE: T_SYS_KAFKA_STORAGE_HISTORY
* DESC: KAFKA临时
* TABLE: T_SYS_KAFKA_TEMPORARY_STORAGE
*/
public class KafkaTemporaryStorage implements Serializable {
/**
......@@ -49,12 +49,12 @@ public class KafkaTemporaryStorage implements Serializable {
private Long frequency;
/**
* KAFKA消息状态ID,关联数据字典表。指定字典目录CODE:KAFKA_MSG_STATUS
* KAFKA消息数据状态(0:待处理,1:已处理,2:处理失败)
*/
private Long statusId;
private Long status;
/**
* KAFKA消息状态NAME
* KAFKA消息数据状态NAME,(0:待处理,1:已处理,2:处理失败)
*/
private String statusName;
......@@ -98,6 +98,11 @@ public class KafkaTemporaryStorage implements Serializable {
*/
private String data;
/**
* 消息字符串
*/
private String message;
private static final long serialVersionUID = 1L;
public Long getId() {
......@@ -164,12 +169,12 @@ public class KafkaTemporaryStorage implements Serializable {
this.frequency = frequency;
}
public Long getStatusId() {
return statusId;
public Long getStatus() {
return status;
}
public void setStatusId(Long statusId) {
this.statusId = statusId;
public void setStatus(Long status) {
this.status = status;
}
public String getStatusName() {
......@@ -244,6 +249,14 @@ public class KafkaTemporaryStorage implements Serializable {
this.data = data == null ? null : data.trim();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
......@@ -258,7 +271,7 @@ public class KafkaTemporaryStorage implements Serializable {
sb.append(", sendTime=").append(sendTime);
sb.append(", consignmentCode=").append(consignmentCode);
sb.append(", frequency=").append(frequency);
sb.append(", statusId=").append(statusId);
sb.append(", status=").append(status);
sb.append(", statusName=").append(statusName);
sb.append(", remark=").append(remark);
sb.append(", createTime=").append(createTime);
......
......@@ -655,63 +655,63 @@ public class KafkaTemporaryStorageExample {
return (Criteria) this;
}
public Criteria andStatusIdIsNull() {
addCriterion("STATUS_ID is null");
public Criteria andStatusIsNull() {
addCriterion("STATUS is null");
return (Criteria) this;
}
public Criteria andStatusIdIsNotNull() {
addCriterion("STATUS_ID is not null");
public Criteria andStatusIsNotNull() {
addCriterion("STATUS is not null");
return (Criteria) this;
}
public Criteria andStatusIdEqualTo(Long value) {
addCriterion("STATUS_ID =", value, "statusId");
public Criteria andStatusEqualTo(Long value) {
addCriterion("STATUS =", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotEqualTo(Long value) {
addCriterion("STATUS_ID <>", value, "statusId");
public Criteria andStatusNotEqualTo(Long value) {
addCriterion("STATUS <>", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdGreaterThan(Long value) {
addCriterion("STATUS_ID >", value, "statusId");
public Criteria andStatusGreaterThan(Long value) {
addCriterion("STATUS >", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdGreaterThanOrEqualTo(Long value) {
addCriterion("STATUS_ID >=", value, "statusId");
public Criteria andStatusGreaterThanOrEqualTo(Long value) {
addCriterion("STATUS >=", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdLessThan(Long value) {
addCriterion("STATUS_ID <", value, "statusId");
public Criteria andStatusLessThan(Long value) {
addCriterion("STATUS <", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdLessThanOrEqualTo(Long value) {
addCriterion("STATUS_ID <=", value, "statusId");
public Criteria andStatusLessThanOrEqualTo(Long value) {
addCriterion("STATUS <=", value, "status");
return (Criteria) this;
}
public Criteria andStatusIdIn(List<Long> values) {
addCriterion("STATUS_ID in", values, "statusId");
public Criteria andStatusIn(List<Long> values) {
addCriterion("STATUS in", values, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotIn(List<Long> values) {
addCriterion("STATUS_ID not in", values, "statusId");
public Criteria andStatusNotIn(List<Long> values) {
addCriterion("STATUS not in", values, "status");
return (Criteria) this;
}
public Criteria andStatusIdBetween(Long value1, Long value2) {
addCriterion("STATUS_ID between", value1, value2, "statusId");
public Criteria andStatusBetween(Long value1, Long value2) {
addCriterion("STATUS between", value1, value2, "status");
return (Criteria) this;
}
public Criteria andStatusIdNotBetween(Long value1, Long value2) {
addCriterion("STATUS_ID not between", value1, value2, "statusId");
public Criteria andStatusNotBetween(Long value1, Long value2) {
addCriterion("STATUS not between", value1, value2, "status");
return (Criteria) this;
}
......
......@@ -40,7 +40,7 @@
sys:系统 系统相关表,例如kafka表
log: 日志 日志记录表,例如邮件发送日志表
-->
<javaModelGenerator targetPackage="com.fedex.connect.common.model.log" targetProject="src/main/java">
<javaModelGenerator targetPackage="com.fedex.connect.common.model.sys" targetProject="src/main/java">
<!---enableSubPackages:如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性-->
<property name="enableSubPackages" value="false"/>
<!--该属性只对MyBatis3有效,如果true就会使用构造方法入参,如果false就会使用setter方式。默认为false-->
......@@ -52,13 +52,13 @@
</javaModelGenerator>
<!-- 生成映射文件*.xml的位置-->
<sqlMapGenerator targetPackage="mapper.log" targetProject="src/main/java/com/fedex/connect/common">
<sqlMapGenerator targetPackage="mapper.sys" targetProject="src/main/java/com/fedex/connect/common">
<!--如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false-->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.fedex.connect.common.dao.log" targetProject="src/main/java">
<javaClientGenerator type="XMLMAPPER" targetPackage="com.fedex.connect.common.dao.sys" targetProject="src/main/java">
<!--如果true,MBG会根据catalog和schema来生成子包。如果false就会直接用targetPackage属性。默认为false-->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
......@@ -73,18 +73,18 @@
generatedKey 指定KEY,Oracle需要指定序列。
sqlStatement 指定序列名称
-->
<table tableName="T_LOG_OPERATION" domainObjectName="Operation"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="ID" sqlStatement="SELECT SEQ_T_LOG_OPERATION.NEXTVAL FROM DUAL" />
</table>
<table tableName="T_LOG_EMAIL_HISTORY" domainObjectName="EmailHistory"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="ID" sqlStatement="SELECT SEQ_T_LOG_EMAIL_HISTORY.NEXTVAL FROM DUAL" />
</table>
<!-- <table tableName="T_LOG_OPERATION" domainObjectName="Operation"-->
<!-- enableCountByExample="true" enableUpdateByExample="true"-->
<!-- enableDeleteByExample="true" enableSelectByExample="true"-->
<!-- selectByExampleQueryId="true">-->
<!-- <generatedKey column="ID" sqlStatement="SELECT SEQ_T_LOG_OPERATION.NEXTVAL FROM DUAL" />-->
<!-- </table>-->
<!-- <table tableName="T_LOG_EMAIL_HISTORY" domainObjectName="EmailHistory"-->
<!-- enableCountByExample="true" enableUpdateByExample="true"-->
<!-- enableDeleteByExample="true" enableSelectByExample="true"-->
<!-- selectByExampleQueryId="true">-->
<!-- <generatedKey column="ID" sqlStatement="SELECT SEQ_T_LOG_EMAIL_HISTORY.NEXTVAL FROM DUAL" />-->
<!-- </table>-->
......@@ -141,13 +141,13 @@
<!-- selectByExampleQueryId="true">-->
<!-- <generatedKey column="ID" sqlStatement="SELECT SEQ_T_SYS_REDIS_SLAB.NEXTVAL FROM DUAL" />-->
<!-- </table>-->
<!-- <table tableName="T_SYS_KAFKA_STORAGE_HISTORY" domainObjectName="KafkaTemporaryStorage"-->
<!-- enableCountByExample="true" enableUpdateByExample="true"-->
<!-- enableDeleteByExample="true" enableSelectByExample="true"-->
<!-- selectByExampleQueryId="true">-->
<!-- <generatedKey column="ID" sqlStatement="SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL" />-->
<!-- </table>-->
<!-- <table tableName="T_SYS_KAFKA_TEMPORARY_STORAGE" domainObjectName="KafkaStorageHistory"-->
<table tableName="T_SYS_KAFKA_STORAGE_HISTORY" domainObjectName="KafkaStorageHistory"
enableCountByExample="true" enableUpdateByExample="true"
enableDeleteByExample="true" enableSelectByExample="true"
selectByExampleQueryId="true">
<generatedKey column="ID" sqlStatement="SELECT SEQ_T_SYS_KAFKA_STORAGE_HISTORY.NEXTVAL FROM DUAL" />
</table>
<!-- <table tableName="T_SYS_KAFKA_TEMPORARY_STORAGE" domainObjectName="KafkaTemporaryStorage"-->
<!-- enableCountByExample="true" enableUpdateByExample="true"-->
<!-- enableDeleteByExample="true" enableSelectByExample="true"-->
<!-- selectByExampleQueryId="true">-->
......
package com.fedex.connect.common.dependencies.arithmetic;
import com.fedex.export.common.util.BytesUtils;
import com.fedex.connect.common.dependencies.util.BytesUtils;
import org.apache.commons.lang3.StringUtils;
import javax.crypto.*;
......
......@@ -9,7 +9,7 @@ import org.springframework.security.crypto.password.StandardPasswordEncoder;
public class EncryptProvider {
//加密密钥
private static final PasswordEncoder ENCODER = new StandardPasswordEncoder("exportTw");
private static final PasswordEncoder ENCODER = new StandardPasswordEncoder("iclearConnect");
/**
* Spring-security-crypto加密方式
......
package com.fedex.connect.common.dependencies.authentication;
import com.fedex.export.authentication.exception.JwtAccessDeniedHandler;
import com.fedex.export.authentication.exception.JwtAuthenticationEntryPoint;
import com.fedex.export.authentication.filter.JwtAuthorizationFilter;
import com.fedex.connect.common.dependencies.authentication.exception.JwtAccessDeniedHandler;
import com.fedex.connect.common.dependencies.authentication.exception.JwtAuthenticationEntryPoint;
import com.fedex.connect.common.dependencies.authentication.filter.JwtAuthorizationFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
......@@ -28,13 +28,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//放行白名单(这个配置会比读取配置文件优先进行,别问我怎么知道的)
String[] whiteList = {"/icleartw/login.html","/icleartw/auth/login","/icleartw/auth/addUser",
"/icleartw/oss/ossLogin", "/icleartw/sysUser/logout","/icleartw/auth/getUser","/icleartw/static/*",
"/icleartw/swagger-ui.html","/icleartw/swagger-resources","/icleartw/webjars","/icleartw/swagger-ui/*", "/icleartw/v2/api-docs","/**"};
String[] whiteList = {"/login.html","/auth/login","/auth/addUser",
"/oss/ossLogin", "/sysUser/logout","/auth/getUser","/static/*",
"/swagger-ui.html","/swagger-resources","/webjars","/swagger-ui/*", "/v2/api-docs","/**"};
//formLogin配置登录页面和成功/失败的响应
http.formLogin()
.loginPage("/icleartw/login.html").permitAll()
.loginPage("/login.html").permitAll()
//.successHandler(new MyAuthenticationSuccessHandler("/main"))
//.failureHandler(new MyAuthenticationFailureHandler("/403.html"))
.and()
......
package com.fedex.connect.common.dependencies.authentication.filter;
import com.fedex.export.authentication.SecurityConstants;
import com.fedex.export.common.contants.RedisConstants;
import com.fedex.export.common.i18n.LocaleMessageUtil;
import com.fedex.export.common.util.JsonUtils;
import com.fedex.export.common.util.JwtTokenUtils;
import com.fedex.export.common.util.SpringBeanUtil;
import com.fedex.export.common.util.Utils;
import com.fedex.export.repository.entity.RedisSlab;
import com.fedex.export.service.system.RedisUtilService;
import com.fedex.connect.common.dependencies.authentication.SecurityConstants;
import com.fedex.connect.common.dependencies.contants.RedisConstants;
import com.fedex.connect.common.dependencies.i18n.LocaleMessageUtil;
import com.fedex.connect.common.dependencies.service.sys.IRedisSlabService;
import com.fedex.connect.common.dependencies.util.JsonUtils;
import com.fedex.connect.common.dependencies.util.JwtTokenUtils;
import com.fedex.connect.common.dependencies.util.SpringBeanUtil;
import com.fedex.connect.common.dependencies.util.Utils;
import com.fedex.connect.common.model.sys.RedisSlab;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import org.apache.commons.lang3.StringUtils;
......@@ -71,7 +71,7 @@ public class JwtAuthorizationFilter extends BasicAuthenticationFilter {
//使用context手动注入
LocaleMessageUtil localeMessageUtil = SpringBeanUtil.getBean(LocaleMessageUtil.class);
RedisUtilService redisUtilService = SpringBeanUtil.getBean(RedisUtilService.class);
IRedisSlabService redisSlabService = SpringBeanUtil.getBean(IRedisSlabService.class);
if (token == null || !token.startsWith(SecurityConstants.TOKEN_PREFIX)) {
SecurityContextHolder.clearContext();
......@@ -105,7 +105,7 @@ public class JwtAuthorizationFilter extends BasicAuthenticationFilter {
logger.debug("TOKEN 过期时间为 :{}", expiredTime);
String id = JwtTokenUtils.getId(tokenValue);
String redisKey = RedisConstants.REDIS_KEY_TOKEN + id;
RedisSlab redisSlab = redisUtilService.get(redisKey);
RedisSlab redisSlab = redisSlabService.get(redisKey);
String tokenRedis = redisSlab != null ? Optional.ofNullable(redisSlab.getRedisMsg()).orElse(null): null;
/*String tokenRedis = redisUtilService.get(redisKey);*/
if (StringUtils.isEmpty(tokenRedis)) {
......@@ -129,7 +129,7 @@ public class JwtAuthorizationFilter extends BasicAuthenticationFilter {
response.setHeader("Token", newToken);*/
} catch (ExpiredJwtException ee) {
//已经过期了,直接踢
logger.info("CODE_301 requestURL:{},reason:{}" , request.getRequestURL(),"ExpiredJwtException ",ee);
logger.error("CODE_301 requestURL:{},reason:{}" , request.getRequestURL(),"ExpiredJwtException ",ee);
Claims claims = ee.getClaims();
String id = claims.getId();
Map<String, Object> result = new HashMap<>();
......@@ -155,5 +155,3 @@ public class JwtAuthorizationFilter extends BasicAuthenticationFilter {
return;
}
}
\ No newline at end of file
......
package com.fedex.connect.common.dependencies.contants;
import java.math.BigDecimal;
/**
* @Author mt
* @Description 用于数字的常量管理
* @Date 2024/10/31
*/
public interface DigitConstants {
/**
* @Description 数字-1
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_MINUS_ONE = -1;
/**
* @Description 数字0
* @Author mt
* @Date 2024-10-09
*/
int DIGIT_ZERO = 0;
/**
* @Description 数字1
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_ONE = 1;
/**
* @Description 数字2
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWO = 2;
/**
* @Description 数字3
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THREE = 3;
/**
* @Description 数字4
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FOUR = 4;
/**
* @Description 数字5
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FIVE = 5;
/**
* @Description 数字6
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SIX = 6;
/**
* @Description 数字7
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SEVEN = 7;
/**
* @Description 数字8
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_EIGHT = 8;
/**
* @Description 数字9
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_NINE = 9;
/**
* @Description 数字10
* @Author mt
* @Date 2023-1-9
*/
int DIGIT_TEN = 10;
/**
* @Description 数字11
* @Author mt
* @Date 2023-1-9
*/
int DIGIT_ELEVEN = 11;
/**
* @Description 数字12
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWELVE = 12;
/**
* @Description 数字13
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTEEN = 13;
/**
* @Description 数字14
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FOURTEEN = 14;
/**
* @Description 数字15
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FIFTEEN = 15;
/**
* @Description 数字16
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SIXTEEN = 16;
/**
* @Description 数字17
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SEVENTEEN = 17;
/**
* @Description 数字18
* @Author mt
* @Date 2023-1-9
*/
int DIGIT_EIGHTEEN = 18;
/**
* @Description 数字19
* @Author mt
* @Date 2023-1-30
*/
int DIGIT_NINETEEN = 19;
/**
* @Description 数字20
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY = 20;
/**
* @Description 数字21
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_ONE = 21;
/**
* @Description 数字22
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_TWO = 22;
/**
* @Description 数字23
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_THREE = 23;
/**
* @Description 数字24
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_FOUR = 24;
/**
* @Description 数字25
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_FIVE = 25;
/**
* @Description 数字26
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_SIX = 26;
/**
* @Description 数字27
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_SEVEN = 27;
/**
* @Description 数字28
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWENTY_EIGHT = 28;
/**
* @author lxy
* @description 属性说明 数字29
* @date 2024/9/19
*/
int DIGIT_TWENTY_NINE = 29;
/**
* @Description 数字30
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY = 30;
/**
* @Description 数字31
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY_ONE = 31;
/**
* @Description 数字32
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY_TWO = 32;
/**
* @Description 数字33
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY_THREE = 33;
/**
* @Description 数字34
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY_FOUR = 34;
/**
* @Description 数字39
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THIRTY_NINE = 39;
/**
* @Description 数字40
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FORTY = 40;
/**
* @Description 数字42
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FORTY_TWO = 42;
/**
* @Description 数字47
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FORTY_SEVEN = 47;
/**
* @Description 数字50
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FIFTY = 50;
/**
* @Description 数字58
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FIFTY_EIGHT = 58;
/**
* @Description 数字60
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SIXTY = 60;
/**
* @Description 数字64
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SIXTY_FOUR = 64;
/**
* @Description 数字70
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_SEVENTY = 70;
/**
* @Description 数字90
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_NINETY = 90;
/**
* @Description 数字91
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_NINETY_ONE = 91;
/**
* @Description 数94
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_NINETY_FOUR = 94;
/**
* @Description 数96
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_NINETY_SIX = 96;
/**
* @Description 数字100
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_ONE_HUNDRED = 100;
/**
* @Description 数字123
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_ONE_HUNDRED_AND_TWENTY_THREE = 123;
/**
* @Description 数字180
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_ONE_HUNDRED_AND_EIGHTY = 180;
/**
* @Description 数字200
* @Author mt
* @Date 2024-10-11
*/
int DIGIT_TWO_HUNDRED = 200;
/**
* @Description 数字255
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_TWO_HUNDRED_FIFTY_FIVE = 255;
/**
* @Description 数字300
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THREE_HUNDRED = 300;
/**
* @Description 数字365
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_THREE_HUNDRED_AND_SIXTY_FIVE = 365;
/**
* @Description 数字400
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_FOUR_HUNDRED = 400;
int DIGIT_FIVE_HUNDRED = 500;
/**
* @Description 数字1000
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_ONE_THOUSAND = 1000;
/**
* 5000
*/
int DIGIT_FIVE_THOUSAND = 5000;
/**
* 10000
*/
int DIGIT_TEN_THOUSAND = 10000;
/**
* @Description 数字86400
* @Author mt
* @Date 2024-10-27
*/
int DIGIT_EIGHTY_SIX_THOUSAND_AND_FOUR_HUNDRED = 86400;
//----------------------------------------------------以下为String类型---------------------------------------------------------//
String DIGIT_ZEROZERO_STRING = "00";
String DIGIT_ZERO_STRING = "0";
String DIGIT_ONE_STRING = "1";
String DIGIT_TWO_STRING = "2";
String DIGIT_THREE_STRING = "3";
String DIGIT_FOUR_STRING = "4";
String DIGIT_FIVE_STRING = "5";
String DIGIT_SIXTEEN_STRING = "16";
//----------------------------------------------------以下为BigDecimal类型---------------------------------------------------------//
BigDecimal DIGIT_ZERO_POINT_TWO_BIG = new BigDecimal("0.2");
BigDecimal DIGIT_TWO_BIG = new BigDecimal("2");
BigDecimal DIGIT_FIVE_HUNDRED_BIG = new BigDecimal("500");
BigDecimal DIGIT_ONE_THOUSAND_BIG = new BigDecimal("1000");
//----------------------------------------------------以下为BigDecimal类型---------------------------------------------------------//
/**
* @Description 数字0
* @Author mt
* @Date 2024年10月31日
*/
long DIGIT_ZERO_LONG = 0L;
/**
* @Description 数字1
* @Author mt
* @Date 2024年10月31日
*/
long DIGIT_ONE_LONG = 1L;
/**
* @Description 数字2
* @Author mt
* @Date 2024年10月31日
*/
long DIGIT_TWO_LONG = 2L;
/**
* @Description 数字3
* @Author mt
* @Date 2024年10月31日
*/
long DIGIT_THREE_LONG = 3L;
/**
* @Description 数字100
* @Author mt
* @Date 2024年10月31日
*/
long DIGIT_ONE_HUNDRED_LONG = 100L;
}
package com.fedex.connect.common.dependencies.data.bo;
import com.fedex.connect.common.dependencies.util.DateUtil;
import com.fedex.connect.common.model.sys.RedisSlab;
import java.util.Date;
public class RedisSlabBo {
public static RedisSlab toDao(String key, String value, int validDuration){
RedisSlab dao = new RedisSlab();
dao.setRedisKey(key);
dao.setRedisMsg(value);
dao.setValidDuration(validDuration != 0 ? Long.valueOf(validDuration) : 0L);
dao.setDisTime(DateUtil.getHoursAgoTime(validDuration));
dao.setCreateTime(new Date());
return dao;
}
/**
* ID自增
*/
private Long id;
/**
* Redis key
*/
private String redisKey;
/**
* Redis信息
*/
private String redisMsg;
/**
* 有效时长
*/
private Long validDuration;
/**
* 失效时间
*/
private Date disTime;
/**
* 创建时间
*/
private Date createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRedisKey() {
return redisKey;
}
public void setRedisKey(String redisKey) {
this.redisKey = redisKey;
}
public String getRedisMsg() {
return redisMsg;
}
public void setRedisMsg(String redisMsg) {
this.redisMsg = redisMsg;
}
public Long getValidDuration() {
return validDuration;
}
public void setValidDuration(Long validDuration) {
this.validDuration = validDuration;
}
public Date getDisTime() {
return disTime;
}
public void setDisTime(Date disTime) {
this.disTime = disTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public RedisSlabBo() {
}
public RedisSlabBo(Long id, String redisKey, String redisMsg, Long validDuration, Date disTime, Date createTime) {
this.id = id;
this.redisKey = redisKey;
this.redisMsg = redisMsg;
this.validDuration = validDuration;
this.disTime = disTime;
this.createTime = createTime;
}
}
package com.fedex.connect.common.dependencies.enums.sys;
/**
* @Author mt
* @Description 类说明
* @Date 2024/10/31
*/
public enum KafkaStatusEnum {
PENDING(0L, "待处理"),
PROCESSED(1L, "已处理"),
PROCESSING_FAILED(2L, "处理失败");
private Long code;
private String msg;
KafkaStatusEnum(Long code, String msg) {
this.code = code;
this.msg = msg;
}
public Long getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
\ No newline at end of file
package com.fedex.connect.common.dependencies;
\ No newline at end of file
package com.fedex.connect.common.dependencies.repository.base;
import com.fedex.connect.common.dao.sys.RedisSlabMapper;
import com.fedex.connect.common.dependencies.repository.dao.UserMapperExt;
import org.springframework.beans.factory.annotation.Autowired;
public class BaseDao {
@Autowired
public UserMapperExt userMapperExt;
@Autowired
public RedisSlabMapper redisSlabMapper;
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.repository.dao;
import com.fedex.connect.common.model.sys.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapperExt {
@Select( "<script>" +
"select * from T_SYS_USER where ID = #{id} AND STATUS = 1 " +
"</script>")
User findOne(@Param("id") Long id);
}
package com.fedex.connect.common.dependencies.repository.repo;
import com.fedex.connect.common.model.sys.RedisSlab;
import com.fedex.connect.common.model.sys.RedisSlabExample;
import java.util.List;
public interface IRedisSlabRepository {
int insert(RedisSlab record);
List<RedisSlab> selectByExample(RedisSlabExample example);
int deleteByPrimaryKey(Long id);
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.repository.repo;
import com.fedex.connect.common.model.sys.User;
public interface IUserRepository {
User findOne(Long id);
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.repository.repo.impl;
import com.fedex.connect.common.dependencies.repository.base.BaseDao;
import com.fedex.connect.common.dependencies.repository.repo.IRedisSlabRepository;
import com.fedex.connect.common.model.sys.RedisSlab;
import com.fedex.connect.common.model.sys.RedisSlabExample;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class RedisSlabRepositoryImpl extends BaseDao implements IRedisSlabRepository {
@Override
public int insert(RedisSlab record) {
return redisSlabMapper.insert(record);
}
@Override
public List<RedisSlab> selectByExample(RedisSlabExample example) {
return redisSlabMapper.selectByExample(example);
}
@Override
public int deleteByPrimaryKey(Long id) {
return redisSlabMapper.deleteByPrimaryKey(id);
}
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.repository.repo.impl;
import com.fedex.connect.common.dependencies.repository.base.BaseDao;
import com.fedex.connect.common.dependencies.repository.repo.IUserRepository;
import com.fedex.connect.common.model.sys.User;
import org.springframework.stereotype.Repository;
@Repository
public class UserRepositoryImpl extends BaseDao implements IUserRepository {
@Override
public User findOne(Long id){
return this.userMapperExt.findOne(id);
}
}
package com.fedex.connect.common.dependencies.service.base;
import com.fedex.connect.common.dependencies.repository.repo.IRedisSlabRepository;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Author mt
* @Description 用于管理公共Service
* @Date 2024/4/18
*/
public class BaseService {
@Autowired
protected IRedisSlabRepository redisSlabRepository;
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.service.sys;
import com.fedex.connect.common.model.sys.RedisSlab;
public interface IRedisSlabService {
Boolean set(String key, String value,int expireTimeH);
Boolean set(String key, String value);
RedisSlab get(String key,String value);
RedisSlab get(String key);
<T> T get(String key, Class<T> clazz);
int del(String key);
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.service.sys.impl;
import com.fedex.connect.common.dependencies.data.bo.RedisSlabBo;
import com.fedex.connect.common.dependencies.service.base.BaseService;
import com.fedex.connect.common.dependencies.service.sys.IRedisSlabService;
import com.fedex.connect.common.dependencies.util.GsonUtils;
import com.fedex.connect.common.model.sys.RedisSlab;
import com.fedex.connect.common.model.sys.RedisSlabExample;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Optional;
/**
* @Author mt
* @Description 类说明
* @Date 2024/10/31
*/
@Service
public class RedisSlabServiceImpl extends BaseService implements IRedisSlabService {
private static Logger logger = LoggerFactory.getLogger(IRedisSlabService.class);
@Transactional(rollbackFor = Exception.class)
public Boolean set(String key, String value,int expireTimeH) {
RedisSlab dao = RedisSlabBo.toDao(key,value, expireTimeH);
RedisSlab redisSlab = get(key);
if (redisSlab != null){
del(key);
}
try {
int ct = redisSlabRepository.insert(dao);
if (ct > 0) {
return true;
}
return false;
} catch (Exception e) {
logger.error("REDIS SLAB 异常 [SET]: " + e);
throw e;
}
}
public Boolean set(String key, String value) {
return set(key,value, 1);
}
public RedisSlab get(String key,String value){
try {
RedisSlabExample example = new RedisSlabExample();
RedisSlabExample.Criteria criteria = example.createCriteria();
criteria.andRedisKeyEqualTo(key);
criteria.andRedisMsgEqualTo(value);
return CollectionUtils.firstElement(redisSlabRepository.selectByExample(example));
}catch (Exception e){
logger.error("REDIS SLAB 异常 [GET]: " + e);
throw e;
}
}
public RedisSlab get(String key){
try {
RedisSlabExample example = new RedisSlabExample();
RedisSlabExample.Criteria criteria = example.createCriteria();
criteria.andRedisKeyEqualTo(key);
return CollectionUtils.firstElement(redisSlabRepository.selectByExample(example));
}catch (Exception e){
logger.error("REDIS SLAB 异常 [GET]: " + e);
throw e;
}
}
public <T> T get(String key, Class<T> clazz) {
try {
RedisSlab redisSlab = get(key);
String str = redisSlab != null ? Optional.ofNullable(redisSlab.getRedisMsg()).orElse(null): null;
T t = GsonUtils.stringToBean(str, clazz);
return t;
}catch (Exception e){
logger.error("REDIS SLAB 异常 [GET]: " + e);
throw e;
}
}
@Transactional(rollbackFor = Exception.class)
public int del(String key){
try {
logger.info("del db redis key:{}",key);
RedisSlab redisSlab = get(key);
logger.info("del db redis key get info:{}", new Gson().toJson(redisSlab));
if (redisSlab != null){
logger.info("get info not null");
int delct = redisSlabRepository.deleteByPrimaryKey(redisSlab.getId());
logger.info("redisSlabMapper.deleteByPrimaryKey result :{}", delct);
return delct;
}
return 0;
}catch (Exception e){
logger.error("REDIS SLAB 异常 [DEL]: " + e);
throw e;
}
}
}
package com.fedex.connect.common.dependencies.util;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* json转java对象
* mt
* 2023年10月25日17:39:44
*/
public class JsonToJava {
/*
Json字符串转Java对象
*/
public static <T>T parseJsonApi(String jsonStr, Class cla) {
Object jsonRootBean = JSONObject.parseObject(jsonStr, cla);
return (T)jsonRootBean;
}
/*
对象转Json串
*/
public static String toJson(Object object) {
//String jsonString = new JSONObject().toJSONString(object);
String jsonString = JSONObject.toJSONString(object, SerializerFeature.WriteMapNullValue);
return jsonString;
}
public static <T> Map<String, List<String>> json2map(String jsonString) {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
Map map = null;
try {
map = mapper.readValue(jsonString, Map.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return map;
}
/**
* javaBean 转map
*/
public static Map<String, Object> obj2Map(Object obj) {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
// 过滤class属性
if (!key.equals("class")) {
// 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/*
创建JSON文件
*/
public static boolean createJsonFile(String jsonString, String filePath, String fileName) {
boolean flag = true;
String fullPath = filePath + File.separator + fileName + ".json";
// 生成json格式文件
try {
// 保证创建一个新文件
File file = new File(fullPath);
if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) { // 如果已存在,删除旧文件
file.delete();
}
file.createNewFile();
if (jsonString.indexOf("'") != -1) {
//将单引号转义一下,因为JSON串中的字符串类型可以单引号引起来的
jsonString = jsonString.replaceAll("'", "\\'");
}
if (jsonString.indexOf("\"") != -1) {
//将双引号转义一下,因为JSON串中的字符串类型可以单引号引起来的
jsonString = jsonString.replaceAll("\"", "\\\"");
}
if (jsonString.indexOf("\r\n") != -1) {
//将回车换行转换一下,因为JSON串中字符串不能出现显式的回车换行
jsonString = jsonString.replaceAll("\r\n", "\\u000d\\u000a");
}
if (jsonString.indexOf("\n") != -1) {
//将换行转换一下,因为JSON串中字符串不能出现显式的换行
jsonString = jsonString.replaceAll("\n", "\\u000a");
}
// jsonString = JsonFormatTool.formatJson(jsonString);
// 将格式化后的字符串写入文件
Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
write.write(jsonString);
write.flush();
write.close();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
\ No newline at end of file
package com.fedex.connect.common.dependencies.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author erry
*/
public class JsonUtils {
// 定义jackson对象
private static final ObjectMapper objectMapper = new ObjectMapper();
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
*
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = objectMapper.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* javaBean、列表数组转换为json字符串,忽略空值
*/
public static String obj2jsonIgnoreNull(Object obj) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.writeValueAsString(obj);
}
/**
* json 转JavaBean
*/
public static <T> T json2pojo(String jsonString, Class<T> clazz) throws Exception {
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
return objectMapper.readValue(jsonString, clazz);
}
/**
* json字符串转换为map
*/
public static <T> Map<String, Object> json2map(String jsonString) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.readValue(jsonString, Map.class);
}
/**
* json字符串转换为map
*/
public static <T> Map<String, T> json2map(String jsonString, Class<T> clazz) throws Exception {
Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) objectMapper.readValue(jsonString, new TypeReference<Map<String, T>>() {
});
Map<String, T> result = new HashMap<String, T>();
for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return result;
}
/**
* 深度转换json成map
*
* @param json
* @return
*/
public static Map<String, Object> json2mapDeeply(String json) throws Exception {
return json2MapRecursion(json, objectMapper);
}
/**
* 把json解析成list,如果list内部的元素存在jsonString,继续解析
*
* @param json
* @param mapper 解析工具
* @return
* @throws Exception
*/
private static List<Object> json2ListRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
List<Object> list = mapper.readValue(json, List.class);
for (Object obj : list) {
if (obj != null && obj instanceof String) {
String str = (String) obj;
if (str.startsWith("[")) {
obj = json2ListRecursion(str, mapper);
} else if (obj.toString().startsWith("{")) {
obj = json2MapRecursion(str, mapper);
}
}
}
return list;
}
/**
* 把json解析成map,如果map内部的value存在jsonString,继续解析
*
* @param json
* @param mapper
* @return
* @throws Exception
*/
private static Map<String, Object> json2MapRecursion(String json, ObjectMapper mapper) throws Exception {
if (json == null) {
return null;
}
Map<String, Object> map = mapper.readValue(json, Map.class);
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object obj = entry.getValue();
if (obj != null && obj instanceof String) {
String str = ((String) obj);
if (str.startsWith("[")) {
List<?> list = json2ListRecursion(str, mapper);
map.put(entry.getKey(), list);
} else if (str.startsWith("{")) {
Map<String, Object> mapRecursion = json2MapRecursion(str, mapper);
map.put(entry.getKey(), mapRecursion);
}
}
}
return map;
}
/**
* 与javaBean json数组字符串转换为列表
*/
public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
JavaType javaType = getCollectionType(ArrayList.class, clazz);
List<T> lst = (List<T>) objectMapper.readValue(jsonArrayStr, javaType);
return lst;
}
/**
* 获取泛型的Collection Type
*
* @param collectionClass 泛型的Collection
* @param elementClasses 元素类
* @return JavaType Java类型
* @since 1.0
*/
public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
/**
* map 转JavaBean
*/
public static <T> T map2pojo(Map map, Class<T> clazz) {
return objectMapper.convertValue(map, clazz);
}
/**
* map 转json
*
* @param map
* @return
*/
public static String mapToJson(Map map) {
try {
return objectMapper.writeValueAsString(map);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* map 转JavaBean
*/
public static <T> T obj2pojo(Object obj, Class<T> clazz) {
return objectMapper.convertValue(obj, clazz);
}
/**
* javaBean 转map
*/
public static Map<String, Object> pojo2Map(Object obj) {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
// 过滤class属性
if (!key.equals("class")) {
// 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}
......@@ -2,9 +2,9 @@ package com.fedex.connect.common.dependencies.util;
import com.fedex.connect.common.dependencies.authentication.SecurityConstants;
import com.fedex.connect.common.dependencies.contants.RedisConstants;
import com.fedex.export.data.dto.SecurityUserDetails;
import com.fedex.export.repository.dao.SysUserMapperExt;
import com.fedex.export.repository.entity.SysUser;
import com.fedex.connect.common.dependencies.date.dto.SecurityUserDetails;
import com.fedex.connect.common.dependencies.repository.repo.IUserRepository;
import com.fedex.connect.common.model.sys.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
......@@ -26,7 +26,7 @@ import java.util.stream.Collectors;
*/
public class JwtTokenUtils {
private static final SysUserMapperExt sysUserMapper = com.fedex.export.common.util.SpringBeanUtil.getBean(SysUserMapperExt.class);
private static final IUserRepository userRepository = SpringBeanUtil.getBean(IUserRepository.class);
/**
* 生成足够的安全随机密钥,以适合符合规范的签名
......@@ -44,7 +44,7 @@ public class JwtTokenUtils {
.signWith(SECRET_KEY, SignatureAlgorithm.HS256)
.claim(SecurityConstants.ROLE_CLAIMS, String.join(",", roles))
.setId(id)
.setIssuer("EXPORT_TW") //证书发行者
.setIssuer("ICLEAR_CONNECT") //证书发行者
.setIssuedAt(createdDate)
.setSubject(username)
.setExpiration(expirationDate)
......@@ -62,7 +62,7 @@ public class JwtTokenUtils {
.signWith(SECRET_KEY, SignatureAlgorithm.HS256)
.claim(SecurityConstants.ROLE_CLAIMS, String.join(",", roles))
.setId(id)
.setIssuer("EXPORT_TW")
.setIssuer("ICLEAR_CONNECT")
.setIssuedAt(createdDate)
.setSubject(username)
.setExpiration(expirationDate)
......@@ -115,7 +115,7 @@ public class JwtTokenUtils {
SecurityUserDetails userDetails = new SecurityUserDetails();
userDetails.setId(Long.parseLong(id));
userDetails.setUsername(userName);
SysUser user = sysUserMapper.findOne(Long.parseLong(id));
User user = userRepository.findOne(Long.parseLong(id));
userDetails.setUser(user);
return new UsernamePasswordAuthenticationToken(userDetails, token, authorities);
......
......@@ -35,6 +35,11 @@
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>common-dependencies</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>base-starter</artifactId>
<version>1.0.0</version>
<scope>${install.scope}</scope>
......
package com.fedex.connect.kafka;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.WebApplicationInitializer;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@MapperScan("com.fedex.connect.kafka.repository.dao")
@EnableTransactionManagement
@EnableSwagger2
public class KafkaApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(KafkaApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(KafkaApplication.class);
}
}
package com.fedex.connect.kafka.config;
import com.fedex.connect.kafka.service.IKafkaDmService;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.config.SaslConfigs;
import org.apache.kafka.common.errors.WakeupException;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* kafka消费handler
* mt
* 2024年10月31日10:19:56
*/
public class ConsumerThreadHandler{
private Logger logger = LoggerFactory.getLogger(ConsumerThreadHandler.class);
KafKaConfig kafKaConfig;
private ExecutorService executors;
private KafkaConsumer<String, String> consumer;
//待提交offset
private final Map<TopicPartition, OffsetAndMetadata> offsets = new HashMap<>();
private IKafkaDmService kafkaDmService;
public ConsumerThreadHandler(KafKaConfig kafKaConfig,IKafkaDmService kafkaDmService){
this.kafKaConfig = kafKaConfig;
this.kafkaDmService = kafkaDmService;
props();
}
public KafkaConsumer<String, String> props() {
Properties props = new Properties();
//设置Kafka服务器地址
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, this.kafKaConfig.getBootstrapServers());
//# 指定默认消费者group id --> 由于在kafka中,同一组中的consumer不会读取到同一个消息,依靠groud.id设置组名
props.put(ConsumerConfig.GROUP_ID_CONFIG, this.kafKaConfig.getGroupId());
//设置数据key的反序列化处理类
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
//设置数据value的反序列化处理类
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
//enable.auto.commit:true --> 设置手动提交offset
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, this.kafKaConfig.getEnableAutoCommit());
//#如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, this.kafKaConfig.getAutoCommitInterval());
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "30000");
//# smallest和largest才有效,如果smallest重新0开始读取,如果是largest从logfile的offset读取。一般情况下我们都是设置smallest
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, this.kafKaConfig.getAutoOffsetReset());
//每次kafka消费量
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, this.kafKaConfig.getMaxPollRecordsConfig());
//kafka配置kerberos,认证必须加
if("uat".equals(this.kafKaConfig.getSpringProfilesActive())||"prod".equals(this.kafKaConfig.getSpringProfilesActive())){
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
props.put(SaslConfigs.SASL_KERBEROS_SERVICE_NAME, "kafka");
}
consumer = new KafkaConsumer<>(props);
//订阅指定Topic的消息
consumer.subscribe(Arrays.asList(this.kafKaConfig.getTopic()), new ConsumerRebalanceListener() {
@Override
public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
consumer.commitSync(offsets);
}
@Override
public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
offsets.clear();
}
});
return consumer;
}
/**
* 消费主方法
*/
public void consume(){
executors = new ThreadPoolExecutor(this.kafKaConfig.getThreadNum(), this.kafKaConfig.getThreadNum(), 0L, TimeUnit.MILLISECONDS,new ArrayBlockingQueue<Runnable>(1000), new ThreadPoolExecutor.CallerRunsPolicy());
try {
while(true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));
if(!records.isEmpty()) {
executors.submit(new ConsumerWorker<>(records,this.offsets,this.kafkaDmService));
}
commitOffsets();
}
} catch (WakeupException e) {
logger.error("consume() error:{}",e);
} finally {
commitOffsets();
consumer.close();
}
}
/**
* 手动提交offset
*/
private void commitOffsets() {
Map<TopicPartition, OffsetAndMetadata> unmodfiedMap;
synchronized (offsets) {
if(offsets.isEmpty()) {
return;
}
unmodfiedMap = Collections.unmodifiableMap(new HashMap<>(offsets));
offsets.clear();
}
try {
consumer.commitSync(unmodfiedMap);
}catch (Exception e){
logger.error("consumer.commitSync() error:",e);
}
}
}
\ No newline at end of file
package com.fedex.connect.kafka.config;
import com.alibaba.fastjson.JSONObject;
import com.fedex.connect.common.dependencies.contants.DigitConstants;
import com.fedex.connect.common.dependencies.enums.sys.KafkaStatusEnum;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.constants.Constant;
import com.fedex.connect.kafka.service.IKafkaDmService;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.OffsetAndMetadata;
import org.apache.kafka.common.TopicPartition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
/**
* 消费者线程
* mt
* 2024年10月31日10:20:04
*/
public class ConsumerWorker<K, V> implements Runnable {
private Logger logger = LoggerFactory.getLogger(ConsumerWorker.class);
private final ConsumerRecords<K, V> records;
private final IKafkaDmService kafkaDmService;
//处理消息类
private final List<String> dmKeys = new ArrayList<>();
//记录已消费的offset
private final Map<TopicPartition, OffsetAndMetadata> offsets;
public ConsumerWorker(ConsumerRecords<K, V> records, Map<TopicPartition, OffsetAndMetadata> offsets, IKafkaDmService kafkaDmService) {
this.records = records;
this.offsets = offsets;
this.kafkaDmService = kafkaDmService;
dmKeys.add(Constant.KAFKA_KEYS.DM501);
}
@Override
public void run() {
try{
Map<String,List<String>> messageMap = new HashMap<String,List<String>>();
for (TopicPartition partition : records.partitions()) {
List<ConsumerRecord<K, V>> partitionRecords = records.records(partition);
//存储待处理数据
List<KafkaTemporaryStorage> kafkaTemporaryStorageList = new ArrayList<>();
for (ConsumerRecord<K, V> record : partitionRecords) {
//1、处理消息
String message = (String) record.value();
// logger.info(String.format("接收到消息 topic=%s, partition=%d, offset=%d ,value=%s", record.topic(), record.partition(), record.offset(),message));
try{
KafkaTemporaryStorage kafkaTemporaryStorage = JSONObject.parseObject(message, KafkaTemporaryStorage.class);
//判断消息接收方是否为出口dm数据,初始化数据
if(isExpDmData(kafkaTemporaryStorage)){
//设置消息状态为待处理
kafkaTemporaryStorage.setStatus(KafkaStatusEnum.PENDING.getCode());
//设置入库时间
kafkaTemporaryStorage.setCreateTime(new Date());
//设置处理次数初始为0次
kafkaTemporaryStorage.setFrequency(DigitConstants.DIGIT_ZERO_LONG);
//设置消息字符串
kafkaTemporaryStorage.setMessage(message);
kafkaTemporaryStorageList.add(kafkaTemporaryStorage);
}
}catch(Exception ex){
//处理出现异常将异常消息写入日志中
logger.error("监听获取kafka消息处理失败 JSONObject.parseObject:" + ex.getMessage() + ",message :" + message, ex);
}
}
//数据下发
this.dataDistribution(partition,partitionRecords,kafkaTemporaryStorageList,messageMap);
}
//数据下发
kafkaDmService.pushMessageList(messageMap);
}catch (Exception e){
logger.error("ConsumerWorker() error:{}",e);
}
}
/**
* 数据下发至指定业务模块进行处理
* @param partition
* @param partitionRecords
* @param kafkaTemporaryStorageList
* @param messageMap
*/
private void dataDistribution(TopicPartition partition,
List<ConsumerRecord<K, V>> partitionRecords,
List<KafkaTemporaryStorage> kafkaTemporaryStorageList
,Map<String,List<String>> messageMap){
boolean result = false;
try {
if(kafkaTemporaryStorageList.size() > 0){
//批量保存消息,并将保存后的id更新至消息ID中
List<KafkaTemporaryStorage> storageList = kafkaDmService.saveKafkaTemporaryStorageAll(kafkaTemporaryStorageList);
storageList.forEach(k -> {
try {
//将kafka临时表id追加至kafka json字符串中
String msg = kafkaDmService.addKafkaTempId(k.getMessage(), k.getId());
//将数据封装至map中
kafkaDmService.pushMessageMap(k.getMessageCode(), msg, messageMap);
}catch(Exception ex){
//处理出现异常将异常消息写入日志中
logger.error("kafka消息下发处理失败 addKafkaTempId:" + ex.getMessage(), ex);
}
});
}
result = true;
}catch(Exception ex){
//处理出现异常将异常消息写入日志中
logger.error("kafka消息下发处理失败 dataDistribution:" + ex.getMessage(), ex);
}finally{
kafkaTemporaryStorageList.clear();
//正常处理完成,则记录offsets
if(result) {
// offset+1
long lastOffset = partitionRecords.get(partitionRecords.size() - 1).offset();
synchronized (offsets) {
if (!offsets.containsKey(partition)) {
offsets.put(partition, new OffsetAndMetadata(lastOffset + 1));
} else {
long curr = offsets.get(partition).offset();
if (curr <= lastOffset + 1) {
offsets.put(partition, new OffsetAndMetadata(lastOffset + 1));
}
}
}
}
}
}
/**
* 判断消息接收方是否为出口dm数据
* 判断消息发出方,消息接收方,消息类型是否满足要求
* @return
*/
private boolean isExpDmData(KafkaTemporaryStorage kafKaTemporaryStorage){
if(kafKaTemporaryStorage.getSenderId().equals(Constant.KAFKA_KEYS.SENDER_ID)
&& kafKaTemporaryStorage.getReceiverId().equals(Constant.KAFKA_KEYS.RECEIVER_ID)
&& dmKeys.contains(kafKaTemporaryStorage.getMessageCode())){
return true;
}else{
return false;
}
}
}
package com.fedex.connect.kafka.config;
import lombok.Data;
@Data
public class KafKaConfig {
public KafKaConfig(String bootstrapServers,
String groupId,
String topic,
String enableAutoCommit,
String autoCommitInterval,
String autoOffsetReset,
String springProfilesActive,
Integer maxPollRecordsConfig,
Integer threadNum) {
this.bootstrapServers = bootstrapServers;
this.groupId = groupId;
this.topic = topic;
this.enableAutoCommit = enableAutoCommit;
this.autoCommitInterval = autoCommitInterval;
this.autoOffsetReset = autoOffsetReset;
this.springProfilesActive = springProfilesActive;
this.maxPollRecordsConfig = maxPollRecordsConfig;
this.threadNum = threadNum;
}
private String bootstrapServers;
private String groupId;
private String topic;
private String enableAutoCommit;
private String autoCommitInterval;
private String autoOffsetReset;
private String springProfilesActive;
private Integer maxPollRecordsConfig;
private Integer threadNum;
}
package com.fedex.connect.kafka.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* SwaggerConfig配置类.开启Swagger2,自动生成文档
*
* @author EDY
*/
@Configuration
@EnableSwagger2
@Profile({"dev", "test", "uat"})
public class SwaggerConfig {
/**
* 扫描Controller包的路径
*/
public static final String BASE_PACKAGE = "com.fedex.export.controller";
/**
* API信息
*/
public static final String API_INFO = "Export TW APIs";
public static final String API_VERSION = "1.0";
/**
* 创建API应用
*
* @return
*/
@Bean
public Docket restApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo(API_INFO, API_VERSION))
.useDefaultResponseMessages(true)
.forCodeGeneration(false)
.select()
// 扫描指定目录的API
.apis(RequestHandlerSelectors.basePackage(BASE_PACKAGE))
.paths(PathSelectors.any())
.build()
//配置全局io.swagger.model
.securitySchemes(securitySchemes())
//配置将安全上下文应用于哪些api操作(通过正则表达式模式)和HTTP方法
.securityContexts(securityContexts());
}
/**
* API的基本信息
*
* @return
*/
private ApiInfo apiInfo(String title, String version) {
return new ApiInfoBuilder().title(title).description(API_INFO).version(version).build();
}
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeys = new ArrayList<>();
/*SecurityConstants.TOKEN_HEADER*/
apiKeys.add(new ApiKey("Authorization", "Authorization", "header"));
return apiKeys;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(SecurityContext.builder()
.securityReferences(defaultAuth())
//指定/auth 请求下不会携带全局参数
.forPaths(PathSelectors.regex("^(?!/auth).*$")).build());
return securityContexts;
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences;
}
}
package com.fedex.connect.kafka.config.producer;//package com.fedex.export.config.producer;
//
//import org.apache.kafka.clients.CommonClientConfigs;
//import org.apache.kafka.clients.producer.KafkaProducer;
//import org.apache.kafka.clients.producer.ProducerConfig;
//import org.apache.kafka.common.config.SaslConfigs;
//import org.apache.kafka.common.serialization.StringSerializer;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import java.util.Properties;
//
//@Configuration
//public class KafkaProducerConfig {
// private Logger logger = LoggerFactory.getLogger(KafkaProducerConfig.class);
//
// @Value("${spring.kafka.bootstrap-servers}")
// private String bootstrapServers;
// @Value("${spring.kafka.producer.acks}")
// private String acks;
// @Value("${spring.kafka.producer.retries}")
// private Integer retries;
// @Value("${spring.kafka.producer.batch-size}")
// private Integer batchSize;
// @Value("${spring.kafka.producer.properties.linger.ms}")
// private Integer lingerMs;
// @Value("${spring.kafka.producer.buffer-memory}")
// private Integer bufferMemory;
// @Value("${spring.kafka.producer.properties.max.block.ms}")
// private Integer blockMs;
// @Value("${spring.profiles.env}")
// private String springProfilesActive;
// @Value("${spring.kafka.iclear-kerberos-jaasPath}")
// private String iclearKerberosJaasPath;
// @Value("${spring.kafka.iclear-kerberos-krb5}")
// private String iclearKerberosKrb5;
//
// @Bean(destroyMethod = "close")
// public KafkaProducer<String, String> kafkaProducer() {
// try {
// logger.info("init producer kerberos start....");
// System.setProperty("java.security.auth.login.config",this.iclearKerberosJaasPath);
// System.setProperty("java.security.krb5.conf", this.iclearKerberosKrb5);
// logger.info("init producer kerberos end....");
// }catch (Exception e){
// logger.error("init producer kerberos error:{}",e);
// }
// return new KafkaProducer<>(getProps());
// }
//
// private Properties getProps() {
// Properties props = new Properties();
// //设置Kafka服务器地址
// props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.bootstrapServers);
// //设置数据key的序列化处理类
// props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
// //设置数据value的序列化处理类
// props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
// //-1(默认):等待所有follower同步完消息后再发送(绝对不会丢数据)
// props.put(ProducerConfig.ACKS_CONFIG, this.acks);
// //发生错误消息重发次数
// props.put(ProducerConfig.RETRIES_CONFIG, this.retries);
// //消息累计到batch-size的值后,才会发送消息,默认为16384
// props.put(ProducerConfig.BATCH_SIZE_CONFIG, this.batchSize);
// //如果kafka迟迟不发送消息(这里指的是消息没堆积到指定数量),那么过了这个时间(单位:毫秒)开始发送
// props.put(ProducerConfig.LINGER_MS_CONFIG, this.lingerMs);
// //produce积累数据一次发送,缓存大小达到buffer.memory就发送数据
// props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, this.bufferMemory);
// //控制block的时长,当buffer空间不够或者metadata丢失时产生block
// props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, this.blockMs);
// //kafka配置kerberos,认证必须加
// if("uat".equals(springProfilesActive)||"prod".equals(springProfilesActive)){
// props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
// props.put(SaslConfigs.SASL_KERBEROS_SERVICE_NAME, "kafka");
// }
// return props;
// }
//}
package com.fedex.connect.kafka.constants;
/**
* @Author mt
* @Description 类说明 常量接口
* @Date 2024/4/18
*/
public interface Constant {
//返回常量
interface RESULT_KEYS{
//返回至前端实体对象
String CONSIGNMENT = "consignment";
//返回消息
String MESSAGE = "message";
//返回消息英文
String MESSAGE_US = "messageUS";
//是否成功
String SUCCESS = "success";
//是否成功
String CODE = "code";
//异常
String ERROR = "error";
}
//kafka常量
interface KAFKA_KEYS{
//发送程序ID
String SENDER_ID = "DM";
//接受程序ID
String RECEIVER_ID = "IMP";
//业务标志DM501
String DM501 = "DM501";
}
//地址类型常量
interface CE_INFO_ADDRESS_KEYS{
//发件人
String SHIPPER = "SHIPPER";
//收件人
String RECIPIENT = "RECIPIENT";
//代理人
String BROKEN = "BROKEN";
}
//地址类型常量
interface CE_INFO_KEYS{
//发件人国家
String TW = "TW";
//收件人国家
String CN = "CN";
}
}
package com.fedex.connect.kafka.controller;
public interface IKafkaController {
void rpcKafkaReceive(String json);
String sendDm001(String json);
String sendDmJson(String json);
}
package com.fedex.connect.kafka.controller.base;
import com.fedex.connect.kafka.service.IDm501Service;
import com.fedex.connect.kafka.service.IKafkaDmService;
import com.fedex.connect.kafka.service.IKafkaProducerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class BaseController {
public Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
protected IKafkaDmService kafkaDmService;
@Autowired
protected IDm501Service dm501Service;
@Autowired
protected IKafkaProducerService kafkaProducerService;
}
package com.fedex.connect.kafka.controller.impl;
import com.alibaba.fastjson.JSONObject;
import com.fedex.connect.common.dependencies.util.JsonToJava;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.constants.Constant;
import com.fedex.connect.kafka.controller.IKafkaController;
import com.fedex.connect.kafka.controller.base.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/rpcKafka", name = "kafka生产者发送消息rpc接口")
@Api(value = "KafkaController", tags = {"kafka生产者发送消息rpc接口"})
public class KafkaController extends BaseController implements IKafkaController {
@Value("${spring.profiles.env}")
private String env;
@PostMapping("/rpcKafkaReceive")
@ApiOperation(value = "重新消费dm报文", notes = "重新消费dm报文")
public void rpcKafkaReceive(@RequestBody String json) {
//接收需要重新消费报文
Map<String, List<String>> map = JsonToJava.json2map(json);
kafkaDmService.pushMessageList(map);
logger.info("已接收需要重新消费dm报文 | 报文为:{}",json);
}
@PostMapping("/sendDm501")
@ApiOperation(value = "发送DM501", notes = "发送DM501")
public String sendDm001(@RequestBody String json) {
String result = Constant.RESULT_KEYS.SUCCESS;
try {
try {
//把相应的DM501json转换成kafka临时表dto
KafkaTemporaryStorage kafKaTemporaryStorage = JSONObject.parseObject(json, KafkaTemporaryStorage.class);
Map<String, List<String>> map = new HashMap<String,List<String>>();
List<String> list = new ArrayList<>();
list.add(json);
map.put(kafKaTemporaryStorage.getMessageCode(),list);
kafkaDmService.pushMessageList(map);
}catch (Exception ex){
logger.error("DM501监听消息异常:" +ex.getMessage(),ex);
}
}catch(Exception ex){
logger.error("发送kafka报文Exp失败,{} ",ex.getMessage(),ex);
result = Constant.RESULT_KEYS.ERROR;
}finally{
String jsonStr = JSONObject.toJSONString(result);
return jsonStr;
}
}
@PostMapping("/sendDmJson")
@ApiOperation(value = "发送kafka报文DmJson内容到kafka", notes = "发送kafka报文DmJson内容到kafka")
public String sendDmJson(@RequestBody String json) {
String result = Constant.RESULT_KEYS.SUCCESS;
try {
if(!env.equals("prod")){
kafkaProducerService.sendMessage(json);
result = Constant.RESULT_KEYS.SUCCESS;
}else{
result = "禁止该接口访问!";
}
}catch(Exception ex){
logger.error("发送kafka报文DmJson内容到kafka失败,{} ",ex.getMessage(),ex);
result = Constant.RESULT_KEYS.ERROR;
}finally{
String jsonStr = JSONObject.toJSONString(result);
return jsonStr;
}
}
}
\ No newline at end of file
package com.fedex.connect.kafka.data.dto;
import lombok.Data;
/**
* DM处理结果
* mt
* 2022年11月15日17:21:13
*/
@Data
public class DmProcessResults {
//处理结果
boolean resultFlag = true;
//处理返回信息
String result;
//运单号
private String consignmentCode;
}
\ No newline at end of file
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
/**
* @Author mt
* @Description 地址信息
* @Date 2024/4/19
*/
@Data
public class Dm501ConAddresses {
//类型
String type;
//账号
String account;
//公司名称
String companyName;
//地址行1
String addressDesc1;
//地址行2
String addressDesc2;
//地址行3
String addressDesc3;
//邮件编码
String postalCode;
//城市名称
String cityName;
//国家
String country;
//省/州
String stateCode;
//联系人姓名
String contactName;
//联系人电话
String contactPhoneNumber;
}
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
/**
* @Author mt
* @Description 商品明细
* @Date 2024/4/19
*/
@Data
public class Dm501ConCommodities {
//商品金额
String commodityAmount;
//商品货币代码
String commodityCurrency;
//商品数量单位
String commodityQtyUnit;
//商品数量
String commodityQuantity;
//货品名称
String contentDescription;
//商品原产国
String countryOfManufacture;
//海关货币代码
String customsCurrency;
//该货品申报价值
String customsValue;
//HS Code
String hsCode;
//件数
String pieces;
//商品重量
String weight;
//商品重量单位
String weightUnit;
}
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
/**
* @Author mt
* @Description 特殊要求代码
* @Date 2024/4/19
*/
@Data
public class Dm501ConHandlingCodes {
//特殊要求代码
String specialHandlingCd;
}
\ No newline at end of file
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
/**
* @Author mt
* @Description 子件信息
* @Date 2024/4/19
*/
@Data
public class Dm501ConItems {
//--
String associationType;
//母单号下的关系代码
String relationshipCd;
//件号/第几件
String shipmentPkgNumber;
}
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Author mt
* @Description DM501运单部分
* @Date 2024/4/19
*/
@Data
public class Dm501Consignments implements Serializable {
//运单号
String trackingNumber;
//参考信息
String shipperReferenceNotes;
//运费付款人
String paymentPayorCode;
//Billing Account付费方账号
String billToAccountNumber;
//税金费用付款人
String dutyTaxPayorCode;
//税金费用Fedex 账号
String dutyTaxPayorAccount;
//文件或包裹
String docNondocFlag;
//件数
String quantity;
//初始站点
String originStation;
//目的地站点
String destStation;
//申报货币
String customsCurrency;
//申报价值
String customsValue;
//申报重量
String weight;
//申报重量单位
String weightUnit;
//预计取件时间
String shipDate;
//Form CD
String formCd;
//始发国口岸代码
String originIataCode;
//目的国口岸代码
String destIataCode;
//扫描状态日期
Date scanDate;
/**
* @Author mt
* @Description 地址信息
* @Date 2024/4/19
*/
List<Dm501ConAddresses> addresses;
/**
* @Author mt
* @Description 商品明细
* @Date 2024/4/19
*/
List<Dm501ConCommodities> commodities;
/**
* @Author mt
* @Description 子件信息
* @Date 2024/4/19
*/
List<Dm501ConItems> items;
/**
* @Author mt
* @Description 特殊要求代码
* @Date 2024/4/19
*/
List<Dm501ConHandlingCodes> handlingCodes;
}
\ No newline at end of file
package com.fedex.connect.kafka.data.dto.dm.dm501;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author mt
* @Description DM501 data
* @Date 2024/4/19
*/
@Data
public class Dm501Data implements Serializable {
private List<Dm501Consignments> consignments;
}
\ No newline at end of file
package com.fedex.connect.kafka.init;
import com.fedex.connect.kafka.config.ConsumerThreadHandler;
import com.fedex.connect.kafka.config.KafKaConfig;
import com.fedex.connect.kafka.service.IKafkaDmService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* 系统初始化类
* mt
* 2022年11月21日18:53:41
*/
@Component
@Order(value = 1)
public class SystemInit implements CommandLineRunner {
private Logger logger = LoggerFactory.getLogger(SystemInit.class);
@Autowired
private IKafkaDmService kafkaDmService;
@Value("${spring.profiles.env}")
private String springProfilesActive;
@Value("${spring.kafka.bootstrap-servers}")
private String bootstrapServers;
@Value("${spring.kafka.iclear-kerberos-jaasPath}")
private String iclearKerberosJaasPath;
@Value("${spring.kafka.iclear-kerberos-krb5}")
private String iclearKerberosKrb5;
@Value("${spring.kafka.consumer.topic-name}")
private String topic;
@Value("${spring.kafka.consumer.group-id}")
private String groupId;
@Value("${spring.kafka.consumer.enable-auto-commit}")
private String enableAutoCommit;
@Value("${spring.kafka.consumer.auto-commit-interval}")
private String autoCommitInterval;
@Value("${spring.kafka.consumer.auto-offset-reset}")
private String autoOffsetReset;
@Value("${spring.kafka.consumer.max-poll-records}")
private Integer maxPollRecordsConfig;
@Value("${spring.kafka.consumer.spring-kafka-threadNum}")
private Integer threadNum;
@Override
public void run(String... args) throws Exception {
logger.info("init SystemConstant start....");
//加载kerberos配置文件
this.loadKerberosConfPath();
KafKaConfig kafKaConfig = new KafKaConfig(
this.bootstrapServers,
this.groupId,
this.topic,
this.enableAutoCommit,
this.autoCommitInterval,
this.autoOffsetReset,
this.springProfilesActive,
this.maxPollRecordsConfig,
this.threadNum
);
//启动kafka消费者
final ConsumerThreadHandler handler = new ConsumerThreadHandler(kafKaConfig,this.kafkaDmService);
new Thread(() -> handler.consume()).start();
logger.info("init SystemConstant end....");
}
/**
* 读取kerberos路径的配置文件,然后根据该文件中的 配置加载kerberos
*/
private void loadKerberosConfPath(){
try {
logger.info("init consumer kerberos start....");
System.setProperty("java.security.auth.login.config",this.iclearKerberosJaasPath);
System.setProperty("java.security.krb5.conf", this.iclearKerberosKrb5);
logger.info("init consumer kerberos end....");
}catch (Exception e){
logger.error("init consumer kerberos error:{}",e);
}
}
}
\ No newline at end of file
package com.fedex.connect.kafka.listener;
import java.util.List;
/**
* kafka监听接口
* mt
* 2022年11月10日10:10:57
*/
public interface DmListenerInterface {
//将消息push到队列方法
void pushMessageList(List<String> messageList);
}
package com.fedex.connect.kafka.listener.dmlistener;
import com.alibaba.fastjson.JSONObject;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.data.dto.DmProcessResults;
import com.fedex.connect.kafka.listener.DmListenerInterface;
import com.fedex.connect.kafka.service.IDm501Service;
import com.fedex.connect.kafka.service.IKafkaDmService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;
/**
* @Author mt
* @Description 监听消息队列DM501数据
* @Date 2024/4/18
*/
@Component("dm501Listener")
public class Dm501Listener implements DmListenerInterface, CommandLineRunner {
private final Logger logger = LoggerFactory.getLogger(Dm501Listener.class);
//DM501消息队列
private static final ArrayBlockingQueue<List<String>> dm501Queue = new ArrayBlockingQueue<List<String>>(50000);
@Autowired
private IKafkaDmService kafkaDmService;
@Autowired
private IDm501Service dm501Service;
/**
* 启动监听dm001消息队列
*/
@Override
public void run(String... args) {
new Thread(() -> {
while(true){
List<String> messageList = null;
try {
messageList = this.dm501Queue.take();
messageList.forEach(message ->{
//把相应的DM004json转换成kafka临时表dto
KafkaTemporaryStorage kafKaTemporaryStorage = JSONObject.parseObject(message, KafkaTemporaryStorage.class);
//将消息转换为kafka历史表对象
KafkaStorageHistory kafKaStorageHistory = JSONObject.parseObject(message, KafkaStorageHistory.class);
try {
//处理DM501文件
DmProcessResults processResults = this.dm501Service.dm501Process(kafKaTemporaryStorage);
//kafka临时表转历史表
this.kafkaDmService.kafkaTemporaryTransferToHistory(processResults,kafKaTemporaryStorage, kafKaStorageHistory);
}catch (Exception ex){
logger.error("DM501监听消息异常:" +ex.getMessage(),ex);
}
});
}catch(Exception ex){
logger.error("DM501监听消息异常:" +ex.getMessage() + ",message : " + messageList,ex);
}finally{
if(messageList != null){
messageList.clear();
}
}
}
}).start();
}
@Override
public synchronized void pushMessageList(List<String> messageList) {
dm501Queue.add(messageList);
}
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.base;
import com.fedex.connect.common.dao.biz.CeInfoMapper;
import com.fedex.connect.common.dao.sys.KafkaStorageHistoryMapper;
import com.fedex.connect.common.dao.sys.KafkaTemporaryStorageMapper;
import com.fedex.connect.kafka.repository.dao.CeInfoMapperExt;
import com.fedex.connect.kafka.repository.dao.KafkaTemporaryStorageMapperExt;
import org.springframework.beans.factory.annotation.Autowired;
public class AbstractDaoRepository {
@Autowired
protected KafkaTemporaryStorageMapper kafkaTemporaryStorageMapper;
@Autowired
protected KafkaStorageHistoryMapper kafkaStorageHistoryMapper;
@Autowired
protected CeInfoMapper ceInfoMapper;
@Autowired
protected CeInfoMapperExt ceInfoMapperExt;
@Autowired
protected KafkaTemporaryStorageMapperExt kafkaTemporaryStorageMapperExt;
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.dao;
import com.fedex.connect.common.model.biz.CeInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.Date;
/**
* @Author mt
* @Description CE数据Mapper
* @Date 2024/4/22
*/
@Mapper
public interface CeInfoMapperExt {
/**
* 获取创建时间为1个月内CE数据
* @return
*/
@Select( "<script>" +
"SELECT * FROM T_BIZ_CE_INFO WHERE CONSIGNMENT_CODE = #{consignmentCode,jdbcType=VARCHAR} " +
" AND CREATE_TIME &gt; #{curDate,jdbcType=TIMESTAMP} AND ROWNUM &lt;= 1" +
"</script>")
CeInfo findBizCeInfoContainsByConsignmentCode(@Param("consignmentCode") String consignmentCode, @Param("curDate") Date curDate);
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.dao;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
* kafka临时表dao
* mt
* 2022年11月3日15:30:53
*/
@Mapper
public interface KafkaTemporaryStorageMapperExt {
/**
* 根据kafka临时表id更新备注,处理次数,状态为2,处理失败
* @param id id
* @param consCode
* @param remark
*/
@Update("<script>" +
"UPDATE T_SYS_KAFKA_TEMPORARY_STORAGE " +
"SET STATUS = 2, FREQUENCY = FREQUENCY + 1,CONSIGNMENT_CODE =#{consCode,jdbcType=VARCHAR}, " +
"REMARK =#{remark,jdbcType=VARCHAR} where ID =#{id,jdbcType=NUMERIC}" +
"</script>")
void updateKafkaTemporaryStorageById(@Param("consCode") String consCode
, @Param("remark") String remark
, @Param("id") Long id);
/**
* 根据id删除kafka临时表
* @param id
* @return
*/
@Delete("<script>" +
"DELETE FROM T_SYS_KAFKA_TEMPORARY_STORAGE WHERE ID = #{id,jdbcType=NUMERIC} " +
"</script>")
void deleteKafkaTemporaryStorageById(@Param("id") Long id);
/**
* 根据集合批量删除kafka临时表
* @param list
* @return
*/
@Delete("<script>" +
"DELETE T_SYS_KAFKA_TEMPORARY_STORAGE WHERE ID IN\n" +
" <foreach item=\"item\" index=\"index\" collection=\"list\" open=\"(\" separator=\",\" close=\")\">\n" +
" #{item.id}\n" +
" </foreach>" +
"</script>")
int deleteInBatch(@Param("list") List<KafkaTemporaryStorage> list);
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.repo;
import com.fedex.connect.common.model.biz.CeInfo;
import java.util.List;
/**
* @Author mt
* @Description CE数据repository
* @Date 2024/4/22
*/
public interface ICeInfoRepository {
CeInfo save(CeInfo entity);
void saveAll(List<CeInfo> list);
/**
* @Author mt
* @Description 获取创建时间为1个月内CE数据
* @Date 2024/4/22
* @param consignmentCode
* @return com.fedex.export.repository.entity.BizCeInfo
*/
CeInfo findBizCeInfoContainsByConsignmentCode(String consignmentCode);
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.repo;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import java.util.List;
/**
* kafka历史表dao
* mt
* 2022年11月3日15:30:53
*/
public interface IKafkaStorageHistoryRepository {
KafkaStorageHistory save(KafkaStorageHistory entity);
void saveAll(List<KafkaStorageHistory> list);
}
package com.fedex.connect.kafka.repository.repo;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import java.util.List;
/**
* kafka临时表dao
* mt
* 2022年11月3日15:30:53
*/
public interface IKafkaTemporaryStorageRepository {
/**
* 根据kafka临时表id更新备注,处理次数,状态为2,处理失败
* @param id id
* @param consCode
* @param remark
*/
void updateKafkaTemporaryStorageById(String consCode, String remark, Long id);
/**
* 根据id删除kafka临时表
* @param id
* @return
*/
void deleteKafkaTemporaryStorageById(Long id);
int deleteInBatch(List<KafkaTemporaryStorage> list);
List<KafkaTemporaryStorage> saveAll(List<KafkaTemporaryStorage> list);
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.repo.impl;
import com.fedex.connect.common.model.biz.CeInfo;
import com.fedex.connect.kafka.repository.base.AbstractDaoRepository;
import com.fedex.connect.kafka.repository.repo.ICeInfoRepository;
import org.springframework.stereotype.Repository;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Author mt
* @Description CE数据repository
* @Date 2024/4/22
*/
@Repository
public class CeInfoRepositoryImpl extends AbstractDaoRepository implements ICeInfoRepository {
@Override
public CeInfo save(CeInfo entity) {
if(entity != null) {
if (entity.getId() == null || entity.getId().longValue() <= 0) {
ceInfoMapper.insertSelective(entity);
} else if (entity.getId() != null && entity.getId().longValue() > 0){
ceInfoMapper.updateByPrimaryKeySelective(entity);
}
}
return entity;
}
@Override
public void saveAll(List<CeInfo> list) {
list.stream().forEach(p->{
if(p.getId() == null || p.getId().longValue() <=0){
ceInfoMapper.insertSelective(p);
}else if(p.getId() != null && p.getId().longValue() >0){
ceInfoMapper.updateByPrimaryKeySelective(p);
}
});
}
/**
* @Author mt
* @Description 获取创建时间为获取30天内CE数据
* @Date 2024/4/22
* @param consignmentCode
* @return com.fedex.export.repository.entity.BizCeInfo
*/
@Override
public CeInfo findBizCeInfoContainsByConsignmentCode(String consignmentCode){
//获取30天内CE数据
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -30);
Date thirtyDaysAgo = calendar.getTime();
return ceInfoMapperExt.findBizCeInfoContainsByConsignmentCode(consignmentCode,thirtyDaysAgo);
}
}
\ No newline at end of file
package com.fedex.connect.kafka.repository.repo.impl;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import com.fedex.connect.kafka.repository.base.AbstractDaoRepository;
import com.fedex.connect.kafka.repository.repo.IKafkaStorageHistoryRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* kafka历史表dao
* mt
* 2022年11月3日15:30:53
*/
@Repository
public class KafkaStorageHistoryRepositoryImpl extends AbstractDaoRepository implements IKafkaStorageHistoryRepository {
@Override
public KafkaStorageHistory save(KafkaStorageHistory entity){
if(entity != null) {
if (entity.getId() == null || entity.getId().longValue() <= 0) {
kafkaStorageHistoryMapper.insertSelective(entity);
} else if (entity.getId() != null && entity.getId().longValue() > 0){
kafkaStorageHistoryMapper.updateByPrimaryKeySelective(entity);
}
}
return entity;
}
@Override
public void saveAll(List<KafkaStorageHistory> list){
list.stream().forEach(p->{
if(p.getId() == null || p.getId().longValue() <=0){
kafkaStorageHistoryMapper.insertSelective(p);
}else if(p.getId() != null && p.getId().longValue() >0){
kafkaStorageHistoryMapper.updateByPrimaryKeySelective(p);
}
});
}
}
package com.fedex.connect.kafka.repository.repo.impl;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.repository.base.AbstractDaoRepository;
import com.fedex.connect.kafka.repository.repo.IKafkaTemporaryStorageRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* kafka临时表dao
* mt
* 2022年11月3日15:30:53
*/
@Repository
public class KafkaTemporaryStorageRepositoryImpl extends AbstractDaoRepository implements IKafkaTemporaryStorageRepository {
@Override
public void updateKafkaTemporaryStorageById(String consCode, String remark, Long id) {
kafkaTemporaryStorageMapperExt.updateKafkaTemporaryStorageById( consCode, remark, id);
}
@Override
public void deleteKafkaTemporaryStorageById(Long id) {
kafkaTemporaryStorageMapperExt.deleteKafkaTemporaryStorageById( id);
}
@Override
public int deleteInBatch(List<KafkaTemporaryStorage> list) {
return kafkaTemporaryStorageMapperExt.deleteInBatch(list);
}
@Override
public List<KafkaTemporaryStorage> saveAll(List<KafkaTemporaryStorage> list) {
list.stream().forEach(p->{
if(p.getId() == null || p.getId().longValue() <=0){
kafkaTemporaryStorageMapper.insertSelective(p);
}else if(p.getId() != null && p.getId().longValue() >0){
kafkaTemporaryStorageMapper.updateByPrimaryKeySelective(p);
}
});
return list;
}
}
\ No newline at end of file
package com.fedex.connect.kafka.service;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.data.dto.DmProcessResults;
public interface IDm501Service {
DmProcessResults dm501Process(KafkaTemporaryStorage kafKaTemporaryStorage);
}
\ No newline at end of file
package com.fedex.connect.kafka.service;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.data.dto.DmProcessResults;
import java.util.List;
import java.util.Map;
public interface IKafkaDmService {
/**
* Kafka临时表保存
* @param kafkaTemporaryStorageList
*/
List<KafkaTemporaryStorage> saveKafkaTemporaryStorageAll(List<KafkaTemporaryStorage> kafkaTemporaryStorageList);
/**
* Kafka历史表保存
* @param kafkaStorageHistory
*/
KafkaStorageHistory saveKafkaStorageHistory(KafkaStorageHistory kafkaStorageHistory);
/**
* 根据id删除Kafka临时表
* @param id
*/
void deleteKafkaTemporaryStorage(Long id);
/**
* 将消息对象推送至指定DM处理监听中
* @param messageMap
*/
void pushMessageList(Map<String, List<String>> messageMap);
/**
* 将数据封装至map
* @param messageCode
* @param message
* @param messageMap
*/
void pushMessageMap(String messageCode, String message, Map<String, List<String>> messageMap);
/**
* 业务处理成功则,Kafka临时表转历史表,失败则更新临时表数据
* @param kafkaStorageHistory 该实体id为临时表ID
*/
void kafkaTemporaryTransferToHistory(DmProcessResults processResults,
KafkaTemporaryStorage kafkaTemporaryStorage,
KafkaStorageHistory kafkaStorageHistory);
/**
* 将Kafka临时表id追加至kafka json字符串中
* @param message
* @param id
* @return
* @throws Exception
*/
String addKafkaTempId(String message, Long id) throws Exception;
}
package com.fedex.connect.kafka.service;
public interface IKafkaProducerService {
void sendMessage(String message);
}
package com.fedex.connect.kafka.service.base;
import com.fedex.connect.kafka.repository.repo.ICeInfoRepository;
import com.fedex.connect.kafka.repository.repo.IKafkaStorageHistoryRepository;
import com.fedex.connect.kafka.repository.repo.IKafkaTemporaryStorageRepository;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @Author mt
* @Description 用于管理公共Service
* @Date 2024/4/18
*/
public class BaseService {
@Autowired
protected IKafkaStorageHistoryRepository kafkaStorageHistoryRepository;
@Autowired
protected IKafkaTemporaryStorageRepository kafkaTemporaryStorageRepository;
@Autowired
protected ICeInfoRepository ceInfoRepository;
}
\ No newline at end of file
package com.fedex.connect.kafka.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.fedex.connect.common.dependencies.util.DateUtil;
import com.fedex.connect.common.dependencies.util.Utils;
import com.fedex.connect.common.model.biz.CeInfo;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.constants.Constant;
import com.fedex.connect.kafka.data.dto.DmProcessResults;
import com.fedex.connect.kafka.data.dto.dm.dm501.Dm501ConAddresses;
import com.fedex.connect.kafka.data.dto.dm.dm501.Dm501Consignments;
import com.fedex.connect.kafka.data.dto.dm.dm501.Dm501Data;
import com.fedex.connect.kafka.service.IDm501Service;
import com.fedex.connect.kafka.service.base.BaseService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Author mt
* @Description dm501消息处理
* @Date 2024/4/19
*/
@Service
public class Dm501ServiceImpl extends BaseService implements IDm501Service {
/**
* @Author mt
* @Description 处理dm501消息
* @Date 2024/4/19
* @param kafKaTemporaryStorage
* @return com.fedex.connect.kafka.data.dto.DmProcessResults
*/
public DmProcessResults dm501Process(KafkaTemporaryStorage kafKaTemporaryStorage){
//DM001处理结果
DmProcessResults processResults = new DmProcessResults();
processResults.setResultFlag(true);
//获取数据
Dm501Data data = JSONObject.parseObject(kafKaTemporaryStorage.getData(), Dm501Data.class);
List<Dm501Consignments> dm501Consignments = data.getConsignments();
//遍历dm501
Utils.listOf(dm501Consignments).stream().filter(Objects::nonNull).forEach(consignment -> {
CeInfo bizCeInfo = ceInfoRepository.findBizCeInfoContainsByConsignmentCode(consignment.getTrackingNumber());
//将运单号保存
processResults.setConsignmentCode(consignment.getTrackingNumber());
//该运单号不存在创建时间为1个月内CE数据
if(Objects.isNull(bizCeInfo)){
CeInfo ceInfo = this.generateCeInfo(kafKaTemporaryStorage.getSendTime(),consignment);
ceInfoRepository.save(ceInfo);
}
});
return processResults;
}
/**
* @Author mt
* @Description 生成CE数据实体
* @Date 2024/4/22
* @param dm501Consignment
* @return com.fedex.connect.common.model.biz.CeInfo
*/
private CeInfo generateCeInfo(Date sendTime,Dm501Consignments dm501Consignment){
CeInfo bizCeInfo = new CeInfo();
bizCeInfo.setConsignmentCode(dm501Consignment.getTrackingNumber());
bizCeInfo.setCreateTime(new Date());
bizCeInfo.setDestIataCode(dm501Consignment.getDestIataCode());
//地址信息
List<Dm501ConAddresses> addressList = dm501Consignment.getAddresses();
//没有地址信息,不需要处理,不进CE业务表
if(addressList == null){
return null;
}
//发件人
Dm501ConAddresses shipperAddress = this.queryDM501Addresses(addressList, Constant.CE_INFO_ADDRESS_KEYS.SHIPPER);
//收件人
Dm501ConAddresses recipientAddress = this.queryDM501Addresses(addressList, Constant.CE_INFO_ADDRESS_KEYS.RECIPIENT);
//没有收发件人地址信息,不需要处理,不进CE业务表
if(shipperAddress == null || recipientAddress == null){
return null;
}
//发件人国家
String shipperCountry = shipperAddress.getCountry();
//始发国(二字码)
bizCeInfo.setShipperCountry(shipperCountry);
//发件人国家不为TW,不需要处理,不进CE业务表
if(StringUtils.isEmpty(shipperCountry) || !shipperCountry.trim().equals(Constant.CE_INFO_KEYS.TW)){
return null;
}
//收件人国家
String recipientCountry = recipientAddress.getCountry();
//目的国家二字码
bizCeInfo.setRecipientCountry(recipientCountry);
//收件人国家不为CN,不需要处理,不进CE业务表
if(StringUtils.isEmpty(recipientCountry) || !recipientCountry.trim().equals(Constant.CE_INFO_KEYS.CN)){
return null;
}
bizCeInfo.setSendTime(sendTime);
String shipDate = dm501Consignment.getShipDate();
if(StringUtils.isNotEmpty(shipDate)){
bizCeInfo.setShipDate(DateUtil.parse(shipDate));
}
return bizCeInfo;
}
/**
* 根据类型获取地址信息
* SHIPPER/发件人---RECIPIENT/收件人---BROKEN/代理人
* @param type
* @return
*/
private Dm501ConAddresses queryDM501Addresses(List<Dm501ConAddresses> addressList,String type){
Dm501ConAddresses address = null;
for(int i = 0 ; i < addressList.size() ; i ++){
Dm501ConAddresses ad = addressList.get(i);
if(ad.getType().equals(type)){
address = ad;
break;
}
}
return address;
}
}
\ No newline at end of file
package com.fedex.connect.kafka.service.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fedex.connect.common.model.sys.KafkaStorageHistory;
import com.fedex.connect.common.model.sys.KafkaTemporaryStorage;
import com.fedex.connect.kafka.data.dto.DmProcessResults;
import com.fedex.connect.kafka.listener.DmListenerInterface;
import com.fedex.connect.kafka.service.IKafkaDmService;
import com.fedex.connect.kafka.service.base.BaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* kafka操作service
* mt
* 2022年11月3日16:09:48
*/
@Service
public class KafkaDmServiceImpl extends BaseService implements ApplicationContextAware, IKafkaDmService {
private Logger logger = LoggerFactory.getLogger(KafkaDmServiceImpl.class);
private ApplicationContext applicationContext = null;
/**
* kafka临时表保存
* @param kafkaTemporaryStorageList
*/
@Override
public List<KafkaTemporaryStorage> saveKafkaTemporaryStorageAll(List<KafkaTemporaryStorage> kafkaTemporaryStorageList){
return kafkaTemporaryStorageRepository.saveAll(kafkaTemporaryStorageList);
}
/**
* kafka历史表保存
* @param kafkaStorageHistory
*/
@Override
public KafkaStorageHistory saveKafkaStorageHistory(KafkaStorageHistory kafkaStorageHistory){
return kafkaStorageHistoryRepository.save(kafkaStorageHistory);
}
/**
* 根据id删除kafka临时表
* @param id
*/
@Override
public void deleteKafkaTemporaryStorage(Long id){
kafkaTemporaryStorageRepository.deleteKafkaTemporaryStorageById(id);
}
/**
* 将消息对象推送至指定DM处理监听中
* @param messageMap
*/
@Override
public void pushMessageList(Map<String,List<String>> messageMap){
try {
messageMap.forEach((key, value) -> {
//messageCode转换为小写
key = key.toLowerCase();
DmListenerInterface dmListener = applicationContext.getBean(key + "Listener", DmListenerInterface.class);
dmListener.pushMessageList(value);
});
}catch(Exception ex){
logger.error("pushMessageList error : " + ex.getMessage() , ex);
}finally{
messageMap.clear();
}
}
/**
* 将数据封装至map
* @param messageCode
* @param message
* @param messageMap
*/
@Override
public void pushMessageMap(String messageCode,String message,Map<String,List<String>> messageMap){
//将数据进行分类
if(messageMap.containsKey(messageCode)){
List<String> messageList = messageMap.get(messageCode);
messageList.add(message);
messageMap.put(messageCode,messageList);
}else{
List<String> messageList = new ArrayList<String>();
messageList.add(message);
messageMap.put(messageCode,messageList);
}
}
/**
* 业务处理成功则,kafka临时表转历史表,失败则更新临时表数据
* @param kafkaStorageHistory 该实体id为临时表ID
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void kafkaTemporaryTransferToHistory(DmProcessResults processResults,
KafkaTemporaryStorage kafkaTemporaryStorage,
KafkaStorageHistory kafkaStorageHistory){
//判断程序处理是否正常
if(processResults.isResultFlag()){
//处理成功将临时表数据备份至历史表
this.deleteKafkaTemporaryStorage(kafkaTemporaryStorage.getId());
//将数据保存至kafka历史表,将id清除
kafkaStorageHistory.setId(null);
//设置创建时间
kafkaStorageHistory.setCreateTime(new Date());
//将消息状态设置为已处理
kafkaStorageHistory.setStatus(1L);
//设置运单号
kafkaStorageHistory.setConsignmentCode(processResults.getConsignmentCode());
//保存至kafka历史表
this.saveKafkaStorageHistory(kafkaStorageHistory);
}else{
kafkaTemporaryStorageRepository.updateKafkaTemporaryStorageById(processResults.getConsignmentCode(),processResults.getResult(),kafkaStorageHistory.getId());
}
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
/**
* 将kafka临时表id追加至kafka json字符串中
* @param message
* @param id
* @return
* @throws Exception
*/
@Override
public String addKafkaTempId(String message,Long id) throws Exception{
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode jsonNodes = null;
jsonNodes = objectMapper.readValue(message, ObjectNode.class);
jsonNodes.put("id", id);
String json = objectMapper.writeValueAsString(jsonNodes);
return json;
}
}
\ No newline at end of file
package com.fedex.connect.kafka.service.impl;
import com.fedex.connect.kafka.service.IKafkaProducerService;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
* @Author mt
* @Description kafka生产者service
* @Date 2024/4/26
*/
@Service
public class KafkaProducerServiceImpl implements IKafkaProducerService {
@Value("${spring.kafka.consumer.topic-name}")
private String dmTopic;
// @Autowired
private KafkaProducer<String, String> kafkaProducer;
public void sendMessage(String message){
// //发送kafka
// ProducerRecord pr = new ProducerRecord<String, String>(dmTopic,message);
// kafkaProducer.send(pr);
}
}
spring:
datasource:
url: jdbc:oracle:thin:@192.168.1.250:1521:orcl
username: icleartw
password: icleartw
username: iclearimp
password: iclearimp
driver-class-name: oracle.jdbc.OracleDriver
profiles:
#系统环境
......@@ -12,8 +12,8 @@ spring:
# 指定kafka server的地址,集群配多个,中间,逗号隔开
bootstrap-servers: 47.103.140.98:9092
#验证文件地址
iclear-kerberos-jaasPath: /opt/fedex/icleartw/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/icleartw/conf/krb5.conf
iclear-kerberos-jaasPath: /opt/fedex/iclearConnect/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/iclearConnect/conf/krb5.conf
#=============== provider =======================
producer:
#可以设置的值为:all, -1, 0, 1
......@@ -48,35 +48,3 @@ spring:
max-poll-records: 1000
#kafka消费线程数
spring-kafka-threadNum: 10
\ No newline at end of file
export:
jwt:
securityKey: C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w
urlWhiteList:
- /icleartw/auth
- /icleartw/sysUser/logout
- /icleartw/swagger-resources
- /icleartw/webjars
uriWhiteList:
- /icleartw/swagger-ui.html
- /icleartw/swagger-ui/*
- /icleartw/v2/api-docs
- /icleartw/login.html
expire_1H: 7200
expire_1D: 604800
mail:
smtp:
host: smtp.qiye.aliyun.com
port: 25
needauth: true
proxy:
startFlag: false
host: sin-proxy.apac.fedex.com
port: 3128
mailAccountFlag: true
mailgroup:
declare: { from: 'kexin.zhou@erry.com',password: 'Zhou1234',to: 'kexin.zhou@erry.com',cc: 'kexin.zhou@erry.com' }
resetpwd: { from: 'tao.mo@erry.com',password: 'xiaozhen!1'}
# propertyPath:
# redis: /opt/fedex/exporttw/redis/export-redis.properties
language: zh_TW
emailActiveTime: 60
......
spring:
datasource:
jndi-name: jdbc/icleartwDS
jndi-name: jdbc/iclearConnectDS
profiles:
#系统环境
env: prod
......@@ -9,8 +9,8 @@ spring:
# 指定kafka server的地址,集群配多个,中间,逗号隔开
bootstrap-servers: papc0014.cndczmd.apac.fedex.com:52094,papc0015.cndczmd.apac.fedex.com:52094,papc0016.cndczmd.apac.fedex.com:52094,papc0017.cndczmd.apac.fedex.com:52094,papc0018.cndczmd.apac.fedex.com:52094,papc0019.cndczmd.apac.fedex.com:52094
#验证文件地址
iclear-kerberos-jaasPath: /opt/fedex/icleartw/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/icleartw/conf/krb5.conf
iclear-kerberos-jaasPath: /opt/fedex/iclearConnect/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/iclearConnect/conf/krb5.conf
#=============== provider =======================
producer:
#可以设置的值为:all, -1, 0, 1
......@@ -45,33 +45,3 @@ spring:
max-poll-records: 1000
#kafka消费线程数
spring-kafka-threadNum: 10
\ No newline at end of file
export:
jwt:
securityKey: C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w
urlWhiteList:
- /icleartw/auth
- /icleartw/sysUser/logout
- /icleartw/swagger-resources
- /icleartw/webjars
uriWhiteList:
- /icleartw/swagger-ui.html
- /icleartw/swagger-ui/*
- /icleartw/v2/api-docs
- /icleartw/login.html
expire_1H: 7200
expire_1D: 604800
mail:
smtp:
host: mapper.gslb.fedex.com
port: 25
needauth: true
proxy:
startFlag: false
host: sg2-proxy.apac.fedex.com
port: 3128
mailAccountFlag: false
# propertyPath:
# redis: /opt/fedex/exporttw/redis/export-redis.properties
language: zh_TW
emailActiveTime: 60
......
spring:
datasource:
jndi-name: jdbc/icleartwDS
jndi-name: jdbc/iclearConnectDS
profiles:
#系统环境
env: test
......@@ -9,8 +9,8 @@ spring:
# 指定kafka server的地址,集群配多个,中间,逗号隔开
bootstrap-servers: 47.103.140.98:9092
#验证文件地址
iclear-kerberos-jaasPath: /opt/fedex/icleartw/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/icleartw/conf/krb5.conf
iclear-kerberos-jaasPath: /opt/fedex/iclearConnect/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/iclearConnect/conf/krb5.conf
#=============== provider =======================
producer:
#可以设置的值为:all, -1, 0, 1
......@@ -45,33 +45,3 @@ spring:
max-poll-records: 1000
#kafka消费线程数
spring-kafka-threadNum: 10
\ No newline at end of file
export:
jwt:
securityKey: C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w
urlWhiteList:
- /icleartw/auth
- /icleartw/sysUser/logout
- /icleartw/swagger-resources
- /icleartw/webjars
uriWhiteList:
- /icleartw/swagger-ui.html
- /icleartw/swagger-ui/*
- /icleartw/v2/api-docs
- /icleartw/login.html
expire_1H: 7200
expire_1D: 604800
mail:
smtp:
host: smtp.qiye.aliyun.com
port: 25
needauth: true
proxy:
startFlag: false
host: sin-proxy.apac.fedex.com
port: 3128
mailAccountFlag: true
# propertyPath:
# redis: /opt/fedex/exporttw/redis/export-redis.properties
language: zh_TW
emailActiveTime: 60
\ No newline at end of file
......
spring:
datasource:
jndi-name: jdbc/icleartwDS
jndi-name: jdbc/iclearConnectDS
profiles:
#系统环境
env: uat
......@@ -9,8 +9,8 @@ spring:
# 指定kafka server的地址,集群配多个,中间,逗号隔开
bootstrap-servers: uapc0004.cndczmd.apac.fedex.com:52094,uapc0005.cndczmd.apac.fedex.com:52094,uapc0006.cndczmd.apac.fedex.com:52094,uapc0007.cndczmd.apac.fedex.com:52094,uapc0008.cndczmd.apac.fedex.com:52094,uapc0009.cndczmd.apac.fedex.com:52094
#验证文件地址
iclear-kerberos-jaasPath: /opt/fedex/icleartw/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/icleartw/conf/krb5.conf
iclear-kerberos-jaasPath: /opt/fedex/iclearConnect/conf/app_3537251_iclear_jaas.conf
iclear-kerberos-krb5: /opt/fedex/iclearConnect/conf/krb5.conf
#=============== provider =======================
producer:
#可以设置的值为:all, -1, 0, 1
......@@ -45,33 +45,3 @@ spring:
max-poll-records: 1000
#kafka消费线程数
spring-kafka-threadNum: 10
\ No newline at end of file
export:
jwt:
securityKey: C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w
urlWhiteList:
- /icleartw/auth
- /icleartw/sysUser/logout
- /icleartw/swagger-resources
- /icleartw/webjars
uriWhiteList:
- /icleartw/swagger-ui.html
- /icleartw/swagger-ui/*
- /icleartw/v2/api-docs
- /icleartw/login.html
expire_1H: 7200
expire_1D: 604800
mail:
smtp:
host: mapper.gslb.fedex.com
port: 25
needauth: true
proxy:
startFlag: false
host: sg2-proxy.apac.fedex.com
port: 3128
mailAccountFlag: false
# propertyPath:
# redis: /opt/fedex/exporttw/redis/export-redis.properties
language: zh_TW
emailActiveTime: 60
\ No newline at end of file
......
server:
port: 8088
port: 8082
servlet:
context-path: /kafka-cndc-server
spring:
......@@ -13,7 +13,7 @@ spring:
mybatis:
mapper-locations:
- classpath*:com/fedex/export/**/mapper/*.xml
- classpath*:com/fedex/connect/**/mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#开启驼峰与下划线转换
......
......@@ -2,11 +2,11 @@
<configuration>
<springProfile name="dev,uat,prod">
<!-- 日志存放路径 -->
<property name="log.path" value="/var/fedex/iclearconnect/weblogic/iclearconnect/export-tw-kafka"></property>
<property name="log.path" value="/var/fedex/iclearConnect/weblogic/iclearConnect/kafka-cndc-server"></property>
</springProfile>
<springProfile name="test">
<!-- 日志存放路径 -->
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearconnect/export-tw-kafka"></property>
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearConnect/kafka-cndc-server"></property>
</springProfile>
<!-- 日志输出格式 -->
<property name="log.pattern"
......@@ -109,10 +109,16 @@
<root level="info">
<appender-ref ref="console"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.kafka.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.kafka.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......@@ -121,10 +127,16 @@
<appender-ref ref="file_info"></appender-ref>
<appender-ref ref="file_error"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.kafka.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.kafka.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......
......@@ -35,6 +35,11 @@
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>common-dependencies</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>base-starter</artifactId>
<version>1.0.0</version>
<scope>${install.scope}</scope>
......
package com.fedex.connect.manager.dao.base;
import com.fedex.connect.common.dao.base.DictionaryEntriesMapper;
import com.fedex.connect.common.dao.log.UserLoginInfoMapper;
import com.fedex.connect.common.dao.sys.RedisSlabMapper;
import com.fedex.connect.common.dao.sys.RoleMapper;
import com.fedex.connect.common.dao.sys.UserMapper;
import com.fedex.connect.common.dao.sys.UserRoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
public class BaseDao {
@Autowired
public UserLoginInfoMapper userLoginInfoMapper;
@Autowired
public RedisSlabMapper redisSlabMapper;
@Autowired
public RoleMapper roleMapper;
@Autowired
public UserRoleMapper userRoleMapper;
@Autowired
public UserMapper userMapper;
@Autowired
public DictionaryEntriesMapper dictionaryEntriesMapper;
}
server:
port: 8086
port: 8083
servlet:
context-path: /manager-server
session:
......@@ -22,8 +22,7 @@ spring:
mybatis:
mapper-locations:
- classpath*:com/fedex/export/**/mapper/*.xml
- classpath*:com/fedex/export/**/mapper/log/*.xml
- classpath*:com/fedex/connect/**/mapper/**/*.xml
configuration:
#开启驼峰与下划线转换
map-underscore-to-camel-case: true
......
......@@ -2,11 +2,11 @@
<configuration>
<springProfile name="dev,uat,prod">
<!-- 日志存放路径 -->
<property name="log.path" value="/var/fedex/iclearconnect/weblogic/iclearconnect/export-tw-server" />
<property name="log.path" value="/var/fedex/iclearConnect/weblogic/iclearConnect/manager-server" />
</springProfile>
<springProfile name="test">
<!-- 日志存放路径 -->
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearconnect/export-tw-server"></property>
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearConnect/manager-server"></property>
</springProfile>
<!-- 日志输出格式 -->
<property name="log.pattern"
......@@ -109,10 +109,16 @@
<root level="info">
<appender-ref ref="console"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.manager.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.manager.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......@@ -121,10 +127,16 @@
<appender-ref ref="file_info"></appender-ref>
<appender-ref ref="file_error"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.manager.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.manager.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......
......@@ -35,6 +35,11 @@
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>common-dependencies</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.fedex.connect</groupId>
<artifactId>base-starter</artifactId>
<version>1.0.0</version>
<scope>${install.scope}</scope>
......
server:
port: 8087
port: 8084
servlet:
context-path: /task-schedule
spring:
......@@ -13,9 +13,7 @@ spring:
mybatis:
mapper-locations:
- classpath*:com/fedex/export/**/mapper/*.xml
- classpath*:com/fedex/export/**/mapper/log/*.xml
- classpath*:com/fedex/export/**/mapper/sys/*.xml
- classpath*:com/fedex/connect/**/mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#开启驼峰与下划线转换
......
......@@ -2,11 +2,11 @@
<configuration>
<springProfile name="dev,uat,prod">
<!-- 日志存放路径 -->
<property name="log.path" value="/var/fedex/iclearconnect/weblogic/iclearconnect/export-tw-task" />
<property name="log.path" value="/var/fedex/iclearConnect/weblogic/iclearConnect/task-schedule" />
</springProfile>
<springProfile name="test">
<!-- 日志存放路径 -->
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearconnect/export-tw-task"></property>
<property name="log.path" value="/app/Oracle/Middleware/user_projects/domains/base_domain/iclearConnect/task-schedule"></property>
</springProfile>
<!-- 日志输出格式 -->
<property name="log.pattern"
......@@ -109,10 +109,16 @@
<root level="info">
<appender-ref ref="console"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.task.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.task.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......@@ -121,10 +127,16 @@
<appender-ref ref="file_info"></appender-ref>
<appender-ref ref="file_error"></appender-ref>
</root>
<logger name="com.fedex.export.repository.dao" level="debug">
<logger name="com.fedex.connect.common.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.common.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.connect.task.repository.dao" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
<logger name="com.fedex.export.repository.mapper" level="debug">
<logger name="com.fedex.connect.task.repository.mapper" level="debug">
<appender-ref ref="file_debug"></appender-ref>
</logger>
</springProfile>
......