Files
simple-memo/api/app/userConfig.go
T
sunct 3c3bf53ae4 docs(website): 添加简记memo产品原型和UI设计规范文档
- 新增「简记memo」一体化小程序产品原型设计文档
- 新增简记memo完整版UI视觉设计规范和界面细节
- 添加IDEA项目配置文件.gitignore
- 创建404页面HTML文件,包含响应式布局和错误提示
- 添加关于页面HTML文件,展示品牌介绍和团队信息
- 实现AES加解密工具函数,支持请求体加密
- 添加用户协议页面基础框架
2026-07-31 14:12:32 +08:00

93 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 小程序用户接口
package app
import (
"simple-memo/global"
"simple-memo/models"
"simple-memo/utils"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
// -------------------------- 1. 定义 Handler 接口 --------------------------
// UserConfigHandler 用户模块接口定义
type UserConfigHandler interface {
UserConfigInfo(c *gin.Context) // 获取配置
EditUserConfig(c *gin.Context) // 编辑配置
}
// -------------------------- 2. 实现结构体(依赖注入DB --------------------------
// userHandler 接口实现结构体
type userConfigHandler struct {
db *gorm.DB // 注入数据库,方便测试
}
// NewUserConfigHandler 创建用户处理器(对外暴露)
func NewUserConfigHandler() UserConfigHandler {
return &userConfigHandler{
db: global.DB,
}
}
type EditUserConfigReq struct {
Theme string `json:"theme"` // 主题
}
// -------------------------- 4. 接口实现 --------------------------
// UserConfigInfo 获取用户配置信息
func (h *userConfigHandler) UserConfigInfo(c *gin.Context) {
userId, exists := c.Get("userID")
if !exists {
utils.Fail(c, "用户未登录")
return
}
var user models.UserConfig
err := h.db.Where("user_id = ?", userId).First(&user).Error
if err != nil {
utils.Fail(c, "获取用户信息失败")
return
}
// 返回脱敏用户信息
utils.Ok(c, gin.H{
"id": user.ID,
"theme": user.Theme,
"createdAt": user.CreatedAt,
})
}
// EditUser 修改用户信息
func (h *userConfigHandler) EditUserConfig(c *gin.Context) {
userId, exists := c.Get("userID")
if !exists {
utils.Fail(c, "用户未登录")
}
var editUserConfigReq EditUserConfigReq
if err := c.ShouldBindJSON(&editUserConfigReq); err != nil {
utils.Fail(c, "参数解析失败")
}
var data map[string]any
// 如果只存在一个字段,则只更新当前的一个
if editUserConfigReq.Theme != "" {
data = map[string]any{
"user_id": userId,
"theme": editUserConfigReq.Theme,
}
}
if data == nil {
utils.Ok(c, nil)
}
err := h.db.Where("user_id = ?", userId).
Assign(data).
FirstOrCreate(&models.UserConfig{}).Error
if err != nil {
utils.Fail(c, "用户配置信息更新失败")
}
utils.Ok(c, nil)
}