From 4dcb830b93e96438416dbc326b68c4923e08b1d4 Mon Sep 17 00:00:00 2001
From: 18631081161 <2088094923@qq.com>
Date: Sun, 25 Jan 2026 03:18:04 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=86=E8=8A=82=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/api/config.ts | 14 +++++
admin/src/views/content/kingkong.vue | 15 +++--
admin/src/views/system/config.vue | 50 +++++++++++++--
admin/src/views/user/detail.vue | 30 +--------
miniapp/components/Popup/index.vue | 33 +++++++++-
miniapp/components/UserCard/index.vue | 6 +-
miniapp/config/index.js | 2 +-
miniapp/pages/index/index.vue | 6 ++
miniapp/pages/mine/index.vue | 61 +++++++++++++++----
miniapp/pages/profile/edit.vue | 24 ++++----
miniapp/store/config.js | 9 ++-
miniapp/store/user.js | 28 +++++++++
.../Controllers/AdminConfigController.cs | 50 +++++++++++++++
.../Interfaces/IConfigService.cs | 5 ++
.../Interfaces/ISystemConfigService.cs | 10 +++
.../Services/AdminAccountService.cs | 6 +-
.../Services/AdminMemberService.cs | 6 +-
.../Services/AdminOrderService.cs | 6 +-
.../Services/AdminProfileAuditService.cs | 6 +-
.../Services/AdminReportService.cs | 6 +-
.../Services/AdminUserService.cs | 8 +--
.../Services/ConfigService.cs | 4 +-
.../Services/OrderService.cs | 39 +++++-------
.../Services/SystemConfigService.cs | 17 ++++++
24 files changed, 314 insertions(+), 127 deletions(-)
diff --git a/admin/src/api/config.ts b/admin/src/api/config.ts
index 2396c20..5d65873 100644
--- a/admin/src/api/config.ts
+++ b/admin/src/api/config.ts
@@ -127,3 +127,17 @@ export function getMemberIcons() {
export function setMemberIcons(icons: MemberIconsConfig) {
return request.post('/admin/config/memberIcons', icons)
}
+
+/**
+ * 获取会员入口图
+ */
+export function getMemberEntryImage() {
+ return request.get('/admin/config/memberEntryImage')
+}
+
+/**
+ * 设置会员入口图
+ */
+export function setMemberEntryImage(imageUrl: string) {
+ return request.post('/admin/config/memberEntryImage', { imageUrl })
+}
diff --git a/admin/src/views/content/kingkong.vue b/admin/src/views/content/kingkong.vue
index 2ffc82d..5df5f96 100644
--- a/admin/src/views/content/kingkong.vue
+++ b/admin/src/views/content/kingkong.vue
@@ -56,12 +56,15 @@ const internalPageOptions = [
{ label: '会员中心', value: '/pages/member/index' },
{ label: '填写资料', value: '/pages/profile/edit' },
{ label: '实名认证', value: '/pages/realname/index' },
- { label: '我的收藏', value: '/pages/favorite/index' },
- { label: '浏览记录', value: '/pages/history/index' },
- { label: '设置页面', value: '/pages/settings/index' },
- { label: '关于我们', value: '/pages/about/index' },
- { label: '用户协议', value: '/pages/agreement/user' },
- { label: '隐私政策', value: '/pages/agreement/privacy' }
+ { label: '看过我', value: '/pages/interact/viewedMe' },
+ { label: '收藏我', value: '/pages/interact/favoritedMe' },
+ { label: '解锁我', value: '/pages/interact/unlockedMe' },
+ { label: '我看过的', value: '/pages/interact/myViewed' },
+ { label: '我收藏的', value: '/pages/interact/myFavorite' },
+ { label: '我解锁的', value: '/pages/interact/myUnlocked' },
+ { label: '联系我们', value: '/pages/butler/index' },
+ { label: '用户协议', value: '/pages/agreement/index?type=user' },
+ { label: '隐私政策', value: '/pages/agreement/index?type=privacy' }
]
// 链接类型提示
diff --git a/admin/src/views/system/config.vue b/admin/src/views/system/config.vue
index ee302b0..2cf6776 100644
--- a/admin/src/views/system/config.vue
+++ b/admin/src/views/system/config.vue
@@ -147,6 +147,29 @@
+
+
+
+
+
+
+
+
+
建议尺寸:686x120像素
+
支持格式:JPG、PNG
+
小程序"我的"页面会员入口横幅图片
+
+
+
+
保存配置
@@ -213,7 +236,9 @@ import {
getButlerQrcode,
setButlerQrcode,
getMemberIcons,
- setMemberIcons
+ setMemberIcons,
+ getMemberEntryImage,
+ setMemberEntryImage
} from '@/api/config'
import { useUserStore } from '@/stores/user'
@@ -229,7 +254,8 @@ const configForm = ref({
butlerQrcode: '',
unlimitedMemberIcon: '',
sincereMemberIcon: '',
- familyMemberIcon: ''
+ familyMemberIcon: '',
+ memberEntryImage: ''
})
const agreementForm = ref({
@@ -255,11 +281,12 @@ const getFullUrl = (url) => {
const loadConfig = async () => {
try {
- const [avatarRes, bannerRes, qrcodeRes, memberIconsRes] = await Promise.all([
+ const [avatarRes, bannerRes, qrcodeRes, memberIconsRes, memberEntryRes] = await Promise.all([
getDefaultAvatar(),
getSearchBanner(),
getButlerQrcode(),
- getMemberIcons()
+ getMemberIcons(),
+ getMemberEntryImage()
])
if (avatarRes) {
configForm.value.defaultAvatar = avatarRes.avatarUrl || ''
@@ -275,6 +302,9 @@ const loadConfig = async () => {
configForm.value.sincereMemberIcon = memberIconsRes.sincereMemberIcon || ''
configForm.value.familyMemberIcon = memberIconsRes.familyMemberIcon || ''
}
+ if (memberEntryRes) {
+ configForm.value.memberEntryImage = memberEntryRes.imageUrl || ''
+ }
} catch (error) {
console.error('加载配置失败:', error)
}
@@ -353,6 +383,15 @@ const handleFamilyMemberIconSuccess = (response) => {
}
}
+const handleMemberEntryImageSuccess = (response) => {
+ if (response.code === 0 && response.data) {
+ configForm.value.memberEntryImage = response.data.url
+ ElMessage.success('上传成功')
+ } else {
+ ElMessage.error(response.message || '上传失败')
+ }
+}
+
const beforeAvatarUpload = (file) => {
const isImage = file.type.startsWith('image/')
const isLt2M = file.size / 1024 / 1024 < 2
@@ -381,6 +420,9 @@ const saveBasicConfig = async () => {
if (configForm.value.butlerQrcode) {
promises.push(setButlerQrcode(configForm.value.butlerQrcode))
}
+ if (configForm.value.memberEntryImage) {
+ promises.push(setMemberEntryImage(configForm.value.memberEntryImage))
+ }
// 保存会员图标
const memberIcons = {
unlimitedMemberIcon: configForm.value.unlimitedMemberIcon || undefined,
diff --git a/admin/src/views/user/detail.vue b/admin/src/views/user/detail.vue
index 28e6a8b..6f68497 100644
--- a/admin/src/views/user/detail.vue
+++ b/admin/src/views/user/detail.vue
@@ -134,17 +134,8 @@ const handleEditMemberLevel = () => {
// 确认修改会员等级
const handleConfirmMemberLevel = async () => {
try {
- const { memberLevel, memberExpireTime } = memberLevelForm.value
- // 等级2、3需要到期时间
- if (memberLevel > 1 && !memberExpireTime) {
- ElMessage.warning('请选择会员到期时间')
- return
- }
- await updateMemberLevel(
- userId.value,
- memberLevel,
- memberLevel > 1 ? memberExpireTime : undefined
- )
+ const { memberLevel } = memberLevelForm.value
+ await updateMemberLevel(userId.value, memberLevel, undefined)
ElMessage.success('修改成功')
memberLevelDialogVisible.value = false
fetchUserDetail()
@@ -670,23 +661,6 @@ onMounted(() => {
/>
-
-
-
-
-
- 不限时会员无需设置到期时间
-
-
diff --git a/miniapp/components/Popup/index.vue b/miniapp/components/Popup/index.vue
index dc369d4..6646884 100644
--- a/miniapp/components/Popup/index.vue
+++ b/miniapp/components/Popup/index.vue
@@ -28,10 +28,9 @@
v-if="imageUrl"
class="popup-image"
:src="imageUrl"
- mode="aspectFit"
+ mode="widthFix"
@click="handleImageClick"
/>
-