package dao import ( "errors" "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" "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 if err = db.DB.First(&user, "telnum = ?", req.TelNum).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 // 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 if err = db.DB.Model(&user).Update("isrealname", 1).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 } 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 } 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 } 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 } // // 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 // }