From 9cd9b44d7727437add866faf74ed7785ecb1d6e8 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期五, 07 七月 2023 15:24:45 +0800
Subject: [PATCH] add

---
 api/v1/index.go                   |    2 
 service/regularCustomers.go       |   59 ++++
 pkg/ecode/code.go                 |    7 
 docs/swagger.yaml                 |  113 ++++++++
 docs/docs.go                      |  181 ++++++++++++
 docs/swagger.json                 |  181 ++++++++++++
 model/response/response.go        |    4 
 model/request/regularCustomers.go |   14 +
 model/RegularCustomers.go         |   86 ++++++
 service/index.go                  |    1 
 router/regularCustomers.go        |   19 +
 model/index.go                    |    1 
 router/index.go                   |    2 
 api/v1/regularCustomers.go        |  112 ++++++++
 14 files changed, 782 insertions(+), 0 deletions(-)

diff --git a/api/v1/index.go b/api/v1/index.go
index d14c159..febef50 100644
--- a/api/v1/index.go
+++ b/api/v1/index.go
@@ -28,6 +28,7 @@
 	SaleChanceApi
 	SaleStageApi
 	SaleTypeApi
+	RegularCustomersApi
 }
 
 var ApiGroup = new(Group)
@@ -55,4 +56,5 @@
 	saleChanceService        = service.ServiceGroup.SaleChanceService
 	saleStageService         = service.ServiceGroup.SaleStageService
 	saleTypeService          = service.ServiceGroup.SaleTypeService
+	regularCustomersService  = service.ServiceGroup.RegularCustomersService
 )
diff --git a/api/v1/regularCustomers.go b/api/v1/regularCustomers.go
new file mode 100644
index 0000000..b2fa48d
--- /dev/null
+++ b/api/v1/regularCustomers.go
@@ -0,0 +1,112 @@
+package v1
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/model/response"
+	"aps_crm/pkg/contextx"
+	"aps_crm/pkg/ecode"
+	"github.com/gin-gonic/gin"
+	"strconv"
+)
+
+type RegularCustomersApi struct{}
+
+// Add
+//
+//	@Tags		RegularCustomers
+//	@Summary	娣诲姞甯稿
+//	@Produce	application/json
+//	@Param		object	body		request.AddRegularCustomers	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/regularCustomers/add [post]
+func (s *RegularCustomersApi) Add(c *gin.Context) {
+	var params request.AddRegularCustomers
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	regularCustomers := new(model.RegularCustomers)
+	regularCustomers.Name = params.Name
+
+	errCode := regularCustomersService.AddRegularCustomers(regularCustomers)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Delete
+//
+//	@Tags		RegularCustomers
+//	@Summary	鍒犻櫎甯稿
+//	@Produce	application/json
+//	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
+//	@Success	200	{object}	contextx.Response{}
+//	@Router		/api/regularCustomers/delete/{id} [delete]
+func (s *RegularCustomersApi) Delete(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	id, _ := strconv.Atoi(c.Param("id"))
+	errCode := regularCustomersService.DeleteRegularCustomers(id)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Update
+//
+//	@Tags		RegularCustomers
+//	@Summary	鏇存柊甯稿
+//	@Produce	application/json
+//	@Param		object	body		request.UpdateRegularCustomersList	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/regularCustomers/update [put]
+func (s *RegularCustomersApi) Update(c *gin.Context) {
+	var params request.UpdateRegularCustomersList
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := regularCustomersService.UpdateRegularCustomers(params.RegularCustomers)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// List
+//
+//	@Tags		RegularCustomers
+//	@Summary	甯稿鍒楄〃
+//	@Produce	application/json
+//	@Success	200	{object}	contextx.Response{data=response.RegularCustomersResponse}
+//	@Router		/api/regularCustomers/list [get]
+func (s *RegularCustomersApi) List(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	regularCustomers, errCode := regularCustomersService.GetRegularCustomersList()
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.OkWithDetailed(response.RegularCustomersResponse{
+		List: regularCustomers,
+	})
+}
diff --git a/docs/docs.go b/docs/docs.go
index f8d51cf..4200359 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -1985,6 +1985,125 @@
                 }
             }
         },
+        "/api/regularCustomers/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "娣诲姞甯稿",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddRegularCustomers"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "鍒犻櫎甯稿",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "甯稿鍒楄〃",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.RegularCustomersResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "鏇存柊甯稿",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateRegularCustomersList"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/saleChance/add": {
             "post": {
                 "produces": [
@@ -3364,6 +3483,17 @@
                 }
             }
         },
