package db import ( "applet/app/db/model" "applet/app/md" "applet/app/utils/logx" "errors" "xorm.io/xorm" ) //UserProfileFindByArkID is get userprofile by arkid func UserProfileFindByArkID(Db *xorm.Engine, id interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("arkid_uid = ?", id).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } //UserProfileFindByInviteCode is get userprofile by InviteCode func UserProfileFindByInviteCode(Db *xorm.Engine, code string) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("invite_code = ?", code).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } //UserProfileFindByInviteCode is get userprofile by InviteCode func UserProfileFindByCustomInviteCode(Db *xorm.Engine, code string) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("custom_invite_code = ?", code).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } //UserProfileFindByInviteCodes is get userprofile by InviteCode func UserProfileFindByInviteCodes(Db *xorm.Engine, codes ...string) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.In("invite_code", codes).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } //UserProfileFindByCustomInviteCodes is get userprofile by CustomInviteCode func UserProfileFindByCustomInviteCodes(Db *xorm.Engine, codes ...string) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.In("custom_invite_code", codes).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByID search user_profile by userid func UserProfileFindByID(Db *xorm.Engine, id interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("uid = ?", id).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileOrderByNew 找最新的记录 func UserProfileOrderByNew(Db *xorm.Engine) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("invite_code != ''").OrderBy("uid desc").Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByTaobaoOpenID search user_profile ByTaobaoOpenID func UserProfileFindByTaobaoOpenID(Db *xorm.Engine, openid interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_taobao_oid = ?", openid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByQQOpenID search user_profile ByTaobaoOpenID func UserProfileFindByQQOpenID(Db *xorm.Engine, openid interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_qq_openid = ?", openid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByAppleToken search user_profile AppleToken func UserProfileFindByAppleToken(Db *xorm.Engine, token interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_apple_token = ?", token).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByWeChatOpenID search user_profile By 微信openid func UserProfileFindByWeChatOpenID(Db *xorm.Engine, openid interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_wechat_openid = ?", openid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByWeChatMiniOpenID search user_profile By 小程序openid func UserProfileFindByWeChatMiniOpenID(Db *xorm.Engine, openid interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_wechat_mini_openid = ?", openid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileFindByWeChatUnionID search user_profile By 微信唯一id func UserProfileFindByWeChatUnionID(Db *xorm.Engine, openid interface{}) (*model.UserProfile, error) { var m model.UserProfile if has, err := Db.Where("third_party_wechat_unionid = ?", openid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // UserProfileisExistByTaobaoOpenID is exist by Taobao func UserProfileisExistByTaobaoOpenID(Db *xorm.Engine, openid string) (bool, error) { has, err := Db.Where("third_party_taobao_oid = ?", openid).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByQQOpenID is exist by QQ openid func UserProfileisExistByQQOpenID(Db *xorm.Engine, openid string) (bool, error) { has, err := Db.Where("third_party_qq_openid = ?", openid).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByAppleToken is exist by apple token func UserProfileisExistByAppleToken(Db *xorm.Engine, token string) (bool, error) { has, err := Db.Where("third_party_apple_token = ?", token).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByWeChatOpenID is exist by Wecaht openid func UserProfileisExistByWeChatOpenID(Db *xorm.Engine, openid string) (bool, error) { has, err := Db.Where("third_party_wechat_openid = ?", openid).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByWeChatMiniOpenID is exist by Wecaht openid func UserProfileisExistByWeChatMiniOpenID(Db *xorm.Engine, openid string) (bool, error) { has, err := Db.Where("third_party_wechat_mini_openid = ?", openid).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByWeChatUnionID is exist by Wecaht openid func UserProfileisExistByWeChatUnionID(Db *xorm.Engine, openid string) (bool, error) { has, err := Db.Where("third_party_wechat_unionid = ?", openid).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistByRelationIDAndSpecialID is exist by RelationIdAndSpecialId func UserProfileisExistByRelationIDAndSpecialID(Db *xorm.Engine, SpecialID, RelationID int64) (bool, error) { has, err := Db.Where("acc_taobao_self_id = ? AND acc_taobao_share_id = ?", SpecialID, RelationID).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileisExistBySpecialID is exist by SpecialId func UserProfileisExistBySpecialID(Db *xorm.Engine, SpecialID string) (bool, error) { has, err := Db.Where("acc_taobao_self_id = ? ", SpecialID).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileCountByRelationID 统计relationID数量 func UserProfileCountByRelationID(Db *xorm.Engine) (total int64, err error) { relate := new(model.UserProfile) total, err = Db.Where("acc_taobao_share_id > 0").Count(relate) return } // UserProfileCountByPUID 统计直推下级数量 func UserProfileCountByPUID(Db *xorm.Engine, puid int) (total int64, err error) { relate := new(model.UserProfile) total, err = Db.Where("parent_uid = ?", puid).Count(relate) return } // UserProfileisExistByRelationID is exist by RelationID func UserProfileisExistByRelationID(Db *xorm.Engine, RelationID string) (bool, error) { has, err := Db.Where("acc_taobao_share_id = ? ", RelationID).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileFindByIDs is in sql by ids func UserProfileFindByIDs(Db *xorm.Engine, uids ...int) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.In("uid", uids).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UserProfileByPuid search user_profile by parent_uid func UserProfileByPuid(Db *xorm.Engine, puid interface{}) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.Where("parent_uid = ?", puid).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } //UsersProfileInByIds is profiles by ids func UsersProfileInByIds(Db *xorm.Engine, ids []int, limit, start int) (*[]model.UserProfile, error) { var m []model.UserProfile if limit == 0 && start == 0 { if err := Db.In("uid", ids).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } if err := Db.In("uid", ids).Limit(limit, start).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UsersProfileInByUIDByisVerify is In查询 以及是否是有效用户 func UsersProfileInByUIDByisVerify(Db *xorm.Engine, ids []int, isVerify interface{}) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.In("uid", ids).Where("is_verify = ?", isVerify). Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UsersProfileInByIdsByDesc is 根据某列 降序 func UsersProfileInByIdsByDesc(Db *xorm.Engine, ids []int, limit, start int, c string) (*[]model.UserProfile, error) { var m []model.UserProfile if limit == 0 && start == 0 { if err := Db.In("uid", ids).Desc(c).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } if err := Db.In("uid", ids).Desc(c).Limit(limit, start).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UsersProfileInByIdsByAsc is 根据某列 升序 func UsersProfileInByIdsByAsc(Db *xorm.Engine, ids []int, limit, start int, c string) (*[]model.UserProfile, error) { var m []model.UserProfile if limit == 0 && start == 0 { if err := Db.In("uid", ids).Asc(c).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } if err := Db.In("uid", ids).Asc(c).Limit(limit, start).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UsersProfileByAll is 查询所有分享id大于0的数据 func UsersProfileByTaobaoShateIdNotNull(Db *xorm.Engine, limit, start int) (*[]model.UserProfile, error) { var m []model.UserProfile if err := Db.Where("acc_taobao_share_id > 0").Limit(limit, start).Find(&m); err != nil { return nil, logx.Warn(err) } return &m, nil } // UserProfileIsExistByUserID is mobile exist func UserProfileIsExistByUserID(Db *xorm.Engine, id int) (bool, error) { has, err := Db.Where("uid = ?", id).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileIsExistByInviteCode is exist ? func UserProfileIsExistByInviteCode(Db *xorm.Engine, code string) (bool, error) { has, err := Db.Where("invite_code = ?", code).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } // UserProfileIsExistByCustomInviteCode is exist ? func UserProfileIsExistByCustomInviteCode(Db *xorm.Engine, code string) (bool, error) { has, err := Db.Where("custom_invite_code = ?", code).Exist(&model.UserProfile{}) if err != nil { return false, err } return has, nil } //UserProfileInsert is insert user func UserProfileInsert(Db *xorm.Engine, userProfile *model.UserProfile) (int64, error) { affected, err := Db.Insert(userProfile) if err != nil { return 0, err } return affected, nil } //UserProfileUpdate is update userprofile func UserProfileUpdate(Db *xorm.Engine, uid interface{}, userProfile *model.UserProfile, forceCols ...string) (int64, error) { var ( affected int64 err error ) if forceCols != nil { affected, err = Db.Where("uid=?", uid).Cols(forceCols...).Update(userProfile) } else { affected, err = Db.Where("uid=?", uid).Update(userProfile) } if err != nil { return 0, logx.Warn(err) } return affected, nil } //UserProfileUpdateByArkID is update userprofile func UserProfileUpdateByArkID(Db *xorm.Engine, arkid interface{}, userProfile *model.UserProfile, forceCols ...string) (int64, error) { var ( affected int64 err error ) if forceCols != nil { affected, err = Db.Where("arkid_uid=?", arkid).Cols(forceCols...).Update(userProfile) } else { affected, err = Db.Where("arkid_uid=?", arkid).Update(userProfile) } if err != nil { return 0, logx.Warn(err) } return affected, nil } // UserProfileDelete is delete user profile func UserProfileDelete(Db *xorm.Engine, uid interface{}) (int64, error) { return Db.Where("uid = ?", uid).Delete(model.UserProfile{}) } func UserProfileFindByIdWithSession(session *xorm.Session, uid int) (*model.UserProfile, error) { var m model.UserProfile if has, err := session.Where("uid = ?", uid).Get(&m); err != nil || has == false { return nil, logx.Warn(err) } return &m, nil } // 在事务中更新用户信息 func UserProfileUpdateWithSession(session *xorm.Session, uid interface{}, userProfile *model.UserProfile, forceCols ...string) (int64, error) { var ( affected int64 err error ) if forceCols != nil { affected, err = session.Where("uid=?", uid).Cols(forceCols...).Update(userProfile) } else { affected, err = session.Where("uid=?", uid).Update(userProfile) } if err != nil { return 0, logx.Warn(err) } return affected, nil } // 根据uid获取md.user func UserAllInfoByUid(Db *xorm.Engine, uid interface{}) (*md.User, error) { u, err := UserFindByID(Db, uid) if err != nil { return nil, err } if u == nil { return nil, errors.New("user is nil") } up, err := UserProfileFindByID(Db, uid) if err != nil { return nil, err } // 获取user 等级 ul, err := UserLevelByID(Db, u.Level) if err != nil { return nil, err } user := &md.User{ Info: u, Profile: up, Level: ul, } return user, nil }