From b932538cd4d2090ae82c790441002ad44b0da46a Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期五, 21 七月 2023 13:37:02 +0800
Subject: [PATCH] add

---
 model/repository.go                |   85 +
 model/request/salesReturnStatus.go |   15 
 model/request/repository.go        |   15 
 model/salesReturnStatus.go         |   85 +
 service/repository.go              |   69 +
 pkg/ecode/code.go                  |   29 
 service/quotationStatus.go         |   69 +
 docs/swagger.yaml                  |  364 ++++++++
 api/v1/salesReturn.go              |    2 
 service/container_docker.go        |    2 
 model/serviceFollowup.go           |    3 
 model/quotationStatus.go           |   85 +
 service/index.go                   |    3 
 api/v1/salesReturnStatus.go        |  113 ++
 model/request/quotationStatus.go   |   15 
 router/salesReturnStatus.go        |   20 
 router/quotationStatus.go          |   20 
 api/v1/index.go                    |    6 
 model/salesReturn.go               |   18 
 service/dataServer.go              |   15 
 docs/docs.go                       |  574 +++++++++++++
 api/v1/status.go                   |    8 
 docs/swagger.json                  |  574 +++++++++++++
 model/response/response.go         |   24 
 api/v1/repository.go               |  113 ++
 api/v1/quotationStatus.go          |  113 ++
 model/index.go                     |    3 
 router/index.go                    |    6 
 service/salesReturnStatus.go       |   69 +
 router/repository.go               |   20 
 pkg/etcd/client.go                 |    2 
 31 files changed, 2,499 insertions(+), 40 deletions(-)

diff --git a/api/v1/index.go b/api/v1/index.go
index bc2a808..e9b468c 100644
--- a/api/v1/index.go
+++ b/api/v1/index.go
@@ -5,6 +5,9 @@
 )
 
 type Group struct {
+    QuotationStatusApi
+    RepositoryApi
+    SalesReturnStatusApi
     AccountIdApi
     IsInvoiceApi
     RefundMethodApi
@@ -120,4 +123,7 @@
    refundMethodService    = service.ServiceGroup.RefundMethodService
    isInvoiceService    = service.ServiceGroup.IsInvoiceService
    accountIdService    = service.ServiceGroup.AccountIdService
+   salesReturnStatusService    = service.ServiceGroup.SalesReturnStatusService
+   repositoryService    = service.ServiceGroup.RepositoryService
+   quotationStatusService    = service.ServiceGroup.QuotationStatusService
 )
\ No newline at end of file
diff --git a/api/v1/quotationStatus.go b/api/v1/quotationStatus.go
new file mode 100644
index 0000000..8591959
--- /dev/null
+++ b/api/v1/quotationStatus.go
@@ -0,0 +1,113 @@
+
+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 QuotationStatusApi struct{}
+
+// Add
+//
+//	@Tags		QuotationStatus
+//	@Summary	娣诲姞鎶ヤ环鍗曠姸鎬�
+//	@Produce	application/json
+//	@Param		object	body		request.AddQuotationStatus	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/quotationStatus/add [post]
+func (s *QuotationStatusApi) Add(c *gin.Context) {
+	var params request.AddQuotationStatus
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	quotationStatus := new(model.QuotationStatus)
+	quotationStatus.Name = params.Name
+
+	errCode := quotationStatusService.AddQuotationStatus(quotationStatus)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Delete
+//
+//	@Tags		QuotationStatus
+//	@Summary	鍒犻櫎鎶ヤ环鍗曠姸鎬�
+//	@Produce	application/json
+//	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
+//	@Success	200	{object}	contextx.Response{}
+//	@Router		/api/quotationStatus/delete/{id} [delete]
+func (s *QuotationStatusApi) Delete(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	id, _ := strconv.Atoi(c.Param("id"))
+	errCode := quotationStatusService.DeleteQuotationStatus(id)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Update
+//
+//	@Tags		QuotationStatus
+//	@Summary	鏇存柊鎶ヤ环鍗曠姸鎬�
+//	@Produce	application/json
+//	@Param		object	body		request.UpdateQuotationStatuss	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/quotationStatus/update [put]
+func (s *QuotationStatusApi) Update(c *gin.Context) {
+	var params request.UpdateQuotationStatuss
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := quotationStatusService.UpdateQuotationStatus(params.QuotationStatuss)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// List
+//
+//	@Tags		QuotationStatus
+//	@Summary	鑾峰彇鎶ヤ环鍗曠姸鎬佸垪琛�
+//	@Produce	application/json
+//	@Success	200	{object}	contextx.Response{data=response.QuotationStatusResponse}
+//	@Router		/api/quotationStatus/list [get]
+func (s *QuotationStatusApi) List(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	quotationStatuss, errCode := quotationStatusService.GetQuotationStatusList()
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.OkWithDetailed(response.QuotationStatusResponse{
+		List: quotationStatuss,
+	})
+}
diff --git a/api/v1/repository.go b/api/v1/repository.go
new file mode 100644
index 0000000..8b3920a
--- /dev/null
+++ b/api/v1/repository.go
@@ -0,0 +1,113 @@
+
+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 RepositoryApi struct{}
+
+// Add
+//
+//	@Tags		Repository
+//	@Summary	娣诲姞閫�璐т粨搴�
+//	@Produce	application/json
+//	@Param		object	body		request.AddRepository	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/repository/add [post]
+func (s *RepositoryApi) Add(c *gin.Context) {
+	var params request.AddRepository
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	repository := new(model.Repository)
+	repository.Name = params.Name
+
+	errCode := repositoryService.AddRepository(repository)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Delete
+//
+//	@Tags		Repository
+//	@Summary	鍒犻櫎閫�璐т粨搴�
+//	@Produce	application/json
+//	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
+//	@Success	200	{object}	contextx.Response{}
+//	@Router		/api/repository/delete/{id} [delete]
+func (s *RepositoryApi) Delete(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	id, _ := strconv.Atoi(c.Param("id"))
+	errCode := repositoryService.DeleteRepository(id)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Update
+//
+//	@Tags		Repository
+//	@Summary	鏇存柊閫�璐т粨搴�
+//	@Produce	application/json
+//	@Param		object	body		request.UpdateRepositorys	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/repository/update [put]
+func (s *RepositoryApi) Update(c *gin.Context) {
+	var params request.UpdateRepositorys
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := repositoryService.UpdateRepository(params.Repositorys)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// List
+//
+//	@Tags		Repository
+//	@Summary	鑾峰彇閫�璐т粨搴撳垪琛�
+//	@Produce	application/json
+//	@Success	200	{object}	contextx.Response{data=response.RepositoryResponse}
+//	@Router		/api/repository/list [get]
+func (s *RepositoryApi) List(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	repositorys, errCode := repositoryService.GetRepositoryList()
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.OkWithDetailed(response.RepositoryResponse{
+		List: repositorys,
+	})
+}
diff --git a/api/v1/salesReturn.go b/api/v1/salesReturn.go
index a1b0b06..de7e59b 100644
--- a/api/v1/salesReturn.go
+++ b/api/v1/salesReturn.go
@@ -146,7 +146,7 @@
 	s.Number = salesReturn.Number
 	s.Repository = salesReturn.Repository
 	s.MemberId = salesReturn.MemberId
-	s.Status = salesReturn.Status
+	s.SalesReturnStatus = salesReturn.Status
 	s.Reason = salesReturn.Reason
 	s.Products = salesReturn.Products
 
diff --git a/api/v1/salesReturnStatus.go b/api/v1/salesReturnStatus.go
new file mode 100644
index 0000000..d1e102a
--- /dev/null
+++ b/api/v1/salesReturnStatus.go
@@ -0,0 +1,113 @@
+
+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 SalesReturnStatusApi struct{}
+
+// Add
+//
+//	@Tags		SalesReturnStatus
+//	@Summary	娣诲姞閫�璐у崟鐘舵��
+//	@Produce	application/json
+//	@Param		object	body		request.AddSalesReturnStatus	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/salesReturnStatus/add [post]
+func (s *SalesReturnStatusApi) Add(c *gin.Context) {
+	var params request.AddSalesReturnStatus
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	salesReturnStatus := new(model.SalesReturnStatus)
+	salesReturnStatus.Name = params.Name
+
+	errCode := salesReturnStatusService.AddSalesReturnStatus(salesReturnStatus)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Delete
+//
+//	@Tags		SalesReturnStatus
+//	@Summary	鍒犻櫎閫�璐у崟鐘舵��
+//	@Produce	application/json
+//	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
+//	@Success	200	{object}	contextx.Response{}
+//	@Router		/api/salesReturnStatus/delete/{id} [delete]
+func (s *SalesReturnStatusApi) Delete(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	id, _ := strconv.Atoi(c.Param("id"))
+	errCode := salesReturnStatusService.DeleteSalesReturnStatus(id)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Update
+//
+//	@Tags		SalesReturnStatus
+//	@Summary	鏇存柊閫�璐у崟鐘舵��
+//	@Produce	application/json
+//	@Param		object	body		request.UpdateSalesReturnStatuss	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/salesReturnStatus/update [put]
+func (s *SalesReturnStatusApi) Update(c *gin.Context) {
+	var params request.UpdateSalesReturnStatuss
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := salesReturnStatusService.UpdateSalesReturnStatus(params.SalesReturnStatuss)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// List
+//
+//	@Tags		SalesReturnStatus
+//	@Summary	鑾峰彇閫�璐у崟鐘舵�佸垪琛�
+//	@Produce	application/json
+//	@Success	200	{object}	contextx.Response{data=response.SalesReturnStatusResponse}
+//	@Router		/api/salesReturnStatus/list [get]
+func (s *SalesReturnStatusApi) List(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	salesReturnStatuss, errCode := salesReturnStatusService.GetSalesReturnStatusList()
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.OkWithDetailed(response.SalesReturnStatusResponse{
+		List: salesReturnStatuss,
+	})
+}
diff --git a/api/v1/status.go b/api/v1/status.go
index 57729bc..68d86c0 100644
--- a/api/v1/status.go
+++ b/api/v1/status.go
@@ -14,7 +14,7 @@
 
 // Add
 //
-//	@Tags		Status
+//	@Tags		SalesReturnStatus
 //	@Summary	娣诲姞鐘舵��
 //	@Produce	application/json
 //	@Param		object	body		request.AddStatus	true	"鏌ヨ鍙傛暟"
@@ -41,7 +41,7 @@
 
 // Delete
 //
-//	@Tags		Status
+//	@Tags		SalesReturnStatus
 //	@Summary	鍒犻櫎鐘舵��
 //	@Produce	application/json
 //	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
@@ -65,7 +65,7 @@
 
 // Update
 //
-//	@Tags		Status
+//	@Tags		SalesReturnStatus
 //	@Summary	鏇存柊鐘舵��
 //	@Produce	application/json
 //	@Param		object	body		request.UpdateStatusList	true	"鏌ヨ鍙傛暟"
@@ -89,7 +89,7 @@
 
 // List
 //
-//	@Tags		Status
+//	@Tags		SalesReturnStatus
 //	@Summary	鐘舵�佸垪琛�
 //	@Produce	application/json
 //	@Success	200	{object}	contextx.Response{}
diff --git a/docs/docs.go b/docs/docs.go
index e97a5e1..cf08ca0 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -3302,6 +3302,125 @@
                 }
             }
         },
+        "/api/quotationStatus/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "娣诲姞鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddQuotationStatus"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鍒犻櫎鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鑾峰彇鎶ヤ环鍗曠姸鎬佸垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.QuotationStatusResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鏇存柊鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateQuotationStatuss"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/refundMethod/add": {
             "post": {
                 "produces": [
@@ -3911,6 +4030,125 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.UpdateReportSources"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "娣诲姞閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddRepository"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鍒犻櫎閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鑾峰彇閫�璐т粨搴撳垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.RepositoryResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鏇存柊閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateRepositorys"
                         }
                     }
                 ],
@@ -4744,6 +4982,125 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.UpdateSalesReturnRequest"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "娣诲姞閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddSalesReturnStatus"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鍒犻櫎閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鑾峰彇閫�璐у崟鐘舵�佸垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.SalesReturnStatusResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鏇存柊閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateSalesReturnStatuss"
                         }
                     }
                 ],
@@ -5715,7 +6072,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "娣诲姞鐘舵��",
                 "parameters": [
@@ -5745,7 +6102,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鍒犻櫎鐘舵��",
                 "parameters": [
@@ -5773,7 +6130,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鐘舵�佸垪琛�",
                 "responses": {
@@ -5792,7 +6149,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鏇存柊鐘舵��",
                 "parameters": [
@@ -7175,6 +7532,17 @@
                 }
             }
         },
+        "model.QuotationStatus": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.RefundMethod": {
             "type": "object",
             "properties": {
@@ -7220,6 +7588,17 @@
             }
         },
         "model.ReportSource": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "model.Repository": {
             "type": "object",
             "properties": {
                 "id": {
@@ -7569,8 +7948,19 @@
                 "returnDate": {
                     "type": "string"
                 },
-                "status": {
+                "salesReturnStatus": {
                     "type": "integer"
+                }
+            }
+        },
+        "model.SalesReturnStatus": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -8343,6 +8733,17 @@
                 }
             }
         },
+        "request.AddQuotationStatus": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "request.AddRefundMethod": {
             "type": "object",
             "required": [
@@ -8386,6 +8787,17 @@
             }
         },
         "request.AddReportSource": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddRepository": {
             "type": "object",
             "required": [
                 "name"
@@ -8592,6 +9004,17 @@
             "properties": {
                 "salesReturn": {
                     "$ref": "#/definitions/request.SalesReturn"
+                }
+            }
+        },
+        "request.AddSalesReturnStatus": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -10174,6 +10597,35 @@
                 }
             }
         },
+        "request.UpdateQuotationStatus": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateQuotationStatuss": {
+            "type": "object",
+            "required": [
+                "quotation_status"
+            ],
+            "properties": {
+                "quotation_status": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateQuotationStatus"
+                    }
+                }
+            }
+        },
         "request.UpdateRefundMethod": {
             "type": "object",
             "required": [
@@ -10308,6 +10760,35 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/request.UpdateReportSource"
+                    }
+                }
+            }
+        },
+        "request.UpdateRepository": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateRepositorys": {
+            "type": "object",
+            "required": [
+                "repository"
+            ],
+            "properties": {
+                "repository": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateRepository"
                     }
                 }
             }
@@ -10562,6 +11043,35 @@
                 },
                 "salesReturn": {
                     "$ref": "#/definitions/request.SalesReturn"
+                }
+            }
+        },
+        "request.UpdateSalesReturnStatus": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateSalesReturnStatuss": {
+            "type": "object",
+            "required": [
+                "sales_return_status"
+            ],
+            "properties": {
+                "sales_return_status": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateSalesReturnStatus"
+                    }
                 }
             }
         },
@@ -11225,6 +11735,13 @@
                         "$ref": "#/definitions/model.Province"
                     }
                 },
+                "quotationStatus": {
+                    "description": "鎶ヤ环鍗曠姸鎬�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.QuotationStatus"
+                    }
+                },
                 "refundMethod": {
                     "description": "閫�娆炬柟寮�",
                     "type": "array",
@@ -11260,6 +11777,13 @@
                         "$ref": "#/definitions/model.ReportSource"
                     }
                 },
+                "repository": {
+                    "description": "閫�璐т粨搴�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Repository"
+                    }
+                },
                 "sale_stage": {
                     "description": "閿�鍞樁娈�",
                     "type": "array",
@@ -11272,6 +11796,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.SaleType"
+                    }
+                },
+                "salesReturnStatus": {
+                    "description": "閫�璐у崟鐘舵��",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.SalesReturnStatus"
                     }
                 },
                 "sales_source": {
@@ -11501,6 +12032,17 @@
                 }
             }
         },
+        "response.QuotationStatusResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.QuotationStatus"
+                    }
+                }
+            }
+        },
         "response.RefundMethodResponse": {
             "type": "object",
             "properties": {
@@ -11541,6 +12083,17 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.ReportSource"
+                    }
+                }
+            }
+        },
+        "response.RepositoryResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Repository"
                     }
                 }
             }
@@ -11622,6 +12175,17 @@
                 }
             }
         },
+        "response.SalesReturnStatusResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.SalesReturnStatus"
+                    }
+                }
+            }
+        },
         "response.SalesSourceResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 1025e7b..79000a0 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -3290,6 +3290,125 @@
                 }
             }
         },
+        "/api/quotationStatus/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "娣诲姞鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddQuotationStatus"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鍒犻櫎鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鑾峰彇鎶ヤ环鍗曠姸鎬佸垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.QuotationStatusResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/quotationStatus/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "QuotationStatus"
+                ],
+                "summary": "鏇存柊鎶ヤ环鍗曠姸鎬�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateQuotationStatuss"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/refundMethod/add": {
             "post": {
                 "produces": [
@@ -3899,6 +4018,125 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.UpdateReportSources"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "娣诲姞閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddRepository"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鍒犻櫎閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鑾峰彇閫�璐т粨搴撳垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.RepositoryResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/repository/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Repository"
+                ],
+                "summary": "鏇存柊閫�璐т粨搴�",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateRepositorys"
                         }
                     }
                 ],
@@ -4732,6 +4970,125 @@
                         "required": true,
                         "schema": {
                             "$ref": "#/definitions/request.UpdateSalesReturnRequest"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "娣诲姞閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddSalesReturnStatus"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鍒犻櫎閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鑾峰彇閫�璐у崟鐘舵�佸垪琛�",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.SalesReturnStatusResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/salesReturnStatus/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "SalesReturnStatus"
+                ],
+                "summary": "鏇存柊閫�璐у崟鐘舵��",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateSalesReturnStatuss"
                         }
                     }
                 ],
@@ -5703,7 +6060,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "娣诲姞鐘舵��",
                 "parameters": [
@@ -5733,7 +6090,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鍒犻櫎鐘舵��",
                 "parameters": [
@@ -5761,7 +6118,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鐘舵�佸垪琛�",
                 "responses": {
@@ -5780,7 +6137,7 @@
                     "application/json"
                 ],
                 "tags": [
-                    "Status"
+                    "SalesReturnStatus"
                 ],
                 "summary": "鏇存柊鐘舵��",
                 "parameters": [
@@ -7163,6 +7520,17 @@
                 }
             }
         },
+        "model.QuotationStatus": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.RefundMethod": {
             "type": "object",
             "properties": {
@@ -7208,6 +7576,17 @@
             }
         },
         "model.ReportSource": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "model.Repository": {
             "type": "object",
             "properties": {
                 "id": {
@@ -7557,8 +7936,19 @@
                 "returnDate": {
                     "type": "string"
                 },
-                "status": {
+                "salesReturnStatus": {
                     "type": "integer"
+                }
+            }
+        },
+        "model.SalesReturnStatus": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -8331,6 +8721,17 @@
                 }
             }
         },
+        "request.AddQuotationStatus": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "request.AddRefundMethod": {
             "type": "object",
             "required": [
@@ -8374,6 +8775,17 @@
             }
         },
         "request.AddReportSource": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddRepository": {
             "type": "object",
             "required": [
                 "name"
@@ -8580,6 +8992,17 @@
             "properties": {
                 "salesReturn": {
                     "$ref": "#/definitions/request.SalesReturn"
+                }
+            }
+        },
+        "request.AddSalesReturnStatus": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -10162,6 +10585,35 @@
                 }
             }
         },
+        "request.UpdateQuotationStatus": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateQuotationStatuss": {
+            "type": "object",
+            "required": [
+                "quotation_status"
+            ],
+            "properties": {
+                "quotation_status": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateQuotationStatus"
+                    }
+                }
+            }
+        },
         "request.UpdateRefundMethod": {
             "type": "object",
             "required": [
@@ -10296,6 +10748,35 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/request.UpdateReportSource"
+                    }
+                }
+            }
+        },
+        "request.UpdateRepository": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateRepositorys": {
+            "type": "object",
+            "required": [
+                "repository"
+            ],
+            "properties": {
+                "repository": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateRepository"
                     }
                 }
             }
@@ -10550,6 +11031,35 @@
                 },
                 "salesReturn": {
                     "$ref": "#/definitions/request.SalesReturn"
+                }
+            }
+        },
+        "request.UpdateSalesReturnStatus": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateSalesReturnStatuss": {
+            "type": "object",
+            "required": [
+                "sales_return_status"
+            ],
+            "properties": {
+                "sales_return_status": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateSalesReturnStatus"
+                    }
                 }
             }
         },
@@ -11213,6 +11723,13 @@
                         "$ref": "#/definitions/model.Province"
                     }
                 },
+                "quotationStatus": {
+                    "description": "鎶ヤ环鍗曠姸鎬�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.QuotationStatus"
+                    }
+                },
                 "refundMethod": {
                     "description": "閫�娆炬柟寮�",
                     "type": "array",
@@ -11248,6 +11765,13 @@
                         "$ref": "#/definitions/model.ReportSource"
                     }
                 },
+                "repository": {
+                    "description": "閫�璐т粨搴�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Repository"
+                    }
+                },
                 "sale_stage": {
                     "description": "閿�鍞樁娈�",
                     "type": "array",
@@ -11260,6 +11784,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.SaleType"
+                    }
+                },
+                "salesReturnStatus": {
+                    "description": "閫�璐у崟鐘舵��",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.SalesReturnStatus"
                     }
                 },
                 "sales_source": {
@@ -11489,6 +12020,17 @@
                 }
             }
         },
+        "response.QuotationStatusResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.QuotationStatus"
+                    }
+                }
+            }
+        },
         "response.RefundMethodResponse": {
             "type": "object",
             "properties": {
@@ -11529,6 +12071,17 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.ReportSource"
+                    }
+                }
+            }
+        },
+        "response.RepositoryResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Repository"
                     }
                 }
             }
@@ -11610,6 +12163,17 @@
                 }
             }
         },
+        "response.SalesReturnStatusResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.SalesReturnStatus"
+                    }
+                }
+            }
+        },
         "response.SalesSourceResponse": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index b69ef06..099f6ba 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -558,6 +558,13 @@
       validity_date:
         type: string
     type: object
+  model.QuotationStatus:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    type: object
   model.RefundMethod:
     properties:
       id:
@@ -587,6 +594,13 @@
         type: string
     type: object
   model.ReportSource:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    type: object
+  model.Repository:
     properties:
       id:
         type: integer
@@ -817,8 +831,15 @@
         type: string
       returnDate:
         type: string
-      status:
+      salesReturnStatus:
         type: integer
+    type: object
+  model.SalesReturnStatus:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
     type: object
   model.SalesSources:
     properties:
@@ -1334,6 +1355,13 @@
       validity_date:
         type: string
     type: object
+  request.AddQuotationStatus:
+    properties:
+      name:
+        type: string
+    required:
+    - name
+    type: object
   request.AddRefundMethod:
     properties:
       name:
@@ -1362,6 +1390,13 @@
     - name
     type: object
   request.AddReportSource:
+    properties:
+      name:
+        type: string
+    required:
+    - name
+    type: object
+  request.AddRepository:
     properties:
       name:
         type: string
@@ -1500,6 +1535,13 @@
     properties:
       salesReturn:
         $ref: '#/definitions/request.SalesReturn'
+    type: object
+  request.AddSalesReturnStatus:
+    properties:
+      name:
+        type: string
+    required:
+    - name
     type: object
   request.AddSalesSources:
     properties:
@@ -2571,6 +2613,25 @@
       validity_date:
         type: string
     type: object
+  request.UpdateQuotationStatus:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    required:
+    - id
+    - name
+    type: object
+  request.UpdateQuotationStatuss:
+    properties:
+      quotation_status:
+        items:
+          $ref: '#/definitions/request.UpdateQuotationStatus'
+        type: array
+    required:
+    - quotation_status
+    type: object
   request.UpdateRefundMethod:
     properties:
       id:
@@ -2661,6 +2722,25 @@
         type: array
     required:
     - report_source
+    type: object
+  request.UpdateRepository:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    required:
+    - id
+    - name
+    type: object
+  request.UpdateRepositorys:
+    properties:
+      repository:
+        items:
+          $ref: '#/definitions/request.UpdateRepository'
+        type: array
+    required:
+    - repository
     type: object
   request.UpdateSaleChance:
     properties:
@@ -2830,6 +2910,25 @@
         type: integer
       salesReturn:
         $ref: '#/definitions/request.SalesReturn'
+    type: object
+  request.UpdateSalesReturnStatus:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    required:
+    - id
+    - name
+    type: object
+  request.UpdateSalesReturnStatuss:
+    properties:
+      sales_return_status:
+        items:
+          $ref: '#/definitions/request.UpdateSalesReturnStatus'
+        type: array
+    required:
+    - sales_return_status
     type: object
   request.UpdateSalesSources:
     properties:
@@ -3275,6 +3374,11 @@
         items:
           $ref: '#/definitions/model.Province'
         type: array
+      quotationStatus:
+        description: 鎶ヤ环鍗曠姸鎬�
+        items:
+          $ref: '#/definitions/model.QuotationStatus'
+        type: array
       refundMethod:
         description: 閫�娆炬柟寮�
         items:
@@ -3300,6 +3404,11 @@
         items:
           $ref: '#/definitions/model.ReportSource'
         type: array
+      repository:
+        description: 閫�璐т粨搴�
+        items:
+          $ref: '#/definitions/model.Repository'
+        type: array
       sale_stage:
         description: 閿�鍞樁娈�
         items:
@@ -3314,6 +3423,11 @@
         description: 鍟嗘満鏉ユ簮
         items:
           $ref: '#/definitions/model.SalesSources'
+        type: array
+      salesReturnStatus:
+        description: 閫�璐у崟鐘舵��
+        items:
+          $ref: '#/definitions/model.SalesReturnStatus'
         type: array
       satisfaction:
         description: 婊℃剰搴�
@@ -3458,6 +3572,13 @@
           $ref: '#/definitions/model.Quotation'
         type: array
     type: object
+  response.QuotationStatusResponse:
+    properties:
+      list:
+        items:
+          $ref: '#/definitions/model.QuotationStatus'
+        type: array
+    type: object
   response.RefundMethodResponse:
     properties:
       list:
@@ -3484,6 +3605,13 @@
       list:
         items:
           $ref: '#/definitions/model.ReportSource'
+        type: array
+    type: object
+  response.RepositoryResponse:
+    properties:
+      list:
+        items:
+          $ref: '#/definitions/model.Repository'
         type: array
     type: object
   response.SaleChanceResponse:
@@ -3533,6 +3661,13 @@
       list:
         items:
           $ref: '#/definitions/model.SalesReturn'
+        type: array
+    type: object
+  response.SalesReturnStatusResponse:
+    properties:
+      list:
+        items:
+          $ref: '#/definitions/model.SalesReturnStatus'
         type: array
     type: object
   response.SalesSourceResponse:
@@ -5624,6 +5759,79 @@
       summary: 鏇存柊鎶ヤ环鍗�
       tags:
       - Quotation
+  /api/quotationStatus/add:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddQuotationStatus'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 娣诲姞鎶ヤ环鍗曠姸鎬�
+      tags:
+      - QuotationStatus
+  /api/quotationStatus/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:
+      - QuotationStatus
+  /api/quotationStatus/list:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/contextx.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.QuotationStatusResponse'
+              type: object
+      summary: 鑾峰彇鎶ヤ环鍗曠姸鎬佸垪琛�
+      tags:
+      - QuotationStatus
+  /api/quotationStatus/update:
+    put:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateQuotationStatuss'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鏇存柊鎶ヤ环鍗曠姸鎬�
+      tags:
+      - QuotationStatus
   /api/refundMethod/add:
     post:
       parameters:
@@ -6009,6 +6217,79 @@
       summary: 鏇存柊鎶ヨ〃鏉ユ簮
       tags:
       - ReportSource
+  /api/repository/add:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddRepository'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 娣诲姞閫�璐т粨搴�
+      tags:
+      - Repository
+  /api/repository/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:
+      - Repository
+  /api/repository/list:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/contextx.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.RepositoryResponse'
+              type: object
+      summary: 鑾峰彇閫�璐т粨搴撳垪琛�
+      tags:
+      - Repository
+  /api/repository/update:
+    put:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateRepositorys'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鏇存柊閫�璐т粨搴�
+      tags:
+      - Repository
   /api/saleChance/add:
     post:
       parameters:
@@ -6520,6 +6801,79 @@
       summary: 鏇存柊閿�鍞��璐�
       tags:
       - SalesReturn
+  /api/salesReturnStatus/add:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddSalesReturnStatus'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 娣诲姞閫�璐у崟鐘舵��
+      tags:
+      - SalesReturnStatus
+  /api/salesReturnStatus/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:
+      - SalesReturnStatus
+  /api/salesReturnStatus/list:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/contextx.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.SalesReturnStatusResponse'
+              type: object
+      summary: 鑾峰彇閫�璐у崟鐘舵�佸垪琛�
+      tags:
+      - SalesReturnStatus
+  /api/salesReturnStatus/update:
+    put:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateSalesReturnStatuss'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鏇存柊閫�璐у崟鐘舵��
+      tags:
+      - SalesReturnStatus
   /api/salesSources/add:
     post:
       parameters:
@@ -7122,7 +7476,7 @@
             $ref: '#/definitions/contextx.Response'
       summary: 娣诲姞鐘舵��
       tags:
-      - Status
+      - SalesReturnStatus
   /api/status/delete/{id}:
     delete:
       parameters:
@@ -7140,7 +7494,7 @@
             $ref: '#/definitions/contextx.Response'
       summary: 鍒犻櫎鐘舵��
       tags:
