作者 yangfu

用户职位 部门

@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 |我审核的机会| | | v1/chance/chances| 29 |我审核的机会| | | v1/chance/chances|
30 |机会详情| | | v1/chance/detail| 30 |机会详情| | | v1/chance/detail|
31 |待抓住机会列表| | |v1/chance/chances| 31 |待抓住机会列表| | |v1/chance/chances|
32 -|提交机会| | |v1/chance/public| 32 +|提交机会| | |v1/chance/submit|
33 |部门列表-全部| | |v1/department/departments| 33 |部门列表-全部| | |v1/department/departments|
34 |部门列表-用户| | |v1/department/userDepartments| 34 |部门列表-用户| | |v1/department/userDepartments|
35 |配置-机会类型| | |v1/config/chanceType| 35 |配置-机会类型| | |v1/config/chanceType|
  1 +package v1
  2 +
  3 +import (
  4 + "encoding/json"
  5 + "opp/controllers"
  6 + "opp/protocol"
  7 + "opp/services/department"
  8 +
  9 + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
  10 +)
  11 +
  12 +type DepartmentController struct {
  13 + controllers.BaseController
  14 +}
  15 +
  16 +//Departments
  17 +//@router /departments [post]
  18 +func (this *DepartmentController) Departments() {
  19 + var msg *protocol.ResponseMessage
  20 + defer func() {
  21 + this.Resp(msg)
  22 + }()
  23 + var request *protocol.DepartmentsRequest
  24 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  25 + log.Error(err)
  26 + msg = protocol.BadRequestParam(1)
  27 + return
  28 + }
  29 + if b, m := this.Valid(request); !b {
  30 + msg = m
  31 + return
  32 + }
  33 + header := controllers.GetRequestHeader(this.Ctx)
  34 + msg = protocol.NewReturnResponse(department.Departments(header, request))
  35 +}
@@ -4,6 +4,7 @@ import "opp/models" @@ -4,6 +4,7 @@ import "opp/models"
4 4
5 type IDepartmentRepository interface { 5 type IDepartmentRepository interface {
6 GetDepartmentById(companyId int) (v *models.Department, err error) 6 GetDepartmentById(companyId int) (v *models.Department, err error)
  7 + GetDepartmentByCompanyId(companyId int64) (v []*models.Department, err error)
7 } 8 }
8 9
9 var _ IDepartmentRepository = (*DepartmentRepository)(nil) 10 var _ IDepartmentRepository = (*DepartmentRepository)(nil)
@@ -14,6 +15,10 @@ func (r *DepartmentRepository) GetDepartmentById(id int) (v *models.Department, @@ -14,6 +15,10 @@ func (r *DepartmentRepository) GetDepartmentById(id int) (v *models.Department,
14 return models.GetDepartmentById(id) 15 return models.GetDepartmentById(id)
15 } 16 }
16 17
  18 +func (r *DepartmentRepository) GetDepartmentByCompanyId(companyId int64) (v []*models.Department, err error) {
  19 + return models.GetDepartmentByCompanyId(companyId)
  20 +}
  21 +
