syntax = "v1"

info (
	title: // TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"

service ldap-admin {
	//获取API列表
	@handler GetApisHandler
	get /api/ldap-admin/get_apis(GetApisReq) returns (response);
	
	//保存API
	@handler SaveApiHandler
	post /api/ldap-admin/save_api(SaveApiReq) returns (response);
	
	//保存菜单
	@handler SaveMenuHandler
	post /api/ldap-admin/save_menu(SaveMenuReq) returns (response);
	//删除菜单
	@handler DeleteMenuHandler
	post /api/ldap-admin/delete_menu(DeleteMenuReq) returns (response);
	//获取菜单详情
	@handler GetMenuDetailHandler
	get /api/ldap-admin/get_menu_detail(GetMenuDetailReq) returns (response);
	//获取菜单列表
	@handler GetMenusHandler
	get /api/ldap-admin/get_menus(GetMenusReq) returns (response);
	//获取ldap组织列表
	@handler GetLdapOrginationsHandler
	get /api/ldap-admin/get_ldap_orginations(request) returns (response);
	//增加ldap组织
	@handler CreateLdapOrginationHandler
	post /api/ldap-admin/create_ldap_orgination(CreateLdapOrginationReq) returns (response);
	//删除ldap组织
	@handler DeleteLdapOrginationHandler
	post /api/ldap-admin/delete_ldap_orgination(DeleteLdapOrginationReq) returns (response);
	//修改ldap组织
	@handler UpdateLdapOrginationHandler
	post /api/ldap-admin/update_ldap_orgination(UpdateLdapOrginationReq) returns (response);
	//添加ldap用户到员工基本组中
	@handler CreateLdapUserHandler
	post /api/ldap-admin/create_ldap_user(CreateLdapUserReq) returns (response);
	//修改ldap用户信息
	@handler UpdateLdapUserHandler
	post /api/ldap-admin/update_ldap_user(UpdateLdapUserReq) returns (response);
	//删除ldap用户
	@handler DeleteLdapUserHandler
	post /api/ldap-admin/delete_ldap_user(DeleteLdapUserReq) returns (response);
	//获取ldap用户信息
	@handler GetLdapUserInfoHandler
	get /api/ldap-admin/get_ldap_user_info(GetLdapUserInfoReq) returns (response);
	//ldap组织添加成员
	@handler AddLdapOrginationMemberHandler
	post /api/ldap-admin/add_ldap_orgination_member(AddLdapOrginationMemberReq) returns (response);
	//ldap组织移除成员
	@handler RemoveLdapOrginationMemberHandler
	post /api/ldap-admin/remove_ldap_orgination_member(RemoveLdapOrginationMemberReq) returns (response);
}

type GetApisReq {
	Sort        string `form:"sort,optional"`
	CurrentPage int    `form:"current_page,optional,default=1"`
	PerPage     int    `form:"per_page,optional,default=10"`
}

type SaveApiReq {
	Id       int64  `json:"id"`
	Method   string `json:"method"`
	Path     string `json:"path"`
	Category string `json:"category"`
	Remark   string `json:"remark"`
}

//保存菜单
type SaveMenuReq {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	Title    string `json:"title"`
	Icon     string `json:"icon"`
	Path     string `json:"path"`
	Sort     int64  `json:"sort"`
	ParentId int64  `json:"parent_id"`
	Status   int64  `json:"status,options=0|1"`
}
//删除菜单
type DeleteMenuReq {
	Id int64 `json:"id"`
}
//获取菜单详情
type GetMenuDetailReq {
	Id int64 `form:"id"`
}
type GetMenuDetailRsp {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	Title    string `json:"title"`
	Icon     string `json:"icon"`
	Path     string `json:"path"`
	Sort     int64  `json:"sort"`
	ParentId int64  `json:"parent_id"`
	Status   int64  `json:"status"`
}
//获取菜单列表
type GetMenusReq {
	CurrentPage int    `form:"current_page"`
	Name        string `form:"name"`
	Title       string `form:"title"`
	Path        string `form:"path"`
	ParentId    *int64 `form:"parent_id"`
}
type GetMenusRsp {
	List []MenuItem `json:"list"`
	Meta Meta       `json:"meta"`
}
type MenuItem {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	Title    string `json:"title"`
	Icon     string `json:"icon"`
	Path     string `json:"path"`
	Sort     int64  `json:"sort"`
	ParentId int64  `json:"parent_id"`
	Status   int64  `json:"status"`
}
//增加ldap组织
type CreateLdapOrginationReq {
	OrginationOu       string `json:"orgination_ou"`        //组织ou
	BusinessCategory   string `json:"business_category"`    //组织分类名称
	ParentOrginationDN string `json:"parent_orgination_dn"` //父级dn
}
//删除ldap组织
type DeleteLdapOrginationReq {
	OrginationDN string `json:"orgination_dn"` //组织dn
}
//修改ldap组织
type UpdateLdapOrginationReq {
	OrginationDN     string `json:"orgination_dn"`     //组织dn
	BusinessCategory string `json:"business_category"` //组织分类名称
}
//添加ldap用户到员工基本组中
type CreateLdapUserReq {
	UserName string `json:"user_name"`          //用户名
	Email    string `json:"email"`              //邮箱
	Password string `json:"password"`           //密码
	Mobile   string `json:"mobile"`             //手机号
	Avatar   string `json:"avatar"`             //头像地址
	Status   int64  `json:"status,options=0|1"` //状态 1正常0离职
}
//修改ldap用户信息
type UpdateLdapUserReq {
	UserDN   string `json:"user_dn"`            //用户dn
	UserName string `json:"user_name"`          //用户名
	Password string `json:"password,optional"`  //密码
	Mobile   string `json:"mobile,optional"`    //手机号
	Avatar   string `json:"avatar,optional"`    //头像地址
	Status   int64  `json:"status,options=0|1"` //状态 1正常0离职
}
//删除ldap用户
type DeleteLdapUserReq {
	UserDN string `json:"user_dn"` //用户dn
}
//获取ldap用户信息
type GetLdapUserInfoReq {
	UserDN string `form:"user_dn"` //用户dn
}
type GetLdapUserInfoRsp {
	UserId   int64  `json:"userId"`
	UserDN   string `json:"user_dn"`
	UserName string `json:"user_name"`          //用户名
	Email    string `json:"email"`              //邮箱
	Mobile   string `json:"mobile"`             //手机号
	Avatar   string `json:"avatar"`             //头像地址
	Status   int64  `json:"status,options=0|1"` //状态 1正常0离职
}
//ldap组织添加成员
type AddLdapOrginationMemberReq {
	OrginationDN string `json:"orgination_dn"` //目标组织DN
	UserDN       string `json:"user_dn"`       //用户DN
}
//ldap组织移除成员
type RemoveLdapOrginationMemberReq {
	OrginationDN string `json:"orgination_dn"` //目标组织DN
	UserDN       string `json:"user_dn"`       //用户DN
}