From 2c53a4e2c7ededc1f07324d797430e8d4a0607a1 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 15 八月 2023 20:33:41 +0800
Subject: [PATCH] merge

---
 service/salesDetails.go    |    8 +
 router/serviceOrder.go     |    9 
 service/serviceOrder.go    |    8 +
 router/salesDetails.go     |    9 
 api/v1/serviceOrder.go     |   23 ++
 docs/swagger.yaml          |   60 ++++++-
 docs/docs.go               |   91 +++++++++-
 docs/swagger.json          |   91 +++++++++-
 router/serviceContract.go  |   38 ++--
 model/serviceContract.go   |    6 
 model/serviceOrder.go      |    6 
 api/v1/file.go             |    2 
 model/salesDetails.go      |    6 
 api/v1/serviceContract.go  |   43 ++++-
 model/request/common.go    |    4 
 api/v1/salesDetails.go     |   23 ++
 service/serviceContract.go |    8 +
 17 files changed, 359 insertions(+), 76 deletions(-)

diff --git a/api/v1/file.go b/api/v1/file.go
index 348a72c..bf86288 100644
--- a/api/v1/file.go
+++ b/api/v1/file.go
@@ -188,7 +188,7 @@
 	service.NewFileService().UpdateFile(file)
 
 	data, err := io.ReadAll(f)
-	c.Writer.Header().Set("Content-Type", "application/octect-stream")
+	c.Writer.Header().Set("Content-Type", "application/octet-stream")
 	c.Writer.Header().Set("Content-Disposition", "attachment;filename="+file.Name)
 	c.Writer.Write(data)
 }
diff --git a/api/v1/salesDetails.go b/api/v1/salesDetails.go
index 7a7ab52..a08a5d4 100644
--- a/api/v1/salesDetails.go
+++ b/api/v1/salesDetails.go
@@ -66,6 +66,29 @@
 	ctx.Ok()
 }
 
+// BatchDelete
+// @Tags	SalesDetails 閿�鍞槑缁�
+// @Summary	鎵归噺鍒犻櫎閿�鍞槑缁�
+// @Produce	application/json
+// @Param	object	body request.CommonIds	true "鍙傛暟"
+// @Success	200	{object}	contextx.Response{}
+// @Router		/api/salesDetails/delete [delete]
+func (s *SalesDetailsApi) BatchDelete(c *gin.Context) {
+	var params request.CommonIds
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := salesDetailsService.BatchDeleteSalesDetails(params.Ids)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
 // Update
 //
 //	@Tags		SalesDetails
diff --git a/api/v1/serviceContract.go b/api/v1/serviceContract.go
index 7cf4b9d..012aa4b 100644
--- a/api/v1/serviceContract.go
+++ b/api/v1/serviceContract.go
@@ -42,22 +42,45 @@
 	ctx.Ok()
 }
 
-// Delete
+//// Delete
+////
+////	@Tags		ServiceContract
+////	@Summary	鍒犻櫎鏈嶅姟鍚堝悓
+////	@Produce	application/json
+////	@Param		object	body		request.DeleteServiceContract true	"鏌ヨ鍙傛暟"
+////	@Success	200	{object}	contextx.Response{}
+////	@Router		/api/serviceContract/delete [delete]
+//func (s *ServiceContractApi) Delete(c *gin.Context) {
+//	var params request.DeleteServiceContract
+//	ctx, ok := contextx.NewContext(c, &params)
+//	if !ok {
+//		return
+//	}
 //
