Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-mvp
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fangxinjiang
yifu-mvp
Commits
d8b472f4
Commit
d8b472f4
authored
Jun 17, 2022
by
fangxinjiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增小工具服务
parent
fb79858f
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
2704 additions
and
358 deletions
+2704
-358
yifu-check-deployment.yaml
k8s-bash-test/yifu-check-deployment.yaml
+107
-0
yifu-check-service.yaml
k8s-bash-test/yifu-check-service.yaml
+20
-0
pom.xml
yifu-check/yifu-check-api/pom.xml
+9
-1
TCheckApiNum.java
...ava/com/yifu/cloud/plus/v1/check/entity/TCheckApiNum.java
+50
-0
TCheckIdCard.java
...ava/com/yifu/cloud/plus/v1/check/entity/TCheckIdCard.java
+84
-0
TCheckLock.java
.../java/com/yifu/cloud/plus/v1/check/entity/TCheckLock.java
+77
-0
CheckIdCard.java
.../java/com/yifu/cloud/plus/v1/check/utils/CheckIdCard.java
+81
-0
HttpUtils.java
...in/java/com/yifu/cloud/plus/v1/check/utils/HttpUtils.java
+83
-0
Dockerfile
yifu-check/yifu-check-biz/Dockerfile
+3
-3
CheckApplication.java
...n/java/com/yifu/cloud/plus/v1/check/CheckApplication.java
+3
-3
TCheckIdCardController.java
...loud/plus/v1/check/controller/TCheckIdCardController.java
+135
-0
TCheckApiNumMapper.java
...m/yifu/cloud/plus/v1/check/mapper/TCheckApiNumMapper.java
+16
-0
TCheckIdCardMapper.java
...m/yifu/cloud/plus/v1/check/mapper/TCheckIdCardMapper.java
+38
-0
TCheckLockMapper.java
...com/yifu/cloud/plus/v1/check/mapper/TCheckLockMapper.java
+26
-0
TCheckApiNumService.java
...yifu/cloud/plus/v1/check/service/TCheckApiNumService.java
+12
-0
TCheckIdCardService.java
...yifu/cloud/plus/v1/check/service/TCheckIdCardService.java
+48
-0
TCheckLockService.java
...m/yifu/cloud/plus/v1/check/service/TCheckLockService.java
+21
-0
TCheckApiNumServiceImpl.java
...d/plus/v1/check/service/impl/TCheckApiNumServiceImpl.java
+22
-0
TCheckIdCardServiceImpl.java
...d/plus/v1/check/service/impl/TCheckIdCardServiceImpl.java
+224
-0
TCheckLockServiceImpl.java
...oud/plus/v1/check/service/impl/TCheckLockServiceImpl.java
+25
-0
ConsumerController.java
...cloud/plus/v1/consumer/controller/ConsumerController.java
+0
-115
Consumer.java
...java/com/yifu/cloud/plus/v1/consumer/entity/Consumer.java
+0
-59
ConsumerMapper.java
...om/yifu/cloud/plus/v1/consumer/mapper/ConsumerMapper.java
+0
-33
ConsumerService.java
.../yifu/cloud/plus/v1/consumer/service/ConsumerService.java
+0
-32
ConsumerServiceImpl.java
...ud/plus/v1/consumer/service/impl/ConsumerServiceImpl.java
+0
-61
application.yml
yifu-check/yifu-check-biz/src/main/resources/application.yml
+7
-5
ConsumerMapper.xml
...fu-check-biz/src/main/resources/mapper/ConsumerMapper.xml
+0
-35
TCheckApiNumMapper.xml
...heck-biz/src/main/resources/mapper/TCheckApiNumMapper.xml
+4
-0
TCheckIdCardMapper.xml
...heck-biz/src/main/resources/mapper/TCheckIdCardMapper.xml
+63
-0
TCheckLockMapper.xml
...-check-biz/src/main/resources/mapper/TCheckLockMapper.xml
+33
-0
pom.xml
yifu-common/yifu-common-core/pom.xml
+6
-0
CommonConstants.java
...ud.plus.v1/yifu/common/core/constant/CommonConstants.java
+11
-3
Common.java
.../com/yifu.cloud.plus.v1/yifu/common/core/util/Common.java
+13
-0
DateUtil.java
...om/yifu.cloud.plus.v1/yifu/common/core/util/DateUtil.java
+1415
-0
MonthObject.java
.../cloud/plus/v1/yifu/common/core/util/sms/MonthObject.java
+60
-0
SysDataAuthServiceImpl.java
...us.v1/yifu/admin/service/impl/SysDataAuthServiceImpl.java
+8
-8
No files found.
k8s-bash-test/yifu-check-deployment.yaml
0 → 100644
View file @
d8b472f4
apiVersion
:
apps/v1
# 指定api版本,此值必须在kubectl api-versions中
kind
:
Deployment
# 指定创建资源的角色/类型
metadata
:
# 资源的元数据/属性
name
:
yifu-check
# 资源的名字,在同一个namespace中必须唯一
namespace
:
qas-mvp
# 部署在哪个namespace中
spec
:
# 资源规范字段
selector
:
# 选择器
matchLabels
:
# 匹配标签
app
:
yifu-check
replicas
:
1
# 声明副本数目
#revisionHistoryLimit: 3 # 保留历史版本
#strategy: # 策略
# rollingUpdate: # 滚动更新
# maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
# maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
# type: RollingUpdate # 滚动更新策略
template
:
# 模版
metadata
:
# 模版
labels
:
# 设定资源的标签
app
:
yifu-check
annotations
:
dapr.io/enabled
:
"
true"
#设定此参数为 true 注入Dapr sidecar到pod
dapr.io/app-id
:
"
yifu-check"
#应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
dapr.io/app-port
:
"
5022"
#这个参数告诉Dapr你的应用程序正在监听哪个端口。
#dapr.io/log-level: "debug" #为 Dapr sidecar设置日志级别。 允许的值是debug,info,warn,error。 默认是 info
#dapr.io/log-as-json: "false" #将此参数设置为true以JSON格式输出日志。 默认值为 false.
#dapr.io/config: file #告诉 Dapr 要使用哪个配置 CRD
dapr.io/app-protocol
:
"
http"
#告诉 Dapr 你的应用程序正在使用哪种协议。 有效选项是 http and grpc。 Default is http
#dapr.io/app-max-concurrency: "20" #限制应用程序的并发量。 有效的数值是大于 0
#dapr.io/app-ssl: "false" #告诉Dapr通过不安全的SSL连接调用应用程序。 同时适用于HTTP和gRPC。 Traffic between your app and the Dapr sidecar is encrypted with a certificate issued by a non-trusted certificate authority, which is considered insecure. 默认值为 false.
dapr.io/metrics-port
:
"
9090"
#设置 sidecar 度量服务器的端口。 默认值为 9090
#dapr.io/sidecar-cpu-limit: 2 #Dapr sidecar可以使用的最大CPU数量。 默认情况下未设置
#dapr.io/sidecar-memory-limit: "800Mi" #Dapr sidecar可以使用的最大内存量。默认情况下未设置 请参阅 https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/ 的有效值。
#dapr.io/sidecar-cpu-request: 1 #Dapr sidecar要求的 CPU 数量
#dapr.io/sidecar-memory-request #Dapr sidecar 请求的内存数量
#dapr.io/http-max-request-size: "8MB" #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
dapr.io/sidecar-listen-addresses
:
"
0.0.0.0"
# 更多dapr配置请参考 https://www.bookstack.cn/read/dapr-1.5-zh/cc77b74e2cc2f4d4.md
spec
:
# 资源规范字段
nodeSelector
:
# node 选择器
node-type
:
worker
# node标签
containers
:
# 容器
-
name
:
yifu-check
# 容器的名字
image
:
hub.yifucenter.com:5500/qas-mvp/yifu-check-biz:1.0.0
# 容器镜像地址
imagePullPolicy
:
Always
# 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
# Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,
# 已经打好镜像存在docker容器中时,使用存在不检查级别,
# 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
ports
:
-
containerPort
:
5022
# 容器端口
env
:
# 启动环境配置信息 active and timeZone set
-
name
:
SPRING_PROFILES_ACTIVE
value
:
test
-
name
:
TZ
value
:
Asia/Shanghai
resources
:
#资源配置限制
limits
:
# 最大使用
memory
:
"
2048Mi"
#cpu: 300m # CPU,1核心 = 1000m
requests
:
# 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
#cpu: 100m
memory
:
"
500Mi"
#livenessProbe: # pod 内部健康检查的设置
# httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
# path: /healthCheck # URI地址
# port: 8080 # 端口
# scheme: HTTP # 协议
# # host: 127.0.0.1 # 主机地址
# initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始
# timeoutSeconds: 5 # 检测的超时时间
# periodSeconds: 30 # 检查间隔时间
# successThreshold: 1 # 成功门槛
# failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod
# readinessProbe: # Pod 准备服务健康检查设置
# httpGet:
# path: /healthCheck
# port: 8080
# scheme: HTTP
# initialDelaySeconds: 30
# timeoutSeconds: 5
# periodSeconds: 10
# successThreshold: 1
# failureThreshold: 5
#也可以用这种方法
#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
# command:
# - cat
# - /tmp/health
#也可以用这种方法
#tcpSocket: # 通过tcpSocket检查健康
# port: number
#ports:
# - name: http # 名称
# containerPort: 8080 # 容器开发对外的端口
# protocol: TCP # 协议
imagePullSecrets
:
# 镜像仓库拉取密钥
-
name
:
login
#affinity: # 亲和性调试
# nodeAffinity: # 节点亲和力
# requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
# nodeSelectorTerms: # 节点满足任何一个条件就可以
# - matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
# - key: beta.kubernetes.io/arch
# operator: In
# values:
# - amd64
\ No newline at end of file
k8s-bash-test/yifu-check-service.yaml
0 → 100644
View file @
d8b472f4
apiVersion
:
v1
# 指定api版本,此值必须在kubectl api-versions中
kind
:
Service
# 指定创建资源的角色/类型
metadata
:
# 资源的元数据/属性
labels
:
# 设定资源的标签
app
:
yifu-check
# 资源的名字,在同一个namespace中必须唯一
name
:
yifu-check
# 资源的名字,在同一个namespace中必须唯一
namespace
:
qas-mvp
# 部署在哪个namespace中
spec
:
# 资源规范字段
ports
:
-
port
:
5022
# service 端口
protocol
:
TCP
# 协议
targetPort
:
5022
# 容器暴露的端口
name
:
http-check
# 端口名称
-
port
:
3500
# service 端口
protocol
:
TCP
# 协议
targetPort
:
3500
# 容器暴露的端口
name
:
http-check-dapr
selector
:
# 选择器
app
:
yifu-check
# 资源名称
type
:
ClusterIP
# ClusterIP 类型
\ No newline at end of file
yifu-check/yifu-check-api/pom.xml
View file @
d8b472f4
...
...
@@ -42,5 +42,13 @@
<groupId>
com.pig4cloud.excel
</groupId>
<artifactId>
excel-spring-boot-starter
</artifactId>
</dependency>
</dependencies>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.code.gson
</groupId>
<artifactId>
gson
</artifactId>
</dependency>
</dependencies>
</project>
yifu-check/yifu-check-api/src/main/java/com/yifu/cloud/plus/v1/check/entity/TCheckApiNum.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
javax.validation.constraints.NotNull
;
/**
* 实名校验限定调用API的条数表
*
* @author hgw
* @date 2022-6-10 11:07:37
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"t_check_api_num"
)
@Schema
(
description
=
"实名校验限定调用API的条数表"
)
public
class
TCheckApiNum
extends
Model
<
TCheckApiNum
>
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 创建月
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@Schema
(
description
=
"主键"
)
private
String
id
;
/**
* 当月已调用API总条数,初始默认0条
*/
@NotNull
(
message
=
"当月已调用API总条数不能为空"
)
@Schema
(
description
=
"当月已调用API总条数"
)
private
Integer
apiNum
;
/**
* 当月允许调用API总条数,初始默认每月10000条
*/
@NotNull
(
message
=
"当月允许调用API总条数不能为空"
)
@Schema
(
description
=
"当月允许调用API总条数"
)
private
Integer
canApiNum
;
/**
* 备注
*/
@Schema
(
description
=
"备注"
)
private
String
remark
;
}
yifu-check/yifu-check-api/src/main/java/com/yifu/cloud/plus/v1/check/entity/TCheckIdCard.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDateTime
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-5-10 17:41:27
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"t_check_id_card"
)
@Schema
(
description
=
"身份证实名校验自留库"
)
public
class
TCheckIdCard
extends
Model
<
TCheckIdCard
>
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@Schema
(
description
=
"主键"
)
private
String
id
;
/**
* 姓名
*/
@NotBlank
(
message
=
"姓名不能为空"
)
@Length
(
max
=
20
,
message
=
"姓名不能超过20个字符"
)
@Schema
(
description
=
"姓名"
)
private
String
name
;
/**
* 身份证
*/
@Length
(
max
=
18
,
message
=
"身份证不能超过18个字符"
)
@Schema
(
description
=
"身份证"
)
private
String
idCard
;
/**
* 是否正确:1正确。0错误。
*/
@NotNull
(
message
=
"是否正确:1正确。0错误。不能为空"
)
@Schema
(
description
=
"是否正确:1正确。0错误。"
)
private
Integer
isTrue
;
/**
* 原因
*/
@Length
(
max
=
50
,
message
=
"原因不能超过50个字符"
)
@Schema
(
description
=
"原因"
)
private
String
reason
;
/**
* 类型0:初始导入数据;1调用api保存的数据
*/
@NotNull
(
message
=
"类型不能为空"
)
@Schema
(
description
=
"类型0:初始导入数据;1调用api保存的数据"
)
private
Integer
type
;
/**
* 创建人
*/
@Length
(
max
=
32
,
message
=
"创建人不能超过32个字符"
)
@Schema
(
description
=
"创建人"
)
private
String
createUser
;
/**
* 创建时间
*/
@Schema
(
description
=
"创建时间"
)
@NotNull
(
message
=
"创建时间不能为空"
)
private
LocalDateTime
createTime
;
}
yifu-check/yifu-check-api/src/main/java/com/yifu/cloud/plus/v1/check/entity/TCheckLock.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDateTime
;
/**
* 实名校验导入锁定表(锁定后不可导入,除非清理掉数据)
*
* @author hgw
* @date 2022-6-10 11:07:15
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@TableName
(
"t_check_lock"
)
@Schema
(
description
=
"实名校验导入锁定表(锁定后不可导入,除非清理掉数据)"
)
public
class
TCheckLock
extends
Model
<
TCheckLock
>
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 主键
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@Schema
(
description
=
"主键"
)
private
String
id
;
/**
* 创建人
*/
@NotBlank
(
message
=
"创建人不能为空"
)
@Length
(
max
=
32
,
message
=
"创建人不能超过32个字符"
)
@Schema
(
description
=
"创建人"
)
private
String
createUser
;
/**
* 创建人姓名
*/
@Length
(
max
=
50
,
message
=
"创建人姓名不能超过50个字符"
)
@Schema
(
description
=
"创建人姓名"
)
private
String
createUserName
;
/**
* 创建时间
*/
@Schema
(
description
=
"创建时间"
)
private
LocalDateTime
createTime
;
/**
* 校验月
*/
@Length
(
max
=
6
,
message
=
"校验月不能超过6个字符"
)
@Schema
(
description
=
"校验月"
)
private
String
createMonth
;
/**
* 导入总条数
*/
@NotNull
(
message
=
"导入总条数不能为空"
)
@Schema
(
description
=
"导入总条数"
)
private
Integer
importNum
;
/**
* 调用API总条数
*/
@NotNull
(
message
=
"调用API总条数不能为空"
)
@Schema
(
description
=
"调用API总条数"
)
private
Integer
apiNum
;
/**
* 删除标志:0未删除;1已删除(1代表已完成导入或删除,释放了锁)
*/
@NotNull
(
message
=
"删除标志:0未删除;1已删除(1代表已完成导入或删除,释放了锁)不能为空"
)
@Schema
(
description
=
"删除标志:0未删除;1已删除(1代表已完成导入或删除,释放了锁)"
)
private
Integer
deleteFlag
;
}
yifu-check/yifu-check-api/src/main/java/com/yifu/cloud/plus/v1/check/utils/CheckIdCard.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
utils
;
import
com.google.gson.JsonObject
;
import
com.google.gson.JsonParser
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckIdCard
;
import
org.springframework.beans.factory.annotation.Value
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author hgw2
* @description 测试身份证
* @date 2022/5/7
*/
public
class
CheckIdCard
{
@Value
(
"${canCheck}"
)
private
static
boolean
canCheck
;
private
static
final
String
APP_ID_ID_CARD
=
"oi0mucL4"
;
private
static
final
String
APP_KEY_ID_CARD
=
"s4lW5JRA"
;
private
static
final
String
API_URL_ID_CARD
=
"https://api.253.com/open/idcard/id-card-auth"
;
private
static
JsonParser
jsonParser
=
new
JsonParser
();
public
static
void
checkIdCard
(
TCheckIdCard
checkIdCard
)
{
if
(
canCheck
)
{
// 1.调用身份信息校验api
extracted
(
checkIdCard
);
}
else
{
checkIdCard
.
setIsTrue
(
0
);
checkIdCard
.
setReason
(
"nacos中checks.yaml的配置canCheck未开启!"
);
}
}
// 核心调用
private
static
void
extracted
(
TCheckIdCard
checkIdCard
)
{
final
JsonObject
jsonObject
=
CheckIdCard
.
invokeIdCard
(
checkIdCard
.
getName
(),
checkIdCard
.
getIdCard
());
// 2.处理返回结果
if
(
jsonObject
!=
null
)
{
//响应code码。200000:成功,其他失败
String
code
=
jsonObject
.
get
(
"code"
).
getAsString
();
if
(
"200000"
.
equals
(
code
)
&&
jsonObject
.
get
(
"data"
)
!=
null
)
{
// 调用身份信息校验成功
// 解析结果数据,进行业务处理
// 校验状态码 200000:成功,其他失败
String
resultStr
=
jsonObject
.
get
(
"data"
).
getAsJsonObject
().
get
(
"result"
).
getAsString
();
if
(
"01"
.
equals
(
resultStr
))
{
checkIdCard
.
setIsTrue
(
1
);
checkIdCard
.
setReason
(
"正确"
);
}
else
{
checkIdCard
.
setIsTrue
(
0
);
String
remark
=
jsonObject
.
get
(
"data"
).
getAsJsonObject
().
get
(
"remark"
).
getAsString
();
checkIdCard
.
setReason
(
"调用身份信息校验失败,resultStr:"
+
resultStr
+
",msg:"
+
remark
);
}
}
else
{
// 记录错误日志,正式项目中请换成log打印
checkIdCard
.
setIsTrue
(
0
);
checkIdCard
.
setReason
(
"调用身份信息校验失败,code:"
+
code
+
",msg:"
+
jsonObject
.
get
(
"message"
).
getAsString
());
}
}
else
{
checkIdCard
.
setIsTrue
(
0
);
checkIdCard
.
setReason
(
"接口无返回数据"
);
}
}
private
static
JsonObject
invokeIdCard
(
String
name
,
String
idNum
)
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"appId"
,
APP_ID_ID_CARD
);
params
.
put
(
"appKey"
,
APP_KEY_ID_CARD
);
params
.
put
(
"name"
,
name
);
params
.
put
(
"idNum"
,
idNum
);
String
result
=
HttpUtils
.
post
(
API_URL_ID_CARD
,
params
);
// 解析json,并返回结果
return
jsonParser
.
parse
(
result
).
getAsJsonObject
();
}
}
yifu-check/yifu-check-api/src/main/java/com/yifu/cloud/plus/v1/check/utils/HttpUtils.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
utils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpStatus
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.RequestBuilder
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
java.nio.charset.Charset
;
import
java.util.Map
;
/**
* @author hgw2
* @description 发送
* @date 2022/5/7
*/
public
class
HttpUtils
{
private
static
final
int
REQUEST_TIMEOUT
=
3
*
1000
;
// 设置请求超时10秒钟
private
static
final
int
CONNECT_TIMEOUT
=
5
*
1000
;
// 连接超时时间
private
static
final
int
SO_TIMEOUT
=
10
*
1000
;
// 数据传输超时
private
static
final
String
ENCODING
=
"UTF-8"
;
// 务必单例
private
static
CloseableHttpClient
client
;
static
{
RequestConfig
requestConfig
=
RequestConfig
.
custom
()
.
setConnectTimeout
(
CONNECT_TIMEOUT
)
.
setConnectionRequestTimeout
(
REQUEST_TIMEOUT
)
.
setSocketTimeout
(
SO_TIMEOUT
)
.
build
();
client
=
HttpClients
.
custom
().
setDefaultRequestConfig
(
requestConfig
).
setMaxConnTotal
(
50
).
build
();
}
public
static
String
get
(
String
url
,
Map
<
String
,
String
>
paramsMap
)
{
return
send
(
RequestBuilder
.
get
(
url
),
paramsMap
);
}
public
static
String
post
(
String
url
,
Map
<
String
,
String
>
paramsMap
)
{
return
send
(
RequestBuilder
.
post
(
url
),
paramsMap
);
}
public
static
String
send
(
RequestBuilder
requestBuilder
,
Map
<
String
,
String
>
paramsMap
)
{
requestBuilder
.
setCharset
(
Charset
.
forName
(
ENCODING
));
String
responseText
=
""
;
if
(
paramsMap
!=
null
)
{
for
(
Map
.
Entry
<
String
,
String
>
param
:
paramsMap
.
entrySet
())
{
requestBuilder
.
addParameter
(
param
.
getKey
(),
param
.
getValue
());
}
CloseableHttpResponse
response
=
null
;
try
{
response
=
client
.
execute
(
requestBuilder
.
build
());
if
(
response
.
getStatusLine
().
getStatusCode
()
==
HttpStatus
.
SC_OK
)
{
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
{
responseText
=
EntityUtils
.
toString
(
entity
,
ENCODING
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
//正式项目中请改为log打印
}
finally
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
//正式项目中请改为log打印
}
}
}
return
responseText
;
}
}
yifu-check/yifu-check-biz/Dockerfile
View file @
d8b472f4
FROM
moxm/java:1.8-full
RUN
mkdir
-p
/
consumer
RUN
mkdir
-p
/
yifu-check-biz
WORKDIR
consumer
WORKDIR
yifu-check-biz
ARG
JAR_FILE=target/
consumer
-biz.jar
ARG
JAR_FILE=target/
yifu-check
-biz.jar
COPY
${JAR_FILE} app.jar
...
...
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/c
onsumer/Consumer
Application.java
→
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/c
heck/Check
Application.java
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
c
onsumer
;
package
com
.
yifu
.
cloud
.
plus
.
v1
.
c
heck
;
import
com.yifu.cloud.plus.v1.yifu.common.security.annotation.EnableYifuResourceServer
;
import
org.springframework.boot.SpringApplication
;
...
...
@@ -11,10 +11,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*/
@EnableYifuResourceServer
@SpringBootApplication
public
class
C
onsumer
Application
{
public
class
C
heck
Application
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
C
onsumer
Application
.
class
,
args
);
SpringApplication
.
run
(
C
heck
Application
.
class
,
args
);
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/controller/TCheckIdCardController.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
controller
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckIdCard
;
import
com.yifu.cloud.plus.v1.check.service.TCheckIdCardService
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog
;
import
com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
lombok.AllArgsConstructor
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@RestController
@AllArgsConstructor
@RequestMapping
(
"/tcheckidcard"
)
@Tag
(
name
=
"身份证实名校验自留库"
)
public
class
TCheckIdCardController
{
private
final
TCheckIdCardService
tCheckIdCardService
;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tCheckIdCard 身份证实名校验自留库
* @return
*/
@Operation
(
description
=
"简单分页查询"
)
@GetMapping
(
"/page"
)
public
R
<
IPage
<
TCheckIdCard
>>
getTCheckIdCardPage
(
Page
<
TCheckIdCard
>
page
,
TCheckIdCard
tCheckIdCard
)
{
return
new
R
<>(
tCheckIdCardService
.
getTCheckIdCardPage
(
page
,
tCheckIdCard
));
}
@Operation
(
description
=
"获取所有list"
)
@GetMapping
(
"/getAllList"
)
public
R
<
List
<
TCheckIdCard
>>
getAllList
(
TCheckIdCard
tCheckIdCard
)
{
return
new
R
<>(
tCheckIdCardService
.
getAllList
(
tCheckIdCard
));
}
/**
* @param
* @Description: 获取身份证库
* @Author: hgw
* @Date: 2022/5/11 17:44
* @return: com.yifu.cloud.v1.common.core.util.R<java.util.Map < java.lang.String, com.yifu.cloud.v1.checks.api.entity.TCheckIdCard>>
**/
@Inner
@Operation
(
description
=
"获取身份证库"
)
@PostMapping
(
"/inner/getAllChecksInfo"
)
public
R
<
Map
<
String
,
TCheckIdCard
>>
getAllChecksInfo
()
{
return
new
R
<>(
new
HashMap
<>());
}
/**
* 通过id查询单条记录
*
* @param id
* @return R
*/
@Operation
(
description
=
"id查询"
)
@GetMapping
(
"/{id}"
)
public
R
<
TCheckIdCard
>
getById
(
@PathVariable
(
"id"
)
String
id
)
{
return
new
R
<>(
tCheckIdCardService
.
getById
(
id
));
}
/**
* 新增记录
*
* @param tCheckIdCard
* @return R
*/
@Operation
(
description
=
"新增(checks:tcheckidcard_add)"
)
@PostMapping
@PreAuthorize
(
"@pms.hasPermission('checks:tcheckidcard_add')"
)
public
R
<
Boolean
>
save
(
@Valid
@RequestBody
TCheckIdCard
tCheckIdCard
)
{
return
new
R
<>(
tCheckIdCardService
.
save
(
tCheckIdCard
));
}
/**
* 修改记录
*
* @param tCheckIdCard
* @return R
*/
@Operation
(
description
=
"修改(checks:tcheckidcard_edit)"
)
@SysLog
(
"修改身份证实名校验自留库"
)
@PutMapping
@PreAuthorize
(
"@pms.hasPermission('checks:tcheckidcard_edit')"
)
public
R
<
Boolean
>
update
(
@RequestBody
TCheckIdCard
tCheckIdCard
)
{
return
new
R
(
tCheckIdCardService
.
updateById
(
tCheckIdCard
));
}
/**
* 通过id删除一条记录
*
* @param id
* @return R
*/
@Operation
(
description
=
"删除(checks:tcheckidcard_del)"
)
@SysLog
(
"删除身份证实名校验自留库"
)
@DeleteMapping
(
"/{id}"
)
@PreAuthorize
(
"@pms.hasPermission('checks:tcheckidcard_del')"
)
public
R
<
Boolean
>
removeById
(
@PathVariable
String
id
)
{
return
new
R
<>(
tCheckIdCardService
.
removeById
(
id
));
}
/**
* @param checkList
* @Description: 校验姓名身份证
* @Author: hgw
* @Date: 2022-5-12 15:18:53
* @return: com.yifu.cloud.v1.common.core.util.R
**/
@Operation
(
description
=
"校验姓名身份证"
)
@SysLog
(
"校验姓名身份证"
)
@PostMapping
(
"/checkIdCard"
)
public
R
<
List
<
TCheckIdCard
>>
checkIdCard
(
@RequestBody
List
<
TCheckIdCard
>
checkList
)
{
return
tCheckIdCardService
.
checkIdCard
(
checkList
);
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/mapper/TCheckApiNumMapper.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckApiNum
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@Mapper
public
interface
TCheckApiNumMapper
extends
BaseMapper
<
TCheckApiNum
>
{
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/mapper/TCheckIdCardMapper.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckIdCard
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@Mapper
public
interface
TCheckIdCardMapper
extends
BaseMapper
<
TCheckIdCard
>
{
/**
* 身份证实名校验自留库简单分页查询
*
* @param tCheckIdCard 身份证实名校验自留库
* @return
*/
IPage
<
TCheckIdCard
>
getTCheckIdCardPage
(
Page
<
TCheckIdCard
>
page
,
@Param
(
"tCheckIdCard"
)
TCheckIdCard
tCheckIdCard
);
/**
* @param
* @Description: 所有数据
* @Author: hgw
* @Date: 2022/5/12 15:28
* @return: java.util.List<com.yifu.cloud.v1.checks.api.entity.TCheckIdCard>
**/
List
<
TCheckIdCard
>
getAllList
(
@Param
(
"tCheckIdCard"
)
TCheckIdCard
tCheckIdCard
);
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/mapper/TCheckLockMapper.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckLock
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@Mapper
public
interface
TCheckLockMapper
extends
BaseMapper
<
TCheckLock
>
{
/**
* @Description: 所有数据
* @Author: hgw
* @Date: 2022-6-10 11:15:00
* @return: java.util.List<com.yifu.cloud.v1.checks.api.entity.TCheckLock>
**/
List
<
TCheckLock
>
getAllList
();
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/TCheckApiNumService.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckApiNum
;
/**
* 校验锁
* @author hgw
* @date 2022-01-13 15:08:05
*/
public
interface
TCheckApiNumService
extends
IService
<
TCheckApiNum
>
{
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/TCheckIdCardService.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckIdCard
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
java.util.List
;
import
java.util.Map
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
public
interface
TCheckIdCardService
extends
IService
<
TCheckIdCard
>
{
/**
* 身份证实名校验自留库简单分页查询
*
* @param tCheckIdCard 身份证实名校验自留库
* @return
*/
IPage
<
TCheckIdCard
>
getTCheckIdCardPage
(
Page
<
TCheckIdCard
>
page
,
TCheckIdCard
tCheckIdCard
);
/**
* @param
* @Description: 获取所有list
* @Author: hgw
* @Date: 2022/5/12 15:29
* @return: java.util.List<com.yifu.cloud.v1.checks.api.entity.TCheckIdCard>
**/
List
<
TCheckIdCard
>
getAllList
(
TCheckIdCard
tCheckIdCard
);
Map
<
String
,
TCheckIdCard
>
getAllMap
(
TCheckIdCard
tCheckIdCard
);
/**
* @param checkList
* @Description: 校验
* @Author: hgw
* @Date: 2022/5/12 15:20
* @return: com.yifu.cloud.v1.common.core.util.R<java.lang.String>
**/
R
<
List
<
TCheckIdCard
>>
checkIdCard
(
List
<
TCheckIdCard
>
checkList
);
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/TCheckLockService.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckLock
;
import
java.util.List
;
/**
* 校验锁
*
* @author hgw
* @date 2022-01-13 15:08:05
*/
public
interface
TCheckLockService
extends
IService
<
TCheckLock
>
{
/**
* 查询全部
*/
List
<
TCheckLock
>
getAllList
();
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/impl/TCheckApiNumServiceImpl.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckApiNum
;
import
com.yifu.cloud.plus.v1.check.mapper.TCheckApiNumMapper
;
import
com.yifu.cloud.plus.v1.check.service.TCheckApiNumService
;
import
org.springframework.stereotype.Service
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@Service
public
class
TCheckApiNumServiceImpl
extends
ServiceImpl
<
TCheckApiNumMapper
,
TCheckApiNum
>
implements
TCheckApiNumService
{
@Override
public
boolean
save
(
TCheckApiNum
entity
)
{
return
super
.
save
(
entity
);
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/impl/TCheckIdCardServiceImpl.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckApiNum
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckIdCard
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckLock
;
import
com.yifu.cloud.plus.v1.check.mapper.TCheckIdCardMapper
;
import
com.yifu.cloud.plus.v1.check.service.TCheckApiNumService
;
import
com.yifu.cloud.plus.v1.check.service.TCheckIdCardService
;
import
com.yifu.cloud.plus.v1.check.service.TCheckLockService
;
import
com.yifu.cloud.plus.v1.check.utils.CheckIdCard
;
import
com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.Common
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser
;
import
com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils
;
import
lombok.AllArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@AllArgsConstructor
@Service
public
class
TCheckIdCardServiceImpl
extends
ServiceImpl
<
TCheckIdCardMapper
,
TCheckIdCard
>
implements
TCheckIdCardService
{
private
final
TCheckLockService
tCheckLockService
;
private
final
TCheckApiNumService
tCheckApiNumService
;
/**
* 身份证实名校验自留库简单分页查询
*
* @param tCheckIdCard 身份证实名校验自留库
* @return
*/
@Override
public
IPage
<
TCheckIdCard
>
getTCheckIdCardPage
(
Page
<
TCheckIdCard
>
page
,
TCheckIdCard
tCheckIdCard
)
{
return
baseMapper
.
getTCheckIdCardPage
(
page
,
tCheckIdCard
);
}
@Override
public
List
<
TCheckIdCard
>
getAllList
(
TCheckIdCard
tCheckIdCard
)
{
return
baseMapper
.
getAllList
(
tCheckIdCard
);
}
@Override
public
Map
<
String
,
TCheckIdCard
>
getAllMap
(
TCheckIdCard
tCheckIdCard
)
{
List
<
TCheckIdCard
>
list
=
baseMapper
.
getAllList
(
tCheckIdCard
);
Map
<
String
,
TCheckIdCard
>
returnMap
=
new
HashMap
<>();
if
(
list
!=
null
&&
!
list
.
isEmpty
())
{
for
(
TCheckIdCard
c
:
list
)
{
returnMap
.
put
(
c
.
getIdCard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
c
.
getName
(),
c
);
}
}
return
returnMap
;
}
/**
* @param checkList
* @Description: 校验
* @Author: hgw
* @Date: 2022/5/12 15:47
* @return: com.yifu.cloud.v1.common.core.util.R<java.util.List < com.yifu.cloud.v1.checks.api.entity.TCheckIdCard>>
**/
@Override
public
synchronized
R
<
List
<
TCheckIdCard
>>
checkIdCard
(
List
<
TCheckIdCard
>
checkList
)
{
YifuUser
user
=
SecurityUtils
.
getUser
();
if
(
user
==
null
||
Common
.
isEmpty
(
user
.
getId
()))
{
return
R
.
failed
(
"请登录!"
);
}
List
<
TCheckLock
>
lockList
=
tCheckLockService
.
getAllList
();
if
(
lockList
!=
null
&&
!
lockList
.
isEmpty
())
{
return
R
.
failed
(
"当前有用户在导入中,请稍后!或联系管理员处理表TCheckLock数据和重启校验服务"
);
}
String
nowMonth
=
DateUtil
.
addMonth
(
0
);
TCheckApiNum
nowMonthNum
=
tCheckApiNumService
.
getById
(
nowMonth
);
if
(
nowMonthNum
==
null
)
{
TCheckApiNum
lastMonth
=
tCheckApiNumService
.
getById
(
DateUtil
.
addMonth
(-
1
));
int
canApiNum
=
10000
;
if
(
lastMonth
!=
null
&&
lastMonth
.
getCanApiNum
()
!=
null
)
{
canApiNum
=
lastMonth
.
getCanApiNum
();
}
nowMonthNum
=
new
TCheckApiNum
();
nowMonthNum
.
setId
(
nowMonth
);
nowMonthNum
.
setCanApiNum
(
canApiNum
);
nowMonthNum
.
setApiNum
(
0
);
tCheckApiNumService
.
save
(
nowMonthNum
);
}
else
if
(
nowMonthNum
.
getApiNum
()
>=
nowMonthNum
.
getCanApiNum
())
{
return
R
.
failed
(
"当月总条数:"
+
nowMonthNum
.
getCanApiNum
()
+
"已到达上限!"
);
}
if
(
checkList
!=
null
&&
!
checkList
.
isEmpty
())
{
TCheckLock
lock
=
new
TCheckLock
();
lock
.
setImportNum
(
checkList
.
size
());
lock
.
setApiNum
(
0
);
lock
.
setCreateMonth
(
nowMonth
);
lock
.
setCreateTime
(
LocalDateTime
.
now
());
lock
.
setCreateUser
(
String
.
valueOf
(
user
.
getId
()));
lock
.
setDeleteFlag
(
0
);
lock
.
setCreateUserName
(
user
.
getNickname
());
tCheckLockService
.
save
(
lock
);
int
nowApiNum
=
0
;
int
canApiNum
=
nowMonthNum
.
getCanApiNum
();
Map
<
String
,
TCheckIdCard
>
returnMap
=
this
.
getAllMap
(
null
);
TCheckIdCard
nowIdCard
;
TCheckIdCard
lastCard
;
Map
<
String
,
TCheckIdCard
>
idCardMap
=
new
HashMap
<>();
String
userId
=
String
.
valueOf
(
user
.
getId
());
TCheckLock
lockUpdate
;
try
{
for
(
TCheckIdCard
c
:
checkList
)
{
if
(
Common
.
isNotNull
(
c
.
getIdCard
())
&&
Common
.
isNotNull
(
c
.
getName
()))
{
lastCard
=
idCardMap
.
get
(
c
.
getIdCard
());
if
(
lastCard
!=
null
)
{
c
.
setIsTrue
(
lastCard
.
getIsTrue
());
c
.
setReason
(
lastCard
.
getReason
());
}
else
{
// 校验姓名身份证规则
if
(!
regIdCard
(
c
.
getIdCard
()))
{
c
.
setIsTrue
(
0
);
c
.
setReason
(
"身份证格式有误"
);
}
else
if
(
regEmpName
(
c
.
getName
()))
{
c
.
setIsTrue
(
0
);
c
.
setReason
(
"姓名含数字或空格,无法校验"
);
}
else
{
nowIdCard
=
returnMap
.
get
(
c
.
getIdCard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
c
.
getName
());
if
(
nowIdCard
!=
null
)
{
c
.
setIsTrue
(
nowIdCard
.
getIsTrue
());
c
.
setReason
(
nowIdCard
.
getReason
());
}
else
{
// 调用API校验
if
(
nowApiNum
<
canApiNum
)
{
nowApiNum
++;
CheckIdCard
.
checkIdCard
(
c
);
c
.
setCreateUser
(
userId
);
c
.
setCreateTime
(
LocalDateTime
.
now
());
c
.
setType
(
CommonConstants
.
ONE_INT
);
returnMap
.
put
(
c
.
getIdCard
()
+
CommonConstants
.
DOWN_LINE_STRING
+
c
.
getName
(),
c
);
this
.
save
(
c
);
nowMonthNum
.
setApiNum
(
nowMonthNum
.
getApiNum
()
+
1
);
tCheckApiNumService
.
updateById
(
nowMonthNum
);
}
else
{
c
.
setIsTrue
(
0
);
c
.
setReason
(
"调用花钱的Api的条数已达上限:"
+
nowMonthNum
.
getCanApiNum
()
+
",请联系管理员处理!"
);
}
}
}
// 将同身份证的结果存储下来备用,防止撞库
idCardMap
.
put
(
c
.
getIdCard
(),
c
);
}
}
else
{
c
.
setIsTrue
(
0
);
c
.
setReason
(
"姓名身份证不可为空"
);
}
}
}
catch
(
Exception
e
)
{
lockUpdate
=
new
TCheckLock
();
lockUpdate
.
setId
(
lock
.
getId
());
lockUpdate
.
setDeleteFlag
(
CommonConstants
.
ONE_INT
);
lockUpdate
.
setApiNum
(
nowApiNum
);
tCheckLockService
.
updateById
(
lockUpdate
);
throw
new
RuntimeException
(
e
.
getMessage
()
==
null
?
"校验身份证导入失败!"
:
"校验身份证导入失败:"
+
e
.
getMessage
());
}
finally
{
lockUpdate
=
new
TCheckLock
();
lockUpdate
.
setId
(
lock
.
getId
());
lockUpdate
.
setDeleteFlag
(
CommonConstants
.
ONE_INT
);
lockUpdate
.
setDeleteFlag
(
CommonConstants
.
ONE_INT
);
lockUpdate
.
setApiNum
(
nowApiNum
);
tCheckLockService
.
updateById
(
lockUpdate
);
}
return
new
R
<>(
checkList
);
}
return
R
.
failed
(
"数据为空!"
);
}
/**
* @param content
* @Description: 判断身份证格式:18位数字,17位数字+X,15位数字,14位数字+X
* 格式正确返回true
* @Author: hgw
* @Date: 2022/5/13 11:53
* @return: boolean
**/
private
static
boolean
regIdCard
(
String
content
)
{
boolean
flag
=
false
;
Pattern
p
=
Pattern
.
compile
(
"\\d{18}|\\d{17}X|\\d{15}|\\d{14}X"
);
Matcher
m
=
p
.
matcher
(
content
);
if
(
m
.
matches
())
{
flag
=
true
;
}
return
flag
;
}
/**
* @param content
* @Description: 含数字,返回true
* @Author: hgw
* @Date: 2022/5/13 11:54
* @return: boolean
**/
private
static
boolean
regEmpName
(
String
content
)
{
boolean
flag
=
false
;
Pattern
p
=
Pattern
.
compile
(
".*\\d+.*|.*\\s+.*"
);
Matcher
m
=
p
.
matcher
(
content
);
if
(
m
.
matches
())
{
flag
=
true
;
}
return
flag
;
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/check/service/impl/TCheckLockServiceImpl.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
check
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.check.entity.TCheckLock
;
import
com.yifu.cloud.plus.v1.check.mapper.TCheckLockMapper
;
import
com.yifu.cloud.plus.v1.check.service.TCheckLockService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 身份证实名校验自留库
*
* @author hgw
* @date 2022-05-11 16:12:18
*/
@Service
public
class
TCheckLockServiceImpl
extends
ServiceImpl
<
TCheckLockMapper
,
TCheckLock
>
implements
TCheckLockService
{
@Override
public
List
<
TCheckLock
>
getAllList
()
{
return
baseMapper
.
getAllList
();
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/consumer/controller/ConsumerController.java
deleted
100644 → 0
View file @
fb79858f
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
consumer
.
controller
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.R
;
import
com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog
;
import
com.yifu.cloud.plus.v1.consumer.entity.Consumer
;
import
com.yifu.cloud.plus.v1.consumer.service.ConsumerService
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
io.swagger.v3.oas.annotations.Operation
;
import
io.swagger.v3.oas.annotations.security.SecurityRequirement
;
import
io.swagger.v3.oas.annotations.tags.Tag
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.web.bind.annotation.*
;
/**
* consumer表
*
* @author fxj
* @date 2022-05-13 23:28:12
*/
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/consumer"
)
@Tag
(
name
=
"consumer表管理"
)
@SecurityRequirement
(
name
=
HttpHeaders
.
AUTHORIZATION
)
public
class
ConsumerController
{
private
final
ConsumerService
consumerService
;
/**
* 分页查询
* @param page 分页对象
* @param consumer consumer表
* @return
*/
@Operation
(
summary
=
"分页查询"
,
description
=
"分页查询"
)
@GetMapping
(
"/page"
)
@PreAuthorize
(
"@pms.hasPermission('consumer_consumer_get')"
)
public
R
getConsumerPage
(
Page
page
,
Consumer
consumer
)
{
return
R
.
ok
(
consumerService
.
page
(
page
,
Wrappers
.
query
(
consumer
)));
}
/**
* 通过id查询consumer表
* @param id id
* @return R
*/
@Operation
(
summary
=
"通过id查询"
,
description
=
"通过id查询"
)
@GetMapping
(
"/{id}"
)
@PreAuthorize
(
"@pms.hasPermission('consumer_consumer_get')"
)
public
R
getById
(
@PathVariable
(
"id"
)
Long
id
)
{
return
R
.
ok
(
consumerService
.
getById
(
id
));
}
/**
* 新增consumer表
* @param consumer consumer表
* @return R
*/
@Operation
(
summary
=
"新增consumer表"
,
description
=
"新增consumer表"
)
@SysLog
(
"新增consumer表"
)
@PostMapping
@PreAuthorize
(
"@pms.hasPermission('consumer_consumer_add')"
)
public
R
save
(
@RequestBody
Consumer
consumer
)
{
return
R
.
ok
(
consumerService
.
saveTestSeata
(
consumer
));
}
/**
* 修改consumer表
* @param consumer consumer表
* @return R
*/
@Operation
(
summary
=
"修改consumer表"
,
description
=
"修改consumer表"
)
@SysLog
(
"修改consumer表"
)
@PutMapping
@PreAuthorize
(
"@pms.hasPermission('consumer_consumer_edit')"
)
public
R
updateById
(
@RequestBody
Consumer
consumer
)
{
return
R
.
ok
(
consumerService
.
updateById
(
consumer
));
}
/**
* 通过id删除consumer表
* @param id id
* @return R
*/
@Operation
(
summary
=
"通过id删除consumer表"
,
description
=
"通过id删除consumer表"
)
@SysLog
(
"通过id删除consumer表"
)
@DeleteMapping
(
"/{id}"
)
@PreAuthorize
(
"@pms.hasPermission('consumer_consumer_del')"
)
public
R
removeById
(
@PathVariable
Long
id
)
{
return
R
.
ok
(
consumerService
.
removeById
(
id
));
}
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/consumer/entity/Consumer.java
deleted
100644 → 0
View file @
fb79858f
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
consumer
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity
;
import
io.swagger.v3.oas.annotations.media.Schema
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* consumer表
*
* @author fxj
* @date 2022-05-13 23:28:12
*/
@Data
@TableName
(
"consumer"
)
@EqualsAndHashCode
(
callSuper
=
true
)
@Schema
(
description
=
"consumer表"
)
public
class
Consumer
extends
BaseEntity
{
/**
* 主键
*/
@TableId
(
type
=
IdType
.
ASSIGN_ID
)
@Schema
(
description
=
"主键"
)
private
Long
id
;
/**
* 用户名
*/
@Schema
(
description
=
"用户名"
)
private
String
username
;
/**
* 昵称
*/
@Schema
(
description
=
"昵称"
)
private
String
nicename
;
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/consumer/mapper/ConsumerMapper.java
deleted
100644 → 0
View file @
fb79858f
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
consumer
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yifu.cloud.plus.v1.consumer.entity.Consumer
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* consumer表
*
* @author fxj
* @date 2022-05-13 23:28:12
*/
@Mapper
public
interface
ConsumerMapper
extends
BaseMapper
<
Consumer
>
{
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/consumer/service/ConsumerService.java
deleted
100644 → 0
View file @
fb79858f
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
consumer
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yifu.cloud.plus.v1.consumer.entity.Consumer
;
/**
* consumer表
*
* @author fxj
* @date 2022-05-13 23:28:12
*/
public
interface
ConsumerService
extends
IService
<
Consumer
>
{
Boolean
saveTestSeata
(
Consumer
consumer
);
}
yifu-check/yifu-check-biz/src/main/java/com/yifu/cloud/plus/v1/consumer/service/impl/ConsumerServiceImpl.java
deleted
100644 → 0
View file @
fb79858f
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
consumer
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yifu.cloud.plus.v1.consumer.entity.Consumer
;
import
com.yifu.cloud.plus.v1.consumer.mapper.ConsumerMapper
;
import
com.yifu.cloud.plus.v1.consumer.service.ConsumerService
;
import
com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprProviderProperties
;
import
io.seata.spring.annotation.GlobalTransactional
;
import
lombok.RequiredArgsConstructor
;
import
lombok.SneakyThrows
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* consumer表
*
* @author fxj
* @date 2022-05-13 23:28:12
*/
@EnableConfigurationProperties
(
DaprProviderProperties
.
class
)
@RequiredArgsConstructor
@Service
public
class
ConsumerServiceImpl
extends
ServiceImpl
<
ConsumerMapper
,
Consumer
>
implements
ConsumerService
{
private
final
DaprProviderProperties
daprProperties
;
@SneakyThrows
@GlobalTransactional
// 分布式seata事务
@Transactional
@Override
public
Boolean
saveTestSeata
(
Consumer
consumer
)
{
/*Provider provider = new Provider();
provider.setNicename(consumer.getNicename());
provider.setUsername(consumer.getUsername());
provider.setCreateBy(consumer.getCreateBy());
provider.setCreateTime(consumer.getCreateTime());
provider.setUpdateBy(consumer.getUpdateBy());
provider.setUpdateTime(consumer.getUpdateTime());
R result = HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(), "/provider", provider, Provider.class,null);
baseMapper.insert(consumer);*/
return
true
;
}
}
yifu-check/yifu-check-biz/src/main/resources/application.yml
View file @
d8b472f4
...
...
@@ -23,6 +23,12 @@ security:
resource
:
loadBalanced
:
true
token-info-uri
:
http://yifu-auth/oauth/check_token
# 直接放行URL
ignore
:
urls
:
-
/v3/api-docs
-
/actuator/**
-
/swagger-ui/**
# mybaits-plus配置
mybatis-plus
:
...
...
@@ -36,11 +42,7 @@ mybatis-plus:
logic-not-delete-value
:
0
configuration
:
map-underscore-to-camel-case
:
true
# 直接放行URL
ignore
:
urls
:
-
/v2/api-docs
-
/actuator/**
spring
:
application
:
name
:
@
artifactId@
\ No newline at end of file
yifu-check/yifu-check-biz/src/main/resources/mapper/ConsumerMapper.xml
deleted
100644 → 0
View file @
fb79858f
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yifu.cloud.plus.v1.consumer.mapper.ConsumerMapper"
>
<resultMap
id=
"consumerMap"
type=
"com.yifu.cloud.plus.v1.consumer.entity.Consumer"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"username"
column=
"username"
/>
<result
property=
"nicename"
column=
"nicename"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
</resultMap>
</mapper>
yifu-check/yifu-check-biz/src/main/resources/mapper/TCheckApiNumMapper.xml
0 → 100644
View file @
d8b472f4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yifu.cloud.v1.checks.mapper.TCheckApiNumMapper"
>
</mapper>
\ No newline at end of file
yifu-check/yifu-check-biz/src/main/resources/mapper/TCheckIdCardMapper.xml
0 → 100644
View file @
d8b472f4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yifu.cloud.plus.v1.check.mapper.TCheckIdCardMapper"
>
<resultMap
id=
"tCheckIdCardMap"
type=
"com.yifu.cloud.plus.v1.check.entity.TCheckIdCard"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"idCard"
column=
"id_card"
/>
<result
property=
"isTrue"
column=
"is_true"
/>
<result
property=
"reason"
column=
"reason"
/>
<result
property=
"type"
column=
"type"
/>
<result
property=
"createUser"
column=
"CREATE_USER"
/>
<result
property=
"createTime"
column=
"CREATE_TIME"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
a.id,
a.name,
a.id_card,
a.is_true,
a.reason,
a.type,
a.CREATE_USER,
a.CREATE_TIME
</sql>
<sql
id=
"tCheckIdCard_where"
>
<if
test=
"tCheckIdCard != null"
>
<if
test=
"tCheckIdCard.id != null and tCheckIdCard.id.trim() != ''"
>
AND a.id = #{tCheckIdCard.id}
</if>
<if
test=
"tCheckIdCard.name != null and tCheckIdCard.name.trim() != ''"
>
AND a.name = #{tCheckIdCard.name}
</if>
<if
test=
"tCheckIdCard.idCard != null and tCheckIdCard.idCard.trim() != ''"
>
AND a.id_card = #{tCheckIdCard.idCard}
</if>
<if
test=
"tCheckIdCard.isTrue != null"
>
AND a.is_true = #{tCheckIdCard.isTrue}
</if>
</if>
</sql>
<!--tCheckIdCard简单分页查询-->
<select
id=
"getTCheckIdCardPage"
resultMap=
"tCheckIdCardMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM t_check_id_card a
<where>
1=1
<include
refid=
"tCheckIdCard_where"
/>
</where>
</select>
<!--获取所有数据-->
<select
id=
"getAllList"
resultMap=
"tCheckIdCardMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM t_check_id_card a
<where>
1=1
<include
refid=
"tCheckIdCard_where"
/>
</where>
order by a.CREATE_TIME desc
</select>
</mapper>
yifu-check/yifu-check-biz/src/main/resources/mapper/TCheckLockMapper.xml
0 → 100644
View file @
d8b472f4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yifu.cloud.plus.v1.check.mapper.TCheckLockMapper"
>
<resultMap
id=
"tCheckIdCardMap"
type=
"com.yifu.cloud.plus.v1.check.entity.TCheckLock"
>
<id
property=
"id"
column=
"id"
/>
<result
property=
"createUser"
column=
"CREATE_USER"
/>
<result
property=
"createUserName"
column=
"CREATE_USER_NAME"
/>
<result
property=
"createTime"
column=
"CREATE_TIME"
/>
<result
property=
"createMonth"
column=
"CREATE_MONTH"
/>
<result
property=
"importNum"
column=
"IMPORT_NUM"
/>
<result
property=
"apiNum"
column=
"API_NUM"
/>
<result
property=
"deleteFlag"
column=
"DELETE_FLAG"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
ID,
CREATE_USER,
CREATE_USER_NAME,
CREATE_TIME,
CREATE_MONTH,
IMPORT_NUM,
API_NUM,
DELETE_FLAG
</sql>
<!--获取所有数据-->
<select
id=
"getAllList"
resultMap=
"tCheckIdCardMap"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM t_check_lock a
where a.DELETE_FLAG = 0
</select>
</mapper>
yifu-common/yifu-common-core/pom.xml
View file @
d8b472f4
...
...
@@ -66,6 +66,12 @@
<groupId>
org.springframework.security
</groupId>
<artifactId>
spring-security-core
</artifactId>
</dependency>
<dependency>
<groupId>
commons-lang
</groupId>
<artifactId>
commons-lang
</artifactId>
<version>
2.6
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
</project>
yifu-common/yifu-common-core/src/main/java/com/yifu.cloud.plus.v1/yifu/common/core/constant/CommonConstants.java
View file @
d8b472f4
...
...
@@ -127,8 +127,16 @@ public interface CommonConstants {
* 下划线
* hgw 2022-6-9 17:36:35
*/
String
DOWN_LINE
=
"_"
;
//空字符串
String
DOWN_LINE_STRING
=
"_"
;
/**
* 空字符串
* hgw 2022-6-9 17:36:35
*/
String
EMPTY_STRING
=
""
;
/**
* 数字int 1
* @author fxj
*/
int
ONE_INT
=
1
;
}
yifu-common/yifu-common-core/src/main/java/com/yifu.cloud.plus.v1/yifu/common/core/util/Common.java
View file @
d8b472f4
...
...
@@ -2,6 +2,11 @@ package com.yifu.cloud.plus.v1.yifu.common.core.util;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
static
java
.
util
.
regex
.
Pattern
.
compile
;
/**
* @author: FANG
...
...
@@ -41,4 +46,12 @@ public class Common {
}
return
false
;
}
// 金额验证
public
static
boolean
isNumber
(
String
str
)
{
// 判断小数点后2位的数字的正则表达式
Pattern
pattern
=
compile
(
"^((-?[1-9]{1}\\d*)|(-?[0]{1}))(\\.(\\d){0,2})?$"
);
Matcher
match
=
pattern
.
matcher
(
str
);
return
match
.
matches
()
!=
false
;
}
}
yifu-common/yifu-common-core/src/main/java/com/yifu.cloud.plus.v1/yifu/common/core/util/DateUtil.java
0 → 100644
View file @
d8b472f4
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
common
.
core
.
util
;
import
com.yifu.cloud.plus.v1.yifu.common.core.util.sms.MonthObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateFormatUtils
;
import
java.math.BigDecimal
;
import
java.text.DateFormat
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.temporal.TemporalAdjusters
;
import
java.util.*
;
/**
* 日期工具类
*
* @author fang
* @ClassName: DateUtil
* @date 2017年7月10日 下午4:13:33
*/
@Slf4j
public
class
DateUtil
{
private
DateUtil
(){
throw
new
IllegalStateException
(
"DateUtil class"
);
}
/**
* 可用时间格式
*/
private
static
String
[]
parsePatterns
=
{
DateUtil
.
DATE_PATTERN
,
DateUtil
.
ISO_EXPANDED_DATE_FORMAT
,
DateUtil
.
DATETIME_PATTERN_SECOND
,
DateUtil
.
DATETIME_PATTERN_MINUTE
,
DateUtil
.
DATETIME_PATTERN_XIEGANG
,
"yyyy/MM/dd HH:mm:ss"
,
"yyyy/MM/dd HH:mm"
,
"yyyymmdd"
};
/**
* Base ISO 8601 Date format yyyyMMdd i.e., 20021225 for the 25th day of
* December in the year 2002
*/
public
static
final
String
ISO_DATE_FORMAT
=
"yyyyMMdd"
;
/**
* Expanded ISO 8601 Date format yyyy-MM-dd i.e., 2002-12-25 for the 25th
* day of December in the year 2002
*/
public
static
final
String
ISO_EXPANDED_DATE_FORMAT
=
"yyyy-MM-dd"
;
/**
* yyyy/MM/dd
*/
public
static
final
String
DATETIME_PATTERN_XIEGANG
=
"yyyy/MM/dd"
;
/**
* yyyyMM
*/
public
static
final
String
DATETIME_YYYYMM
=
"yyyyMM"
;
/**
* yyyy-MM
*/
public
static
final
String
DATETIME_YYYY_MM
=
"yyyy-MM"
;
/**
* yyyy-MM-dd hh:mm:ss
*/
public
static
final
String
DATETIME_PATTERN_SECOND
=
"yyyy-MM-dd HH:mm:ss"
;
/**
* yyyy-MM-dd hh:mm:ss
*/
public
static
final
String
DATETIME_PATTERN_CONTAINS
=
"yyyyMMdd HH:mm:ss"
;
/**
* yyyy-MM-dd hh:mm:ss
*/
public
static
final
String
DATETIME_PATTERN_MINUTE
=
"yyyy-MM-dd HH:mm"
;
/**
* yyyyMMddHHmmss
*/
public
static
final
String
DATE_PATTERN
=
"yyyyMMddHHmmss"
;
protected
static
final
float
normalizedJulian
(
float
jd
)
{
return
Math
.
round
(
jd
+
0.5f
)
-
0.5f
;
}
/**
* Returns the Date from a julian. The Julian date will be converted to noon
* GMT, such that it matches the nearest half-integer (i.e., a julian date
* of 1.4 gets changed to 1.5, and 0.9 gets changed to 0.5.)
*
* @param jd the Julian date
* @return the Gregorian date
*/
public
static
final
Date
toDate
(
float
jd
)
{
/*
* To convert a Julian Day Number to a Gregorian date, assume that it is
* for 0 hours, Greenwich time (so that it ends in 0.5). Do the
* following calculations, again dropping the fractional part of all
* multiplicatons and divisions. Note: This method will not give dates
* accurately on the Gregorian Proleptic Calendar, i.e., the calendar
* you get by extending the Gregorian calendar backwards to years
* earlier than 1582. using the Gregorian leap year rules. In
* particular, the method fails if Y<400.
*/
float
z
=
(
normalizedJulian
(
jd
))
+
0.5f
;
float
w
=
(
int
)
((
z
-
1867216.25f
)
/
36524.25f
);
float
x
=
(
int
)
(
w
/
4
f
);
float
a
=
z
+
1
+
w
-
x
;
float
b
=
a
+
1524
;
float
c
=
(
int
)
((
b
-
122.1
)
/
365.25
);
float
d
=
(
int
)
(
365.25f
*
c
);
float
e
=
(
int
)
((
b
-
d
)
/
30.6001
);
float
f
=
(
int
)
(
30.6001f
*
e
);
int
day
=
(
int
)
(
b
-
d
-
f
);
int
month
=
(
int
)
(
e
-
1
);
if
(
month
>
12
)
{
month
=
month
-
12
;
}
int
year
=
(
int
)
(
c
-
4715
);
if
(
month
>
2
)
{
year
--;
}
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
YEAR
,
year
);
calendar
.
set
(
Calendar
.
MONTH
,
month
-
1
);
calendar
.
set
(
Calendar
.
DATE
,
day
);
return
calendar
.
getTime
();
}
/**
* Returns the days between two dates. Positive values indicate that the
* second date is after the first, and negative values indicate, well, the
* opposite. Relying on specific times is problematic.
*
* @param early the "first date"
* @param late the "second date"
* @return the days between the two dates
*/
public
static
final
int
daysBetween
(
Date
early
,
Date
late
)
{
Calendar
c1
=
Calendar
.
getInstance
();
Calendar
c2
=
Calendar
.
getInstance
();
c1
.
setTime
(
early
);
c2
.
setTime
(
late
);
return
daysBetween
(
c1
,
c2
);
}
/**
* Returns the days between two dates. Positive values indicate that the
* second date is after the first, and negative values indicate, well, the
* opposite.
*
* @param early
* @param late
* @return the days between two dates.
*/
public
static
final
int
daysBetween
(
Calendar
early
,
Calendar
late
)
{
return
(
int
)
(
toJulian
(
late
)
-
toJulian
(
early
));
}
/**
* Return a Julian date based on the input parameter. This is based from
* calculations found at
* <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian
* Day Calculations (Gregorian Calendar)</a>, provided by Bill Jeffrys.
*
* @param calendar a calendar instance
* @return the julian day number
*/
public
static
final
float
toJulian
(
Calendar
calendar
)
{
int
y
=
calendar
.
get
(
Calendar
.
YEAR
);
int
m
=
calendar
.
get
(
Calendar
.
MONTH
);
int
d
=
calendar
.
get
(
Calendar
.
DATE
);
int
a
=
y
/
100
;
int
b
=
a
/
4
;
int
c
=
2
-
a
+
b
;
float
e
=
(
int
)
(
365.25f
*
(
y
+
4716
));
float
f
=
(
int
)
(
30.6001f
*
(
m
+
1
));
return
((
c
+
d
+
e
+
f
)
-
1524.5f
);
}
/**
* Return a Julian date based on the input parameter. This is based from
* calculations found at
* <a href="http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html">Julian
* Day Calculations (Gregorian Calendar)</a>, provided by Bill Jeffrys.
*
* @param date
* @return the julian day number
*/
public
static
final
float
toJulian
(
Date
date
)
{
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
return
toJulian
(
c
);
}
/**
* @param isoString
* @param fmt
* @param field Calendar.YEAR/Calendar.MONTH/Calendar.DATE
* @param amount
* @return
* @throws ParseException
*/
public
static
final
String
dateIncrease
(
String
isoString
,
String
fmt
,
int
field
,
int
amount
)
{
try
{
Calendar
cal
=
GregorianCalendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"GMT"
));
cal
.
setTime
(
stringToDate2
(
isoString
,
fmt
));
cal
.
add
(
field
,
amount
);
return
dateToString
(
cal
.
getTime
(),
fmt
);
}
catch
(
Exception
ex
)
{
return
null
;
}
}
/**
* Time Field Rolling function. Rolls (up/down) a single unit of time on the
* given time field.
*
* @param isoString
* @param field the time field.
* @param up Indicates if rolling up or rolling down the field value.
* use formating char's
* @throws ParseException if an unknown field value is given.
*/
public
static
final
String
roll
(
String
isoString
,
String
fmt
,
int
field
,
boolean
up
)
{
Calendar
cal
=
GregorianCalendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"GMT"
));
cal
.
setTime
(
stringToDate
(
isoString
,
fmt
));
cal
.
roll
(
field
,
up
);
return
dateToString
(
cal
.
getTime
(),
fmt
);
}
/**
* Time Field Rolling function. Rolls (up/down) a single unit of time on the
* given time field.
*
* @param isoString
* @param field the time field.
* @param up Indicates if rolling up or rolling down the field value.
* @throws ParseException if an unknown field value is given.
*/
public
static
final
String
roll
(
String
isoString
,
int
field
,
boolean
up
){
return
roll
(
isoString
,
DATETIME_PATTERN_MINUTE
,
field
,
up
);
}
/**
* java.util.Date
*
* @param dateText
* @param format
* @return
*/
public
static
Date
stringToDate2
(
String
dateText
,
String
format
)
{
if
(
dateText
==
null
)
{
return
null
;
}
DateFormat
df
=
null
;
try
{
if
(
format
==
null
)
{
df
=
new
SimpleDateFormat
();
}
else
{
df
=
new
SimpleDateFormat
(
format
);
}
// setLenient avoids allowing dates like 9/32/2001
// which would otherwise parse to 10/2/2001
df
.
setLenient
(
false
);
return
df
.
parse
(
dateText
);
}
catch
(
ParseException
e
)
{
return
null
;
}
}
/**
* @return Timestamp
*/
public
static
java
.
sql
.
Timestamp
getCurrentTimestamp
()
{
return
new
java
.
sql
.
Timestamp
(
System
.
currentTimeMillis
());
}
/**
* java.util.Date
*
* @param dateString
* @param format
* @return
*/
public
static
Date
stringToDate
(
String
dateString
,
String
format
)
{
return
stringToDate2
(
dateString
,
format
);
}
/**
* 校验按指定格式是否可以转换成日期
*
* @param @param dateString
* @param @param format
* @param @return 参数
* @return boolean 返回类型
* @throws
* @Title: checkStringToDate
*/
public
static
boolean
checkStringToDate
(
String
dateString
,
String
formatStr
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
formatStr
);
try
{
format
.
setLenient
(
false
);
format
.
parse
(
dateString
);
}
catch
(
ParseException
e
)
{
return
false
;
}
return
true
;
}
/**
* java.util.Date
*
* @param dateString
*/
public
static
Date
stringToDate
(
String
dateString
)
{
return
stringToDate2
(
dateString
,
ISO_EXPANDED_DATE_FORMAT
);
}
/**
* @param pattern
* @param date
* @return
*/
public
static
String
dateToString
(
Date
date
,
String
pattern
)
{
if
(
date
==
null
)
{
return
null
;
}
try
{
SimpleDateFormat
sfDate
=
new
SimpleDateFormat
(
pattern
);
sfDate
.
setLenient
(
false
);
return
sfDate
.
format
(
date
);
}
catch
(
Exception
e
)
{
return
null
;
}
}
/**
* yyyy-MM-dd
*
* @param date
* @return
*/
public
static
String
dateToString
(
Date
date
)
{
return
dateToString
(
date
,
ISO_EXPANDED_DATE_FORMAT
);
}
/**
* @return
*/
public
static
Date
getCurrentDateTime
()
{
Calendar
calNow
=
Calendar
.
getInstance
();
return
calNow
.
getTime
();
}
/**
* @param pattern
* @return
*/
public
static
String
getCurrentDateString
(
String
pattern
)
{
return
dateToString
(
getCurrentDateTime
(),
pattern
);
}
/**
* yyyy-MM-dd
*
* @return
*/
public
static
String
getCurrentDateString
()
{
return
dateToString
(
getCurrentDateTime
(),
ISO_EXPANDED_DATE_FORMAT
);
}
/**
* 返回固定格式的当前时间 yyyy-MM-dd hh:mm:ss
*
* @param
* @return
*/
public
static
String
dateToStringWithTime
()
{
return
dateToString
(
new
Date
(),
DATETIME_PATTERN_MINUTE
);
}
/**
* yyyy-MM-dd hh:mm:ss
*
* @param date
* @return
*/
public
static
String
dateToStringWithTime
(
Date
date
)
{
return
dateToString
(
date
,
DATETIME_PATTERN_MINUTE
);
}
/**
* yyyyMMdd
*
* @param date
* @return String
*/
public
static
String
dateToStringWithTimeIso
(
Date
date
)
{
return
dateToString
(
date
,
ISO_DATE_FORMAT
);
}
/**
* @param date
* @param days
* @return java.util.Date
*/
public
static
Date
dateIncreaseByDay
(
Date
date
,
int
days
)
{
Calendar
cal
=
GregorianCalendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"GMT"
));
cal
.
setTime
(
date
);
cal
.
add
(
Calendar
.
DATE
,
days
);
return
cal
.
getTime
();
}
/**
* @param date
* @param mnt
* @return java.util.Date
*/
public
static
Date
dateIncreaseByMonth
(
Date
date
,
int
mnt
)
{
Calendar
cal
=
GregorianCalendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"GMT"
));
cal
.
setTime
(
date
);
cal
.
add
(
Calendar
.
MONTH
,
mnt
);
return
cal
.
getTime
();
}
/**
* @param date
* @param mnt
* @return java.util.Date
*/
public
static
Date
dateIncreaseByYear
(
Date
date
,
int
mnt
)
{
Calendar
cal
=
GregorianCalendar
.
getInstance
(
TimeZone
.
getTimeZone
(
"GMT"
));
cal
.
setTime
(
date
);
cal
.
add
(
Calendar
.
YEAR
,
mnt
);
return
cal
.
getTime
();
}
/**
* @param date yyyy-MM-dd
* @param days
* @return yyyy-MM-dd
*/
public
static
String
dateIncreaseByDay
(
String
date
,
int
days
)
{
return
dateIncreaseByDay
(
date
,
ISO_DATE_FORMAT
,
days
);
}
/**
* @param date
* @param fmt
* @param days
* @return
*/
public
static
String
dateIncreaseByDay
(
String
date
,
String
fmt
,
int
days
)
{
return
dateIncrease
(
date
,
fmt
,
Calendar
.
DATE
,
days
);
}
/**
* @param src
* @param srcfmt
* @param desfmt
* @return
*/
public
static
String
stringToString
(
String
src
,
String
srcfmt
,
String
desfmt
)
{
return
dateToString
(
stringToDate
(
src
,
srcfmt
),
desfmt
);
}
/**
* @param date
* @return string
*/
public
static
String
getYear
(
Date
date
)
{
SimpleDateFormat
formater
=
new
SimpleDateFormat
(
"yyyy"
);
return
formater
.
format
(
date
);
}
/**
* @param date
* @return string
*/
public
static
String
getMonth
(
Date
date
)
{
SimpleDateFormat
formater
=
new
SimpleDateFormat
(
"MM"
);
return
formater
.
format
(
date
);
}
/**
* @param date
* @return string
*/
public
static
String
getDay
(
Date
date
)
{
SimpleDateFormat
formater
=
new
SimpleDateFormat
(
"dd"
);
return
formater
.
format
(
date
);
}
/**
* @param date
* @return string
*/
public
static
String
getHour
(
Date
date
)
{
SimpleDateFormat
formater
=
new
SimpleDateFormat
(
"HH"
);
return
formater
.
format
(
date
);
}
public
static
int
getMinsFromDate
(
Date
dt
)
{
GregorianCalendar
cal
=
new
GregorianCalendar
();
cal
.
setTime
(
dt
);
int
hour
=
cal
.
get
(
Calendar
.
HOUR_OF_DAY
);
int
min
=
cal
.
get
(
Calendar
.
MINUTE
);
return
((
hour
*
60
)
+
min
);
}
/**
* Function to convert String to Date Object. If invalid input then current
* or next day date is returned (Added by Ali Naqvi on 2006-5-16).
*
* @param str String input in YYYY-MM-DD HH:MM[:SS] format.
* @param isExpiry boolean if set and input string is invalid then next day date
* is returned
* @return Date
*/
public
static
Date
convertToDate
(
String
str
,
boolean
isExpiry
)
{
SimpleDateFormat
fmt
=
new
SimpleDateFormat
(
DATETIME_PATTERN_MINUTE
);
Date
dt
=
null
;
try
{
dt
=
fmt
.
parse
(
str
);
}
catch
(
ParseException
ex
)
{
Calendar
cal
=
Calendar
.
getInstance
();
if
(
isExpiry
)
{
cal
.
add
(
Calendar
.
DAY_OF_MONTH
,
1
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
23
);
cal
.
set
(
Calendar
.
MINUTE
,
59
);
}
else
{
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
}
dt
=
cal
.
getTime
();
}
return
dt
;
}
public
static
Date
convertToDate
(
String
str
)
{
SimpleDateFormat
fmt
=
new
SimpleDateFormat
(
"yyyy-MM-dd hh:mm"
);
Date
dt
=
null
;
try
{
dt
=
fmt
.
parse
(
str
);
}
catch
(
ParseException
ex
)
{
dt
=
new
Date
();
}
return
dt
;
}
public
static
String
dateFromat
(
Date
date
,
int
minute
)
{
String
dateFormat
=
null
;
int
year
=
Integer
.
parseInt
(
getYear
(
date
));
int
month
=
Integer
.
parseInt
(
getMonth
(
date
));
int
day
=
Integer
.
parseInt
(
getDay
(
date
));
int
hour
=
minute
/
60
;
int
min
=
minute
%
60
;
dateFormat
=
year
+
(
month
>
9
?
String
.
valueOf
(
month
)
:
"0"
+
month
+
""
)
+
(
day
>
9
?
String
.
valueOf
(
day
)
:
"0"
+
day
)
+
" "
+
(
hour
>
9
?
String
.
valueOf
(
hour
)
:
"0"
+
hour
)
+
(
min
>
9
?
String
.
valueOf
(
min
)
:
"0"
+
min
)
+
"00"
;
return
dateFormat
;
}
public
static
String
sDateFormat
()
{
return
new
SimpleDateFormat
(
DATE_PATTERN
).
format
(
Calendar
.
getInstance
().
getTime
());
}
/**
* 判断是否为有效时间格式
*
* @param str
* @return
*/
public
static
Boolean
valid
(
String
str
)
{
Boolean
result
=
false
;
if
(
null
!=
str
)
{
for
(
String
Pattern
:
parsePatterns
)
{
if
(
Pattern
.
equals
(
str
))
{
result
=
true
;
break
;
}
}
}
return
result
;
}
/**
* 返回一个有效时间格式串若自身无效则返回"yyyy-MM-dd"
*
* @param str
* @return
*/
public
static
String
validAndReturn
(
String
str
)
{
String
result
=
ISO_EXPANDED_DATE_FORMAT
;
if
(
valid
(
str
))
{
result
=
str
;
}
return
result
;
}
/**
* 根据type返回时间差(除不尽加1)
*
* @param end 结束时间
* @param begin 开始时间
* @param type 返回类型1秒2分3小时4天(type其他值都返回秒)
* @return
*/
public
static
long
getSubTime
(
Date
end
,
Date
begin
,
Integer
type
)
{
long
between
=
0
;
if
(
end
!=
null
&&
begin
!=
null
)
{
try
{
// 得到两者的毫秒数
between
=
(
end
.
getTime
()
-
begin
.
getTime
());
}
catch
(
Exception
ex
)
{
log
.
error
(
"根据type返回时间差"
,
ex
);
}
return
initSubTime
(
type
,
between
);
}
else
{
return
between
;
}
}
private
static
long
initSubTime
(
Integer
type
,
long
between
)
{
if
(
null
==
type
)
{
return
between
;
}
else
if
(
type
==
2
)
{
long
min
=
(
between
/
(
60
*
1000
));
if
(
between
%
(
60
*
1000
)
!=
0
)
{
min
++;
}
return
min
;
}
else
if
(
type
==
3
)
{
long
hour
=
(
between
/
(
60
*
60
*
1000
));
if
(
between
%
(
60
*
60
*
1000
)
!=
0
)
{
hour
++;
}
return
hour
;
}
else
if
(
type
==
4
)
{
long
day
=
between
/
(
24
*
60
*
60
*
1000
);
if
(
between
%
(
24
*
60
*
60
*
1000
)
!=
0
)
{
day
++;
}
return
day
;
}
else
{
return
between
;
}
}
/**
* 已当月为基准往前退 i+1 个生成月份格式:YYYYMMDD 未完善
*
* @param @param i
* @param @return 参数
* @return String 返回类型
* @throws
* @Title: getMonthByNum
* @Description:
*/
public
static
List
<
MonthObject
>
getMonthByNum
(
int
i
,
int
endDate
)
{
List
<
MonthObject
>
socailStartList
=
new
ArrayList
<>();
MonthObject
temp
=
null
;
MonthObject
temp2
=
null
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
// 取时间
Date
date
=
new
Date
();
Calendar
calendar
=
new
GregorianCalendar
();
calendar
.
setTime
(
date
);
if
(
endDate
<=
Integer
.
parseInt
(
DateUtil
.
getDay
(
date
)))
{
// 把日期往后增加一个月.整数往后推,负数往前移动
calendar
.
add
(
Calendar
.
MONTH
,
2
);
}
else
{
// 把日期往后增加一个月.整数往后推,负数往前移动
calendar
.
add
(
Calendar
.
MONTH
,
1
);
}
temp2
=
new
MonthObject
();
temp2
.
setMonth
(
sdf
.
format
(
calendar
.
getTime
()));
date
=
calendar
.
getTime
();
socailStartList
.
add
(
temp2
);
for
(
int
x
=
1
;
x
<=
i
;
x
++)
{
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
MONTH
,
-
x
);
temp
=
new
MonthObject
();
temp
.
setMonth
(
sdf
.
format
(
calendar
.
getTime
()));
socailStartList
.
add
(
temp
);
}
return
socailStartList
;
}
/**
* 获得指定月份的日期
*
* @param i
* @return
* @Author fxj
* @Date 2019-09-18
**/
public
static
Date
getDateByMonthNum
(
int
i
)
{
// 取时间
Date
date
=
new
Date
();
Calendar
calendar
=
new
GregorianCalendar
();
calendar
.
setTime
(
date
);
// 把日期往后增加一个月.整数往后推,负数往前移动
calendar
.
add
(
Calendar
.
MONTH
,
i
);
return
calendar
.
getTime
();
}
/**
* @param @param i
* @param @return 参数
* @return List<MonthObject> 返回类型
* @throws
* @Title: getFutureMonthByNum
* @Description: (已当前月份未基准往后退 i + 1个月份)
*/
public
static
List
<
MonthObject
>
getFutureMonthByNum
(
int
k
,
int
endDate
)
{
List
<
MonthObject
>
socailStartList
=
new
ArrayList
<>();
MonthObject
temp
=
null
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
Date
date
=
new
Date
();
//取时间
Calendar
calendar
=
new
GregorianCalendar
();
int
j
=
0
;
if
(
endDate
<=
Integer
.
parseInt
(
DateUtil
.
getDay
(
date
)))
{
j
=
2
;
}
else
{
j
=
1
;
}
for
(
int
x
=
j
;
x
<
k
;
x
++)
{
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
MONTH
,
x
);
temp
=
new
MonthObject
();
temp
.
setMonth
(
sdf
.
format
(
calendar
.
getTime
()));
socailStartList
.
add
(
temp
);
}
return
socailStartList
;
}
public
static
List
<
Date
>
getDateListByStartEndDate
(
Date
startDate
,
Date
endDate
)
{
List
<
Date
>
lstDate
=
new
ArrayList
<>();
lstDate
.
add
(
startDate
);
if
(
startDate
.
equals
(
endDate
))
{
return
lstDate
;
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
Calendar
calendar
=
new
GregorianCalendar
();
calendar
.
setTime
(
startDate
);
for
(
int
i
=
1
;
i
>
0
;
i
=
1
)
{
calendar
.
add
(
Calendar
.
MONTH
,
i
);
try
{
if
(
sdf
.
format
(
calendar
.
getTime
()).
equals
(
sdf
.
format
(
endDate
)))
{
lstDate
.
add
(
sdf
.
parse
(
sdf
.
format
(
calendar
.
getTime
())));
break
;
}
lstDate
.
add
(
sdf
.
parse
(
sdf
.
format
(
calendar
.
getTime
())));
}
catch
(
ParseException
e
)
{
log
.
error
(
"getDateListByStartEndDate"
,
e
);
}
}
return
lstDate
;
}
/**
* @param @param startDate 起缴日期
* @param @param backNum 补缴月份
* @param @param type 补缴类型 1.当月缴纳当月 2.当月缴纳次月
* @param @return 参数
* @return boolean 返回类型
* @throws
* @Title: checkStartDate
* @Description: (判断日期是否在指定的日期范围内)
*/
public
static
boolean
checkStartDate
(
Date
startDate
,
int
backNum
,
int
type
)
{
Calendar
calendar
=
new
GregorianCalendar
();
calendar
.
setTime
(
new
Date
());
Date
temp
=
null
;
if
(
type
==
1
)
{
calendar
.
add
(
Calendar
.
MONTH
,
backNum
);
}
else
if
(
type
==
2
)
{
calendar
.
add
(
Calendar
.
MONTH
,
backNum
-
1
);
}
temp
=
calendar
.
getTime
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
try
{
// 当startDate 在temp 前 返回false
if
(!
startDate
.
before
(
sdf
.
parse
(
sdf
.
format
(
temp
))))
{
return
true
;
}
}
catch
(
ParseException
e
)
{
return
true
;
}
return
false
;
}
public
static
int
getMonthCountByDate
(
Date
startDate
,
Date
endDate
)
{
// type:1.当月缴当月的 2.当月缴次月的
int
monthC
=
0
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
if
(
endDate
==
null
)
{
endDate
=
new
Date
();
}
try
{
monthC
=
getMonthSpace
(
sdf
.
format
(
startDate
),
sdf
.
format
(
endDate
));
monthC
=
monthC
+
1
;
}
catch
(
ParseException
e
)
{
log
.
error
(
"getMonthCountByDate"
,
e
);
return
0
;
}
return
monthC
;
}
/**
* @param date1 <String>
* @param date2 <String>
* @return int
* @throws ParseException
*/
public
static
int
getMonthSpace
(
String
date1
,
String
date2
)
throws
ParseException
{
int
result
=
0
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
Calendar
c1
=
Calendar
.
getInstance
();
Calendar
c2
=
Calendar
.
getInstance
();
c1
.
setTime
(
sdf
.
parse
(
date1
));
c2
.
setTime
(
sdf
.
parse
(
date2
));
result
=
12
*
(
c2
.
get
(
Calendar
.
YEAR
)
-
c1
.
get
(
Calendar
.
YEAR
))
+
c2
.
get
(
Calendar
.
MONTH
)
-
c1
.
get
(
Calendar
.
MONTH
);
return
result
/
1
;
}
/**
* @param date1 <String>
* @param date2 <String>
* @return int
* @throws ParseException
*/
public
static
int
getYearSpace
(
String
date1
,
String
date2
)
throws
ParseException
{
int
result
=
0
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
Calendar
c1
=
Calendar
.
getInstance
();
Calendar
c2
=
Calendar
.
getInstance
();
c1
.
setTime
(
sdf
.
parse
(
date1
));
c2
.
setTime
(
sdf
.
parse
(
date2
));
result
=
1
*
(
c2
.
get
(
Calendar
.
YEAR
)
-
c1
.
get
(
Calendar
.
YEAR
))
+
(
c2
.
get
(
Calendar
.
MONTH
)
-
c1
.
get
(
Calendar
.
MONTH
))/
12
;
return
result
/
1
;
}
/**
* 获取任意时间的月的最后一天
* 描述:<描述函数实现的功能>.
*
* @param repeatDate
* @return
*/
public
static
String
getMaxMonthDate
(
String
repeatDate
)
{
SimpleDateFormat
dft
=
new
SimpleDateFormat
(
ISO_DATE_FORMAT
);
Calendar
calendar
=
Calendar
.
getInstance
();
try
{
if
(
StringUtils
.
isNotBlank
(
repeatDate
)
&&
!
"null"
.
equals
(
repeatDate
))
{
calendar
.
setTime
(
dft
.
parse
(
repeatDate
));
}
}
catch
(
ParseException
e
)
{
log
.
error
(
"getMaxMonthDate"
,
e
);
}
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
calendar
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
return
dft
.
format
(
calendar
.
getTime
());
}
public
static
Date
getMaxDayOfMonth
(
Date
temp
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
ISO_DATE_FORMAT
);
String
dateStr
=
sdf
.
format
(
temp
);
dateStr
=
getMaxMonthDate
(
dateStr
);
Date
res
=
null
;
try
{
res
=
sdf
.
parse
(
dateStr
);
}
catch
(
ParseException
e
)
{
log
.
error
(
"getMaxDayOfMonth"
,
e
);
}
return
res
;
}
public
static
Integer
getDateOfNow
()
{
Calendar
now
=
Calendar
.
getInstance
();
return
now
.
get
(
Calendar
.
DAY_OF_MONTH
);
}
/**
* 获取i年后的时间自动 -1天
* @param @param date
* @param @param i
* @param @return
* @param @throws ParseException 参数
* @return String 返回类型
* @throws
* @Title: getMonthSpace
* @Description: (获取指定日期后指定 (i 个年的时间)
*/
public
static
String
getDateStr
(
Date
date
,
int
i
)
{
String
str
=
""
;
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
setTime
(
date
);
c1
.
set
(
Calendar
.
YEAR
,
c1
.
get
(
Calendar
.
YEAR
)+
i
);
c1
.
set
(
Calendar
.
DAY_OF_MONTH
,
c1
.
get
(
Calendar
.
DAY_OF_MONTH
)
-
1
);
int
year
=
c1
.
get
(
Calendar
.
YEAR
);
int
month
=
c1
.
get
(
Calendar
.
MONTH
)+
1
;
int
day
=
c1
.
get
(
Calendar
.
DAY_OF_MONTH
);
str
=
year
+
""
+
(
month
<
10
?
"0"
+
month
:
month
)
+
(
day
<
10
?
"0"
+
day
:
day
);
return
str
;
}
/**
* 获取指定月份
* @Author fxj
* @Date 2019-10-16
* @param yearMonth 格式 :YYYYMM
* @param i
* @return
* @Description (获取指定日期后指定 ( i)个月的时间YYYYMM)
**/
public
static
String
getYearAndMonth
(
String
yearMonth
,
int
i
){
if
(!
Common
.
isNotNull
(
yearMonth
)
||
yearMonth
.
length
()
!=
6
||
!
Common
.
isNumber
(
yearMonth
)){
return
null
;
}
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
Integer
.
valueOf
(
yearMonth
.
substring
(
0
,
4
)),
Integer
.
valueOf
(
yearMonth
.
substring
(
4
,
6
)),
1
);
c1
.
set
(
Calendar
.
MONTH
,
c1
.
get
(
Calendar
.
MONTH
)
+
i
);
String
str
=
""
;
int
year
=
c1
.
get
(
Calendar
.
YEAR
);
int
month
=
c1
.
get
(
Calendar
.
MONTH
);
if
(
month
==
0
){
year
=
year
-
1
;
month
=
month
+
12
;
str
=
year
+
(
month
<
10
?
"0"
+
month:
month
+
""
);
}
else
{
str
=
year
+
(
month
<
10
?
"0"
+
month
:
month
+
""
);
}
return
str
;
}
/**
* 获取指定月份
* @Author fxj
* @Date 2019-10-16
* @param yearMonth 格式 :LocalDateTime
* @param i
* @return
* @Description (获取指定日期后指定 ( i)个月的时间YYYYMM)
**/
public
static
String
getYearAndMonth
(
LocalDateTime
yearMonth
,
int
i
){
String
str
=
""
;
if
(
yearMonth
!=
null
)
{
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
yearMonth
.
getYear
(),
yearMonth
.
getMonthValue
(),
1
);
c1
.
set
(
Calendar
.
MONTH
,
c1
.
get
(
Calendar
.
MONTH
)
+
i
);
int
year
=
c1
.
get
(
Calendar
.
YEAR
);
int
month
=
c1
.
get
(
Calendar
.
MONTH
);
if
(
month
==
0
){
year
=
year
-
1
;
month
=
month
+
12
;
str
=
year
+
(
month
<
10
?
"0"
+
month
:
Integer
.
toString
(
month
));
}
else
{
str
=
year
+
(
month
<
10
?
"0"
+
month
:
Integer
.
toString
(
month
));
}
}
return
str
;
}
/**
* @param i 加减年份
* @Description: 获取当前年月,对年月加减(yyyyMM)
* @Author: hgw
* @Date: 2019/10/29 17:13
* @return: java.lang.String
**/
public
static
String
getYearMonthByAddYear
(
int
i
){
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
Calendar
.
YEAR
,
c1
.
get
(
Calendar
.
YEAR
)
+
i
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
return
sdf
.
format
(
c1
.
getTime
());
}
/**
* 获取第一天
* @Author fxj
* @Date 2019-10-16
* @param yearMonth YYYYMM
* @return
**/
public
static
Date
getFirstDay
(
String
yearMonth
){
if
(!
Common
.
isNotNull
(
yearMonth
)
||
yearMonth
.
length
()
!=
6
||
!
Common
.
isNumber
(
yearMonth
)){
return
null
;
}
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
Integer
.
valueOf
(
yearMonth
.
substring
(
0
,
4
)),
Integer
.
valueOf
(
yearMonth
.
substring
(
4
,
6
))-
1
,
1
);
return
c1
.
getTime
();
}
/**
* 获取第一天
* @Author fxj
* @Date 2019-10-16
* @param yearMonth YYYYMM
* @return
**/
public
static
String
getFirstDayString
(
String
yearMonth
){
return
yearMonth
.
substring
(
0
,
4
)+
"-"
+
yearMonth
.
substring
(
4
,
6
)+
"-01"
;
}
/**
* 当月第一天
* @Author fxj
* @Date 2021-01-05
* @param
* @return
* @see com.yifu.cloud.v1.common.core.util
**/
public
static
LocalDateTime
getFirstDay
(){
return
LocalDateTime
.
now
().
with
(
TemporalAdjusters
.
firstDayOfMonth
());
}
/**
* 获取最后一天
* @Author fxj
* @Date 2019-10-16
* @param yearMonth YYYYMM
* @return
**/
public
static
Date
getLastDay
(
String
yearMonth
){
if
(!
Common
.
isNotNull
(
yearMonth
)
||
yearMonth
.
length
()
!=
6
||
!
Common
.
isNumber
(
yearMonth
)){
return
null
;
}
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
Integer
.
valueOf
(
yearMonth
.
substring
(
0
,
4
)),
Integer
.
valueOf
(
yearMonth
.
substring
(
4
,
6
))-
1
,
c1
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
return
c1
.
getTime
();
}
/**
* 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
*
* @param src 将要转换的原始字符窜
* @param pattern 转换的匹配格式
* @return 如果转换成功则返回转换后的日期
* @throws ParseException
*/
public
static
Date
parseDate
(
String
src
,
String
pattern
)
throws
ParseException
{
return
getSDFormat
(
pattern
).
parse
(
src
);
}
// 指定模式的时间格式
private
static
SimpleDateFormat
getSDFormat
(
String
pattern
)
{
return
new
SimpleDateFormat
(
pattern
);
}
/**
* 指定日期的默认显示,具体格式:年-月-日
*
* @param date 指定的日期
* @return 指定日期按“年-月-日“格式显示
*/
public
static
String
formatDate
(
Date
date
)
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
ISO_EXPANDED_DATE_FORMAT
);
return
sdf
.
format
(
date
);
}
/**
* @param mnt 增减月份的 值
* @param yearMonth 202101
* @Description: 增减月份
* @Author: hgw
* @Date: 2019/9/17 10:15
* @return: java.lang.String
**/
public
static
String
addMonthByYearMonth
(
int
mnt
,
String
yearMonth
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Integer
.
valueOf
(
yearMonth
.
substring
(
0
,
4
)),
Integer
.
valueOf
(
yearMonth
.
substring
(
4
,
6
))-
1
,
1
);
cal
.
add
(
Calendar
.
MONTH
,
mnt
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
return
sdf
.
format
(
cal
.
getTime
());
}
/**
* @param mnt 增减月份的 值
* @param yearToMonth 2021-01
* @Description: 增减月份
* @Author: hgw
* @Date: 2019/9/17 10:15
* @return: java.lang.String
**/
public
static
String
addMonthByYearToMonth
(
int
mnt
,
String
yearToMonth
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
set
(
Integer
.
parseInt
(
yearToMonth
.
substring
(
0
,
4
)),
Integer
.
parseInt
(
yearToMonth
.
substring
(
5
,
7
))-
1
,
1
);
cal
.
add
(
Calendar
.
MONTH
,
mnt
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYY_MM
);
return
sdf
.
format
(
cal
.
getTime
());
}
/**
* @param yearToMonth 2021-01
* @Description: 比较年月大小
* @Author: hgw
* @Date: 2021/4/27 14:55
* @return: boolean
**/
public
static
int
paseYearToMonth
(
String
yearToMonth
)
{
return
Integer
.
parseInt
(
yearToMonth
.
substring
(
0
,
4
)
+
yearToMonth
.
substring
(
5
,
7
));
}
/**
* @param mnt 增减月份的 值
* @Description: 增减月份
* @Author: hgw
* @Date: 2019/9/17 10:15
* @return: java.lang.String
**/
public
static
String
addMonth
(
int
mnt
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
MONTH
,
mnt
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
DATETIME_YYYYMM
);
return
sdf
.
format
(
cal
.
getTime
());
}
/**
* @param mnt 增减日的 值
* @Description: 增减日
* @Author: hgw
* @Date: 2021-7-15 11:36:23
* @return: java.lang.String
**/
public
static
String
addDay
(
int
mnt
)
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DATE
,
mnt
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
ISO_EXPANDED_DATE_FORMAT
);
return
sdf
.
format
(
cal
.
getTime
());
}
/**
* @param taxYearMonth 计税月
* @Description: 根据计税年月返回个税扣除额
* @Author: hgw
* @Date: 2019/9/19 16:02
* @return: double
**/
public
static
BigDecimal
getTaxMonthMoney
(
String
taxYearMonth
)
{
try
{
int
taxYear
=
Integer
.
parseInt
(
taxYearMonth
.
substring
(
0
,
4
));
int
taxMonth
=
Integer
.
parseInt
(
taxYearMonth
.
substring
(
4
,
6
));
int
nowYear
=
Integer
.
parseInt
(
DateFormatUtils
.
format
(
new
Date
(),
"yyyy"
));
int
nowMonth
=
Integer
.
parseInt
(
DateFormatUtils
.
format
(
new
Date
(),
"MM"
));
// 同一个计税年
if
(
nowYear
-
taxYear
==
0
)
{
return
new
BigDecimal
((
nowMonth
-
taxMonth
+
1
)
*
5000
);
// 前一个计税年
}
else
if
(
nowYear
-
taxYear
>
0
)
{
// 禅道461:王成说的。
return
new
BigDecimal
((
nowMonth
)
*
5000
);
}
else
{
// 比当前年还大
return
new
BigDecimal
(
0
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"getTaxMonthMoney"
,
e
);
}
return
new
BigDecimal
(
0
);
}
/**
* <p>Description: 返回最大值月份</p>
* @author hgw
* @Date 2019年4月29日下午6:52:41
* @param taxMonth
* @return
*/
/**
* @param taxMonth
* @Description: 返回起始计税月(例如:计税月是今年之前的,则取值今年1月,否则=计税月)
* @Author: hgw
* @Date: 2019/9/30 18:16
* @return: java.lang.String
**/
public
static
String
getMaxYearMonth
(
String
taxMonth
)
{
if
(
Common
.
isNotNull
(
taxMonth
)
&&
taxMonth
.
length
()
>=
6
)
{
taxMonth
=
taxMonth
.
substring
(
0
,
6
);
String
nowYearMonth
=
getCurrentDateString
(
"yyyy"
)
+
"01"
;
int
nowYearMonthInt
=
Integer
.
parseInt
(
nowYearMonth
);
if
(
Integer
.
parseInt
(
taxMonth
)
>
nowYearMonthInt
)
{
return
taxMonth
;
}
else
{
return
nowYearMonth
;
}
}
return
null
;
}
/**
* <p>Description: 返回年月</p>
* @author hgw
* @Date 2019年5月16日下午6:39:02
* @param currentMonth
* @return
*/
public
static
String
getYearMonth
(
String
currentMonth
)
{
if
(
Common
.
isNotNull
(
currentMonth
)
&&
currentMonth
.
length
()
>
5
)
{
if
(
currentMonth
.
indexOf
(
'-'
)
>=
0
)
{
currentMonth
=
currentMonth
.
replace
(
"-"
,
""
);
}
return
currentMonth
.
substring
(
0
,
4
)
+
currentMonth
.
substring
(
4
,
6
);
}
return
null
;
}
/**
*
* @Author fxj
* @Date 2019-11-20
* @param backMonths 补缴月份数
* @param haveThisMonth 0是1否 补缴是否含当月 含当月 补缴月份数 -1 不含当月补缴月数不变
* @param isBack 0是1否 是否补缴 不补缴默认从当前月开始 至次月
* @return
**/
public
static
List
<
String
>
getMonthsForSocialAndFund
(
int
isBack
,
int
backMonths
,
int
haveThisMonth
){
List
<
String
>
months
=
new
ArrayList
<>();
int
count
=
0
;
//补缴
if
(
isBack
==
0
){
//含当月
if
(
haveThisMonth
==
0
){
count
=
backMonths
-
1
;
//不含当月
}
else
if
(
haveThisMonth
==
1
){
count
=
backMonths
;
}
}
LocalDateTime
now
=
LocalDateTime
.
now
();
while
(
count
>=
0
){
months
.
add
(
getYearAndMonth
(
now
,-
count
));
count
--;
}
months
.
add
(
getYearAndMonth
(
now
,
1
));
return
months
;
}
/**
* @param cur
* @param to
* @Description: 比较月份大小
* @Author: hgw
* @Date: 2019/11/25 18:18
* @return: int
**/
public
static
int
compareMonth
(
LocalDateTime
cur
,
LocalDateTime
to
)
{
return
(
cur
.
getYear
()
-
to
.
getYear
())
*
12
+
(
cur
.
getMonthValue
()
-
to
.
getMonthValue
());
}
/**
* @param a 第一个年月
* @param b 第二个年月
* @Description: 比较a和b的大小,a大,则返回true;
* @Author: hgw
* @Date: 2020/10/16 15:44
* @return: boolean
**/
public
static
boolean
compareYearMonth
(
String
a
,
String
b
)
{
try
{
if
(
a
!=
null
&&
b
!=
null
&&
!
""
.
equals
(
a
)
&&
!
""
.
equals
(
b
)
&&
a
.
length
()
==
6
&&
b
.
length
()
==
6
)
{
int
aInt
=
Integer
.
parseInt
(
a
.
substring
(
0
,
4
));
int
bInt
=
Integer
.
parseInt
(
b
.
substring
(
0
,
4
));
if
(
aInt
>
bInt
)
{
return
true
;
}
else
if
(
aInt
<
bInt
)
{
return
false
;
}
else
{
aInt
=
Integer
.
parseInt
(
a
.
substring
(
4
,
6
));
bInt
=
Integer
.
parseInt
(
b
.
substring
(
4
,
6
));
return
aInt
>
bInt
;
}
}
return
true
;
}
catch
(
NumberFormatException
e
)
{
return
true
;
}
}
/**
* @param
* @Author: wangan
* @Date: 2020/12/21
* @Description: 获取这个月
* @return: java.lang.String
* @see com.yifu.cloud.v1.common.core.util
**/
public
static
String
getThisMonth
(){
SimpleDateFormat
sf
=
new
SimpleDateFormat
(
DateUtil
.
DATETIME_YYYYMM
);
Date
nowDate
=
new
Date
();
String
thisMonth
=
sf
.
format
(
nowDate
);
return
thisMonth
;
}
/**
* @param
* @Author: wangan
* @Date: 2020/12/21
* @Description: 获取上个月
* @return: java.lang.String
* @see com.yifu.cloud.v1.common.core.util
**/
public
static
String
getLastMonth
(){
SimpleDateFormat
sf
=
new
SimpleDateFormat
(
DateUtil
.
DATETIME_YYYYMM
);
Date
nowDate
=
new
Date
();
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTime
(
nowDate
);
instance
.
add
(
Calendar
.
MONTH
,
-
1
);
String
lastMonth
=
sf
.
format
(
instance
.
getTime
());
return
lastMonth
;
}
/**
* @param
* @Author: wangan
* @Date: 2020/12/21
* @Description: 获取上n个月
* @return: java.lang.String
* @see com.yifu.cloud.v1.common.core.util
**/
public
static
String
getLastXMonth
(
int
month
){
SimpleDateFormat
sf
=
new
SimpleDateFormat
(
DateUtil
.
DATETIME_YYYYMM
);
Date
nowDate
=
new
Date
();
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTime
(
nowDate
);
instance
.
add
(
Calendar
.
MONTH
,
month
);
return
sf
.
format
(
instance
.
getTime
());
}
/**
* @param yearMonth 年月(例:202201)
* @param month 增减数值(例:1,或 -1)
* @Description: String年月,根据month增减,大多数为了获取下月或上月使用
* @Author: hgw
* @Date: 2022/3/31 20:43
* @return: java.lang.String
**/
public
static
String
addMonthByString
(
String
yearMonth
,
int
month
)
{
if
(
Common
.
isNotNull
(
yearMonth
))
{
try
{
SimpleDateFormat
sf
=
new
SimpleDateFormat
(
DateUtil
.
DATETIME_YYYYMM
);
Date
d1
=
sf
.
parse
(
yearMonth
);
Calendar
instance
=
Calendar
.
getInstance
();
instance
.
setTime
(
d1
);
instance
.
add
(
Calendar
.
MONTH
,
month
);
return
sf
.
format
(
instance
.
getTime
());
}
catch
(
ParseException
e
)
{
return
null
;
}
}
else
{
return
null
;
}
}
}
yifu-common/yifu-common-core/src/main/java/com/yifu/cloud/plus/v1/yifu/common/core/util/sms/MonthObject.java
0 → 100644
View file @
d8b472f4
/**
* Copyright © 2017yifu. All rights reserved.
*
* @Title: MonthObject.java
* @Prject: worfuplus
* @Package: com.worfu.web.bo
* @Description: TODO
* @author: Administrator
* @date: 2017年8月22日 上午9:51:33
* @version: V1.0
*/
/**
* @Title: MonthObject.java
* @Package com.worfu.web.bo
* @Description: TODO(用一句话描述该文件做什么)
* @author fang
* @date 2017年8月22日
* @version V1.0
*/
package
com
.
yifu
.
cloud
.
plus
.
v1
.
yifu
.
common
.
core
.
util
.
sms
;
/**
*
* @author: fang 前台繳納月份实体
* @createDate: 2017年8月22日 上午9:51:33
*/
/**
* @ClassName: MonthObject
* @Description: TODO(这里用一句话描述这个类的作用)
* @author fang
* @date 2017年8月22日
*
*/
public
class
MonthObject
{
private
String
month
;
public
String
getMonth
()
{
return
month
;
}
public
void
setMonth
(
String
month
)
{
this
.
month
=
month
;
}
}
\ No newline at end of file
yifu-upms/yifu-upms-biz/src/main/java/com/yifu.cloud.plus.v1/yifu/admin/service/impl/SysDataAuthServiceImpl.java
View file @
d8b472f4
...
...
@@ -173,7 +173,7 @@ public class SysDataAuthServiceImpl extends ServiceImpl<SysDataAuthMapper, SysDa
List
<
SysDataAuthMenuRel
>
menuSettleList
=
sysDataAuthVO
.
getMenuSettleList
();
List
<
SysDataAuthMenuRel
>
menuDeptList
=
sysDataAuthVO
.
getMenuDeptList
();
// 存储sql的map,用作缓存 键:linkId + CommonConstants.DOWN_LINE + menu.getMenuId()
// 存储sql的map,用作缓存 键:linkId + CommonConstants.DOWN_LINE
_STRING
+ menu.getMenuId()
Map
<
String
,
String
>
authSqlMap
=
new
HashMap
<>();
StringBuilder
sql
=
new
StringBuilder
();
String
mapSql
;
...
...
@@ -196,7 +196,7 @@ public class SysDataAuthServiceImpl extends ServiceImpl<SysDataAuthMapper, SysDa
sql
.
append
(
" or dept.dept_id = #deptId "
);
}
for
(
SysDataAuthMenuRel
menu
:
menuDeptList
)
{
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menu
.
getMenuId
(),
sql
.
toString
());
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menu
.
getMenuId
(),
sql
.
toString
());
menu
.
setSysDataAuthId
(
mainId
);
menu
.
setType
(
3
);
}
...
...
@@ -208,13 +208,13 @@ public class SysDataAuthServiceImpl extends ServiceImpl<SysDataAuthMapper, SysDa
nowSql
=
" or a.create_by = #create_by "
;
sysDataAuth
.
setIsCreateAuth
(
1
);
for
(
SysDataAuthMenuRel
menu
:
menuCreateList
)
{
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menu
.
getMenuId
());
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menu
.
getMenuId
());
if
(!
Common
.
isEmpty
(
mapSql
))
{
nowMapSql
=
new
StringBuilder
(
nowSql
).
append
(
mapSql
);
}
else
{
nowMapSql
=
new
StringBuilder
(
nowSql
);
}
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menu
.
getMenuId
(),
nowMapSql
.
toString
());
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menu
.
getMenuId
(),
nowMapSql
.
toString
());
menu
.
setType
(
1
);
menu
.
setSysDataAuthId
(
mainId
);
}
...
...
@@ -226,13 +226,13 @@ public class SysDataAuthServiceImpl extends ServiceImpl<SysDataAuthMapper, SysDa
nowSql
=
" or a.settleDomainId in ('0'#settleDomainId) "
;
sysDataAuth
.
setIsSettleAuth
(
1
);
for
(
SysDataAuthMenuRel
menu
:
menuSettleList
)
{
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menu
.
getMenuId
());
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menu
.
getMenuId
());
if
(!
Common
.
isEmpty
(
mapSql
))
{
nowMapSql
=
new
StringBuilder
(
nowSql
).
append
(
mapSql
);
}
else
{
nowMapSql
=
new
StringBuilder
(
nowSql
);
}
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menu
.
getMenuId
(),
nowMapSql
.
toString
());
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menu
.
getMenuId
(),
nowMapSql
.
toString
());
menu
.
setType
(
2
);
menu
.
setSysDataAuthId
(
mainId
);
}
...
...
@@ -250,13 +250,13 @@ public class SysDataAuthServiceImpl extends ServiceImpl<SysDataAuthMapper, SysDa
sqls
.
setSysDataAuthId
(
mainId
);
diySqlService
.
save
(
sqls
);
for
(
SysDiySqlMenuRel
menuSql
:
menuSqlList
)
{
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menuSql
.
getMenuId
());
mapSql
=
authSqlMap
.
get
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menuSql
.
getMenuId
());
if
(!
Common
.
isEmpty
(
mapSql
))
{
nowMapSql
=
new
StringBuilder
(
nowSql
).
append
(
mapSql
);
}
else
{
nowMapSql
=
new
StringBuilder
(
nowSql
);
}
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
+
menuSql
.
getMenuId
(),
nowMapSql
.
toString
());
authSqlMap
.
put
(
linkId
+
CommonConstants
.
DOWN_LINE
_STRING
+
menuSql
.
getMenuId
(),
nowMapSql
.
toString
());
menuSql
.
setSysDataAuthId
(
mainId
);
menuSql
.
setSysDiySqlId
(
sqls
.
getId
());
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment