From 4d0b38be2e3977ec390f70de2f022fe96c4cbb61 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 30 十月 2023 20:36:57 +0800
Subject: [PATCH] 数据权限支持职级
---
api/v1/plan.go | 5
api/v1/client.go | 2
model/plan.go | 19 +++-
model/contract.go | 4 +
api/v1/contact.go | 2
api/v1/contract.go | 2
model/contact.go | 4 +
api/v1/quotation.go | 2
api/v1/receipt.go | 7 +
model/masterOrder.go | 4 +
conf/aps-crm.json | 4
model/serviceFeeManage.go | 11 ++
api/v1/invoice.go | 7 +
model/user.go | 26 ++++--
model/client.go | 4 +
model/invoice.go | 21 +++-
model/subOrder.go | 4 +
model/salesLeads.go | 1
api/v1/subOrder.go | 2
api/v1/masterOrder.go | 2
model/saleChance.go | 4 +
model/quotation.go | 4 +
service/invoice.go | 2
model/followRecord.go | 4 +
model/request/invoice.go | 5
model/receipt.go | 21 +++-
api/v1/saleChance.go | 2
model/serviceOrder.go | 2
model/request/receipt.go | 7 +
api/v1/followRecord.go | 2
main.go | 2
service/receipt.go | 1
32 files changed, 143 insertions(+), 46 deletions(-)
diff --git a/api/v1/client.go b/api/v1/client.go
index d7dc42e..c149aea 100644
--- a/api/v1/client.go
+++ b/api/v1/client.go
@@ -220,7 +220,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
clients, total, errCode := clientService.GetClientList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/contact.go b/api/v1/contact.go
index 2a6b72e..97068ca 100644
--- a/api/v1/contact.go
+++ b/api/v1/contact.go
@@ -181,7 +181,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
contacts, total, errCode := contactService.GetContactList(params.Page, params.PageSize, params.SearchMap, params.ClientId)
diff --git a/api/v1/contract.go b/api/v1/contract.go
index 5a0dcdd..5cfdd31 100644
--- a/api/v1/contract.go
+++ b/api/v1/contract.go
@@ -166,7 +166,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
contracts, total, errCode := contractService.GetContractList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/followRecord.go b/api/v1/followRecord.go
index 1fe90dd..666ea35 100644
--- a/api/v1/followRecord.go
+++ b/api/v1/followRecord.go
@@ -246,7 +246,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
followRecords, total, errCode := followRecordService.GetFollowRecordList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/invoice.go b/api/v1/invoice.go
index 3c51eb3..89edcd4 100644
--- a/api/v1/invoice.go
+++ b/api/v1/invoice.go
@@ -1,6 +1,7 @@
package v1
import (
+ "aps_crm/constvar"
"aps_crm/model"
"aps_crm/model/request"
"aps_crm/model/response"
@@ -8,6 +9,7 @@
"aps_crm/pkg/ecode"
"aps_crm/pkg/structx"
"aps_crm/service"
+ "aps_crm/utils"
"github.com/gin-gonic/gin"
"strconv"
)
@@ -123,6 +125,11 @@
return
}
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ params.PrincipalIds = userInfo.SubUserIds
+ }
+
invoice, total, errCode := service.NewInvoiceService().GetInvoiceList(params)
if errCode != ecode.OK {
ctx.Fail(errCode)
diff --git a/api/v1/masterOrder.go b/api/v1/masterOrder.go
index af2fb9d..6362d0d 100644
--- a/api/v1/masterOrder.go
+++ b/api/v1/masterOrder.go
@@ -168,7 +168,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
masterOrders, total, errCode := masterOrderService.GetMasterOrderList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/plan.go b/api/v1/plan.go
index f09f7d9..2b59b8a 100644
--- a/api/v1/plan.go
+++ b/api/v1/plan.go
@@ -98,7 +98,6 @@
ctx.Ok()
}
-
func checkPlanParams(plan request.Plan) (errCode int, p model.Plan) {
//if plan.Number == "" {
// return ecode.InvalidParams, p
@@ -155,7 +154,7 @@
}
ctx.OkWithDetailed(response.PlanResponse{
- List: plans,
+ List: plans,
Count: int(total),
})
-}
\ No newline at end of file
+}
diff --git a/api/v1/quotation.go b/api/v1/quotation.go
index 3fd3552..2455731 100644
--- a/api/v1/quotation.go
+++ b/api/v1/quotation.go
@@ -186,7 +186,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.CrmUserId
}
quotations, total, errCode := quotationService.GetQuotationList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/receipt.go b/api/v1/receipt.go
index 3367e14..44b0bb2 100644
--- a/api/v1/receipt.go
+++ b/api/v1/receipt.go
@@ -1,11 +1,13 @@
package v1
import (
+ "aps_crm/constvar"
"aps_crm/model/request"
"aps_crm/model/response"
"aps_crm/pkg/contextx"
"aps_crm/pkg/ecode"
"aps_crm/service"
+ "aps_crm/utils"
"github.com/gin-gonic/gin"
"strconv"
)
@@ -99,6 +101,11 @@
return
}
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ params.PrincipleIds = userInfo.SubUserIds
+ }
+
receipt, total, errCode := service.NewReceiptService().GetReceiptList(params)
if errCode != ecode.OK {
ctx.Fail(errCode)
diff --git a/api/v1/saleChance.go b/api/v1/saleChance.go
index 73bcdb0..addf56e 100644
--- a/api/v1/saleChance.go
+++ b/api/v1/saleChance.go
@@ -226,7 +226,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
saleChances, total, errCode := saleChanceService.GetSaleChanceList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/subOrder.go b/api/v1/subOrder.go
index 188e036..7f1e53a 100644
--- a/api/v1/subOrder.go
+++ b/api/v1/subOrder.go
@@ -157,7 +157,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
subOrders, total, errCode := subOrderService.GetSubOrderList(params.Page, params.PageSize, params.SearchMap)
diff --git a/conf/aps-crm.json b/conf/aps-crm.json
index eeb4146..9774105 100644
--- a/conf/aps-crm.json
+++ b/conf/aps-crm.json
@@ -48,8 +48,8 @@
"Issuer": "qmPlus"
},
"GrpcServiceAddr": {
- "Aps": "192.168.20.119:9091",
- "Admin": "192.168.20.119:50051"
+ "Aps": "192.168.20.120:9091",
+ "Admin": "192.168.20.120:50051"
}
}
diff --git a/main.go b/main.go
index 558c976..4996087 100644
--- a/main.go
+++ b/main.go
@@ -50,7 +50,7 @@
middleware.InitUserConn()
v1.InitCodeServiceConn()
- middleware.InitRefreshUserManager(5, 5, 3600)
+ middleware.InitRefreshUserManager(1, 5, 3600)
middleware.RunRefreshUser() ///瀹氭椂瀵规椿璺冪敤鎴锋洿鏂扮敤鎴疯鎯�
logx.Error(server.ListenAndServe().Error())
diff --git a/model/client.go b/model/client.go
index 590c079..cafe6cb 100644
--- a/model/client.go
+++ b/model/client.go
@@ -129,6 +129,10 @@
db = db.Where("clients.member_id = ?", constvar.UserTypeSuper)
}
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("clients.member_id in ?", v)
+ }
}
}
diff --git a/model/contact.go b/model/contact.go
index f47d4f3..a01d3be 100644
--- a/model/contact.go
+++ b/model/contact.go
@@ -100,6 +100,10 @@
if key == "client_id" {
db = db.Where("client_id = ? and is_first = true", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("contacts.member_id in ?", v)
+ }
}
}
}
diff --git a/model/contract.go b/model/contract.go
index 91e50e8..e437c6c 100644
--- a/model/contract.go
+++ b/model/contract.go
@@ -80,6 +80,10 @@
if key == "member_id" {
db = db.Where(key+"= ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("contract.member_id in ?", v)
+ }
}
}
}
diff --git a/model/followRecord.go b/model/followRecord.go
index afc27cb..b220de2 100644
--- a/model/followRecord.go
+++ b/model/followRecord.go
@@ -106,6 +106,10 @@
if key == "client_id" || key == "contact_id" || key == "sales_leads_id" || key == "sale_chance_id" || key == "member_id" {
db = db.Where(key+" = ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("follow_records.member_id in ?", v)
+ }
}
}
}
diff --git a/model/invoice.go b/model/invoice.go
index 0db64fa..7089b18 100644
--- a/model/invoice.go
+++ b/model/invoice.go
@@ -36,12 +36,13 @@
// InvoiceSearch 閿�鍞彂绁ㄦ悳绱㈡潯浠�
InvoiceSearch struct {
Invoice
- Orm *gorm.DB
- QueryClass constvar.InvoiceQueryClass
- KeywordType constvar.InvoiceKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.InvoiceQueryClass
+ KeywordType constvar.InvoiceKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
+ PrincipalIds []int
}
)
@@ -65,6 +66,11 @@
return slf
}
+func (slf *InvoiceSearch) SetPrincipalIds(principalIds []int) *InvoiceSearch {
+ slf.PrincipalIds = principalIds
+ return slf
+}
+
func (slf *InvoiceSearch) build() *gorm.DB {
var db = slf.Orm.Model(&Invoice{})
if slf.Id != 0 {
@@ -81,6 +87,9 @@
if slf.Number != "" {
db.Where("number = ?", slf.Number)
}
+ if len(slf.PrincipalIds) > 0 {
+ db = db.Where("principal_id in ?", slf.PrincipalIds)
+ }
return db
}
diff --git a/model/masterOrder.go b/model/masterOrder.go
index 112d16f..3b77851 100644
--- a/model/masterOrder.go
+++ b/model/masterOrder.go
@@ -72,6 +72,10 @@
if key == "client_id" || key == "member_id" || key == "money" {
db = db.Where(key+" = ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("master_order.member_id in ?", v)
+ }
}
}
}
diff --git a/model/plan.go b/model/plan.go
index 0ba2f15..8386692 100644
--- a/model/plan.go
+++ b/model/plan.go
@@ -25,11 +25,12 @@
PlanSearch struct {
Plan
- Orm *gorm.DB
- Keyword string
- OrderBy string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ Keyword string
+ OrderBy string
+ PageNum int
+ PageSize int
+ MemberIds []int
}
)
@@ -50,6 +51,9 @@
}
if slf.Id != 0 {
db = db.Where("id = ?", slf.Id)
+ }
+ if len(slf.MemberIds) != 0 {
+ db = db.Where("member_id in ?", slf.MemberIds)
}
return db
@@ -97,6 +101,11 @@
return slf
}
+func (slf *PlanSearch) SetMemberIds(ids []int) *PlanSearch {
+ slf.MemberIds = ids
+ return slf
+}
+
func (slf *PlanSearch) SetKeyword(keyword string) *PlanSearch {
slf.Keyword = keyword
return slf
diff --git a/model/quotation.go b/model/quotation.go
index 969d34f..1c45c24 100644
--- a/model/quotation.go
+++ b/model/quotation.go
@@ -88,6 +88,10 @@
if key == "client_id" || key == "sale_chance_id" || key == "member_id" {
db = db.Where(key+" = ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("quotation.member_id in ?", v)
+ }
}
}
}
diff --git a/model/receipt.go b/model/receipt.go
index 2ca94cf..ff0a169 100644
--- a/model/receipt.go
+++ b/model/receipt.go
@@ -34,12 +34,13 @@
// ReceiptSearch 鏀舵鍗曟悳绱㈡潯浠�
ReceiptSearch struct {
Receipt
- Orm *gorm.DB
- QueryClass constvar.ReceiptQueryClass
- KeywordType constvar.ReceiptKeywordType
- Keyword string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ QueryClass constvar.ReceiptQueryClass
+ KeywordType constvar.ReceiptKeywordType
+ Keyword string
+ PageNum int
+ PageSize int
+ PrincipalIds []int
}
)
@@ -72,6 +73,11 @@
return slf
}
+func (slf *ReceiptSearch) SetPrincipalIds(principalIds []int) *ReceiptSearch {
+ slf.PrincipalIds = principalIds
+ return slf
+}
+
func (slf *ReceiptSearch) SetPage(page, size int) *ReceiptSearch {
slf.PageNum, slf.PageSize = page, size
return slf
@@ -91,6 +97,9 @@
if slf.ClientId != 0 {
db = db.Where("client_id = ?", slf.ClientId)
}
+ if len(slf.PrincipalIds) != 0 {
+ db = db.Where("principal_id in ?", slf.PrincipalIds)
+ }
return db
}
diff --git a/model/request/invoice.go b/model/request/invoice.go
index fa08e2f..f22f4f1 100644
--- a/model/request/invoice.go
+++ b/model/request/invoice.go
@@ -44,6 +44,7 @@
type GetInvoiceList struct {
PageInfo
- SourceId int `json:"sourceId"`
- SourceType constvar.InvoiceSourceType `json:"sourceType"` // 婧愬崟绫诲瀷(1閿�鍞槑缁嗗崟2鏈嶅姟鍚堝悓)
+ SourceId int `json:"sourceId"`
+ SourceType constvar.InvoiceSourceType `json:"sourceType"` // 婧愬崟绫诲瀷(1閿�鍞槑缁嗗崟2鏈嶅姟鍚堝悓)
+ PrincipalIds []int
}
diff --git a/model/request/receipt.go b/model/request/receipt.go
index 2285ea3..626e8d3 100644
--- a/model/request/receipt.go
+++ b/model/request/receipt.go
@@ -16,7 +16,8 @@
type GetReceiptList struct {
PageInfo
- SourceType constvar.ReceiptSourceType `json:"sourceType" form:"sourceType"` //鏉ユ簮绫诲瀷锛�1閿�鍞槑缁嗗崟2鏈嶅姟鍚堝悓3閿�鍞彂绁�4鏀舵璁″垝5鍑哄簱鍗曪級
- SourceId int `json:"sourceId" form:"sourceId"`
- ClientId int `json:"clientId" form:"clientId"` //瀹㈡埛id
+ SourceType constvar.ReceiptSourceType `json:"sourceType" form:"sourceType"` //鏉ユ簮绫诲瀷锛�1閿�鍞槑缁嗗崟2鏈嶅姟鍚堝悓3閿�鍞彂绁�4鏀舵璁″垝5鍑哄簱鍗曪級
+ SourceId int `json:"sourceId" form:"sourceId"`
+ ClientId int `json:"clientId" form:"clientId"` //瀹㈡埛id
+ PrincipleIds []int
}
diff --git a/model/saleChance.go b/model/saleChance.go
index 5f0f37c..9cde56f 100644
--- a/model/saleChance.go
+++ b/model/saleChance.go
@@ -121,6 +121,10 @@
if key == "member_id" || key == "budget" || key == "projected_amount" || key == "client_id" {
db = db.Where(key+" = ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("sale_chance.member_id in ?", v)
+ }
}
}
}
diff --git a/model/salesLeads.go b/model/salesLeads.go
index 6ccbdcb..f783ad2 100644
--- a/model/salesLeads.go
+++ b/model/salesLeads.go
@@ -92,6 +92,7 @@
}
case int:
+ case []int:
if key == "member_ids" {
db = db.Where("sales_leads.member_id in ?", v)
}
diff --git a/model/serviceFeeManage.go b/model/serviceFeeManage.go
index 45f4705..f54d3e7 100644
--- a/model/serviceFeeManage.go
+++ b/model/serviceFeeManage.go
@@ -28,6 +28,7 @@
OrderBy string
PageNum int
PageSize int
+ MemberIds []int
}
)
@@ -53,6 +54,11 @@
if slf.ClientId != 0 {
db.Where("client_id = ?", slf.ClientId)
}
+
+ if len(slf.MemberIds) > 0 {
+ db.Where("service_fee_manage.member_id in ?", slf.MemberIds)
+ }
+
switch slf.QueryClass {
case constvar.ServiceFeeQueryClassExpireLessThen60Days:
db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 60))
@@ -120,6 +126,11 @@
return slf
}
+func (slf *ServiceFeeManageSearch) SetMemberIds(ids []int) *ServiceFeeManageSearch {
+ slf.MemberIds = ids
+ return slf
+}
+
func (slf *ServiceFeeManageSearch) SetKeywordType(keyword constvar.ServiceFeeKeywordType) *ServiceFeeManageSearch {
slf.KeywordType = keyword
return slf
diff --git a/model/serviceOrder.go b/model/serviceOrder.go
index c3d350b..7af464a 100644
--- a/model/serviceOrder.go
+++ b/model/serviceOrder.go
@@ -132,7 +132,7 @@
}
if len(slf.ServiceManIds) > 0 {
- db = db.Where("service_man_id in ?", slf.ServiceManIds)
+ db = db.Where("service_order.service_man_id in ?", slf.ServiceManIds)
}
if slf.ServiceNumber != "" {
db = db.Where("service_number = ?", slf.ServiceNumber)
diff --git a/model/subOrder.go b/model/subOrder.go
index 930e672..765b112 100644
--- a/model/subOrder.go
+++ b/model/subOrder.go
@@ -81,6 +81,10 @@
if key == "member_id" {
db = db.Where("sub_order.member_id = ?", v)
}
+ case []int:
+ if key == "member_ids" {
+ db = db.Where("sub_order.member_id in ?", v)
+ }
}
}
}
diff --git a/model/user.go b/model/user.go
index db6afb1..17da6c3 100644
--- a/model/user.go
+++ b/model/user.go
@@ -5,14 +5,13 @@
"aps_crm/pkg/mysqlx"
"fmt"
"gorm.io/gorm"
- "gorm.io/gorm/clause"
)
type (
// User token閲岃竟鎶婄敤鎴稩D銆佺埗鐢ㄦ埛ID銆佽鑹查兘甯︿笂
User struct {
ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- UUID string `json:"uuid" gorm:"unique;type:varchar(255);comment:鐢ㄦ埛ID"`
+ UUID string `json:"uuid" gorm:"uniqueIndex;type:varchar(255);comment:鐢ㄦ埛ID"`
Username string `json:"username" gorm:"index;type:varchar(255);comment:鐢ㄦ埛鐧诲綍鍚�"`
UserType constvar.UserType `json:"userType" gorm:"type:int(11);comment:鐢ㄦ埛绫诲瀷 1瓒呯骇绠$悊鍛� 2涓昏处鎴� 3瀛愯处鎴�"`
Password string `json:"-" gorm:"type:varchar(255);comment:鐢ㄦ埛鐧诲綍瀵嗙爜"`
@@ -294,13 +293,24 @@
}
func (slf *UserSearch) Upsert(record User) error {
- var db = slf.build()
- if err := db.Clauses(clause.OnConflict{
- Columns: []clause.Column{{Name: "uuid"}},
- DoUpdates: clause.AssignmentColumns([]string{"username", "user_type", "nick_name", "sub_user_ids"}),
- }).Create(&record).Error; err != nil {
- return fmt.Errorf("first or create err: %v, record: %+v", err, record)
+ var db = slf.SetId(record.UUID).build()
+ old, err := slf.First()
+ if err == gorm.ErrRecordNotFound {
+ if err := db.Create(&record).Error; err != nil {
+ return fmt.Errorf("create user err: %v, record: %+v", err, record)
+ }
+ } else if old.Username != record.Username ||
+ old.UserType != record.UserType ||
+ old.NickName != record.NickName ||
+ old.SubUserIds != record.SubUserIds {
+ old.Username = record.Username
+ old.UserType = record.UserType
+ old.NickName = record.NickName
+ old.SubUserIds = record.SubUserIds
+ if err := db.Updates(&record).Error; err != nil {
+ return fmt.Errorf("update user err: %v, record: %+v", err, record)
+ }
}
return nil
diff --git a/service/invoice.go b/service/invoice.go
index 9aaf90f..339674a 100644
--- a/service/invoice.go
+++ b/service/invoice.go
@@ -140,7 +140,7 @@
}
func (InvoiceService) GetInvoiceList(params request.GetInvoiceList) ([]*model.Invoice, int64, int) {
- list, total, err := model.NewInvoiceSearch().SetSourceId(params.SourceId).SetSourceType(params.SourceType).Find()
+ list, total, err := model.NewInvoiceSearch().SetSourceId(params.SourceId).SetSourceType(params.SourceType).SetPrincipalIds(params.PrincipalIds).Find()
if err != nil {
return nil, 0, ecode.DBErr
}
diff --git a/service/receipt.go b/service/receipt.go
index 9ec0ba3..b4999cf 100644
--- a/service/receipt.go
+++ b/service/receipt.go
@@ -136,6 +136,7 @@
SetSourceType(params.SourceType).
SetSourceId(params.SourceId).
SetClientId(params.ClientId).
+ SetPrincipalIds(params.PrincipleIds).
Find()
if err != nil {
return nil, 0, ecode.DBErr
--
Gitblit v1.8.0