diff --git a/urbanops-module-system/pom.xml b/urbanops-module-system/pom.xml
index d4efcbb..f5d8717 100644
--- a/urbanops-module-system/pom.xml
+++ b/urbanops-module-system/pom.xml
@@ -118,6 +118,12 @@
org.dromara.hutool
hutool-extra
+
+ com.belerweb
+ pinyin4j
+ 2.5.1
+
+
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/auth/vo/AuthLoginReqVO.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
index 0829f20..6279df5 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/auth/vo/AuthLoginReqVO.java
@@ -24,7 +24,7 @@ public class AuthLoginReqVO extends CaptchaVerificationReqVO {
@Schema(description = "账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "urbanopsyuanma")
@NotEmpty(message = "登录账号不能为空")
@Length(min = 4, max = 16, message = "账号长度为 4-16 位")
-// @Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
+ @Pattern(regexp = "^[A-Za-z0-9]+$", message = "账号格式为数字以及字母")
private String username;
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "buzhidao")
@@ -54,4 +54,4 @@ public class AuthLoginReqVO extends CaptchaVerificationReqVO {
return socialType == null || StrUtil.isNotEmpty(socialState);
}
-}
\ No newline at end of file
+}
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/user/UserController.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/user/UserController.java
index 3350684..de2f271 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/user/UserController.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/controller/admin/user/UserController.java
@@ -200,4 +200,12 @@ public class UserController {
return success(userService.getLoginBusiLine());
}
+ @PostMapping("/convert-username-to-pinyin")
+ @Operation(summary = "批量转换中文用户名为拼音")
+ @PreAuthorize("@ss.hasPermission('system:user:convert-username')")
+ public CommonResult convertChineseUsernameToPinyin() {
+ userService.updateChineseUsernameToPinyin();
+ return success(true);
+ }
+
}
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/dal/mysql/user/AdminUserMapper.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/dal/mysql/user/AdminUserMapper.java
index 0a0b0c9..69908da 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/dal/mysql/user/AdminUserMapper.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/dal/mysql/user/AdminUserMapper.java
@@ -16,7 +16,7 @@ import java.util.List;
public interface AdminUserMapper extends BaseMapperX {
default AdminUserDO selectByUsername(String username) {
- return selectOne(new LambdaQueryWrapperX().eq(AdminUserDO::getUsername, username).or().eq(AdminUserDO::getMobile, username));
+ return selectOne(AdminUserDO::getUsername, username);
}
default AdminUserDO selectByEmail(String email) {
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/auth/AdminAuthServiceImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/auth/AdminAuthServiceImpl.java
index 6c807e5..fc4ecd8 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/auth/AdminAuthServiceImpl.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/auth/AdminAuthServiceImpl.java
@@ -82,8 +82,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
// 校验账号是否存在
AdminUserDO user = userService.getUserByUsername(username);
if (user == null) {
- createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
- throw exception(AUTH_LOGIN_BAD_CREDENTIALS);
+ user = userService.getUserByMobile(username);
+ if (user == null){
+ createLoginLog(null, username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
+ throw exception(AUTH_LOGIN_BAD_CREDENTIALS);
+ }
}
if (!userService.isPasswordMatch(password, user.getPassword())) {
createLoginLog(user.getId(), username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserService.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserService.java
index 467b7a1..5ad5fb1 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserService.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserService.java
@@ -217,4 +217,15 @@ public interface AdminUserService {
*/
List getLoginBusiLine();
+ /**
+ * 获取所有用户列表
+ * @return 用户列表
+ */
+ List getAllUserList();
+
+ /**
+ * 将中文用户名转换为拼音
+ */
+ void updateChineseUsernameToPinyin();
+
}
diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImpl.java
index 03b4df5..a8395a8 100644
--- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImpl.java
+++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.pinyin.PinyinUtil;
import com.zteits.urbanops.framework.common.enums.CommonStatusEnum;
import com.zteits.urbanops.framework.common.exception.ServiceException;
import com.zteits.urbanops.framework.common.pojo.PageResult;
@@ -347,6 +348,11 @@ public class AdminUserServiceImpl implements AdminUserService {
return userMapper.selectListByNickname(nickname);
}
+ @Override
+ public List getAllUserList() {
+ return userMapper.selectList();
+ }
+
/**
* 获得部门条件:查询指定部门的子部门编号们,包括自身
*
@@ -464,6 +470,93 @@ public class AdminUserServiceImpl implements AdminUserService {
}
}
+ /**
+ * 检查字符串是否包含中文
+ * @param str 字符串
+ * @return 是否包含中文
+ */
+ private boolean containsChinese(String str) {
+ if (StrUtil.isBlank(str)) {
+ return false;
+ }
+ for (char c : str.toCharArray()) {
+ if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 将中文用户名转换为拼音
+ * @param username 用户名
+ * @return 拼音用户名
+ */
+ private String convertChineseToPinyin(String username) {
+ if (!containsChinese(username)) {
+ return username;
+ }
+ return PinyinUtil.getPinyin(username, "");
+ }
+
+ /**
+ * 处理重复的拼音用户名
+ * @param pinyin 拼音
+ * @param existingUsernames 已存在的用户名集合
+ * @return 处理后的用户名
+ */
+ private String handleDuplicatePinyin(String pinyin, Set existingUsernames) {
+ if (!existingUsernames.contains(pinyin)) {
+ return pinyin;
+ }
+ int count = 1;
+ String newUsername;
+ do {
+ newUsername = pinyin + count;
+ count++;
+ } while (existingUsernames.contains(newUsername));
+ return newUsername;
+ }
+
+ @Override
+ public void updateChineseUsernameToPinyin() {
+ // 获取所有用户
+ List allUsers = userMapper.selectList();
+ if (CollUtil.isEmpty(allUsers)) {
+ return;
+ }
+
+ // 收集已存在的用户名
+ Set existingUsernames = new HashSet<>();
+ for (AdminUserDO user : allUsers) {
+ existingUsernames.add(user.getUsername());
+ }
+
+ // 遍历处理中文用户名
+ for (AdminUserDO user : allUsers) {
+ String username = user.getUsername();
+ if (containsChinese(username)) {
+ // 转换为拼音
+ String pinyin = convertChineseToPinyin(username);
+ // 处理重复
+ String newUsername = handleDuplicatePinyin(pinyin, existingUsernames);
+ // 更新用户名
+ if (!username.equals(newUsername)) {
+ UserSaveReqVO updateReqVO = BeanUtils.toBean(user, UserSaveReqVO.class);
+ updateReqVO.setUsername(newUsername);
+ try {
+ updateUser(updateReqVO);
+ // 更新已存在用户名集合
+ existingUsernames.remove(username);
+ existingUsernames.add(newUsername);
+ } catch (Exception e) {
+ log.error("更新用户名为拼音失败,用户ID: {}, 原用户名: {}, 新用户名: {}",
+ user.getId(), username, newUsername, e);
+ }
+ }
+ }
+ }
+ }
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public UserImportRespVO importUserList(List importUsers, boolean isUpdateSupport) {
diff --git a/urbanops-module-system/src/test/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImplTest.java b/urbanops-module-system/src/test/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImplTest.java
index bf73acd..e45c16e 100644
--- a/urbanops-module-system/src/test/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImplTest.java
+++ b/urbanops-module-system/src/test/java/com/zteits/urbanops/module/system/service/user/AdminUserServiceImplTest.java
@@ -25,6 +25,7 @@ import com.zteits.urbanops.module.system.dal.mysql.user.AdminUserMapper;
import com.zteits.urbanops.module.system.enums.common.SexEnum;
import com.zteits.urbanops.module.system.service.dept.DeptService;
import com.zteits.urbanops.module.system.service.dept.PostService;
+import com.zteits.urbanops.module.system.service.dict.DictDataService;
import com.zteits.urbanops.module.system.service.permission.PermissionService;
import com.zteits.urbanops.module.system.service.tenant.TenantService;
import jakarta.annotation.Resource;
@@ -36,6 +37,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -82,6 +84,8 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
private FileApi fileApi;
@MockitoBean
private ConfigApi configApi;
+ @MockitoBean
+ private DictDataService dictDataService;
@BeforeEach
public void before() {
@@ -427,6 +431,50 @@ public class AdminUserServiceImplTest extends BaseDbUnitTest {
assertEquals(DEPT_NOT_FOUND.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername()));
}
+ @Test
+ public void testUpdateChineseUsernameToPinyin() {
+ // 准备测试数据
+// AdminUserDO user1 = randomAdminUserDO(o -> o.setUsername("张三"));
+// AdminUserDO user2 = randomAdminUserDO(o -> o.setUsername("李四"));
+// AdminUserDO user3 = randomAdminUserDO(o -> o.setUsername("zhangsan")); // 非中文,不应修改
+// AdminUserDO user4 = randomAdminUserDO(o -> o.setUsername("张三")); // 重复中文,应生成 zhangsan1
+// userMapper.insert(user1);
+// userMapper.insert(user2);
+// userMapper.insert(user3);
+// userMapper.insert(user4);
+//
+// // mock 方法
+// DeptDO dept = randomPojo(DeptDO.class, o -> {
+// o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+// });
+// when(deptService.getDept(any())).thenReturn(dept);
+// List posts = newArrayList(randomPojo(PostDO.class, o -> {
+// o.setId(1L);
+// o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+// }));
+// when(postService.getPostList(any(), isNull())).thenReturn(posts);
+//
+ // 调用方法
+ userService.updateChineseUsernameToPinyin();
+
+// // 验证结果
+// List updatedUsers = userService.getAllUserList();
+// for (AdminUserDO user : updatedUsers) {
+// String username = user.getUsername();
+// if (user.getId().equals(user1.getId())) {
+// assertEquals("zhangsan", username);
+// } else if (user.getId().equals(user2.getId())) {
+// assertEquals("lisi", username);
+// } else if (user.getId().equals(user3.getId())) {
+// assertEquals("zhangsan", username); // 非中文,保持不变
+// } else if (user.getId().equals(user4.getId())) {
+// assertEquals("zhangsan1", username); // 重复中文,加数字
+// }
+// }
+ }
+
+
+
/**
* 情况二,不存在,进行插入
*/
diff --git a/urbanops-server/src/main/resources/application-local.yaml b/urbanops-server/src/main/resources/application-local.yaml
index ec3dc5c..ff41af5 100644
--- a/urbanops-server/src/main/resources/application-local.yaml
+++ b/urbanops-server/src/main/resources/application-local.yaml
@@ -1,12 +1,12 @@
server:
- port: 48080
+ port: 48081
--- #################### 数据库相关配置 ####################
+
spring:
autoconfigure:
# noinspection SpringBootApplicationYaml
exclude:
- - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
- org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
- org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
# 数据源配置项
@@ -31,8 +31,8 @@ spring:
multi-statement-allow: true
dynamic: # 多数据源配置
druid: # Druid 【连接池】相关的全局配置
- initial-size: 1 # 初始连接数
- min-idle: 1 # 最小连接池数量
+ initial-size: 5 # 初始连接数
+ min-idle: 10 # 最小连接池数量
max-active: 20 # 最大连接池数量
max-wait: 60000 # 配置获取连接等待超时的时间,单位:毫秒(1 分钟)
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒(1 分钟)
@@ -47,49 +47,35 @@ spring:
primary: master
datasource:
master:
- url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
- # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例
- # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例
- # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
- # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ruoyi-vue-pro;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true;useUnicode=true;characterEncoding=utf-8 # SQLServer 连接的示例
- # url: jdbc:dm://127.0.0.1:5236?schema=RUOYI_VUE_PRO # DM 连接的示例
- # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例
- # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例
+ url: jdbc:mysql://172.17.16.15:3306/urban_ops_agent?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
- password: 123456
- # username: sa # SQL Server 连接的示例
- # password: Urbanops@2024 # SQL Server 连接的示例
- # username: SYSDBA # DM 连接的示例
- # password: SYSDBA001 # DM 连接的示例
- # username: root # OpenGauss 连接的示例
- # password: Urbanops@2024 # OpenGauss 连接的示例
- slave: # 模拟从库,可根据自己需要修改
+ password: mysql2025!
+ slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
- url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+ url: jdbc:mysql://172.17.16.15:3306/urban_ops_agent?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
- password: 123456
-# tdengine: # IoT 数据库(需要 IoT 物联网再开启噢!)
-# url: jdbc:TAOS-RS://127.0.0.1:6041/ruoyi_vue_pro
-# driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
-# username: root
-# password: taosdata
-# druid:
-# validation-query: SELECT SERVER_STATUS() # TDengine 数据源的有效性检查 SQL
+ password: mysql2025!
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data:
redis:
- host: 127.0.0.1 # 地址
- port: 6379 # 端口
- database: 0 # 数据库索引
-# password: dev # 密码,建议生产环境开启
+ # 哨兵模式配置
+ sentinel:
+ master: mymaster # 主节点名称(需与哨兵配置一致)
+ nodes: 172.17.16.22:26379,172.17.16.23:26379,172.17.16.24:26379 # 哨兵节点列表
+ database: 10 # 数据库索引
+ password: redis2025! # 密码(主从节点的密码,需与哨兵配置一致)
+ # 无需单独指定 port(哨兵会自动发现主节点端口)
+
+ # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+# password: 123456 # 密码,建议生产环境开启
--- #################### 定时任务相关配置 ####################
# Quartz 配置项,对应 QuartzProperties 配置类
spring:
quartz:
- auto-startup: true # 本地开发环境,尽量不要开启 Job
+ auto-startup: true # 测试环境,需要开启 Job
scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName
job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。
wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true
@@ -126,8 +112,8 @@ spring:
rabbitmq:
host: 127.0.0.1 # RabbitMQ 服务的地址
port: 5672 # RabbitMQ 服务的端口
- username: rabbit # RabbitMQ 服务的账号
- password: rabbit # RabbitMQ 服务的密码
+ username: guest # RabbitMQ 服务的账号
+ password: guest # RabbitMQ 服务的密码
# Kafka 配置项,对应 KafkaProperties 配置类
kafka:
bootstrap-servers: 127.0.0.1:9092 # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
@@ -165,41 +151,13 @@ spring:
logging:
file:
name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
- level:
- # 配置自己写的 MyBatis Mapper 打印日志
- com.zteits.urbanops.module.bpm.dal.mysql: debug
- com.zteits.urbanops.module.infra.dal.mysql: debug
- com.zteits.urbanops.module.infra.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
- com.zteits.urbanops.module.infra.dal.mysql.job.JobLogMapper: INFO # 配置 JobLogMapper 的日志级别为 info
- com.zteits.urbanops.module.infra.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
- com.zteits.urbanops.module.pay.dal.mysql: debug
- com.zteits.urbanops.module.pay.dal.mysql.notify.PayNotifyTaskMapper: INFO # 配置 PayNotifyTaskMapper 的日志级别为 info
- com.zteits.urbanops.module.system.dal.mysql: debug
- com.zteits.urbanops.module.system.dal.mysql.sms.SmsChannelMapper: INFO # 配置 SmsChannelMapper 的日志级别为 info
- com.zteits.urbanops.module.tool.dal.mysql: debug
- com.zteits.urbanops.module.member.dal.mysql: debug
- com.zteits.urbanops.module.trade.dal.mysql: debug
- com.zteits.urbanops.module.promotion.dal.mysql: debug
- com.zteits.urbanops.module.statistics.dal.mysql: debug
- com.zteits.urbanops.module.crm.dal.mysql: debug
- com.zteits.urbanops.module.erp.dal.mysql: debug
- com.zteits.urbanops.module.iot.dal.mysql: debug
- com.zteits.urbanops.module.iot.dal.tdengine: DEBUG
- com.zteits.urbanops.module.iot.service.rule: debug
- com.zteits.urbanops.module.ai.dal.mysql: debug
- org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
-debug: false
-
---- #################### 微信公众号、小程序相关配置 ####################
-wx:
- mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
-# app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
-# secret: 5abee519483bc9f8cb37ce280e814bd0
-# app-id: wx5b23ba7a5589ecbb # 测试号(自己的)
-# secret: 2a7b3b20c537e52e74afd395eb85f61f
- app-id: wxf56b1542b9e85f8a # 测试号(Kongdy 提供的)
- secret: 496379dcef1ba869e9234de8d598cfd3
+--- #################### 微信公众号相关配置 ####################
+wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+ mp:
+ # 公众号配置(必填)
+ app-id: wx041349c6f39b268b
+ secret: 5abee519483bc9f8cb37ce280e814bd0
# 存储配置,解决 AccessToken 的跨节点的共享
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
@@ -208,12 +166,12 @@ wx:
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
# secret: 333ae72f41552af1e998fe1f54e1584a
-# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
-# secret: 6f270509224a7ae1296bbf1c8cb97aed
+ # appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
+ # secret: 6f270509224a7ae1296bbf1c8cb97aed
appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
secret: 4a1a04e07f6a4a0751b39c3064a92c8b
-# appid: wx66186af0759f47c9 # 测试号(puhui 提供的)
-# secret: 3218bcbd112cbc614c7264ceb20144ac
+ # appid: wx66186af0759f47c9 # 测试号(puhui 提供的)
+ # secret: 3218bcbd112cbc614c7264ceb20144ac
config-storage:
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
key-prefix: wa # Redis Key 的前缀
@@ -223,21 +181,11 @@ wx:
# 全域配置项,设置当前项目所有自定义的配置
urbanops:
- captcha:
- enable: false # 本地环境,暂时关闭图片验证码,方便登录等接口的测试;
- security:
- mock-enable: true
pay:
- order-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/order # 支付渠道的【支付】回调地址
- refund-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址
- transfer-notify-url: https://yutou.mynatapp.cc/admin-api/pay/notify/transfer # 支付渠道的【转账】回调地址
- access-log: # 访问日志的配置项
- enable: false
- demo: false # 关闭演示模式
- wxa-code:
- env-version: develop # 小程序版本: 正式版为 "release";体验版为 "trial";开发版为 "develop"
- wxa-subscribe-message:
- miniprogram-state: developer # 跳转小程序类型:开发版为 “developer”;体验版为 “trial”为;正式版为 “formal”
+ order-notify-url: http://yunai.natapp1.cc/admin-api/pay/notify/order # 支付渠道的【支付】回调地址
+ refund-notify-url: http://yunai.natapp1.cc/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址
+ transfer-notify-url: https://yunai.natapp1.cc/admin-api/pay/notify/transfer # 支付渠道的【转账】回调地址
+ demo: false # 开启演示模式
tencent-lbs-key: TVDBZ-TDILD-4ON4B-PFDZA-RNLKH-VVF6E # QQ 地图的密钥 https://lbs.qq.com/service/staticV2/staticGuide/staticDoc
justauth:
@@ -266,3 +214,71 @@ justauth:
type: REDIS
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
+
+--- #################### iot相关配置 TODO 芋艿【IOT】:再瞅瞅 ####################
+pf4j:
+ # pluginsDir: /tmp/
+ pluginsDir: ../plugins
+
+
+#文件上传默认路径配置
+file:
+ path: uploadPath
+flow:
+ apps:
+ - appid: yl
+ secret: l6l6x8c7a4g9u0x8d6v3z1y2a2k2i7x7
+ url: https://yuanlin.jichengshanshui.com.cn:8987/ylapi/yuanl/quanyu/work/add
+ - appid: sz
+ secret: v4e1f2z0p7i4k1c5m9k0g0v8f0t7e9z9
+ url: http://municipal.renniting.cn/prod-api/business/curingcase/issue
+ - appid: wy
+ secret: x3z7t6l2g2t2i4w3x5e2e0s5y9e6d1y3
+ url: https://pms.jichengshanshui.com.cn:9980/prod-api/task/third/report
+sso:
+ client:
+ switchState: on
+ clientId: schoms
+ clientSecret: FVwUBd3ZCrt6mMrZ
+ # 前端授权地址
+ authorizeUrl: https://giomp.jichengshanshui.com.cn:28205/authorize
+ # sso 服务地址
+ baseUrl: https://uaa.jichengshanshui.com.cn:28201
+ # 登录成功后跳转地址
+ redirectUri: https://giomp.jichengshanshui.com.cn:28205/prod-api/admin-api/sso/callback
+# 微信公众号配置
+wechat:
+ mp:
+ appId: wxff29223ae4910585
+ appSecret: b8e256899568a5f735f995836d79469b
+ # callback: https://jcss-api.smart-ideas.com.cn/wechat/authorizeCallBack
+ callback: http://125.35.93.94:9980/prod-api/wechat/authorizeCallBack
+ authUrl: https://open.weixin.qq.com/connect/oauth2/authorize
+ tokenUrl: https://api.weixin.qq.com/sns/oauth2/access_token
+ mini:
+ appId: wx64368a9b9e799172
+ appSecret: 1f959fa2a084c108fb2bfd774c101672
+ authUrl: https://api.weixin.qq.com/sns/jscode2session
+ message:
+ tokenUrl: https://api.weixin.qq.com/cgi-bin/stable_token
+ sendUrl: https://api.weixin.qq.com/cgi-bin/message/template/send
+siot:
+ roadUrl: https://iot.jichengshanshui.com.cn:28202/prod-api/fence/fenceInfo/getFenceRoadListByLocation
+
+# 高德地图配置
+amap:
+ enabled: true
+ api-key: 0e4d1f697425ac1e143bfc85c6c19602
+ geocode-url: https://restapi.amap.com/v3/geocode/regeo
+ timeout: 5000
+ # 数字签名配置 - 请根据实际情况配置
+ enable-signature: true # 启用数字签名
+ private-key: b2bae35d223a9fc0704f8ad24b2595b4
+
+
+# 静态资源服务器地址
+static:
+ resource:
+ server:
+ enable: true
+ url: https://test.jichengshanshui.com.cn:28302/downloads/