442 lines
14 KiB
Go
442 lines
14 KiB
Go
package dao
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/fonchain-artistserver/cmd/model"
|
|
artistInfo "github.com/fonchain-artistserver/pb/artistinfo"
|
|
"github.com/fonchain-artistserver/pkg/cache"
|
|
db "github.com/fonchain-artistserver/pkg/db"
|
|
"github.com/fonchain-artistserver/pkg/m"
|
|
"github.com/fonchain-artistserver/pkg/util"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func User(req *artistInfo.GetUserInfoRequest) (rep *artistInfo.GetUserInfoRespond, err error) {
|
|
rep = &artistInfo.GetUserInfoRespond{}
|
|
service := rep.Data
|
|
var user model.User
|
|
if err = db.DB.First(&user, "id = ?", int32(req.Id)).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
var realName model.RealName
|
|
if err = db.DB.First(&realName, "id = ?", user.RealNameID).Error; err != nil {
|
|
zap.L().Error("get realName info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
var artworkList []model.Artwork
|
|
if err = db.DB.Where("artist_id = ? ", int32(req.Id)).Find(&artworkList).Error; err != nil {
|
|
zap.L().Error("get artworkList info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
for _, v := range artworkList {
|
|
if v.State == 3 {
|
|
service.Ruler = service.Ruler + v.Ruler
|
|
}
|
|
}
|
|
|
|
service.TelNum = user.TelNum
|
|
service.CertificateNum = user.CertificateNum
|
|
if user.CertificateImg != "" {
|
|
service.CertificateImg = fmt.Sprintf("%v?v=%d", user.CertificateImg, user.UpdatedAt.Unix())
|
|
}
|
|
service.RealName = realName.Name
|
|
service.PenName = user.PenName
|
|
service.Age = int32(util.IdCardTurnAge(realName.IDNum))
|
|
service.IdCard = realName.IDNum
|
|
|
|
service.StageName = user.StageName
|
|
service.WxAccount = user.WxAccount
|
|
service.JoinAssoTime = user.JoinAssoTime
|
|
service.IdCardFront = fmt.Sprintf("%v?v=%d", realName.IdcardFront, realName.UpdatedAt.Unix())
|
|
service.IdCardBack = fmt.Sprintf("%v?v=%d", realName.IdcardBack, realName.UpdatedAt.Unix())
|
|
var conAddressArr []string
|
|
err = json.Unmarshal([]byte(user.ConAddress), &conAddressArr)
|
|
if err != nil {
|
|
zap.L().Error("conAddressArr unmarshal err", zap.Error(err))
|
|
err = errors.New(m.ERROR_UNMARSHAL)
|
|
return nil, err
|
|
}
|
|
service.ConAddress = conAddressArr
|
|
service.InvitedCode = user.InvitedCode
|
|
|
|
var invited model.Invite
|
|
if err = db.DB.Where("user_id=?", user.ID).First(&invited).Error; err != nil {
|
|
//如果查询不到,返回相应的错误
|
|
if err.Error() == "record not found" {
|
|
user.InvitedCode = ""
|
|
}
|
|
//数据库操作异常
|
|
zap.L().Error("get invite info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
var invitedUser model.User
|
|
if err = db.DB.Where("id=?", invited.InvitedId).First(&invitedUser).Error; err != nil {
|
|
//如果查询不到,返回相应的错误
|
|
if err.Error() == "record not found" {
|
|
user.InvitedCode = ""
|
|
return nil, err
|
|
}
|
|
//数据库操作异常
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
service.InvitedName = invitedUser.Name
|
|
service.Sex = user.Sex
|
|
service.FddState = user.FddState
|
|
service.CustomerId = user.CustomerId
|
|
service.Photo = fmt.Sprintf("%v?v=%d", user.Photo, user.UpdatedAt.Unix())
|
|
if user.Video != "" {
|
|
service.Video = fmt.Sprintf("%v?v=%d", user.Video, user.UpdatedAt.Unix())
|
|
}
|
|
service.QrCodeImg = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v.png", user.InvitedCode)
|
|
// service.QrCodeImgDownload = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v-2.png", user.InvitedCode)
|
|
// service.QrCodeImgDownload=("http://192.168.1.18:9400/qrcodebg.png")
|
|
service.QrCodeImgDownload = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v-2.png", user.InvitedCode)
|
|
rep.Data = service
|
|
return rep, nil
|
|
}
|
|
|
|
// Update 用户修改信息
|
|
func Create(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.CreateUserInfoRespond, err error) {
|
|
rep = &artistInfo.CreateUserInfoRespond{}
|
|
// user := rep.User
|
|
var user model.User
|
|
// user := rep.User
|
|
if err = db.DB.First(&user, "id = ?", int32(req.Id)).Error; err != nil {
|
|
//数据库操作异常
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
var realNameFind model.RealName
|
|
if err = db.DB.First(&realNameFind, "id_num = ?", req.UserUpdateInfoService.IdCard).Error; err != nil {
|
|
zap.L().Error("get realName info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
} else {
|
|
if realNameFind.ID != 0 {
|
|
return nil, errors.New(m.ERROR_ALREADY_AUTH)
|
|
}
|
|
}
|
|
|
|
var realname = model.RealName{
|
|
Name: req.UserUpdateInfoService.RealName,
|
|
IDNum: req.UserUpdateInfoService.IdCard,
|
|
TelNum: req.UserUpdateInfoService.TelNum,
|
|
IdcardFront: req.UserUpdateInfoService.IdCardFront,
|
|
IdcardBack: req.UserUpdateInfoService.IdCardBack,
|
|
}
|
|
if err = db.DB.Save(&realname).Error; err != nil {
|
|
zap.L().Error("save realName info err", zap.Error(err))
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return nil, err
|
|
}
|
|
|
|
if err = db.DB.First(&realname, "id_num=?", realname.IDNum).Error; err != nil {
|
|
zap.L().Error("get realName info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
|
|
user.ID = int32(req.Id)
|
|
user.Name = req.UserUpdateInfoService.RealName
|
|
user.PenName = req.UserUpdateInfoService.PenName
|
|
user.RealNameID = int32(realname.ID)
|
|
user.StageName = req.UserUpdateInfoService.StageName
|
|
user.Age = int32(util.IdCardTurnAge(realname.IDNum))
|
|
user.Sex = int32(req.UserUpdateInfoService.Sex)
|
|
user.JoinAssoTime = req.UserUpdateInfoService.JoinAssoTime
|
|
user.CertificateNum = req.UserUpdateInfoService.CertificateNum
|
|
conAddessByte, err := json.Marshal(req.UserUpdateInfoService.ConAddress)
|
|
if err != nil {
|
|
zap.L().Error("conAddress marshal err", zap.Error(err))
|
|
err = errors.New(m.ERROR_MARSHAL)
|
|
return nil, err
|
|
}
|
|
|
|
user.ConAddress = string(conAddessByte)
|
|
user.CreateAt = time.Now().Unix()
|
|
user.Photo = req.UserUpdateInfoService.Photo
|
|
user.WxAccount = req.UserUpdateInfoService.WxAccount
|
|
user.CertificateImg = req.UserUpdateInfoService.CertificateImg
|
|
user.Video = req.UserUpdateInfoService.Video
|
|
user.IsRealName = true
|
|
var invite model.Invite
|
|
if err = db.DB.Where("user_id = ?", user.ID).First(&invite).Error; err != nil {
|
|
zap.L().Error("get invite info err", zap.Error(err))
|
|
if err.Error() == "record not found" {
|
|
} else {
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
if invite.ID == 0 {
|
|
res, err := CheckInvitedCode(req.UserUpdateInfoService.InvitedCode)
|
|
if err != nil {
|
|
Createinvite(user.ID, res.ID)
|
|
}
|
|
}
|
|
user.ID = int32(req.Id)
|
|
if err = db.DB.Save(user).Error; err != nil {
|
|
zap.L().Error("save user info err", zap.Error(err))
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return nil, err
|
|
}
|
|
|
|
copyOpt := util.CopyOption{
|
|
Src: &user,
|
|
Dst: rep.User,
|
|
}
|
|
util.CopyStructSuper(copyOpt)
|
|
return rep, nil
|
|
}
|
|
|
|
// 用户修改信息
|
|
func GetUserInfoSelf(id int64) (rep *model.UserUpdateInfoService, err error) {
|
|
rep = &model.UserUpdateInfoService{}
|
|
var user model.User
|
|
if err = db.DB.First(&user, "id = ?", int32(id)).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
|
|
var realName model.RealName
|
|
if err = db.DB.First(&realName, "id = ?", user.RealNameID).Error; err != nil {
|
|
zap.L().Error("get realName info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
|
|
var artworkList []model.Artwork
|
|
if err = db.DB.Where("artist_id = ? ", uint(id)).Find(&artworkList).Error; err != nil {
|
|
zap.L().Error("get artworkList info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
|
|
for _, v := range artworkList {
|
|
if v.State == 3 {
|
|
rep.Ruler = rep.Ruler + int32(v.Ruler)
|
|
}
|
|
}
|
|
|
|
rep.TelNum = user.TelNum
|
|
rep.CertificateNum = user.CertificateNum
|
|
if user.CertificateImg != "" {
|
|
rep.CertificateImg = fmt.Sprintf("%v?v=%d", user.CertificateImg, user.UpdatedAt.Unix())
|
|
}
|
|
rep.RealName = realName.Name
|
|
rep.PenName = user.PenName
|
|
rep.Age = int32(util.IdCardTurnAge(realName.IDNum))
|
|
|
|
rep.IdCard = realName.IDNum
|
|
rep.StageName = user.StageName
|
|
rep.WxAccount = user.WxAccount
|
|
rep.JoinAssoTime = user.JoinAssoTime
|
|
rep.IdCardFront = fmt.Sprintf("%v?v=%d", realName.IdcardFront, realName.UpdatedAt.Unix())
|
|
rep.IdCardBack = fmt.Sprintf("%v?v=%d", realName.IdcardBack, realName.UpdatedAt.Unix())
|
|
var conAddressArr []string
|
|
err = json.Unmarshal([]byte(user.ConAddress), &conAddressArr)
|
|
if err != nil {
|
|
zap.L().Error("conAddressArr unmarshal err", zap.Error(err))
|
|
err = errors.New(m.ERROR_UNMARSHAL)
|
|
return nil, err
|
|
}
|
|
rep.ConAddress = conAddressArr
|
|
rep.InvitedCode = user.InvitedCode
|
|
|
|
var invited model.Invite
|
|
if err = db.DB.Where("user_id=?", user.ID).First(&invited).Error; err != nil {
|
|
zap.L().Error("get invited info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
|
|
var invitedUser model.User
|
|
if err = db.DB.Where("id=?", invited.InvitedId).First(&invitedUser).Error; err != nil {
|
|
zap.L().Error("get invitedUser info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_UNMARSHAL)
|
|
return
|
|
}
|
|
rep.InvitedName = invitedUser.Name
|
|
rep.Sex = user.Sex
|
|
rep.FddState = user.FddState
|
|
rep.CustomerId = user.CustomerId
|
|
rep.Photo = fmt.Sprintf("%v?v=%d", user.Photo, user.UpdatedAt.Unix())
|
|
if user.Video != "" {
|
|
rep.Video = fmt.Sprintf("%v?v=%d", user.Video, user.UpdatedAt.Unix())
|
|
}
|
|
rep.QrCodeImg = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v.png", user.InvitedCode)
|
|
rep.QrCodeImgDownload = fmt.Sprintf("https://cdn.fontree.cn/artistmgmt/static/qrcode/%v-2.png", user.InvitedCode)
|
|
|
|
return rep, nil
|
|
}
|
|
|
|
func Update(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UpdateUserInfoRespond, err error) {
|
|
rep = &artistInfo.UpdateUserInfoRespond{}
|
|
var user model.User
|
|
if err = db.DB.First(&user, "id = ?", int32(req.Id)).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
user.PenName = req.UserUpdateInfoService.PenName
|
|
user.Photo = req.UserUpdateInfoService.Photo
|
|
user.Video = req.UserUpdateInfoService.Video
|
|
user.CertificateImg = req.UserUpdateInfoService.CertificateImg
|
|
conAddessByte, err := json.Marshal(req.UserUpdateInfoService.ConAddress)
|
|
if err != nil {
|
|
zap.L().Error("conAddress marshal err", zap.Error(err))
|
|
err = errors.New(m.ERROR_MARSHAL)
|
|
return nil, err
|
|
}
|
|
user.ConAddress = string(conAddessByte)
|
|
user.WxAccount = req.UserUpdateInfoService.WxAccount
|
|
user.CertificateNum = req.UserUpdateInfoService.CertificateNum
|
|
if err = db.DB.Save(&user).Error; err != nil {
|
|
zap.L().Error("save user info err", zap.Error(err))
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return
|
|
}
|
|
|
|
var realName model.RealName
|
|
if err = db.DB.First(&realName, "id = ?", user.RealNameID).Error; err != nil {
|
|
zap.L().Error("get RealName info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
|
|
realName.IdcardBack = req.UserUpdateInfoService.IdCardBack
|
|
realName.IdcardFront = req.UserUpdateInfoService.IdCardFront
|
|
if err = db.DB.Save(&realName).Error; err != nil {
|
|
zap.L().Error("save realName info err", zap.Error(err))
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return
|
|
}
|
|
copyOpt := util.CopyOption{
|
|
Src: &user,
|
|
Dst: rep.User,
|
|
}
|
|
util.CopyStructSuper(copyOpt)
|
|
return
|
|
}
|
|
|
|
func UpdateTel(req *artistInfo.UserUpdateTelRequest) (rep *artistInfo.UserUpdateTelRespond, err error) {
|
|
rep = &artistInfo.UserUpdateTelRespond{}
|
|
var user model.User
|
|
if err = db.DB.First(&user, int32(req.Id)).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
str := cache.RedisClient.Get(req.TelNum)
|
|
verCode := str.Val()
|
|
if verCode != req.VerCode {
|
|
zap.L().Error("verCode err", zap.Error(err))
|
|
err = errors.New(m.ERRORCODE)
|
|
return
|
|
}
|
|
if user.TelNum == req.TelNum {
|
|
zap.L().Error("TelNum err", zap.Error(err))
|
|
err = errors.New(m.ERROT_SAME_TEL)
|
|
return
|
|
}
|
|
user.TelNum = req.TelNum
|
|
if err = db.DB.Save(&user).Error; err != nil {
|
|
zap.L().Error("save user info err", zap.Error(err))
|
|
err = errors.New(m.SAVE_ERROR)
|
|
return
|
|
}
|
|
rep.TelNum = user.TelNum
|
|
return
|
|
}
|
|
|
|
func UpdateMsg(req *artistInfo.UserInfoCommonRequest) (rep *artistInfo.UserUpdateMsgRespond, err error) {
|
|
var user model.User
|
|
user.IsRealName = true
|
|
user.ID = int32(req.Id)
|
|
if err = db.DB.Model(&user).Update("is_read", 1).Error; err != nil {
|
|
zap.L().Error("user update failed", zap.Error(err))
|
|
err = errors.New(m.UPDATE_FAILED)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func VerifyFdd(req *artistInfo.VerifyfddRequest) (rep *artistInfo.VerifyfddRespond, err error) {
|
|
rep = &artistInfo.VerifyfddRespond{}
|
|
var user model.User
|
|
if err = db.DB.Where("id = ?", int32(req.Id)).First(&user).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return
|
|
}
|
|
if user.FddState != 2 {
|
|
return
|
|
}
|
|
rep.Ready = true
|
|
return
|
|
}
|
|
|
|
func FinishVerify(req *artistInfo.FinishVerifyRequest) (rep *artistInfo.FinishVerifyRespond, err error) {
|
|
rep = &artistInfo.FinishVerifyRespond{}
|
|
var user model.User
|
|
user.ID = int32(req.Id)
|
|
if err = db.DB.Model(&user).Update("fdd_state", 2).Error; err != nil {
|
|
zap.L().Error("user update failed", zap.Error(err))
|
|
err = errors.New(m.UPDATE_FAILED)
|
|
return
|
|
}
|
|
copyOpt := util.CopyOption{
|
|
Src: &user,
|
|
Dst: rep.User,
|
|
}
|
|
util.CopyStructSuper(copyOpt)
|
|
return
|
|
}
|
|
|
|
func CheckInvitedCode(invitedCode string) (user *model.User, err error) {
|
|
user = &model.User{}
|
|
//找到用户
|
|
if err := db.DB.Where("invited_code =?", invitedCode).Find(user).Error; err != nil {
|
|
zap.L().Error("get user info err", zap.Error(err))
|
|
err = errors.New(m.ERROR_SELECT)
|
|
return nil, err
|
|
}
|
|
if user.ID == 0 {
|
|
err = errors.New(m.INVITE_CODE_INVALID)
|
|
return nil, err
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func Createinvite(userId, invitedId int32) (invite *model.Invite, err error) {
|
|
invite = &model.Invite{}
|
|
invite.UserId = userId
|
|
invite.InvitedId = invitedId
|
|
if err := db.DB.Create(&invite).Error; err != nil {
|
|
zap.L().Error("create invite info err", zap.Error(err))
|
|
err = errors.New(m.CREATE_ERROR)
|
|
return nil, err
|
|
}
|
|
return invite, nil
|
|
|
|
}
|