+        "model.RegularCustomers": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.SaleChance": {
             "type": "object",
             "properties": {
@@ -3928,6 +4058,17 @@
             }
         },
         "request.AddRegisteredCapital": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddRegularCustomers": {
             "type": "object",
             "required": [
                 "name"
@@ -4896,6 +5037,35 @@
                 }
             }
         },
+        "request.UpdateRegularCustomers": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateRegularCustomersList": {
+            "type": "object",
+            "required": [
+                "regularCustomers"
+            ],
+            "properties": {
+                "regularCustomers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateRegularCustomers"
+                    }
+                }
+            }
+        },
         "request.UpdateSaleChance": {
             "type": "object",
             "required": [
@@ -5319,6 +5489,17 @@
                 }
             }
         },
+        "response.RegularCustomersResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.RegularCustomers"
+                    }
+                }
+            }
+        },
         "response.SaleChanceResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 6e7d691..16de0c0 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -1973,6 +1973,125 @@
                 }
             }
         },
+        "/api/regularCustomers/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "娣诲姞甯稿",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddRegularCustomers"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "鍒犻櫎甯稿",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "甯稿鍒楄〃",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.RegularCustomersResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/regularCustomers/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "RegularCustomers"
+                ],
+                "summary": "鏇存柊甯稿",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateRegularCustomersList"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/saleChance/add": {
             "post": {
                 "produces": [
@@ -3352,6 +3471,17 @@
                 }
             }
         },
+        "model.RegularCustomers": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.SaleChance": {
             "type": "object",
             "properties": {
@@ -3916,6 +4046,17 @@
             }
         },
         "request.AddRegisteredCapital": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddRegularCustomers": {
             "type": "object",
             "required": [
                 "name"
@@ -4884,6 +5025,35 @@
                 }
             }
         },
+        "request.UpdateRegularCustomers": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateRegularCustomersList": {
+            "type": "object",
+            "required": [
+                "regularCustomers"
+            ],
+            "properties": {
+                "regularCustomers": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateRegularCustomers"
+                    }
+                }
+            }
+        },
         "request.UpdateSaleChance": {
             "type": "object",
             "required": [
@@ -5307,6 +5477,17 @@
                 }
             }
         },
+        "response.RegularCustomersResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.RegularCustomers"
+                    }
+                }
+            }
+        },
         "response.SaleChanceResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 030a27f..55dbd57 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -356,6 +356,13 @@
       name:
         type: string
     type: object
+  model.RegularCustomers:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    type: object
   model.SaleChance:
     properties:
       advantages:
@@ -740,6 +747,13 @@
         type: string
     type: object
   request.AddRegisteredCapital:
+    properties:
+      name:
+        type: string
+    required:
+    - name
+    type: object
+  request.AddRegularCustomers:
     properties:
       name:
         type: string
@@ -1406,6 +1420,25 @@
           $ref: '#/definitions/request.UpdateRegisteredCapital'
         type: array
     type: object
+  request.UpdateRegularCustomers:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    required:
+    - id
+    - name
+    type: object
+  request.UpdateRegularCustomersList:
+    properties:
+      regularCustomers:
+        items:
+          $ref: '#/definitions/request.UpdateRegularCustomers'
+        type: array
+    required:
+    - regularCustomers
+    type: object
   request.UpdateSaleChance:
     properties:
       advantages:
@@ -1682,6 +1715,13 @@
       list:
         items:
           $ref: '#/definitions/model.RegisteredCapital'
+        type: array
+    type: object
+  response.RegularCustomersResponse:
+    properties:
+      list:
+        items:
+          $ref: '#/definitions/model.RegularCustomers'
         type: array
     type: object
   response.SaleChanceResponse:
@@ -2933,6 +2973,79 @@
       summary: 鏇存柊娉ㄥ唽璧勬湰
       tags:
       - RegisteredCapital
+  /api/regularCustomers/add:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddRegularCustomers'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 娣诲姞甯稿
+      tags:
+      - RegularCustomers
+  /api/regularCustomers/delete/{id}:
+    delete:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: path
+        name: id
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鍒犻櫎甯稿
+      tags:
+      - RegularCustomers
+  /api/regularCustomers/list:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/contextx.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.RegularCustomersResponse'
+              type: object
+      summary: 甯稿鍒楄〃
+      tags:
+      - RegularCustomers
+  /api/regularCustomers/update:
+    put:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateRegularCustomersList'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鏇存柊甯稿
+      tags:
+      - RegularCustomers
   /api/saleChance/add:
     post:
       parameters:
