From bd3a20d79dca2b3daf05bcfae49f4a73a328a1c0 Mon Sep 17 00:00:00 2001 From: shenjiachi Date: Fri, 8 Nov 2024 18:16:10 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=85=AC=E6=8E=92=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../public_platoon/hdl_basic.go | 254 ++++++++++++++++++ .../public_platoon/md_public_platoon.go | 31 ++- app/router/router.go | 2 + docs/docs.go | 99 +++++++ docs/swagger.json | 99 +++++++ docs/swagger.yaml | 65 +++++ 6 files changed, 547 insertions(+), 3 deletions(-) diff --git a/app/hdl/institutional_management/public_platoon/hdl_basic.go b/app/hdl/institutional_management/public_platoon/hdl_basic.go index b3538f9..e5308fc 100644 --- a/app/hdl/institutional_management/public_platoon/hdl_basic.go +++ b/app/hdl/institutional_management/public_platoon/hdl_basic.go @@ -113,11 +113,265 @@ func UpdatePublicPlatoonBasic(c *gin.Context) { e.OutSuc(c, "success", nil) } +// GetRelationshipMap +// @Summary 制度中心-公排管理-关系分布图(获取) +// @Tags 公排管理 +// @Description 关系分布图(获取) +// @Accept json +// @Produce json +// @param Authorization header string true "验证参数Bearer和token空格拼接" +// @Param req query public_platoon.GetRelationshipMapReq false "用户ID 手机号" +// @Success 200 {object} public_platoon.RelationshipMapResp "具体数据" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/publicPlatoon/relationshipMap [get] func GetRelationshipMap(c *gin.Context) { var req *public_platoon.GetRelationshipMapReq if err := c.ShouldBindJSON(&req); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS, err) return } + userDb := implement.NewUserDb(db.Db) + var uid int64 + if req.Phone != 0 { + user, err1 := userDb.UserGetOneByPhone(req.Phone) + if err1 != nil { + e.OutErr(c, e.ERR_DB_ORM, err1.Error()) + } + uid = user.Id + } + + if req.Uid != 0 { + uid = req.Uid + } + + UserRelationDb := implement.NewPublicPlatoonUserRelationDb(db.Db) + relations, err2 := UserRelationDb.PublicPlatoonUserRelationFind(uid) + if err2 != nil { + e.OutErr(c, e.ERR_DB_ORM, err2.Error()) + return + } + user, err3 := userDb.UserGetOneById(relations[0].Uid) + if err3 != nil { + e.OutErr(c, e.ERR_DB_ORM, err3.Error()) + return + } + var son []public_platoon.RelationshipMap + res := public_platoon.RelationshipMap{ + AvatarUrl: user.Avatar, + Phone: user.Phone, + Nickname: user.Nickname, + Uid: user.Id, + Pid: relations[0].RecommendUid, + Level: relations[0].Level1, + Position: relations[0].Position1, + SystemID: relations[0].Id, + Son: son, + } + m := make(map[int64]public_platoon.RelationshipMap) + m[res.Uid] = res + for i := 1; i < len(relations); i++ { + currentUser, err4 := userDb.UserGetOneById(relations[i].Uid) + if err4 != nil { + e.OutErr(c, e.ERR_DB_ORM, err4.Error()) + return + } + var sonNodes []public_platoon.RelationshipMap + node := public_platoon.RelationshipMap{ + AvatarUrl: currentUser.Avatar, + Phone: currentUser.Phone, + Nickname: currentUser.Nickname, + Uid: currentUser.Id, + Pid: relations[i].RecommendUid, + Level: relations[i].Level1, + Position: relations[i].Position1, + SystemID: relations[i].Id, + Son: sonNodes, + } + m[node.Uid] = node + if fatherNode, isOk := m[relations[i].FatherUid1]; isOk { + fatherNode.Son = append(fatherNode.Son, node) + } + } + + publicPlatoonBasicDb := implement.NewPublicPlatoonBasicSettingDb(db.Db) + publicPlatoonBasic, err := publicPlatoonBasicDb.PublicPlatoonBasicSettingGetOne() + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err) + return + } + now := time.Now() + if publicPlatoonBasic == nil { + publicPlatoonBasic = &model.PublicPlatoonBasicSetting{ + IsOpen: 1, + OriginatorUid: 0, + SeveralTimes: 0, + SeveralRows: 0, + SystemPunishReplace: 0, + SystemPunishReplaceValue: 0, + IsSelfActiveGetTeamRevenue: 0, + CreateAt: now.Format("2006-01-02 15:04:05"), + UpdateAt: now.Format("2006-01-02 15:04:05"), + } + _, err1 := publicPlatoonBasicDb.PublicPlatoonBasicSettingInsert(publicPlatoonBasic) + if err1 != nil { + e.OutErr(c, e.ERR_DB_ORM, err1.Error()) + return + } + } + var basicSetting public_platoon.GetPublicPlatoonBasicResp + basicSetting = public_platoon.GetPublicPlatoonBasicResp{ + IsOpen: publicPlatoonBasic.IsOpen, + OriginatorUid: publicPlatoonBasic.OriginatorUid, + SeveralTimes: publicPlatoonBasic.SeveralTimes, + SeveralRows: publicPlatoonBasic.SeveralRows, + SystemPunishReplace: publicPlatoonBasic.SystemPunishReplace, + SystemPunishReplaceValue: publicPlatoonBasic.SystemPunishReplaceValue, + IsSelfActiveGetTeamRevenue: publicPlatoonBasic.IsSelfActiveGetTeamRevenue, + } + + if uid == 0 { + uid = relations[0].Uid + } + var resp public_platoon.RelationshipMapResp + resp = public_platoon.RelationshipMapResp{ + Map: res, + BasicSetting: basicSetting, + SearchUid: uid, + } + e.OutSuc(c, resp, nil) +} + +// FindUserRelationshipMap +// @Summary 制度中心-公排管理-关系分布图(获取指定用户下级) +// @Tags 公排管理 +// @Description 关系分布图(获取指定用户下级) +// @Accept json +// @Produce json +// @param Authorization header string true "验证参数Bearer和token空格拼接" +// @Param req query public_platoon.FindUserRelationshipMapReq true "用户ID" +// @Success 200 {object} public_platoon.RelationshipMap "具体数据" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/publicPlatoon/findUserRelationshipMap [get] +func FindUserRelationshipMap(c *gin.Context) { + var req *public_platoon.FindUserRelationshipMapReq + if err := c.ShouldBindJSON(&req); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + + RelationDb := implement.NewPublicPlatoonUserRelationDb(db.Db) + relations, err1 := RelationDb.PublicPlatoonUserRelationFindByUid(req.Uid) + if err1 != nil { + e.OutErr(c, e.ERR_DB_ORM, err1) + return + } + userDb := implement.NewUserDb(db.Db) + user, err3 := userDb.UserGetOneById(relations[0].Uid) + if err3 != nil { + e.OutErr(c, e.ERR_DB_ORM, err3.Error()) + return + } + var son []public_platoon.RelationshipMap + res := public_platoon.RelationshipMap{ + AvatarUrl: user.Avatar, + Phone: user.Phone, + Nickname: user.Nickname, + Uid: user.Id, + Pid: relations[0].RecommendUid, + Level: relations[0].Level1, + Position: relations[0].Position1, + SystemID: relations[0].Id, + Son: son, + } + for i := 1; i < len(relations); i++ { + user, err4 := userDb.UserGetOneById(relations[i].Uid) + if err4 != nil { + e.OutErr(c, e.ERR_DB_ORM, err4.Error()) + return + } + node := public_platoon.RelationshipMap{ + AvatarUrl: user.Avatar, + Phone: user.Phone, + Nickname: user.Nickname, + Uid: user.Id, + Pid: relations[i].RecommendUid, + Level: relations[i].Level1, + Position: relations[i].Position1, + SystemID: relations[i].Id, + Son: nil, + } + res.Son = append(res.Son, node) + } + e.OutSuc(c, res, nil) +} + +// FindSubUserRelationshipMap +// @Summary 制度中心-公排管理-关系分布图(获取指定用户上级) +// @Tags 公排管理 +// @Description 关系分布图(获取指定用户上级) +// @Accept json +// @Produce json +// @param Authorization header string true "验证参数Bearer和token空格拼接" +// @Param req query public_platoon.FindSubUserRelationshipMapReq true "用户ID" +// @Success 200 {object} public_platoon.RelationshipMap "具体数据" +// @Failure 400 {object} md.Response "具体错误" +// @Router /api/publicPlatoon/findSubUserRelationshipMap [get] +func FindSubUserRelationshipMap(c *gin.Context) { + var req *public_platoon.FindSubUserRelationshipMapReq + if err := c.ShouldBindJSON(&req); err != nil { + e.OutErr(c, e.ERR_INVALID_ARGS, err) + return + } + + RelationDb := implement.NewPublicPlatoonUserRelationDb(db.Db) + sonRelation, err1 := RelationDb.PublicPlatoonUserRelationGetOneByUid(req.Uid) + if err1 != nil { + e.OutErr(c, e.ERR_DB_ORM, err1) + return + } + parentRelation, err2 := RelationDb.PublicPlatoonUserRelationGetOneByUid(sonRelation.FatherUid1) + if err2 != nil { + e.OutErr(c, e.ERR_DB_ORM, err2) + return + } + + userDb := implement.NewUserDb(db.Db) + son, err3 := userDb.UserGetOneById(sonRelation.Uid) + if err3 != nil { + e.OutErr(c, e.ERR_DB_ORM, err3.Error()) + return + } + + parent, err4 := userDb.UserGetOneById(parentRelation.Uid) + if err4 != nil { + e.OutErr(c, e.ERR_DB_ORM, err4.Error()) + return + } + + var sonNode []public_platoon.RelationshipMap + sonNode1 := public_platoon.RelationshipMap{ + AvatarUrl: son.Avatar, + Phone: son.Phone, + Nickname: son.Nickname, + Uid: son.Id, + Pid: sonRelation.RecommendUid, + Level: sonRelation.Level1, + Position: sonRelation.Position1, + SystemID: sonRelation.Id, + Son: nil, + } + sonNode = append(sonNode, sonNode1) + res := public_platoon.RelationshipMap{ + AvatarUrl: parent.Avatar, + Phone: parent.Phone, + Nickname: parent.Nickname, + Uid: parent.Id, + Pid: parentRelation.RecommendUid, + Level: parentRelation.Level1, + Position: parentRelation.Position1, + SystemID: parentRelation.Id, + Son: sonNode, + } + e.OutSuc(c, res, nil) } diff --git a/app/md/institutional_management/public_platoon/md_public_platoon.go b/app/md/institutional_management/public_platoon/md_public_platoon.go index 4e91d10..700c4b7 100644 --- a/app/md/institutional_management/public_platoon/md_public_platoon.go +++ b/app/md/institutional_management/public_platoon/md_public_platoon.go @@ -21,7 +21,32 @@ type UpdatePublicPlatoonBasicReq struct { } type GetRelationshipMapReq struct { - Phone int `json:"phone"` - Uid int `json:"uid"` - InviteCode string `json:"invite_code"` + Phone int `json:"phone"` + Uid int64 `json:"uid"` +} + +type RelationshipMap struct { + AvatarUrl string `json:"avatar_url"` + Phone string `json:"phone"` + Nickname string `json:"nickname"` + Uid int64 `json:"uid"` + Pid int64 `json:"pid"` + Level int `json:"level"` + Position int64 `json:"position"` + SystemID int `json:"system_id"` + Son []RelationshipMap `json:"son"` +} + +type RelationshipMapResp struct { + Map RelationshipMap `json:"map"` + BasicSetting GetPublicPlatoonBasicResp `json:"basicSetting"` + SearchUid int64 `json:"searchUid"` +} + +type FindUserRelationshipMapReq struct { + Uid int64 `json:"uid"` +} + +type FindSubUserRelationshipMapReq struct { + Uid int64 `json:"uid"` } diff --git a/app/router/router.go b/app/router/router.go index 515be17..d1cbb08 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -62,6 +62,8 @@ func rInstitutionalManagement(r *gin.RouterGroup) { //制度管理 rPublicPlatoon.GET("/getBasic", public_platoon.GetPublicPlatoonBasic) rPublicPlatoon.PUT("/updateBasic", public_platoon.UpdatePublicPlatoonBasic) rPublicPlatoon.GET("/relationshipMap", public_platoon.GetRelationshipMap) + rPublicPlatoon.GET("/findUserRelationshipMap", public_platoon.FindUserRelationshipMap) + rPublicPlatoon.GET("/findSubUserRelationshipMap", public_platoon.FindSubUserRelationshipMap) } } diff --git a/docs/docs.go b/docs/docs.go index bd02e32..e812cee 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -183,6 +183,56 @@ const docTemplate = `{ } } } + }, + "/api/publicPlatoon/relationshipMap": { + "get": { + "description": "关系分布图(获取)", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "公排管理" + ], + "summary": "制度中心-公排管理-关系分布图(获取)", + "parameters": [ + { + "type": "string", + "description": "验证参数Bearer和token空格拼接", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "用户ID", + "name": "uid", + "in": "query" + }, + { + "type": "string", + "description": "手机号", + "name": "phone", + "in": "query" + } + ], + "responses": { + "200": { + "description": "具体数据", + "schema": { + "$ref": "#/definitions/public_platoon.RelationshipMapResp" + } + }, + "400": { + "description": "具体错误", + "schema": { + "$ref": "#/definitions/md.Response" + } + } + } + } } }, "definitions": { @@ -256,6 +306,55 @@ const docTemplate = `{ "type": "integer" } } + }, + "public_platoon.RelationshipMap": { + "type": "object", + "properties": { + "avatar_url": { + "type": "string" + }, + "level": { + "type": "integer" + }, + "nickname": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "pid": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "son": { + "type": "array", + "items": { + "$ref": "#/definitions/public_platoon.RelationshipMap" + } + }, + "system_id": { + "type": "integer" + }, + "uid": { + "type": "integer" + } + } + }, + "public_platoon.RelationshipMapResp": { + "type": "object", + "properties": { + "basicSetting": { + "$ref": "#/definitions/public_platoon.GetPublicPlatoonBasicResp" + }, + "map": { + "$ref": "#/definitions/public_platoon.RelationshipMap" + }, + "searchUid": { + "type": "integer" + } + } } }, "securityDefinitions": { diff --git a/docs/swagger.json b/docs/swagger.json index 5aa60b0..74de1de 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -176,6 +176,56 @@ } } } + }, + "/api/publicPlatoon/relationshipMap": { + "get": { + "description": "关系分布图(获取)", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "公排管理" + ], + "summary": "制度中心-公排管理-关系分布图(获取)", + "parameters": [ + { + "type": "string", + "description": "验证参数Bearer和token空格拼接", + "name": "Authorization", + "in": "header", + "required": true + }, + { + "type": "string", + "description": "用户ID", + "name": "uid", + "in": "query" + }, + { + "type": "string", + "description": "手机号", + "name": "phone", + "in": "query" + } + ], + "responses": { + "200": { + "description": "具体数据", + "schema": { + "$ref": "#/definitions/public_platoon.RelationshipMapResp" + } + }, + "400": { + "description": "具体错误", + "schema": { + "$ref": "#/definitions/md.Response" + } + } + } + } } }, "definitions": { @@ -249,6 +299,55 @@ "type": "integer" } } + }, + "public_platoon.RelationshipMap": { + "type": "object", + "properties": { + "avatar_url": { + "type": "string" + }, + "level": { + "type": "integer" + }, + "nickname": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "pid": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "son": { + "type": "array", + "items": { + "$ref": "#/definitions/public_platoon.RelationshipMap" + } + }, + "system_id": { + "type": "integer" + }, + "uid": { + "type": "integer" + } + } + }, + "public_platoon.RelationshipMapResp": { + "type": "object", + "properties": { + "basicSetting": { + "$ref": "#/definitions/public_platoon.GetPublicPlatoonBasicResp" + }, + "map": { + "$ref": "#/definitions/public_platoon.RelationshipMap" + }, + "searchUid": { + "type": "integer" + } + } } }, "securityDefinitions": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 4836563..28890db 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -47,6 +47,38 @@ definitions: system_punish_replace_value: type: integer type: object + public_platoon.RelationshipMap: + properties: + avatar_url: + type: string + level: + type: integer + nickname: + type: string + phone: + type: string + pid: + type: integer + position: + type: integer + son: + items: + $ref: '#/definitions/public_platoon.RelationshipMap' + type: array + system_id: + type: integer + uid: + type: integer + type: object + public_platoon.RelationshipMapResp: + properties: + basicSetting: + $ref: '#/definitions/public_platoon.GetPublicPlatoonBasicResp' + map: + $ref: '#/definitions/public_platoon.RelationshipMap' + searchUid: + type: integer + type: object host: localhost:4001 info: contact: @@ -167,6 +199,39 @@ paths: summary: 制度中心-公排管理-公排基础设置(修改) tags: - 公排管理 + /api/publicPlatoon/relationshipMap: + get: + consumes: + - application/json + description: 关系分布图(获取) + parameters: + - description: 验证参数Bearer和token空格拼接 + in: header + name: Authorization + required: true + type: string + - description: 用户ID + in: query + name: uid + type: string + - description: 手机号 + in: query + name: phone + type: string + produces: + - application/json + responses: + "200": + description: 具体数据 + schema: + $ref: '#/definitions/public_platoon.RelationshipMapResp' + "400": + description: 具体错误 + schema: + $ref: '#/definitions/md.Response' + summary: 制度中心-公排管理-关系分布图(获取) + tags: + - 公排管理 securityDefinitions: MasterID: in: header