From 5906a2067ff026db4a54817e479222a7e766ae1b Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 02 八月 2023 15:39:04 +0800
Subject: [PATCH] 服务费管理增加查询条件

---
 constvar/const.go                 |   25 +++++
 model/serviceFeeManage.go         |   83 +++++++++++++---
 api/v1/serviceFeeManage.go        |    7 
 model/request/serviceFeeManage.go |    6 +
 docs/swagger.yaml                 |   42 ++++++++
 docs/docs.go                      |   50 ++++++++++
 docs/swagger.json                 |   50 ++++++++++
 service/serviceFeeManage.go       |    9 +
 8 files changed, 249 insertions(+), 23 deletions(-)

diff --git a/api/v1/serviceFeeManage.go b/api/v1/serviceFeeManage.go
index c7b71d5..99f7cad 100644
--- a/api/v1/serviceFeeManage.go
+++ b/api/v1/serviceFeeManage.go
@@ -113,7 +113,6 @@
 	ctx.Ok()
 }
 
-
 // checkServiceFeeManageParams
 func checkServiceFeeManageParams(serviceFeeManage request.ServiceFeeManage) (errCode int, result model.ServiceFeeManage) {
 	//if serviceFeeManage.ClientId == 0 {
@@ -154,14 +153,14 @@
 		return
 	}
 
-	serviceFeeManages, total, errCode := serviceFeeManageService.GetServiceFeeManageList(params.Page, params.PageSize, params.Keyword)
+	serviceFeeManages, total, errCode := serviceFeeManageService.GetServiceFeeManageList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword)
 	if errCode != ecode.OK {
 		ctx.Fail(errCode)
 		return
 	}
 
 	ctx.OkWithDetailed(response.ServiceFeeManageResponse{
-		List: serviceFeeManages,
+		List:  serviceFeeManages,
 		Count: int(total),
 	})
-}
\ No newline at end of file
+}
diff --git a/constvar/const.go b/constvar/const.go
index a99d452..7ce6076 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -102,3 +102,28 @@
 	ServiceFollowupKeywordVisitor            ServiceFollowupKeywordType = "鍥炶浜�"
 	ServiceFollowupKeywordSatisfactionDegree ServiceFollowupKeywordType = "婊℃剰搴�"
 )
+
+type ServiceFeeQueryClass string
+
+const (
+	ServiceFeeQueryClassExpireLessThen60Days ServiceFeeQueryClass = "杩囨湡鏈弧60澶�"
+	ServiceFeeQueryClassExpireLessThen30Days ServiceFeeQueryClass = "杩囨湡鏈弧30澶�"
+	ServiceFeeQueryClassExpireAboutTo60Day   ServiceFeeQueryClass = "鍗冲皢杩囨湡60澶�"
+	ServiceFeeQueryClassExpireAboutTo30Day   ServiceFeeQueryClass = "鍗冲皢杩囨湡30澶�"
+	ServiceFeeQueryClassExpired              ServiceFeeQueryClass = "宸茶繃鏈�"
+	ServiceFeeQueryClassNoService            ServiceFeeQueryClass = "鏃犳湇鍔�"
+)
+
+type ServiceFeeKeywordType string
+
+const (
+	ServiceFeeKeywordCustomerName   ServiceFeeKeywordType = "瀹㈡埛鍚嶇О"
+	ServiceFeeKeywordCustomerType   ServiceFeeKeywordType = "瀹㈡埛绫诲瀷"
+	ServiceFeeKeywordSalesPrincipal ServiceFeeKeywordType = "閿�鍞礋璐d汉"
+	ServiceFeeKeywordCustomerScale  ServiceFeeKeywordType = "瀹㈡埛瑙勬ā"
+	ServiceFeeKeywordClientLevel    ServiceFeeKeywordType = "閲嶈绾у埆"
+	ServiceFeeKeywordCustomerNo     ServiceFeeKeywordType = "瀹㈡埛缂栧彿"
+	ServiceFeeKeywordCustomerStatus ServiceFeeKeywordType = "瀹㈡埛鐘舵��"
+	ServiceFeeKeywordProductName    ServiceFeeKeywordType = "浜у搧鍚嶇О"
+	ServiceFeeKeywordServiceEndDate ServiceFeeKeywordType = "鏈嶅姟鍒版湡鏃�"
+)
diff --git a/docs/docs.go b/docs/docs.go
index 827d7ce..1eb2d39 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -7144,6 +7144,50 @@
                 "ServiceContractQueryClassExpiredBefore60Day"
             ]
         },