-//	@Tags		ServiceContract
-//	@Summary	鍒犻櫎鏈嶅姟鍚堝悓
-//	@Produce	application/json
-//	@Param		object	body		request.DeleteServiceContract true	"鏌ヨ鍙傛暟"
-//	@Success	200	{object}	contextx.Response{}
-//	@Router		/api/serviceContract/delete [delete]
-func (s *ServiceContractApi) Delete(c *gin.Context) {
-	var params request.DeleteServiceContract
+//	errCode := serviceContractService.DeleteServiceContract(params.Ids)
+//	if errCode != ecode.OK {
+//		ctx.Fail(errCode)
+//		return
+//	}
+//
+//	ctx.Ok()
+//}
+
+// BatchDelete
+// @Tags	ServiceContract
+// @Summary	鎵归噺鍒犻櫎鏈嶅姟鍚堝悓
+// @Produce	application/json
+// @Param	object	body request.CommonIds	true "鍙傛暟"
+// @Success	200	{object}	contextx.Response{}
+// @Router		/api/serviceContract/delete [delete]
+func (s *ServiceContractApi) BatchDelete(c *gin.Context) {
+	var params request.CommonIds
 	ctx, ok := contextx.NewContext(c, &params)
 	if !ok {
 		return
 	}
 
-	errCode := serviceContractService.DeleteServiceContract(params.Ids)
+	errCode := serviceContractService.BatchDeleteServiceContract(params.Ids)
 	if errCode != ecode.OK {
 		ctx.Fail(errCode)
 		return
diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go
index f76babe..887979d 100644
--- a/api/v1/serviceOrder.go
+++ b/api/v1/serviceOrder.go
@@ -66,6 +66,29 @@
 	ctx.Ok()
 }
 
+// BatchDelete
+// @Tags		鏈嶅姟鍗�
+// @Summary	鎵归噺鍒犻櫎鏈嶅姟鍗�
+// @Produce	application/json
+// @Param	object	body request.CommonIds	true "鍙傛暟"
+// @Success	200	{object}	contextx.Response{}
+// @Router		/api/serviceOrder/delete [delete]
+func (s *ServiceOrderApi) BatchDelete(c *gin.Context) {
+	var params request.CommonIds
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := service.NewServiceOrderService().BatchDeleteServiceOrder(params.Ids)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
 // Update
 // @Tags		鏈嶅姟鍗曠鐞�
 // @Summary	鏇存柊鏈嶅姟鍗�
diff --git a/docs/docs.go b/docs/docs.go
index 6282947..43895b8 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -6777,6 +6777,36 @@
                 }
             }
         },
+        "/api/salesDetails/delete": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesDetails 閿�鍞槑缁�"
+                ],
+                "summary": "鎵归噺鍒犻櫎閿�鍞槑缁�",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.CommonIds"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/salesDetails/delete/{id}": {
             "delete": {
                 "produces": [
@@ -7824,15 +7854,15 @@
                 "tags": [
                     "ServiceContract"
                 ],
-                "summary": "鍒犻櫎鏈嶅姟鍚堝悓",
+                "summary": "鎵归噺鍒犻櫎鏈嶅姟鍚堝悓",
                 "parameters": [
                     {
-                        "description": "鏌ヨ鍙傛暟",
+                        "description": "鍙傛暟",
                         "name": "object",
                         "in": "body",
                         "required": true,
                         "schema": {
-                            "$ref": "#/definitions/request.DeleteServiceContract"
+                            "$ref": "#/definitions/request.CommonIds"
                         }
                     }
                 ],
@@ -8437,6 +8467,36 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.AddServiceOrder"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/serviceOrder/delete": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鏈嶅姟鍗�"
+                ],
+                "summary": "鎵归噺鍒犻櫎鏈嶅姟鍗�",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.CommonIds"
                         }
                     }
                 ],
@@ -14626,6 +14686,20 @@
                 }
             }
         },
+        "request.CommonIds": {
+            "type": "object",
+            "required": [
+                "ids"
+            ],
+            "properties": {
+                "ids": {
+                    "type": "array",
+                    "items": {
+                        "type": "integer"
+                    }
+                }
+            }
+        },
         "request.Contact": {
             "type": "object",
             "properties": {
@@ -14746,17 +14820,6 @@
             }
         },
         "request.DeleteSalesLeads": {
-            "type": "object",
-            "properties": {
-                "ids": {
-                    "type": "array",
-                    "items": {
-                        "type": "integer"
-                    }
-                }
-            }
-        },
-        "request.DeleteServiceContract": {
             "type": "object",
             "properties": {
                 "ids": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 68d2743..4f1e932 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -6765,6 +6765,36 @@
                 }
             }
         },
+        "/api/salesDetails/delete": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesDetails 閿�鍞槑缁�"
+                ],
+                "summary": "鎵归噺鍒犻櫎閿�鍞槑缁�",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.CommonIds"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/salesDetails/delete/{id}": {
             "delete": {
                 "produces": [
@@ -7812,15 +7842,15 @@
                 "tags": [
                     "ServiceContract"
                 ],
-                "summary": "鍒犻櫎鏈嶅姟鍚堝悓",
+                "summary": "鎵归噺鍒犻櫎鏈嶅姟鍚堝悓",
                 "parameters": [
                     {
-                        "description": "鏌ヨ鍙傛暟",
+                        "description": "鍙傛暟",
                         "name": "object",
                         "in": "body",
                         "required": true,
                         "schema": {
-                            "$ref": "#/definitions/request.DeleteServiceContract"
+                            "$ref": "#/definitions/request.CommonIds"
                         }
                     }
                 ],
@@ -8425,6 +8455,36 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.AddServiceOrder"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/serviceOrder/delete": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "鏈嶅姟鍗�"
+                ],
+                "summary": "鎵归噺鍒犻櫎鏈嶅姟鍗�",
+                "parameters": [
+                    {
+                        "description": "鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.CommonIds"
                         }
                     }
                 ],
@@ -14614,6 +14674,20 @@
                 }
             }
         },
