You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.7 KiB
84 lines
2.7 KiB
package BaseRolePersonService
|
|
|
|
import (
|
|
"dsBaseWeb/Business/BaseRolePerson/BaseRolePersonProto"
|
|
"dsBaseWeb/Business/BaseTeacher/BaseTeacherProto"
|
|
"dsBaseWeb/Business/BaseTeacher/BaseTeacherService"
|
|
"dsBaseWeb/Utils/CommonUtil"
|
|
"encoding/json"
|
|
)
|
|
|
|
func GetPersonRoleInfo(personId string, actionPersonId string, actionIpAddress string) (*BaseRolePersonProto.Reply, error) {
|
|
Reply, err := PageBaseRolePerson(BaseRolePersonProto.QueryArg{PersonId: personId, ActionPersonId: actionPersonId, ActionIpAddress: actionIpAddress})
|
|
if Reply.List != "[]" {
|
|
PersonReply, _ := BaseTeacherService.GetBaseTeacher(BaseTeacherProto.ModelArg{PersonId: personId, ActionPersonId: actionPersonId, ActionIpAddress: actionIpAddress})
|
|
handleListStr := CommonUtil.ListMerge(Reply.List, PersonReply.List, "person_id", "person_id", "person_name", "xm")
|
|
Reply.List = handleListStr
|
|
}
|
|
return Reply, err
|
|
}
|
|
|
|
func GetManageAreaInfo(personId string, actionPersonId string, actionIpAddress string) (*BaseRolePersonProto.Reply, error) {
|
|
Reply, err := GetManageArea(BaseRolePersonProto.GetManageAreaArg{PersonId: personId, ActionPersonId: actionPersonId, ActionIpAddress: actionIpAddress})
|
|
afterConversion := convertAreaTree(Reply.List)
|
|
Reply.List = afterConversion
|
|
return Reply, err
|
|
}
|
|
|
|
func convertAreaTree(strJson string) string {
|
|
var originalArr []Original
|
|
var oneLevelArr []OneLevel
|
|
twoLevelMap := make(map[string][]Original)
|
|
|
|
json.Unmarshal([]byte(strJson), &originalArr)
|
|
for i := 0; i < len(originalArr); i++ {
|
|
jsonObj := originalArr[i]
|
|
if jsonObj.ParentCode != "-1" {
|
|
res, exist := twoLevelMap[jsonObj.ParentCode]
|
|
if exist {
|
|
res = append(res, jsonObj)
|
|
twoLevelMap[jsonObj.ParentCode] = res
|
|
} else {
|
|
var tempOriginalArr []Original
|
|
tempOriginalArr = append(tempOriginalArr, jsonObj)
|
|
twoLevelMap[jsonObj.ParentCode] = tempOriginalArr
|
|
}
|
|
} else {
|
|
var oneLevel OneLevel
|
|
oneLevel.AreaCode = jsonObj.AreaCode
|
|
oneLevel.ParentCode = jsonObj.ParentCode
|
|
oneLevel.AreaName = jsonObj.AreaName
|
|
oneLevelArr = append(oneLevelArr, oneLevel)
|
|
}
|
|
}
|
|
|
|
for i := 0; i < len(oneLevelArr); i++ {
|
|
jsonObj := oneLevelArr[i]
|
|
resOne, existOne := twoLevelMap[jsonObj.AreaCode]
|
|
if existOne {
|
|
oneLevelArr[i].Children = resOne
|
|
} else {
|
|
var originalArrTemp []Original
|
|
json.Unmarshal([]byte("[]"), &originalArrTemp)
|
|
oneLevelArr[i].Children = originalArrTemp
|
|
}
|
|
}
|
|
|
|
oneLevelByte, _ := json.Marshal(oneLevelArr)
|
|
|
|
return string(oneLevelByte)
|
|
}
|
|
|
|
type OneLevel struct {
|
|
AreaCode string `json:"area_code"`
|
|
ParentCode string `json:"parent_code"`
|
|
AreaName string `json:"area_name"`
|
|
Children []Original `json:"children"`
|
|
}
|
|
|
|
type Original struct {
|
|
AreaCode string `json:"area_code"`
|
|
ParentCode string `json:"parent_code"`
|
|
AreaName string `json:"area_name"`
|
|
}
|