|
|
@@ -7,6 +7,7 @@ package internal
|
|
|
import (
|
|
|
"context"
|
|
|
"database/sql"
|
|
|
+ "github.com/gogf/gf/container/garray"
|
|
|
"github.com/gogf/gf/database/gdb"
|
|
|
"github.com/gogf/gf/frame/g"
|
|
|
"github.com/gogf/gf/frame/gmvc"
|
|
|
@@ -738,32 +739,38 @@ func (d *BaseDistributorDao) DataScope(ctx context.Context, userCol ...string) *
|
|
|
orColumns = append(orColumns, tableAs+column+" IN (?) ")
|
|
|
orValues = append(orValues, userIds)
|
|
|
}
|
|
|
- if d.Table == "sys_user" {
|
|
|
- column = "id"
|
|
|
- orColumns = append(orColumns, tableAs+column+" IN (?) ")
|
|
|
- orValues = append(orValues, userIds)
|
|
|
- }
|
|
|
}
|
|
|
- bigColumns := "is_big"
|
|
|
- if ok, _ := d.M.HasField("is_big"); ok {
|
|
|
- if val, ok := dataScope[bigColumns]; ok && val != "" {
|
|
|
- orColumns = append(orColumns, tableAs+bigColumns+" = ? ")
|
|
|
- orValues = append(orValues, val)
|
|
|
+ // 销售工程师判断
|
|
|
+ var salesEngineerFlag bool
|
|
|
+ if roles, ok := dataScope["roles"]; ok {
|
|
|
+ arr := garray.NewArrayFrom(roles.([]interface{}), true)
|
|
|
+ if arr.Len() == 1 && arr.Contains("SalesEngineer") {
|
|
|
+ salesEngineerFlag = true
|
|
|
}
|
|
|
- delete(dataScope, bigColumns)
|
|
|
}
|
|
|
- var andColumns []string
|
|
|
- var andValues []interface{}
|
|
|
- for k, v := range dataScope {
|
|
|
- if ok, _ := d.M.HasField(k); ok {
|
|
|
- andColumns = append(andColumns, tableAs+k+" IN (?) ")
|
|
|
- andValues = append(andValues, v)
|
|
|
+ // 非销售工程师权限加成
|
|
|
+ if !salesEngineerFlag {
|
|
|
+ bigColumns := "is_big"
|
|
|
+ if ok, _ := d.M.HasField("is_big"); ok {
|
|
|
+ if val, ok := dataScope[bigColumns]; ok && val != "" {
|
|
|
+ orColumns = append(orColumns, tableAs+bigColumns+" = ? ")
|
|
|
+ orValues = append(orValues, val)
|
|
|
+ }
|
|
|
+ delete(dataScope, bigColumns)
|
|
|
+ }
|
|
|
+ var andColumns []string
|
|
|
+ var andValues []interface{}
|
|
|
+ for k, v := range dataScope {
|
|
|
+ if ok, _ := d.M.HasField(k); ok {
|
|
|
+ andColumns = append(andColumns, tableAs+k+" IN (?) ")
|
|
|
+ andValues = append(andValues, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(andColumns) > 0 {
|
|
|
+ andWhereSql := strings.Join(andColumns, " AND ")
|
|
|
+ orColumns = append(orColumns, "("+andWhereSql+")")
|
|
|
+ orValues = append(orValues, andValues...)
|
|
|
}
|
|
|
- }
|
|
|
- if len(andColumns) > 0 {
|
|
|
- andWhereSql := strings.Join(andColumns, " AND ")
|
|
|
- orColumns = append(orColumns, "("+andWhereSql+")")
|
|
|
- orValues = append(orValues, andValues...)
|
|
|
}
|
|
|
|
|
|
whereSql := strings.Join(orColumns, " OR ")
|