-      - Status
+      - SalesReturnStatus
   /api/status/list:
     get:
       produces:
@@ -7152,7 +7506,7 @@
             $ref: '#/definitions/contextx.Response'
       summary: 鐘舵�佸垪琛�
       tags:
-      - Status
+      - SalesReturnStatus
   /api/status/update:
     put:
       parameters:
@@ -7171,7 +7525,7 @@
             $ref: '#/definitions/contextx.Response'
       summary: 鏇存柊鐘舵��
       tags:
-      - Status
+      - SalesReturnStatus
   /api/subOrder/add:
     post:
       parameters:
diff --git a/model/index.go b/model/index.go
index 73726d6..1f5aff7 100644
--- a/model/index.go
+++ b/model/index.go
@@ -75,6 +75,9 @@
         RefundMethod{},
         IsInvoice{},
         AccountId{},
+        SalesReturnStatus{},
+        Repository{},
+        QuotationStatus{},
 	)
 	return err
 }
\ No newline at end of file
diff --git a/model/quotationStatus.go b/model/quotationStatus.go
new file mode 100644
index 0000000..30e4fcc
--- /dev/null
+++ b/model/quotationStatus.go
@@ -0,0 +1,85 @@
+package model
+
+import (
+	"aps_crm/pkg/mysqlx"
+	"gorm.io/gorm"
+)
+
+type (
+	// QuotationStatus 鍟嗘満闃舵
+	QuotationStatus struct {
+		Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鍟嗘満闃舵鍚嶇О"`
+	}
+   
+	QuotationStatusSearch struct {
+		QuotationStatus
+		Orm *gorm.DB
+	}
+)
+
+func (QuotationStatus) TableName() string {
+	return "quotation_status"
+}
+
+func NewQuotationStatusSearch() *QuotationStatusSearch {
+	return &QuotationStatusSearch{
+		Orm: mysqlx.GetDB(),
+	}
+}
+
+func (slf *QuotationStatusSearch) build() *gorm.DB {
+	var db = slf.Orm.Model(&QuotationStatus{})
+	if slf.Id != 0 {
+		db = db.Where("id = ?", slf.Id)
+	}
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	return db
+}
+
+func (slf *QuotationStatusSearch) Create(record *QuotationStatus) error {
+	var db = slf.build()
+	return db.Create(record).Error
+}
+
+func (slf *QuotationStatusSearch) Delete() error {
+	var db = slf.build()
+	return db.Delete(&QuotationStatus{}).Error
+}
+
+func (slf *QuotationStatusSearch) Update(record *QuotationStatus) error {
+	var db = slf.build()
+	return db.Updates(record).Error
+}
+
+func (slf *QuotationStatusSearch) Find() (*QuotationStatus, error) {
+	var db = slf.build()
+	var record = new(QuotationStatus)
+	err := db.First(record).Error
+	return record, err
+}
+
+func (slf *QuotationStatusSearch) FindAll() ([]*QuotationStatus, error) {
+	var db = slf.build()
+	var records = make([]*QuotationStatus, 0)
+	err := db.Find(&records).Error
+	return records, err
+}
+
+func (slf *QuotationStatusSearch) SetId(id int) *QuotationStatusSearch {
+	slf.Id = id
+	return slf
+}
+
+func (slf *QuotationStatusSearch) SetName(name string) *QuotationStatusSearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *QuotationStatusSearch) Updates(data map[string]interface{}) error {
+	var db = slf.build()
+	return db.Updates(data).Error
+}
diff --git a/model/repository.go b/model/repository.go
new file mode 100644
index 0000000..15e079e
--- /dev/null
+++ b/model/repository.go
@@ -0,0 +1,85 @@
+package model
+
+import (
+	"aps_crm/pkg/mysqlx"
+	"gorm.io/gorm"
+)
+
+type (
+	// Repository 鍟嗘満闃舵
+	Repository struct {
+		Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鍟嗘満闃舵鍚嶇О"`
+	}
+   
+	RepositorySearch struct {
+		Repository
+		Orm *gorm.DB
+	}
+)
+
+func (Repository) TableName() string {
+	return "repository"
+}
+
+func NewRepositorySearch() *RepositorySearch {
+	return &RepositorySearch{
+		Orm: mysqlx.GetDB(),
+	}
+}
+
+func (slf *RepositorySearch) build() *gorm.DB {
+	var db = slf.Orm.Model(&Repository{})
+	if slf.Id != 0 {
+		db = db.Where("id = ?", slf.Id)
+	}
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	return db
+}
+
+func (slf *RepositorySearch) Create(record *Repository) error {
+	var db = slf.build()
+	return db.Create(record).Error
+}
+
+func (slf *RepositorySearch) Delete() error {
+	var db = slf.build()
+	return db.Delete(&Repository{}).Error
+}
+
+func (slf *RepositorySearch) Update(record *Repository) error {
+	var db = slf.build()
+	return db.Updates(record).Error
+}
+
+func (slf *RepositorySearch) Find() (*Repository, error) {
+	var db = slf.build()
+	var record = new(Repository)
+	err := db.First(record).Error
+	return record, err
+}
+
+func (slf *RepositorySearch) FindAll() ([]*Repository, error) {
+	var db = slf.build()
+	var records = make([]*Repository, 0)
+	err := db.Find(&records).Error
+	return records, err
+}
+
+func (slf *RepositorySearch) SetId(id int) *RepositorySearch {
+	slf.Id = id
+	return slf
+}
+
+func (slf *RepositorySearch) SetName(name string) *RepositorySearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *RepositorySearch) Updates(data map[string]interface{}) error {
+	var db = slf.build()
+	return db.Updates(data).Error
+}
diff --git a/model/request/quotationStatus.go b/model/request/quotationStatus.go
new file mode 100644
index 0000000..7cf1a2d
--- /dev/null
+++ b/model/request/quotationStatus.go
@@ -0,0 +1,15 @@
+
+package request
+
+type AddQuotationStatus struct {
+	Name string `  json:"name" binding:"required"`
+}
+
+type UpdateQuotationStatus struct {
+	Id   int    `json:"id" binding:"required"`
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateQuotationStatuss struct {
+	QuotationStatuss []*UpdateQuotationStatus `json:"quotation_status" binding:"required"`
+}
diff --git a/model/request/repository.go b/model/request/repository.go
new file mode 100644
index 0000000..3523e5f
--- /dev/null
+++ b/model/request/repository.go
@@ -0,0 +1,15 @@
+
+package request
+
+type AddRepository struct {
+	Name string `  json:"name" binding:"required"`
+}
+
+type UpdateRepository struct {
+	Id   int    `json:"id" binding:"required"`
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateRepositorys struct {
+	Repositorys []*UpdateRepository `json:"repository" binding:"required"`
+}
diff --git a/model/request/salesReturnStatus.go b/model/request/salesReturnStatus.go
new file mode 100644
index 0000000..511f97c
--- /dev/null
+++ b/model/request/salesReturnStatus.go
@@ -0,0 +1,15 @@
+
+package request
+
+type AddSalesReturnStatus struct {
+	Name string `  json:"name" binding:"required"`
+}
+
+type UpdateSalesReturnStatus struct {
+	Id   int    `json:"id" binding:"required"`
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateSalesReturnStatuss struct {
+	SalesReturnStatuss []*UpdateSalesReturnStatus `json:"sales_return_status" binding:"required"`
+}
diff --git a/model/response/response.go b/model/response/response.go
index 7975cd3..751b2b6 100644
--- a/model/response/response.go
+++ b/model/response/response.go
@@ -180,6 +180,18 @@
 
 	DataResponse struct {
 
+		// 鎶ヤ环鍗曠姸鎬�
+		QuotationStatus []*model.QuotationStatus `json:"quotationStatus"`
+
+
+		// 閫�璐т粨搴�
+		Repository []*model.Repository `json:"repository"`
+
+
+		// 閫�璐у崟鐘舵��
+		SalesReturnStatus []*model.SalesReturnStatus `json:"salesReturnStatus"`
+
+
 		// 璐︽埛
 		AccountId []*model.AccountId `json:"accountId"`
 
@@ -302,4 +314,16 @@
 	AccountIdResponse struct {
 		List []*model.AccountId `json:"list"`
 	}
+
+	SalesReturnStatusResponse struct {
+		List []*model.SalesReturnStatus `json:"list"`
+	}
+
+	RepositoryResponse struct {
+		List []*model.Repository `json:"list"`
+	}
+
+	QuotationStatusResponse struct {
+		List []*model.QuotationStatus `json:"list"`
+	}
 )
\ No newline at end of file
diff --git a/model/salesReturn.go b/model/salesReturn.go
index d72c54c..074cbe1 100644
--- a/model/salesReturn.go
+++ b/model/salesReturn.go
@@ -8,15 +8,15 @@
 
 type (
 	SalesReturn struct {
-		Id         int       `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
-		ClientId   int       `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"`
-		Number     string    `json:"number" gorm:"column:number;type:varchar(255);comment:閫�璐у崟鍙�"`
-		Repository string    `json:"repository" gorm:"column:repository;type:varchar(255);comment:浠撳簱"`
-		MemberId   int       `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"`
-		ReturnDate time.Time `json:"returnDate" gorm:"column:return_date;type:datetime;comment:閫�璐ф棩鏈�"`
-		Status     int       `json:"status" gorm:"column:status;type:int;comment:閫�璐х姸鎬�"`
-		Reason     string    `json:"reason" gorm:"column:reason;type:varchar(255);comment:閫�璐у師鍥�"`
-		Products   []Product `json:"products" gorm:"many2many:salesReturn_product;"`
+		Id                int       `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		ClientId          int       `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"`
+		Number            string    `json:"number" gorm:"column:number;type:varchar(255);comment:閫�璐у崟鍙�"`
+		Repository        string    `json:"repository" gorm:"column:repository;type:varchar(255);comment:浠撳簱"`
+		MemberId          int       `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"`
+		ReturnDate        time.Time `json:"returnDate" gorm:"column:return_date;type:datetime;comment:閫�璐ф棩鏈�"`
+		SalesReturnStatus int       `json:"salesReturnStatus" gorm:"column:sales_return_status;type:int;comment:閫�璐х姸鎬�"`
+		Reason            string    `json:"reason" gorm:"column:reason;type:varchar(255);comment:閫�璐у師鍥�"`
+		Products          []Product `json:"products" gorm:"many2many:salesReturn_product;"`
 	}
 
 	SalesReturnSearch struct {
diff --git a/model/salesReturnStatus.go b/model/salesReturnStatus.go
new file mode 100644
index 0000000..8f3d538
--- /dev/null
+++ b/model/salesReturnStatus.go
@@ -0,0 +1,85 @@
+package model
+
+import (
+	"aps_crm/pkg/mysqlx"
+	"gorm.io/gorm"
+)
+
+type (
+	// SalesReturnStatus 鍟嗘満闃舵
+	SalesReturnStatus struct {
+		Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鍟嗘満闃舵鍚嶇О"`
+	}
+   
+	SalesReturnStatusSearch struct {
+		SalesReturnStatus
+		Orm *gorm.DB
+	}
+)
+
+func (SalesReturnStatus) TableName() string {
+	return "sales_return_status"
+}
+
+func NewSalesReturnStatusSearch() *SalesReturnStatusSearch {
+	return &SalesReturnStatusSearch{
+		Orm: mysqlx.GetDB(),
+	}
+}
+
+func (slf *SalesReturnStatusSearch) build() *gorm.DB {
+	var db = slf.Orm.Model(&SalesReturnStatus{})
+	if slf.Id != 0 {
+		db = db.Where("id = ?", slf.Id)
+	}
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	return db
+}
+
+func (slf *SalesReturnStatusSearch) Create(record *SalesReturnStatus) error {
+	var db = slf.build()
+	return db.Create(record).Error
+}
+
+func (slf *SalesReturnStatusSearch) Delete() error {
+	var db = slf.build()
+	return db.Delete(&SalesReturnStatus{}).Error
+}
+
+func (slf *SalesReturnStatusSearch) Update(record *SalesReturnStatus) error {
+	var db = slf.build()
+	return db.Updates(record).Error
+}
+
+func (slf *SalesReturnStatusSearch) Find() (*SalesReturnStatus, error) {
+	var db = slf.build()
+	var record = new(SalesReturnStatus)
+	err := db.First(record).Error
+	return record, err
+}
+
+func (slf *SalesReturnStatusSearch) FindAll() ([]*SalesReturnStatus, error) {
+	var db = slf.build()
+	var records = make([]*SalesReturnStatus, 0)
+	err := db.Find(&records).Error
+	return records, err
+}
+
+func (slf *SalesReturnStatusSearch) SetId(id int) *SalesReturnStatusSearch {
+	slf.Id = id
+	return slf
+}
+
+func (slf *SalesReturnStatusSearch) SetName(name string) *SalesReturnStatusSearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *SalesReturnStatusSearch) Updates(data map[string]interface{}) error {
+	var db = slf.build()
+	return db.Updates(data).Error
+}
diff --git a/model/serviceFollowup.go b/model/serviceFollowup.go
index ca4b9e5..6f8f179 100644
--- a/model/serviceFollowup.go
+++ b/model/serviceFollowup.go
@@ -85,7 +85,4 @@
 	return slf
 }
 
-// 浠樻鏂瑰紡 鏄惁寮�绁� 璐︽埛锛堥攢鍞��娆惧崟锛�
-// 閫�鍏ヤ粨搴� 鐘舵�侊紙閿�鍞��璐у崟锛�
-// 鎶ヤ环鍗曠姸鎬� 锛堟姤浠峰崟锛�
 // 鍙兘鎬� 甯佺 褰撳墠鐘舵�侊紙閿�鍞満浼氾級
diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go
index 9549f13..e224a24 100644
--- a/pkg/ecode/code.go
+++ b/pkg/ecode/code.go
@@ -352,11 +352,28 @@
 	IsInvoiceSetErr    = 5100004 // 璁剧疆鏄惁寮�绁ㄥけ璐�
 	IsInvoiceUpdateErr = 5100005 // 鏇存柊鏄惁寮�绁ㄥけ璐�
 
+	AccountIdExist     = 5200001 // 璐︽埛宸插瓨鍦�
+	AccountIdNotExist  = 5200002 // 璐︽埛涓嶅瓨鍦�
+	AccountIdListErr   = 5200003 // 鑾峰彇璐︽埛鍒楄〃澶辫触
+	AccountIdSetErr    = 5200004 // 璁剧疆璐︽埛澶辫触
+	AccountIdUpdateErr = 5200005 // 鏇存柊璐︽埛澶辫触
 
-	AccountIdExist     = 5000001 // 璐︽埛宸插瓨鍦�
-	AccountIdNotExist  = 5000002 // 璐︽埛涓嶅瓨鍦�
-	AccountIdListErr   = 5000003 // 鑾峰彇璐︽埛鍒楄〃澶辫触
-	AccountIdSetErr    = 5000004 // 璁剧疆璐︽埛澶辫触
-	AccountIdUpdateErr = 5000005 // 鏇存柊璐︽埛澶辫触
+	SalesReturnStatusExist     = 5300001 // 閫�璐у崟鐘舵�佸凡瀛樺湪
+	SalesReturnStatusNotExist  = 5300002 // 閫�璐у崟鐘舵�佷笉瀛樺湪
+	SalesReturnStatusListErr   = 5300003 // 鑾峰彇閫�璐у崟鐘舵�佸垪琛ㄥけ璐�
+	SalesReturnStatusSetErr    = 5300004 // 璁剧疆閫�璐у崟鐘舵�佸け璐�
+	SalesReturnStatusUpdateErr = 5300005 // 鏇存柊閫�璐у崟鐘舵�佸け璐�
 
-)
\ No newline at end of file
+	RepositoryExist     = 5400001 // 閫�璐т粨搴撳凡瀛樺湪
+	RepositoryNotExist  = 5400002 // 閫�璐т粨搴撲笉瀛樺湪
+	RepositoryListErr   = 5400003 // 鑾峰彇閫�璐т粨搴撳垪琛ㄥけ璐�
+	RepositorySetErr    = 5400004 // 璁剧疆閫�璐т粨搴撳け璐�
+	RepositoryUpdateErr = 5400005 // 鏇存柊閫�璐т粨搴撳け璐�
+
+	QuotationStatusExist     = 5500001 // 鎶ヤ环鍗曠姸鎬佸凡瀛樺湪
+	QuotationStatusNotExist  = 5500002 // 鎶ヤ环鍗曠姸鎬佷笉瀛樺湪
+	QuotationStatusListErr   = 5500003 // 鑾峰彇鎶ヤ环鍗曠姸鎬佸垪琛ㄥけ璐�
+	QuotationStatusSetErr    = 5500004 // 璁剧疆鎶ヤ环鍗曠姸鎬佸け璐�
+	QuotationStatusUpdateErr = 5500005 // 鏇存柊鎶ヤ环鍗曠姸鎬佸け璐�
+
+)
diff --git a/pkg/etcd/client.go b/pkg/etcd/client.go
index 855985d..111ede9 100644
--- a/pkg/etcd/client.go
+++ b/pkg/etcd/client.go
@@ -190,6 +190,6 @@
 //		return "", fmt.Errorf("no ETCD pods found")
 //	}
 //
-//	leaderEndpoint := pods.Items[0].Status.PodIP + ":2379"
+//	leaderEndpoint := pods.Items[0].SalesReturnStatus.PodIP + ":2379"
 //	return leaderEndpoint, nil
 //}
diff --git a/router/index.go b/router/index.go
index b03939e..65db83d 100644
--- a/router/index.go
+++ b/router/index.go
@@ -11,6 +11,9 @@
 )
 
 type Group struct {
+    QuotationStatusRouter
+    RepositoryRouter
+    SalesReturnStatusRouter
     AccountIdRouter
     IsInvoiceRouter
     RefundMethodRouter
@@ -149,6 +152,9 @@
         routerGroup.InitRefundMethodRouter(PrivateGroup)
         routerGroup.InitIsInvoiceRouter(PrivateGroup)
         routerGroup.InitAccountIdRouter(PrivateGroup)
+        routerGroup.InitSalesReturnStatusRouter(PrivateGroup)
+        routerGroup.InitRepositoryRouter(PrivateGroup)
+        routerGroup.InitQuotationStatusRouter(PrivateGroup)
 	}
 	return Router
 }
