55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package logic
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"lone-services/pkg/modelbase"
|
|
"lone-services/pkg/utils"
|
|
"lone-services/services/user/internal/dao"
|
|
"lone-services/services/user/internal/model"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func ensureUserDetail(tx *gorm.DB, userId int64) error {
|
|
if userId < utils.NumberOne {
|
|
return nil
|
|
}
|
|
|
|
detailModel := model.UserDetailModel{}.Init()
|
|
if tx != nil {
|
|
detailModel.Base = detailModel.Base.WithTX(tx)
|
|
}
|
|
|
|
var exist dao.UserDetail
|
|
if err := detailModel.GetOne(modelbase.Params{
|
|
Eq: map[string]string{"user_id": strconv.FormatInt(userId, utils.NumberTen)},
|
|
}, &exist); err != nil {
|
|
return err
|
|
}
|
|
if exist.Id > utils.NumberZero {
|
|
return nil
|
|
}
|
|
|
|
return detailModel.Create(&dao.UserDetailCreate{
|
|
UserId: userId,
|
|
})
|
|
}
|
|
|
|
func loadUserDetail(userId int64) (*dao.UserDetail, error) {
|
|
if userId < utils.NumberOne {
|
|
return nil, nil
|
|
}
|
|
var row dao.UserDetail
|
|
err := model.UserDetailModel{}.Init().GetOne(modelbase.Params{
|
|
Eq: map[string]string{"user_id": strconv.FormatInt(userId, utils.NumberTen)},
|
|
}, &row)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if row.Id < utils.NumberOne {
|
|
return nil, nil
|
|
}
|
|
return &row, nil
|
|
}
|