You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
2.7 KiB

package user
import (
"yunyan/comm"
"yunyan/lego/sys/log"
"yunyan/lego/sys/mysql"
"yunyan/pb"
"yunyan/sys/ipinfo"
"time"
)
// @Summary 获取用户信息
// @Description 使用token获取用户信息
// @Tags User
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param user body pb.UserGetInfoReq true "获取用户信息"
// @Success 200 {object} comm.HttpResult{data=pb.UserGetInfoResp} "成功返回用户信息"
// @Router /api/home/user_getinfo [post]
func (this *apiComp) GetInfo(session comm.IUserSession, req *pb.UserGetInfoReq) (resp *pb.UserGetInfoResp, errdata *pb.ErrorData) {
var (
user *pb.DBUser
divices []*pb.DBUserDivice
ipdata *ipinfo.IPData
// isNew bool
err error
)
if user, err = this.module.model.findforid(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
this.module.Error("登录失败!", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "err", Value: err.Error()})
return
}
if user.Version != "" && user.Version != req.Version {
user.Version = req.Version
// isNew = true
}
if user.Channel != 0 && user.Channel != req.Channel {
user.Channel = req.Channel
// isNew = true
}
ipdata, _ = ipinfo.GetIPInfo(session.GetIP())
// if isNew {
user.Lastsgintime = time.Now().Unix()
this.module.model.save(user)
// }
if ipdata != nil {
user.ContinentCode = ipdata.ContinentCode
user.CountryCode = ipdata.CountryCode
}
if divices, err = this.module.model.getDevices(user.Uid); err != nil && err != mysql.ErrNoDocuments {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
this.module.Error("获取用户设备失败!", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "err", Value: err.Error()})
return
}
// if user.Phone != "" {
// user.Phone = aes.AesDecryptCBC(user.Phone, this.options.CBCKey)
// }
// if user.Mail != "" {
// user.Mail = aes.AesDecryptCBC(user.Mail, this.options.CBCKey)
// }
// if user.Name != "" {
// user.Name = aes.AesDecryptCBC(user.Name, this.options.CBCKey)
// }
// if user.Avatar != "" {
// user.Avatar = aes.AesDecryptCBC(user.Avatar, this.options.CBCKey)
// }
// 老客户端只认 user.viplv / user.vipexptime,这里把**合并后的有效值**(自购 或 设备赋予)
// 覆盖到响应对象上——上面的 save 已经落库完,这次改动只进响应、不再写库。
// 库里 vipexptime 始终只记自购部分(见 comm.ResolveVip)。
if vip, _, verr := comm.ResolveUserVip(user.Uid, user); verr == nil {
user.Viplv = vip.Level
user.Vipexptime = vip.ExpTime
}
resp = &pb.UserGetInfoResp{
User: user,
Devices: divices,
}
return
}