+        "request.CommonIds": {
+            "type": "object",
+            "required": [
+                "ids"
+            ],
+            "properties": {
+                "ids": {
+                    "type": "array",
+                    "items": {
+                        "type": "integer"
+                    }
+                }
+            }
+        },
         "request.Contact": {
             "type": "object",
             "properties": {
@@ -14734,17 +14808,6 @@
             }
         },
         "request.DeleteSalesLeads": {
-            "type": "object",
-            "properties": {
-                "ids": {
-                    "type": "array",
-                    "items": {
-                        "type": "integer"
-                    }
-                }
-            }
-        },
-        "request.DeleteServiceContract": {
             "type": "object",
             "properties": {
                 "ids": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index cafe058..1257ed5 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -3141,6 +3141,15 @@
       name:
         type: string
     type: object
+  request.CommonIds:
+    properties:
+      ids:
+        items:
+          type: integer
+        type: array
+    required:
+    - ids
+    type: object
   request.Contact:
     properties:
       birthday:
@@ -3225,13 +3234,6 @@
         type: array
     type: object
   request.DeleteSalesLeads:
-    properties:
-      ids:
-        items:
-          type: integer
-        type: array
-    type: object
-  request.DeleteServiceContract:
     properties:
       ids:
         items:
@@ -10095,6 +10097,25 @@
       summary: 娣诲姞閿�鍞槑缁�
       tags:
       - SalesDetails
+  /api/salesDetails/delete:
+    delete:
+      parameters:
+      - description: 鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.CommonIds'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鎵归噺鍒犻櫎閿�鍞槑缁�
+      tags:
+      - SalesDetails 閿�鍞槑缁�
   /api/salesDetails/delete/{id}:
     delete:
       parameters:
@@ -10737,12 +10758,12 @@
   /api/serviceContract/delete:
     delete:
       parameters:
-      - description: 鏌ヨ鍙傛暟
+      - description: 鍙傛暟
         in: body
         name: object
         required: true
         schema:
-          $ref: '#/definitions/request.DeleteServiceContract'
+          $ref: '#/definitions/request.CommonIds'
       produces:
       - application/json
       responses:
@@ -10750,7 +10771,7 @@
           description: OK
           schema:
             $ref: '#/definitions/contextx.Response'
-      summary: 鍒犻櫎鏈嶅姟鍚堝悓
+      summary: 鎵归噺鍒犻櫎鏈嶅姟鍚堝悓
       tags:
       - ServiceContract
   /api/serviceContract/list:
@@ -11123,6 +11144,25 @@
       summary: 娣诲姞鏈嶅姟鍗�
       tags:
       - 鏈嶅姟鍗曠鐞�
+  /api/serviceOrder/delete:
+    delete:
+      parameters:
+      - description: 鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.CommonIds'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鎵归噺鍒犻櫎鏈嶅姟鍗�
+      tags:
+      - 鏈嶅姟鍗�
   /api/serviceOrder/delete/{id}:
     delete:
       parameters:
diff --git a/model/request/common.go b/model/request/common.go
index 18cadf5..db64168 100644
--- a/model/request/common.go
+++ b/model/request/common.go
@@ -22,3 +22,7 @@
 	}
 	return true
 }
+
+type CommonIds struct {
+	Ids []int `json:"ids,omitempty" binding:"required"`
+}
diff --git a/model/salesDetails.go b/model/salesDetails.go
index fc3bb80..55a6912 100644
--- a/model/salesDetails.go
+++ b/model/salesDetails.go
@@ -104,6 +104,12 @@
 	return db.Delete(&SalesDetails{}).Error
 }
 
+func (slf *SalesDetailsSearch) DeleteByIds(ids []int) error {
+	var db = slf.build()
+	db = db.Where("id in ?", ids)
+	return db.Delete(&SalesDetails{}).Error
+}
+
 func (slf *SalesDetailsSearch) Update(record *SalesDetails) error {
 	var db = slf.build()
 	return db.Updates(record).Error
diff --git a/model/serviceContract.go b/model/serviceContract.go
index cb75f98..9d253af 100644
--- a/model/serviceContract.go
+++ b/model/serviceContract.go
@@ -143,6 +143,12 @@
 	return db.Delete(&ServiceContract{}).Error
 }
 