\ No newline at end of file
diff --git a/router/quotationStatus.go b/router/quotationStatus.go
new file mode 100644
index 0000000..3718423
--- /dev/null
+++ b/router/quotationStatus.go
@@ -0,0 +1,20 @@
+
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type QuotationStatusRouter struct{}
+
+func (s *QuotationStatusRouter) InitQuotationStatusRouter(router *gin.RouterGroup) {
+	quotationStatusRouter := router.Group("quotationStatus")
+	quotationStatusApi := v1.ApiGroup.QuotationStatusApi
+	{
+		quotationStatusRouter.POST("add", quotationStatusApi.Add)             // 娣诲姞$CName$
+		quotationStatusRouter.DELETE("delete/:id", quotationStatusApi.Delete) // 鍒犻櫎$CName$
+		quotationStatusRouter.PUT("update", quotationStatusApi.Update)        // 鏇存柊$CName$
+		quotationStatusRouter.GET("list", quotationStatusApi.List)            // 鑾峰彇$CName$鍒楄〃
+	}
+}
\ No newline at end of file
diff --git a/router/repository.go b/router/repository.go
new file mode 100644
index 0000000..2428025
--- /dev/null
+++ b/router/repository.go
@@ -0,0 +1,20 @@
+
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type RepositoryRouter struct{}
+
+func (s *RepositoryRouter) InitRepositoryRouter(router *gin.RouterGroup) {
+	repositoryRouter := router.Group("repository")
+	repositoryApi := v1.ApiGroup.RepositoryApi
+	{
+		repositoryRouter.POST("add", repositoryApi.Add)             // 娣诲姞$CName$
+		repositoryRouter.DELETE("delete/:id", repositoryApi.Delete) // 鍒犻櫎$CName$
+		repositoryRouter.PUT("update", repositoryApi.Update)        // 鏇存柊$CName$
+		repositoryRouter.GET("list", repositoryApi.List)            // 鑾峰彇$CName$鍒楄〃
+	}
+}
\ No newline at end of file
diff --git a/router/salesReturnStatus.go b/router/salesReturnStatus.go
new file mode 100644
index 0000000..92e1e24
--- /dev/null
+++ b/router/salesReturnStatus.go
@@ -0,0 +1,20 @@
+
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type SalesReturnStatusRouter struct{}
+
+func (s *SalesReturnStatusRouter) InitSalesReturnStatusRouter(router *gin.RouterGroup) {
+	salesReturnStatusRouter := router.Group("salesReturnStatus")
+	salesReturnStatusApi := v1.ApiGroup.SalesReturnStatusApi
+	{
+		salesReturnStatusRouter.POST("add", salesReturnStatusApi.Add)             // 娣诲姞$CName$
+		salesReturnStatusRouter.DELETE("delete/:id", salesReturnStatusApi.Delete) // 鍒犻櫎$CName$
+		salesReturnStatusRouter.PUT("update", salesReturnStatusApi.Update)        // 鏇存柊$CName$
+		salesReturnStatusRouter.GET("list", salesReturnStatusApi.List)            // 鑾峰彇$CName$鍒楄〃
+	}
+}
\ No newline at end of file
diff --git a/service/container_docker.go b/service/container_docker.go
index c93cae5..ca0de1b 100644
--- a/service/container_docker.go
+++ b/service/container_docker.go
@@ -55,7 +55,7 @@
 	Name  string `json:"Name"`
 	Image string `json:"Image"`
 	State struct {
-		Status  string `json:"Status"`
+		Status  string `json:"SalesReturnStatus"`
 		Running bool   `json:"Running"`
 	} `json:"State"`
 }
