feat(bazi): 八字页重构——空态示例排盘+字段术语表+文化声明,生辰档案绑定
- 八字页:未绑定生辰时展示虚构示例排盘(1990-08-08 10:30男)与15条字段说明, 附传统文化声明文案;已绑定时支持多档案切换,排盘增强(十神/藏干/纳音/五行配色/命盘概览) - 个人中心:新增生辰管理卡片,每用户免费绑定3个出生年月;登录改为真实微信登录 - 服务端:新增 BirthProfile 模型与 /api/user/birth-profiles 增删查接口,AutoMigrate 建表 - 前端:新增 birth-profile.js 本地存储优先+登录后云端双向同步 - 修复:个人中心 tabBar 页面入口误用 navigateTo 改为 switchTab
This commit is contained in:
@@ -2,6 +2,7 @@ package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
@@ -70,6 +71,35 @@ func (s *UserService) GetUserProfile(userID uint) (*model.UserProfile, error) {
|
||||
return &profile, nil
|
||||
}
|
||||
|
||||
// ErrBirthProfileLimit 生辰档案数量达到免费上限
|
||||
var ErrBirthProfileLimit = fmt.Errorf("最多可免费绑定 %d 个生辰", model.MaxFreeBirthProfiles)
|
||||
|
||||
// ListBirthProfiles 获取用户的全部生辰档案
|
||||
func (s *UserService) ListBirthProfiles(userID uint) ([]model.BirthProfile, error) {
|
||||
var profiles []model.BirthProfile
|
||||
if err := s.db.Where("user_id = ?", userID).Order("id ASC").Find(&profiles).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return profiles, nil
|
||||
}
|
||||
|
||||
// CreateBirthProfile 新增生辰档案,超过免费上限时返回 ErrBirthProfileLimit
|
||||
func (s *UserService) CreateBirthProfile(profile *model.BirthProfile) error {
|
||||
var count int64
|
||||
if err := s.db.Model(&model.BirthProfile{}).Where("user_id = ?", profile.UserID).Count(&count).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if count >= model.MaxFreeBirthProfiles {
|
||||
return ErrBirthProfileLimit
|
||||
}
|
||||
return s.db.Create(profile).Error
|
||||
}
|
||||
|
||||
// DeleteBirthProfile 删除生辰档案(仅限本人)
|
||||
func (s *UserService) DeleteBirthProfile(id, userID uint) error {
|
||||
return s.db.Where("id = ? AND user_id = ?", id, userID).Delete(&model.BirthProfile{}).Error
|
||||
}
|
||||
|
||||
// GenerateToken 生成JWT Token
|
||||
func (s *UserService) GenerateToken(userID uint, secret string) (string, error) {
|
||||
claims := jwt.MapClaims{
|
||||
|
||||
Reference in New Issue
Block a user