+func (slf *ServiceContractSearch) DeleteByIds(ids []int) error {
+	var db = slf.build()
+	db = db.Where("id in ?", ids)
+	return db.Delete(&ServiceContract{}).Error
+}
+
 func (slf *ServiceContractSearch) Find() ([]*ServiceContract, int64, error) {
 	var db = slf.build()
 	var records = make([]*ServiceContract, 0)
diff --git a/model/serviceOrder.go b/model/serviceOrder.go
index 06faa37..eaa6a75 100644
--- a/model/serviceOrder.go
+++ b/model/serviceOrder.go
@@ -136,6 +136,12 @@
 	return db.Delete(&ServiceOrder{}).Error
 }
 
+func (slf *ServiceOrderSearch) DeleteByIds(ids []int) error {
+	var db = slf.build()
+	db = db.Where("id in ?", ids)
+	return db.Delete(&ServiceOrder{}).Error
+}
+
 func (slf *ServiceOrderSearch) Update(record *ServiceOrder) error {
 	var db = slf.build()
 	return db.Updates(record).Error
diff --git a/router/salesDetails.go b/router/salesDetails.go
index 01c4248..16e2db5 100644
--- a/router/salesDetails.go
+++ b/router/salesDetails.go
@@ -11,9 +11,10 @@
 	salesDetailsRouter := router.Group("salesDetails")
 	salesDetailsApi := v1.ApiGroup.SalesDetailsApi
 	{
-		salesDetailsRouter.POST("add", salesDetailsApi.Add)             // 娣诲姞閿�鍞槑缁�
-		salesDetailsRouter.DELETE("delete/:id", salesDetailsApi.Delete) // 鍒犻櫎閿�鍞槑缁�
-		salesDetailsRouter.PUT("update", salesDetailsApi.Update)        // 鏇存柊閿�鍞槑缁�
+		salesDetailsRouter.POST("add", salesDetailsApi.Add)              // 娣诲姞閿�鍞槑缁�
+		salesDetailsRouter.DELETE("delete/:id", salesDetailsApi.Delete)  // 鍒犻櫎閿�鍞槑缁�
+		salesDetailsRouter.DELETE("delete", salesDetailsApi.BatchDelete) // 鎵归噺鍒犻櫎閿�鍞槑缁�
+		salesDetailsRouter.PUT("update", salesDetailsApi.Update)         // 鏇存柊閿�鍞槑缁�
 		salesDetailsRouter.POST("list", salesDetailsApi.List)            // 鑾峰彇閿�鍞槑缁嗗崟鍒楄〃
 	}
-}
\ No newline at end of file
+}
diff --git a/router/serviceContract.go b/router/serviceContract.go
index 9b22b38..d18817c 100644
--- a/router/serviceContract.go
+++ b/router/serviceContract.go
@@ -1,19 +1,19 @@
-package router
-
-import (
-	v1 "aps_crm/api/v1"
-	"github.com/gin-gonic/gin"
-)
-
-type ServiceContractRouter struct{}
-
-func (s *ServiceContractRouter) InitServiceContractRouter(router *gin.RouterGroup) {
-	serviceContractRouter := router.Group("serviceContract")
-	serviceContractApi := v1.ApiGroup.ServiceContractApi
-	{
-		serviceContractRouter.POST("add", serviceContractApi.Add)             // 娣诲姞鏈嶅姟鍚堝悓
-		serviceContractRouter.DELETE("delete", serviceContractApi.Delete)     // 鍒犻櫎鏈嶅姟鍚堝悓
-		serviceContractRouter.PUT("update", serviceContractApi.Update)        // 鏇存柊鏈嶅姟鍚堝悓
-		serviceContractRouter.POST("list", serviceContractApi.List)           // 鑾峰彇鏈嶅姟鍚堝悓鍒楄〃
-	}
-}
\ No newline at end of file
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type ServiceContractRouter struct{}
+
+func (s *ServiceContractRouter) InitServiceContractRouter(router *gin.RouterGroup) {
+	serviceContractRouter := router.Group("serviceContract")
+	serviceContractApi := v1.ApiGroup.ServiceContractApi
+	{
+		serviceContractRouter.POST("add", serviceContractApi.Add)              // 娣诲姞鏈嶅姟鍚堝悓
+		serviceContractRouter.DELETE("delete", serviceContractApi.BatchDelete) // 鍒犻櫎鏈嶅姟鍚堝悓
+		serviceContractRouter.PUT("update", serviceContractApi.Update)         // 鏇存柊鏈嶅姟鍚堝悓
+		serviceContractRouter.POST("list", serviceContractApi.List)            // 鑾峰彇鏈嶅姟鍚堝悓鍒楄〃
+	}
+}
diff --git a/router/serviceOrder.go b/router/serviceOrder.go
index c9db554..887af0e 100644
--- a/router/serviceOrder.go
+++ b/router/serviceOrder.go
@@ -9,9 +9,10 @@
 	ServiceOrderRouter := router.Group("serviceOrder")
 	ServiceOrderApi := v1.ServiceOrderApi{}
 	{
-		ServiceOrderRouter.POST("add", ServiceOrderApi.Add)             // 娣诲姞鏈嶅姟鍗�
-		ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete) // 鍒犻櫎鏈嶅姟鍗�
-		ServiceOrderRouter.PUT("update", ServiceOrderApi.Update)        // 鏇存柊鏈嶅姟鍗�
-		ServiceOrderRouter.POST("list", ServiceOrderApi.List)           // 鑾峰彇鏈嶅姟鍗曞垪琛�
+		ServiceOrderRouter.POST("add", ServiceOrderApi.Add)              // 娣诲姞鏈嶅姟鍗�
+		ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete)  // 鍒犻櫎鏈嶅姟鍗�
+		ServiceOrderRouter.DELETE("delete", ServiceOrderApi.BatchDelete) // 鎵归噺鍒犻櫎鏈嶅姟鍗�
+		ServiceOrderRouter.PUT("update", ServiceOrderApi.Update)         // 鏇存柊鏈嶅姟鍗�
+		ServiceOrderRouter.POST("list", ServiceOrderApi.List)            // 鑾峰彇鏈嶅姟鍗曞垪琛�
 	}
 }