diff --git a/service/dataServer.go b/service/dataServer.go
index 71f3fb5..7cbe924 100644
--- a/service/dataServer.go
+++ b/service/dataServer.go
@@ -131,6 +131,21 @@
 	data.AccountId = accountIdList
 
 
+	// get SalesReturnStatus list
+	salesReturnStatusList, _ := ServiceGroup.GetSalesReturnStatusList()
+	data.SalesReturnStatus = salesReturnStatusList
+
+
+	// get Repository list
+	repositoryList, _ := ServiceGroup.GetRepositoryList()
+	data.Repository = repositoryList
+
+
+	// get QuotationStatus list
+	quotationStatusList, _ := ServiceGroup.GetQuotationStatusList()
+	data.QuotationStatus = quotationStatusList
+
+
 	errCode = ecode.OK
 
 	return
diff --git a/service/index.go b/service/index.go
index 261049d..3110c5e 100644
--- a/service/index.go
+++ b/service/index.go
@@ -56,6 +56,9 @@
     RefundMethodService
     IsInvoiceService
     AccountIdService
+    SalesReturnStatusService
+    RepositoryService
+    QuotationStatusService
 }
 
 var ServiceGroup = new(Group)
\ No newline at end of file
diff --git a/service/quotationStatus.go b/service/quotationStatus.go
new file mode 100644
index 0000000..ea66c88
--- /dev/null
+++ b/service/quotationStatus.go
@@ -0,0 +1,69 @@
+
+package service
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/pkg/ecode"
+)
+
+type QuotationStatusService struct{}
+
+func (QuotationStatusService) AddQuotationStatus(quotationStatus *model.QuotationStatus) int {
+	err := model.NewQuotationStatusSearch().Create(quotationStatus)
+	if err != nil {
+		return ecode.QuotationStatusExist
+	}
+
+	return ecode.OK
+}
+
+func (QuotationStatusService) DeleteQuotationStatus(id int) int {
+	_, err := model.NewQuotationStatusSearch().SetId(id).Find()
+	if err != nil {
+		return ecode.QuotationStatusNotExist
+	}
+
+	err = model.NewQuotationStatusSearch().SetId(id).Delete()
+	if err != nil {
+		return ecode.QuotationStatusNotExist
+	}
+	return ecode.OK
+}
+
+func (QuotationStatusService) GetQuotationStatusList() ([]*model.QuotationStatus, int) {
+	list, err := model.NewQuotationStatusSearch().FindAll()
+	if err != nil {
+		return nil, ecode.QuotationStatusListErr
+	}
+
+	return list, ecode.OK
+}
+
+func (QuotationStatusService) UpdateQuotationStatus(quotationStatuss []*request.UpdateQuotationStatus) int {
+	for _, v := range quotationStatuss {
+		// check quotationStatus exist
+		_, err := model.NewQuotationStatusSearch().SetId(v.Id).Find()
+		if err != nil {
+			return ecode.QuotationStatusNotExist
+		}
+
+		err = model.NewQuotationStatusSearch().SetId(v.Id).Updates(map[string]interface{}{
+			"name": v.Name,
+		})
+		if err != nil {
+			return ecode.QuotationStatusSetErr
+		}
+	}
+
+	return ecode.OK
+}
+
+func (QuotationStatusService) GetQuotationStatusDetail(id int) (*model.QuotationStatus, int) {
+	quotationStatus, err := model.NewQuotationStatusSearch().SetId(id).Find()
+	if err != nil {
+		return nil, ecode.QuotationStatusNotExist
+	}
+
+	return quotationStatus, ecode.OK
+}
diff --git a/service/repository.go b/service/repository.go
new file mode 100644
index 0000000..2d3d63e
--- /dev/null
+++ b/service/repository.go
@@ -0,0 +1,69 @@
+
+package service
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/pkg/ecode"
+)
+
+type RepositoryService struct{}
+
+func (RepositoryService) AddRepository(repository *model.Repository) int {
+	err := model.NewRepositorySearch().Create(repository)
+	if err != nil {
+		return ecode.RepositoryExist
+	}
+
+	return ecode.OK
+}
+
+func (RepositoryService) DeleteRepository(id int) int {
+	_, err := model.NewRepositorySearch().SetId(id).Find()
+	if err != nil {
+		return ecode.RepositoryNotExist
+	}
+
+	err = model.NewRepositorySearch().SetId(id).Delete()
+	if err != nil {
+		return ecode.RepositoryNotExist
+	}
+	return ecode.OK
+}
+
+func (RepositoryService) GetRepositoryList() ([]*model.Repository, int) {
+	list, err := model.NewRepositorySearch().FindAll()
+	if err != nil {
+		return nil, ecode.RepositoryListErr
+	}
+
+	return list, ecode.OK
+}
+
+func (RepositoryService) UpdateRepository(repositorys []*request.UpdateRepository) int {
+	for _, v := range repositorys {
+		// check repository exist
+		_, err := model.NewRepositorySearch().SetId(v.Id).Find()
+		if err != nil {
+			return ecode.RepositoryNotExist
+		}
+
+		err = model.NewRepositorySearch().SetId(v.Id).Updates(map[string]interface{}{
+			"name": v.Name,
+		})
+		if err != nil {
+			return ecode.RepositorySetErr
+		}
+	}
+
+	return ecode.OK
+}
+
+func (RepositoryService) GetRepositoryDetail(id int) (*model.Repository, int) {
+	repository, err := model.NewRepositorySearch().SetId(id).Find()
+	if err != nil {
+		return nil, ecode.RepositoryNotExist
+	}
+
+	return repository, ecode.OK
+}
diff --git a/service/salesReturnStatus.go b/service/salesReturnStatus.go
new file mode 100644
index 0000000..124180f
--- /dev/null
+++ b/service/salesReturnStatus.go
@@ -0,0 +1,69 @@
+
+package service
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/pkg/ecode"
+)
+
+type SalesReturnStatusService struct{}
+
+func (SalesReturnStatusService) AddSalesReturnStatus(salesReturnStatus *model.SalesReturnStatus) int {
+	err := model.NewSalesReturnStatusSearch().Create(salesReturnStatus)
+	if err != nil {
+		return ecode.SalesReturnStatusExist
+	}
+
+	return ecode.OK
+}
+
+func (SalesReturnStatusService) DeleteSalesReturnStatus(id int) int {
+	_, err := model.NewSalesReturnStatusSearch().SetId(id).Find()
+	if err != nil {
+		return ecode.SalesReturnStatusNotExist
+	}
+
+	err = model.NewSalesReturnStatusSearch().SetId(id).Delete()
+	if err != nil {
+		return ecode.SalesReturnStatusNotExist
+	}
+	return ecode.OK
+}
+
+func (SalesReturnStatusService) GetSalesReturnStatusList() ([]*model.SalesReturnStatus, int) {
+	list, err := model.NewSalesReturnStatusSearch().FindAll()
+	if err != nil {
+		return nil, ecode.SalesReturnStatusListErr
+	}
+
+	return list, ecode.OK
+}
+
+func (SalesReturnStatusService) UpdateSalesReturnStatus(salesReturnStatuss []*request.UpdateSalesReturnStatus) int {
+	for _, v := range salesReturnStatuss {
+		// check salesReturnStatus exist
+		_, err := model.NewSalesReturnStatusSearch().SetId(v.Id).Find()
+		if err != nil {
+			return ecode.SalesReturnStatusNotExist
+		}
+
+		err = model.NewSalesReturnStatusSearch().SetId(v.Id).Updates(map[string]interface{}{
+			"name": v.Name,
+		})
+		if err != nil {
+			return ecode.SalesReturnStatusSetErr
+		}
+	}
+
+	return ecode.OK
+}
+
+func (SalesReturnStatusService) GetSalesReturnStatusDetail(id int) (*model.SalesReturnStatus, int) {
+	salesReturnStatus, err := model.NewSalesReturnStatusSearch().SetId(id).Find()
+	if err != nil {
+		return nil, ecode.SalesReturnStatusNotExist
+	}
+
+	return salesReturnStatus, ecode.OK
+}

--
Gitblit v1.8.0