2023-01-18 09:03:15 +00:00
package dao
import (
"errors"
2023-02-06 01:33:09 +00:00
"github.com/fonchain/fonchain-artistinfo/cmd/model"
"github.com/fonchain/fonchain-artistinfo/pb/artistinfo"
db "github.com/fonchain/fonchain-artistinfo/pkg/db"
"github.com/fonchain/fonchain-artistinfo/pkg/m"
2023-01-18 09:03:15 +00:00
"go.uber.org/zap"
)
func RegisterUser ( req * artistinfo . RegisterUserRequest ) ( rep * artistinfo . RegisterUserRespond , err error ) {
var user model . User
user . TelNum = req . TelNum
user . MgmtArtistId = req . MgmtArtistId
if err := db . DB . Create ( & user ) . Error ; err != nil {
zap . L ( ) . Error ( "register user err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
return
}
func GetUser ( req * artistinfo . GetUserRequest ) ( rep * artistinfo . GetUserRespond , err error ) {
rep = & artistinfo . GetUserRespond { }
// service := &artist.UserUpdateInfoService{}
var user model . User
2023-02-06 02:26:06 +00:00
if err = db . DB . First ( & user , "tel_num = ?" , req . TelNum ) . Error ; err != nil {
2023-01-18 09:03:15 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
// rep.
rep . Id = user . ID
rep . MgmtUserId = user . MgmtUserId
rep . MgmtArtistId = user . MgmtArtistId
rep . TelNum = user . TelNum
rep . IsFdd = user . IsFdd
rep . IsRealName = user . IsRealName
rep . Ruler = user . Ruler
// 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)
// rep.Data = service
return rep , nil
}
func GetUserById ( req * artistinfo . GetUserByIdRequest ) ( rep * artistinfo . GetUserByIdRespond , err error ) {
rep = & artistinfo . GetUserByIdRespond { }
// service := &artist.UserUpdateInfoService{}
var user model . User
if err = db . DB . First ( & user , "id = ?" , req . Id ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
// rep.
rep . Id = user . ID
rep . MgmtUserId = user . MgmtUserId
rep . MgmtArtistId = user . MgmtArtistId
rep . TelNum = user . TelNum
rep . IsFdd = user . IsFdd
rep . IsRealName = user . IsRealName
rep . Ruler = user . Ruler
return rep , nil
}
func UpdateRealName ( req * artistinfo . UpdateRealNameRequest ) ( rep * artistinfo . UpdateRealNameRespond , err error ) {
var user model . User
user . ID = req . Id
2023-02-06 02:26:06 +00:00
if err = db . DB . Model ( & user ) . Update ( "is_real_name" , 1 ) . Error ; err != nil {
2023-01-18 09:03:15 +00:00
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
return rep , nil
}
func FinishVerify ( req * artistinfo . FinishVerifyRequest ) ( rep * artistinfo . FinishVerifyRespond , err error ) {
var user model . User
user . ID = req . Id
if err = db . DB . Model ( & user ) . Update ( "isfdd" , 2 ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
return rep , nil
}
2023-02-02 06:10:24 +00:00
func ArtistSupplyList ( req * artistinfo . ArtistSupplyListRequest ) ( rep * artistinfo . ArtistSupplyListRespond , err error ) {
var artistList = make ( [ ] artistinfo . ArtistArtworkSupplyListResponseData , 0 )
var args [ ] interface { }
sql := ` select cc.* from (SELECT a.id,a.name,a.pen_name,a.is_import,a.tel_num,a.sex,a.age,b.id_num,a.invited_code,a.certificate_num,a.con_address,b.idcard_front,b.idcard_back,a.photo,a.video,a.created_at,a.updated_at,a.is_lock,a.certificate_img,min(d.created_at) as dd from user a inner join real_name b on a.real_name_id = b.id left join bank c on a.id = c.user_id left join supply_info d on a.id = d.user_id where (d.types = 1 or d.types = 4 or d.types = 2 or d.types = 3 or d.types =6) and a.is_real_name = true `
sqlWhere := ` `
sqlGroup := ` group by a.id order by min(d.created_at) desc ) cc inner join supply_info f where dd >0 and dd = f.created_at and cc.id = f.user_id group by cc.id,dd `
var count uint64
tx := db . DB . Raw ( "select count(*) from (" + sql + sqlWhere + sqlGroup + ") cc" ) . Scan ( & count )
if tx . Error != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( tx . Error ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
rep . Count = count
var sqlLimit = " limit ?,? "
args = append ( args , ( req . Page - 1 ) * req . PageSize )
args = append ( args , req . PageSize )
err = db . DB . Raw ( sql + sqlWhere + sqlGroup + sqlLimit ) . Scan ( & artistList ) . Error
if err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( tx . Error ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
for _ , v := range artistList {
rep . Data = append ( rep . Data , & v )
}
return rep , nil
}
2023-02-06 01:33:09 +00:00
func UserLock ( req * artistinfo . UserLockRequest ) ( rep * artistinfo . UserLockRespond , err error ) {
var user model . User
user . ID = uint64 ( req . Id )
if err = db . DB . Model ( & user ) . Update ( "is_lock" , req . IsLock ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
if ! req . IsLock {
var vas model . ExhVideo
vas . UserId = uint ( req . Id )
if err = db . DB . Model ( & vas ) . Update ( "state" , 5 ) . Where ( "state = 1 or state = 2 or state = 3" ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
var ee model . ExhExam
ee . UserId = uint ( req . Id )
if err = db . DB . Model ( & ee ) . Update ( "state" , 5 ) . Where ( "state = 1 or state = 2 or state = 3 or state = 4" ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
var si model . SupplyInfo
si . UserId = uint ( req . Id )
if err = db . DB . Model ( & si ) . Update ( "state" , 5 ) . Where ( "state = 1 or state = 2 or state = 3 or state = 4" ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
var ai model . ArtistInfo
ai . UserId = uint ( req . Id )
if err = db . DB . Model ( & ai ) . Update ( "state" , 5 ) . Where ( "state = 1 or state = 2 or state = 3 or state = 4" ) . Error ; err != nil {
zap . L ( ) . Error ( "get user info err" , zap . Error ( err ) )
err = errors . New ( m . ERROR_SELECT )
return nil , err
}
}
return rep , nil
}
2023-02-02 06:10:24 +00:00
2023-01-18 09:03:15 +00:00
// // Update 用户修改信息
// func Create(reqs *artist.CreateUserInfoRequest) (rep *artist.CreateUserInfoRespond, err error) {
// req := reqs.Data
// rep = &artist.CreateUserInfoRespond{}
// data := &artist.User{}
// // user := rep.User
// var user model.User
// // user := rep.User
// if err = db.DB.First(&user, "id = ?", int32(reqs.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.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.RealName,
// IDNum: req.IdCard,
// TelNum: req.TelNum,
// IdcardFront: req.IdCardFront,
// IdcardBack: req.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(reqs.Id)
// user.Name = req.RealName
// user.PenName = req.PenName
// user.RealNameID = int32(realname.ID)
// user.StageName = req.StageName
// user.Age = int32(util.IdCardTurnAge(realname.IDNum))
// user.Sex = int32(req.Sex)
// user.JoinAssoTime = req.JoinAssoTime
// user.CertificateNum = req.CertificateNum
// conAddessByte, err := json.Marshal(req.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.Photo
// user.WxAccount = req.WxAccount
// user.CertificateImg = req.CertificateImg
// user.Video = req.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.InvitedCode)
// if err != nil {
// Createinvite(user.ID, res.ID)
// }
// }
// user.ID = int32(reqs.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: data,
// }
// util.CopyStructSuper(copyOpt)
// rep.User = data
// return rep, nil
// }
// // Get 用户修改信息
// 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 *artist.UpdateUserInfoRequest) (rep *artist.UpdateUserInfoRespond, err error) {
// rep = &artist.UpdateUserInfoRespond{}
// data := &artist.User{}
// 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.Data.PenName
// user.Photo = req.Data.Photo
// user.Video = req.Data.Video
// user.CertificateImg = req.Data.CertificateImg
// conAddessByte, err := json.Marshal(req.Data.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.Data.WxAccount
// user.CertificateNum = req.Data.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.Data.IdCardBack
// realName.IdcardFront = req.Data.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: data,
// }
// util.CopyStructSuper(copyOpt)
// rep.User = data
// return
// }
// func UpdateTel(req *artist.UserUpdateTelRequest) (rep *artist.UserUpdateTelRespond, err error) {
// rep = &artist.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 *artist.UserUpdateMsgRequest) (rep *artist.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 *artist.VerifyfddRequest) (rep *artist.VerifyfddRespond, err error) {
// rep = &artist.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 *artist.FinishVerifyRequest) (rep *artist.FinishVerifyRespond, err error) {
// rep = &artist.FinishVerifyRespond{}
// data := &artist.User{}
// 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: data,
// }
// util.CopyStructSuper(copyOpt)
// rep.User = data
// 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
// }