diff --git a/service/salesDetails.go b/service/salesDetails.go
index 81e10b2..fb9b9dd 100644
--- a/service/salesDetails.go
+++ b/service/salesDetails.go
@@ -42,6 +42,14 @@
 	return ecode.OK
 }
 
+func (SalesDetailsService) BatchDeleteSalesDetails(ids []int) int {
+	err := model.NewSalesDetailsSearch().DeleteByIds(ids)
+	if err != nil {
+		return ecode.DBErr
+	}
+	return ecode.OK
+}
+
 func (SalesDetailsService) UpdateSalesDetails(salesDetails *model.SalesDetails) int {
 	// check salesDetails exist
 	old, err := model.NewSalesDetailsSearch().SetId(salesDetails.Id).First()
diff --git a/service/serviceContract.go b/service/serviceContract.go
index 6da4367..93b7b3a 100644
--- a/service/serviceContract.go
+++ b/service/serviceContract.go
@@ -77,6 +77,14 @@
 	return ecode.OK
 }
 
+func (SContractService) BatchDeleteServiceContract(ids []int) int {
+	err := model.NewServiceContractSearch().DeleteByIds(ids)
+	if err != nil {
+		return ecode.DBErr
+	}
+	return ecode.OK
+}
+
 func (SContractService) GetServiceContractList(page, pageSize int, queryClass constvar.ServiceContractQueryClass, keywordType constvar.ServiceContractKeywordType, keyword string) ([]*model.ServiceContract, int64, int) {
 	// get contact list
 	contacts, total, err := model.NewServiceContractSearch().
diff --git a/service/serviceOrder.go b/service/serviceOrder.go
index 8de6e57..298afb2 100644
--- a/service/serviceOrder.go
+++ b/service/serviceOrder.go
@@ -30,6 +30,14 @@
 	return ecode.OK
 }
 
+func (ServiceOrderService) BatchDeleteServiceOrder(ids []int) int {
+	err := model.NewServiceOrderSearch().DeleteByIds(ids)
+	if err != nil {
+		return ecode.DBErr
+	}
+	return ecode.OK
+}
+
 func (ServiceOrderService) GetServiceOrderList(page, pageSize int, queryClass constvar.ServiceOrderQueryClass, keywordType constvar.ServiceOrderKeywordType, keyword string, serviceContractId, salesDetailsId int) ([]*model.ServiceOrder, int64, int) {
 	list, total, err := model.NewServiceOrderSearch().
 		SetPage(page, pageSize).

--
Gitblit v1.8.0