package notice 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/utils" "code.fnuoos.com/EggPlanet/egg_models.git/src/implement" "github.com/gin-gonic/gin" ) // List // @Summary 消息中心-基本配置-通知模板 // @Tags 消息中心 // @Description 基本配置-通知模板 // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Param req body md.NoticeListReq true "(分页信息必填)" // @Success 200 {object} md.NoticeListResp "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/notice/base/list [post] func List(c *gin.Context) { notice.List(c) } // Save // @Summary 消息中心-基本配置-通知模板添加编辑 // @Tags 消息中心 // @Description 基本配置-通知模板添加编辑 // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Param req body md.NoticeSaveReq true "(分页信息必填)" // @Success 200 {string} "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/notice/base/save [post] func Save(c *gin.Context) { notice.Save(c) } // Del // @Summary 消息中心-基本配置-通知模板删除 // @Tags 消息中心 // @Description 基本配置-通知模板删除 // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Param req body md.NoticeDelReq true "(分页信息必填)" // @Success 200 {string} "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/notice/base/del [post] func Del(c *gin.Context) { notice.Del(c) } // PushList // @Summary 消息中心-基本配置-推送记录列表 // @Tags 消息中心 // @Description 基本配置-推送记录列表 // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Param req body md.NoticeListReq true "(分页信息必填)" // @Success 200 {object} md.NoticePushListResp "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/notice/jPush/push/list [post] func PushList(c *gin.Context) { notice.PushList(c) } // PushSave // @Summary 消息中心-基本配置-推送记录添加-发送(不做编辑了) // @Tags 消息中心 // @Description 基本配置-推送记录添加-发送 (不做编辑了) // @Accept json // @Produce json // @param Authorization header string true "验证参数Bearer和token空格拼接" // @Param req body md.NoticePushSaveReq true "(分页信息必填)" // @Success 200 {string} "具体数据" // @Failure 400 {object} md.Response "具体错误" // @Router /api/notice/jPush/push/save [post] func PushSave(c *gin.Context) { 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) }