74 lines
2.0 KiB
Go
74 lines
2.0 KiB
Go
package plant
|
|
|
|
import (
|
|
"sundynix-go/global"
|
|
"sundynix-go/model/plant"
|
|
plantReq "sundynix-go/model/plant/request"
|
|
"sundynix-go/model/system"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type UserProfileService struct{}
|
|
|
|
// UpdateProfile 修改用户信息
|
|
func (s *UserProfileService) UpdateProfile(req plantReq.UpdateProfile, userId string) error {
|
|
return global.DB.Transaction(func(tx *gorm.DB) error {
|
|
//1.更新profile
|
|
updateMap := map[string]interface{}{
|
|
"nick_name": req.Nickname,
|
|
"avatar_id": req.AvatarId,
|
|
}
|
|
err := tx.Model(&plant.UserProfile{}).Where("user_id = ?", userId).Updates(updateMap).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
//2.更新user表
|
|
updateMap = map[string]interface{}{
|
|
"name": req.Nickname,
|
|
"avatar_id": req.AvatarId,
|
|
}
|
|
err = tx.Model(&system.User{}).Where("id = ?", userId).Updates(updateMap).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
})
|
|
}
|
|
|
|
// ProfileDetail 获取用户详情
|
|
func (s *UserProfileService) ProfileDetail(userId string) (plant.UserProfile, error) {
|
|
var res plant.UserProfile
|
|
err := global.DB.Where("user_id = ?", userId).Preload("Avatar").Preload("Level").First(&res).Error
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
return res, nil
|
|
}
|
|
|
|
// MyStars 我的收藏
|
|
func (s *UserProfileService) MyStars(req plantReq.StarsPageReq, userId string) (list interface{}, total int64, err error) {
|
|
limit := req.PageSize
|
|
offset := req.PageSize * (req.Current - 1)
|
|
db := global.DB.Model(&plant.UserStar{}).Preload("Wiki", func(db *gorm.DB) *gorm.DB {
|
|
return db.Preload("ImgList", func(db *gorm.DB) *gorm.DB {
|
|
return db.Order("created_at desc")
|
|
})
|
|
}).Preload("Post", func(db *gorm.DB) *gorm.DB {
|
|
return db.Preload("ImgList", func(db *gorm.DB) *gorm.DB {
|
|
return db.Order("created_at desc")
|
|
})
|
|
})
|
|
var stars []*plant.UserStar
|
|
db = db.Where("user_id = ?", userId)
|
|
if req.Class != 0 {
|
|
db = db.Where("type = ?", req.Class) //1.百科 //2.社交动态
|
|
}
|
|
err = db.Count(&total).Error
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = db.Limit(limit).Offset(offset).Order("created_at desc").Find(&stars).Error
|
|
return stars, total, err
|
|
}
|