package dao import ( "encoding/json" "errors" "fmt" "github.com/alibaba/sentinel-golang/logging" "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{ MgmtAccId: req.MgmtAccId, TelNum: req.TelNum, MgmtArtistId: req.MgmtArtistId, MgmtArtistUid: req.MgmtArtistUid, InviteCode: req.UserInviteCode, Account: req.Account, } 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 CreateUserInfo(req *artistinfo.CreateUserInfoRequest) (rep *artistinfo.CreateUserInfoRespond, err error) { var user model.User //找到用户 fmt.Println("req.Id:", req.Id) fmt.Println("第三处") err = db.DB.Where("id = ?", req.Id).First(&user).Error if err != nil { fmt.Println("第四处") fmt.Println(err.Error()) zap.L().Error("CreateUserInfo err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } fmt.Println(11) var realNameFind model.RealName err = db.DB.Where("id_num = ?", req.IdCard).First(&realNameFind).Error if err == nil { fmt.Println("第五处") fmt.Println(12) if realNameFind.ID != 0 { fmt.Println("第六处") zap.L().Error("register user err", zap.Error(err)) err = errors.New("此身份证已实名认证") return nil, err } } fmt.Println("第四处") fmt.Println(12) var realname = model.RealName{ Name: req.RealName, IdNum: req.IdCard, TelNum: req.TelNum, IdCardFront: req.IdCardFront, IdCardBack: req.IdCardBack, } err = db.DB.Save(&realname).Error if err != nil { fmt.Println("第九处") zap.L().Error("CreateUserInfo err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } fmt.Println(13) err = db.DB.Where("id_num=?", realname.IdNum).First(&realname).Error if err != nil { zap.L().Error("CreateUserInfo err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } fmt.Println(14) user.ID = req.Id // todo 下面部分信息需要转存至画家服务和账号服务 //user.Name = req.RealName //user.PenName = req.PenName //user.RealNameID = int32(realname.ID) //user.StageName = req.StageName //user.Age = int32(utils.IdCardTurnAge(realname.IDNum)) //user.Sex = req.Sex //user.JoinAssoTime = req.JoinAssoTime //user.CertificateNum = req.CertificateNum //conAddessByte, err := json.Marshal(req.ConAddress) //if err != nil { // zap.L().Error("CreateUserInfo err", zap.Error(err)) // err = errors.New(m.ERROR_SELECT) // return nil, err //} //user.ConAddress = string(conAddessByte) //user.CreatedAt = time.Now() //user.Photo = req.Photo //user.WxAccount = req.WxAccount //user.CertificateImg = req.CertificateImg //user.Video = req.Video user.IsRealName = 1 var invite model.Invite err = db.DB.Where("user_id = ?", user.ID).First(&invite).Error if err != nil { logging.Info(err.Error()) if err.Error() == "record not found" { } else { zap.L().Error("CreateUserInfo err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } } if invite.ID == 0 { InvitedId, err := CheckInvitedCodes(req.InvitedCode) if err == nil { var invite InviteService invite.UserId = uint(req.Id) invite.InvitedId = InvitedId Createinvite(invite) } } fmt.Printf("%+v\n", user) user.ID = req.Id err = db.DB.Save(&user).Error if err != nil { zap.L().Error("CreateUserInfo err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } return } type InvitedCodeService struct { InvitedCode string `form:"invitedCode" json:"invitedCode"` } type InviteService struct { Id uint `json:"id"` UserId uint `form:"userId" json:"userId"` InvitedId uint `form:"invitedId" json:"invitedId"` } func Createinvite(service InviteService) { var invite model.Invite invite.UserId = int32(service.UserId) invite.InvitedId = int32(service.InvitedId) db.DB.Create(&invite) } func CheckInvitedCodes(invitedCode string) (uint, error) { var user model.User //找到用户 if err := db.DB.Where("invited_code =?", invitedCode).Find(&user).Error; err != nil { return 0, err } if user.ID == 0 { return 0, errors.New("邀请码无效") } return uint(user.ID), nil } func GetUser(req *artistinfo.GetUserRequest) (rep *artistinfo.GetUserRespond, err error) { rep = &artistinfo.GetUserRespond{} // service := &artist.UserUpdateInfoService{} var user model.User if err = db.DB.Where("tel_num = ?", req.TelNum).First(&user).Error; err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } // rep. fmt.Println(user) rep.Id = user.ID rep.MgmtAccId = user.MgmtAccId rep.MgmtArtistUid = user.MgmtArtistUid rep.MgmtArtistId = user.MgmtArtistId rep.TelNum = user.TelNum rep.FddState = user.FddState 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{} fmt.Println("id:", req.Id) fmt.Println("123") zap.L().Info("!!!!") fmt.Println("456") // service := &artist.UserUpdateInfoService{} var user model.User fmt.Println("666") if err = db.DB.Where("id = ?", req.Id).First(&user).Error; err != nil { zap.L().Info("!!!!3") zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return } fmt.Printf("%+v\n", user) fmt.Println("6666") zap.L().Info("!!!!5") // rep. fmt.Println("777") rep.Id = user.ID rep.MgmtAccId = user.MgmtAccId rep.MgmtArtistUid = user.MgmtArtistUid rep.MgmtArtistId = user.MgmtArtistId rep.TelNum = user.TelNum rep.FddState = user.FddState rep.IsRealName = user.IsRealName //rep.Ruler = user.Ruler 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 int64 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 = 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 } func CheckInvitedCode(req *artistinfo.CheckInvitedCodeRequest) (rep *artistinfo.GetUserRespond, err error) { rep = &artistinfo.GetUserRespond{} // service := &artist.UserUpdateInfoService{} var user model.User if err = db.DB.First(&user, "invited_code = ?", req.InvitedCode).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.MgmtAccId = user.MgmtAccId rep.MgmtArtistUid = user.MgmtArtistUid rep.TelNum = user.TelNum rep.FddState = user.FddState 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 UnFinishList(req *artistinfo.UnFinishListRequest) (rep *artistinfo.UnFinishListRespond, err error) { rep = &artistinfo.UnFinishListRespond{} var user model.User if err := db.DB.Where("id = ? ", req.Id).First(&user).Error; err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } // todo //var realName model.RealName //if err := db.DB.Where("id = ? ", user.RealNameID).First(&realName).Error; err != nil { // zap.L().Error("get user info err", zap.Error(err)) // err = errors.New(m.ERROR_SELECT) // return nil, err //} //var contract model.Contract //var contractCount int64 //if err := db.DB.Model(&contract).Where("state = ? and (user_id = ? or card_id = ?) and (type =1 or type = 2 or type = 3)", "1", user.ID, realName.IDNum).Count(&contractCount).Error; err != nil { // err = errors.New(m.ERROR_SELECT) // return nil, err //} //rep.ContractList = contractCount //var accountStateCount int64 //fmt.Println(realName.IDNum) //if err := db.DB.Model(&contract).Where("state = ? and (user_id = ? or card_id = ?) and type = 4", "1", user.ID, realName.IDNum).Count(&accountStateCount).Error; err != nil { // zap.L().Error("get user info err", zap.Error(err)) // err = errors.New(m.ERROR_SELECT) // return nil, err //} //rep.AccountStateList = accountStateCount var supplyInfo model.SupplyInfo var supplyInfoCount int64 if err := db.DB.Model(&supplyInfo).Where("types = ? and user_id = ? ", "1", user.ID).Count(&supplyInfoCount).Error; err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } rep.SupplyInfoList += supplyInfoCount var exhVideo model.ExhVideo var exhVideoCount int64 if err := db.DB.Model(&exhVideo).Where("types = ? and user_id = ? ", "1", user.ID).Count(&exhVideoCount).Error; err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } rep.SupplyInfoList += exhVideoCount var exhExam model.ExhExam var exhExamCount int64 if err := db.DB.Model(&exhExam).Where("types = ? and user_id = ? ", "1", user.ID).Count(&exhExamCount).Error; err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } rep.SupplyInfoList += exhExamCount return rep, nil } func GetUserMsg(req *artistinfo.GetUserMsgRequest) (rep *artistinfo.GetUserMsgRespond, err error) { var user model.User err = db.DB.Where("id = ?", req.Id).First(&user).Error if err != nil { zap.L().Error("get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } userByte, err := json.Marshal(user) if err != nil { zap.L().Error("1get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } fmt.Println(string(userByte)) var re = new(artistinfo.GetUserMsgRespond) err = json.Unmarshal(userByte, re) if err != nil { zap.L().Error("1get user info err", zap.Error(err)) err = errors.New(m.ERROR_SELECT) return nil, err } rep = re return rep, nil } func FindUser(req *artistinfo.FindUserRequest) (rep *artistinfo.UserInfo, err error) { rep = &artistinfo.UserInfo{} var data = model.User{} var tx = db.DB.Model(model.User{}).Preload("RealNameInfo").Preload("InvitedBy.UserInfo.RealNameInfo") if req.MgmtAccId != 0 { tx = tx.Where("mgmt_acc_id = ?", req.MgmtAccId) } if req.MgmtArtistId != 0 { tx = tx.Where("mgmt_artist_id = ?", req.MgmtArtistId) } if req.InvitedCode != "" { tx = tx.Where("invited_code = ?", req.InvitedCode) } if req.MgmtArtistUid != "" { tx = tx.Where("mgmt_artist_uid = ?", req.MgmtArtistUid) } err = tx.First(&data).Error if err != nil { return } if data.RealNameInfo == nil { data.RealNameInfo = &model.RealName{} } if data.InvitedBy == nil { data.InvitedBy = &model.Invite{} } var invitedName string if data.InvitedBy != nil && data.InvitedBy.UserInfo != nil && data.InvitedBy.UserInfo.RealNameInfo != nil { invitedName = data.InvitedBy.UserInfo.RealNameInfo.Name } rep = &artistinfo.UserInfo{ Id: data.ID, DeletedAt: int64(data.DeletedAt), UpdatedAt: data.UpdatedAt.Unix(), CreatedAt: data.CreatedAt.Unix(), MgmtAccId: data.MgmtAccId, MgmtArtistId: data.MgmtArtistId, MgmtArtistUid: data.MgmtArtistUid, TelNum: data.TelNum, InvitedCode: data.InvitedBy.InviteCode, //邀请人的邀请码,不是用户个人邀请码 InvitedName: invitedName, //邀请人没有实名则为空字符串 IsRealName: data.IsRealName, RealNameId: data.RealNameId, RealName: &artistinfo.RealNameInfo{ Name: data.RealNameInfo.Name, IdNum: data.RealNameInfo.IdNum, IdCardFront: data.RealNameInfo.IdCardFront, IdCardBack: data.RealNameInfo.IdCardBack, Age: int32(data.RealNameInfo.Age), Sex: string(data.RealNameInfo.Sex), Birthday: data.RealNameInfo.Birthday, Address: data.RealNameInfo.Address, Id: data.RealNameInfo.ID, }, FddState: data.FddState, CustomerId: data.CustomerId, OpenId: data.OpenId, IsRead: data.IsRead, IsLock: data.IsLock, Account: data.Account, CertificateNum: data.CertificateNum, CertificateImg: data.CertificateImg, Photo: data.Photo, HtmlType: data.Htmltype, EnvType: data.Envtype, InviteCode: data.InviteCode, } return rep, nil } func UpdateUserData(req *artistinfo.UserInfo) (rep *artistinfo.CommonNoParams, err error) { var preUpdateData model.User var tx = db.DB if req.Id != 0 { tx = tx.Where("id = ?", req.Id) } else if req.MgmtAccId != 0 { tx = tx.Where("mgmt_acc_id = ?", req.MgmtAccId) } else { return nil, errors.New("Id或mgmt_acc_id不能为0") } if err = tx.Find(&preUpdateData).Error; err != nil { return nil, err } //判断需要更新内容 if req.MgmtArtistId != 0 { preUpdateData.MgmtArtistId = req.MgmtArtistId } if req.MgmtArtistUid != "" { preUpdateData.MgmtArtistUid = req.MgmtArtistUid } if req.TelNum != "" { preUpdateData.TelNum = req.TelNum } if req.InviteCode != "" { preUpdateData.InviteCode = req.InviteCode } if req.IsRealName != 0 { preUpdateData.IsRealName = req.IsRealName } if req.RealNameId != 0 { preUpdateData.RealNameId = req.RealNameId } if req.FddState != 0 { preUpdateData.FddState = req.FddState } if req.CustomerId != "" { preUpdateData.CustomerId = req.CustomerId } if req.OpenId != "" { preUpdateData.OpenId = req.OpenId } if req.IsRead != 0 { preUpdateData.IsRead = req.IsRead } if req.IsLock { preUpdateData.IsLock = req.IsLock } if req.Account != "" { preUpdateData.Account = req.Account } if req.CertificateNum != "" { preUpdateData.CertificateNum = req.CertificateNum } if req.CertificateImg != "" { preUpdateData.CertificateImg = req.CertificateImg } if req.Photo != "" { preUpdateData.Photo = req.Photo } if req.HtmlType != "" { preUpdateData.Htmltype = req.HtmlType } if req.EnvType != "" { preUpdateData.Envtype = req.EnvType } //var updateData = model.User{ // Model: model.Model{ // ID: req.Id, // CreatedAt: time.Unix(req.CreatedAt, 0), // UpdatedAt: time.Unix(req.UpdatedAt, 0), // DeletedAt: soft_delete.DeletedAt(req.DeletedAt), // }, // MgmtAccId: req.MgmtAccId, // MgmtArtistId: req.MgmtArtistId, // TelNum: req.TelNum, // InviteCode: req.InvitedCode, // IsRealName: req.IsRealName, // RealNameId: req.RealNameId, // FddState: req.FddState, // CustomerId: req.CustomerId, // OpenId: req.OpenId, // IsRead: req.IsRead, // IsLock: req.IsLock, // Account: req.Account, // CertificateNum: req.CertificateNum, // CertificateImg: req.CertificateImg, // Photo: req.Photo, // Htmltype: req.Htmltype, // Envtype: req.Envtype, //} db.DB.Save(&preUpdateData) return nil, nil }