+        "constvar.ServiceFeeKeywordType": {
+            "type": "string",
+            "enum": [
+                "瀹㈡埛鍚嶇О",
+                "瀹㈡埛绫诲瀷",
+                "閿�鍞礋璐d汉",
+                "瀹㈡埛瑙勬ā",
+                "閲嶈绾у埆",
+                "瀹㈡埛缂栧彿",
+                "瀹㈡埛鐘舵��",
+                "浜у搧鍚嶇О",
+                "鏈嶅姟鍒版湡鏃�"
+            ],
+            "x-enum-varnames": [
+                "ServiceFeeKeywordCustomerName",
+                "ServiceFeeKeywordCustomerType",
+                "ServiceFeeKeywordSalesPrincipal",
+                "ServiceFeeKeywordCustomerScale",
+                "ServiceFeeKeywordClientLevel",
+                "ServiceFeeKeywordCustomerNo",
+                "ServiceFeeKeywordCustomerStatus",
+                "ServiceFeeKeywordProductName",
+                "ServiceFeeKeywordServiceEndDate"
+            ]
+        },
+        "constvar.ServiceFeeQueryClass": {
+            "type": "string",
+            "enum": [
+                "杩囨湡鏈弧60澶�",
+                "杩囨湡鏈弧30澶�",
+                "鍗冲皢杩囨湡60澶�",
+                "鍗冲皢杩囨湡30澶�",
+                "宸茶繃鏈�",
+                "鏃犳湇鍔�"
+            ],
+            "x-enum-varnames": [
+                "ServiceFeeQueryClassExpireLessThen60Days",
+                "ServiceFeeQueryClassExpireLessThen30Days",
+                "ServiceFeeQueryClassExpireAboutTo60Day",
+                "ServiceFeeQueryClassExpireAboutTo30Day",
+                "ServiceFeeQueryClassExpired",
+                "ServiceFeeQueryClassNoService"
+            ]
+        },
         "constvar.ServiceFollowupKeywordType": {
             "type": "string",
             "enum": [
@@ -10294,6 +10338,9 @@
                 "keyword": {
                     "type": "string"
                 },
+                "keywordType": {
+                    "$ref": "#/definitions/constvar.ServiceFeeKeywordType"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -10301,6 +10348,9 @@
                 "pageSize": {
                     "description": "姣忛〉澶у皬",
                     "type": "integer"
+                },
+                "queryClass": {
+                    "$ref": "#/definitions/constvar.ServiceFeeQueryClass"
                 }
             }
         },
diff --git a/docs/swagger.json b/docs/swagger.json
index dadcc4d..5aee0c6 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -7132,6 +7132,50 @@
                 "ServiceContractQueryClassExpiredBefore60Day"
             ]
         },
