|
|
@@ -130,42 +130,53 @@ func (s DeliverOrderService) List(ctx context.Context, req *work.DeliverOrderLis
|
|
|
g.Log().Infof("DeliverOrderService List roles %v", s.userInfo.Roles)
|
|
|
//dao := s.Dao.DeliverOrderDao.As("a").LeftJoin("ctr_contract b", "a.contract_id=b.id").Unscoped().Where("a.deleted_time is null") // 改为关联项目
|
|
|
dao := s.Dao.DeliverOrderDao.As("a").LeftJoin("proj_business b", "a.project_id=b.id").LeftJoin("deliver_order_product p", "p.deliver_order_id=a.id").Unscoped().Where("a.deleted_time is null")
|
|
|
+ where := ""
|
|
|
// 系统管理员、研发主管、研发总监、品质主管、总经理、销售总监、销售助理看全部的
|
|
|
if service.StringsContains(s.userInfo.Roles, "ResearchAndDevelopmentDirector") || service.StringsContains(s.userInfo.Roles, "ResearchAndDevelopmentSupervisor") || service.StringsContains(s.userInfo.Roles, "QualityAssuranceSupervisor") || service.StringsContains(s.userInfo.Roles, "GeneralManager") || service.StringsContains(s.userInfo.Roles, "SalesDirector") || service.StringsContains(s.userInfo.Roles, "SaleAssociate") || service.StringsContains(s.userInfo.Roles, "SysAdmin") {
|
|
|
// 无条件,查询全部
|
|
|
// 项目经理看对应的
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "ProjectManager") {
|
|
|
- dao = dao.Where("a.project_man_id = ?", s.userInfo.Id)
|
|
|
- // 交付经理看对应的
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "ProjectDeliveryManager") {
|
|
|
- dao = dao.Where("a.deliver_man_id = ?", s.userInfo.Id)
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "ProductIntegrationManager") {
|
|
|
- // 丁岳嵩 查看全部硬件 交付类型:10软件;20硬件
|
|
|
- dao = dao.Where("a.order_type = ?", "20")
|
|
|
- // 产品线负责人看自己负责的产品线
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "ProductLineManager") {
|
|
|
- productCode, err := service.ColumnString(s.Dao.DB.Table("base_product_auth").Wheref("user_id = ?", s.userInfo.Id), "product_code")
|
|
|
- if err != nil {
|
|
|
- return 0, nil, err
|
|
|
- }
|
|
|
- g.Log().Infof("DeliverOrderService List product_code %v", productCode)
|
|
|
- dao = dao.Where("a.product in (?)", productCode)
|
|
|
- // 大区经理看所管理的销售的(包括自己)
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "RegionalManager") {
|
|
|
- dao = dao.Where(fmt.Sprintf("b.sale_id IN (SELECT id FROM sys_user WHERE dept_id='%v')", s.userInfo.DeptId))
|
|
|
- // 销售工程师看自己负责的项目的
|
|
|
- } else if service.StringsContains(s.userInfo.Roles, "SalesEngineer") {
|
|
|
- //dao = dao.Where("b.incharge_id = ?", s.userInfo.Id) // 改为关联项目
|
|
|
- dao = dao.Where("b.sale_id = ?", s.userInfo.Id)
|
|
|
} else {
|
|
|
- // 默认看自己的产品线
|
|
|
- productCode, err := service.ColumnString(s.Dao.DB.Table("base_product_auth").Wheref("user_id = ?", s.userInfo.Id), "product_code")
|
|
|
- if err != nil {
|
|
|
- return 0, nil, err
|
|
|
+ where1 := "(1=0"
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "ProjectManager") {
|
|
|
+ where1 += fmt.Sprintf(" OR a.project_man_id='%v'", s.userInfo.Id)
|
|
|
+ //dao = dao.Where("a.project_man_id = ?", s.userInfo.Id)
|
|
|
+ // 交付经理看对应的
|
|
|
+ }
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "ProjectDeliveryManager") {
|
|
|
+ where1 += fmt.Sprintf(" OR a.deliver_man_id='%v'", s.userInfo.Id)
|
|
|
+ //dao = dao.Where("a.deliver_man_id = ?", s.userInfo.Id)
|
|
|
+ }
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "ProductIntegrationManager") {
|
|
|
+ // 丁岳嵩 查看全部硬件 交付类型:10软件;20硬件
|
|
|
+ where1 += fmt.Sprintf(" OR a.order_type='20'")
|
|
|
+ //dao = dao.Where("a.order_type = ?", "20")
|
|
|
+ // 产品线负责人看自己负责的产品线
|
|
|
+ }
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "ProductLineManager") {
|
|
|
+ productCode, err := service.ColumnString(s.Dao.DB.Table("base_product_auth").Wheref("user_id = ?", s.userInfo.Id), "product_code")
|
|
|
+ if err != nil {
|
|
|
+ return 0, nil, err
|
|
|
+ }
|
|
|
+ g.Log().Infof("DeliverOrderService List product_code %v", productCode)
|
|
|
+ if len(productCode) > 0 {
|
|
|
+ where1 += fmt.Sprintf(" OR a.product IN (%v)", strings.Join(productCode, ","))
|
|
|
+ }
|
|
|
+ //dao = dao.Where("a.product in (?)", productCode)
|
|
|
+ // 大区经理看所管理的销售的(包括自己)
|
|
|
+ }
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "RegionalManager") {
|
|
|
+ where1 += fmt.Sprintf(" OR b.sale_id IN (SELECT id FROM sys_user WHERE dept_id='%v')", s.userInfo.DeptId)
|
|
|
+ //dao = dao.Where(fmt.Sprintf("b.sale_id IN (SELECT id FROM sys_user WHERE dept_id='%v')", s.userInfo.DeptId))
|
|
|
+ // 销售工程师看自己负责的项目的
|
|
|
+ }
|
|
|
+ if service.StringsContains(s.userInfo.Roles, "SalesEngineer") {
|
|
|
+ where1 += fmt.Sprintf(" OR b.sale_id='%v'", s.userInfo.Id)
|
|
|
+ //dao = dao.Where("b.sale_id = ?", s.userInfo.Id)
|
|
|
}
|
|
|
- g.Log().Infof("DeliverOrderService List product_code %v", productCode)
|
|
|
- dao = dao.Where("a.product in (?)", productCode)
|
|
|
+ where1 += ")"
|
|
|
+ where = where1
|
|
|
}
|
|
|
+ dao = dao.Where(where)
|
|
|
|
|
|
if req.OrderCode != "" {
|
|
|
dao = dao.Where("a.order_code = ?", req.OrderCode)
|