From 65c290c9737a0ddae441ce8dc01f53081d59c275 Mon Sep 17 00:00:00 2001 From: Fdily <2949549024@qq.com> Date: Tue, 14 Jul 2026 19:38:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4roll=E6=97=A5=E5=88=9B?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- odcs2.com/src/main.js | 2 +- odcs2.com/src/views/Home/common/knapsack.vue | 4 +- .../src/views/rollHome/common/rolldetial.vue | 6 +- odcs2.com/src/views/rollHome/index.vue | 2 +- .../framework/config/ResourcesConfig.java | 4 + .../framework/config/SecurityConfig.java | 2 +- .../admin/service/impl/TtUserServiceImpl.java | 2 +- .../com/ruoyi/admin/util/RandomUtils.java | 74 +++++++++++++++++++ 8 files changed, 87 insertions(+), 9 deletions(-) diff --git a/odcs2.com/src/main.js b/odcs2.com/src/main.js index 628647d..792d4f2 100644 --- a/odcs2.com/src/main.js +++ b/odcs2.com/src/main.js @@ -45,7 +45,7 @@ Router.prototype.push = function push(location) { }; Vue.filter('fullPath', (path) => { if (typeof path === 'string' && path.trim()) { - const baseUrl = 'http://43.199.63.175:8081'; + const baseUrl = 'http://156.238.240.18:8081'; // 检查 path 是否以 http 或者 https 开头 if (/^(http|https):\/\//i.test(path)) { return path.trim(); diff --git a/odcs2.com/src/views/Home/common/knapsack.vue b/odcs2.com/src/views/Home/common/knapsack.vue index 98b49a1..9b6517b 100644 --- a/odcs2.com/src/views/Home/common/knapsack.vue +++ b/odcs2.com/src/views/Home/common/knapsack.vue @@ -150,7 +150,7 @@ export default { loginAvatar() { const avatar = this.USER_INFO && this.USER_INFO.avatar; if (!avatar || !avatar.trim()) return this.defaultAvatar; - const baseUrl = 'http://43.199.63.175:8081'; + const baseUrl = 'http://156.238.240.18:8081'; const oldHost = 'http://154.12.94.229:8080'; const trimmed = avatar.trim(); if (trimmed.startsWith(oldHost)) return baseUrl + trimmed.slice(oldHost.length); @@ -201,7 +201,7 @@ export default { if (!imgUrl) return ''; const url = imgUrl.trim(); if (/^(http|https):\/\//i.test(url)) return url; - return 'http://43.199.63.175:8081' + url; + return 'http://156.238.240.18:8081' + url; }, playAudio() { this.$store.commit("playAudio"); diff --git a/odcs2.com/src/views/rollHome/common/rolldetial.vue b/odcs2.com/src/views/rollHome/common/rolldetial.vue index 2b54bd7..17ec395 100644 --- a/odcs2.com/src/views/rollHome/common/rolldetial.vue +++ b/odcs2.com/src/views/rollHome/common/rolldetial.vue @@ -197,7 +197,7 @@ export default { loginAvatar() { const avatar = this.USER_INFO && this.USER_INFO.avatar; if (!avatar || !avatar.trim()) return this.defaultAvatar; - const baseUrl = 'http://43.199.63.175:8081'; + const baseUrl = 'http://156.238.240.18:8081'; const oldHost = 'http://154.12.94.229:8080'; const trimmed = avatar.trim(); if (trimmed.startsWith(oldHost)) return baseUrl + trimmed.slice(oldHost.length); @@ -448,7 +448,7 @@ export default { }, getAvatar(avatar) { if (!avatar || !avatar.trim()) return this.defaultAvatar; - const baseUrl = 'http://43.199.63.175:8081'; + const baseUrl = 'http://156.238.240.18:8081'; const oldHost = 'http://154.12.94.229:8080'; const trimmed = avatar.trim(); if (trimmed.startsWith(oldHost)) return baseUrl + trimmed.slice(oldHost.length); @@ -461,7 +461,7 @@ export default { if (!imgUrl) return ''; const url = imgUrl.trim(); if (/^(http|https):\/\//i.test(url)) return url; - return 'http://43.199.63.175:8081' + url; + return 'http://156.238.240.18:8081' + url; }, }, }; diff --git a/odcs2.com/src/views/rollHome/index.vue b/odcs2.com/src/views/rollHome/index.vue index cdc7492..5b6765e 100644 --- a/odcs2.com/src/views/rollHome/index.vue +++ b/odcs2.com/src/views/rollHome/index.vue @@ -145,7 +145,7 @@ export default { loginAvatar() { const avatar = this.USER_INFO && this.USER_INFO.avatar; if (!avatar || !avatar.trim()) return this.defaultAvatar; - const baseUrl = 'http://43.199.63.175:8081'; + const baseUrl = 'http://156.238.240.18:8081'; const oldHost = 'http://154.12.94.229:8080'; const trimmed = avatar.trim(); if (trimmed.startsWith(oldHost)) return baseUrl + trimmed.slice(oldHost.length); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java index 6182916..4813870 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java @@ -39,6 +39,10 @@ public class ResourcesConfig implements WebMvcConfigurer registry.addResourceHandler("/upload/**") .addResourceLocations("file:" + RuoYiConfig.getProfile() + "/upload/"); + /** 头像静态资源路径 */ + registry.addResourceHandler("/avater/**") + .addResourceLocations("file:/www/static/avater/"); + /** swagger配置 */ registry.addResourceHandler("/swagger-ui/**") .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/") diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 7169d19..7e3d1a2 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -87,7 +87,7 @@ public class SecurityConfig { auth.requestMatchers("/login", "/register", "/captchaImage").permitAll() // 静态资源 .requestMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", - "/**/*.css", "/**/*.js", "/profile/**", "/uploads/**", "/upload/**").permitAll() + "/**/*.css", "/**/*.js", "/profile/**", "/uploads/**", "/upload/**", "/avater/**").permitAll() // Swagger & Druid .requestMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() // 业务接口 diff --git a/skins-service/service-admin/src/main/java/com/ruoyi/admin/service/impl/TtUserServiceImpl.java b/skins-service/service-admin/src/main/java/com/ruoyi/admin/service/impl/TtUserServiceImpl.java index d22a31f..d7f88dc 100644 --- a/skins-service/service-admin/src/main/java/com/ruoyi/admin/service/impl/TtUserServiceImpl.java +++ b/skins-service/service-admin/src/main/java/com/ruoyi/admin/service/impl/TtUserServiceImpl.java @@ -386,7 +386,7 @@ public class TtUserServiceImpl extends ServiceImpl impleme List userList = new ArrayList<>(); for (int i = 0; i < num; i++) { String phoneNumber = getRandomPhoneNumber(); - String nickName = RandomUtils.getRandomMixedName(new Random().nextInt(2)); + String nickName = RandomUtils.getRandomNetName(); String password = RandomUtil.randomString(10); String invitationCode = getInvitationCode(); TtUser ttUser = TtUser.builder().build(); diff --git a/skins-service/service-admin/src/main/java/com/ruoyi/admin/util/RandomUtils.java b/skins-service/service-admin/src/main/java/com/ruoyi/admin/util/RandomUtils.java index 84f92b2..8775cf8 100644 --- a/skins-service/service-admin/src/main/java/com/ruoyi/admin/util/RandomUtils.java +++ b/skins-service/service-admin/src/main/java/com/ruoyi/admin/util/RandomUtils.java @@ -88,6 +88,80 @@ public class RandomUtils { } } + // 网名词库——意境前缀词(可与后缀词或名词组合) + private static final String[] NET_NAME_PREFIX = { + "清风", "烟雨", "陌上", "半夏", "浅唱", "微凉", "时光", "旧梦", "南巷", "北岛", + "青柠", "暖阳", "薄荷", "深海", "孤城", "初见", "故人", "流年", "听风", "看海", + "望月", "踏雪", "临风", "揽月", "拾光", "倾城", "繁华", "落花", "飞雪", "听雨", + "拂晓", "黄昏", "星河", "云端", "醉梦", "寻香", "森屿", "橘子", "柠檬", "樱花" + }; + + // 网名词库——意境后缀词 + private static final String[] NET_NAME_SUFFIX = { + "徐来", "花开", "微凉", "易碎", "如初", "未央", "成殇", "如故", "倾城", "难忘", + "向暖", "微光", "暖阳", "成诗", "入梦", "听雨", "观海", "望月", "忘忧", "无痕", + "留香", "寻梦", "逐月", "伴云", "听风", "化蝶", "成风", "如雪", "知返", "初雪", + "未晚", "南栀", "北辰", "浅忆", "不归", "旧梦" + }; + + // 网名词库——修饰词 + private static final String[] NET_NAME_ADJ = { + "孤独", "安静", "温柔", "冷漠", "可爱", "霸道", "忧伤", "快乐", "迷人", "神秘", + "傲娇", "呆萌", "慵懒", "优雅", "洒脱", "深情", "清冷", "明媚", "乖巧", "桀骜", + "疏离", "恬静", "率性", "孤傲", "高冷", "软萌", "元气", "佛系" + }; + + // 网名词库——名词 + private static final String[] NET_NAME_NOUN = { + "少年", "姑娘", "旅人", "小猫", "小狼", "蔷薇", "玫瑰", "月光", "星辰", "江南", + "女子", "先生", "公子", "佳人", "行者", "歌者", "诗人", "剑客", "浪子", "书生", + "猫咪", "橘猫", "仙人", "过客", "看客", "路人", "画师", "少女" + }; + + // 网名末尾装饰符号 + private static final String[] NET_NAME_DECOR = {"丶", "°", "、", "^", "~"}; + + /** + * 生成随机网名(网络昵称风格) + * 通过意境词、修饰词、名词等多种模式随机组合,并小概率追加符号/数字后缀,贴近真实网络昵称 + * + * @return 随机网名 + */ + public static String getRandomNetName() { + Random random = new Random(); + String name; + switch (random.nextInt(4)) { + case 0: + // 意境前缀 + 意境后缀,如"清风徐来" + name = NET_NAME_PREFIX[random.nextInt(NET_NAME_PREFIX.length)] + + NET_NAME_SUFFIX[random.nextInt(NET_NAME_SUFFIX.length)]; + break; + case 1: + // 修饰词 + 的 + 名词,如"孤独的旅人" + name = NET_NAME_ADJ[random.nextInt(NET_NAME_ADJ.length)] + "的" + + NET_NAME_NOUN[random.nextInt(NET_NAME_NOUN.length)]; + break; + case 2: + // 修饰词 + 名词,如"清冷少年" + name = NET_NAME_ADJ[random.nextInt(NET_NAME_ADJ.length)] + + NET_NAME_NOUN[random.nextInt(NET_NAME_NOUN.length)]; + break; + default: + // 意境前缀 + 名词,如"烟雨江南" + name = NET_NAME_PREFIX[random.nextInt(NET_NAME_PREFIX.length)] + + NET_NAME_NOUN[random.nextInt(NET_NAME_NOUN.length)]; + break; + } + // 约 40% 概率追加装饰符号或数字后缀,更贴近真实网名 + int decorType = random.nextInt(5); + if (decorType == 0) { + name += NET_NAME_DECOR[random.nextInt(NET_NAME_DECOR.length)]; + } else if (decorType == 1) { + name += random.nextInt(100); + } + return name; + } + private static String getRandomName(String name) { int bodNameIndexOne = randomInt(name.length()); int bodNameIndexTwo = randomInt(name.length());