作者 唐旭辉

日常提交存储

1 ### 接口完成进度 1 ### 接口完成进度
2 2
3 | 功能 | 完成状态 | 时间 | 接口路径 | 请求方式 | 3 | 功能 | 完成状态 | 时间 | 接口路径 | 请求方式 |
4 -| ---------------- | ------------------ | --------------- | -------------------------- | -------- | 4 +| ---------------- | -------- | ---------- | -------------------------- | -------- |
5 | 登录获取 token | 完成 | 2018/12/11 | /auth/login | post | 5 | 登录获取 token | 完成 | 2018/12/11 | /auth/login | post |
6 | 短信验证码 | 未开始 | | | 6 | 短信验证码 | 未开始 | | |
7 | 刷新 token | 完成 | 2018/12/11 | /v1/auth/refresh_token | get | 7 | 刷新 token | 完成 | 2018/12/11 | /v1/auth/refresh_token | get |
8 | 切换公司 | 完成 | 2018/12/11 | /v1/auth/change_company | post | 8 | 切换公司 | 完成 | 2018/12/11 | /v1/auth/change_company | post |
9 -| 获取个人基础数据 | 未开始 | | /v1/auth/me | get | 9 +| 获取个人基础数据 | (暂停) | | /v1/auth/me | get |
10 | 获取角色列表 | 完成 | | /v1/rbac/role | get | 10 | 获取角色列表 | 完成 | | /v1/rbac/role | get |
11 | 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role/add | post | 11 | 添加角色 | 完成 | 2019.11.26 | /v1/rbac/role/add | post |
12 | 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role/edit | post | 12 | 编辑角色 | 完成 | 2019.11.26 | /v1/rbac/role/edit | post |
13 -| ~~删除角色~~ | ~~完成(待变更)~~ | ~~ 2019.11.26~~ | /v1/rbac/role/delete | post |  
14 | 删除角色 | 完成 | 2019.12.04 | /v1/rbac/role/delete | post | 13 | 删除角色 | 完成 | 2019.12.04 | /v1/rbac/role/delete | post |
15 | 添加角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group/add | post | 14 | 添加角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group/add | post |
16 | 编辑角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group/edit | post | 15 | 编辑角色组 | 完成 | 2019.12.04 | /v1/rbac/role_group/edit | post |
@@ -18,7 +17,6 @@ @@ -18,7 +17,6 @@
18 | 获取部门列表 | 完成 | 2019.12.5 | /v1/department | get | 17 | 获取部门列表 | 完成 | 2019.12.5 | /v1/department | get |
19 | 添加部门 | 完成 | 2019.11.28 | /v1/department/add | post | 18 | 添加部门 | 完成 | 2019.11.28 | /v1/department/add | post |
20 | 编辑部门 | 完成 | 2019.11.29 | /v1/department/edit | post | 19 | 编辑部门 | 完成 | 2019.11.29 | /v1/department/edit | post |
21 -| ~~删除部门~~ | ~~完成(待变更)~~ | ~~2019.11.29~~ | ~~/v1/department~~ | post |  
22 | 删除部门 | 完成 | 2019.12.2 | /v1/department/delete | post | 20 | 删除部门 | 完成 | 2019.12.2 | /v1/department/delete | post |
23 | 获取职位列表 | 进行中 | | /v1/position | get | 21 | 获取职位列表 | 进行中 | | /v1/position | get |
24 | 添加职位 | 完成 | 2019.12.2 | /v1/position/add | post | 22 | 添加职位 | 完成 | 2019.12.2 | /v1/position/add | post |
@@ -96,13 +96,16 @@ func (c *AuthController) ChangeCompany() { @@ -96,13 +96,16 @@ func (c *AuthController) ChangeCompany() {
96 return 96 return
97 } 97 }
98 98
  99 +//me
  100 +//@router /me [get]
