作者 yangfu

Merge branch 'dev' of http://gitlab.fjmaimaimai.com/mmm-go/oppmg into dev

### 接口完成进度
| 功能 | 完成状态 | 时间 | 接口路径 | 请求方式 |
| -------------- | ------------------ | --------------- | --------------------------------- | -------- |
| 登录获取 token | 完成 | 2018/12/11 | /auth/login | post |
| 短信验证码 | 未开始 | | |
| 刷新 token | 完成 | 2018/12/11 | /v1/auth/refresh_token | get |
| 切换公司 | 完成 | 2018/12/11 | /v1/auth/change_company | post |
| 获取角色列表 | 完成 | | /v1/rbac/:companyid/role | get |
| 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role | post |
| 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role | put |
| ~~删除角色~~ | ~~完成(待变更)~~ | ~~ 2019.11.26~~ | /v1/rbac/role | delete |
| 删除角色 | 完成 | 2019.12.04 | /v1/rbac/role | delete |
| 添加角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | post |
| 编辑角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | put |
| 删除角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | delete |
| 获取部门列表 | 完成 | 2019.12.5 | /v1/company/:companyid/department | get |
| 添加部门 | 完成 | 2019.11.28 | /v1/company/department | post |
| 编辑部门 | 完成 | 2019.11.29 | /v1/company/department | put |
| ~~删除部门~~ | ~~完成(待变更)~~ | ~~2019.11.29~~ | ~~/v1/company/department~~ | delete |
| 删除部门 | 完成 | 2019.12.2 | /v1/company/department | delete |
| 获取职位列表 | 进行中 | | /v1/company/:companyid/position | get |
| 添加职位 | 完成 | 2019.12.2 | /v1/company/position | post |
| 编辑职位 | 完成 | 2019.12.2 | /v1/company/position | put |
| 删除职位 | 完成 | 2019.12.2 | /v1/company/position | delete |
| 添加员工 | 未开始 | | /v1/company/user | post |
| 编辑员工 | 未开始 | | /v1/company/user | put |
| 删除员工 | 未开始 | | /v1/company/user | delete |
| 公告管理 | 未开始 | | | |
| 公告管理 | 未开始 | | | |
| 公告管理 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 功能 | 完成状态 | 时间 | 接口路径 | 请求方式 |
| ---------------- | ------------------ | --------------- | ------------------------------- | -------- |
| 登录获取 token | 完成 | 2018/12/11 | /auth/login | post |
| 短信验证码 | 未开始 | | |
| 刷新 token | 完成 | 2018/12/11 | /v1/auth/refresh_token | get |
| 切换公司 | 完成 | 2018/12/11 | /v1/auth/change_company | post |
| 获取个人基础数据 | 未开始 | | /v1/auth/me | get |
| 获取角色列表 | 完成 | | /v1/rbac/:companyid/role | get |
| 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role | post |
| 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role | put |
| ~~删除角色~~ | ~~完成(待变更)~~ | ~~ 2019.11.26~~ | /v1/rbac/role | delete |
| 删除角色 | 完成 | 2019.12.04 | /v1/rbac/role | delete |
| 添加角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | post |
| 编辑角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | put |
| 删除角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group | delete |
| 获取部门列表 | 完成 | 2019.12.5 | /v1/company/department | get |
| 添加部门 | 完成 | 2019.11.28 | /v1/company/department | post |
| 编辑部门 | 完成 | 2019.11.29 | /v1/company/department | put |
| ~~删除部门~~ | ~~完成(待变更)~~ | ~~2019.11.29~~ | ~~/v1/company/department~~ | delete |
| 删除部门 | 完成 | 2019.12.2 | /v1/company/department | delete |
| 获取职位列表 | 进行中 | | /v1/company/:companyid/position | get |
| 添加职位 | 完成 | 2019.12.2 | /v1/company/position | post |
| 编辑职位 | 完成 | 2019.12.2 | /v1/company/position | put |
| 删除职位 | 完成 | 2019.12.2 | /v1/company/position | delete |
| 添加员工 | 未开始 | | /v1/company/user | post |
| 编辑员工 | 未开始 | | /v1/company/user | put |
| 删除员工 | 未开始 | | /v1/company/user | delete |
| 公告管理 | 未开始 | | | |
| 公告管理 | 未开始 | | | |
| 公告管理 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
| 机会&审批 模板 | 未开始 | | | |
... ...
... ... @@ -54,12 +54,6 @@ func (c *AuthController) Login() {
msg = protocol.BadRequestParam("10021")
return
}
// logintoken, err := serveauth.LoginAuthByPassword(param.Account, param.Password)
// if err != nil {
// msg = protocol.NewReturnResponse(nil, err)
// return
// }
// err = serveauth.ResetLoginToken(logintoken)
logintoken, err := serveauth.LoginAuthByUCenter(param.Account, param.Password)
if err != nil {
msg = protocol.NewReturnResponse(nil, err)
... ...
... ... @@ -17,26 +17,14 @@ func (c *CompanyController) URLMapping() {
//c.Mapping("AccessToken", c.AccessToken)
}
// DepartmentAdd 部门列表
// @router /:companyid/department [get]
// DepartmentList 部门列表
// @router /department [get]
func (c *CompanyController) DepartmentList() {
log.Debug("DepartmentList param:%v", c.Ctx.Input.Param(":companyid"))
var msg *protocol.ResponseMessage
defer func() {
c.ResposeJson(msg)
}()
var (
param string
companyid int64
err error
)
param = c.Ctx.Input.Param(":companyid")
companyid, err = strconv.ParseInt(param, 10, 64)
if err != nil {
msg = protocol.BadRequestParam("1")
return
}
companyid := c.GetCompanyId()
if companyid <= 0 {
msg = protocol.BadRequestParam("1")
return
... ... @@ -48,7 +36,7 @@ func (c *CompanyController) DepartmentList() {
msg = protocol.NewReturnResponse(listdata, err)
}
// DepartmentAdd 部门列表
// DepartmentOne 部门信息
// @router /department/:id [get]
func (c *CompanyController) DepartmentOne() {
log.Debug("DepartmentOne param:%v", c.Ctx.Input.Param(":id"))
... ... @@ -87,12 +75,12 @@ func (c *CompanyController) DepartmentAdd() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
if param.CompanyID <= 0 {
log.Error("param.CompanyID <= 0")
msg = protocol.BadRequestParam("1")
return
}
//err := protocol.NewErrWithMessage("101", nil)
err := servecompany.DepartmentAdd(param)
msg = protocol.NewReturnResponse(nil, err)
return
... ... @@ -112,6 +100,7 @@ func (c *CompanyController) DepartmentUpdate() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
if param.ID <= 0 {
log.Error(" param.ID <= 0 ")
msg = protocol.BadRequestParam("1")
... ... @@ -136,7 +125,7 @@ func (c *CompanyController) DepartmentDelete() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
err := servecompany.DepartmentDelete(param)
msg = protocol.NewReturnResponse(nil, err)
return
... ... @@ -155,6 +144,8 @@ func (c *CompanyController) PositionAdd() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
positioninfo, err := servecompany.PositionAdd(param)
msg = protocol.NewReturnResponse(positioninfo, err)
return
... ... @@ -173,6 +164,7 @@ func (c *CompanyController) PositionEdit() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
positioninfo, err := servecompany.PositionEdit(param)
msg = protocol.NewReturnResponse(positioninfo, err)
return
... ... @@ -191,13 +183,14 @@ func (c *CompanyController) PositionDelete() {
msg = protocol.BadRequestParam("1")
return
}
param.CompanyID = c.GetCompanyId()
err := servecompany.PositionDelete(param)
msg = protocol.NewReturnResponse(nil, err)
return
}
// PositionList 获取职位列表
// @router /:companyid/position [get]
// @router /position [get]
func (c *CompanyController) PositionList() {
var msg *protocol.ResponseMessage
defer func() {
... ... @@ -209,8 +202,8 @@ func (c *CompanyController) PositionList() {
list []protocol.ResponsePositionInfo
companyid int64
)
param := c.Ctx.Input.Param(":companyid")
companyid, _ = strconv.ParseInt(param, 10, 64)
companyid = c.GetCompanyId()
if companyid <= 0 {
msg = protocol.BadRequestParam("1")
return
... ... @@ -219,3 +212,8 @@ func (c *CompanyController) PositionList() {
msg = protocol.NewReturnResponse(list, err)
return
}
//获取公司的基本信息
func (c *CompanyController) BaseInfo() {
}
... ...
... ... @@ -14,12 +14,12 @@ func init() {
beego.NSBefore(middleware.LogRequestData),
beego.NSBefore(middleware.AuthToken),
beego.NSNamespace("/company",
beego.NSRouter("/:companyid([0-9]+)/department", &controllers.CompanyController{}, "get:DepartmentList"),
beego.NSRouter("/department", &controllers.CompanyController{}, "get:DepartmentList"),
beego.NSRouter("/department/:id([0-9]+)", &controllers.CompanyController{}, "get:DepartmentOne"),
beego.NSRouter("/department", &controllers.CompanyController{}, "post:DepartmentAdd"),
beego.NSRouter("/department", &controllers.CompanyController{}, "put:DepartmentUpdate"),
beego.NSRouter("/department", &controllers.CompanyController{}, "delete:DepartmentDelete"),
beego.NSRouter("/:companyid([0-9]+)/position", &controllers.CompanyController{}, "get:PositionList"),
beego.NSRouter("/position", &controllers.CompanyController{}, "get:PositionList"),
beego.NSRouter("/position", &controllers.CompanyController{}, "post:PositionAdd"),
beego.NSRouter("/position", &controllers.CompanyController{}, "put:PositionEdit"),
beego.NSRouter("/position", &controllers.CompanyController{}, "delete:PositionDelete"),
... ...
... ... @@ -11,6 +11,7 @@ type CommResponse struct {
Msg string `json:"msg"`
}
//RequesLogin 用户登录
type RequesLogin struct {
Password string `json:"password"`
Phone string `json:"phone"`
... ...
# 机会导向管理后台接口
# 机会导向管理后台接口(非正式版)
## 全局统一设定
... ... @@ -13,6 +13,28 @@
---
### token 机制描述
token 的响应内容
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTM2OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.R056B306_vO4UKfMRalncFULE5Z0phN4WOhS9PMwydc",
"expires_in": 1576053688,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzYwNTU0OTAsImlhdCI6MTU3NjA1MTg4OCwiaXNzIjoibW1tX29wcG1nIiwibmJmIjoxNTc2MDUxODg4LCJ1aWQiOjEwLCJjb21wYW55X2lkIjoyfQ.OY54QdDwAq2B1NPnAmHkSxy_KvhktmZA2boSlcSSfoU",
"refresh_expires": 1576055488
}
```
客户端可本地存储该内容数据。
- access_token 对应请求头的 x-mmm-accesstoken。expires_in 指的是 access_token 的到期时间(时间戳),客户端可以依此判断 access_token 到期时间,然后决定是否调用接口刷新 token。
- refresh_token 对应请求头的 x-mmm-refreshtoken。refresh_expires 指的是 refresh_token 的到期时间(时间戳),客户端可以依此判断 refresh_token 到期时间,然后决定是否退出重新登录。
- 刷新 toke 的依据是 refresh_token,如果 refresh_token 过期失效则只能退出系统重新登录。
- 为应对客户端未主动刷新 token 的情况。当服务端发现 access_token 过期且 refresh_token 未过期时返回错误码【10026】,并附带刷新后的 token,影响的内容格式同上,客户端可依此刷新请求头。当服务端发现 refresh_token 过期时返回错误码【10024】,客户需要退出重新登录。
---
### 通用响应结构
```json
... ...