正在显示
25 个修改的文件
包含
322 行增加
和
192 行删除
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | | 短信验证码 | 未开始 | | | | 6 | | 短信验证码 | 未开始 | | | |
7 | | 获取 token | 未开始 | | | | 7 | | 获取 token | 未开始 | | | |
8 | | 刷新 token | 未开始 | | | | 8 | | 刷新 token | 未开始 | | | |
9 | -| 获取角色列表 | 进行中 | | /v1/rbac/:companyid/role | get | | 9 | +| 获取角色列表 | 完成 | | /v1/rbac/:companyid/role | get | |
10 | | 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role | post | | 10 | | 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role | post | |
11 | | 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role | put | | 11 | | 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role | put | |
12 | | ~~删除角色~~ | ~~完成(待变更)~~ | ~~ 2019.11.26~~ | /v1/rbac/role | delete | | 12 | | ~~删除角色~~ | ~~完成(待变更)~~ | ~~ 2019.11.26~~ | /v1/rbac/role | delete | |
@@ -23,5 +23,5 @@ redis_auth = "" | @@ -23,5 +23,5 @@ redis_auth = "" | ||
23 | ##out_put:"console","file" | 23 | ##out_put:"console","file" |
24 | log_output = "file" | 24 | log_output = "file" |
25 | log_filename = "${aliyun_logs_access||./log/ability.log}" | 25 | log_filename = "${aliyun_logs_access||./log/ability.log}" |
26 | -log_level = "${LOG_LEVEL||debug}" | 26 | +log_level = "${LOG_LEVEL||error}" |
27 | #---自定义配置 结束---- | 27 | #---自定义配置 结束---- |
@@ -16,18 +16,10 @@ type BaseController struct { | @@ -16,18 +16,10 @@ type BaseController struct { | ||
16 | // AppHead protocol.BaseHeader | 16 | // AppHead protocol.BaseHeader |
17 | } | 17 | } |
18 | 18 | ||
19 | -//Options 实现beego.ControllerInterface 的接口 | ||
20 | -// func (this *BaseController) Options() { | ||
21 | -// this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", "*") | ||
22 | -// this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") | ||
23 | -// this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Headers", "*") | ||
24 | -// this.Ctx.Output.SetStatus(http.StatusOK) | ||
25 | -// return | ||
26 | -// } | ||
27 | - | ||
28 | //Prepare 实现beego.ControllerInterface 的接口 | 19 | //Prepare 实现beego.ControllerInterface 的接口 |
29 | func (this *BaseController) Prepare() { | 20 | func (this *BaseController) Prepare() { |
30 | - | 21 | + p := this.Ctx.Input.GetData("RouterPattern") |
22 | + fmt.Println("====>r:", p) | ||
31 | } | 23 | } |
32 | 24 | ||
33 | func (this *BaseController) GetAppHead() (appHead protocol.BaseHeader) { | 25 | func (this *BaseController) GetAppHead() (appHead protocol.BaseHeader) { |
@@ -51,6 +43,7 @@ func (this *BaseController) Finish() { | @@ -51,6 +43,7 @@ func (this *BaseController) Finish() { | ||
51 | } else { | 43 | } else { |
52 | log.Info(fmt.Sprintf("<====Send to client: RspBodyData: %s", string(strByte))) | 44 | log.Info(fmt.Sprintf("<====Send to client: RspBodyData: %s", string(strByte))) |
53 | } | 45 | } |
46 | + | ||
54 | } | 47 | } |
55 | 48 | ||
56 | func (this *BaseController) ResposeJson(msg *protocol.ResponseMessage) { | 49 | func (this *BaseController) ResposeJson(msg *protocol.ResponseMessage) { |
@@ -197,14 +197,25 @@ func (c *CompanyController) PositionDelete() { | @@ -197,14 +197,25 @@ func (c *CompanyController) PositionDelete() { | ||
197 | } | 197 | } |
198 | 198 | ||
199 | // PositionList 获取职位列表 | 199 | // PositionList 获取职位列表 |
200 | -// @router /:companyid/position [delete] | 200 | +// @router /:companyid/position [get] |
201 | func (c *CompanyController) PositionList() { | 201 | func (c *CompanyController) PositionList() { |
202 | var msg *protocol.ResponseMessage | 202 | var msg *protocol.ResponseMessage |
203 | defer func() { | 203 | defer func() { |
204 | c.ResposeJson(msg) | 204 | c.ResposeJson(msg) |
205 | }() | 205 | }() |
206 | 206 | ||
207 | - var err error | ||
208 | - msg = protocol.NewReturnResponse(nil, err) | 207 | + var ( |
208 | + err error | ||
209 | + list []protocol.ResponsePositionInfo | ||
210 | + companyid int64 | ||
211 | + ) | ||
212 | + param := c.Ctx.Input.Param(":companyid") | ||
213 | + companyid, _ = strconv.ParseInt(param, 10, 64) | ||
214 | + if companyid <= 0 { | ||
215 | + msg = protocol.BadRequestParam("1") | ||
216 | + return | ||
217 | + } | ||
218 | + list, err = servecompany.GetPositionList(companyid) | ||
219 | + msg = protocol.NewReturnResponse(list, err) | ||
209 | return | 220 | return |
210 | } | 221 | } |
@@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
6 | 6 | ||
7 | "oppmg/common/config" | 7 | "oppmg/common/config" |
8 | "oppmg/common/log" | 8 | "oppmg/common/log" |
9 | + "oppmg/middleware" | ||
9 | 10 | ||
10 | "github.com/astaxie/beego" | 11 | "github.com/astaxie/beego" |
11 | "github.com/astaxie/beego/orm" | 12 | "github.com/astaxie/beego/orm" |
@@ -17,11 +18,11 @@ func main() { | @@ -17,11 +18,11 @@ func main() { | ||
17 | log.Debug("加载配置%s", config.MConfig.ConfigName) | 18 | log.Debug("加载配置%s", config.MConfig.ConfigName) |
18 | orm.RegisterDataBase("default", "mysql", config.MConfig.SqlConn) | 19 | orm.RegisterDataBase("default", "mysql", config.MConfig.SqlConn) |
19 | // orm.Debug = true | 20 | // orm.Debug = true |
20 | - if beego.BConfig.RunMode == "dev" { | ||
21 | - beego.BConfig.WebConfig.DirectoryIndex = true | ||
22 | - beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" | ||
23 | - } | ||
24 | - | 21 | + // if beego.BConfig.RunMode == "dev" { |
22 | + // beego.BConfig.WebConfig.DirectoryIndex = true | ||
23 | + // beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger" | ||
24 | + // } | ||
25 | + beego.InsertFilter("*", beego.BeforeExec, middleware.LogRouter) | ||
25 | log.Debug("应用启动") | 26 | log.Debug("应用启动") |
26 | beego.Run() | 27 | beego.Run() |
27 | } | 28 | } |
@@ -55,12 +55,6 @@ var AuthToken = func(ctx *context.Context) { | @@ -55,12 +55,6 @@ var AuthToken = func(ctx *context.Context) { | ||
55 | return | 55 | return |
56 | } | 56 | } |
57 | 57 | ||
58 | -//AppSwitch 使用外部变量停止处理新的请求 | ||
59 | -var AppSwitch = func(ctx *context.Context) { | ||
60 | - | ||
61 | - return | ||
62 | -} | ||
63 | - | ||
64 | //AllowOption 允许跨域请求 | 58 | //AllowOption 允许跨域请求 |
65 | var AllowOption = func(ctx *context.Context) { | 59 | var AllowOption = func(ctx *context.Context) { |
66 | if ctx.Request.Method != "OPTIONS" { | 60 | if ctx.Request.Method != "OPTIONS" { |
@@ -77,3 +71,10 @@ var AllowOption = func(ctx *context.Context) { | @@ -77,3 +71,10 @@ var AllowOption = func(ctx *context.Context) { | ||
77 | ctx.Output.Body([]byte("{}")) | 71 | ctx.Output.Body([]byte("{}")) |
78 | return | 72 | return |
79 | } | 73 | } |
74 | + | ||
75 | +var LogRouter = func(ctx *context.Context) { | ||
76 | + // RouterPattern | ||
77 | + p := ctx.Input.GetData("RouterPattern") | ||
78 | + fmt.Println("====>r:", p) | ||
79 | + return | ||
80 | +} |
@@ -8,19 +8,35 @@ import ( | @@ -8,19 +8,35 @@ import ( | ||
8 | ) | 8 | ) |
9 | 9 | ||
10 | type Company struct { | 10 | type Company struct { |
11 | - Id int `orm:"column(id);auto"` | 11 | + Id int64 `orm:"column(id);auto"` |
12 | Name string `orm:"column(name);size(40)"` | 12 | Name string `orm:"column(name);size(40)"` |
13 | - UserId int `orm:"column(user_id)"` | 13 | + UserId int64 `orm:"column(user_id)"` |
14 | CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now"` | 14 | CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now"` |
15 | UpdateAt time.Time `orm:"column(update_at);type(timestamp)"` | 15 | UpdateAt time.Time `orm:"column(update_at);type(timestamp)"` |
16 | DeleteAt time.Time `orm:"column(delete_at);type(timestamp)"` | 16 | DeleteAt time.Time `orm:"column(delete_at);type(timestamp)"` |
17 | Logo string `orm:"column(logo);size(255)"` | 17 | Logo string `orm:"column(logo);size(255)"` |
18 | + Enable int8 `orm:"column(enable)"` | ||
18 | } | 19 | } |
19 | 20 | ||
20 | func (t *Company) TableName() string { | 21 | func (t *Company) TableName() string { |
21 | return "company" | 22 | return "company" |
22 | } | 23 | } |
23 | 24 | ||
25 | +//公司是否有效 | ||
26 | +const ( | ||
27 | + COMPANY_ENABLE_YES int8 = 1 //有效 | ||
28 | + COMPANY_ENABLE_NO int8 = 2 //无效 | ||
29 | +) | ||
30 | + | ||
31 | +func (t *Company) ValidateEnable(v int8) bool { | ||
32 | + switch v { | ||
33 | + case COMPANY_ENABLE_YES: | ||
34 | + return true | ||
35 | + case COMPANY_ENABLE_NO: | ||
36 | + return true | ||
37 | + } | ||
38 | + return false | ||
39 | +} | ||
24 | func init() { | 40 | func init() { |
25 | orm.RegisterModel(new(Company)) | 41 | orm.RegisterModel(new(Company)) |
26 | } | 42 | } |
@@ -35,7 +51,7 @@ func AddCompany(m *Company) (id int64, err error) { | @@ -35,7 +51,7 @@ func AddCompany(m *Company) (id int64, err error) { | ||
35 | 51 | ||
36 | // GetCompanyById retrieves Company by Id. Returns error if | 52 | // GetCompanyById retrieves Company by Id. Returns error if |
37 | // Id doesn't exist | 53 | // Id doesn't exist |
38 | -func GetCompanyById(id int) (v *Company, err error) { | 54 | +func GetCompanyById(id int64) (v *Company, err error) { |
39 | o := orm.NewOrm() | 55 | o := orm.NewOrm() |
40 | v = &Company{Id: id} | 56 | v = &Company{Id: id} |
41 | if err = o.Read(v); err == nil { | 57 | if err = o.Read(v); err == nil { |
@@ -59,17 +75,18 @@ func UpdateCompanyById(m *Company) (err error) { | @@ -59,17 +75,18 @@ func UpdateCompanyById(m *Company) (err error) { | ||
59 | return | 75 | return |
60 | } | 76 | } |
61 | 77 | ||
62 | -// DeleteCompany deletes Company by Id and returns error if | ||
63 | -// the record to be deleted doesn't exist | ||
64 | -func DeleteCompany(id int) (err error) { | 78 | +func GetCompanyByUser(userid int64) ([]Company, error) { |
79 | + datasql := `SELECT a.user_id, a.id,a.name,a.logo,a.admin_id FROM company AS a | ||
80 | + JOIN user_company AS b ON a.id = b.company_id | ||
81 | + WHERE a.enable = 1 AND b.user_id=?` | ||
82 | + var ( | ||
83 | + err error | ||
84 | + companys []Company | ||
85 | + ) | ||
65 | o := orm.NewOrm() | 86 | o := orm.NewOrm() |
66 | - v := Company{Id: id} | ||
67 | - // ascertain id exists in the database | ||
68 | - if err = o.Read(&v); err == nil { | ||
69 | - var num int64 | ||
70 | - if num, err = o.Delete(&Company{Id: id}); err == nil { | ||
71 | - fmt.Println("Number of records deleted in database:", num) | 87 | + _, err = o.Raw(datasql).QueryRows(&companys) |
88 | + if err == orm.ErrNoRows { | ||
89 | + return companys, nil | ||
72 | } | 90 | } |
73 | - } | ||
74 | - return | 91 | + return companys, err |
75 | } | 92 | } |
@@ -53,6 +53,7 @@ func AddPosition(m *Position, om ...orm.Ormer) (id int64, err error) { | @@ -53,6 +53,7 @@ func AddPosition(m *Position, om ...orm.Ormer) (id int64, err error) { | ||
53 | m.CreateAt = time.Now() | 53 | m.CreateAt = time.Now() |
54 | m.UpdateAt = time.Now() | 54 | m.UpdateAt = time.Now() |
55 | m.DeleteAt = time.Unix(0, 0) | 55 | m.DeleteAt = time.Unix(0, 0) |
56 | + m.EnableStatus = "1" | ||
56 | id, err = o.Insert(m) | 57 | id, err = o.Insert(m) |
57 | return | 58 | return |
58 | } | 59 | } |
@@ -26,6 +26,22 @@ func (t *User) TableName() string { | @@ -26,6 +26,22 @@ func (t *User) TableName() string { | ||
26 | return "user" | 26 | return "user" |
27 | } | 27 | } |
28 | 28 | ||
29 | +//用户是否有效 | ||
30 | +const ( | ||
31 | + USER_ENABLE_YES int8 = 1 //有效 | ||
32 | + USER_ENABLE_NO int8 = 2 //无效 | ||
33 | +) | ||
34 | + | ||
35 | +func (t *User) IsEnable() bool { | ||
36 | + switch t.EnableStatus { | ||
37 | + case USER_ENABLE_YES: | ||
38 | + return true | ||
39 | + case USER_ENABLE_NO: | ||
40 | + return false | ||
41 | + } | ||
42 | + return false | ||
43 | +} | ||
44 | + | ||
29 | func init() { | 45 | func init() { |
30 | orm.RegisterModel(new(User)) | 46 | orm.RegisterModel(new(User)) |
31 | } | 47 | } |
@@ -70,21 +86,6 @@ func UpdateUserById(m *User) (err error) { | @@ -70,21 +86,6 @@ func UpdateUserById(m *User) (err error) { | ||
70 | return | 86 | return |
71 | } | 87 | } |
72 | 88 | ||
73 | -// DeleteUser deletes User by Id and returns error if | ||
74 | -// the record to be deleted doesn't exist | ||
75 | -func DeleteUser(id int64) (err error) { | ||
76 | - o := orm.NewOrm() | ||
77 | - v := User{Id: id} | ||
78 | - // ascertain id exists in the database | ||
79 | - if err = o.Read(&v); err == nil { | ||
80 | - var num int64 | ||
81 | - if num, err = o.Delete(&User{Id: id}); err == nil { | ||
82 | - fmt.Println("Number of records deleted in database:", num) | ||
83 | - } | ||
84 | - } | ||
85 | - return | ||
86 | -} | ||
87 | - | ||
88 | func GetUserByPhone(phone string) (v *User, err error) { | 89 | func GetUserByPhone(phone string) (v *User, err error) { |
89 | o := orm.NewOrm() | 90 | o := orm.NewOrm() |
90 | v = &User{Phone: phone} | 91 | v = &User{Phone: phone} |
@@ -21,6 +21,7 @@ type UserAuth struct { | @@ -21,6 +21,7 @@ type UserAuth struct { | ||
21 | DeviceToken string `orm:"column(device_token);size(100)" description:"设备识别码 推送标识"` | 21 | DeviceToken string `orm:"column(device_token);size(100)" description:"设备识别码 推送标识"` |
22 | CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"` | 22 | CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"` |
23 | UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"` | 23 | UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"` |
24 | + CurrentCompanyId int64 `orm:"column(current_company_id)"` | ||
24 | } | 25 | } |
25 | 26 | ||
26 | func (t *UserAuth) TableName() string { | 27 | func (t *UserAuth) TableName() string { |
@@ -108,14 +109,11 @@ func ValidateDdevice(deviceType int8) bool { | @@ -108,14 +109,11 @@ func ValidateDdevice(deviceType int8) bool { | ||
108 | } | 109 | } |
109 | 110 | ||
110 | //ReadUserAuthByDevice 读取或创建 | 111 | //ReadUserAuthByDevice 读取或创建 |
111 | -func ReadUserAuthByDevice(userId int64, deviceType int8) (*UserAuth, error) { | 112 | +func GetUserAuthByUser(userId int64) (*UserAuth, error) { |
112 | o := orm.NewOrm() | 113 | o := orm.NewOrm() |
113 | - if ok := ValidateDdevice(deviceType); !ok { | ||
114 | - return nil, fmt.Errorf("unknown deviceType: %d", deviceType) | ||
115 | - } | ||
116 | uAuth := &UserAuth{ | 114 | uAuth := &UserAuth{ |
117 | UserId: userId, | 115 | UserId: userId, |
118 | - DeviceType: deviceType, | 116 | + DeviceType: DEVICE_TYPE_WEB, |
119 | } | 117 | } |
120 | err := o.Read(uAuth, "UserId", "DeviceType") | 118 | err := o.Read(uAuth, "UserId", "DeviceType") |
121 | if err == nil { | 119 | if err == nil { |
@@ -17,7 +17,7 @@ type InputElement struct { | @@ -17,7 +17,7 @@ type InputElement struct { | ||
17 | ValueList string `json:"value_list"` //输入候选值 | 17 | ValueList string `json:"value_list"` //输入候选值 |
18 | Required bool `json:"required"` //是否必填 | 18 | Required bool `json:"required"` //是否必填 |
19 | Placeholder string `json:"Placeholder"` //帮助用户填写输入字段的提示 | 19 | Placeholder string `json:"Placeholder"` //帮助用户填写输入字段的提示 |
20 | - Disable bool `json:"disable ` //"显示隐藏", | 20 | + Disable bool `json:"disable"` //"显示隐藏", |
21 | CurrentValue string `json:"current_value"` //"当前填写的值" | 21 | CurrentValue string `json:"current_value"` //"当前填写的值" |
22 | } | 22 | } |
23 | 23 |
@@ -33,7 +33,14 @@ type RequestLogin struct { | @@ -33,7 +33,14 @@ type RequestLogin struct { | ||
33 | 33 | ||
34 | //ResponseLogin 登录响应 | 34 | //ResponseLogin 登录响应 |
35 | type ResponseLogin struct { | 35 | type ResponseLogin struct { |
36 | - AuthCode string `json:"authcode"` | 36 | + LoginAuthToken |
37 | +} | ||
38 | + | ||
39 | +type LoginAuthToken struct { | ||
40 | + AccessToken string `json:"access_token"` | ||
41 | + ExpiresIn int64 `json:"expires_in"` | ||
42 | + RefreshToken string `json:"refresh_token"` | ||
43 | + RefreshExpires int64 `json:"refresh_expires"` | ||
37 | } | 44 | } |
38 | 45 | ||
39 | //RequestSwapCompany 切换公司 | 46 | //RequestSwapCompany 切换公司 |
@@ -3,7 +3,7 @@ package protocol | @@ -3,7 +3,7 @@ package protocol | ||
3 | //RequestPageInfo 分页获取数据 | 3 | //RequestPageInfo 分页获取数据 |
4 | type RequestPageInfo struct { | 4 | type RequestPageInfo struct { |
5 | PageIndex int `json:"page_index"` | 5 | PageIndex int `json:"page_index"` |
6 | - PageSize int `json:"page_size` | 6 | + PageSize int `json:"page_size"` |
7 | } | 7 | } |
8 | 8 | ||
9 | //ResponsePageInfo 分页信息 | 9 | //ResponsePageInfo 分页信息 |
@@ -10,7 +10,7 @@ type RequestDepartmentAdd struct { | @@ -10,7 +10,7 @@ type RequestDepartmentAdd struct { | ||
10 | 10 | ||
11 | type DepartmentManager struct { | 11 | type DepartmentManager struct { |
12 | Id int64 `json:"id"` | 12 | Id int64 `json:"id"` |
13 | - Name string `json:"name` | 13 | + Name string `json:"name"` |
14 | } | 14 | } |
15 | 15 | ||
16 | //RequestDepartmentEdit 编辑 | 16 | //RequestDepartmentEdit 编辑 |
@@ -55,12 +55,10 @@ type RequestPositionEdit struct { | @@ -55,12 +55,10 @@ type RequestPositionEdit struct { | ||
55 | 55 | ||
56 | //ResponsePositionInfo ... | 56 | //ResponsePositionInfo ... |
57 | type ResponsePositionInfo struct { | 57 | type ResponsePositionInfo struct { |
58 | - ID int64 `json:"id"` | ||
59 | - CompanyID int64 `json:"company_id"` | ||
60 | - Name string `json:"name"` | ||
61 | - ParentID int64 `json:"parent_id"` | ||
62 | - ParemtName string `json:"parent_name` | ||
63 | - CreateTime int64 `json:"create_time` | 58 | + Id int64 `json:"id" orm:"column(id)"` |
59 | + Name string `json:"name" orm:"column(name)"` | ||
60 | + ParentId int64 `json:"parent_id" orm:"column(parent_id)"` | ||
61 | + ParemtName string `json:"parent_name,omitempty" orm:"-"` | ||
64 | } | 62 | } |
65 | 63 | ||
66 | type RequestPositionDelete struct { | 64 | type RequestPositionDelete struct { |
@@ -71,7 +69,7 @@ type RequestPositionDelete struct { | @@ -71,7 +69,7 @@ type RequestPositionDelete struct { | ||
71 | type RequestUserAdd struct { | 69 | type RequestUserAdd struct { |
72 | Name string `json:"name"` | 70 | Name string `json:"name"` |
73 | CompanyId int64 `json:"company_id"` | 71 | CompanyId int64 `json:"company_id"` |
74 | - Phone string `json:"phone` | 72 | + Phone string `json:"phone"` |
75 | Departments []int64 `json:"departments"` | 73 | Departments []int64 `json:"departments"` |
76 | Positions []int64 `json:"positions"` | 74 | Positions []int64 `json:"positions"` |
77 | Roles []int64 `json:"roles"` | 75 | Roles []int64 `json:"roles"` |
@@ -6,10 +6,10 @@ import ( | @@ -6,10 +6,10 @@ import ( | ||
6 | ) | 6 | ) |
7 | 7 | ||
8 | func Test_Err(t *testing.T) { | 8 | func Test_Err(t *testing.T) { |
9 | - errmsg := NewMesage(0) | 9 | + errmsg := NewMesage("0") |
10 | bt1, _ := json.Marshal(errmsg) | 10 | bt1, _ := json.Marshal(errmsg) |
11 | t.Log(string(bt1)) | 11 | t.Log(string(bt1)) |
12 | - normalmsg := NewErrWithMessage(0) | 12 | + normalmsg := NewErrWithMessage("0") |
13 | bt2, _ := json.Marshal(normalmsg) | 13 | bt2, _ := json.Marshal(normalmsg) |
14 | t.Log(string(bt2)) | 14 | t.Log(string(bt2)) |
15 | } | 15 | } |
1 | package protocol | 1 | package protocol |
2 | 2 | ||
3 | var errmessge ErrorMap = map[string]string{ | 3 | var errmessge ErrorMap = map[string]string{ |
4 | + //操作 | ||
4 | "00000": "成功", | 5 | "00000": "成功", |
5 | "1": "无效请求", | 6 | "1": "无效请求", |
6 | - "101": "clientId或clientSecret无效", | ||
7 | - "113": "签名验证失败", | 7 | + "2": "添加成功", |
8 | + "3": "修改成功", | ||
9 | + "4": "删除成功", | ||
10 | + | ||
8 | //角色相关 | 11 | //角色相关 |
9 | - "30001": "请先删除该分组下的其他角色", | ||
10 | - "30002": "请先删除该角色下的人员", | 12 | + "10001": "请先删除该分组下的其他角色", |
13 | + "10002": "请先删除该角色下的人员", | ||
14 | + //职位相关 | ||
15 | + "10011": "该职位已被使用无法删除", | ||
16 | + //安全认证相关 | ||
17 | + "10021": "账号或密码不正确", | ||
18 | + "10022": "账号已被禁用", | ||
11 | } | 19 | } |
@@ -22,10 +22,10 @@ type RequestRoleEdit struct { | @@ -22,10 +22,10 @@ type RequestRoleEdit struct { | ||
22 | } | 22 | } |
23 | 23 | ||
24 | //RequestRoleOne 获取一个角色数据 | 24 | //RequestRoleOne 获取一个角色数据 |
25 | -type RequestRoleOne struct { | ||
26 | - CompanyID int `json:"company_id"` | ||
27 | - RoleID int `json:"role_id` | ||
28 | -} | 25 | +// type RequestRoleOne struct { |
26 | +// CompanyID int `json:"company_id"` | ||
27 | +// RoleID int `json:"role_id"` | ||
28 | +// } | ||
29 | 29 | ||
30 | //ResponseRoleInfo 响应数据 | 30 | //ResponseRoleInfo 响应数据 |
31 | type ResponseRoleInfo struct { | 31 | type ResponseRoleInfo struct { |
@@ -32,6 +32,7 @@ func init() { | @@ -32,6 +32,7 @@ func init() { | ||
32 | beego.NSRouter("/role_group", &controllers.RbacController{}, "delete:RoleGroupDelete"), | 32 | beego.NSRouter("/role_group", &controllers.RbacController{}, "delete:RoleGroupDelete"), |
33 | beego.NSRouter("/:companyid([0-9]+)/role", &controllers.RbacController{}, "get:RoleList"), | 33 | beego.NSRouter("/:companyid([0-9]+)/role", &controllers.RbacController{}, "get:RoleList"), |
34 | ), | 34 | ), |
35 | + beego.NSAfter(middleware.LogRouter), | ||
35 | ) | 36 | ) |
36 | 37 | ||
37 | nsAuth := beego.NewNamespace("/auth", | 38 | nsAuth := beego.NewNamespace("/auth", |
@@ -40,5 +41,12 @@ func init() { | @@ -40,5 +41,12 @@ func init() { | ||
40 | ) | 41 | ) |
41 | beego.AddNamespace(nsV1) | 42 | beego.AddNamespace(nsV1) |
42 | beego.AddNamespace(nsAuth) | 43 | beego.AddNamespace(nsAuth) |
44 | +} | ||
43 | 45 | ||
46 | +//routerPermission 路由对应的权限 | ||
47 | +var routerPermission = map[string]string{ | ||
48 | + "get:/v1/company/:companyid/position": "show", | ||
49 | + "post:/v1/company/position": "add", | ||
50 | + "put:/v1/company/position": "edit", | ||
51 | + "delete:/v1/company/position": "delete", | ||
44 | } | 52 | } |
@@ -9,7 +9,6 @@ import ( | @@ -9,7 +9,6 @@ import ( | ||
9 | "oppmg/common/log" | 9 | "oppmg/common/log" |
10 | "oppmg/models" | 10 | "oppmg/models" |
11 | "oppmg/protocol" | 11 | "oppmg/protocol" |
12 | - "oppmg/utils" | ||
13 | "strings" | 12 | "strings" |
14 | "time" | 13 | "time" |
15 | 14 | ||
@@ -43,66 +42,110 @@ func LoginAuthByPassword(account, password string) error { | @@ -43,66 +42,110 @@ func LoginAuthByPassword(account, password string) error { | ||
43 | var ( | 42 | var ( |
44 | user *models.User | 43 | user *models.User |
45 | uAuth *models.UserAuth | 44 | uAuth *models.UserAuth |
45 | + companys []models.Company | ||
46 | + mcompany models.Company | ||
47 | + loginToken protocol.LoginAuthToken | ||
46 | err error | 48 | err error |
47 | ) | 49 | ) |
48 | user, err = models.GetUserByPhone(account) | 50 | user, err = models.GetUserByPhone(account) |
49 | if err != nil { | 51 | if err != nil { |
50 | log.Error(err.Error()) | 52 | log.Error(err.Error()) |
51 | - return protocol.NewErrWithMessage("1", err) | 53 | + return protocol.NewErrWithMessage("10021", err) |
52 | } | 54 | } |
53 | if ok := validatePassword(password, user.Passwd); !ok { | 55 | if ok := validatePassword(password, user.Passwd); !ok { |
54 | - return protocol.NewErrWithMessage("1", err) | 56 | + return protocol.NewErrWithMessage("10021", err) |
55 | } | 57 | } |
56 | - | ||
57 | - uAuth, err = models.ReadUserAuthByDevice(user.Id, models.DEVICE_TYPE_WEB) | ||
58 | - if err != nil && err != orm.ErrNoRows { | ||
59 | - e := fmt.Errorf("ReadUserAuthByDevice(%d,%d) err:%s", user.Id, models.DEVICE_TYPE_WEB, err) | ||
60 | - log.Error(e.Error()) | ||
61 | - return protocol.NewErrWithMessage("1", e) | ||
62 | - } | ||
63 | - var ( | ||
64 | - authcode string | ||
65 | - authcodeExp time.Time | ||
66 | - ) | ||
67 | - authcode = utils.GenerateIDByUUID() | ||
68 | - authcodeExp = time.Now().Add(time.Duration(models.AUTHCODE_TIME) * time.Second) | ||
69 | - if err == orm.ErrNoRows { | ||
70 | - uAuth := &models.UserAuth{ | ||
71 | - UserId: user.Id, | ||
72 | - AuthCode: authcode, | ||
73 | - AuthCodeExp: authcodeExp, | ||
74 | - CreateAt: time.Now(), | 58 | + if ok := user.IsEnable(); !ok { |
59 | + return protocol.NewErrWithMessage("10022") | ||
75 | } | 60 | } |
76 | - _, err = models.AddUserAuth(uAuth) | 61 | + companys, err = models.GetCompanyByUser(user.Id) |
77 | if err != nil { | 62 | if err != nil { |
78 | - e := fmt.Errorf("AddUserAuth err:%s", err) | 63 | + e := fmt.Errorf("GetCompanyByUser(%d) err:%s", user.Id, err) |
79 | log.Error(e.Error()) | 64 | log.Error(e.Error()) |
80 | - return protocol.NewErrWithMessage("1", e) | 65 | + return protocol.NewErrWithMessage("1") |
81 | } | 66 | } |
67 | + if len(companys) <= 0 { | ||
68 | + log.Error("can not found company") | ||
69 | + return protocol.NewErrWithMessage("1") | ||
82 | } | 70 | } |
83 | - if err == nil { | ||
84 | - uAuth.AuthCode = authcode | ||
85 | - uAuth.AuthCodeExp = authcodeExp | ||
86 | - uAuth.UpdateAt = time.Now() | ||
87 | - err = models.UpdateUserAuthById(uAuth) | 71 | + mcompany = companys[0] |
72 | + loginToken, err = GenerateAuthToken(user.Id, mcompany.Id) | ||
88 | if err != nil { | 73 | if err != nil { |
89 | - e := fmt.Errorf("UpdateUserAuthById err:%s", err) | 74 | + e := fmt.Errorf("GenerateAuthToken err:%s", err) |
90 | log.Error(e.Error()) | 75 | log.Error(e.Error()) |
91 | - return protocol.NewErrWithMessage("1", e) | ||
92 | - } | 76 | + return protocol.NewErrWithMessage("1") |
93 | } | 77 | } |
78 | + // uAuth, err = models.ReadUserAuthByDevice(user.Id, models.DEVICE_TYPE_WEB) | ||
79 | + // if err != nil && err != orm.ErrNoRows { | ||
80 | + // e := fmt.Errorf("ReadUserAuthByDevice(%d,%d) err:%s", user.Id, models.DEVICE_TYPE_WEB, err) | ||
81 | + // log.Error(e.Error()) | ||
82 | + // return protocol.NewErrWithMessage("1", e) | ||
83 | + // } | ||
84 | + // var ( | ||
85 | + // authcode string | ||
86 | + // authcodeExp time.Time | ||
87 | + // ) | ||
88 | + // authcode = utils.GenerateIDByUUID() | ||
89 | + // authcodeExp = time.Now().Add(time.Duration(models.AUTHCODE_TIME) * time.Second) | ||
90 | + // if err == orm.ErrNoRows { | ||
91 | + // uAuth := &models.UserAuth{ | ||
92 | + // UserId: user.Id, | ||
93 | + // AuthCode: authcode, | ||
94 | + // AuthCodeExp: authcodeExp, | ||
95 | + // CreateAt: time.Now(), | ||
96 | + // } | ||
97 | + // _, err = models.AddUserAuth(uAuth) | ||
98 | + // if err != nil { | ||
99 | + // e := fmt.Errorf("AddUserAuth err:%s", err) | ||
100 | + // log.Error(e.Error()) | ||
101 | + // return protocol.NewErrWithMessage("1", e) | ||
102 | + // } | ||
103 | + // } | ||
104 | + // if err == nil { | ||
105 | + // uAuth.AuthCode = authcode | ||
106 | + // uAuth.AuthCodeExp = authcodeExp | ||
107 | + // uAuth.UpdateAt = time.Now() | ||
108 | + // err = models.UpdateUserAuthById(uAuth) | ||
109 | + // if err != nil { | ||
110 | + // e := fmt.Errorf("UpdateUserAuthById err:%s", err) | ||
111 | + // log.Error(e.Error()) | ||
112 | + // return protocol.NewErrWithMessage("1", e) | ||
113 | + // } | ||
114 | + // } | ||
94 | 115 | ||
95 | return nil | 116 | return nil |
96 | } | 117 | } |
97 | 118 | ||
98 | -//RefreshAccessToken 刷新token | ||
99 | -func RefreshAccessToken(account string, token string) error { | 119 | +//ResetLoginToken token存数据库 |
120 | +func ResetLoginToken(loginToken protocol.LoginAuthToken, userid int64, companyid int64) error { | ||
121 | + var ( | ||
122 | + uAuth *models.UserAuth | ||
123 | + err error | ||
124 | + nowTime = time.Now() | ||
125 | + ) | ||
126 | + uAuth, err = models.GetUserAuthByUser(userid) | ||
127 | + if err != nil && err != orm.ErrNoRows { | ||
128 | + return err | ||
129 | + } | ||
130 | + if err == orm.ErrNoRows { | ||
131 | + //添加用户授权 | ||
132 | + uAuth = &models.UserAuth{ | ||
133 | + UserId: userid, | ||
134 | + CurrentCompanyId: companyid, | ||
135 | + AccessToken: loginToken.AccessToken, | ||
136 | + AccessTokenExp: time.Unix(loginToken.ExpiresIn, 0), //, | ||
137 | + RefreshToken: loginToken.RefreshToken, | ||
138 | + RefreshTokenExp: time.Unix(loginToken.RefreshExpires, 0), | ||
139 | + CreateAt: nowTime, | ||
140 | + UpdateAt: nowTime, | ||
141 | + DeviceType: models.DEVICE_TYPE_WEB, | ||
142 | + } | ||
143 | + _, err = models.AddUserAuth(uAuth) | ||
144 | + return err | ||
145 | + } | ||
146 | + //更新用户授权 | ||
147 | + | ||
100 | return nil | 148 | return nil |
101 | } | 149 | } |
102 | 150 | ||
103 | -// func buildNewUserAuth(uid int64,) *models.UserAuth { | ||
104 | -// m:=&models.UserAuth{ | ||
105 | -// User | ||
106 | -// } | ||
107 | -// return nil | ||
108 | -// } | 151 | +//TODO token 存redis |
services/auth/token.go
0 → 100644
1 | +package auth | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "oppmg/protocol" | ||
6 | + "time" | ||
7 | + | ||
8 | + jwt "github.com/dgrijalva/jwt-go" | ||
9 | +) | ||
10 | + | ||
11 | +var ( | ||
12 | + key []byte = []byte("sx87sda0w7x7sd") | ||
13 | +) | ||
14 | + | ||
15 | +//MyToken ... | ||
16 | +type MyToken struct { | ||
17 | + jwt.StandardClaims | ||
18 | + UID int64 `json:"uid"` | ||
19 | + CompanyID int64 `json:"company_id"` | ||
20 | +} | ||
21 | + | ||
22 | +//CreateJWTToken ... | ||
23 | +func CreateJWTToken(uid int64, companyid int64, expires int64) (string, error) { | ||
24 | + nowTime := time.Now().Unix() | ||
25 | + claims := MyToken{ | ||
26 | + StandardClaims: jwt.StandardClaims{ | ||
27 | + NotBefore: nowTime, | ||
28 | + IssuedAt: nowTime, | ||
29 | + ExpiresAt: expires, //过期时间 | ||
30 | + Issuer: "mmm_oppmg", | ||
31 | + }, | ||
32 | + UID: uid, | ||
33 | + CompanyID: companyid, | ||
34 | + } | ||
35 | + | ||
36 | + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) | ||
37 | + return token.SignedString(key) | ||
38 | +} | ||
39 | + | ||
40 | +//ValidJWTToken ... | ||
41 | +func ValidJWTToken(tokenString string) (*MyToken, error) { | ||
42 | + token, err := jwt.ParseWithClaims( | ||
43 | + tokenString, | ||
44 | + &MyToken{}, | ||
45 | + func(token *jwt.Token) (interface{}, error) { | ||
46 | + return key, nil | ||
47 | + }) | ||
48 | + if err != nil { | ||
49 | + return nil, err | ||
50 | + } | ||
51 | + if claims, ok := token.Claims.(*MyToken); ok && token.Valid { | ||
52 | + // 验证成功,返回信息 | ||
53 | + return claims, nil | ||
54 | + } | ||
55 | + // 验证失败 | ||
56 | + return nil, fmt.Errorf("token Valid fail") | ||
57 | +} | ||
58 | + | ||
59 | +func GenerateAuthToken(uid int64, companyid int64) (protocol.LoginAuthToken, error) { | ||
60 | + var ( | ||
61 | + authToken protocol.LoginAuthToken | ||
62 | + accesstoken string //主token,请求用 | ||
63 | + expiresIn int64 = 60 * 30 //主token过期时间,30分钟 | ||
64 | + refreshtoken string //副token,刷新主token用 | ||
65 | + refreshExpires int64 = 60 * 30 * 2 //副token 过期时间 ,60分钟 | ||
66 | + err error | ||
67 | + nowtime = time.Now() | ||
68 | + ) | ||
69 | + accesstoken, err = CreateJWTToken(uid, companyid, expiresIn+10) | ||
70 | + if err != nil { | ||
71 | + return authToken, err | ||
72 | + } | ||
73 | + refreshtoken, err = CreateJWTToken(uid, companyid, refreshExpires+10) | ||
74 | + if err != nil { | ||
75 | + return authToken, err | ||
76 | + } | ||
77 | + authToken.AccessToken = accesstoken | ||
78 | + authToken.ExpiresIn = nowtime.Unix() + expiresIn | ||
79 | + authToken.RefreshToken = refreshtoken | ||
80 | + authToken.RefreshExpires = nowtime.Unix() + refreshExpires | ||
81 | + return authToken, err | ||
82 | +} |
@@ -67,12 +67,9 @@ func PositionAdd(param protocol.RequestPositionAdd) (*protocol.ResponsePositionI | @@ -67,12 +67,9 @@ func PositionAdd(param protocol.RequestPositionAdd) (*protocol.ResponsePositionI | ||
67 | } | 67 | } |
68 | o.Commit() | 68 | o.Commit() |
69 | positioninfo = &protocol.ResponsePositionInfo{ | 69 | positioninfo = &protocol.ResponsePositionInfo{ |
70 | - ID: positionAdd.Id, | ||
71 | - CompanyID: positionAdd.CompanyId, | 70 | + Id: positionAdd.Id, |
72 | Name: positionAdd.Name, | 71 | Name: positionAdd.Name, |
73 | - ParentID: positionAdd.ParentId, | ||
74 | - ParemtName: "", | ||
75 | - CreateTime: nowTime.Unix(), | 72 | + ParentId: positionAdd.ParentId, |
76 | } | 73 | } |
77 | if parentPosition != nil { | 74 | if parentPosition != nil { |
78 | positioninfo.ParemtName = parentPosition.Name | 75 | positioninfo.ParemtName = parentPosition.Name |
@@ -129,13 +126,12 @@ func PositionEdit(param protocol.RequestPositionEdit) (*protocol.ResponsePositio | @@ -129,13 +126,12 @@ func PositionEdit(param protocol.RequestPositionEdit) (*protocol.ResponsePositio | ||
129 | return nil, protocol.NewErrWithMessage("1", e) | 126 | return nil, protocol.NewErrWithMessage("1", e) |
130 | } | 127 | } |
131 | positioninfo = &protocol.ResponsePositionInfo{ | 128 | positioninfo = &protocol.ResponsePositionInfo{ |
132 | - ID: positionUpdate.Id, | ||
133 | - CompanyID: positionUpdate.CompanyId, | 129 | + Id: positionUpdate.Id, |
130 | + | ||
134 | Name: positionUpdate.Name, | 131 | Name: positionUpdate.Name, |
135 | - CreateTime: positionUpdate.CreateAt.Unix(), | ||
136 | } | 132 | } |
137 | if param.ParentID != 0 { | 133 | if param.ParentID != 0 { |
138 | - positioninfo.ParentID = parentPosition.Id | 134 | + positioninfo.ParentId = parentPosition.Id |
139 | positioninfo.ParemtName = parentPosition.Name | 135 | positioninfo.ParemtName = parentPosition.Name |
140 | } | 136 | } |
141 | 137 | ||
@@ -270,3 +266,20 @@ func PositionDelete(param protocol.RequestPositionDelete) error { | @@ -270,3 +266,20 @@ func PositionDelete(param protocol.RequestPositionDelete) error { | ||
270 | o.Commit() | 266 | o.Commit() |
271 | return nil | 267 | return nil |
272 | } | 268 | } |
269 | + | ||
270 | +func GetPositionList(companyid int64) ([]protocol.ResponsePositionInfo, error) { | ||
271 | + const ( | ||
272 | + dataSql = `SELECT id,parent_id,name FROM position WHERE company_id=? AND delete_at=0` | ||
273 | + ) | ||
274 | + var ( | ||
275 | + err error | ||
276 | + list []protocol.ResponsePositionInfo | ||
277 | + ) | ||
278 | + err = utils.ExecuteQueryAll(&list, dataSql, companyid) | ||
279 | + if err != nil { | ||
280 | + e := fmt.Errorf("EXECUTE SQL err:%s", err) | ||
281 | + log.Error(e.Error()) | ||
282 | + return nil, protocol.NewErrWithMessage("1", e) | ||
283 | + } | ||
284 | + return list, nil | ||
285 | +} |
@@ -216,11 +216,6 @@ func getRoleGroupByCompany(companyid int64) ([]protocol.RoleInfo, error) { | @@ -216,11 +216,6 @@ func getRoleGroupByCompany(companyid int64) ([]protocol.RoleInfo, error) { | ||
216 | return roles, err | 216 | return roles, err |
217 | } | 217 | } |
218 | 218 | ||
219 | -func RoleGetOne(param protocol.RequestRoleOne) (*protocol.ResponseRoleInfo, error) { | ||
220 | - // roledata, err := models.GetRoleById(param.RoleID) | ||
221 | - return nil, nil | ||
222 | -} | ||
223 | - | ||
224 | func GetRoleGroup() error { | 219 | func GetRoleGroup() error { |
225 | return nil | 220 | return nil |
226 | } | 221 | } |
1 | package utils | 1 | package utils |
2 | - | ||
3 | -import ( | ||
4 | - "fmt" | ||
5 | - "time" | ||
6 | - | ||
7 | - jwt "github.com/dgrijalva/jwt-go" | ||
8 | -) | ||
9 | - | ||
10 | -var ( | ||
11 | - key = []byte("sx87sda0w7x7sd") | ||
12 | -) | ||
13 | - | ||
14 | -//MyToken ... | ||
15 | -type MyToken struct { | ||
16 | - jwt.StandardClaims | ||
17 | - UID int `json:"uid"` | ||
18 | - CompanyID int `json:"company_id"` | ||
19 | -} | ||
20 | - | ||
21 | -//CreateJWTToken ... | ||
22 | -func CreateJWTToken(id int) (string, error) { | ||
23 | - nowTime := time.Now().Unix() | ||
24 | - claims := MyToken{ | ||
25 | - StandardClaims: jwt.StandardClaims{ | ||
26 | - NotBefore: nowTime, | ||
27 | - IssuedAt: nowTime, | ||
28 | - ExpiresAt: 60 * 60 * 2, //过期时间 | ||
29 | - Issuer: "mmm_oppmg", | ||
30 | - }, | ||
31 | - UID: id, | ||
32 | - } | ||
33 | - | ||
34 | - token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) | ||
35 | - return token.SignedString(key) | ||
36 | -} | ||
37 | - | ||
38 | -//ValidJWTToken ... | ||
39 | -func ValidJWTToken(tokenString string) (*MyToken, error) { | ||
40 | - token, err := jwt.ParseWithClaims( | ||
41 | - tokenString, | ||
42 | - &MyToken{}, | ||
43 | - func(token *jwt.Token) (interface{}, error) { | ||
44 | - return key, nil | ||
45 | - }) | ||
46 | - if err != nil { | ||
47 | - return nil, err | ||
48 | - } | ||
49 | - if claims, ok := token.Claims.(*MyToken); ok && token.Valid { | ||
50 | - // 验证成功,返回信息 | ||
51 | - return claims, nil | ||
52 | - } | ||
53 | - // 验证失败 | ||
54 | - return nil, fmt.Errorf("token Valid fail") | ||
55 | -} |
@@ -35,7 +35,7 @@ func ExecuteQueryOneWithOrmer(o orm.Ormer, result interface{}, sqlstr string, pa | @@ -35,7 +35,7 @@ func ExecuteQueryOneWithOrmer(o orm.Ormer, result interface{}, sqlstr string, pa | ||
35 | var err error | 35 | var err error |
36 | err = o.Raw(sqlstr, param).QueryRow(result) | 36 | err = o.Raw(sqlstr, param).QueryRow(result) |
37 | if err != nil { | 37 | if err != nil { |
38 | - return fmt.Errorf("SQL Execute err:%s", err) | 38 | + return err |
39 | } | 39 | } |
40 | return nil | 40 | return nil |
41 | } | 41 | } |
@@ -57,7 +57,7 @@ func ExecuteQueryAllWithOrmer(o orm.Ormer, result interface{}, sqlstr string, pa | @@ -57,7 +57,7 @@ func ExecuteQueryAllWithOrmer(o orm.Ormer, result interface{}, sqlstr string, pa | ||
57 | ) | 57 | ) |
58 | _, err = o.Raw(sqlstr, param).QueryRows(result) | 58 | _, err = o.Raw(sqlstr, param).QueryRows(result) |
59 | if err != nil { | 59 | if err != nil { |
60 | - return fmt.Errorf("SQL Execute err:%s", err) | 60 | + return err |
61 | } | 61 | } |
62 | return nil | 62 | return nil |
63 | } | 63 | } |
-
请 注册 或 登录 后发表评论