+        "constvar.ServiceFeeKeywordType": {
+            "type": "string",
+            "enum": [
+                "瀹㈡埛鍚嶇О",
+                "瀹㈡埛绫诲瀷",
+                "閿�鍞礋璐d汉",
+                "瀹㈡埛瑙勬ā",
+                "閲嶈绾у埆",
+                "瀹㈡埛缂栧彿",
+                "瀹㈡埛鐘舵��",
+                "浜у搧鍚嶇О",
+                "鏈嶅姟鍒版湡鏃�"
+            ],
+            "x-enum-varnames": [
+                "ServiceFeeKeywordCustomerName",
+                "ServiceFeeKeywordCustomerType",
+                "ServiceFeeKeywordSalesPrincipal",
+                "ServiceFeeKeywordCustomerScale",
+                "ServiceFeeKeywordClientLevel",
+                "ServiceFeeKeywordCustomerNo",
+                "ServiceFeeKeywordCustomerStatus",
+                "ServiceFeeKeywordProductName",
+                "ServiceFeeKeywordServiceEndDate"
+            ]
+        },
+        "constvar.ServiceFeeQueryClass": {
+            "type": "string",
+            "enum": [
+                "杩囨湡鏈弧60澶�",
+                "杩囨湡鏈弧30澶�",
+                "鍗冲皢杩囨湡60澶�",
+                "鍗冲皢杩囨湡30澶�",
+                "宸茶繃鏈�",
+                "鏃犳湇鍔�"
+            ],
+            "x-enum-varnames": [
+                "ServiceFeeQueryClassExpireLessThen60Days",
+                "ServiceFeeQueryClassExpireLessThen30Days",
+                "ServiceFeeQueryClassExpireAboutTo60Day",
+                "ServiceFeeQueryClassExpireAboutTo30Day",
+                "ServiceFeeQueryClassExpired",
+                "ServiceFeeQueryClassNoService"
+            ]
+        },
         "constvar.ServiceFollowupKeywordType": {
             "type": "string",
             "enum": [
@@ -10282,6 +10326,9 @@
                 "keyword": {
                     "type": "string"
                 },
+                "keywordType": {
+                    "$ref": "#/definitions/constvar.ServiceFeeKeywordType"
+                },
                 "page": {
                     "description": "椤电爜",
                     "type": "integer"
@@ -10289,6 +10336,9 @@
                 "pageSize": {
                     "description": "姣忛〉澶у皬",
                     "type": "integer"
+                },
+                "queryClass": {
+                    "$ref": "#/definitions/constvar.ServiceFeeQueryClass"
                 }
             }
         },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 606e0a6..d9bb2b2 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -57,6 +57,44 @@
     - ServiceContractQueryClassExpireAfter60Day
     - ServiceContractQueryClassExpiredBefore15Day
     - ServiceContractQueryClassExpiredBefore60Day
+  constvar.ServiceFeeKeywordType:
+    enum:
+    - 瀹㈡埛鍚嶇О
+    - 瀹㈡埛绫诲瀷
+    - 閿�鍞礋璐d汉
+    - 瀹㈡埛瑙勬ā
+    - 閲嶈绾у埆
+    - 瀹㈡埛缂栧彿
+    - 瀹㈡埛鐘舵��
+    - 浜у搧鍚嶇О
+    - 鏈嶅姟鍒版湡鏃�
+    type: string
+    x-enum-varnames:
+    - ServiceFeeKeywordCustomerName
+    - ServiceFeeKeywordCustomerType
+    - ServiceFeeKeywordSalesPrincipal
+    - ServiceFeeKeywordCustomerScale
+    - ServiceFeeKeywordClientLevel
+    - ServiceFeeKeywordCustomerNo
+    - ServiceFeeKeywordCustomerStatus
+    - ServiceFeeKeywordProductName
+    - ServiceFeeKeywordServiceEndDate
+  constvar.ServiceFeeQueryClass:
+    enum:
+    - 杩囨湡鏈弧60澶�
+    - 杩囨湡鏈弧30澶�
+    - 鍗冲皢杩囨湡60澶�
+    - 鍗冲皢杩囨湡30澶�
+    - 宸茶繃鏈�
+    - 鏃犳湇鍔�
+    type: string
+    x-enum-varnames:
+    - ServiceFeeQueryClassExpireLessThen60Days
+    - ServiceFeeQueryClassExpireLessThen30Days
+    - ServiceFeeQueryClassExpireAboutTo60Day
+    - ServiceFeeQueryClassExpireAboutTo30Day
+    - ServiceFeeQueryClassExpired
+    - ServiceFeeQueryClassNoService
   constvar.ServiceFollowupKeywordType:
     enum:
     - 鍥炶鍗曠紪鍙�
@@ -2162,12 +2200,16 @@
     properties:
       keyword:
         type: string
+      keywordType:
+        $ref: '#/definitions/constvar.ServiceFeeKeywordType'
       page:
         description: 椤电爜
         type: integer
       pageSize:
         description: 姣忛〉澶у皬
         type: integer
+      queryClass:
+        $ref: '#/definitions/constvar.ServiceFeeQueryClass'
     type: object
   request.GetServiceFollowupList:
     properties:
diff --git a/model/request/serviceFeeManage.go b/model/request/serviceFeeManage.go
index d5713b5..1615448 100644
--- a/model/request/serviceFeeManage.go
+++ b/model/request/serviceFeeManage.go
@@ -1,5 +1,7 @@
 package request
 
+import "aps_crm/constvar"
+
 type AddServiceFeeManage struct {
 	ServiceFeeManage
 	Client
@@ -20,5 +22,7 @@
 
 type GetServiceFeeManageList struct {
 	PageInfo
-	Keyword string `json:"keyword"`
+	QueryClass  constvar.ServiceFeeQueryClass  `json:"queryClass"`
+	KeywordType constvar.ServiceFeeKeywordType `json:"keywordType"`
+	Keyword     string                         `json:"keyword"`
 }
diff --git a/model/serviceFeeManage.go b/model/serviceFeeManage.go
index 16b6ab4..8ebf843 100644
--- a/model/serviceFeeManage.go
+++ b/model/serviceFeeManage.go
@@ -1,6 +1,7 @@
 package model
 
 import (
+	"aps_crm/constvar"
 	"aps_crm/pkg/mysqlx"
 	"gorm.io/gorm"
 	"time"
@@ -20,13 +21,13 @@
 
 	ServiceFeeManageSearch struct {
 		ServiceFeeManage
-
-				Orm      *gorm.DB
-		Keyword  string
-		OrderBy  string
-		PageNum  int
-		PageSize int
-
+		Orm         *gorm.DB
+		QueryClass  constvar.ServiceFeeQueryClass
+		KeywordType constvar.ServiceFeeKeywordType
+		Keyword     string
+		OrderBy     string
+		PageNum     int
+		PageSize    int
 	}
 )
 
@@ -46,14 +47,54 @@
 
 func (slf *ServiceFeeManageSearch) build() *gorm.DB {
 	var db = slf.Orm.Model(&ServiceFeeManage{})
-	if slf.Keyword != "" {
-		db = db.Where("name LIKE ?", "%"+slf.Keyword+"%")
-	}
 	if slf.Id != 0 {
 		db.Where("id = ?", slf.Id)
 	}
 	if slf.ClientId != 0 {
 		db.Where("client_id = ?", slf.ClientId)
+	}
+	switch slf.QueryClass {
+	case constvar.ServiceFeeQueryClassExpireLessThen60Days:
+		db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 60))
+	case constvar.ServiceFeeQueryClassExpireLessThen30Days:
+		db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 30))
+	case constvar.ServiceFeeQueryClassExpireAboutTo60Day:
+		db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -60))
+	case constvar.ServiceFeeQueryClassExpireAboutTo30Day:
+		db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -30))
+	case constvar.ServiceFeeQueryClassExpired:
+		db = db.Where("latest_date < ?", time.Now())
+	case constvar.ServiceFeeQueryClassNoService:
+		db = db.Where("latest_date < ?", time.Now().AddDate(0, 0, -60))
+
+	}
+
+	switch slf.KeywordType {
+	case constvar.ServiceFeeKeywordCustomerName:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.name = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordCustomerType:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.client_type_id = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordSalesPrincipal:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.member_id = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordCustomerScale:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.enterprise_scale_id = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordClientLevel:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.client_level_id = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordCustomerNo:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.number = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordCustomerStatus:
+		db.Joins("left join clients on clients.id = service_fee_manage.client_id")
+		db = db.Where("clients.client_status_id = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordServiceEndDate:
+		db = db.Where("latest_date = ?", slf.Keyword)
+	case constvar.ServiceFeeKeywordProductName:
+		//todo
 	}
 
 	return db
@@ -76,6 +117,21 @@
 
 func (slf *ServiceFeeManageSearch) SetId(id int) *ServiceFeeManageSearch {
 	slf.Id = id
+	return slf
+}
+
+func (slf *ServiceFeeManageSearch) SetKeywordType(keyword constvar.ServiceFeeKeywordType) *ServiceFeeManageSearch {
+	slf.KeywordType = keyword
+	return slf
+}
+
+func (slf *ServiceFeeManageSearch) SetQueryClass(queryClass constvar.ServiceFeeQueryClass) *ServiceFeeManageSearch {
+	slf.QueryClass = queryClass
+	return slf
+}
+
+func (slf *ServiceFeeManageSearch) SetKeyword(keyword string) *ServiceFeeManageSearch {
+	slf.Keyword = keyword
 	return slf
 }
 
@@ -105,11 +161,6 @@
 	return records, total, err
 }
 
