Selaa lähdekoodia

feature(权限):业务权限更新

ZZH-wl 2 vuotta sitten
vanhempi
commit
cb492a5749
47 muutettua tiedostoa jossa 1311 lisäystä ja 995 poistoa
  1. 2 1
      opms_admin/app/service/sys_user.go
  2. 29 22
      opms_parent/app/dao/base/internal/base_distributor.go
  3. 29 22
      opms_parent/app/dao/base/internal/base_distributor_contact.go
  4. 29 22
      opms_parent/app/dao/base/internal/base_district.go
  5. 29 22
      opms_parent/app/dao/base/internal/base_product.go
  6. 29 22
      opms_parent/app/dao/base/internal/base_sales_region.go
  7. 29 22
      opms_parent/app/dao/base/internal/base_sales_region_detail.go
  8. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract.go
  9. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_append.go
  10. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_collection.go
  11. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_collection_plan.go
  12. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_dynamics.go
  13. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_invoice.go
  14. 29 22
      opms_parent/app/dao/contract/internal/ctr_contract_product.go
  15. 29 22
      opms_parent/app/dao/cust/internal/cust_customer.go
  16. 29 22
      opms_parent/app/dao/cust/internal/cust_customer_belong.go
  17. 29 22
      opms_parent/app/dao/cust/internal/cust_customer_bid_record.go
  18. 29 22
      opms_parent/app/dao/cust/internal/cust_customer_contact.go
  19. 29 22
      opms_parent/app/dao/cust/internal/cust_customer_dynamics.go
  20. 29 22
      opms_parent/app/dao/cust/internal/cust_customer_invoice_header.go
  21. 29 22
      opms_parent/app/dao/dingtalk_log/internal/dingtalk_log.go
  22. 29 22
      opms_parent/app/dao/plat/internal/plat_followup.go
  23. 29 22
      opms_parent/app/dao/plat/internal/plat_followup_comment.go
  24. 29 22
      opms_parent/app/dao/plat/internal/plat_followup_file.go
  25. 29 22
      opms_parent/app/dao/plat/internal/plat_punch_records.go
  26. 29 22
      opms_parent/app/dao/plat/internal/plat_schedule.go
  27. 29 22
      opms_parent/app/dao/plat/internal/plat_schedule_attendee.go
  28. 29 22
      opms_parent/app/dao/plat/internal/plat_schedule_remind.go
  29. 29 22
      opms_parent/app/dao/plat/internal/plat_task.go
  30. 29 22
      opms_parent/app/dao/plat/internal/plat_task_comment.go
  31. 29 22
      opms_parent/app/dao/plat/internal/plat_task_handle.go
  32. 29 22
      opms_parent/app/dao/plat/internal/plat_task_log.go
  33. 29 22
      opms_parent/app/dao/plat/internal/plat_task_progress.go
  34. 29 22
      opms_parent/app/dao/plat/internal/plat_user_config.go
  35. 29 22
      opms_parent/app/dao/proj/internal/proj_business.go
  36. 29 22
      opms_parent/app/dao/proj/internal/proj_business_contact.go
  37. 29 22
      opms_parent/app/dao/proj/internal/proj_business_dynamics.go
  38. 29 22
      opms_parent/app/dao/proj/internal/proj_business_file.go
  39. 29 22
      opms_parent/app/dao/proj/internal/proj_business_product.go
  40. 29 22
      opms_parent/app/dao/proj/internal/proj_business_team.go
  41. 29 22
      opms_parent/app/dao/sys_report/internal/sys_report.go
  42. 29 22
      opms_parent/app/dao/sys_report/internal/sys_role_report.go
  43. 29 22
      opms_parent/app/dao/work/internal/work_order.go
  44. 29 22
      opms_parent/app/dao/work/internal/work_order_dynamics.go
  45. 29 22
      opms_parent/app/dao/work/internal/work_order_type.go
  46. 29 22
      opms_parent/app/dao/workflow/internal/plat_workflow.go
  47. 4 4
      opms_parent/app/service/base/base_distributor.go

+ 2 - 1
opms_admin/app/service/sys_user.go

@@ -73,7 +73,8 @@ func (s *UserService) Login(username, password string) (*request.UserInfo, error
 		g.Log().Error(err)
 		return nil, myerrors.TipsError("获取用户数据权限失败")
 	}