99 func (c *AuthController) Me() { 101 func (c *AuthController) Me() {
100 var msg *protocol.ResponseMessage 102 var msg *protocol.ResponseMessage
101 defer func() { 103 defer func() {
102 c.ResposeJson(msg) 104 c.ResposeJson(msg)
103 }() 105 }()
104 - // userid := c.GetUserId()  
105 - // companyid := c.GetCompanyId()  
106 - 106 + userid := c.GetUserId()
  107 + companyid := c.GetCompanyId()
  108 + userinfo, err := serveauth.UserBaseInfo(userid, companyid)
  109 + msg = protocol.NewReturnResponse(userinfo, err)
107 return 110 return
108 } 111 }
@@ -63,7 +63,7 @@ func (c *CompanyController) DepartmentOne() { @@ -63,7 +63,7 @@ func (c *CompanyController) DepartmentOne() {
63 } 63 }
64 64
65 // DepartmentAdd 添加部门 65 // DepartmentAdd 添加部门
66 -// @router /department [post] 66 +// @router /department/add [post]
67 func (c *CompanyController) DepartmentAdd() { 67 func (c *CompanyController) DepartmentAdd() {
68 var msg *protocol.ResponseMessage 68 var msg *protocol.ResponseMessage
69 defer func() { 69 defer func() {
@@ -87,7 +87,7 @@ func (c *CompanyController) DepartmentAdd() { @@ -87,7 +87,7 @@ func (c *CompanyController) DepartmentAdd() {
87 } 87 }
88 88
89 // DepartmentUpdate 更新部门 89 // DepartmentUpdate 更新部门
90 -// @router /department [put] 90 +// @router /department/edit [post]
91 func (c *CompanyController) DepartmentUpdate() { 91 func (c *CompanyController) DepartmentUpdate() {
92 var msg *protocol.ResponseMessage 92 var msg *protocol.ResponseMessage
93 defer func() { 93 defer func() {
@@ -112,7 +112,7 @@ func (c *CompanyController) DepartmentUpdate() { @@ -112,7 +112,7 @@ func (c *CompanyController) DepartmentUpdate() {
112 } 112 }
113 113
114 // DepartmentUpdate 删除部门 114 // DepartmentUpdate 删除部门
115 -// @router /department [delete] 115 +// @router /department/delete [post]
116 func (c *CompanyController) DepartmentDelete() { 116 func (c *CompanyController) DepartmentDelete() {
117 var msg *protocol.ResponseMessage 117 var msg *protocol.ResponseMessage
118 defer func() { 118 defer func() {
@@ -132,7 +132,7 @@ func (c *CompanyController) DepartmentDelete() { @@ -132,7 +132,7 @@ func (c *CompanyController) DepartmentDelete() {
132 } 132 }
133 133
134 // PositionAdd 添加职位 134 // PositionAdd 添加职位
135 -// @router /position [post] 135 +// @router /position/add [post]
136 func (c *CompanyController) PositionAdd() { 136 func (c *CompanyController) PositionAdd() {
137 var msg *protocol.ResponseMessage 137 var msg *protocol.ResponseMessage
138 defer func() { 138 defer func() {
@@ -152,7 +152,7 @@ func (c *CompanyController) PositionAdd() { @@ -152,7 +152,7 @@ func (c *CompanyController) PositionAdd() {
152 } 152 }
153 153
154 // PositionEdit 编辑职位 154 // PositionEdit 编辑职位
155 -// @router /position [put] 155 +// @router /position/edit [post]
156 func (c *CompanyController) PositionEdit() { 156 func (c *CompanyController) PositionEdit() {
157 var msg *protocol.ResponseMessage 157 var msg *protocol.ResponseMessage
158 defer func() { 158 defer func() {
@@ -171,7 +171,7 @@ func (c *CompanyController) PositionEdit() { @@ -171,7 +171,7 @@ func (c *CompanyController) PositionEdit() {
171 } 171 }
172 172
173 // PositionDelete 删除职位 173 // PositionDelete 删除职位
174 -// @router /position [delete] 174 +// @router /position/delete [post]
175 func (c *CompanyController) PositionDelete() { 175 func (c *CompanyController) PositionDelete() {
176 var msg *protocol.ResponseMessage 176 var msg *protocol.ResponseMessage
177 defer func() { 177 defer func() {
@@ -213,7 +213,40 @@ func (c *CompanyController) PositionList() { @@ -213,7 +213,40 @@ func (c *CompanyController) PositionList() {
213 return 213 return
214 } 214 }
215 215
216 -//获取公司的基本信息  
217 -func (c *CompanyController) BaseInfo() { 216 +//UserAdd 添加用户
  217 +//@Router /user/add [post]
  218 +func (c *CompanyController) UserAdd() {
  219 + var msg *protocol.ResponseMessage
  220 + defer func() {
  221 + c.ResposeJson(msg)
  222 + }()
  223 + var param protocol.RequestUserAdd
  224 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  225 + log.Error("json 解析失败 err:%s", err)
  226 + msg = protocol.BadRequestParam("1")
  227 + return
  228 + }
  229 + param.CompanyId = c.GetCompanyId()
  230 + err := servecompany.UserAdd(param)
  231 + msg = protocol.NewReturnResponse(nil, err)
  232 + return
  233 +}
218 234
  235 +//UserAdd 添加用户
  236 +//@Router /user/edit [post]
  237 +func (c *CompanyController) UserEdit() {
  238 + var msg *protocol.ResponseMessage
  239 + defer func() {
  240 + c.ResposeJson(msg)
  241 + }()
  242 + var param protocol.RequestUserEdit
  243 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  244 + log.Error("json 解析失败 err:%s", err)
  245 + msg = protocol.BadRequestParam("1")
  246 + return
  247 + }
  248 + param.CompanyId = c.GetCompanyId()
  249 + err := servecompany.UserEdit(param)
  250 + msg = protocol.NewReturnResponse(nil, err)
  251 + return
219 } 252 }
1 package models 1 package models
2 2
3 import ( 3 import (
4 - "errors"  
5 "fmt" 4 "fmt"
6 "time" 5 "time"
7 6
@@ -43,6 +42,13 @@ func (t *User) IsEnable() bool { @@ -43,6 +42,13 @@ func (t *User) IsEnable() bool {
43 return false 42 return false
44 } 43 }
45 44
  45 +func (t *User) IsDelete() bool {
  46 + if t.DeleteAt.Unix() < 0 {
  47 + return false
  48 + }
  49 + return true
  50 +}
  51 +
46 func init() { 52 func init() {
47 orm.RegisterModel(new(User)) 53 orm.RegisterModel(new(User))
48 } 54 }
@@ -90,12 +96,13 @@ func UpdateUserById(m *User) (err error) { @@ -90,12 +96,13 @@ func UpdateUserById(m *User) (err error) {
90 func GetUserByPhone(phone string) (v *User, err error) { 96 func GetUserByPhone(phone string) (v *User, err error) {
91 o := orm.NewOrm() 97 o := orm.NewOrm()
92 v = &User{Phone: phone} 98 v = &User{Phone: phone}
93 - if err = o.Read(v, "Phone"); err == nil { 99 + err = o.QueryTable(&User{}).
  100 + Filter("phone", phone).
  101 + Filter("delete_at", 0).
  102 + One(v)
  103 + if err == nil {
94 return v, nil 104 return v, nil
95 } 105 }
96 - if v.DeleteAt.Unix() > 0 {  
97 - return nil, errors.New("user is deleted")  
98 - }  
99 return nil, err 106 return nil, err
100 } 107 }
101 108
1 package models 1 package models
2 2
3 import ( 3 import (
  4 + "errors"
4 "fmt" 5 "fmt"
5 "oppmg/common/log" 6 "oppmg/common/log"
6 "time" 7 "time"
@@ -54,8 +55,10 @@ func init() { @@ -54,8 +55,10 @@ func init() {
54 55
55 // AddUserCompany insert a new UserCompany into database and returns 56 // AddUserCompany insert a new UserCompany into database and returns
56 // last inserted Id on success. 57 // last inserted Id on success.
57 -func AddUserCompany(m *UserCompany) (id int64, err error) {  
58 - o := orm.NewOrm() 58 +func AddUserCompany(m *UserCompany, o orm.Ormer) (id int64, err error) {
  59 + m.CreateAt = time.Now()
  60 + m.DeleteAt = time.Unix(0, 0)
  61 + m.UpdateAt = time.Now()
59 id, err = o.Insert(m) 62 id, err = o.Insert(m)
60 return 63 return
61 } 64 }
@@ -77,13 +80,15 @@ func UpdateUserCompanyById(m *UserCompany) (err error) { @@ -77,13 +80,15 @@ func UpdateUserCompanyById(m *UserCompany) (err error) {
77 80
78 func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) { 81 func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) {
79 o := orm.NewOrm() 82 o := orm.NewOrm()
80 - v := &UserCompany{  
81 - UserId: userid,  
82 - CompanyId: companyId,  
83 - }  
84 - err := o.Read(v, "UserId", "CompanyId") 83 + var data []*UserCompany
  84 + _, err := o.QueryTable(&UserCompany{}).Filter("UserId", userid).
  85 + Filter("CompanyId", companyId).
  86 + All(&data)
85 if err != nil { 87 if err != nil {
86 return nil, err 88 return nil, err
87 } 89 }
88 - return v, nil 90 + if len(data) == 0 {
  91 + return nil, errors.New("UserCompany not found")
  92 + }
  93 + return data[0], nil
89 } 94 }
@@ -8,10 +8,10 @@ import ( @@ -8,10 +8,10 @@ import (
8 ) 8 )
9 9
10 type UserDepartment struct { 10 type UserDepartment struct {
11 - Id int `orm:"column(id);auto" description:"主键"` 11 + Id int64 `orm:"column(id);auto" description:"主键"`
12 UserId int64 `orm:"column(user_id)" description:"用户id"` 12 UserId int64 `orm:"column(user_id)" description:"用户id"`
13 - CompanyId int `orm:"column(company_id)" description:"公司id"`  
14 - DepartmentId int `orm:"column(department_id)" description:"部门id"` 13 + CompanyId int64 `orm:"column(company_id)" description:"公司id"`
  14 + DepartmentId int64 `orm:"column(department_id)" description:"部门id"`
15 CreateTime time.Time `orm:"column(create_time);type(timestamp);null" description:"创建时间"` 15 CreateTime time.Time `orm:"column(create_time);type(timestamp);null" description:"创建时间"`
16 EnableStatus int8 `orm:"column(enable_status)" description:"是否有效"` 16 EnableStatus int8 `orm:"column(enable_status)" description:"是否有效"`
17 } 17 }
@@ -20,6 +20,34 @@ func (t *UserDepartment) TableName() string { @@ -20,6 +20,34 @@ func (t *UserDepartment) TableName() string {
20 return "user_department" 20 return "user_department"
21 } 21 }
22 22
  23 +//EnableStatus 是否有效
  24 +const (
  25 + USER_DEPARTMENT_ENABLE_YES int8 = 1 //有效
  26 + USER_DEPARTMENT_ENABLE_NO int8 = 2 //无效
  27 +)
  28 +
  29 +func (t *UserDepartment) IsEnable() bool {
  30 + switch t.EnableStatus {
  31 + case USER_DEPARTMENT_ENABLE_YES:
  32 + return true
  33 + case USER_DEPARTMENT_ENABLE_NO:
  34 + return false
  35 + }
  36 + return false
  37 +}
  38 +
  39 +func (t *UserDepartment) ValidCompanyDepart() error {
  40 + depart, err := GetDepartmentById(t.DepartmentId)
  41 + if err != nil {
  42 + return err
  43 + }
  44 + if depart.CompanyId != t.CompanyId {
  45 + e := fmt.Errorf(" depart.CompanyId != param.CompanyId ")
  46 + return e
  47 + }
  48 + return nil
  49 +}
  50 +
23 func init() { 51 func init() {
24 orm.RegisterModel(new(UserDepartment)) 52 orm.RegisterModel(new(UserDepartment))
25 } 53 }
@@ -34,7 +62,7 @@ func AddUserDepartment(m *UserDepartment) (id int64, err error) { @@ -34,7 +62,7 @@ func AddUserDepartment(m *UserDepartment) (id int64, err error) {
34 62
35 // GetUserDepartmentById retrieves UserDepartment by Id. Returns error if 63 // GetUserDepartmentById retrieves UserDepartment by Id. Returns error if
36 // Id doesn't exist 64 // Id doesn't exist
37 -func GetUserDepartmentById(id int) (v *UserDepartment, err error) { 65 +func GetUserDepartmentById(id int64) (v *UserDepartment, err error) {
38 o := orm.NewOrm() 66 o := orm.NewOrm()
39 v = &UserDepartment{Id: id} 67 v = &UserDepartment{Id: id}
40 if err = o.Read(v); err == nil { 68 if err = o.Read(v); err == nil {
@@ -60,7 +88,7 @@ func UpdateUserDepartmentById(m *UserDepartment) (err error) { @@ -60,7 +88,7 @@ func UpdateUserDepartmentById(m *UserDepartment) (err error) {
60 88
61 // DeleteUserDepartment deletes UserDepartment by Id and returns error if 89 // DeleteUserDepartment deletes UserDepartment by Id and returns error if
62 // the record to be deleted doesn't exist 90 // the record to be deleted doesn't exist
63 -func DeleteUserDepartment(id int) (err error) { 91 +func DeleteUserDepartment(id int64) (err error) {
64 o := orm.NewOrm() 92 o := orm.NewOrm()
65 v := UserDepartment{Id: id} 93 v := UserDepartment{Id: id}
66 // ascertain id exists in the database 94 // ascertain id exists in the database
@@ -8,18 +8,46 @@ import ( @@ -8,18 +8,46 @@ import (
8 ) 8 )
9 9
10 type UserPosition struct { 10 type UserPosition struct {
11 - Id int `orm:"column(id);pk" description:"唯一键值"` 11 + Id int64 `orm:"column(id);pk" description:"唯一键值"`
12 UserId int64 `orm:"column(user_id)" description:"表user.id 用户编号"` 12 UserId int64 `orm:"column(user_id)" description:"表user.id 用户编号"`
13 - PositionId int `orm:"column(position_id)" description:"表position.id 职位编号"` 13 + PositionId int64 `orm:"column(position_id)" description:"表position.id 职位编号"`
14 CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` 14 CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
15 - CompanyId int `orm:"column(company_id)" description:"表company.id 公司编号"`  
16 - EnableStatus int8 `orm:"column(enable_status);null" description:"是否有效 1:有效 0:无效"` 15 + CompanyId int64 `orm:"column(company_id)" description:"表company.id 公司编号"`
  16 + EnableStatus int8 `orm:"column(enable_status);null" description:"是否有效 1:有效 2:无效"`
17 } 17 }
18 18
19 func (t *UserPosition) TableName() string { 19 func (t *UserPosition) TableName() string {
20 return "user_position" 20 return "user_position"
21 } 21 }
22 22
  23 +//EnableStatus 是否有效
  24 +const (
  25 + USER_POSITION_ENABLE_YES int8 = 1 //有效
  26 + USER_POSITION_ENABLE_NO int8 = 2 //无效
  27 +)
  28 +
  29 +func (t *UserPosition) IsEnable() bool {
  30 + switch t.EnableStatus {
  31 + case USER_POSITION_ENABLE_YES:
  32 + return true
  33 + case USER_POSITION_ENABLE_NO:
  34 + return false
  35 + }
  36 + return false
  37 +}
  38 +
  39 +func (t *UserPosition) ValidCompanyPosition() error {
  40 + depart, err := GetPositionById(t.PositionId)
  41 + if err != nil {
  42 + return err
  43 + }
  44 + if depart.CompanyId != t.CompanyId {
  45 + e := fmt.Errorf(" position.CompanyId != param.CompanyId ")
  46 + return e
  47 + }
  48 + return nil
  49 +}
  50 +
23 func init() { 51 func init() {
24 orm.RegisterModel(new(UserPosition)) 52 orm.RegisterModel(new(UserPosition))
25 } 53 }
@@ -34,7 +62,7 @@ func AddUserPosition(m *UserPosition) (id int64, err error) { @@ -34,7 +62,7 @@ func AddUserPosition(m *UserPosition) (id int64, err error) {
34 62
35 // GetUserPositionById retrieves UserPosition by Id. Returns error if 63 // GetUserPositionById retrieves UserPosition by Id. Returns error if
36 // Id doesn't exist 64 // Id doesn't exist
37 -func GetUserPositionById(id int) (v *UserPosition, err error) { 65 +func GetUserPositionById(id int64) (v *UserPosition, err error) {
38 o := orm.NewOrm() 66 o := orm.NewOrm()
39 v = &UserPosition{Id: id} 67 v = &UserPosition{Id: id}
40 if err = o.Read(v); err == nil { 68 if err = o.Read(v); err == nil {
@@ -60,7 +88,7 @@ func UpdateUserPositionById(m *UserPosition) (err error) { @@ -60,7 +88,7 @@ func UpdateUserPositionById(m *UserPosition) (err error) {
60 88
61 // DeleteUserPosition deletes UserPosition by Id and returns error if 89 // DeleteUserPosition deletes UserPosition by Id and returns error if
62 // the record to be deleted doesn't exist 90 // the record to be deleted doesn't exist
63 -func DeleteUserPosition(id int) (err error) { 91 +func DeleteUserPosition(id int64) (err error) {
64 o := orm.NewOrm() 92 o := orm.NewOrm()
65 v := UserPosition{Id: id} 93 v := UserPosition{Id: id}
66 // ascertain id exists in the database 94 // ascertain id exists in the database
  1 +package models
  2 +
  3 +import (
  4 + "fmt"
  5 +
  6 + "github.com/astaxie/beego/orm"
  7 +)
  8 +
  9 +type UserRole struct {
  10 + Id int `orm:"column(id);pk"`
  11 + RoleId int64 `orm:"column(role_id)"`
  12 + UserId int64 `orm:"column(user_id)"`
  13 + EnableStatus int8 `orm:"column(enable_status)" description:"是否有效"`
  14 + CompanyId int64 `orm:"column(company_id)" description:"表company.id 公司编号"`
  15 +}
  16 +
  17 +func (t *UserRole) TableName() string {
  18 + return "user_role"
  19 +}
  20 +
  21 +//EnableStatus 是否有效
  22 +const (
  23 + USER_ROLE_ENABLE_YES int8 = 1 //有效
  24 + USER_ROLE_ENABLE_NO int8 = 2 //无效
  25 +)
  26 +
  27 +func (t *UserRole) IsEnable() bool {
  28 + switch t.EnableStatus {
  29 + case USER_ROLE_ENABLE_YES:
  30 + return true
  31 + case USER_ROLE_ENABLE_NO:
  32 + return false
  33 + }
  34 + return false
  35 +}
  36 +
  37 +func (t *UserRole) ValidCompanyRole() error {
  38 + depart, err := GetRoleById(t.RoleId)
  39 + if err != nil {
  40 + return err
  41 + }
  42 + if depart.CompanyId != t.CompanyId {
  43 + e := fmt.Errorf("role.CompanyId != param.CompanyId ")
  44 + return e
  45 + }
  46 + return nil
  47 +}
  48 +
  49 +func init() {
  50 + orm.RegisterModel(new(UserRole))
  51 +}
  52 +
  53 +// AddUserRole insert a new UserRole into database and returns
  54 +// last inserted Id on success.
  55 +func AddUserRole(m *UserRole) (id int64, err error) {
  56 + o := orm.NewOrm()
  57 + id, err = o.Insert(m)
  58 + return
  59 +}
  60 +
  61 +// GetUserRoleById retrieves UserRole by Id. Returns error if
  62 +// Id doesn't exist
  63 +func GetUserRoleById(id int) (v *UserRole, err error) {
  64 + o := orm.NewOrm()
  65 + v = &UserRole{Id: id}
  66 + if err = o.Read(v); err == nil {
  67 + return v, nil
  68 + }
  69 + return nil, err
  70 +}
  71 +
  72 +// UpdateUserRole updates UserRole by Id and returns error if
  73 +// the record to be updated doesn't exist
  74 +func UpdateUserRoleById(m *UserRole) (err error) {
  75 + o := orm.NewOrm()
  76 + v := UserRole{Id: m.Id}
  77 + // ascertain id exists in the database
  78 + if err = o.Read(&v); err == nil {
  79 + var num int64
  80 + if num, err = o.Update(m); err == nil {
  81 + fmt.Println("Number of records updated in database:", num)
  82 + }
  83 + }
  84 + return
  85 +}
  86 +
  87 +// DeleteUserRole deletes UserRole by Id and returns error if
  88 +// the record to be deleted doesn't exist
  89 +func DeleteUserRole(id int) (err error) {
  90 + o := orm.NewOrm()
  91 + v := UserRole{Id: id}
  92 + // ascertain id exists in the database
  93 + if err = o.Read(&v); err == nil {
  94 + var num int64
  95 + if num, err = o.Delete(&UserRole{Id: id}); err == nil {
  96 + fmt.Println("Number of records deleted in database:", num)
  97 + }
  98 + }
  99 + return
  100 +}
@@ -70,6 +70,7 @@ type RequestPositionDelete struct { @@ -70,6 +70,7 @@ type RequestPositionDelete struct {
70 IDs []int64 `json:"ids"` 70 IDs []int64 `json:"ids"`
71 } 71 }
72 72
  73 +//RequestUserAdd 添加用户
73 type RequestUserAdd struct { 74 type RequestUserAdd struct {
74 Name string `json:"name"` 75 Name string `json:"name"`
75 CompanyId int64 `json:"company_id"` 76 CompanyId int64 `json:"company_id"`
@@ -79,6 +80,7 @@ type RequestUserAdd struct { @@ -79,6 +80,7 @@ type RequestUserAdd struct {
79 Roles []int64 `json:"roles"` 80 Roles []int64 `json:"roles"`
80 } 81 }
81 82
  83 +//RequestUserEdit 编辑用户
82 type RequestUserEdit struct { 84 type RequestUserEdit struct {
83 ID int64 `json:"id"` 85 ID int64 `json:"id"`
84 RequestUserAdd 86 RequestUserAdd
1 package protocol 1 package protocol
2 2
3 -import (  
4 - "encoding/json"  
5 -)  
6 -  
7 //CustomErrParse 解析自定义错误结构体 3 //CustomErrParse 解析自定义错误结构体
8 type CustomErrParse interface { 4 type CustomErrParse interface {
9 ParseToMessage() *ResponseMessage 5 ParseToMessage() *ResponseMessage
@@ -72,8 +68,8 @@ func NewErrWithMessage(code string, eRR ...error) *ErrWithMessage { @@ -72,8 +68,8 @@ func NewErrWithMessage(code string, eRR ...error) *ErrWithMessage {
72 //Error 实现接口error 中的方法 68 //Error 实现接口error 中的方法
73 //将ErrorCode转为json数据,建议用于日志记录 69 //将ErrorCode转为json数据,建议用于日志记录
74 func (e ErrWithMessage) Error() string { 70 func (e ErrWithMessage) Error() string {
75 - bt, _ := json.Marshal(e.ErrorCode)  
76 - return string(bt) 71 +
  72 + return e.Errmsg
77 } 73 }
78 74
79 //Unwrap 接口实现 75 //Unwrap 接口实现
@@ -17,6 +17,10 @@ var errmessge ErrorMap = map[string]string{ @@ -17,6 +17,10 @@ var errmessge ErrorMap = map[string]string{
17 "10025": "该账号已在其他地方登录", 17 "10025": "该账号已在其他地方登录",
18 "10026": "登录凭证过期", 18 "10026": "登录凭证过期",
19 "10027": "无操作权限", 19 "10027": "无操作权限",
  20 + //用户相关
  21 + "10031": "无效角色",
  22 + "10032": "无效部门",
  23 + "10033": "无效职位",
20 } 24 }
21 25
22 //错误码转换 ,兼容需要 26 //错误码转换 ,兼容需要
@@ -34,6 +34,12 @@ func init() { @@ -34,6 +34,12 @@ func init() {
34 beego.NSRouter("/role_group/delete", &controllers.RbacController{}, "post:RoleGroupDelete"), 34 beego.NSRouter("/role_group/delete", &controllers.RbacController{}, "post:RoleGroupDelete"),
35 beego.NSRouter("/role", &controllers.RbacController{}, "get:RoleList"), 35 beego.NSRouter("/role", &controllers.RbacController{}, "get:RoleList"),
36 ), 36 ),
  37 + beego.NSNamespace("/user/",
  38 + // beego.NSRouter("/list", &controllers.CompanyController{}, "post:UserList"),
  39 + beego.NSRouter("/add", &controllers.CompanyController{}, "post:UserAdd"),
  40 + beego.NSRouter("/edit", &controllers.CompanyController{}, "post:UserEdit"),
  41 + // beego.NSRouter("/delete", &controllers.CompanyController{}, "post:PositionDelete"),
  42 + ),
37 beego.NSNamespace("/auth", 43 beego.NSNamespace("/auth",
38 beego.NSRouter("/change_company", &controllers.AuthController{}, "post:ChangeCompany"), 44 beego.NSRouter("/change_company", &controllers.AuthController{}, "post:ChangeCompany"),
39 beego.NSRouter("/refresh_token", &controllers.AuthController{}, "get:RefreshToken"), 45 beego.NSRouter("/refresh_token", &controllers.AuthController{}, "get:RefreshToken"),
@@ -43,44 +43,44 @@ func validatePassword(from, to string) bool { @@ -43,44 +43,44 @@ func validatePassword(from, to string) bool {
43 43
44 //LoginAuth 登录认证 44 //LoginAuth 登录认证
45 //TODO 登录校验逻辑修改 45 //TODO 登录校验逻辑修改
46 -func LoginAuthByPassword(account, password string) (protocol.LoginAuthToken, error) {  
47 - var (  
48 - user *models.User  
49 - companys []models.Company  
50 - mcompany models.Company  
51 - loginToken protocol.LoginAuthToken  
52 - err error  
53 - )  
54 - user, err = models.GetUserByPhone(account)  
55 - if err != nil {  
56 - log.Error(err.Error())  
57 - return loginToken, protocol.NewErrWithMessage("10021", err)  
58 - }  
59 - if ok := validatePassword(password, user.Passwd); !ok {  
60 - return loginToken, protocol.NewErrWithMessage("10021", err)  
61 - }  
62 - if ok := user.IsEnable(); !ok {  
63 - return loginToken, protocol.NewErrWithMessage("10022")  
64 - }  
65 - companys, err = models.GetCompanyByUser(user.Id)  
66 - if err != nil {  
67 - e := fmt.Errorf("GetCompanyByUser(%d) err:%s", user.Id, err)  
68 - log.Error(e.Error())  
69 - return loginToken, protocol.NewErrWithMessage("1")  
70 - }  
71 - if len(companys) <= 0 {  
72 - log.Error("can not found company")  
73 - return loginToken, protocol.NewErrWithMessage("1")  
74 - }  
75 - mcompany = companys[0]  
76 - loginToken, err = GenerateAuthToken(user.Id, mcompany.Id)  
77 - if err != nil {  
78 - e := fmt.Errorf("GenerateAuthToken err:%s", err)  
79 - log.Error(e.Error())  
80 - return loginToken, protocol.NewErrWithMessage("1")  
81 - }  
82 - return loginToken, nil  
83 -} 46 +// func LoginAuthByPassword(account, password string) (protocol.LoginAuthToken, error) {
  47 +// var (
  48 +// user *models.User
  49 +// companys []models.Company
  50 +// mcompany models.Company
  51 +// loginToken protocol.LoginAuthToken
  52 +// err error
  53 +// )
  54 +// user, err = models.GetUserByPhone(account)
  55 +// if err != nil {
  56 +// log.Error(err.Error())
  57 +// return loginToken, protocol.NewErrWithMessage("10021", err)
  58 +// }
  59 +// if ok := validatePassword(password, user.Passwd); !ok {
  60 +// return loginToken, protocol.NewErrWithMessage("10021", err)
  61 +// }
  62 +// if ok := user.IsEnable(); !ok {
  63 +// return loginToken, protocol.NewErrWithMessage("10022")
  64 +// }
  65 +// companys, err = models.GetCompanyByUser(user.Id)
  66 +// if err != nil {
  67 +// e := fmt.Errorf("GetCompanyByUser(%d) err:%s", user.Id, err)
  68 +// log.Error(e.Error())
  69 +// return loginToken, protocol.NewErrWithMessage("1")
  70 +// }
  71 +// if len(companys) <= 0 {
  72 +// log.Error("can not found company")
  73 +// return loginToken, protocol.NewErrWithMessage("1")
  74 +// }
  75 +// mcompany = companys[0]
  76 +// loginToken, err = GenerateAuthToken(user.Id, mcompany.Id)
  77 +// if err != nil {
  78 +// e := fmt.Errorf("GenerateAuthToken err:%s", err)
  79 +// log.Error(e.Error())
  80 +// return loginToken, protocol.NewErrWithMessage("1")
  81 +// }
  82 +// return loginToken, nil
  83 +// }
84 84
85 //ResetLoginToken token存数据库 85 //ResetLoginToken token存数据库
86 func ResetLoginToken(loginToken protocol.LoginAuthToken) error { 86 func ResetLoginToken(loginToken protocol.LoginAuthToken) error {
@@ -236,6 +236,10 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro @@ -236,6 +236,10 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro
236 log.Debug("GetUserByPhone(%s) err:%s", account, err) 236 log.Debug("GetUserByPhone(%s) err:%s", account, err)
237 return logintoken, protocol.NewErrWithMessage("10021") 237 return logintoken, protocol.NewErrWithMessage("10021")
238 } 238 }
  239 + if ok := userdata.IsDelete(); ok {
  240 + log.Debug("userdata.IsDelete()==true")
  241 + return logintoken, protocol.NewErrWithMessage("10021")
  242 + }
239 if ok := userdata.IsEnable(); !ok { 243 if ok := userdata.IsEnable(); !ok {
240 log.Debug("userdata.IsEnable()==false") 244 log.Debug("userdata.IsEnable()==false")
241 return logintoken, protocol.NewErrWithMessage("10021") 245 return logintoken, protocol.NewErrWithMessage("10021")
@@ -5,80 +5,336 @@ import ( @@ -5,80 +5,336 @@ import (
5 "oppmg/common/log" 5 "oppmg/common/log"
6 "oppmg/models" 6 "oppmg/models"
7 "oppmg/protocol" 7 "oppmg/protocol"
  8 + "oppmg/utils"
  9 + "time"
  10 +
  11 + "github.com/astaxie/beego/orm"
8 ) 12 )
9 13
10 func UserAdd(param protocol.RequestUserAdd) error { 14 func UserAdd(param protocol.RequestUserAdd) error {
11 var ( 15 var (
12 - // user models.User  
13 - // userRoles []models.RoleRelated  
14 - // userPositions []models.UserPosition  
15 - // userDeparts []models.UserPosition 16 + userm *models.User
  17 + err error
16 ) 18 )
17 //校验角色 19 //校验角色
18 - validCompanyRole(param.CompanyId, param.Roles) 20 + err = validCompanyRole(param.CompanyId, param.Roles)
  21 + if err != nil {
  22 + log.Error(err.Error())
  23 + return protocol.NewErrWithMessage("10031")
  24 + }
19 //校验部门 25 //校验部门
20 - validCompanyDepart(param.CompanyId, param.Departments) 26 + err = validCompanyDepart(param.CompanyId, param.Departments)
  27 + if err != nil {
  28 + log.Error(err.Error())
  29 + return protocol.NewErrWithMessage("10032")
  30 + }
21 //校验职位 31 //校验职位
22 - validCompanyPositions(param.CompanyId, param.Positions)  
23 - //添加用户 32 + err = validCompanyPosition(param.CompanyId, param.Positions)
  33 + if err != nil {
  34 + log.Error(err.Error())
  35 + return protocol.NewErrWithMessage("10033")
  36 + }
  37 + userm = &models.User{
  38 + NickName: param.Name,
  39 + Phone: param.Phone,
  40 + }
  41 + o := orm.NewOrm()
  42 + o.Begin()
  43 + err = registUser(userm, param.CompanyId, o)
  44 + if err != nil {
  45 + o.Rollback()
  46 + log.Error("registUser err:%s", err)
  47 + return protocol.NewErrWithMessage("1")
  48 + }
24 //添加角色 49 //添加角色
  50 + err = editUserRole(userm.Id, param.CompanyId, param.Roles, o)
  51 + if err != nil {
  52 + o.Rollback()
  53 + log.Error("editUserRole err:%s", err)
  54 + return protocol.NewErrWithMessage("1")
  55 + }
25 //添加部门 56 //添加部门
  57 + err = editUserDepart(userm.Id, param.CompanyId, param.Departments, o)
  58 + if err != nil {
  59 + o.Rollback()
  60 + log.Error("editUserDepart err:%s", err)
  61 + return protocol.NewErrWithMessage("1")
  62 + }
26 //添加职位 63 //添加职位
  64 + err = editUserDepart(userm.Id, param.CompanyId, param.Positions, o)
  65 + if err != nil {
  66 + o.Rollback()
  67 + log.Error("editUserDepart err:%s", err)
  68 + return protocol.NewErrWithMessage("1")
  69 + }
  70 + o.Commit()
  71 + return nil
  72 +}
  73 +func validCompanyRole(companyid int64, roleid []int64) error {
  74 + var (
  75 + err error
  76 + )
  77 + for _, v := range roleid {
  78 + ur := models.UserRole{
  79 + CompanyId: companyid,
  80 + RoleId: v,
  81 + EnableStatus: models.USER_ROLE_ENABLE_YES,
  82 + }
  83 + err = ur.ValidCompanyRole()
  84 + if err != nil {
  85 + e := fmt.Errorf("ValidCompanyRole err:%s [company:%d,role:%d]", err, companyid, v)
  86 + log.Error(e.Error())
  87 + return protocol.NewErrWithMessage("10031")
  88 + }
  89 +
  90 + }
27 return nil 91 return nil
28 } 92 }
29 93
30 -func validCompanyRole(companyId int64, roleIds []int64) error {  
31 - for _, v := range roleIds {  
32 - role, err := models.GetRoleById(v) 94 +func validCompanyDepart(companyid int64, departid []int64) error {
  95 + var (
  96 + err error
  97 + )
  98 + for _, v := range departid {
  99 + ud := models.UserDepartment{
  100 + CompanyId: companyid,
  101 + DepartmentId: v,
  102 + EnableStatus: models.USER_DEPARTMENT_ENABLE_YES,
  103 + }
  104 + err = ud.ValidCompanyDepart()
33 if err != nil { 105 if err != nil {
34 - e := fmt.Errorf("GetRoleById(%d) err:%s", v, err) 106 + e := fmt.Errorf("ValidCompanyDepart err:%s [company:%d,department:%d]", err, companyid, v)
35 log.Error(e.Error()) 107 log.Error(e.Error())
36 - return protocol.NewErrWithMessage("1", err) 108 + return protocol.NewErrWithMessage("10032")
  109 + }
  110 +
37 } 111 }
38 - if role.CompanyId != companyId {  
39 - e := fmt.Errorf(" role.CompanyId != param.CompanyId ") 112 + return nil
  113 +}
  114 +
  115 +func validCompanyPosition(companyid int64, positionid []int64) error {
  116 + var (
  117 + err error
  118 + )
  119 + for _, v := range positionid {
  120 + ud := models.UserPosition{
  121 +
  122 + CompanyId: companyid,
  123 + PositionId: v,
  124 + EnableStatus: models.USER_DEPARTMENT_ENABLE_YES,
  125 + }
  126 + err = ud.ValidCompanyPosition()
  127 + if err != nil {
  128 + e := fmt.Errorf("ValidCompanyPosition err:%s [company:%d,department:%d]", err, companyid, v)
40 log.Error(e.Error()) 129 log.Error(e.Error())
41 - return protocol.NewErrWithMessage("1", err) 130 + return protocol.NewErrWithMessage("10033")
  131 + }
  132 +
  133 + }
  134 + return nil
  135 +}
  136 +
  137 +//registUser 注册用户
  138 +func registUser(userIn *models.User, companyid int64, o orm.Ormer) error {
  139 + var (
  140 + err error
  141 + // usrData *models.User
  142 + )
  143 + _, err = models.GetUserByPhone(userIn.Phone)
  144 + if err == nil {
  145 + return nil
  146 + }
  147 + if err != nil && err != orm.ErrNoRows {
  148 + return err
  149 + }
  150 + if err == orm.ErrNoRows {
  151 + _, err := models.AddUser(userIn, o)
  152 + if err != nil {
  153 + return err
  154 + }
  155 + }
  156 + musercompany := &models.UserCompany{
  157 + CompanyId: companyid,
  158 + UserId: userIn.Id,
42 } 159 }
  160 + _, err = models.AddUserCompany(musercompany, o)
  161 + if err != nil {
  162 + return err
43 } 163 }
  164 + //更新
44 return nil 165 return nil
45 } 166 }
46 167
47 -func validCompanyDepart(companyId int64, departIds []int64) error {  
48 - for _, v := range departIds {  
49 - depart, err := models.GetDepartmentById(v) 168 +func editUserDepart(userid int64, companyid int64, departids []int64, o orm.Ormer) error {
  169 + var (
  170 + oldDepartIds []int64
  171 + err error
  172 + delDepartIds []int64
  173 + addDepartIds []int64
  174 + )
  175 + dataSql := `SELECT department_id FROM user_department WHERE enable_status=1 AND company_id=? AND user_id=?`
  176 + dataSql2 := `UPDATE user_department SET enable_status = 2 WHERE company_id = ? AND user_id=? AND department_id=?`
  177 + datasql3 := `INSERT INTO user_department (user_id,department_id,company_id,enable_status,create_at) VALUES (?,?,?,?,?)`
  178 + err = utils.ExecuteQueryAllWithOrmer(o, &oldDepartIds, dataSql, companyid, userid)
50 if err != nil { 179 if err != nil {
51 - e := fmt.Errorf("GetDepartmentById(%d) err:%s", v, err) 180 + e := fmt.Errorf("Execute SQL err:%s", err)
52 log.Error(e.Error()) 181 log.Error(e.Error())
53 - return protocol.NewErrWithMessage("1", err) 182 + return e
  183 + }
  184 + delDepartIds = utils.ArrayInt64Diff(oldDepartIds, departids)
  185 + addDepartIds = utils.ArrayInt64Diff(departids, oldDepartIds)
  186 + for _, v := range delDepartIds {
  187 + err = utils.ExecuteSQLWithOrmer(o, dataSql2, companyid, userid, v)
  188 + if err != nil {
  189 + e := fmt.Errorf("Execute SQL err:%s", err)
  190 + log.Error(e.Error())
  191 + return e
  192 + }
54 } 193 }
55 - if depart.CompanyId != companyId {  
56 - e := fmt.Errorf(" depart.CompanyId != param.CompanyId ") 194 + nowTime := time.Now().String()
  195 + for _, v := range addDepartIds {
  196 + err = utils.ExecuteSQLWithOrmer(o, datasql3, userid, v, companyid, models.USER_POSITION_ENABLE_YES, nowTime)
  197 + if err != nil {
  198 + e := fmt.Errorf("Execute SQL err:%s", err)
57 log.Error(e.Error()) 199 log.Error(e.Error())
58 - return protocol.NewErrWithMessage("1", err) 200 + return e
59 } 201 }
60 } 202 }
61 return nil 203 return nil
62 } 204 }
63 205
64 -func validCompanyPositions(companyId int64, positionIds []int64) error {  
65 - for _, v := range positionIds {  
66 - pos, err := models.GetPositionById(v) 206 +func editUserPosition(userid int64, companyid int64, positionids []int64, o orm.Ormer) error {
  207 + var (
  208 + oldPositionIds []int64
  209 + err error
  210 + delPositionIds []int64
  211 + addPositionIds []int64
  212 + )
  213 + dataSql := `SELECT position_id FROM user_position WHERE enable_status=1 AND company_id=? AND user_id=?`
  214 + dataSql2 := `UPDATE user_position SET enable_status = 2 WHERE company_id = ? AND user_id=? AND position_id=?`
  215 + datasql3 := `INSERT INTO user_position (user_id,position_id,company_id,enable_status,create_at) VALUES (?,?,?,?,?)`
  216 + err = utils.ExecuteQueryAllWithOrmer(o, &oldPositionIds, dataSql, companyid, userid)
67 if err != nil { 217 if err != nil {
68 - e := fmt.Errorf("GetDepartmentById(%d) err:%s", v, err) 218 + e := fmt.Errorf("Execute SQL err:%s", err)
69 log.Error(e.Error()) 219 log.Error(e.Error())
70 - return protocol.NewErrWithMessage("1", err) 220 + return e
71 } 221 }
72 - if pos.CompanyId != companyId {  
73 - e := fmt.Errorf("pos.CompanyId != pos.CompanyId") 222 + delPositionIds = utils.ArrayInt64Diff(oldPositionIds, positionids)
  223 + addPositionIds = utils.ArrayInt64Diff(positionids, oldPositionIds)
  224 + for _, v := range delPositionIds {
  225 + err = utils.ExecuteSQLWithOrmer(o, dataSql2, companyid, userid, v)
  226 + if err != nil {
  227 + e := fmt.Errorf("Execute SQL err:%s", err)
74 log.Error(e.Error()) 228 log.Error(e.Error())
75 - return protocol.NewErrWithMessage("1", err) 229 + return e
  230 + }
  231 + }
  232 + nowTime := time.Now().String()
  233 + for _, v := range addPositionIds {
  234 + err = utils.ExecuteSQLWithOrmer(o, datasql3, userid, v, companyid, models.USER_POSITION_ENABLE_YES, nowTime)
  235 + if err != nil {
  236 + e := fmt.Errorf("Execute SQL err:%s", err)
  237 + log.Error(e.Error())
  238 + return e
  239 + }
  240 + }
  241 + return nil
  242 +}
  243 +func editUserRole(userid int64, companyid int64, roleids []int64, o orm.Ormer) error {
  244 + var (
  245 + oldRoleIds []int64
  246 + err error
  247 + delRoleIds []int64
  248 + addRoleIds []int64
  249 + )
  250 + dataSql := `SELECT role_id FROM user_role WHERE enable_status=1 AND company_id=? AND user_id=?`
  251 + dataSql2 := `UPDATE user_position SET enable_status = 2 WHERE company_id =? AND user_id=? AND role_id=?`
  252 + datasql3 := `INSERT INTO user_role (user_id,role_id,company_id,enable_status) VALUES (?,?,?,?)`
  253 + err = utils.ExecuteQueryAllWithOrmer(o, &oldRoleIds, dataSql, companyid, userid)
  254 + if err != nil {
  255 + e := fmt.Errorf("Execute SQL err:%s", err)
  256 + log.Error(e.Error())
  257 + return e
  258 + }
  259 + delRoleIds = utils.ArrayInt64Diff(oldRoleIds, roleids)
  260 + addRoleIds = utils.ArrayInt64Diff(roleids, oldRoleIds)
  261 + for _, v := range delRoleIds {
  262 + err = utils.ExecuteSQLWithOrmer(o, dataSql2, companyid, userid, v)
  263 + if err != nil {
  264 + e := fmt.Errorf("Execute SQL err:%s", err)
  265 + log.Error(e.Error())
  266 + return e
  267 + }
  268 + }
  269 + for _, v := range addRoleIds {
  270 + err = utils.ExecuteSQLWithOrmer(o, datasql3, userid, v, companyid, models.USER_POSITION_ENABLE_YES)
  271 + if err != nil {
  272 + e := fmt.Errorf("Execute SQL err:%s", err)
  273 + log.Error(e.Error())
  274 + return e
76 } 275 }
77 } 276 }
78 return nil 277 return nil
79 } 278 }
80 279
81 func UserEdit(param protocol.RequestUserEdit) error { 280 func UserEdit(param protocol.RequestUserEdit) error {
  281 + var (
  282 + userm *models.User
  283 + err error
  284 + )
  285 + //校验角色
  286 + err = validCompanyRole(param.CompanyId, param.Roles)
  287 + if err != nil {
  288 + log.Error(err.Error())
  289 + return protocol.NewErrWithMessage("10031")
  290 + }
  291 + //校验部门
  292 + err = validCompanyDepart(param.CompanyId, param.Departments)
  293 + if err != nil {
  294 + log.Error(err.Error())
  295 + return protocol.NewErrWithMessage("10032")
  296 + }
  297 + //校验职位
  298 + err = validCompanyPosition(param.CompanyId, param.Positions)
  299 + if err != nil {
  300 + log.Error(err.Error())
  301 + return protocol.NewErrWithMessage("10033")
  302 + }
  303 + userm = &models.User{
  304 + Id: param.ID,
  305 + NickName: param.Name,
  306 + Phone: param.Phone,
  307 + }
  308 + o := orm.NewOrm()
  309 + o.Begin()
  310 + err = registUser(userm, param.CompanyId, o)
  311 + if err != nil {
  312 + o.Rollback()
  313 + log.Error("registUser err:%s", err)
  314 + return protocol.NewErrWithMessage("1")
  315 + }
  316 + //添加角色
  317 + err = editUserRole(userm.Id, param.CompanyId, param.Roles, o)
  318 + if err != nil {
  319 + o.Rollback()
  320 + log.Error("editUserRole err:%s", err)
  321 + return protocol.NewErrWithMessage("1")
  322 + }
  323 + //添加部门
  324 + err = editUserDepart(userm.Id, param.CompanyId, param.Departments, o)
  325 + if err != nil {
  326 + o.Rollback()
  327 + log.Error("editUserDepart err:%s", err)
  328 + return protocol.NewErrWithMessage("1")
  329 + }
  330 + //添加职位
  331 + err = editUserDepart(userm.Id, param.CompanyId, param.Positions, o)
  332 + if err != nil {
  333 + o.Rollback()
  334 + log.Error("editUserDepart err:%s", err)
  335 + return protocol.NewErrWithMessage("1")
  336 + }
  337 + o.Commit()
82 return nil 338 return nil
83 } 339 }
84 340
@@ -9,6 +9,9 @@ type ArrayCmpare interface { @@ -9,6 +9,9 @@ type ArrayCmpare interface {
9 9
10 //ArrayInt64Diff 返回切片的差集:arr1-arr2 10 //ArrayInt64Diff 返回切片的差集:arr1-arr2
11 func ArrayInt64Diff(arr1 []int64, arr2 []int64) []int64 { 11 func ArrayInt64Diff(arr1 []int64, arr2 []int64) []int64 {
  12 + if len(arr2) == 0 {
  13 + return arr1
  14 + }
12 setmap := make(map[int64]bool) 15 setmap := make(map[int64]bool)
13 for i := range arr2 { 16 for i := range arr2 {
14 setmap[arr1[i]] = true 17 setmap[arr1[i]] = true