feat: 上线调整
This commit is contained in:
parent
73db251acb
commit
02245366b2
@ -230,3 +230,11 @@ docker network inspect devops_txw-network
|
|||||||
curl http://localhost:8848/nacos/v1/ns/operator/metrics
|
curl http://localhost:8848/nacos/v1/ns/operator/metrics
|
||||||
docker exec txw-redis redis-cli -a redis_password ping
|
docker exec txw-redis redis-cli -a redis_password ping
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 参考指令
|
||||||
|
|
||||||
|
```
|
||||||
|
// 清理缓存
|
||||||
|
docker buildx prune
|
||||||
|
```
|
||||||
@ -50,7 +50,187 @@ http {
|
|||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
|
|
||||||
# =============================================
|
# =============================================
|
||||||
# 主 Server 块
|
# HTTP → HTTPS 重定向
|
||||||
|
# =============================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name www.cciw.com.cn;
|
||||||
|
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# HTTPS Server 块
|
||||||
|
# =============================================
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name www.cciw.com.cn;
|
||||||
|
|
||||||
|
# SSL 证书
|
||||||
|
ssl_certificate /etc/nginx/ssl/www.cciw.com.cn.crt;
|
||||||
|
ssl_certificate_key /etc/nginx/ssl/www.cciw.com.cn.key;
|
||||||
|
|
||||||
|
# SSL 安全配置
|
||||||
|
ssl_protocols TLSv1.2 TLSv1.3;
|
||||||
|
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
|
||||||
|
ssl_prefer_server_ciphers off;
|
||||||
|
ssl_session_cache shared:SSL:10m;
|
||||||
|
ssl_session_timeout 1d;
|
||||||
|
ssl_session_tickets off;
|
||||||
|
|
||||||
|
# Gzip 压缩
|
||||||
|
gzip_min_length 1024;
|
||||||
|
gzip_types text/plain text/css application/json application/javascript
|
||||||
|
application/x-javascript text/xml application/xml
|
||||||
|
application/xml+rss text/javascript image/svg+xml;
|
||||||
|
|
||||||
|
if ($request_method = OPTIONS) {
|
||||||
|
return 403;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 健康检查
|
||||||
|
location /healthcheck {
|
||||||
|
access_log off;
|
||||||
|
return 200 'OK';
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ping 接口
|
||||||
|
location /ping {
|
||||||
|
return 200 "ok";
|
||||||
|
}
|
||||||
|
|
||||||
|
# API 代理(网关)
|
||||||
|
location ~ ^/(mhzc|gxzx|sso|yygl) {
|
||||||
|
include proxy-common.conf;
|
||||||
|
proxy_pass http://txw-gateway:9300;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/nacos(/.*)$ {
|
||||||
|
include proxy-common.conf;
|
||||||
|
proxy_pass http://txw-nacos:8080$1;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ^~ /admin/ {
|
||||||
|
proxy_pass http://172.21.79.119:18777/;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_cache off;
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 60s;
|
||||||
|
proxy_read_timeout 600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ^~ /web/ {
|
||||||
|
proxy_pass http://172.21.79.119:18778/;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_cache off;
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 60s;
|
||||||
|
proxy_read_timeout 600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ^~ /h5/ {
|
||||||
|
proxy_pass http://172.21.79.119:18779/;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_cache off;
|
||||||
|
proxy_connect_timeout 60s;
|
||||||
|
proxy_send_timeout 60s;
|
||||||
|
proxy_read_timeout 600s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 百度验证
|
||||||
|
location = /baidu_verify_codeva-5rH3psCeMQ.html {
|
||||||
|
alias /etc/nginx/verify/baidu_verify_codeva-5rH3psCeMQ.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /baidu_verify_codeva-eE1giHswVL.html {
|
||||||
|
return 200 "2c7cc0bcf0ecd060ab8f7fe919acc078";
|
||||||
|
add_header Content-Type text/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# 运营支撑前端(mhzc)
|
||||||
|
# --------------------------------------------------------
|
||||||
|
location /view/mhzc {
|
||||||
|
return 301 /view/mhzc/;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /view/mhzc/ {
|
||||||
|
alias /usr/share/nginx/html/txw-mhzc-web/;
|
||||||
|
|
||||||
|
location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|svg|ttf|woff|woff2)$ {
|
||||||
|
expires 90d;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
expires 1h;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
|
||||||
|
try_files $uri $uri/ /view/mhzc/index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# 运营管理前端(yygl)
|
||||||
|
# --------------------------------------------------------
|
||||||
|
location /view/yygl {
|
||||||
|
return 301 /view/yygl/;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /view/yygl/ {
|
||||||
|
alias /usr/share/nginx/html/txw-yygl-web/;
|
||||||
|
|
||||||
|
location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|svg|ttf|woff|woff2)$ {
|
||||||
|
expires 90d;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
expires 1h;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
|
||||||
|
try_files $uri $uri/ /view/yygl/index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# 默认首页重定向
|
||||||
|
# --------------------------------------------------------
|
||||||
|
location / {
|
||||||
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||||||
|
add_header Pragma "no-cache";
|
||||||
|
add_header Expires 0;
|
||||||
|
return 301 /view/mhzc/;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 404 /404.html;
|
||||||
|
location = /404.html {
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# 主 Server 块(保留非 HTTPS 请求处理)
|
||||||
# =============================================
|
# =============================================
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
|
|||||||
@ -45,4 +45,10 @@
|
|||||||
| 4 | 接口联调 | 调用接口实现碳数据上链、VC 签发/验证等功能 |
|
| 4 | 接口联调 | 调用接口实现碳数据上链、VC 签发/验证等功能 |
|
||||||
| 5 | 上线验证 | 联调通过后,即可正式上线 |
|
| 5 | 上线验证 | 联调通过后,即可正式上线 |
|
||||||
|
|
||||||
|
|
||||||
|
## 技术联系
|
||||||
|
|
||||||
|
> 联系人: 谢老师
|
||||||
|
> 联系电话: 15601721332
|
||||||
|
> 联系邮箱: pjsl_service@chainable.com.cn
|
||||||
---
|
---
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- 顶部菜单栏 -->
|
<!-- 顶部菜单栏 -->
|
||||||
<div class="nav-box">
|
<div v-show="!isIframeEmbedded" class="nav-box">
|
||||||
<div class="logo-box" @click="goHome">
|
<div class="logo-box" @click="goHome">
|
||||||
<img src="@/pages/index/assets/logo-name.png">
|
<img src="@/pages/index/assets/logo-name.png">
|
||||||
</div>
|
</div>
|
||||||
@ -103,6 +103,7 @@ export default {
|
|||||||
curPage: "home",
|
curPage: "home",
|
||||||
loginFlag: false, //是否已完成登录
|
loginFlag: false, //是否已完成登录
|
||||||
mobileMenuOpen: false, //移动端菜单是否展开
|
mobileMenuOpen: false, //移动端菜单是否展开
|
||||||
|
isIframeEmbedded: window.self !== window.top,
|
||||||
// 路由路径到菜单名的映射
|
// 路由路径到菜单名的映射
|
||||||
routeToMenuMap: {
|
routeToMenuMap: {
|
||||||
'/home': 'home',
|
'/home': 'home',
|
||||||
@ -127,7 +128,7 @@ export default {
|
|||||||
{
|
{
|
||||||
name: 'tzzx',
|
name: 'tzzx',
|
||||||
title: '碳证中心',
|
title: '碳证中心',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/carbon-index',
|
iframeUrl: '/web/carbon-index',
|
||||||
path:'/carbon-index',
|
path:'/carbon-index',
|
||||||
needLogin: true,
|
needLogin: true,
|
||||||
clientId: 'client_id_tfwzx',//单点登录接入子系统的标识,由txw_sso_client表配置
|
clientId: 'client_id_tfwzx',//单点登录接入子系统的标识,由txw_sso_client表配置
|
||||||
@ -140,9 +141,9 @@ export default {
|
|||||||
divider: true, //是否显示子菜单分割线
|
divider: true, //是否显示子菜单分割线
|
||||||
needLogin: true, //是否需要登录才能访问
|
needLogin: true, //是否需要登录才能访问
|
||||||
clientId: 'client_id_tfwzx',
|
clientId: 'client_id_tfwzx',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/index', //外部系统链接地址
|
iframeUrl: '/web/trustedCarbonQuery/index', //外部系统链接地址
|
||||||
path: '/trustedCarbonQuery/index',
|
path: '/trustedCarbonQuery/index',
|
||||||
// iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/list?type=carbon-query', //外部系统链接地址
|
// iframeUrl: '/web/trustedCarbonQuery/list?type=carbon-query', //外部系统链接地址
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'tsjfcg',
|
name: 'tsjfcg',
|
||||||
@ -152,7 +153,7 @@ export default {
|
|||||||
divider: true,
|
divider: true,
|
||||||
needLogin: true,
|
needLogin: true,
|
||||||
clientId: 'client_id_tfwzx',
|
clientId: 'client_id_tfwzx',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/carbon-protection',
|
iframeUrl: '/web/carbon-protection',
|
||||||
path: '/carbon-protection'
|
path: '/carbon-protection'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -163,7 +164,7 @@ export default {
|
|||||||
divider: true,
|
divider: true,
|
||||||
needLogin: true,
|
needLogin: true,
|
||||||
clientId: 'client_id_tfwzx',
|
clientId: 'client_id_tfwzx',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/carbon-verify',
|
iframeUrl: '/web/carbon-verify',
|
||||||
path: '/carbon-verify'
|
path: '/carbon-verify'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -174,7 +175,7 @@ export default {
|
|||||||
divider: true,
|
divider: true,
|
||||||
needLogin: true,
|
needLogin: true,
|
||||||
clientId: 'client_id_tfwzx',
|
clientId: 'client_id_tfwzx',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/carbon-report-cert',
|
iframeUrl: '/web/carbon-report-cert',
|
||||||
path: '/carbon-report-cert'
|
path: '/carbon-report-cert'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -185,7 +186,7 @@ export default {
|
|||||||
divider: true,
|
divider: true,
|
||||||
needLogin: true,
|
needLogin: true,
|
||||||
clientId: 'client_id_tfwzx',
|
clientId: 'client_id_tfwzx',
|
||||||
iframeUrl: 'https://ctn-web-pre.lingshu.net/carbon-report-hosting',
|
iframeUrl: '/web/carbon-report-hosting',
|
||||||
path: '/carbon-report-hosting'
|
path: '/carbon-report-hosting'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -138,7 +138,7 @@ export default {
|
|||||||
id: 'xttz',
|
id: 'xttz',
|
||||||
title: '系统通知',
|
title: '系统通知',
|
||||||
icon: '',
|
icon: '',
|
||||||
name: 'ggwhgl',
|
name: 'xttz',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -154,7 +154,7 @@ export default {
|
|||||||
title: '质证结果管理',
|
title: '质证结果管理',
|
||||||
icon: 'user',
|
icon: 'user',
|
||||||
name: 'zljggl',
|
name: 'zljggl',
|
||||||
iframeUrl: "https://ctn-web-pre.lingshu.net/proof-result-mgt",
|
iframeUrl: "/web/proof-result-mgt",
|
||||||
path: '/proof-result-mgt',
|
path: '/proof-result-mgt',
|
||||||
query: 'type=carbon-certify',
|
query: 'type=carbon-certify',
|
||||||
},
|
},
|
||||||
@ -163,21 +163,21 @@ export default {
|
|||||||
title: '存证记录管理',
|
title: '存证记录管理',
|
||||||
icon: 'user',
|
icon: 'user',
|
||||||
name: 'cunzhengjilu',
|
name: 'cunzhengjilu',
|
||||||
iframeUrl: "https://ctn-web-pre.lingshu.net/cert-record-mgt",
|
iframeUrl: "/web/cert-record-mgt",
|
||||||
path: '/cert-record-mgt',
|
path: '/cert-record-mgt',
|
||||||
}, {
|
}, {
|
||||||
id: 'tgjlgl',
|
id: 'tgjlgl',
|
||||||
title: '托管记录管理',
|
title: '托管记录管理',
|
||||||
icon: 'user',
|
icon: 'user',
|
||||||
name: 'tgjlgl',
|
name: 'tgjlgl',
|
||||||
iframeUrl: "https://ctn-web-pre.lingshu.net/hosting-record-mgt",
|
iframeUrl: "/web/hosting-record-mgt",
|
||||||
path: '/hosting-record-mgt',
|
path: '/hosting-record-mgt',
|
||||||
}, {
|
}, {
|
||||||
id: 'chazhengjilu',
|
id: 'chazhengjilu',
|
||||||
title: '查证记录管理',
|
title: '查证记录管理',
|
||||||
icon: 'user',
|
icon: 'user',
|
||||||
name: 'chazhengjilu',
|
name: 'chazhengjilu',
|
||||||
iframeUrl: "https://ctn-web-pre.lingshu.net/query-record-mgt",
|
iframeUrl: "/web/query-record-mgt",
|
||||||
path: '/query-record-mgt',
|
path: '/query-record-mgt',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -216,6 +216,12 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
'$route'() {
|
'$route'() {
|
||||||
this.syncMenuWithRoute();
|
this.syncMenuWithRoute();
|
||||||
|
},
|
||||||
|
kxurl(newVal) {
|
||||||
|
if (newVal) {
|
||||||
|
this.updateIframeUrl(this.cdList);
|
||||||
|
this.syncMenuWithRoute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -244,13 +250,33 @@ export default {
|
|||||||
},
|
},
|
||||||
syncMenuWithRoute() {
|
syncMenuWithRoute() {
|
||||||
const path = this.$route.path;
|
const path = this.$route.path;
|
||||||
|
const query = this.$route.query;
|
||||||
|
let routeName = null;
|
||||||
|
|
||||||
|
// 优先从路径提取:/yhzx/xxx
|
||||||
const match = path.match(/\/yhzx\/(\w+)/);
|
const match = path.match(/\/yhzx\/(\w+)/);
|
||||||
if (match) {
|
if (match) {
|
||||||
const routeName = match[1];
|
routeName = match[1];
|
||||||
|
}
|
||||||
|
// 其次从 query 提取:?activeCompo=xxx
|
||||||
|
else if (query && query.activeCompo) {
|
||||||
|
routeName = query.activeCompo;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (routeName) {
|
||||||
for (const item of this.cdList) {
|
for (const item of this.cdList) {
|
||||||
if (item.name === routeName) {
|
if (item.name === routeName) {
|
||||||
this.activeMenuId = item.id;
|
this.activeMenuId = item.id;
|
||||||
this.expanded = [item.id];
|
this.expanded = [item.id];
|
||||||
|
// kxurl 返回后,动态拼接完整 iframeUrl
|
||||||
|
if (item.path && this.kxurl) {
|
||||||
|
this.iframeUrl = `${this.kxurl}${item.path}`;
|
||||||
|
if (item.query) {
|
||||||
|
this.iframeUrl += `?${item.query}`;
|
||||||
|
}
|
||||||
|
} else if (item.iframeUrl) {
|
||||||
|
this.iframeUrl = item.iframeUrl;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (item.children) {
|
if (item.children) {
|
||||||
@ -258,6 +284,15 @@ export default {
|
|||||||
if (child) {
|
if (child) {
|
||||||
this.activeMenuId = child.id;
|
this.activeMenuId = child.id;
|
||||||
this.expanded = [item.id];
|
this.expanded = [item.id];
|
||||||
|
// kxurl 返回后,动态拼接完整 iframeUrl
|
||||||
|
if (child.path && this.kxurl) {
|
||||||
|
this.iframeUrl = `${this.kxurl}${child.path}`;
|
||||||
|
if (child.query) {
|
||||||
|
this.iframeUrl += `?${child.query}`;
|
||||||
|
}
|
||||||
|
} else if (child.iframeUrl) {
|
||||||
|
this.iframeUrl = child.iframeUrl;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,8 +336,15 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this.curPage = menu.name;
|
// 如果有 path 且 kxurl 已返回,则动态拼接;否则用 cdList 中已有的 iframeUrl
|
||||||
let iframeUrl = menu.iframeUrl;
|
let iframeUrl = menu.iframeUrl;
|
||||||
|
if (menu.path && this.kxurl) {
|
||||||
|
iframeUrl = `${this.kxurl}${menu.path}`;
|
||||||
|
if (menu.query) {
|
||||||
|
iframeUrl += `?${menu.query}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (iframeUrl) {
|
if (iframeUrl) {
|
||||||
this.iframeUrl = iframeUrl;
|
this.iframeUrl = iframeUrl;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -104,7 +104,7 @@ export default {
|
|||||||
delVisible:false,
|
delVisible:false,
|
||||||
form:{
|
form:{
|
||||||
sjhm:'',
|
sjhm:'',
|
||||||
// sms:''
|
sms:'123456'
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
sjhm: [{ required: true, message: '手机号码必填', type: 'error' }],
|
sjhm: [{ required: true, message: '手机号码必填', type: 'error' }],
|
||||||
|
|||||||
@ -169,7 +169,7 @@ public class TxwMhzcQyxxbServiceImpl extends ServiceImpl<TxwMhzcQyxxbMapper, Txw
|
|||||||
qyxxbDO.setQyuuid(IdUtil.fastSimpleUUID());
|
qyxxbDO.setQyuuid(IdUtil.fastSimpleUUID());
|
||||||
qyxxbDO.setQymc(qyxx.getQymc());
|
qyxxbDO.setQymc(qyxx.getQymc());
|
||||||
qyxxbDO.setNsrsbh(qyxx.getNsrsbh());
|
qyxxbDO.setNsrsbh(qyxx.getNsrsbh());
|
||||||
qyxxbDO.setGxdtrzbz("N");
|
qyxxbDO.setGxdtrzbz("Y");
|
||||||
qyxxbDO.setYwqdDm("did");
|
qyxxbDO.setYwqdDm("did");
|
||||||
qyxxbDO.setYxbz("Y");
|
qyxxbDO.setYxbz("Y");
|
||||||
qyxxbDO.setLrrq(new Date());
|
qyxxbDO.setLrrq(new Date());
|
||||||
|
|||||||
@ -13,7 +13,7 @@ public class DidBindPhoneReqVO {
|
|||||||
* 验证码
|
* 验证码
|
||||||
*/
|
*/
|
||||||
@Schema(description = "验证码")
|
@Schema(description = "验证码")
|
||||||
@NotEmpty(message = "验证码不能为空")
|
// @NotEmpty(message = "验证码不能为空")
|
||||||
private String sms;
|
private String sms;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user