-
+	userInfo.DataScope["roles"] = userInfo.Roles
+	userInfo.DataScope["posts"] = userInfo.Posts
 	// 更新允许登录错误次数和是否首次登录
 	if sysUserInfo.AllowErrorNum != 5 {
 		data := g.Map{

+ 29 - 22
opms_parent/app/dao/base/internal/base_distributor.go

@@ -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 ")

+ 29 - 22
opms_parent/app/dao/base/internal/base_distributor_contact.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *BaseDistributorContactDao) DataScope(ctx context.Context, userCol ...st
 				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 ")

+ 29 - 22
opms_parent/app/dao/base/internal/base_district.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *BaseDistrictDao) DataScope(ctx context.Context, userCol ...string) *Bas
 				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 ")

+ 29 - 22
opms_parent/app/dao/base/internal/base_product.go

@@ -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"
@@ -717,32 +718,38 @@ func (d *BaseProductDao) DataScope(ctx context.Context, userCol ...string) *Base
 				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 ")

+ 29 - 22
opms_parent/app/dao/base/internal/base_sales_region.go

@@ -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"
@@ -708,32 +709,38 @@ func (d *BaseSalesRegionDao) 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 ")

+ 29 - 22
opms_parent/app/dao/base/internal/base_sales_region_detail.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *BaseSalesRegionDetailDao) DataScope(ctx context.Context, userCol ...str
 				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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract.go

@@ -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"
@@ -777,32 +778,38 @@ func (d *CtrContractDao) DataScope(ctx context.Context, userCol ...string) *CtrC
 				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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_append.go

@@ -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"
@@ -708,32 +709,38 @@ func (d *CtrContractAppendDao) 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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_collection.go

@@ -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"
@@ -726,32 +727,38 @@ func (d *CtrContractCollectionDao) DataScope(ctx context.Context, userCol ...str
 				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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_collection_plan.go

@@ -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"
@@ -723,32 +724,38 @@ func (d *CtrContractCollectionPlanDao) DataScope(ctx context.Context, userCol ..
 				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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_dynamics.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *CtrContractDynamicsDao) DataScope(ctx context.Context, userCol ...strin
 				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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_invoice.go

@@ -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"
@@ -732,32 +733,38 @@ func (d *CtrContractInvoiceDao) 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 ")

+ 29 - 22
opms_parent/app/dao/contract/internal/ctr_contract_product.go

@@ -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"
@@ -726,32 +727,38 @@ func (d *CtrContractProductDao) 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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer.go

@@ -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"
@@ -762,32 +763,38 @@ func (d *CustCustomerDao) DataScope(ctx context.Context, userCol ...string) *Cus
 				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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer_belong.go

@@ -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"
@@ -720,32 +721,38 @@ func (d *CustCustomerBelongDao) 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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer_bid_record.go

@@ -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"
@@ -720,32 +721,38 @@ func (d *CustCustomerBidRecordDao) DataScope(ctx context.Context, userCol ...str
 				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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer_contact.go

@@ -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"
@@ -726,32 +727,38 @@ func (d *CustCustomerContactDao) DataScope(ctx context.Context, userCol ...strin
 				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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer_dynamics.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *CustCustomerDynamicsDao) DataScope(ctx context.Context, userCol ...stri
 				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 ")

+ 29 - 22
opms_parent/app/dao/cust/internal/cust_customer_invoice_header.go

@@ -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"
@@ -717,32 +718,38 @@ func (d *CustCustomerInvoiceHeaderDao) DataScope(ctx context.Context, userCol ..
 				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 ")

+ 29 - 22
opms_parent/app/dao/dingtalk_log/internal/dingtalk_log.go

@@ -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"
@@ -702,32 +703,38 @@ func (d *DingtalkLogDao) DataScope(ctx context.Context, userCol ...string) *Ding
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_followup.go

@@ -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"
@@ -732,32 +733,38 @@ func (d *PlatFollowupDao) DataScope(ctx context.Context, userCol ...string) *Pla
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_followup_comment.go

@@ -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"
@@ -705,32 +706,38 @@ func (d *PlatFollowupCommentDao) DataScope(ctx context.Context, userCol ...strin
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_followup_file.go

@@ -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"
@@ -708,32 +709,38 @@ func (d *PlatFollowupFileDao) 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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_punch_records.go

@@ -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"
@@ -723,32 +724,38 @@ func (d *PlatPunchRecordsDao) 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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_schedule.go

@@ -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"
@@ -729,32 +730,38 @@ func (d *PlatScheduleDao) DataScope(ctx context.Context, userCol ...string) *Pla
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_schedule_attendee.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *PlatScheduleAttendeeDao) DataScope(ctx context.Context, userCol ...stri
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_schedule_remind.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *PlatScheduleRemindDao) 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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_task.go

@@ -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"
@@ -774,32 +775,38 @@ func (d *PlatTaskDao) DataScope(ctx context.Context, userCol ...string) *PlatTas
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_task_comment.go

@@ -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"
@@ -705,32 +706,38 @@ func (d *PlatTaskCommentDao) 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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_task_handle.go

@@ -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"
@@ -723,32 +724,38 @@ func (d *PlatTaskHandleDao) DataScope(ctx context.Context, userCol ...string) *P
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_task_log.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *PlatTaskLogDao) DataScope(ctx context.Context, userCol ...string) *Plat
 				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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_task_progress.go

@@ -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"
@@ -708,32 +709,38 @@ func (d *PlatTaskProgressDao) 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 ")

+ 29 - 22
opms_parent/app/dao/plat/internal/plat_user_config.go

@@ -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"
@@ -705,32 +706,38 @@ func (d *PlatUserConfigDao) DataScope(ctx context.Context, userCol ...string) *P
 				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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business.go

@@ -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"
@@ -885,32 +886,38 @@ func (d *ProjBusinessDao) DataScope(ctx context.Context, userCol ...string) *Pro
 				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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business_contact.go

@@ -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"
@@ -702,32 +703,38 @@ func (d *ProjBusinessContactDao) DataScope(ctx context.Context, userCol ...strin
 				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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business_dynamics.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *ProjBusinessDynamicsDao) DataScope(ctx context.Context, userCol ...stri
 				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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business_file.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *ProjBusinessFileDao) 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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business_product.go

@@ -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"
@@ -726,32 +727,38 @@ func (d *ProjBusinessProductDao) DataScope(ctx context.Context, userCol ...strin
 				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 ")

+ 29 - 22
opms_parent/app/dao/proj/internal/proj_business_team.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *ProjBusinessTeamDao) 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 ")

+ 29 - 22
opms_parent/app/dao/sys_report/internal/sys_report.go

@@ -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"
@@ -711,32 +712,38 @@ func (d *SysReportDao) DataScope(ctx context.Context, userCol ...string) *SysRep
 				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 ")

+ 29 - 22
opms_parent/app/dao/sys_report/internal/sys_role_report.go

@@ -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"
@@ -702,32 +703,38 @@ func (d *SysRoleReportDao) DataScope(ctx context.Context, userCol ...string) *Sy
 				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 ")

+ 29 - 22
opms_parent/app/dao/work/internal/work_order.go

@@ -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"
@@ -726,32 +727,38 @@ func (d *WorkOrderDao) DataScope(ctx context.Context, userCol ...string) *WorkOr
 				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 ")

+ 29 - 22
opms_parent/app/dao/work/internal/work_order_dynamics.go

@@ -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"
@@ -714,32 +715,38 @@ func (d *WorkOrderDynamicsDao) 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 ")

+ 29 - 22
opms_parent/app/dao/work/internal/work_order_type.go

@@ -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"
@@ -705,32 +706,38 @@ func (d *WorkOrderTypeDao) DataScope(ctx context.Context, userCol ...string) *Wo
 				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 ")

+ 29 - 22
opms_parent/app/dao/workflow/internal/plat_workflow.go

@@ -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"
@@ -717,32 +718,38 @@ func (d *PlatWorkflowDao) DataScope(ctx context.Context, userCol ...string) *Pla
 				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 ")

+ 4 - 4
opms_parent/app/service/base/base_distributor.go

@@ -40,16 +40,16 @@ func (s *distributorService) GetList(req *model.BaseDistributorSearchReq) (total
 		distributorModel = distributorModel.DataScope(s.Ctx, "belong_sale_id")
 	}
 	if req.DistCode != "" {
-		distributorModel = distributorModel.Where(s.Dao.C.DistCode+" like ?", "%"+req.DistCode+"%")
+		distributorModel = distributorModel.WhereLike(s.Dao.C.DistCode, "%"+req.DistCode+"%")
 	}
 	if req.DistName != "" {
-		distributorModel = distributorModel.Where(s.Dao.C.DistName+" like ?", "%"+req.DistName+"%")
+		distributorModel = distributorModel.WhereLike(s.Dao.C.DistName, "%"+req.DistName+"%")
 	}
 	if req.BelongSale != "" {
-		distributorModel = distributorModel.Where(s.Dao.C.BelongSale+" like ?", "%"+req.BelongSale+"%")
+		distributorModel = distributorModel.WhereLike(s.Dao.C.BelongSale, "%"+req.BelongSale+"%")
 	}
 	if len(req.ProvinceId) > 0 {
-		distributorModel = distributorModel.Where(s.Dao.C.ProvinceId+" in (?)", req.ProvinceId)
+		distributorModel = distributorModel.WhereIn(s.Dao.C.ProvinceId, req.ProvinceId)
 	}
 	total, err = distributorModel.Count()
 	if err != nil {