Procházet zdrojové kódy

feature(优化):
1、经销商权限问题
2、项目联系人多次关联问题

ZZH-wl před 2 roky
rodič
revize
4d3173741c

+ 2 - 0
opms_admin/config/config.toml

@@ -9,8 +9,10 @@
 
 [logger.websocket]
     path   = "./log/websocket"
+    file = "websocket"
     level  = "all"
     stdout = false
+    rotateSize = "10M"
     rotateBackupLimit = 1
 
 # 微服务注册中心配置

+ 8 - 8
opms_parent/app/model/base/base_distributor.go

@@ -16,14 +16,14 @@ type BaseDistributor internal.BaseDistributor
 
 // Fill with you ideas below.
 type BaseDistributorSearchReq struct {
-	DistCode   string `json:"distCode"`   // 经销商code
-	DistName   string `json:"distName"`   // 经销商名称
-	BelongSale string `json:"belongSale"` // 所属经销商
-	ProvinceId int    `json:"provinceId"` //  省份ID
+	DistCode   string   `json:"distCode"`   // 经销商code
+	DistName   string   `json:"distName"`   // 经销商名称
+	BelongSale string   `json:"belongSale"` // 所属经销商
+	ProvinceId []string `json:"provinceId"` //  省份ID
 	request.PageReq
 }
 
-//创建经销商字段
+// 创建经销商字段
 type AddDistributor struct {
 	DistName      string `orm:"dist_name"       json:"distName"      v:"required#经销商名称不能为空"`              // 经销商名称
 	AbbrName      string `orm:"abbr_name"       json:"abbrName"`                                          // 助记名
@@ -38,7 +38,7 @@ type AddDistributor struct {
 	InvoiceHeader string `json:"invoiceHeader"`                                                           // 开票抬头
 }
 
-//列表返回字段
+// 列表返回字段
 type DistributorRonp struct {
 	Id            int           `orm:"id,primary"      json:"id"`            // 主健
 	DistCode      string        `orm:"dist_code"       json:"distCode"`      // 经销商编码
@@ -58,13 +58,13 @@ type DistributorRonp struct {
 	InvoiceHeader string `orm:"invoice_header"  json:"invoiceHeader"` // 开票抬头
 }
 
-//编辑参数
+// 编辑参数
 type UpdateDistributorReq struct {
 	*AddDistributor
 	Id int `p:"id" json:"id" v:"required# id不能为空"`
 }
 
-//删除
+// 删除
 type DeleteDistributorReq struct {
 	Ids []int64 `p:"id" json:"ids" v:"required# id不能为空"`
 }

+ 7 - 2
opms_parent/app/service/base/base_distributor.go

@@ -3,6 +3,7 @@ package base
 import (
 	"context"
 	"fmt"
+	"github.com/gogf/gf/container/garray"
 	"strconv"
 
 	"dashoo.cn/opms_libary/myerrors"
@@ -33,7 +34,11 @@ func NewDistributorService(ctx context.Context) (svc *distributorService, err er
 
 // GetList 经销商信息列表
 func (s *distributorService) GetList(req *model.BaseDistributorSearchReq) (total int, distributorList []*model.DistributorRonp, err error) {
-	distributorModel := s.Dao.DataScope(s.Ctx, "belong_sale_id")
+	distributorModel := s.Dao.FieldsEx(s.Dao.C.DeletedTime)
+	// 用户仅有销售工程师角色展示自己的数据,其他人可以看到所有数据
+	if len(s.CxtUser.Roles) == 1 && garray.NewStrArrayFrom(s.CxtUser.Roles, true).Contains("SalesEngineer") {
+		distributorModel = distributorModel.DataScope(s.Ctx, "belong_sale_id")
+	}
 	if req.DistCode != "" {
 		distributorModel = distributorModel.Where(s.Dao.C.DistCode+" like ?", "%"+req.DistCode+"%")
 	}
@@ -43,7 +48,7 @@ func (s *distributorService) GetList(req *model.BaseDistributorSearchReq) (total
 	if req.BelongSale != "" {
 		distributorModel = distributorModel.Where(s.Dao.C.BelongSale+" like ?", "%"+req.BelongSale+"%")
 	}
-	if req.ProvinceId > 0 {
+	if len(req.ProvinceId) > 0 {
 		distributorModel = distributorModel.Where(s.Dao.C.ProvinceId+" in (?)", req.ProvinceId)
 	}
 	total, err = distributorModel.Count()

+ 14 - 1
opms_parent/app/service/proj/business_contact.go

@@ -7,8 +7,10 @@ import (
 	projModel "dashoo.cn/micro/app/model/proj"
 	"dashoo.cn/micro/app/service"
 	"dashoo.cn/opms_libary/myerrors"
+	"github.com/gogf/gf/container/gset"
 	"github.com/gogf/gf/database/gdb"
 	"github.com/gogf/gf/frame/g"
+	"github.com/gogf/gf/util/gconv"
 )
 
 type businessContactService struct {
@@ -45,8 +47,19 @@ func (p *businessContactService) GetList(req *projModel.BusinessContactSearchReq
 }
 
 func (p *businessContactService) Create(req *projModel.BusinessContactReq) (err error) {
+	dbContactIds, err := p.Dao.Where(p.Dao.C.BusId, req.BusId).Fields(p.Dao.C.ContactId).Array()
+	if err != nil {
+		g.Log().Error(err)
+		return myerrors.DbError("查询项目联系人失败")
+	}
+	contactIds := gset.NewIntSetFrom(req.ContactIds, true)
+	ids := gset.NewIntSetFrom(gconv.Ints(dbContactIds), true)
+	contactIds = contactIds.Diff(ids)
+	if contactIds.Size() == 0 {
+		return myerrors.TipsError("该联系人已关联,请勿重复操作")
+	}
 	contactList := make([]*projModel.ProjBusinessContact, 0)
-	for _, v := range req.ContactIds {
+	for _, v := range contactIds.Slice() {
 		data := new(projModel.ProjBusinessContact)
 		data.BusId = req.BusId
 		data.ContactId = v