@@ -30,35 +30,12 @@ func GetLevelList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | page := c.DefaultQuery("page", "1") | ||||
limit := c.DefaultQuery("limit", "10") | limit := c.DefaultQuery("limit", "10") | ||||
levelDb := implement.NewUserLevelDb(db.Db) | |||||
levels, total, err := levelDb.UserLevelAllByAscByPage(utils.StrToInt(page), utils.StrToInt(limit)) | |||||
list, total, err := svc.LevelManagementGetLevelList(page, limit) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
} | } | ||||
sql := "SElECT count(distinct id) as total, level FROM `user` GROUP BY level" | |||||
results, err := db.QueryNativeString(db.Db, sql) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var countMap = map[int]string{} | |||||
for _, res := range results { | |||||
countMap[utils.StrToInt(res["level"])] = res["total"] | |||||
} | |||||
list := make([]md2.LevelListNode, len(levels)) | |||||
for i, level := range levels { | |||||
list[i].LevelWeight = level.LevelWeight | |||||
list[i].LevelID = level.Id | |||||
list[i].LevelName = level.LevelName | |||||
list[i].Count = countMap[level.Id] | |||||
list[i].CreateAt = level.CreateAt | |||||
list[i].IsUse = level.IsUse | |||||
list[i].Memo = level.Memo | |||||
} | |||||
resp := md2.GetLevelListResp{ | resp := md2.GetLevelListResp{ | ||||
List: list, | List: list, | ||||
Paginate: md2.Paginate{ | Paginate: md2.Paginate{ | ||||
@@ -165,6 +142,21 @@ func UpdateLevel(c *gin.Context) { | |||||
forceColumns = append(forceColumns, "level_weight") | forceColumns = append(forceColumns, "level_weight") | ||||
} | } | ||||
if req.IsUse == "0" || req.IsUse == "1" { | if req.IsUse == "0" || req.IsUse == "1" { | ||||
// 判断当前该等级有没有被使用 | |||||
userDb := implement.NewUserDb(db.Db) | |||||
has, err := userDb.UserExistByParams(map[string]interface{}{ | |||||
"key": "level", | |||||
"value": req.IsUse, | |||||
}) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
if has { | |||||
e.OutErr(c, e.ERR, errors.New("该等级下存在会员,无法关闭该会员等级,请移除对应等级下会员或将会员移动到其他等级").Error()) | |||||
return | |||||
} | |||||
level.LevelWeight = utils.StrToInt(req.IsUse) | level.LevelWeight = utils.StrToInt(req.IsUse) | ||||
forceColumns = append(forceColumns, "is_use") | forceColumns = append(forceColumns, "is_use") | ||||
} | } | ||||
@@ -4,6 +4,7 @@ import ( | |||||
"applet/app/db" | "applet/app/db" | ||||
"applet/app/e" | "applet/app/e" | ||||
md2 "applet/app/md/member_center" | md2 "applet/app/md/member_center" | ||||
svc "applet/app/svc/member_center" | |||||
"applet/app/utils" | "applet/app/utils" | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | ||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | "code.fnuoos.com/EggPlanet/egg_models.git/src/model" | ||||
@@ -28,33 +29,11 @@ func GetTagList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | page := c.DefaultQuery("page", "1") | ||||
limit := c.DefaultQuery("limit", "10") | limit := c.DefaultQuery("limit", "10") | ||||
sql := "SElECT count(distinct uid) as total, tag_id FROM `user_tag_records` GROUP BY tag_id" | |||||
results, err := db.QueryNativeString(db.Db, sql) | |||||
list, total, err := svc.TagManagementGetList(page, limit) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
} | } | ||||
var countMap = map[int64]string{} | |||||
for _, res := range results { | |||||
countMap[utils.StrToInt64(res["tag_id"])] = res["total"] | |||||
} | |||||
tagDb := implement.NewUserTagDb(db.Db) | |||||
tags, total, err := tagDb.UserTagAllByAscByPage(utils.StrToInt(page), utils.StrToInt(limit)) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
list := make([]md2.TagListNode, len(*tags)) | |||||
for i, tag := range *tags { | |||||
list[i].Name = tag.TagName | |||||
list[i].Count = countMap[int64(tag.Id)] | |||||
list[i].CreateAt = tag.CreateAt | |||||
list[i].Memo = tag.Memo | |||||
list[i].TagID = utils.IntToStr(tag.Id) | |||||
list[i].IsPunish = tag.IsPunish | |||||
} | |||||
resp := md2.GetTagListResp{ | resp := md2.GetTagListResp{ | ||||
List: list, | List: list, | ||||
@@ -1,7 +1,14 @@ | |||||
package notice | package notice | ||||
import ( | import ( | ||||
"applet/app/db" | |||||
"applet/app/e" | |||||
"applet/app/md" | |||||
svc2 "applet/app/svc" | |||||
svc "applet/app/svc/member_center" | |||||
"applet/app/svc/notice" | "applet/app/svc/notice" | ||||
"applet/app/utils" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
) | ) | ||||
@@ -124,3 +131,210 @@ func AliyunSmsPushList(c *gin.Context) { | |||||
func AliyunSmsPushSave(c *gin.Context) { | func AliyunSmsPushSave(c *gin.Context) { | ||||
notice.AliyunSmsPushSave(c) | notice.AliyunSmsPushSave(c) | ||||
} | } | ||||
// AliyunSmsGetUserList | |||||
// @Summary 消息中心-短信推送记录-获取用户信息 | |||||
// @Tags 消息中心 | |||||
// @Description 获取用户信息 | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param req body md.JPushGetUserListReq true "(分页信息必填)" | |||||
// @Success 200 {Object} md.JPushGetUserListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/aliyunSms/getUserList [post] | |||||
func AliyunSmsGetUserList(c *gin.Context) { | |||||
var req *md.AliyunSmsUserListReq | |||||
if err := c.ShouldBindJSON(&req); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS, err.Error()) | |||||
return | |||||
} | |||||
levelDb := implement.NewUserLevelDb(db.Db) | |||||
levels, err1 := levelDb.UserLevelAllByAsc() | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
levelsList := make([]map[string]interface{}, 0) | |||||
levelsMap := make(map[int]string) | |||||
for _, level := range levels { | |||||
levelsList = append(levelsList, map[string]interface{}{ | |||||
"id": level.Id, | |||||
"name": level.LevelName, | |||||
}) | |||||
levelsMap[level.Id] = level.LevelName | |||||
} | |||||
tagDb := implement.NewUserTagDb(db.Db) | |||||
tags, err2 := tagDb.UserTagAllByAsc() | |||||
if err2 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err2.Error()) | |||||
return | |||||
} | |||||
tagsList := make([]map[string]interface{}, 0) | |||||
tagsMap := make(map[int]string) | |||||
for _, tag := range tags { | |||||
tagsList = append(tagsList, map[string]interface{}{ | |||||
"id": tag.Id, | |||||
"name": tag.TagName, | |||||
}) | |||||
tagsMap[tag.Id] = tag.TagName | |||||
} | |||||
stateList := []map[string]interface{}{ | |||||
{ | |||||
"name": "正常", | |||||
"value": "1", | |||||
}, | |||||
{ | |||||
"name": "冻结", | |||||
"value": "2", | |||||
}, | |||||
} | |||||
userMemberRequest := req.ToUserMemberRequest() | |||||
users, total, err3 := svc.UserManagementGetUsers(userMemberRequest) | |||||
if err3 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err3.Error()) | |||||
return | |||||
} | |||||
userIDs := make([]int64, len(users)) | |||||
for i, user := range users { | |||||
userIDs[i] = user.Id | |||||
} | |||||
recordsDb := implement.NewUserTagRecordsDb(db.Db) | |||||
records, err := recordsDb.UserTagRecordsFindByParams(map[string]interface{}{ | |||||
"key": "uid", | |||||
"value": userIDs, | |||||
}) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var levelCounts []md.LevelCount | |||||
err4 := db.Db.Table("user").Select("level, Count(*) AS count").GroupBy("level").Find(&levelCounts) | |||||
if err4 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err4.Error()) | |||||
return | |||||
} | |||||
userMap := make(map[int64]int, len(users)) | |||||
list := make([]md.GetUserListNode, len(users)) | |||||
for i, user := range users { | |||||
list[i] = md.GetUserListNode{ | |||||
ID: user.Id, | |||||
Sex: user.Sex, | |||||
Avatar: svc2.GetOssUrl(user.Avatar), | |||||
Nickname: user.Nickname, | |||||
Phone: user.Phone, | |||||
IsRealName: user.IsRealName, | |||||
InviteCode: user.SystemInviteCode, | |||||
ParentID: user.ParentUid, | |||||
ParentInviteCode: user.ParentSystemInviteCode, | |||||
ParentPhone: user.Phone, | |||||
RegisterTime: user.CreateAt, | |||||
Memo: user.Memo, | |||||
Wechat: user.UnionId, | |||||
RegisterType: user.RegisterType, | |||||
State: user.State, | |||||
LastLoginAt: user.UpdateAt, | |||||
} | |||||
var tempTagList []md.TagNode | |||||
list[i].Tag = tempTagList | |||||
userMap[user.Id] = i | |||||
level, ok := levelsMap[user.Level] | |||||
if ok { | |||||
list[i].LevelName = level | |||||
} | |||||
} | |||||
for _, record := range *records { | |||||
tempTagNode := md.TagNode{ | |||||
TagID: record.TagId, | |||||
TagName: tagsMap[record.TagId], | |||||
} | |||||
list[userMap[record.Uid]].Tag = append(list[userMap[record.Uid]].Tag, tempTagNode) | |||||
} | |||||
resp := md.AliyunSmsGetUserListResp{ | |||||
LevelsList: levelsList, | |||||
TagsList: tagsList, | |||||
StateList: stateList, | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: req.Limit, | |||||
Page: req.Page, | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} | |||||
// AliyunSmsTagList | |||||
// @Summary 消息中心-短信推送记录-标签管理(获取) | |||||
// @Tags 消息中心 | |||||
// @Description 标签管理(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param limit query int true "每页大小" | |||||
// @Param page query int true "页数" | |||||
// @Success 200 {object} md.AliyunSmsGetTagListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/aliyunSms/getTagList [get] | |||||
func AliyunSmsTagList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | |||||
limit := c.DefaultQuery("limit", "10") | |||||
list, total, err := svc.TagManagementGetList(page, limit) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
resp := md.AliyunSmsGetTagListResp{ | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: utils.StrToInt(limit), | |||||
Page: utils.StrToInt(page), | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} | |||||
// AliyunSmsGetLevelList | |||||
// @Summary 消息中心-短信推送记录-等级管理(获取) | |||||
// @Tags 消息中心 | |||||
// @Description 等级管理(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param limit query int true "每页大小" | |||||
// @Param page query int true "页数" | |||||
// @Success 200 {object} md.AliyunSmsGetLevelListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/aliyunSms/getLevelList [get] | |||||
func AliyunSmsGetLevelList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | |||||
limit := c.DefaultQuery("limit", "10") | |||||
list, total, err := svc.LevelManagementGetLevelList(page, limit) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
resp := md.AliyunSmsGetLevelListResp{ | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: utils.StrToInt(limit), | |||||
Page: utils.StrToInt(page), | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} |
@@ -1,7 +1,14 @@ | |||||
package notice | package notice | ||||
import ( | import ( | ||||
"applet/app/db" | |||||
"applet/app/e" | |||||
"applet/app/md" | |||||
svc2 "applet/app/svc" | |||||
svc "applet/app/svc/member_center" | |||||
"applet/app/svc/notice" | "applet/app/svc/notice" | ||||
"applet/app/utils" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
"github.com/gin-gonic/gin" | "github.com/gin-gonic/gin" | ||||
) | ) | ||||
@@ -79,3 +86,210 @@ func PushList(c *gin.Context) { | |||||
func PushSave(c *gin.Context) { | func PushSave(c *gin.Context) { | ||||
notice.PushSave(c) | notice.PushSave(c) | ||||
} | } | ||||
// JPushGetUserList | |||||
// @Summary 消息中心-基本配置-获取用户信息 | |||||
// @Tags 消息中心 | |||||
// @Description 获取用户信息 | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param req body md.JPushGetUserListReq true "(分页信息必填)" | |||||
// @Success 200 {Object} md.JPushGetUserListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/jPush/getUserList [post] | |||||
func JPushGetUserList(c *gin.Context) { | |||||
var req *md.JPushGetUserListReq | |||||
if err := c.ShouldBindJSON(&req); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS, err.Error()) | |||||
return | |||||
} | |||||
levelDb := implement.NewUserLevelDb(db.Db) | |||||
levels, err1 := levelDb.UserLevelAllByAsc() | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
levelsList := make([]map[string]interface{}, 0) | |||||
levelsMap := make(map[int]string) | |||||
for _, level := range levels { | |||||
levelsList = append(levelsList, map[string]interface{}{ | |||||
"id": level.Id, | |||||
"name": level.LevelName, | |||||
}) | |||||
levelsMap[level.Id] = level.LevelName | |||||
} | |||||
tagDb := implement.NewUserTagDb(db.Db) | |||||
tags, err2 := tagDb.UserTagAllByAsc() | |||||
if err2 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err2.Error()) | |||||
return | |||||
} | |||||
tagsList := make([]map[string]interface{}, 0) | |||||
tagsMap := make(map[int]string) | |||||
for _, tag := range tags { | |||||
tagsList = append(tagsList, map[string]interface{}{ | |||||
"id": tag.Id, | |||||
"name": tag.TagName, | |||||
}) | |||||
tagsMap[tag.Id] = tag.TagName | |||||
} | |||||
stateList := []map[string]interface{}{ | |||||
{ | |||||
"name": "正常", | |||||
"value": "1", | |||||
}, | |||||
{ | |||||
"name": "冻结", | |||||
"value": "2", | |||||
}, | |||||
} | |||||
userMemberRequest := req.ToUserMemberRequest() | |||||
users, total, err3 := svc.UserManagementGetUsers(userMemberRequest) | |||||
if err3 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err3.Error()) | |||||
return | |||||
} | |||||
userIDs := make([]int64, len(users)) | |||||
for i, user := range users { | |||||
userIDs[i] = user.Id | |||||
} | |||||
recordsDb := implement.NewUserTagRecordsDb(db.Db) | |||||
records, err := recordsDb.UserTagRecordsFindByParams(map[string]interface{}{ | |||||
"key": "uid", | |||||
"value": userIDs, | |||||
}) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
var levelCounts []md.LevelCount | |||||
err4 := db.Db.Table("user").Select("level, Count(*) AS count").GroupBy("level").Find(&levelCounts) | |||||
if err4 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err4.Error()) | |||||
return | |||||
} | |||||
userMap := make(map[int64]int, len(users)) | |||||
list := make([]md.GetUserListNode, len(users)) | |||||
for i, user := range users { | |||||
list[i] = md.GetUserListNode{ | |||||
ID: user.Id, | |||||
Sex: user.Sex, | |||||
Avatar: svc2.GetOssUrl(user.Avatar), | |||||
Nickname: user.Nickname, | |||||
Phone: user.Phone, | |||||
IsRealName: user.IsRealName, | |||||
InviteCode: user.SystemInviteCode, | |||||
ParentID: user.ParentUid, | |||||
ParentInviteCode: user.ParentSystemInviteCode, | |||||
ParentPhone: user.Phone, | |||||
RegisterTime: user.CreateAt, | |||||
Memo: user.Memo, | |||||
Wechat: user.UnionId, | |||||
RegisterType: user.RegisterType, | |||||
State: user.State, | |||||
LastLoginAt: user.UpdateAt, | |||||
} | |||||
var tempTagList []md.TagNode | |||||
list[i].Tag = tempTagList | |||||
userMap[user.Id] = i | |||||
level, ok := levelsMap[user.Level] | |||||
if ok { | |||||
list[i].LevelName = level | |||||
} | |||||
} | |||||
for _, record := range *records { | |||||
tempTagNode := md.TagNode{ | |||||
TagID: record.TagId, | |||||
TagName: tagsMap[record.TagId], | |||||
} | |||||
list[userMap[record.Uid]].Tag = append(list[userMap[record.Uid]].Tag, tempTagNode) | |||||
} | |||||
resp := md.JPushGetUserListResp{ | |||||
LevelsList: levelsList, | |||||
TagsList: tagsList, | |||||
StateList: stateList, | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: req.Limit, | |||||
Page: req.Page, | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} | |||||
// JPushGetTagList | |||||
// @Summary 消息中心-基本配置-标签管理(获取) | |||||
// @Tags 消息中心 | |||||
// @Description 标签管理(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param limit query int true "每页大小" | |||||
// @Param page query int true "页数" | |||||
// @Success 200 {object} md.JPushGetTagListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/jPush/getTagList [get] | |||||
func JPushGetTagList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | |||||
limit := c.DefaultQuery("limit", "10") | |||||
list, total, err := svc.TagManagementGetList(page, limit) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
resp := md.JPushGetTagListResp{ | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: utils.StrToInt(limit), | |||||
Page: utils.StrToInt(page), | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} | |||||
// JPushGetLevelList | |||||
// @Summary 消息中心-基本配置-等级管理(获取) | |||||
// @Tags 消息中心 | |||||
// @Description 等级管理(获取) | |||||
// @Accept json | |||||
// @Produce json | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Param limit query int true "每页大小" | |||||
// @Param page query int true "页数" | |||||
// @Success 200 {object} md.JPushGetLevelListResp "具体数据" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/notice/jPush/getLevelList [get] | |||||
func JPushGetLevelList(c *gin.Context) { | |||||
page := c.DefaultQuery("page", "1") | |||||
limit := c.DefaultQuery("limit", "10") | |||||
list, total, err := svc.LevelManagementGetLevelList(page, limit) | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
resp := md.JPushGetLevelListResp{ | |||||
List: list, | |||||
Paginate: md.Paginate{ | |||||
Limit: utils.StrToInt(limit), | |||||
Page: utils.StrToInt(page), | |||||
Total: total, | |||||
}, | |||||
} | |||||
e.OutSuc(c, resp, nil) | |||||
} |
@@ -1,5 +1,10 @@ | |||||
package md | package md | ||||
import ( | |||||
md "applet/app/md/member_center" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/model" | |||||
) | |||||
type NoticeListReq struct { | type NoticeListReq struct { | ||||
Page string `json:"page,required"` // 页数 | Page string `json:"page,required"` // 页数 | ||||
Limit string `json:"limit,required"` // 每页大小 | Limit string `json:"limit,required"` // 每页大小 | ||||
@@ -118,3 +123,187 @@ type NoticeAliyunSmsPushSaveReq struct { | |||||
TagList []string `json:"tag_list"` | TagList []string `json:"tag_list"` | ||||
Level []string `json:"level"` | Level []string `json:"level"` | ||||
} | } | ||||
type Paginate struct { | |||||
Limit int `json:"limit"` // 每页大小 | |||||
Page int `json:"page"` // 页数 | |||||
Total int64 `json:"total"` // 总数据量 | |||||
} | |||||
type JPushGetUserListResp struct { | |||||
LevelsList []map[string]interface{} `json:"levels_list"` // 等级列表 | |||||
TagsList []map[string]interface{} `json:"tags_list"` // 标签列表 | |||||
StateList []map[string]interface{} `json:"state_list"` // 状态列表 | |||||
List []GetUserListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` // 分页信息 | |||||
} | |||||
type TagNode struct { | |||||
TagID int `json:"tag_id"` // 标签 ID | |||||
TagName string `json:"tag_name"` // 标签名称 | |||||
} | |||||
type LevelCount struct { | |||||
Level int `xorm:"level"` | |||||
Count int `xorm:"count"` | |||||
} | |||||
type GetUserListNode struct { | |||||
ID int64 `json:"id"` // 会员 ID | |||||
Tag []TagNode `json:"tag"` // 会员标签 | |||||
Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) | |||||
Avatar string `json:"avatar"` // 头像 | |||||
Nickname string `json:"nickname"` // 昵称 | |||||
Phone string `json:"phone"` // 手机号 | |||||
IsRealName int `json:"is_real_name"` // 是否实名 0.未实名,1.已实名 | |||||
LevelName string `json:"level_name"` // 会员等级 | |||||
InviteCode string `json:"invite_code" example:"会员邀请码"` | |||||
ParentID int64 `json:"parent_id"` // 推荐人 ID | |||||
ParentInviteCode string `json:"parent_invite_code" example:"推荐人邀请码"` | |||||
ParentPhone string `json:"parent_phone" example:"推荐人手机号"` | |||||
RegisterTime string `json:"register_time"` // 注册时间 | |||||
Memo string `json:"memo"` // 备注 | |||||
Wechat string `json:"wechat"` // 微信号 | |||||
RegisterType int `json:"register_type"` // 注册类型 | |||||
State int `json:"state"` // 状态 | |||||
LastLoginAt string `json:"last_login_at"` // 最后登录时间 | |||||
} | |||||
type JPushGetUserListReq struct { | |||||
ID int64 `json:"id"` // 会员 ID | |||||
Nickname string `json:"nickname" example:"会员昵称"` | |||||
RecommendID int64 `json:"recommend_id"` // 推荐人 ID | |||||
Tag int `json:"tag"` // 标签 id | |||||
Phone string `json:"phone" example:"会员手机号"` | |||||
InviteCode string `json:"invite_code" example:"会员邀请码"` | |||||
ParentInviteCode string `json:"parent_invite_code" example:"上级邀请码"` | |||||
ParentPhone string `json:"parent_phone" example:"上级手机号"` | |||||
Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) | |||||
UnionId string `json:"union_id" example:"微信号"` | |||||
Level int `json:"level"` // 会员等级 | |||||
RegisterType int `json:"register_type"` // 注册类型(1:APP注册、2:H5注册) | |||||
State int `json:"state"` // 状态 | |||||
Effective int `json:"effective"` // 有效会员 | |||||
IsRealName int `json:"is_real_name"` // 是否实名 0.未实名,1.已实名 | |||||
Memo string `json:"memo"` // 备注 | |||||
RegisterBefore string `json:"register_before"` // 注册时间起点 | |||||
RegisterAfter string `json:"register_after"` // 注册时间终点 | |||||
LoginBefore string `json:"login_before"` // 最近登录开始时间 | |||||
LoginAfter string `json:"login_after"` // 最近登录结束时间 | |||||
Page int `json:"page,required"` | |||||
Limit int `json:"limit,required"` | |||||
} | |||||
type UserInfo struct { | |||||
model.User `xorm:"extends"` | |||||
TagID int `xorm:"tag_id"` | |||||
ParentPhone string `xorm:"parent_phone"` | |||||
ParentSystemInviteCode string `xorm:"parent_system_invite_code"` | |||||
ParentCustomInviteCode string `xorm:"parent_custom_invite_code"` | |||||
} | |||||
type JPushGetTagListResp struct { | |||||
List []md.TagListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` | |||||
} | |||||
type JPushGetLevelListResp struct { | |||||
List []md.LevelListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` | |||||
} | |||||
type AliyunSmsGetUserListResp struct { | |||||
LevelsList []map[string]interface{} `json:"levels_list"` // 等级列表 | |||||
TagsList []map[string]interface{} `json:"tags_list"` // 标签列表 | |||||
StateList []map[string]interface{} `json:"state_list"` // 状态列表 | |||||
List []GetUserListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` // 分页信息 | |||||
} | |||||
type AliyunSmsUserListReq struct { | |||||
ID int64 `json:"id"` // 会员 ID | |||||
Nickname string `json:"nickname" example:"会员昵称"` | |||||
RecommendID int64 `json:"recommend_id"` // 推荐人 ID | |||||
Tag int `json:"tag"` // 标签 id | |||||
Phone string `json:"phone" example:"会员手机号"` | |||||
InviteCode string `json:"invite_code" example:"会员邀请码"` | |||||
ParentInviteCode string `json:"parent_invite_code" example:"上级邀请码"` | |||||
ParentPhone string `json:"parent_phone" example:"上级手机号"` | |||||
Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) | |||||
UnionId string `json:"union_id" example:"微信号"` | |||||
Level int `json:"level"` // 会员等级 | |||||
RegisterType int `json:"register_type"` // 注册类型(1:APP注册、2:H5注册) | |||||
State int `json:"state"` // 状态 | |||||
Effective int `json:"effective"` // 有效会员 | |||||
IsRealName int `json:"is_real_name"` // 是否实名 0.未实名,1.已实名 | |||||
Memo string `json:"memo"` // 备注 | |||||
RegisterBefore string `json:"register_before"` // 注册时间起点 | |||||
RegisterAfter string `json:"register_after"` // 注册时间终点 | |||||
LoginBefore string `json:"login_before"` // 最近登录开始时间 | |||||
LoginAfter string `json:"login_after"` // 最近登录结束时间 | |||||
Page int `json:"page,required"` | |||||
Limit int `json:"limit,required"` | |||||
} | |||||
type AliyunSmsGetTagListResp struct { | |||||
List []md.TagListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` | |||||
} | |||||
type AliyunSmsGetLevelListResp struct { | |||||
List []md.LevelListNode `json:"list"` | |||||
Paginate Paginate `json:"paginate"` | |||||
} | |||||
func (req JPushGetUserListReq) ToUserMemberRequest() *md.UserManagementGetUserListReq { | |||||
return &md.UserManagementGetUserListReq{ | |||||
ID: req.ID, | |||||
Nickname: req.Nickname, | |||||
RecommendID: req.RecommendID, | |||||
Tag: req.Tag, | |||||
Phone: req.Phone, | |||||
InviteCode: req.InviteCode, | |||||
ParentInviteCode: req.ParentInviteCode, | |||||
ParentPhone: req.ParentPhone, | |||||
Sex: req.Sex, | |||||
UnionId: req.UnionId, | |||||
Level: req.Level, | |||||
RegisterType: req.RegisterType, | |||||
State: req.State, | |||||
Effective: req.Effective, | |||||
IsRealName: req.IsRealName, | |||||
Memo: req.Memo, | |||||
RegisterBefore: req.RegisterBefore, | |||||
RegisterAfter: req.RegisterAfter, | |||||
LoginBefore: req.LoginBefore, | |||||
LoginAfter: req.LoginAfter, | |||||
Page: req.Page, | |||||
Limit: req.Limit, | |||||
} | |||||
} | |||||
func (req AliyunSmsUserListReq) ToUserMemberRequest() *md.UserManagementGetUserListReq { | |||||
return &md.UserManagementGetUserListReq{ | |||||
ID: req.ID, | |||||
Nickname: req.Nickname, | |||||
RecommendID: req.RecommendID, | |||||
Tag: req.Tag, | |||||
Phone: req.Phone, | |||||
InviteCode: req.InviteCode, | |||||
ParentInviteCode: req.ParentInviteCode, | |||||
ParentPhone: req.ParentPhone, | |||||
Sex: req.Sex, | |||||
UnionId: req.UnionId, | |||||
Level: req.Level, | |||||
RegisterType: req.RegisterType, | |||||
State: req.State, | |||||
Effective: req.Effective, | |||||
IsRealName: req.IsRealName, | |||||
Memo: req.Memo, | |||||
RegisterBefore: req.RegisterBefore, | |||||
RegisterAfter: req.RegisterAfter, | |||||
LoginBefore: req.LoginBefore, | |||||
LoginAfter: req.LoginAfter, | |||||
Page: req.Page, | |||||
Limit: req.Limit, | |||||
} | |||||
} |
@@ -147,17 +147,17 @@ func rNotice(r *gin.RouterGroup) { | |||||
rJpush := r.Group("/jPush") //极光 | rJpush := r.Group("/jPush") //极光 | ||||
{ | { | ||||
rJpush.POST("/push/list", notice.PushList) | rJpush.POST("/push/list", notice.PushList) | ||||
rJpush.POST("/getUserList", member_center.UserManagementGetUserList) | |||||
rJpush.GET("/getTagList", member_center.GetTagList) | |||||
rJpush.GET("/getLevelList", member_center.GetLevelList) | |||||
rJpush.POST("/getUserList", notice.JPushGetUserList) | |||||
rJpush.GET("/getTagList", notice.JPushGetTagList) | |||||
rJpush.GET("/getLevelList", notice.JPushGetLevelList) | |||||
rJpush.POST("/push/save", notice.PushSave) | rJpush.POST("/push/save", notice.PushSave) | ||||
} | } | ||||
rAliyunSms := r.Group("/aliyunSms") //阿里云短信 | rAliyunSms := r.Group("/aliyunSms") //阿里云短信 | ||||
{ | { | ||||
rAliyunSms.POST("/file/phone", notice.AliyunSmsFilePhone) | rAliyunSms.POST("/file/phone", notice.AliyunSmsFilePhone) | ||||
rAliyunSms.POST("/getUserList", member_center.UserManagementGetUserList) | |||||
rAliyunSms.GET("/getTagList", member_center.GetTagList) | |||||
rAliyunSms.GET("/getLevelList", member_center.GetLevelList) | |||||
rAliyunSms.POST("/getUserList", notice.AliyunSmsGetUserList) | |||||
rAliyunSms.GET("/getTagList", notice.AliyunSmsTagList) | |||||
rAliyunSms.GET("/getLevelList", notice.AliyunSmsGetLevelList) | |||||
rAliyunSms.GET("/sale/base", notice.AliyunSmsSaleBase) | rAliyunSms.GET("/sale/base", notice.AliyunSmsSaleBase) | ||||
rAliyunSms.POST("/sale/save", notice.AliyunSmsSaleSave) | rAliyunSms.POST("/sale/save", notice.AliyunSmsSaleSave) | ||||
rAliyunSms.POST("/push/list", notice.AliyunSmsPushList) | rAliyunSms.POST("/push/list", notice.AliyunSmsPushList) | ||||
@@ -45,3 +45,34 @@ func BatchAddLevelTask(session *xorm.Session, tasks []md.LevelTaskNode, levelId | |||||
return nil | return nil | ||||
} | } | ||||
func LevelManagementGetLevelList(page, limit string) ([]md.LevelListNode, int64, error) { | |||||
levelDb := implement.NewUserLevelDb(db.Db) | |||||
levels, total, err := levelDb.UserLevelAllByAscByPage(utils.StrToInt(page), utils.StrToInt(limit)) | |||||
if err != nil { | |||||
return nil, 0, err | |||||
} | |||||
sql := "SElECT count(distinct id) as total, level FROM `user` GROUP BY level" | |||||
results, err := db.QueryNativeString(db.Db, sql) | |||||
if err != nil { | |||||
return nil, 0, err | |||||
} | |||||
var countMap = map[int]string{} | |||||
for _, res := range results { | |||||
countMap[utils.StrToInt(res["level"])] = res["total"] | |||||
} | |||||
list := make([]md.LevelListNode, len(levels)) | |||||
for i, level := range levels { | |||||
list[i].LevelWeight = level.LevelWeight | |||||
list[i].LevelID = level.Id | |||||
list[i].LevelName = level.LevelName | |||||
list[i].Count = countMap[level.Id] | |||||
list[i].CreateAt = level.CreateAt | |||||
list[i].IsUse = level.IsUse | |||||
list[i].Memo = level.Memo | |||||
} | |||||
return list, total, nil | |||||
} |
@@ -0,0 +1,38 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/db" | |||||
md "applet/app/md/member_center" | |||||
"applet/app/utils" | |||||
"code.fnuoos.com/EggPlanet/egg_models.git/src/implement" | |||||
) | |||||
func TagManagementGetList(page, limit string) ([]md.TagListNode, int64, error) { | |||||
sql := "SElECT count(distinct uid) as total, tag_id FROM `user_tag_records` GROUP BY tag_id" | |||||
results, err := db.QueryNativeString(db.Db, sql) | |||||
if err != nil { | |||||
return nil, 0, err | |||||
} | |||||
var countMap = map[int64]string{} | |||||
for _, res := range results { | |||||
countMap[utils.StrToInt64(res["tag_id"])] = res["total"] | |||||
} | |||||
tagDb := implement.NewUserTagDb(db.Db) | |||||
tags, total, err := tagDb.UserTagAllByAscByPage(utils.StrToInt(page), utils.StrToInt(limit)) | |||||
if err != nil { | |||||
return nil, 0, err | |||||
} | |||||
list := make([]md.TagListNode, len(*tags)) | |||||
for i, tag := range *tags { | |||||
list[i].Name = tag.TagName | |||||
list[i].Count = countMap[int64(tag.Id)] | |||||
list[i].CreateAt = tag.CreateAt | |||||
list[i].Memo = tag.Memo | |||||
list[i].TagID = utils.IntToStr(tag.Id) | |||||
list[i].IsPunish = tag.IsPunish | |||||
} | |||||
return list, total, nil | |||||
} |