From b3a47cb555076c25c64d83dd455a472509291245 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 13 十一月 2023 16:09:35 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/crm
---
service/user.go | 18
proto/user/user.pb.go | 103 +++--
model/plan.go | 19
source/user.go | 132 +++---
api/v1/getAllData.go | 2
api/v1/salesReturn.go | 2
api/v1/salesRefund.go | 2
proto/user.proto | 3
model/serviceFeeManage.go | 11
service/assign.go | 84 ++--
api/v1/invoice.go | 7
api/v1/salesLeads.go | 2
model/user.go | 58 ++
model/invoice.go | 21
model/subOrder.go | 4
model/salesLeads.go | 5
service/dataServer.go | 14
api/v1/masterOrder.go | 2
service/invoice.go | 2
model/followRecord.go | 4
model/request/invoice.go | 5
model/receipt.go | 21
constvar/const.go | 7
model/serviceOrder.go | 2
middleware/jwt.go | 18
main.go | 8
service/initdb.go | 4
model/request/jwt.go | 5
api/v1/serviceFollowup.go | 2
source/menu.go | 101 ++--
api/v1/plan.go | 5
api/v1/client.go | 32 -
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
middleware/user.go | 21
api/v1/salesDetails.go | 2
model/client.go | 16
api/v1/subOrder.go | 2
model/saleChance.go | 4
model/quotation.go | 4
api/v1/serviceOrder.go | 2
api/v1/saleChance.go | 2
api/v1/assign.go | 93 ++--
middleware/refresh_user.go | 138 +++++++
model/request/receipt.go | 7
service/lru.go | 37 +
api/v1/serviceContract.go | 2
api/v1/followRecord.go | 2
service/receipt.go | 1
54 files changed, 698 insertions(+), 365 deletions(-)
diff --git a/api/v1/assign.go b/api/v1/assign.go
index c4218df..f7618e5 100644
--- a/api/v1/assign.go
+++ b/api/v1/assign.go
@@ -1,49 +1,44 @@
-package v1
-
-import (
- "aps_crm/model/request"
- "aps_crm/pkg/contextx"
- "aps_crm/pkg/ecode"
- "github.com/gin-gonic/gin"
-)
-
-type AssignApi struct{}
-
-// Assign
-//
-// @Tags Assign
-// @Summary 鍒嗛厤
-// @Produce application/json
-// @Param object body request.Assign true "鏌ヨ鍙傛暟"
-// @Success 200 {object} contextx.Response{}
-// @Router /api/assign/assign [post]
-func (au *AssignApi) Assign(c *gin.Context) {
- var params request.Assign
- ctx, ok := contextx.NewContext(c, ¶ms)
- if !ok {
- return
- }
-
- if params.MemberId == 0 {
- ctx.Fail(ecode.AssignWrongMemberId)
- return
- }
-
- if len(params.Ids) == 0 {
- ctx.Fail(ecode.AssignWrongId)
- return
- }
-
- if params.Type == "" {
- ctx.Fail(ecode.AssignWrongModelType)
- return
- }
-
- errCode := assignService.Assign(params.MemberId, params.Ids, params.Type)
- if errCode != ecode.OK {
- ctx.Fail(errCode)
- return
- }
-
- ctx.Ok()
-}
+package v1
+
+import (
+ "aps_crm/model/request"
+ "aps_crm/pkg/contextx"
+ "aps_crm/pkg/ecode"
+ "github.com/gin-gonic/gin"
+)
+
+type AssignApi struct{}
+
+// Assign
+//
+// @Tags Assign
+// @Summary 鍒嗛厤
+// @Produce application/json
+// @Param object body request.Assign true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/assign/assign [post]
+func (au *AssignApi) Assign(c *gin.Context) {
+ var params request.Assign
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ if len(params.Ids) == 0 {
+ ctx.Fail(ecode.AssignWrongId)
+ return
+ }
+
+ if params.Type == "" {
+ ctx.Fail(ecode.AssignWrongModelType)
+ return
+ }
+
+ errCode := assignService.Assign(params.MemberId, params.Ids, params.Type)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
diff --git a/api/v1/client.go b/api/v1/client.go
index d7dc42e..ff33fad 100644
--- a/api/v1/client.go
+++ b/api/v1/client.go
@@ -28,13 +28,6 @@
return
}
- if params.MemberId == 0 {
- userInfo := utils.GetUserInfo(c)
- if userInfo.UserType == constvar.UserTypeSub {
- params.MemberId = userInfo.CrmUserId
- }
- }
-
errCode, client := checkClientParams(params.Client)
if errCode != ecode.OK {
ctx.Fail(errCode)
@@ -116,12 +109,7 @@
client.Business.IndustryId = params.IndustryId
client.Business.EnterpriseNatureId = params.EnterpriseNatureId
client.Business.EnterpriseScaleId = params.EnterpriseScaleId
- //閿�鍞礋璐d汉涓虹┖鏃朵负鍏捣瀹㈡埛
- if params.MemberId == 0 {
- client.MemberId = 1
- } else {
- client.MemberId = params.MemberId
- }
+ client.MemberId = params.MemberId
client.CodeStandID = params.CodeStandID
//if params.Contact.Name != "" {
@@ -215,12 +203,20 @@
return
}
- userInfo := utils.GetUserInfo(c)
- if userInfo.UserType == constvar.UserTypeSub {
- if params.SearchMap == nil {
- params.SearchMap = make(map[string]interface{}, 0)
+ var isPublic bool
+ if params.SearchMap != nil && params.SearchMap["is_public"] != nil {
+ if v, ok := params.SearchMap["is_public"].(bool); ok {
+ isPublic = v
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ }
+ if !isPublic {
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ if params.SearchMap == nil {
+ params.SearchMap = make(map[string]interface{}, 0)
+ }
+ 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/getAllData.go b/api/v1/getAllData.go
index 08c983d..6ddb884 100644
--- a/api/v1/getAllData.go
+++ b/api/v1/getAllData.go
@@ -21,7 +21,7 @@
return
}
- errCode, data := allDataServer.GetAllData()
+ errCode, data := allDataServer.GetAllData(c)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
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..d237955 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.SubUserIds
}
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/salesDetails.go b/api/v1/salesDetails.go
index 805084a..d417eca 100644
--- a/api/v1/salesDetails.go
+++ b/api/v1/salesDetails.go
@@ -190,7 +190,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
salesDetailss, total, errCode := salesDetailsService.GetSalesDetailsList(params, memberIds)
diff --git a/api/v1/salesLeads.go b/api/v1/salesLeads.go
index e0d305e..530a1bf 100644
--- a/api/v1/salesLeads.go
+++ b/api/v1/salesLeads.go
@@ -175,7 +175,7 @@
if params.SearchMap == nil {
params.SearchMap = make(map[string]interface{}, 0)
}
- params.SearchMap["member_id"] = userInfo.CrmUserId
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
}
salesLeadss, total, errCode := salesLeadsService.GetSalesLeadsList(params.Page, params.PageSize, params.SearchMap)
diff --git a/api/v1/salesRefund.go b/api/v1/salesRefund.go
index 00ce774..174077c 100644
--- a/api/v1/salesRefund.go
+++ b/api/v1/salesRefund.go
@@ -184,7 +184,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
salesRefunds, total, errCode := salesRefundService.GetSalesRefundList(params.Page, params.PageSize, params.KeywordType, params.Keyword, params.SourceId, memberIds)
diff --git a/api/v1/salesReturn.go b/api/v1/salesReturn.go
index 4e21782..70d3643 100644
--- a/api/v1/salesReturn.go
+++ b/api/v1/salesReturn.go
@@ -179,7 +179,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
salesReturns, total, errCode := salesReturnService.GetSalesReturnList(params, memberIds)
diff --git a/api/v1/serviceContract.go b/api/v1/serviceContract.go
index 1edad01..e5b97d9 100644
--- a/api/v1/serviceContract.go
+++ b/api/v1/serviceContract.go
@@ -134,7 +134,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
serviceContracts, total, errCode := serviceContractService.GetServiceContractList(params, memberIds)
diff --git a/api/v1/serviceFollowup.go b/api/v1/serviceFollowup.go
index d457ead..ce3bbc5 100644
--- a/api/v1/serviceFollowup.go
+++ b/api/v1/serviceFollowup.go
@@ -165,7 +165,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
serviceFollowups, total, errCode := serviceFollowupService.GetServiceFollowupList(params.Page, params.PageSize, params.KeywordType, params.Keyword, params.ServiceOrderId, memberIds)
diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go
index e557bd7..b03eb64 100644
--- a/api/v1/serviceOrder.go
+++ b/api/v1/serviceOrder.go
@@ -153,7 +153,7 @@
var memberIds []int
userInfo := utils.GetUserInfo(c)
if userInfo.UserType == constvar.UserTypeSub {
- memberIds = []int{userInfo.CrmUserId}
+ memberIds = userInfo.SubUserIds
}
serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword, params.ServiceContractId, params.SalesDetailsId, memberIds)
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/constvar/const.go b/constvar/const.go
index cd33794..1107c6f 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -32,13 +32,6 @@
UserTypeSub // 瀛愯处鎴�
)
-type NotAdmin int
-
-const (
- NotAdminAll NotAdmin = iota // 鍏捣
- NotAdminYes // 鎴戠殑瀹㈡埛
-)
-
type SalesStatus int
const (
diff --git a/main.go b/main.go
index 18843c8..9bdf14c 100644
--- a/main.go
+++ b/main.go
@@ -48,7 +48,6 @@
ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second,
}
-
//鍚姩grpc瀹㈡埛绔�
go v1.InitProductServiceConn()
go middleware.InitUserConn()
@@ -70,9 +69,9 @@
panic(fmt.Sprintf("grpc server init error: %v", err.Error()))
}
}()
- //c := cron.New()
- //c.AddFunc("@every 15s", service.SyncUserInfo) // 姣�15绉掑悓姝ヤ竴娆�
- //c.Start()
+
+ middleware.InitRefreshUserManager(5, 5, 3600)
+ middleware.RunRefreshUser() ///瀹氭椂瀵规椿璺冪敤鎴锋洿鏂扮敤鎴疯鎯�
logx.Error(server.ListenAndServe().Error())
}
@@ -82,6 +81,7 @@
signal.Notify(quit, syscall.SIGKILL, syscall.SIGQUIT, syscall.SIGINT, syscall.SIGTERM)
<-quit
+ middleware.StopRefreshUser()
v1.CloseProductServiceConn()
v1.CloseCodeServiceConn()
v1.CloseProductInventoryServiceConn()
diff --git a/middleware/jwt.go b/middleware/jwt.go
index 240bf09..907a1d0 100644
--- a/middleware/jwt.go
+++ b/middleware/jwt.go
@@ -98,20 +98,26 @@
// parseToken 瑙f瀽token鍖呭惈鐨勪俊鎭�
claims, err := j.ParseToken(token)
if err != nil {
- if err == utils.TokenExpired {
- c.Next()
- return
- }
- c.Next()
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
return
}
userInfo := service.GetUserBaseCache(claims.UserId)
if userInfo == nil {
- SyncUserInfo()
+ SyncUserInfo([]string{claims.UserId})
userInfo = service.GetUserBaseCache(claims.UserId)
}
+ if userInfo == nil {
+ ctx.Fail(ecode.JWTDisabled)
+ c.Abort()
+ return
+ }
+
+ SetActiveTime(claims.UserId)
+
claims.CrmUserId = userInfo.UserId
claims.NickName = userInfo.NickName
+ claims.SubUserIds = userInfo.SubUserIds
c.Set("claims", claims)
if CheckAuth(c.Request.URL.Path, token) {
c.Next()
diff --git a/middleware/refresh_user.go b/middleware/refresh_user.go
new file mode 100644
index 0000000..54ebd3e
--- /dev/null
+++ b/middleware/refresh_user.go
@@ -0,0 +1,138 @@
+package middleware
+
+import (
+ "aps_crm/pkg/logx"
+ "context"
+ "fmt"
+ "sync"
+ "sync/atomic"
+ "time"
+)
+
+// RefreshUserManager 瀹氭椂鎷夊彇娲昏穬鐢ㄦ埛鐨勪俊鎭紙鍖呭惈涓嬪睘id锛�
+type RefreshUserManager struct {
+ RunFlag int32
+ StartRemoveUserFlag int32
+ StartRefreshUserFlag int32
+ Users map[string]*CurrentActiveUser
+ mu sync.RWMutex
+ ctx context.Context
+ expireSecond int64
+ intervalRemoveUserMinute int
+ intervalRefreshUserMinute int
+ cancel func()
+}
+
+type CurrentActiveUser struct {
+ UserID string
+ lastActiveTime int64
+}
+
+var defaultRefreshUserManager *RefreshUserManager
+
+func InitRefreshUserManager(intervalRefreshUserMinute, intervalRemoveMinute int, expireSecond int64) {
+ if intervalRefreshUserMinute == 0 {
+ intervalRefreshUserMinute = 5
+ }
+ if intervalRemoveMinute > 0 && expireSecond == 0 {
+ expireSecond = int64(intervalRemoveMinute * 60 * 12)
+ }
+ ctx, cancel := context.WithCancel(context.Background())
+ defaultRefreshUserManager = &RefreshUserManager{
+ expireSecond: expireSecond,
+ intervalRemoveUserMinute: intervalRemoveMinute,
+ intervalRefreshUserMinute: intervalRefreshUserMinute,
+ ctx: ctx,
+ cancel: cancel,
+ Users: map[string]*CurrentActiveUser{},
+ }
+}
+
+func RunRefreshUser() {
+ if !atomic.CompareAndSwapInt32(&defaultRefreshUserManager.RunFlag, 0, 1) {
+ return
+ }
+ go defaultRefreshUserManager.refreshUserInfo()
+ go defaultRefreshUserManager.removeInActiveUser()
+}
+func StopRefreshUser() {
+ defaultRefreshUserManager.cancel()
+}
+
+func SetActiveTime(userID string) {
+ defaultRefreshUserManager.setActiveTime(userID)
+}
+
+// RefreshActiveTime 鏇存柊鐢ㄦ埛娲昏穬鏃堕棿
+func (r *RefreshUserManager) setActiveTime(userID string) {
+ r.mu.Lock()
+ defer r.mu.Unlock()
+ if r.Users[userID] == nil {
+ r.Users[userID] = &CurrentActiveUser{
+ UserID: userID,
+ lastActiveTime: time.Now().Unix(),
+ }
+ logx.Infof("add active user :%+v", r.Users[userID])
+ } else {
+ r.Users[userID].lastActiveTime = time.Now().Unix()
+ logx.Infof("refresh active time, user:%+v", r.Users[userID])
+ }
+}
+
+func (r *RefreshUserManager) removeInActiveUser() {
+ if !atomic.CompareAndSwapInt32(&r.StartRemoveUserFlag, 0, 1) {
+ return
+ }
+ if r.intervalRemoveUserMinute == 0 { //涓嶆竻鐞�
+ return
+ }
+ ticker := time.NewTicker(time.Minute * time.Duration(r.intervalRemoveUserMinute))
+ for {
+ select {
+ case <-ticker.C:
+ nowTs := time.Now().Unix()
+ var users []*CurrentActiveUser
+ r.mu.RLock()
+ for _, user := range r.Users {
+ users = append(users, user)
+ }
+ r.mu.RUnlock()
+ for _, user := range users {
+ if nowTs-user.lastActiveTime > r.expireSecond {
+ r.mu.Lock()
+ logx.Infof("removed in active user:%+v", user)
+ delete(r.Users, user.UserID)
+ r.mu.Unlock()
+ }
+ }
+ case <-r.ctx.Done():
+ fmt.Println("stop RemoveInActiveUser.")
+ return
+ }
+ }
+}
+
+func (r *RefreshUserManager) refreshUserInfo() {
+ if !atomic.CompareAndSwapInt32(&r.StartRefreshUserFlag, 0, 1) {
+ return
+ }
+ ticker := time.NewTicker(time.Minute * time.Duration(r.intervalRefreshUserMinute))
+ for {
+ select {
+ case <-ticker.C:
+ r.mu.RLock()
+ userIds := make([]string, len(r.Users))
+ for userID := range r.Users {
+ userIds = append(userIds, userID)
+ }
+ r.mu.RUnlock()
+ if len(userIds) != 0 {
+ logx.Infof("RefreshUserInfo, user ids: ", userIds)
+ SyncUserInfo(userIds)
+ }
+ case <-r.ctx.Done():
+ fmt.Println("stop RefreshUserInfo.")
+ return
+ }
+ }
+}
diff --git a/middleware/user.go b/middleware/user.go
index f1e4487..198b328 100644
--- a/middleware/user.go
+++ b/middleware/user.go
@@ -7,9 +7,9 @@
"aps_crm/pkg/logx"
"aps_crm/proto/user"
"context"
- "fmt"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
+ "strings"
"time"
)
@@ -59,11 +59,14 @@
return rsp.Result
}
-func SyncUserInfo() {
+func SyncUserInfo(uuid []string) {
cli := user.NewUserServiceClient(userConn)
-
var users []*user.User
-
+ for _, id := range uuid {
+ users = append(users, &user.User{
+ Uuid: id,
+ })
+ }
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
r, err := cli.SyncUser(ctx, &user.UserRequest{Users: users})
@@ -72,15 +75,19 @@
return
}
- fmt.Printf("Synced: %v, Message: %s", r.List, r.Message)
+ logx.Infof("Synced: %v, Message: %s", r.List, r.Message)
for _, member := range r.List {
- err = model.NewUserSearch(nil).FirstOrCreate(model.User{
+ userRecord := model.User{
UUID: member.Uuid,
Username: member.Username,
UserType: constvar.UserType(member.Usertype),
NickName: member.Nickname,
- })
+ }
+ if member.SubUserIds != nil {
+ userRecord.SubUserIds = strings.Join(member.SubUserIds, ",")
+ }
+ err = model.NewUserSearch(nil).Upsert(userRecord, member.SubUserQueried)
if err != nil {
logx.Errorf("sync user error: %v", err.Error())
continue
diff --git a/model/client.go b/model/client.go
index 590c079..dea1044 100644
--- a/model/client.go
+++ b/model/client.go
@@ -117,18 +117,22 @@
db = db.Joins("Member").Where("Member.username LIKE ?", "%"+v+"%")
}
- case int, uint, int64, float64:
+ case int, uint, int64, float64, bool:
if key == "id" || key == "client_type_id" || key == "client_status_id" || key == "member_id" {
db = db.Where(key+" = ?", v)
}
- if key == "not_admin" {
- if v == float64(constvar.NotAdminYes) {
- db = db.Where("clients.member_id != ?", constvar.UserTypeSuper)
- } else {
- db = db.Where("clients.member_id = ?", constvar.UserTypeSuper)
+ if key == "is_public" {
+ if val, ok := v.(bool); ok {
+ if val {
+ db = db.Where("clients.member_id = ?", 0)
+ }
}
}
+ 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/jwt.go b/model/request/jwt.go
index e67ab55..606e7b4 100644
--- a/model/request/jwt.go
+++ b/model/request/jwt.go
@@ -10,8 +10,9 @@
BaseClaims
BufferTime int64
jwt.StandardClaims
- CrmUserId int
- NickName string
+ CrmUserId int
+ NickName string
+ SubUserIds []int //鍖呭惈鑷韩鐨刬d
}
type BaseClaims struct {
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 4439bdb..f783ad2 100644
--- a/model/salesLeads.go
+++ b/model/salesLeads.go
@@ -92,8 +92,9 @@
}
case int:
- if key == "member_id" {
- db = db.Where("sales_leads.member_id = ?", v)
+ 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 925d6d7..44f7fdc 100644
--- a/model/user.go
+++ b/model/user.go
@@ -11,7 +11,7 @@
// User token閲岃竟鎶婄敤鎴稩D銆佺埗鐢ㄦ埛ID銆佽鑹查兘甯︿笂
User struct {
ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- UUID string `json:"uuid" gorm:"primaryKey;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:鐢ㄦ埛鐧诲綍瀵嗙爜"`
@@ -26,6 +26,7 @@
MenuIds []uint `json:"menuIds" gorm:"-"` // 鑿滃崟ID鍒楄〃
AuthorityId uint `json:"authorityId" gorm:"default:888;comment:鐢ㄦ埛瑙掕壊ID"` // 鐢ㄦ埛瑙掕壊ID
Authority Authority `json:"authority" gorm:"foreignKey:AuthorityId"`
+ SubUserIds string `json:"subUserIds" gorm:"sub_user_ids"` //涓嬪睘鍛樺伐鐢ㄦ埛id,鐢ㄩ�楀彿鍒嗗紑
gorm.Model `json:"-"`
}
@@ -36,6 +37,7 @@
PageNum int
PageSize int
Orm *gorm.DB
+ IDs []int
}
)
@@ -75,6 +77,11 @@
return slf
}
+func (slf *UserSearch) SetUserIds(userIds []int) *UserSearch {
+ slf.IDs = userIds
+ return slf
+}
+
func (slf *UserSearch) SetUserName(username string) *UserSearch {
slf.Username = username
return slf
@@ -102,6 +109,14 @@
if slf.Order != "" {
db = db.Order(slf.Order)
+ }
+
+ if slf.ID != 0 {
+ db = db.Where("id = ?", slf.ID)
+ }
+
+ if len(slf.IDs) > 0 {
+ db = db.Where("id in ?", slf.IDs)
}
return db
@@ -277,12 +292,45 @@
return records, nil
}
-func (slf *UserSearch) FirstOrCreate(record User) error {
- var db = slf.build()
+func (slf *UserSearch) Upsert(record User, SubUserQueried bool) error {
- if err := db.FirstOrCreate(&User{}, 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 ||
+ SubUserQueried && old.SubUserIds != record.SubUserIds {
+ old.Username = record.Username
+ old.UserType = record.UserType
+ old.NickName = record.NickName
+ old.SubUserIds = record.SubUserIds
+ if err := db.Save(&old).Error; err != nil {
+ return fmt.Errorf("update user err: %v, old record: %+v", err, old)
+ }
}
return nil
}
+
+type IdPair struct {
+ ID int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ UUID string `json:"uuid" gorm:"unique;type:varchar(255);comment:鐢ㄦ埛ID"`
+}
+
+func (slf *UserSearch) UUID2CrmUserId(userIds []string) ([]*IdPair, error) {
+ var (
+ records = make([]*IdPair, 0)
+ db = slf.Orm.Model(&User{})
+ )
+
+ db = db.Where("uuid in ?", userIds)
+ if err := db.Select("user.id, user.uuid").Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find all err: %v", err)
+ }
+
+ return records, nil
+}
diff --git a/proto/user.proto b/proto/user.proto
index 50e32f3..8234322 100644
--- a/proto/user.proto
+++ b/proto/user.proto
@@ -14,7 +14,8 @@
string username = 2;
int32 usertype = 3;
string nickname = 4;
- // ... other fields
+ repeated string sub_user_ids = 5;
+ bool sub_user_queried = 6;
}
message UserRequest {
diff --git a/proto/user/user.pb.go b/proto/user/user.pb.go
index 399d3aa..ab4f0db 100644
--- a/proto/user/user.pb.go
+++ b/proto/user/user.pb.go
@@ -25,10 +25,12 @@
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
- Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
- Usertype int32 `protobuf:"varint,3,opt,name=usertype,proto3" json:"usertype,omitempty"`
- Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"` // ... other fields
+ Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
+ Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+ Usertype int32 `protobuf:"varint,3,opt,name=usertype,proto3" json:"usertype,omitempty"`
+ Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname,omitempty"`
+ SubUserIds []string `protobuf:"bytes,5,rep,name=sub_user_ids,json=subUserIds,proto3" json:"sub_user_ids,omitempty"`
+ SubUserQueried bool `protobuf:"varint,6,opt,name=sub_user_queried,json=subUserQueried,proto3" json:"sub_user_queried,omitempty"`
}
func (x *User) Reset() {
@@ -89,6 +91,20 @@
return x.Nickname
}
return ""
+}
+
+func (x *User) GetSubUserIds() []string {
+ if x != nil {
+ return x.SubUserIds
+ }
+ return nil
+}
+
+func (x *User) GetSubUserQueried() bool {
+ if x != nil {
+ return x.SubUserQueried
+ }
+ return false
}
type UserRequest struct {
@@ -331,43 +347,48 @@
var file_user_proto_rawDesc = []byte{
0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x75, 0x73,
- 0x65, 0x72, 0x22, 0x6e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1a,
- 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73,
- 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73,
- 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61,
- 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x20, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73,
- 0x65, 0x72, 0x73, 0x22, 0x72, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x4c, 0x69, 0x73,
- 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x48, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x50, 0x61,
- 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x50, 0x61, 0x74,
- 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70,
- 0x65, 0x22, 0x55, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0x7a, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72,
- 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x55,
- 0x73, 0x65, 0x72, 0x12, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73,
- 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x55, 0x73,
- 0x65, 0x72, 0x4d, 0x65, 0x6e, 0x75, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x2e, 0x75, 0x73,
- 0x65, 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
- 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x65, 0x72, 0x22, 0xba, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75,
+ 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12,
+ 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75,
+ 0x73, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75,
+ 0x73, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e,
+ 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x55, 0x73,
+ 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x5f, 0x75, 0x73, 0x65,
+ 0x72, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0e, 0x73, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x64, 0x22,
+ 0x2f, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20,
+ 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e,
+ 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73,
+ 0x22, 0x72, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
+ 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e,
+ 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75,
+ 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14,
+ 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74,
+ 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x48, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x50, 0x61, 0x74, 0x68, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x05, 0x52, 0x0a, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x55,
+ 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63,
+ 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a,
+ 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72,
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0x7a, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72,
+ 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72,
+ 0x12, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x4d,
+ 0x65, 0x6e, 0x75, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e,
+ 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x75,
+ 0x73, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x33,
}
var (
diff --git a/service/assign.go b/service/assign.go
index 4f6d526..88e789e 100644
--- a/service/assign.go
+++ b/service/assign.go
@@ -1,41 +1,43 @@
-package service
-
-import (
- "aps_crm/model"
- "aps_crm/pkg/ecode"
-)
-
-type AssignService struct{}
-
-type Assign interface {
- Assign(id int) error
-}
-
-func (AssignService) Assign(memberId int, ids []int, modelType string) int {
- // check member exist
- _, err := model.NewUserSearch(nil).SetUserId(memberId).First()
- if err != nil {
- return ecode.UserNotExist
- }
-
- var errCode int
- switch modelType {
- case "client":
- errCode = ClientService{}.Assign(ids, memberId)
- case "salesLead":
- errCode = SalesLeadsService{}.Assign(ids, memberId)
- case "contact":
- errCode = ContactService{}.Assign(ids, memberId)
- case "followRecord":
- errCode = FollowRecordService{}.Assign(ids, memberId)
-
- default:
- errCode = ecode.AssignWrongModelType
- }
-
- if errCode != ecode.OK {
- return errCode
- }
-
- return ecode.OK
-}
+package service
+
+import (
+ "aps_crm/model"
+ "aps_crm/pkg/ecode"
+)
+
+type AssignService struct{}
+
+type Assign interface {
+ Assign(id int) error
+}
+
+func (AssignService) Assign(memberId int, ids []int, modelType string) int {
+ // check member exist
+ if memberId != 0 {
+ _, err := model.NewUserSearch(nil).SetUserId(memberId).First()
+ if err != nil {
+ return ecode.UserNotExist
+ }
+ }
+
+ var errCode int
+ switch modelType {
+ case "client":
+ errCode = ClientService{}.Assign(ids, memberId)
+ case "salesLead":
+ errCode = SalesLeadsService{}.Assign(ids, memberId)
+ case "contact":
+ errCode = ContactService{}.Assign(ids, memberId)
+ case "followRecord":
+ errCode = FollowRecordService{}.Assign(ids, memberId)
+
+ default:
+ errCode = ecode.AssignWrongModelType
+ }
+
+ if errCode != ecode.OK {
+ return errCode
+ }
+
+ return ecode.OK
+}
diff --git a/service/dataServer.go b/service/dataServer.go
index 4ea3990..63f1d40 100644
--- a/service/dataServer.go
+++ b/service/dataServer.go
@@ -1,13 +1,16 @@
package service
import (
+ "aps_crm/constvar"
"aps_crm/model/response"
"aps_crm/pkg/ecode"
+ "aps_crm/utils"
+ "github.com/gin-gonic/gin"
)
type DataServer struct{}
-func (DataServer) GetAllData() (errCode int, data response.DataResponse) {
+func (DataServer) GetAllData(c *gin.Context) (errCode int, data response.DataResponse) {
// get country list
countryList, _ := ServiceGroup.GetCountryList()
data.Country = countryList
@@ -73,7 +76,14 @@
data.RegularCustomers = regularCustomerList
// get Member list
- memberList, _ := ServiceGroup.GetUserList()
+
+ var memberIds []int
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ memberIds = userInfo.SubUserIds
+ }
+
+ memberList, _ := ServiceGroup.GetUserList(memberIds)
data.Member = memberList
// get Department list
diff --git a/service/initdb.go b/service/initdb.go
index f377d0d..fd7149e 100644
--- a/service/initdb.go
+++ b/service/initdb.go
@@ -3,7 +3,6 @@
import (
"aps_crm/pkg/logx"
"context"
- "errors"
"sort"
)
@@ -63,7 +62,8 @@
// InitDB 鍒濆鍖�
func (initDBService *InitDBService) InitDB() (err error) {
if len(initializerList) == 0 {
- return errors.New("鏃犲彲鐢ㄥ垵濮嬪寲杩囩▼锛岃妫�鏌ュ垵濮嬪寲鏄惁宸叉墽琛屽畬鎴�")
+ logx.Warn("鏃犲彲鐢ㄥ垵濮嬪寲杩囩▼锛岃妫�鏌ュ垵濮嬪寲鏄惁宸叉墽琛屽畬鎴�")
+ return nil
}
sort.Sort(&initializerList) // 淇濊瘉鏈変緷璧栫殑 initializer 鎺掑湪鍚庨潰鎵ц
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/lru.go b/service/lru.go
index b212997..888aba5 100644
--- a/service/lru.go
+++ b/service/lru.go
@@ -2,39 +2,52 @@
import (
"github.com/hashicorp/golang-lru/v2/expirable"
+ "strings"
"time"
)
-type userBaseInfo struct {
- UserId int
- NickName string
+type UserBaseInfo struct {
+ UserId int
+ NickName string
+ SubUserIds []int
}
-var userCache *expirable.LRU[string, *userBaseInfo]
+var userCache *expirable.LRU[string, *UserBaseInfo]
func init() {
//make cache with 5 minutes TTL and 100 max keys
- userCache = expirable.NewLRU[string, *userBaseInfo](100, nil, time.Minute*5)
+ userCache = expirable.NewLRU[string, *UserBaseInfo](100, nil, time.Minute*1) //todo zq 鏆傛椂鏀规垚 1鍒嗛挓
}
-func GetUserBaseCache(adminUserId string) *userBaseInfo {
- userCache, ok := userCache.Get(adminUserId)
+func GetUserBaseCache(adminUserId string) *UserBaseInfo {
+ cache, ok := userCache.Get(adminUserId)
if !ok {
userService := UserService{}
userRecord, err := userService.GetUserInfo(adminUserId)
if err != nil {
return nil
}
- baseInfo := &userBaseInfo{
- UserId: userRecord.ID,
- NickName: userRecord.NickName,
+ var subIds []int
+ if userRecord.SubUserIds != "" {
+ subIds, _, err = userService.UUID2CrmUserId(strings.Split(userRecord.SubUserIds, ","))
+ if err != nil {
+ return nil
+ }
+ }
+
+ subIds = append(subIds, userRecord.ID)
+
+ baseInfo := &UserBaseInfo{
+ UserId: userRecord.ID,
+ NickName: userRecord.NickName,
+ SubUserIds: subIds,
}
SetUserBaseCache(adminUserId, baseInfo)
return baseInfo
}
- return userCache
+ return cache
}
-func SetUserBaseCache(adminUserId string, user *userBaseInfo) {
+func SetUserBaseCache(adminUserId string, user *UserBaseInfo) {
_ = userCache.Add(adminUserId, user)
}
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
diff --git a/service/user.go b/service/user.go
index 3f40330..923ccc2 100644
--- a/service/user.go
+++ b/service/user.go
@@ -90,6 +90,20 @@
})
}
-func (userService *UserService) GetUserList() (userList []*model.User, err error) {
- return model.NewUserSearch(nil).FindAll()
+func (userService *UserService) GetUserList(userIds []int) (userList []*model.User, err error) {
+ return model.NewUserSearch(nil).SetUserIds(userIds).FindAll()
+}
+
+func (userService *UserService) UUID2CrmUserId(uuids []string) (crmUserIds []int, m map[string]int, err error) {
+ idPairs, err := model.NewUserSearch(nil).UUID2CrmUserId(uuids)
+ if err != nil {
+ return
+ }
+ crmUserIds = make([]int, 0, len(idPairs))
+ m = make(map[string]int, len(idPairs))
+ for _, idPair := range idPairs {
+ crmUserIds = append(crmUserIds, idPair.ID)
+ m[idPair.UUID] = idPair.ID
+ }
+ return
}
diff --git a/source/menu.go b/source/menu.go
index 18ed3aa..08b1403 100644
--- a/source/menu.go
+++ b/source/menu.go
@@ -1,52 +1,53 @@
package system
-import (
- "aps_crm/model"
- "aps_crm/pkg/logx"
- "aps_crm/service"
- "context"
- "github.com/pkg/errors"
- "gorm.io/gorm"
-)
-
-type initMenu struct{}
-
-// auto run
-func init() {
- service.RegisterInit(initMenuSequence, &initMenu{})
-}
-
-func (i initMenu) InitializerName() string {
- return model.Menu{}.TableName()
-}
-
-func (i *initMenu) InitializeData(ctx context.Context) (next context.Context, err error) {
- entities := []*model.Menu{
- {ID: 1, ParentId: 0, Path: "", Name: "", Title: "瀹㈡埛绠$悊"},
- {ID: 2, ParentId: 1, Path: "/client", Name: "", Title: "瀹㈡埛绠$悊"},
-
- {ID: 3, ParentId: 0, Path: "", Name: "", Title: "閿�鍞鐞�"},
- {ID: 4, ParentId: 3, Path: "/saleChance", Name: "", Title: "閿�鍞満浼�"},
-
- {ID: 5, ParentId: 0, Path: "", Name: "", Title: "鏈嶅姟绠$悊"},
- {ID: 6, ParentId: 5, Path: "/serviceContract", Name: "", Title: "鏈嶅姟鍚堝悓"},
-
- {ID: 7, ParentId: 0, Path: "", Name: "", Title: "鍚庡彴璁剧疆"},
- {ID: 8, ParentId: 7, Path: "/member", Name: "", Title: "鎴愬憳绠$悊"},
- {ID: 9, ParentId: 7, Path: "/role", Name: "", Title: "瑙掕壊绠$悊"},
- }
- if err = model.NewMenuSearch(nil).CreateBatch(entities); err != nil {
- return ctx, errors.Wrap(err, i.InitializerName()+"琛ㄦ暟鎹垵濮嬪寲澶辫触!")
- }
- next = context.WithValue(ctx, i.InitializerName(), entities)
- logx.Infof("InitializeData success initName:%v", i.InitializerName())
- return next, nil
-}
-
-func (i *initMenu) DataInserted(ctx context.Context) bool {
- _, err := model.NewMenuSearch(nil).SetId(22).First()
- if errors.Is(err, gorm.ErrRecordNotFound) { // 鍒ゆ柇鏄惁瀛樺湪鏁版嵁
- return false
- }
- return true
-}
+//
+//import (
+// "aps_crm/model"
+// "aps_crm/pkg/logx"
+// "aps_crm/service"
+// "context"
+// "github.com/pkg/errors"
+// "gorm.io/gorm"
+//)
+//
+//type initMenu struct{}
+//
+//// auto run
+//func init() {
+// service.RegisterInit(initMenuSequence, &initMenu{})
+//}
+//
+//func (i initMenu) InitializerName() string {
+// return model.Menu{}.TableName()
+//}
+//
+//func (i *initMenu) InitializeData(ctx context.Context) (next context.Context, err error) {
+// entities := []*model.Menu{
+// {ID: 1, ParentId: 0, Path: "", Name: "", Title: "瀹㈡埛绠$悊"},
+// {ID: 2, ParentId: 1, Path: "/client", Name: "", Title: "瀹㈡埛绠$悊"},
+//
+// {ID: 3, ParentId: 0, Path: "", Name: "", Title: "閿�鍞鐞�"},
+// {ID: 4, ParentId: 3, Path: "/saleChance", Name: "", Title: "閿�鍞満浼�"},
+//
+// {ID: 5, ParentId: 0, Path: "", Name: "", Title: "鏈嶅姟绠$悊"},
+// {ID: 6, ParentId: 5, Path: "/serviceContract", Name: "", Title: "鏈嶅姟鍚堝悓"},
+//
+// {ID: 7, ParentId: 0, Path: "", Name: "", Title: "鍚庡彴璁剧疆"},
+// {ID: 8, ParentId: 7, Path: "/member", Name: "", Title: "鎴愬憳绠$悊"},
+// {ID: 9, ParentId: 7, Path: "/role", Name: "", Title: "瑙掕壊绠$悊"},
+// }
+// if err = model.NewMenuSearch(nil).CreateBatch(entities); err != nil {
+// return ctx, errors.Wrap(err, i.InitializerName()+"琛ㄦ暟鎹垵濮嬪寲澶辫触!")
+// }
+// next = context.WithValue(ctx, i.InitializerName(), entities)
+// logx.Infof("InitializeData success initName:%v", i.InitializerName())
+// return next, nil
+//}
+//
+//func (i *initMenu) DataInserted(ctx context.Context) bool {
+// _, err := model.NewMenuSearch(nil).SetId(22).First()
+// if errors.Is(err, gorm.ErrRecordNotFound) { // 鍒ゆ柇鏄惁瀛樺湪鏁版嵁
+// return false
+// }
+// return true
+//}
diff --git a/source/user.go b/source/user.go
index b8e334e..c3c3db8 100644
--- a/source/user.go
+++ b/source/user.go
@@ -1,68 +1,68 @@
package system
-import (
- "aps_crm/constvar"
- "aps_crm/model"
- "aps_crm/pkg/encrypt"
- "aps_crm/pkg/logx"
- "aps_crm/pkg/snowflake"
- "aps_crm/service"
- "context"
- "fmt"
- "github.com/pkg/errors"
- "gorm.io/gorm"
-)
-
-const (
- initMenuSequence = iota + 1
- initUserSequence
-)
-
-type initUser struct{}
-
-// auto run
-func init() {
- service.RegisterInit(initUserSequence, &initUser{})
-}
-
-func (i initUser) InitializerName() string {
- return model.User{}.TableName()
-}
-
-func (i *initUser) InitializeData(ctx context.Context) (next context.Context, err error) {
- adminPassword := encrypt.BcryptHash("123456")
- entities := []*model.User{
- {
- UUID: fmt.Sprintf("u%v", snowflake.GenerateId()),
- Username: "admin",
- Password: adminPassword,
- NickName: "admin",
- UserType: constvar.UserTypeSuper,
- //ParentId: "basic", // 瓒呯骇绠$悊鍛樿处鎴风殑鐖朵翰涓虹┖瀛楃涓诧紝鎴栬�呰捣涓悕瀛�
- //Enable: true,
- },
- }
- if err = model.NewUserSearch(nil).CreateBatch(entities); err != nil {
- return ctx, errors.Wrap(err, model.User{}.TableName()+"琛ㄦ暟鎹垵濮嬪寲澶辫触!")
- }
- next = context.WithValue(ctx, i.InitializerName(), entities)
-
- menuEntities, ok := ctx.Value(initMenu{}.InitializerName()).([]*model.Menu)
- if !ok {
- return next, errors.New("no find menus")
- }
-
- if err = model.NewUserSearch(nil).ReplaceMenu(entities[0], menuEntities); err != nil {
- return next, err
- }
- logx.Infof("InitializeData success initName:%v", i.InitializerName())
- return next, err
-}
-
-func (i *initUser) DataInserted(ctx context.Context) bool {
- _, err := model.NewUserSearch(nil).SetUserName("admin").First()
- if errors.Is(err, gorm.ErrRecordNotFound) { // 鍒ゆ柇鏄惁瀛樺湪鏁版嵁
- return false
- }
- return true
-}
+//import (
+// "aps_crm/constvar"
+// "aps_crm/model"
+// "aps_crm/pkg/encrypt"
+// "aps_crm/pkg/logx"
+// "aps_crm/pkg/snowflake"
+// "aps_crm/service"
+// "context"
+// "fmt"
+// "github.com/pkg/errors"
+// "gorm.io/gorm"
+//)
+//
+//const (
+// initMenuSequence = iota + 1
+// initUserSequence
+//)
+//
+//type initUser struct{}
+//
+//// auto run
+//func init() {
+// service.RegisterInit(initUserSequence, &initUser{})
+//}
+//
+//func (i initUser) InitializerName() string {
+// return model.User{}.TableName()
+//}
+//
+//func (i *initUser) InitializeData(ctx context.Context) (next context.Context, err error) {
+// adminPassword := encrypt.BcryptHash("123456")
+// entities := []*model.User{
+// {
+// UUID: fmt.Sprintf("u%v", snowflake.GenerateId()),
+// Username: "admin",
+// Password: adminPassword,
+// NickName: "admin",
+// UserType: constvar.UserTypeSuper,
+// //ParentId: "basic", // 瓒呯骇绠$悊鍛樿处鎴风殑鐖朵翰涓虹┖瀛楃涓诧紝鎴栬�呰捣涓悕瀛�
+// //Enable: true,
+// },
+// }
+// if err = model.NewUserSearch(nil).CreateBatch(entities); err != nil {
+// return ctx, errors.Wrap(err, model.User{}.TableName()+"琛ㄦ暟鎹垵濮嬪寲澶辫触!")
+// }
+// next = context.WithValue(ctx, i.InitializerName(), entities)
+//
+// menuEntities, ok := ctx.Value(initMenu{}.InitializerName()).([]*model.Menu)
+// if !ok {
+// return next, errors.New("no find menus")
+// }
+//
+// if err = model.NewUserSearch(nil).ReplaceMenu(entities[0], menuEntities); err != nil {
+// return next, err
+// }
+// logx.Infof("InitializeData success initName:%v", i.InitializerName())
+// return next, err
+//}
+//
+//func (i *initUser) DataInserted(ctx context.Context) bool {
+// _, err := model.NewUserSearch(nil).SetUserName("admin").First()
+// if errors.Is(err, gorm.ErrRecordNotFound) { // 鍒ゆ柇鏄惁瀛樺湪鏁版嵁
+// return false
+// }
+// return true
+//}
--
Gitblit v1.8.0