From 13eb154424469b42f6462fad678c2c86c9b50c66 Mon Sep 17 00:00:00 2001 From: 18631081161 <2088094923@qq.com> Date: Thu, 26 Feb 2026 19:25:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?id=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniapp/pages/index/index.vue | 109 +++++++++++---------- server/src/XiangYi.AppApi/appsettings.json | 8 +- 2 files changed, 59 insertions(+), 58 deletions(-) diff --git a/miniapp/pages/index/index.vue b/miniapp/pages/index/index.vue index 1fb8a68..040488c 100644 --- a/miniapp/pages/index/index.vue +++ b/miniapp/pages/index/index.vue @@ -1241,60 +1241,6 @@ export default { right: 0; bottom: 0; z-index: 99; - - .member-ad-bar { - position: relative; - display: flex; - align-items: center; - justify-content: center; - min-height: 110rpx; - padding: 0 24rpx; - - .ad-content { - display: flex; - align-items: center; - flex: 1; - - .ad-icon { - font-size: 32rpx; - margin-right: 12rpx; - } - - .ad-text { - font-size: 26rpx; - color: #333; - font-weight: 500; - } - } - - .ad-btn { - background: #fff; - color: #ff6b6b; - font-size: 24rpx; - padding: 12rpx 24rpx; - border-radius: 30rpx; - margin-right: 16rpx; - font-weight: 500; - } - - .ad-close { - position: absolute; - right: 16rpx; - top: 50%; - transform: translateY(-50%); - width: 44rpx; - height: 44rpx; - display: flex; - align-items: center; - justify-content: center; - - text { - font-size: 36rpx; - color: #666; - line-height: 1; - } - } - } } /* ==================== 订阅消息提醒条 ==================== */ @@ -1306,4 +1252,59 @@ export default { bottom: 0; z-index: 98; } + +/* 广告条/提醒条公共样式 */ +.member-ad-bar { + position: relative; + display: flex; + align-items: center; + justify-content: center; + min-height: 110rpx; + padding: 0 24rpx; + + .ad-content { + display: flex; + align-items: center; + flex: 1; + + .ad-icon { + font-size: 32rpx; + margin-right: 12rpx; + } + + .ad-text { + font-size: 26rpx; + color: #333; + font-weight: 500; + } + } + + .ad-btn { + background: #fff; + color: #ff6b6b; + font-size: 24rpx; + padding: 12rpx 24rpx; + border-radius: 30rpx; + margin-right: 16rpx; + font-weight: 500; + } + + .ad-close { + position: absolute; + right: 16rpx; + top: 50%; + transform: translateY(-50%); + width: 44rpx; + height: 44rpx; + display: flex; + align-items: center; + justify-content: center; + + text { + font-size: 36rpx; + color: #666; + line-height: 1; + } + } +} diff --git a/server/src/XiangYi.AppApi/appsettings.json b/server/src/XiangYi.AppApi/appsettings.json index df6ca4b..3d17d88 100644 --- a/server/src/XiangYi.AppApi/appsettings.json +++ b/server/src/XiangYi.AppApi/appsettings.json @@ -42,10 +42,10 @@ "GhId": "gh_f57692c34c0e", "AppId": "wxa2f42b01be34b37b", "AppSecret": "b8cc3abd81a7cbf32ded28f92ba61627", - "UnlockTemplateId": "dQdK2i7ZDkDGQ2Knifv82rDx9HCzR1aE71YmR8JjwBc", - "FavoriteTemplateId": "dQdK2i7ZDkDGQ2Knifv82rDx9HCzR1aE71YmR8JjwBc", - "MessageTemplateId": "dQdK2i7ZDkDGQ2Knifv82rDx9HCzR1aE71YmR8JjwBc", - "DailyRecommendTemplateId": "dQdK2i7ZDkDGQ2Knifv82rDx9HCzR1aE71YmR8JjwBc", + "UnlockTemplateId": "1WwIIY4NoPWE972HfSgjmqcjmq59ihFfrUsuqlFGMzk", + "FavoriteTemplateId": "1WwIIY4NoPWE972HfSgjmqcjmq59ihFfrUsuqlFGMzk", + "MessageTemplateId": "1WwIIY4NoPWE972HfSgjmqcjmq59ihFfrUsuqlFGMzk", + "DailyRecommendTemplateId": "1WwIIY4NoPWE972HfSgjmqcjmq59ihFfrUsuqlFGMzk", "FollowArticleUrl": "" }, "SubscribeMessage": { From bcad055b3b1b86ef612c2194a18c7f56e3b92777 Mon Sep 17 00:00:00 2001 From: 18631081161 <2088094923@qq.com> Date: Sat, 28 Feb 2026 03:49:11 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/config.ts | 14 ++ admin/src/views/system/config.vue | 44 ++++- miniapp/config/index.js | 2 +- miniapp/pages/index/index.vue | 57 +++++- miniapp/pages/profile/edit.vue | 14 +- miniapp/pages/realname/index.vue | 179 ++++++------------ miniapp/store/config.js | 3 + .../Controllers/AdminConfigController.cs | 50 +++++ .../Interfaces/IConfigService.cs | 5 + .../Interfaces/ISystemConfigService.cs | 10 + .../Services/AdminUserService.cs | 2 +- .../Services/AuthService.cs | 2 +- .../Services/ConfigService.cs | 2 + .../Services/RealNameService.cs | 8 +- .../Services/RecommendService.cs | 159 ++++++++++++++-- .../Services/SystemConfigService.cs | 17 ++ server/src/XiangYi.Core/Entities/Biz/User.cs | 4 +- .../Services/RecommendServicePropertyTests.cs | 33 ++-- 18 files changed, 437 insertions(+), 168 deletions(-) diff --git a/admin/src/api/config.ts b/admin/src/api/config.ts index 8c67251..32c598c 100644 --- a/admin/src/api/config.ts +++ b/admin/src/api/config.ts @@ -77,6 +77,20 @@ export function setSearchBanner(imageUrl: string) { return request.post('/admin/config/searchBanner', { imageUrl }) } +/** + * 获取实名认证页Banner + */ +export function getRealNameBanner() { + return request.get('/admin/config/realNameBanner') +} + +/** + * 设置实名认证页Banner + */ +export function setRealNameBanner(imageUrl: string) { + return request.post('/admin/config/realNameBanner', { imageUrl }) +} + /** * 获取管家二维码 */ diff --git a/admin/src/views/system/config.vue b/admin/src/views/system/config.vue index 8a8b6ee..621e304 100644 --- a/admin/src/views/system/config.vue +++ b/admin/src/views/system/config.vue @@ -57,6 +57,29 @@ + + + + +
@@ -274,6 +297,8 @@ import { setPrivacyPolicy, getSearchBanner, setSearchBanner, + getRealNameBanner, + setRealNameBanner, getButlerQrcode, setButlerQrcode, getMemberIcons, @@ -294,6 +319,7 @@ const activeTab = ref('basic') const configForm = ref({ defaultAvatar: '', searchBanner: '', + realNameBanner: '', butlerQrcode: '', unlimitedMemberIcon: '', sincereMemberIcon: '', @@ -326,9 +352,10 @@ const getFullUrl = (url) => { const loadConfig = async () => { try { - const [avatarRes, bannerRes, qrcodeRes, memberIconsRes, memberEntryRes, realNamePriceRes] = await Promise.all([ + const [avatarRes, bannerRes, realNameBannerRes, qrcodeRes, memberIconsRes, memberEntryRes, realNamePriceRes] = await Promise.all([ getDefaultAvatar(), getSearchBanner(), + getRealNameBanner(), getButlerQrcode(), getMemberIcons(), getMemberEntryImage(), @@ -340,6 +367,9 @@ const loadConfig = async () => { if (bannerRes) { configForm.value.searchBanner = bannerRes.imageUrl || '' } + if (realNameBannerRes) { + configForm.value.realNameBanner = realNameBannerRes.imageUrl || '' + } if (qrcodeRes) { configForm.value.butlerQrcode = qrcodeRes.imageUrl || '' } @@ -397,6 +427,15 @@ const handleBannerSuccess = (response) => { } } +const handleRealNameBannerSuccess = (response) => { + if (response.code === 0 && response.data) { + configForm.value.realNameBanner = response.data.url + ElMessage.success('上传成功') + } else { + ElMessage.error(response.message || '上传失败') + } +} + const handleQrcodeSuccess = (response) => { if (response.code === 0 && response.data) { configForm.value.butlerQrcode = response.data.url @@ -476,6 +515,9 @@ const saveBasicConfig = async () => { if (configForm.value.searchBanner) { promises.push(setSearchBanner(configForm.value.searchBanner)) } + if (configForm.value.realNameBanner) { + promises.push(setRealNameBanner(configForm.value.realNameBanner)) + } if (configForm.value.butlerQrcode) { promises.push(setButlerQrcode(configForm.value.butlerQrcode)) } diff --git a/miniapp/config/index.js b/miniapp/config/index.js index 6bdbd8d..7794e45 100644 --- a/miniapp/config/index.js +++ b/miniapp/config/index.js @@ -23,7 +23,7 @@ const ENV = { } // 当前环境 - 开发时使用 development,打包时改为 production -const CURRENT_ENV = 'production' +const CURRENT_ENV = 'development' // 导出配置 export const config = { diff --git a/miniapp/pages/index/index.vue b/miniapp/pages/index/index.vue index 040488c..371427b 100644 --- a/miniapp/pages/index/index.vue +++ b/miniapp/pages/index/index.vue @@ -75,6 +75,13 @@ + + + + 相宜相亲 + + + - +