-func (slf *ServiceFeeManageSearch) SetKeyword(keyword string) *ServiceFeeManageSearch {
-	slf.Keyword = keyword
-	return slf
-}
-
 func (slf *ServiceFeeManageSearch) SetPage(page, size int) *ServiceFeeManageSearch {
 	slf.PageNum, slf.PageSize = page, size
 	return slf
@@ -118,4 +169,4 @@
 func (slf *ServiceFeeManageSearch) SetOrder(order string) *ServiceFeeManageSearch {
 	slf.OrderBy = order
 	return slf
-}
\ No newline at end of file
+}
diff --git a/service/serviceFeeManage.go b/service/serviceFeeManage.go
index 5afaf9a..9ce313e 100644
--- a/service/serviceFeeManage.go
+++ b/service/serviceFeeManage.go
@@ -1,6 +1,7 @@
 package service
 
 import (
+	"aps_crm/constvar"
 	"aps_crm/model"
 	"aps_crm/pkg/ecode"
 	"aps_crm/pkg/mysqlx"
@@ -70,9 +71,13 @@
 	return ecode.OK
 }
 
-func (FeeManageService) GetServiceFeeManageList(page, pageSize int, keyword string) ([]*model.ServiceFeeManage, int64, int) {
+func (FeeManageService) GetServiceFeeManageList(page, pageSize int, queryClass constvar.ServiceFeeQueryClass, keywordType constvar.ServiceFeeKeywordType, keyword string) ([]*model.ServiceFeeManage, int64, int) {
 	// get contact list
-	contacts, total, err := model.NewServiceFeeManageSearch(nil).SetKeyword(keyword).SetPage(page, pageSize).FindAll()
+	contacts, total, err := model.NewServiceFeeManageSearch(nil).
+		SetQueryClass(queryClass).
+		SetKeywordType(keywordType).
+		SetKeyword(keyword).
+		SetPage(page, pageSize).FindAll()
 	if err != nil {
 		return nil, 0, ecode.ServiceFeeManageListErr
 	}

--
Gitblit v1.8.0