diff --git a/model/RegularCustomers.go b/model/RegularCustomers.go
new file mode 100644
index 0000000..32b427a
--- /dev/null
+++ b/model/RegularCustomers.go
@@ -0,0 +1,86 @@
+package model
+
+import (
+	"aps_crm/pkg/mysqlx"
+	"gorm.io/gorm"
+)
+
+type (
+	// RegularCustomers 鑰佸鎴�
+	RegularCustomers struct {
+		Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name string `json:"name" gorm:"column:name;type:varchar(255);comment:瀹㈡埛鍚嶇О"`
+	}
+
+	// RegularCustomersSearch 鑰佸鎴锋悳绱㈡潯浠�
+	RegularCustomersSearch struct {
+		RegularCustomers
+		Orm *gorm.DB
+	}
+)
+
+func (RegularCustomers) TableName() string {
+	return "regular_customers"
+}
+
+func NewRegularCustomersSearch() *RegularCustomersSearch {
+	return &RegularCustomersSearch{
+		Orm: mysqlx.GetDB(),
+	}
+}
+
+func (slf *RegularCustomersSearch) build() *gorm.DB {
+	var db = slf.Orm.Model(&RegularCustomers{})
+	if slf.Id != 0 {
+		db = db.Where("id = ?", slf.Id)
+	}
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	return db
+}
+
+func (slf *RegularCustomersSearch) Create(record *RegularCustomers) error {
+	var db = slf.build()
+	return db.Create(record).Error
+}
+
+func (slf *RegularCustomersSearch) Delete() error {
+	var db = slf.build()
+	return db.Delete(&RegularCustomers{}).Error
+}
+
+func (slf *RegularCustomersSearch) Update(record *RegularCustomers) error {
+	var db = slf.build()
+	return db.Updates(record).Error
+}
+
+func (slf *RegularCustomersSearch) Find() (*RegularCustomers, error) {
+	var db = slf.build()
+	var record = &RegularCustomers{}
+	err := db.First(record).Error
+	return record, err
+}
+
+func (slf *RegularCustomersSearch) FindAll() ([]*RegularCustomers, error) {
+	var db = slf.build()
+	var records = make([]*RegularCustomers, 0)
+	err := db.Find(&records).Error
+	return records, err
+}
+
+func (slf *RegularCustomersSearch) SetId(id int) *RegularCustomersSearch {
+	slf.Id = id
+	return slf
+}
+
+func (slf *RegularCustomersSearch) SetName(name string) *RegularCustomersSearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *RegularCustomersSearch) Updates(data map[string]interface{}) error {
+	var db = slf.build()
+	return db.Updates(data).Error
+}
diff --git a/model/index.go b/model/index.go
index b94d2bf..7f7b1bc 100644
--- a/model/index.go
+++ b/model/index.go
@@ -43,6 +43,7 @@
 		SalesSources{},
 		SaleStage{},
 		SaleType{},
+		RegularCustomers{},
 	)
 	return err
 }
diff --git a/model/request/regularCustomers.go b/model/request/regularCustomers.go
new file mode 100644
index 0000000..db6ed8c
--- /dev/null
+++ b/model/request/regularCustomers.go
@@ -0,0 +1,14 @@
+package request
+
+type AddRegularCustomers struct {
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateRegularCustomers struct {
+	Id   int    `json:"id" binding:"required"`
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateRegularCustomersList struct {
+	RegularCustomers []*UpdateRegularCustomers `json:"regularCustomers" binding:"required"`
+}
diff --git a/model/response/response.go b/model/response/response.go
index f1ee34f..d298bb2 100644
--- a/model/response/response.go
+++ b/model/response/response.go
@@ -109,4 +109,8 @@
 	SaleTypeResponse struct {
 		List []*model.SaleType `json:"list"`
 	}
+
+	RegularCustomersResponse struct {
+		List []*model.RegularCustomers `json:"list"`
+	}
 )
diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go
index 519dbc2..4fefc1f 100644
--- a/pkg/ecode/code.go
+++ b/pkg/ecode/code.go
@@ -156,4 +156,11 @@
 	SaleTypeUpdateErr = 2100005 // 鏇存柊閿�鍞被鍨嬪け璐�
 	SaleTypeDeleteErr = 2100006 // 鍒犻櫎閿�鍞被鍨嬪け璐�
 
+	RegularCustomersExist     = 2200001 // 鍥哄畾瀹㈡埛宸插瓨鍦�
+	RegularCustomersNotExist  = 2200002 // 鍥哄畾瀹㈡埛涓嶅瓨鍦�
+	RegularCustomersListErr   = 2200003 // 鑾峰彇鍥哄畾瀹㈡埛鍒楄〃澶辫触
+	RegularCustomersSetErr    = 2200004 // 璁剧疆鍥哄畾瀹㈡埛澶辫触
+	RegularCustomersUpdateErr = 2200005 // 鏇存柊鍥哄畾瀹㈡埛澶辫触
+	RegularCustomersDeleteErr = 2200006 // 鍒犻櫎鍥哄畾瀹㈡埛澶辫触
+
 )
