正在显示
3 个修改的文件
包含
109 行增加
和
1 行删除
@@ -327,6 +327,85 @@ select count(0) from ( | @@ -327,6 +327,85 @@ select count(0) from ( | ||
327 | return | 327 | return |
328 | } | 328 | } |
329 | 329 | ||
330 | +//type32 特定部门机会 - 多角色时包含levl2 部门公开 | ||
331 | +func GetChancePoolDepartment(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}, departmentIds []int64, userDepartmetIds []int64) (total int, err error) { | ||
332 | + | ||
333 | + sql := fmt.Sprintf(` | ||
334 | +select a.*,b.images,speechs,videos from ( | ||
335 | +select * from ( | ||
336 | + ##指定部门-机会公开的部门 | ||
337 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from ( | ||
338 | + select DISTINCT chance_id from chance_department where department_id in (%v) | ||
339 | + )a inner join chance b on a.chance_id = b.id | ||
340 | + UNION | ||
341 | + | ||
342 | + ##公司公开的机会 | ||
343 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
344 | + where company_id = %v and publish_status = 2 | ||
345 | + UNION | ||
346 | + | ||
347 | + ##指定部门-机会提交的部门 | ||
348 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
349 | + where department_id in (%v) | ||
350 | + UNION | ||
351 | + | ||
352 | + ##本人 | ||
353 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
354 | + where user_id = %v | ||
355 | + UNION | ||
356 | + | ||
357 | + ##我审核 | ||
358 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from ( | ||
359 | + select DISTINCT chance_id from audit_flow_process where uid =%v | ||
360 | + ) a inner join chance b on a.chance_id = b.id | ||
361 | + | ||
362 | +) a where review_status=3 and (0=%v or chance_type_id =%v) and (0=%v or id<%v) and a.enable_status=1 | ||
363 | +order by create_at desc | ||
364 | +limit %v | ||
365 | +) a left JOIN chance_data b on a.id =b.chance_id | ||
366 | +`, utils.JoinInt64s(userDepartmetIds, ","), cid, utils.JoinInt64s(departmentIds, ","), uid, uid, chanceTypeId, chanceTypeId, lastId, lastId, pageSize) | ||
367 | + | ||
368 | + sqlCount := fmt.Sprintf(` | ||
369 | +select count(0) from ( | ||
370 | + ##指定部门-机会公开的部门 | ||
371 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from ( | ||
372 | + select DISTINCT chance_id from chance_department where department_id in (%v) | ||
373 | + )a inner join chance b on a.chance_id = b.id | ||
374 | + UNION | ||
375 | + | ||
376 | + ##公司公开的机会 | ||
377 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
378 | + where company_id = %v and publish_status = 2 | ||
379 | + UNION | ||
380 | + | ||
381 | + ##指定部门-机会提交的部门 | ||
382 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
383 | + where department_id in (%v) | ||
384 | + UNION | ||
385 | + | ||
386 | + ##本人 | ||
387 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from chance | ||
388 | + where user_id = %v | ||
389 | + UNION | ||
390 | + | ||
391 | + ##我审核 | ||
392 | + select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total,enable_status,department_id from ( | ||
393 | + select DISTINCT chance_id from audit_flow_process where uid =%v | ||
394 | + ) a inner join chance b on a.chance_id = b.id | ||
395 | + | ||
396 | +) a where review_status=3 and (0=%v or chance_type_id =%v) and a.enable_status=1 | ||
397 | +`, utils.JoinInt64s(userDepartmetIds, ","), cid, utils.JoinInt64s(departmentIds, ","), uid, uid, chanceTypeId, chanceTypeId) | ||
398 | + if err = utils.ExecuteQueryOne(&total, sqlCount); err != nil { | ||
399 | + return | ||
400 | + } | ||
401 | + if v != nil { | ||
402 | + if err = utils.ExecuteQueryAll(v, sql); err != nil { | ||
403 | + return | ||
404 | + } | ||
405 | + } | ||
406 | + return | ||
407 | +} | ||
408 | + | ||
330 | //type2 对我所在部门公开的机会 公司公开的机会 | 409 | //type2 对我所在部门公开的机会 公司公开的机会 |
331 | func GetChancePoolPublicCompany(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}, departmentIds []int64) (total int, err error) { | 410 | func GetChancePoolPublicCompany(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}, departmentIds []int64) (total int, err error) { |
332 | sql := fmt.Sprintf(` | 411 | sql := fmt.Sprintf(` |
@@ -11,6 +11,7 @@ import ( | @@ -11,6 +11,7 @@ import ( | ||
11 | func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}) (total int, err error) { | 11 | func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}) (total int, err error) { |
12 | var ( | 12 | var ( |
13 | check int | 13 | check int |
14 | + checkMap map[int]int | ||
14 | specialDIds []int64 | 15 | specialDIds []int64 |
15 | userDIds []int64 | 16 | userDIds []int64 |
16 | ) | 17 | ) |
@@ -19,6 +20,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | @@ -19,6 +20,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | ||
19 | specialDIds = append(specialDIds, op.CheckOption.Departments[i].Id) | 20 | specialDIds = append(specialDIds, op.CheckOption.Departments[i].Id) |
20 | } | 21 | } |
21 | check = op.Check | 22 | check = op.Check |
23 | + checkMap = op.CheckMap | ||
22 | } | 24 | } |
23 | if len(specialDIds) == 0 { | 25 | if len(specialDIds) == 0 { |
24 | specialDIds = append(specialDIds, 0) | 26 | specialDIds = append(specialDIds, 0) |
@@ -34,6 +36,13 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | @@ -34,6 +36,13 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | ||
34 | } | 36 | } |
35 | return models.GetChancePoolPublicCompany(uid, cid, chanceTypeId, lastId, pageSize, v, userDIds) | 37 | return models.GetChancePoolPublicCompany(uid, cid, chanceTypeId, lastId, pageSize, v, userDIds) |
36 | case OpportunityCheckLv3: | 38 | case OpportunityCheckLv3: |
39 | + if _, ok := checkMap[OpportunityCheckLv2]; ok { //同时存在对部门公开的机会 | ||
40 | + if err = models.GetUserDepartmentIds(uid, cid, &userDIds); err != nil { | ||
41 | + log.Error(err) | ||
42 | + return | ||
43 | + } | ||
44 | + return models.GetChancePoolDepartment(uid, cid, chanceTypeId, lastId, pageSize, v, specialDIds, userDIds) | ||
45 | + } | ||
37 | return models.GetChancePoolSpecialDepartment(uid, cid, chanceTypeId, lastId, pageSize, v, specialDIds) | 46 | return models.GetChancePoolSpecialDepartment(uid, cid, chanceTypeId, lastId, pageSize, v, specialDIds) |
38 | case OpportunityCheckLv4: | 47 | case OpportunityCheckLv4: |
39 | return models.GetChancePoolAll(uid, cid, chanceTypeId, lastId, pageSize, v) | 48 | return models.GetChancePoolAll(uid, cid, chanceTypeId, lastId, pageSize, v) |
@@ -47,6 +56,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | @@ -47,6 +56,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, | ||
47 | func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (err error) { | 56 | func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (err error) { |
48 | var ( | 57 | var ( |
49 | check int | 58 | check int |
59 | + checkMap map[int]int | ||
50 | specialDIds []int64 | 60 | specialDIds []int64 |
51 | userDIds []int64 | 61 | userDIds []int64 |
52 | ) | 62 | ) |
@@ -54,6 +64,7 @@ func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (er | @@ -54,6 +64,7 @@ func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (er | ||
54 | for i := range op.CheckOption.Departments { | 64 | for i := range op.CheckOption.Departments { |
55 | specialDIds = append(specialDIds, op.CheckOption.Departments[i].Id) | 65 | specialDIds = append(specialDIds, op.CheckOption.Departments[i].Id) |
56 | } | 66 | } |
67 | + checkMap = op.CheckMap | ||
57 | check = op.Check | 68 | check = op.Check |
58 | } else { | 69 | } else { |
59 | log.Error(err) | 70 | log.Error(err) |
@@ -115,6 +126,19 @@ func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (er | @@ -115,6 +126,19 @@ func ValidChancePermission(uid, cid int64, items []*protocol.CommonListItem) (er | ||
115 | if chanceUserId == uid { | 126 | if chanceUserId == uid { |
116 | continue | 127 | continue |
117 | } | 128 | } |
129 | + if _, ok := checkMap[OpportunityCheckLv2]; ok { //同时存在对部门公开的机会 | ||
130 | + if chancePublicStatus == protocol.PublicToDepartment { | ||
131 | + if len(userDIds) == 0 { | ||
132 | + if e := models.GetUserDepartmentIds(uid, cid, &userDIds); e != nil { | ||
133 | + log.Error(e) | ||
134 | + return | ||
135 | + } | ||
136 | + } | ||
137 | + if _, e := models.ExitsChanceByPublicDeparmentIds(chanceId, userDIds); e == nil { | ||
138 | + continue | ||
139 | + } | ||
140 | + } | ||
141 | + } | ||
118 | if _, e := models.ExitsChanceByDeparmentIds(chanceId, specialDIds); e == nil { | 142 | if _, e := models.ExitsChanceByDeparmentIds(chanceId, specialDIds); e == nil { |
119 | continue | 143 | continue |
120 | } | 144 | } |
@@ -355,7 +355,9 @@ func getUserChancePermission(userCompanyid int64) (map[string]PermissionOptionOb | @@ -355,7 +355,9 @@ func getUserChancePermission(userCompanyid int64) (map[string]PermissionOptionOb | ||
355 | func getPermissionMap(list []OptionOpportunity) (map[string]PermissionOptionObject, error) { | 355 | func getPermissionMap(list []OptionOpportunity) (map[string]PermissionOptionObject, error) { |
356 | var ( | 356 | var ( |
357 | objMap = make(map[string]PermissionOptionObject) | 357 | objMap = make(map[string]PermissionOptionObject) |
358 | - obj = &OptionOpportunity{} | 358 | + obj = &OptionOpportunity{ |
359 | + CheckMap: make(map[int]int), | ||
360 | + } | ||
359 | ) | 361 | ) |
360 | if len(list) == 0 { | 362 | if len(list) == 0 { |
361 | obj.Check = OpportunityCheckLv4 | 363 | obj.Check = OpportunityCheckLv4 |
@@ -372,6 +374,9 @@ func getPermissionMap(list []OptionOpportunity) (map[string]PermissionOptionObje | @@ -372,6 +374,9 @@ func getPermissionMap(list []OptionOpportunity) (map[string]PermissionOptionObje | ||
372 | if tmp.Check > obj.Check { | 374 | if tmp.Check > obj.Check { |
373 | obj.Check = tmp.Check | 375 | obj.Check = tmp.Check |
374 | } | 376 | } |
377 | + if _, ok := obj.CheckMap[tmp.Check]; !ok { //所有的check都加进来 | ||
378 | + obj.CheckMap[tmp.Check] = tmp.Check | ||
379 | + } | ||
375 | if tmp.Check == obj.Check && obj.Check == OpportunityCheckLv3 { //当前是特定部门时 合并特定部门的部门列表 | 380 | if tmp.Check == obj.Check && obj.Check == OpportunityCheckLv3 { //当前是特定部门时 合并特定部门的部门列表 |
376 | for i := range tmp.CheckOption.Departments { //合并特殊部门 | 381 | for i := range tmp.CheckOption.Departments { //合并特殊部门 |
377 | d := tmp.CheckOption.Departments[i] | 382 | d := tmp.CheckOption.Departments[i] |
-
请 注册 或 登录 后发表评论