1390 Commits

Author SHA1 Message Date
YunaiV
56ae4503a6 【代码优化】SYSTEM:操作日志,增加异步记录 2024-08-31 13:28:30 +08:00
YunaiV
09551193b0 【代码修复】SYSTEM:角色标识的提示不正确问题 2024-08-31 10:16:17 +08:00
YunaiV
8829abe740 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleRespVO.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/role/RoleSaveReqVO.java
2024-08-31 10:05:52 +08:00
YunaiV
a677e98de0 【代码修复】SYSTEM:角色标识的提示不正确问题 2024-08-31 10:05:33 +08:00
YunaiV
aaee3216f7 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro 2024-08-31 09:38:52 +08:00
YunaiV
f00b3005c7 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into develop
# Conflicts:
#	yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/framework/sms/core/client/impl/SmsClientTests.java
2024-08-31 08:53:45 +08:00
YunaiV
d745a1832d Merge branch 'develop' of https://gitee.com/scholarli/ruoyi-vue-pro_1 into develop
# Conflicts:
#	yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsCallbackController.java
#	yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/framework/sms/core/client/impl/SmsClientTests.java
2024-08-31 08:23:51 +08:00
YunaiV
39ec137047 【代码优化】apiErrorLogFrameworkService 变量名小写 2024-08-31 08:18:24 +08:00
YunaiV
86a413f57d 1059 【轻量级 PR】:日志记录租户Job错误信息 2024-08-30 23:19:00 +08:00
杨宇庆
10c0b86f9b
日志记录租户Job错误信息
Signed-off-by: 杨宇庆 <hiyyq@qq.com>
2024-08-28 05:58:19 +00:00
scholar
1c1abae5bb 七牛云短信实现,评审意见修改 2024-08-28 10:51:19 +08:00
YunaiV
ff6bee964b 【功能新增】工作流:BPM Model 增加 type 标记是 BPMN 设计器,还是 SIMPLE 钉钉设计器 2024-08-26 18:38:32 +08:00
scholar
4f7ac969fe 增加七牛云短信实现 2024-08-26 15:52:41 +08:00
YunaiV
ae7323cbe0 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-dependencies/pom.xml
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradePointUsePriceCalculator.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/sms/core/client/impl/HuaweiSmsClient.java
2024-08-09 21:52:44 +08:00
YunaiV
5071194501 Merge branch 'develop' of https://github.com/YunaiV/ruoyi-vue-pro into develop 2024-08-09 21:45:31 +08:00
YunaiV
22686bafa2 【代码优化】SYSTEM:增加新阿里云 SmsClient 的单测 2024-08-09 20:41:35 +08:00
brook
fd42e1711d fix: insertOrUpdate死循环问题 2024-08-09 11:31:14 +08:00
安浩浩
b47176c96e 新增:iot 模块 集成 emqx 接收 mqtt 接收消息 2024-08-06 22:17:29 +08:00
YunaiV
7ba3b12313 【优化】数据脱敏支持 Spring el 表达式,支持根据权限控制脱敏 2024-08-03 18:48:06 +08:00
YunaiV
760b4c147d Merge branch 'dev-0712-sensitive' of https://github.com/craftsman4j/ruoyi-vue-pro into develop 2024-08-03 16:54:17 +08:00
YunaiV
f44b623cfb Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/AiImageController.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/image/vo/AiImagePageReqVO.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/image/AiImageMapper.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageService.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/image/AiImageServiceImpl.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/mindmap/AiMindMapServiceImpl.java
#	yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/write/AiWriteServiceImpl.java
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/history/ProductBrowseHistoryController.java
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/history/vo/ProductBrowseHistoryRespVO.java
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
#	yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/MessageTemplateConstants.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/AfterSaleServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageWithdrawServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/message/TradeMessageServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationOrderHandler.java
#	yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/social/AppSocialUserController.java
#	yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/social/vo/AppSocialWxaQrcodeReqVO.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java
#	yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
2024-08-02 23:19:49 +08:00
YunaiV
f3a8d6f06c Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/history/ProductBrowseHistoryController.java
#	yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/social/AppSocialUserController.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/social/SocialClientApiImpl.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/socail/SocialClientController.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
2024-07-31 23:49:21 +08:00
zhougang
08e1c69d10 【优化】数据脱敏支持 Spring el 表达式,支持根据权限控制脱敏 2024-07-31 22:43:48 +08:00
芋道源码
36765d53a1
!1017 bugfix-导入系统用户时,增加注解校验过程,与界面添加和修改用户保持一致
Merge pull request !1017 from 尹先生/master-jdk17
2024-07-29 11:36:45 +00:00
常柯柯
18cf9e55e1
【代码优化】全局:Area 在 IDEA debug 时 toString 方法报错StackOverflowError、指定 jackson 默认序列化时双向引用的前向、后向出口避免死循环报错
Signed-off-by: 常柯柯 <88455621@qq.com>
2024-07-29 09:40:13 +00:00
YunaiV
55e5af4aec Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-ai/yudao-spring-boot-starter-ai/pom.xml
#	yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/DictTypeConstants.java
#	yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/task/BpmProcessInstanceStatusEnum.java
#	yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java
#	yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
#	yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.java
#	yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductRespVO.java
#	yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/receivable/CrmReceivableRespVO.java
#	yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/statistics/ErpPurchaseStatisticsMapper.xml
#	yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/statistics/ErpSaleStatisticsMapper.xml
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/AppProductSpuController.java
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/sku/ProductSkuMapper.java
#	yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/recrod/CombinationRecordReqPageVO.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillActivityController.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillConfigController.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/AppSeckillActivityController.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/AppSeckillConfigController.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/SeckillActivityConvert.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/SeckillConfigConvert.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponServiceImpl.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java
#	yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillConfigServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.http
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageRecordMapper.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordService.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageRecordServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserService.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryServiceImpl.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeCouponPriceCalculator.java
#	yudao-module-pay/yudao-module-pay-biz/pom.xml
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/vo/wallet/PayWalletPageReqVO.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/vo/wallet/PayWalletRespVO.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/convert/wallet/PayWalletConvert.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/dal/mysql/wallet/PayWalletMapper.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/job/order/PayOrderSyncJob.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/channel/PayChannelServiceImpl.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletService.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletServiceImpl.java
#	yudao-module-pay/yudao-module-pay-biz/src/test/java/cn/iocoder/yudao/module/pay/service/channel/PayChannelServiceTest.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientFactory.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/PayClientFactoryImpl.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/AbstractWxPayClient.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/WxNativePayClient.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/WxPayClientConfig.java
#	yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/jmreport/core/service/JmReportTokenServiceImpl.java
#	yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/SecurityConfiguration.java
#	yudao-module-report/yudao-module-report-biz/src/test/resources/application-unit-test.yaml
#	yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
#	yudao-module-system/yudao-module-system-biz/src/test/resources/application-unit-test.yaml
2024-07-28 23:30:06 +08:00
YunaiV
7c54204716 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
2024-07-28 20:44:58 +08:00
YunaiV
ad22a9d516 【代码优化】全局:Area 在 IDEA debug 时 toString 方法报错StackOverflowError、指定 jackson 默认序列化时双向引用的前向、后向出口避免死循环报错 2024-07-28 19:34:38 +08:00
YunaiV
d9b913a7dd 【功能修复】全局:访问日志的 query 查询未记录到的问题 2024-07-26 22:48:20 +08:00
YunaiV
c660833697 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/channel/PayChannelServiceImpl.java
#	yudao-module-pay/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/WxPayClientConfig.java
2024-07-26 09:17:51 +08:00
YunaiV
41ee237161 【代码优化】全局:DeptDataPermissionRule 的 ExpressionList 泛型 Long,解决部分 IDEA 的 jdk 编译存在问题 2024-07-26 09:17:33 +08:00
YunaiV
55e1bca3c0 【代码修复】PAY:微信扫码支付 v2 版本,缺少 product_id 的报错 2024-07-24 21:35:37 +08:00
YunaiV
625265b11d 【同步】BOOT 和 CLOUD 的功能 2024-07-24 19:05:30 +08:00
YunaiV
a131434f94 【同步】jdk21 和 jdk8 的代码 2024-07-24 18:55:24 +08:00
YunaiV
257acba31e Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/interceptor/ApiAccessLogInterceptor.java
#	yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserService.java
#	yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/SecurityConfiguration.java
2024-07-24 18:46:33 +08:00
YunaiV
d87d51b701 【功能优化】全局:ApiAccessLogInterceptor 额外打印 Controller 地址,基于 https://t.zsxq.com/Z70Sl 建议 2024-07-24 13:30:02 +08:00
YunaiV
ebe3cc727b 【功能新增】全局:多租户缓存,增加忽略的 Spring Cache 配置 2024-07-23 23:25:56 +08:00
YunaiV
aef833fb9f 【代码优化】全局:userId 为空时,直接校验权限不通过 2024-07-23 22:40:33 +08:00
yinyilong
878b56a7d6 bugfix-导入系统用户时,增加注解校验过程,与界面添加和修改用户保持一致 2024-07-23 14:43:57 +08:00
YunaiV
743383faf2 【代码修复】全局:BaseMapperX 的分页 pageSize 不分页判断不对的问题 2024-07-21 18:03:16 +08:00
YunaiV
a210210b20 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts:
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/wallet/PayWalletController.java
2024-07-21 11:15:04 +08:00
YunaiV
2c429263d0 【功能修复】全局:SelectSheetWriteHandler 在没有任何 SelectSheetWriteHandler 的情况下,导致 Excel 导入不解析下拉框的问题 2024-07-20 18:58:42 +08:00
YunaiV
a31dd24399 【功能优化】全局:LoginUser 新增过期时间,方便判断 token 过期 2024-07-20 18:42:19 +08:00
YunaiV
c5689b4625 Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro 2024-07-19 23:36:43 +08:00
YunaiV
a8fc7982ff 【功能优化】全局:简化 GlobalExceptionHandler 对 ServiceException 的打印 2024-07-19 23:36:34 +08:00
YunaiV
6aac058be7 【功能优化】全局:处理 HttpRequestMethodNotSupportedException 异常 2024-07-19 23:12:41 +08:00
YunaiV
9f94ddf93a Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro 2024-07-19 23:12:06 +08:00
YunaiV
047051e008 【功能优化】全局:处理 HttpRequestMethodNotSupportedException 异常 2024-07-19 23:11:56 +08:00
YunaiV
d156742fce Merge branch 'master-jdk17' of https://gitee.com/zhijiantianya/ruoyi-vue-pro 2024-07-19 23:03:16 +08:00
YunaiV
bbdf9e9b2e 【功能修复】全局:请求租户不存在时,记录访问日志、操作日志异常的问题 2024-07-19 22:54:38 +08:00