17 type IUserDepartmentRepository interface { 22 type IUserDepartmentRepository interface {
18 GetUserDepartment(userId int64, companyId int64, v interface{}) (err error) 23 GetUserDepartment(userId int64, companyId int64, v interface{}) (err error)
19 } 24 }
1 package models 1 package models
2 2
3 import ( 3 import (
4 - "errors"  
5 "fmt" 4 "fmt"
6 - "reflect"  
7 - "strings"  
8 "time" 5 "time"
9 6
10 "github.com/astaxie/beego/orm" 7 "github.com/astaxie/beego/orm"
@@ -20,7 +17,7 @@ type Department struct { @@ -20,7 +17,7 @@ type Department struct {
20 DeleteAt time.Time `orm:"column(delete_at);type(timestamp)" description:"删除时间"` 17 DeleteAt time.Time `orm:"column(delete_at);type(timestamp)" description:"删除时间"`
21 UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"` 18 UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
22 Member int `orm:"column(member)" description:"成员数量"` 19 Member int `orm:"column(member)" description:"成员数量"`
23 - Admin int `orm:"column(admin);null" description:"部门负责人id"` 20 + Managers string `orm:"column(managers);null" description:"部门负责人id列表 json 数组 [ ]"`
24 } 21 }
25 22
26 func (t *Department) TableName() string { 23 func (t *Department) TableName() string {
@@ -50,84 +47,6 @@ func GetDepartmentById(id int) (v *Department, err error) { @@ -50,84 +47,6 @@ func GetDepartmentById(id int) (v *Department, err error) {
50 return nil, err 47 return nil, err
51 } 48 }
52 49
53 -// GetAllDepartment retrieves all Department matches certain condition. Returns empty list if  
54 -// no records exist  
55 -func GetAllDepartment(query map[string]string, fields []string, sortby []string, order []string,  
56 - offset int64, limit int64) (ml []interface{}, err error) {  
57 - o := orm.NewOrm()  
58 - qs := o.QueryTable(new(Department))  
59 - // query k=v  
60 - for k, v := range query {  
61 - // rewrite dot-notation to Object__Attribute  
62 - k = strings.Replace(k, ".", "__", -1)  
63 - if strings.Contains(k, "isnull") {  
64 - qs = qs.Filter(k, (v == "true" || v == "1"))  
65 - } else {  
66 - qs = qs.Filter(k, v)  
67 - }  
68 - }  
69 - // order by:  
70 - var sortFields []string  
71 - if len(sortby) != 0 {  
72 - if len(sortby) == len(order) {  
73 - // 1) for each sort field, there is an associated order  
74 - for i, v := range sortby {  
75 - orderby := ""  
76 - if order[i] == "desc" {  
77 - orderby = "-" + v  
78 - } else if order[i] == "asc" {  
79 - orderby = v  
80 - } else {  
81 - return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")  
82 - }  
83 - sortFields = append(sortFields, orderby)  
84 - }  
85 - qs = qs.OrderBy(sortFields...)  
86 - } else if len(sortby) != len(order) && len(order) == 1 {  
87 - // 2) there is exactly one order, all the sorted fields will be sorted by this order  
88 - for _, v := range sortby {  
89 - orderby := ""  
90 - if order[0] == "desc" {  
91 - orderby = "-" + v  
92 - } else if order[0] == "asc" {  
93 - orderby = v  
94 - } else {  
95 - return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")  
96 - }  
97 - sortFields = append(sortFields, orderby)  
98 - }  
99 - } else if len(sortby) != len(order) && len(order) != 1 {  
100 - return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")  
101 - }  
102 - } else {  
103 - if len(order) != 0 {  
104 - return nil, errors.New("Error: unused 'order' fields")  
105 - }  
106 - }  
107 -  
108 - var l []Department  
109 - qs = qs.OrderBy(sortFields...)  
110 - if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {  
111 - if len(fields) == 0 {  
112 - for _, v := range l {  
113 - ml = append(ml, v)  
114 - }  
115 - } else {  
116 - // trim unused fields  
117 - for _, v := range l {  
118 - m := make(map[string]interface{})  
119 - val := reflect.ValueOf(v)  
120 - for _, fname := range fields {  
121 - m[fname] = val.FieldByName(fname).Interface()  
122 - }  
123 - ml = append(ml, m)  
124 - }  
125 - }  
126 - return ml, nil  
127 - }  
128 - return nil, err  
129 -}  
130 -  
131 // UpdateDepartment updates Department by Id and returns error if 50 // UpdateDepartment updates Department by Id and returns error if
132 // the record to be updated doesn't exist 51 // the record to be updated doesn't exist
133 func UpdateDepartmentById(m *Department) (err error) { 52 func UpdateDepartmentById(m *Department) (err error) {
@@ -157,3 +76,16 @@ func DeleteDepartment(id int) (err error) { @@ -157,3 +76,16 @@ func DeleteDepartment(id int) (err error) {
157 } 76 }
158 return 77 return
159 } 78 }
  79 +
  80 +func GetDepartmentByCompanyId(companyId int64) (v []*Department, err error) {
  81 + o := orm.NewOrm()
  82 + sql := `
  83 +select *
  84 +from department
  85 +where company_id =? and delete_at =0
  86 +order by parent_id,id`
  87 + if _, err = o.Raw(sql, companyId).QueryRows(&v); err == nil {
  88 + return
  89 + }
  90 + return
  91 +}
@@ -13,11 +13,6 @@ type UserBaseInfoAggregation struct { @@ -13,11 +13,6 @@ type UserBaseInfoAggregation struct {
13 UserCompany *models.UserCompany 13 UserCompany *models.UserCompany
14 } 14 }
15 15
16 -type Department struct {  
17 - DepartmentId int `orm:"column(department_id)`  
18 - Name string `orm:"column(name)`  
19 -}  
20 -  
21 type Position struct { 16 type Position struct {
22 PositionId int `orm:"column(position_id)` 17 PositionId int `orm:"column(position_id)`
23 Name string `orm:"column(name)` 18 Name string `orm:"column(name)`
  1 +package protocol
  2 +
  3 +const (
  4 + DepartmentAll = iota + 1 //公司所有部门
  5 + DepartmentUser //用户所有部门
  6 +)
  7 +
  8 +/*Departments */
  9 +type DepartmentsRequest struct {
  10 + Type int `json:"type" valid:"Required"` //1:公司所有部门 2:用户所在部门
  11 +}
  12 +type DepartmentsResponse struct {
  13 + Departments []*Department `json:"departments,omitempty"`
  14 +}
  15 +
  16 +type Department struct {
  17 + DepartmentId int `orm:"column(department_id) json:"id"`
  18 + Name string `orm:"column(name) json:"name"`
  19 + PId int `orm:"column(pid) json:"-"`
  20 + Departments []*Department `json:"departments,omitempty"`
  21 +}
@@ -15,8 +15,9 @@ var errmessge ErrorMap = map[int]string{ @@ -15,8 +15,9 @@ var errmessge ErrorMap = map[int]string{
15 2021: "登录失败,手机号或密码错误", 15 2021: "登录失败,手机号或密码错误",
16 2025: "短信验证码验证失败", 16 2025: "短信验证码验证失败",
17 2026: "新密码与确认密码不一致", 17 2026: "新密码与确认密码不一致",
18 - 2027:"密码必须至少有6个字符",  
19 - 2028:"请输入正确的旧密码", 18 + 2027: "密码必须至少有6个字符",
  19 + 2028: "请输入正确的旧密码",
  20 + 2029: "当前手机号已存在,请重新输入",
20 4139: "authCode无效或过期", 21 4139: "authCode无效或过期",
21 4140: "refreshToken过期,需要重新登录授权", 22 4140: "refreshToken过期,需要重新登录授权",
22 4141: "accessToken过期或无效,需要进行重新获取令牌", 23 4141: "accessToken过期或无效,需要进行重新获取令牌",
@@ -119,6 +119,14 @@ func init() { @@ -119,6 +119,14 @@ func init() {
119 MethodParams: param.Make(), 119 MethodParams: param.Make(),
120 Params: nil}) 120 Params: nil})
121 121
  122 + beego.GlobalControllerRouter["opp/controllers/v1:DepartmentController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:DepartmentController"],
  123 + beego.ControllerComments{
  124 + Method: "Departments",
  125 + Router: `/departments`,
  126 + AllowHTTPMethods: []string{"post"},
  127 + MethodParams: param.Make(),
  128 + Params: nil})
  129 +
122 beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"], 130 beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"],
123 beego.ControllerComments{ 131 beego.ControllerComments{
124 Method: "MessageCenter", 132 Method: "MessageCenter",
@@ -19,6 +19,7 @@ func init() { @@ -19,6 +19,7 @@ func init() {
19 beego.NSNamespace("user", beego.NSInclude(&v1.UserController{})), 19 beego.NSNamespace("user", beego.NSInclude(&v1.UserController{})),
20 beego.NSNamespace("chance", beego.NSInclude(&v1.ChanceController{})), 20 beego.NSNamespace("chance", beego.NSInclude(&v1.ChanceController{})),
21 beego.NSNamespace("message", beego.NSInclude(&v1.MessageController{})), 21 beego.NSNamespace("message", beego.NSInclude(&v1.MessageController{})),
  22 + beego.NSNamespace("department", beego.NSInclude(&v1.DepartmentController{})),
22 ) 23 )
23 beego.AddNamespace(nsV1) 24 beego.AddNamespace(nsV1)
24 beego.SetStaticPath("/file/opp", beego.AppConfig.String("source_path")) 25 beego.SetStaticPath("/file/opp", beego.AppConfig.String("source_path"))
  1 +package department
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
  5 + "opp/internal/repository"
  6 + "opp/models"
  7 + "opp/protocol"
  8 +)
  9 +
  10 +func Departments(header *protocol.RequestHeader, request *protocol.DepartmentsRequest) (rsp *protocol.DepartmentsResponse, err error) {
  11 + var (
  12 + departments []*models.Department
  13 + )
  14 + rsp = &protocol.DepartmentsResponse{}
  15 + switch request.Type {
  16 + case protocol.DepartmentAll:
  17 + if departments, err = repository.Department.GetDepartmentByCompanyId(header.CompanyId); err != nil {
  18 + log.Error(err)
  19 + return
  20 + }
  21 + //rsp.Departments =
  22 + for i := range departments {
  23 + var newD *protocol.Department = &protocol.Department{
  24 + DepartmentId: departments[i].Id,
  25 + Name: departments[i].Name,
  26 + }
  27 + if departments[i].ParentId == 0 {
  28 + rsp.Departments = append(rsp.Departments, newD)
  29 + }
  30 +
  31 + }
  32 + case protocol.DepartmentUser:
  33 + if err = repository.UserDepartment.GetUserDepartment(header.Uid, header.CompanyId, &rsp.Departments); err != nil {
  34 + log.Error(err)
  35 + return
  36 + }
  37 + default:
  38 + break
  39 + }
  40 + return
  41 +}
  42 +
  43 +//
  44 +//func setDepartment(departments *[]models.Department)[]*protocol.Department{
  45 +// var departments []*protocol.Department
  46 +// for i :=range dfrom{
  47 +//
  48 +// var newD *protocol.Department = &protocol.Department{
  49 +// DepartmentId:dfrom[i].Id,
  50 +// Name:dfrom[i].Name,
  51 +// }
  52 +//
  53 +// }
  54 +//
  55 +// if dfrom.ParentId ==0{
  56 +//
  57 +// }
  58 +// if len(department)>0{
  59 +// for i:=range department{
  60 +// if department[i].DepartmentId == dfrom.ParentId{
  61 +// department[i].Departments = append(department[i].Departments,newD)
  62 +// return nil
  63 +// }
  64 +// return setDepartment(department[i].Departments,dfrom)
  65 +// }
  66 +// }
  67 +// return nil
  68 +//}
@@ -47,6 +47,9 @@ func ChangePhone(header *protocol.RequestHeader, request *protocol.ChangePhoneRe @@ -47,6 +47,9 @@ func ChangePhone(header *protocol.RequestHeader, request *protocol.ChangePhoneRe
47 log.Error(err) 47 log.Error(err)
48 return 48 return
49 } 49 }
  50 + if _, err = repository.User.GetUsersByMobile(request.Phone); err == nil {
  51 + err = protocol.NewErrWithMessage(2029)
  52 + }
50 if !result { 53 if !result {
51 err = protocol.NewErrWithMessage(1012) 54 err = protocol.NewErrWithMessage(1012)
52 } 55 }
@@ -68,7 +71,7 @@ func ResetPassword(header *protocol.RequestHeader, request *protocol.ResetPasswo @@ -68,7 +71,7 @@ func ResetPassword(header *protocol.RequestHeader, request *protocol.ResetPasswo
68 if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) { 71 if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) {
69 err = protocol.NewErrWithMessage(2026) 72 err = protocol.NewErrWithMessage(2026)
70 } 73 }
71 - if len(request.NewPwd)<6 { 74 + if len(request.NewPwd) < 6 {
72 err = protocol.NewErrWithMessage(2027) 75 err = protocol.NewErrWithMessage(2027)
73 } 76 }
74 err = utils.UpdateTableByMap(&models.User{Id: user.Id}, map[string]interface{}{"Passwd": request.NewPwd}) 77 err = utils.UpdateTableByMap(&models.User{Id: user.Id}, map[string]interface{}{"Passwd": request.NewPwd})
@@ -84,7 +87,7 @@ func ChangePassword(header *protocol.RequestHeader, request *protocol.ChangePass @@ -84,7 +87,7 @@ func ChangePassword(header *protocol.RequestHeader, request *protocol.ChangePass
84 if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) { 87 if !strings.EqualFold(request.NewPwd, request.ConfirmPwd) {
85 err = protocol.NewErrWithMessage(2026) 88 err = protocol.NewErrWithMessage(2026)
86 } 89 }
87 - if len(request.NewPwd)<6 { 90 + if len(request.NewPwd) < 6 {
88 err = protocol.NewErrWithMessage(2027) 91 err = protocol.NewErrWithMessage(2027)
89 } 92 }
90 if user, err = repository.User.GetUsersById(header.Uid); err != nil { 93 if user, err = repository.User.GetUsersById(header.Uid); err != nil {