|
- package db
-
- import (
- "applet/app/db/model"
- "applet/app/utils/logx"
-
- "xorm.io/xorm"
- )
-
- // UserRelateInsert is 插入一条数据到用户关系表
- func UserRelateInsert(Db *xorm.Engine, userRelate *model.UserRelate) (int64, error) {
- affected, err := Db.Insert(userRelate)
- if err != nil {
- return 0, err
- }
- return affected, nil
- }
-
- //UserRelateByPuid is 获取用户关系列表 by puid
- func UserRelatesByPuid(Db *xorm.Engine, puid interface{}, limit, start int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if limit == 0 && start == 0 {
- if err := Db.Where("parent_uid = ?", puid).
- Cols(`id,parent_uid,uid,level,invite_time`).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
- if err := Db.Where("parent_uid = ?", puid).
- Cols(`id,parent_uid,uid,level,invite_time`).Limit(limit, start).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
-
- return &m, nil
- }
-
- //UserRelatesByPuidByLv is 获取用户关系列表 by puid 和lv
- func UserRelatesByPuidByLv(Db *xorm.Engine, puid, lv interface{}, limit, start int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if limit == 0 && start == 0 {
- if err := Db.Where("parent_uid = ? AND level = ?", puid, lv).
- Cols(`id,parent_uid,uid,level,invite_time`).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
- if err := Db.Where("parent_uid = ? AND level = ?", puid, lv).
- Cols(`id,parent_uid,uid,level,invite_time`).Limit(limit, start).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
-
- return &m, nil
- }
-
- //UserRelatesByPuidByLvByTime is 获取直属 level =1用户关系列表 by puid 和lv by time
- func UserRelatesByPuidByLvByTime(Db *xorm.Engine, puid, lv, stime, etime interface{}, limit, start int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if limit == 0 && start == 0 {
- if err := Db.Where("parent_uid = ? AND level = ? AND invite_time > ? AND invite_time < ?", puid, lv, stime, etime).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
- if err := Db.Where("parent_uid = ? AND level = ? AND invite_time > ? AND invite_time < ?", puid, lv, stime, etime).
- Limit(limit, start).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
-
- return &m, nil
- }
-
- //UserRelatesByPuidByTime is 获取户关系列表 by puid 和lv by time
- func UserRelatesByPuidByTime(Db *xorm.Engine, puid, stime, etime interface{}, limit, start int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if limit == 0 && start == 0 {
- if err := Db.Where("parent_uid = ? AND invite_time > ? AND invite_time < ?", puid, stime, etime).
- Cols(`id,parent_uid,uid,level,invite_time`).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
- if err := Db.Where("parent_uid = ? AND invite_time > ? AND invite_time < ?", puid, stime, etime).
- Cols(`id,parent_uid,uid,level,invite_time`).Limit(limit, start).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
-
- return &m, nil
- }
-
- //UserRelatesByPuidExceptLv is 获取用户关系列表 by puid 和非 lv
- func UserRelatesByPuidExceptLv(Db *xorm.Engine, puid, lv interface{}, limit, start int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if limit == 0 && start == 0 {
- if err := Db.Where("parent_uid = ? AND level != ?", puid, lv).
- Cols(`id,parent_uid,uid,level,invite_time`).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
- if err := Db.Where("parent_uid = ? AND level != ?", puid, lv).
- Cols(`id,parent_uid,uid,level,invite_time`).Limit(limit, start).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
-
- return &m, nil
- }
-
- //UserRelateByUID is 获取用户关系表 by uid
- func UserRelateByUID(Db *xorm.Engine, uid interface{}) (*model.UserRelate, bool, error) {
- r := new(model.UserRelate)
- has, err := Db.Where("uid=?", uid).Get(r)
- if err != nil {
- return nil, false, err
- }
- return r, has, nil
- }
-
- //UserRelateByUIDByLv is 获取用户关系表 by uid
- func UserRelateByUIDByLv(Db *xorm.Engine, uid, lv interface{}) (*model.UserRelate, bool, error) {
- r := new(model.UserRelate)
- has, err := Db.Where("uid=? AND level=?", uid, lv).Get(r)
- if err != nil {
- return nil, false, err
- }
- return r, has, nil
- }
-
- //UserRelateByUIDAndPUID 根据 Puid 和uid 查找 ,用于确认关联
- func UserRelateByUIDAndPUID(Db *xorm.Engine, uid, puid interface{}) (*model.UserRelate, bool, error) {
- r := new(model.UserRelate)
- has, err := Db.Where("uid=? AND parent_uid=?", uid, puid).Get(r)
- if err != nil {
- return nil, false, err
- }
- return r, has, nil
- }
-
- //UserRelatesByPuIDAndLv is 查询用户关系表 获取指定等级和puid的关系
- func UserRelatesByPuIDAndLv(Db *xorm.Engine, puid, lv interface{}) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if err := Db.Where("parent_uid = ? AND level = ?", puid, lv).
- Cols(`id,parent_uid,uid,level,invite_time`).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
-
- // UserRelateInByUID is In查询
- func UserRelateInByUID(Db *xorm.Engine, ids []int) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if err := Db.In("uid", ids).
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
-
- // UserRelatesByUIDDescLv is Where 查询 根据level 降序
- func UserRelatesByUIDDescLv(Db *xorm.Engine, id interface{}) (*[]model.UserRelate, error) {
- var m []model.UserRelate
- if err := Db.Where("uid = ?", id).Desc("level").
- Find(&m); err != nil {
- return nil, logx.Warn(err)
- }
- return &m, nil
- }
-
- //UserRelateCountByPUID is 根据puid 计数
- func UserRelateCountByPUID(Db *xorm.Engine, pid interface{}) (int64, error) {
-
- count, err := Db.Where("parent_uid = ?", pid).Count(model.UserRelate{})
- if err != nil {
- return 0, nil
- }
- return count, nil
- }
-
- //UserRelateDelete is 删除关联他上级的关系记录,以及删除他下级的关联记录
- func UserRelateDelete(Db *xorm.Engine, uid interface{}) (int64, error) {
- // 删除与之上级的记录
- _, err := Db.Where("uid = ?", uid).Delete(model.UserRelate{})
- if err != nil {
- return 0, err
- }
- // 删除与之下级的记录
- _, err = Db.Where("parent_uid = ?", uid).Delete(model.UserRelate{})
- if err != nil {
- return 0, err
- }
-
- return 1, nil
- }
-
- //UserRelateDelete is 删除关联他上级的关系记录
- func UserRelateExtendDelete(Db *xorm.Engine, uid interface{}) (int64, error) {
- // 删除与之上级的记录
- _, err := Db.Where("uid = ?", uid).Delete(model.UserRelate{})
- if err != nil {
- return 0, err
- }
- return 1, nil
- }
|