diff --git a/router/index.go b/router/index.go
index 71d997c..8787204 100644
--- a/router/index.go
+++ b/router/index.go
@@ -34,6 +34,7 @@
 	SaleChanceRouter
 	SaleStageRouter
 	SaleTypeRouter
+	RegularCustomersRouter
 }
 
 func InitRouter() *gin.Engine {
@@ -85,6 +86,7 @@
 		routerGroup.InitSaleChanceRouter(PrivateGroup)        // 娉ㄥ唽saleChance璺敱
 		routerGroup.InitSaleStageRouter(PrivateGroup)         // 娉ㄥ唽saleStage璺敱
 		routerGroup.InitSaleTypeRouter(PrivateGroup)          // 娉ㄥ唽saleType璺敱
+		routerGroup.InitRegularCustomersRouter(PrivateGroup)  // 娉ㄥ唽regularCustomers璺敱
 	}
 	return Router
 }
diff --git a/router/regularCustomers.go b/router/regularCustomers.go
new file mode 100644
index 0000000..3fc31a0
--- /dev/null
+++ b/router/regularCustomers.go
@@ -0,0 +1,19 @@
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type RegularCustomersRouter struct{}
+
+func (r *RegularCustomersRouter) InitRegularCustomersRouter(router *gin.RouterGroup) {
+	regularCustomersRouter := router.Group("regularCustomers")
+	regularCustomersApi := v1.ApiGroup.RegularCustomersApi
+	{
+		regularCustomersRouter.POST("add", regularCustomersApi.Add)             // 娣诲姞甯稿
+		regularCustomersRouter.DELETE("delete/:id", regularCustomersApi.Delete) // 鍒犻櫎甯稿
+		regularCustomersRouter.PUT("update", regularCustomersApi.Update)        // 鏇存柊甯稿
+		regularCustomersRouter.GET("list", regularCustomersApi.List)            // 鑾峰彇甯稿鍒楄〃
+	}
+}
diff --git a/service/index.go b/service/index.go
index 4e61453..c5091d2 100644
--- a/service/index.go
+++ b/service/index.go
@@ -23,6 +23,7 @@
 	SaleChanceService
 	SaleStageService
 	SaleTypeService
+	RegularCustomersService
 }
 
 var ServiceGroup = new(Group)
diff --git a/service/regularCustomers.go b/service/regularCustomers.go
new file mode 100644
index 0000000..527e80c
--- /dev/null
+++ b/service/regularCustomers.go
@@ -0,0 +1,59 @@
+package service
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/pkg/ecode"
+)
+
+type RegularCustomersService struct{}
+
+func (RegularCustomersService) AddRegularCustomers(regularCustomers *model.RegularCustomers) int {
+	err := model.NewRegularCustomersSearch().Create(regularCustomers)
+	if err != nil {
+		return ecode.RegularCustomersExist
+	}
+
+	return ecode.OK
+}
+
+func (RegularCustomersService) DeleteRegularCustomers(id int) int {
+	_, err := model.NewRegularCustomersSearch().SetId(id).Find()
+	if err != nil {
+		return ecode.RegularCustomersNotExist
+	}
+
+	err = model.NewRegularCustomersSearch().SetId(id).Delete()
+	if err != nil {
+		return ecode.RegularCustomersNotExist
+	}
+	return ecode.OK
+}
+
+func (RegularCustomersService) GetRegularCustomersList() ([]*model.RegularCustomers, int) {
+	list, err := model.NewRegularCustomersSearch().FindAll()
+	if err != nil {
+		return nil, ecode.RegularCustomersListErr
+	}
+
+	return list, ecode.OK
+}
+
+func (RegularCustomersService) UpdateRegularCustomers(regularCustomers []*request.UpdateRegularCustomers) int {
+	for _, v := range regularCustomers {
+		// check regularCustomers exist
+		_, err := model.NewRegularCustomersSearch().SetId(v.Id).Find()
+		if err != nil {
+			return ecode.RegularCustomersNotExist
+		}
+
+		err = model.NewRegularCustomersSearch().SetId(v.Id).Updates(map[string]interface{}{
+			"name": v.Name,
+		})
+		if err != nil {
+			return ecode.RegularCustomersSetErr
+		}
+	}
+
+	return ecode.OK
+}

--
Gitblit v1.8.0