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

---
 api/v1/index.go            |    2 
 service/dataServer.go      |   21 
 model/saleChance.go        |   65 +-
 model/request/currency.go  |   15 
 pkg/ecode/code.go          |    9 
 service/currency.go        |   69 +++
 docs/swagger.yaml          |  154 +++++++-
 docs/docs.go               |  236 +++++++++++-
 docs/swagger.json          |  236 +++++++++++-
 model/response/response.go |   22 
 api/v1/currency.go         |  113 ++++++
 api/v1/saleChance.go       |    3 
 service/index.go           |    1 
 model/index.go             |    1 
 router/index.go            |    2 
 model/currency.go          |   85 ++++
 router/currency.go         |   20 +
 17 files changed, 937 insertions(+), 117 deletions(-)

diff --git a/api/v1/currency.go b/api/v1/currency.go
new file mode 100644
index 0000000..7fa7513
--- /dev/null
+++ b/api/v1/currency.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 CurrencyApi struct{}
+
+// Add
+//
+//	@Tags		Currency
+//	@Summary	娣诲姞甯佺
+//	@Produce	application/json
+//	@Param		object	body		request.AddCurrency	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/currency/add [post]
+func (s *CurrencyApi) Add(c *gin.Context) {
+	var params request.AddCurrency
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	currency := new(model.Currency)
+	currency.Name = params.Name
+
+	errCode := currencyService.AddCurrency(currency)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Delete
+//
+//	@Tags		Currency
+//	@Summary	鍒犻櫎甯佺
+//	@Produce	application/json
+//	@Param		id	path		int	true	"鏌ヨ鍙傛暟"
+//	@Success	200	{object}	contextx.Response{}
+//	@Router		/api/currency/delete/{id} [delete]
+func (s *CurrencyApi) Delete(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	id, _ := strconv.Atoi(c.Param("id"))
+	errCode := currencyService.DeleteCurrency(id)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// Update
+//
+//	@Tags		Currency
+//	@Summary	鏇存柊甯佺
+//	@Produce	application/json
+//	@Param		object	body		request.UpdateCurrencys	true	"鏌ヨ鍙傛暟"
+//	@Success	200		{object}	contextx.Response{}
+//	@Router		/api/currency/update [put]
+func (s *CurrencyApi) Update(c *gin.Context) {
+	var params request.UpdateCurrencys
+	ctx, ok := contextx.NewContext(c, &params)
+	if !ok {
+		return
+	}
+
+	errCode := currencyService.UpdateCurrency(params.Currencys)
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.Ok()
+}
+
+// List
+//
+//	@Tags		Currency
+//	@Summary	鑾峰彇甯佺鍒楄〃
+//	@Produce	application/json
+//	@Success	200	{object}	contextx.Response{data=response.CurrencyResponse}
+//	@Router		/api/currency/list [get]
+func (s *CurrencyApi) List(c *gin.Context) {
+	ctx, ok := contextx.NewContext(c, nil)
+	if !ok {
+		return
+	}
+
+	currencys, errCode := currencyService.GetCurrencyList()
+	if errCode != ecode.OK {
+		ctx.Fail(errCode)
+		return
+	}
+
+	ctx.OkWithDetailed(response.CurrencyResponse{
+		List: currencys,
+	})
+}
diff --git a/api/v1/index.go b/api/v1/index.go
index e9b468c..d7f869b 100644
--- a/api/v1/index.go
+++ b/api/v1/index.go
@@ -5,6 +5,7 @@
 )
 
 type Group struct {
+    CurrencyApi
     QuotationStatusApi
     RepositoryApi
     SalesReturnStatusApi
@@ -126,4 +127,5 @@
    salesReturnStatusService    = service.ServiceGroup.SalesReturnStatusService
    repositoryService    = service.ServiceGroup.RepositoryService
    quotationStatusService    = service.ServiceGroup.QuotationStatusService
+   currencyService    = service.ServiceGroup.CurrencyService
 )
\ No newline at end of file
diff --git a/api/v1/saleChance.go b/api/v1/saleChance.go
index 9b4b26d..35d91b1 100644
--- a/api/v1/saleChance.go
+++ b/api/v1/saleChance.go
@@ -1,7 +1,6 @@
 package v1
 
 import (
-	"aps_crm/constvar"
 	"aps_crm/model"
 	"aps_crm/model/request"
 	"aps_crm/model/response"
@@ -186,7 +185,7 @@
 	sc.PossibilitiesId = saleChance.Possibilities
 	sc.Budget = saleChance.Budget
 	sc.ProjectedAmount = saleChance.ProjectedAmount
-	sc.Currency = constvar.CurrencyType(saleChance.Currency)
+	sc.Currency = saleChance.Currency
 	sc.StatusId = saleChance.StatusId
 	sc.PainPoints = saleChance.PainPoints
 	sc.WhetherEstablished = saleChance.WhetherEstablished
diff --git a/docs/docs.go b/docs/docs.go
index cf08ca0..7f94009 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -1395,6 +1395,125 @@
                 }
             }
         },
+        "/api/currency/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "娣诲姞甯佺",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddCurrency"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鍒犻櫎甯佺",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鑾峰彇甯佺鍒楄〃",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.CurrencyResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鏇存柊甯佺",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateCurrencys"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/customerServiceSheet/add": {
             "post": {
                 "produces": [
@@ -6696,27 +6815,6 @@
         }
     },
     "definitions": {
-        "constvar.CurrencyType": {
-            "type": "integer",
-            "enum": [
-                1,
-                2,
-                3,
-                4
-            ],
-            "x-enum-comments": {
-                "CurrencyTypeCNY": "浜烘皯甯�",
-                "CurrencyTypeEUR": "娆у厓",
-                "CurrencyTypeGBP": "鑻遍晳",
-                "CurrencyTypeUSD": "缇庡厓"
-            },
-            "x-enum-varnames": [
-                "CurrencyTypeCNY",
-                "CurrencyTypeUSD",
-                "CurrencyTypeEUR",
-                "CurrencyTypeGBP"
-            ]
-        },
         "constvar.SalesStatus": {
             "type": "integer",
             "enum": [
@@ -7175,6 +7273,17 @@
                     "items": {
                         "$ref": "#/definitions/model.Province"
                     }
+                }
+            }
+        },
+        "model.Currency": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -7649,7 +7758,7 @@
                     "type": "integer"
                 },
                 "currency": {
-                    "$ref": "#/definitions/constvar.CurrencyType"
+                    "type": "integer"
                 },
                 "detail_address": {
                     "type": "string"
@@ -8154,6 +8263,17 @@
                 }
             }
         },
+        "model.Status": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.SubOrder": {
             "type": "object",
             "properties": {
@@ -8506,6 +8626,17 @@
             "properties": {
                 "name": {
                     "description": "鍥藉鍚嶇О",
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddCurrency": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
                     "type": "string"
                 }
             }
@@ -10202,6 +10333,35 @@
                 }
             }
         },
+        "request.UpdateCurrency": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateCurrencys": {
+            "type": "object",
+            "required": [
+                "currency"
+            ],
+            "properties": {
+                "currency": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateCurrency"
+                    }
+                }
+            }
+        },
         "request.UpdateCustomerServiceSheet": {
             "type": "object",
             "properties": {
@@ -11620,6 +11780,17 @@
                 }
             }
         },
+        "response.CurrencyResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Currency"
+                    }
+                }
+            }
+        },
         "response.DataResponse": {
             "type": "object",
             "properties": {
@@ -11670,6 +11841,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.Country"
+                    }
+                },
+                "currency": {
+                    "description": "甯佺",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Currency"
                     }
                 },
                 "department": {
@@ -11726,6 +11904,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.OrderType"
+                    }
+                },
+                "possibility": {
+                    "description": "鍙兘鎬�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Possibility"
                     }
                 },
                 "province": {
@@ -11840,6 +12025,13 @@
                         "$ref": "#/definitions/model.SolveRate"
                     }
                 },
+                "status": {
+                    "description": "鐘舵��",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Status"
+                    }
+                },
                 "timely_rate": {
                     "description": "鍙婃椂鐜�",
                     "type": "array",
diff --git a/docs/swagger.json b/docs/swagger.json
index 79000a0..695c299 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -1383,6 +1383,125 @@
                 }
             }
         },
+        "/api/currency/add": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "娣诲姞甯佺",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.AddCurrency"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/delete/{id}": {
+            "delete": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鍒犻櫎甯佺",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "id",
+                        "in": "path",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/list": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鑾峰彇甯佺鍒楄〃",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/contextx.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.CurrencyResponse"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        "/api/currency/update": {
+            "put": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "Currency"
+                ],
+                "summary": "鏇存柊甯佺",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.UpdateCurrencys"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/contextx.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/api/customerServiceSheet/add": {
             "post": {
                 "produces": [
@@ -6684,27 +6803,6 @@
         }
     },
     "definitions": {
-        "constvar.CurrencyType": {
-            "type": "integer",
-            "enum": [
-                1,
-                2,
-                3,
-                4
-            ],
-            "x-enum-comments": {
-                "CurrencyTypeCNY": "浜烘皯甯�",
-                "CurrencyTypeEUR": "娆у厓",
-                "CurrencyTypeGBP": "鑻遍晳",
-                "CurrencyTypeUSD": "缇庡厓"
-            },
-            "x-enum-varnames": [
-                "CurrencyTypeCNY",
-                "CurrencyTypeUSD",
-                "CurrencyTypeEUR",
-                "CurrencyTypeGBP"
-            ]
-        },
         "constvar.SalesStatus": {
             "type": "integer",
             "enum": [
@@ -7163,6 +7261,17 @@
                     "items": {
                         "$ref": "#/definitions/model.Province"
                     }
+                }
+            }
+        },
+        "model.Currency": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
                 }
             }
         },
@@ -7637,7 +7746,7 @@
                     "type": "integer"
                 },
                 "currency": {
-                    "$ref": "#/definitions/constvar.CurrencyType"
+                    "type": "integer"
                 },
                 "detail_address": {
                     "type": "string"
@@ -8142,6 +8251,17 @@
                 }
             }
         },
+        "model.Status": {
+            "type": "object",
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
         "model.SubOrder": {
             "type": "object",
             "properties": {
@@ -8494,6 +8614,17 @@
             "properties": {
                 "name": {
                     "description": "鍥藉鍚嶇О",
+                    "type": "string"
+                }
+            }
+        },
+        "request.AddCurrency": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
                     "type": "string"
                 }
             }
@@ -10190,6 +10321,35 @@
                 }
             }
         },
+        "request.UpdateCurrency": {
+            "type": "object",
+            "required": [
+                "id",
+                "name"
+            ],
+            "properties": {
+                "id": {
+                    "type": "integer"
+                },
+                "name": {
+                    "type": "string"
+                }
+            }
+        },
+        "request.UpdateCurrencys": {
+            "type": "object",
+            "required": [
+                "currency"
+            ],
+            "properties": {
+                "currency": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/request.UpdateCurrency"
+                    }
+                }
+            }
+        },
         "request.UpdateCustomerServiceSheet": {
             "type": "object",
             "properties": {
@@ -11608,6 +11768,17 @@
                 }
             }
         },
+        "response.CurrencyResponse": {
+            "type": "object",
+            "properties": {
+                "list": {
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Currency"
+                    }
+                }
+            }
+        },
         "response.DataResponse": {
             "type": "object",
             "properties": {
@@ -11658,6 +11829,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.Country"
+                    }
+                },
+                "currency": {
+                    "description": "甯佺",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Currency"
                     }
                 },
                 "department": {
@@ -11714,6 +11892,13 @@
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/model.OrderType"
+                    }
+                },
+                "possibility": {
+                    "description": "鍙兘鎬�",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Possibility"
                     }
                 },
                 "province": {
@@ -11828,6 +12013,13 @@
                         "$ref": "#/definitions/model.SolveRate"
                     }
                 },
+                "status": {
+                    "description": "鐘舵��",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/model.Status"
+                    }
+                },
                 "timely_rate": {
                     "description": "鍙婃椂鐜�",
                     "type": "array",
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 099f6ba..1520f1c 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1,21 +1,4 @@
 definitions:
-  constvar.CurrencyType:
-    enum:
-    - 1
-    - 2
-    - 3
-    - 4
-    type: integer
-    x-enum-comments:
-      CurrencyTypeCNY: 浜烘皯甯�
-      CurrencyTypeEUR: 娆у厓
-      CurrencyTypeGBP: 鑻遍晳
-      CurrencyTypeUSD: 缇庡厓
-    x-enum-varnames:
-    - CurrencyTypeCNY
-    - CurrencyTypeUSD
-    - CurrencyTypeEUR
-    - CurrencyTypeGBP
   constvar.SalesStatus:
     enum:
     - 1
@@ -327,6 +310,13 @@
           $ref: '#/definitions/model.Province'
         type: array
     type: object
+  model.Currency:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    type: object
   model.CustomerServiceSheet:
     properties:
       handleStatus:
@@ -634,7 +624,7 @@
       country_id:
         type: integer
       currency:
-        $ref: '#/definitions/constvar.CurrencyType'
+        type: integer
       detail_address:
         type: string
       disadvantages:
@@ -965,6 +955,13 @@
       name:
         type: string
     type: object
+  model.Status:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    type: object
   model.SubOrder:
     properties:
       client:
@@ -1210,6 +1207,13 @@
       name:
         description: 鍥藉鍚嶇О
         type: string
+    type: object
+  request.AddCurrency:
+    properties:
+      name:
+        type: string
+    required:
+    - name
     type: object
   request.AddCustomerServiceSheet:
     properties:
@@ -2354,6 +2358,25 @@
         description: 鍥藉鍚嶇О
         type: string
     type: object
+  request.UpdateCurrency:
+    properties:
+      id:
+        type: integer
+      name:
+        type: string
+    required:
+    - id
+    - name
+    type: object
+  request.UpdateCurrencys:
+    properties:
+      currency:
+        items:
+          $ref: '#/definitions/request.UpdateCurrency'
+        type: array
+    required:
+    - currency
+    type: object
   request.UpdateCustomerServiceSheet:
     properties:
       handleStatus:
@@ -3292,6 +3315,13 @@
           $ref: '#/definitions/model.Country'
         type: array
     type: object
+  response.CurrencyResponse:
+    properties:
+      list:
+        items:
+          $ref: '#/definitions/model.Currency'
+        type: array
+    type: object
   response.DataResponse:
     properties:
       accountId:
@@ -3328,6 +3358,11 @@
         description: 鍥藉鏁版嵁
         items:
           $ref: '#/definitions/model.Country'
+        type: array
+      currency:
+        description: 甯佺
+        items:
+          $ref: '#/definitions/model.Currency'
         type: array
       department:
         description: 閮ㄩ棬
@@ -3368,6 +3403,11 @@
         description: 宸ュ崟绫诲瀷
         items:
           $ref: '#/definitions/model.OrderType'
+        type: array
+      possibility:
+        description: 鍙兘鎬�
+        items:
+          $ref: '#/definitions/model.Possibility'
         type: array
       province:
         description: 鐪佷唤鏁版嵁
@@ -3448,6 +3488,11 @@
         description: 瑙e喅鐜�
         items:
           $ref: '#/definitions/model.SolveRate'
+        type: array
+      status:
+        description: 鐘舵��
+        items:
+          $ref: '#/definitions/model.Status'
         type: array
       timely_rate:
         description: 鍙婃椂鐜�
@@ -4590,6 +4635,79 @@
       summary: 鏇存柊鍥藉
       tags:
       - Country
+  /api/currency/add:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.AddCurrency'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 娣诲姞甯佺
+      tags:
+      - Currency
+  /api/currency/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:
+      - Currency
+  /api/currency/list:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            allOf:
+            - $ref: '#/definitions/contextx.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.CurrencyResponse'
+              type: object
+      summary: 鑾峰彇甯佺鍒楄〃
+      tags:
+      - Currency
+  /api/currency/update:
+    put:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.UpdateCurrencys'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/contextx.Response'
+      summary: 鏇存柊甯佺
+      tags:
+      - Currency
   /api/customerServiceSheet/add:
     post:
       parameters:
diff --git a/model/currency.go b/model/currency.go
new file mode 100644
index 0000000..12c96ba
--- /dev/null
+++ b/model/currency.go
@@ -0,0 +1,85 @@
+package model
+
+import (
+	"aps_crm/pkg/mysqlx"
+	"gorm.io/gorm"
+)
+
+type (
+	// Currency 鍟嗘満闃舵
+	Currency struct {
+		Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name string `json:"name" gorm:"column:name;type:varchar(255);comment:鍟嗘満闃舵鍚嶇О"`
+	}
+   
+	CurrencySearch struct {
+		Currency
+		Orm *gorm.DB
+	}
+)
+
+func (Currency) TableName() string {
+	return "currency"
+}
+
+func NewCurrencySearch() *CurrencySearch {
+	return &CurrencySearch{
+		Orm: mysqlx.GetDB(),
+	}
+}
+
+func (slf *CurrencySearch) build() *gorm.DB {
+	var db = slf.Orm.Model(&Currency{})
+	if slf.Id != 0 {
+		db = db.Where("id = ?", slf.Id)
+	}
+	if slf.Name != "" {
+		db = db.Where("name = ?", slf.Name)
+	}
+
+	return db
+}
+
+func (slf *CurrencySearch) Create(record *Currency) error {
+	var db = slf.build()
+	return db.Create(record).Error
+}
+
+func (slf *CurrencySearch) Delete() error {
+	var db = slf.build()
+	return db.Delete(&Currency{}).Error
+}
+
+func (slf *CurrencySearch) Update(record *Currency) error {
+	var db = slf.build()
+	return db.Updates(record).Error
+}
+
+func (slf *CurrencySearch) Find() (*Currency, error) {
+	var db = slf.build()
+	var record = new(Currency)
+	err := db.First(record).Error
+	return record, err
+}
+
+func (slf *CurrencySearch) FindAll() ([]*Currency, error) {
+	var db = slf.build()
+	var records = make([]*Currency, 0)
+	err := db.Find(&records).Error
+	return records, err
+}
+
+func (slf *CurrencySearch) SetId(id int) *CurrencySearch {
+	slf.Id = id
+	return slf
+}
+
+func (slf *CurrencySearch) SetName(name string) *CurrencySearch {
+	slf.Name = name
+	return slf
+}
+
+func (slf *CurrencySearch) Updates(data map[string]interface{}) error {
+	var db = slf.build()
+	return db.Updates(data).Error
+}
diff --git a/model/index.go b/model/index.go
index 1f5aff7..7a0f17c 100644
--- a/model/index.go
+++ b/model/index.go
@@ -78,6 +78,7 @@
         SalesReturnStatus{},
         Repository{},
         QuotationStatus{},
+        Currency{},
 	)
 	return err
 }
\ No newline at end of file
diff --git a/model/request/currency.go b/model/request/currency.go
new file mode 100644
index 0000000..94d615a
--- /dev/null
+++ b/model/request/currency.go
@@ -0,0 +1,15 @@
+
+package request
+
+type AddCurrency struct {
+	Name string `  json:"name" binding:"required"`
+}
+
+type UpdateCurrency struct {
+	Id   int    `json:"id" binding:"required"`
+	Name string `json:"name" binding:"required"`
+}
+
+type UpdateCurrencys struct {
+	Currencys []*UpdateCurrency `json:"currency" binding:"required"`
+}
diff --git a/model/response/response.go b/model/response/response.go
index 751b2b6..04ea37d 100644
--- a/model/response/response.go
+++ b/model/response/response.go
@@ -180,45 +180,39 @@
 
 	DataResponse struct {
 
+		// 甯佺
+		Currency []*model.Currency `json:"currency"`
+
+
 		// 鎶ヤ环鍗曠姸鎬�
 		QuotationStatus []*model.QuotationStatus `json:"quotationStatus"`
-
 
 		// 閫�璐т粨搴�
 		Repository []*model.Repository `json:"repository"`
 
-
 		// 閫�璐у崟鐘舵��
 		SalesReturnStatus []*model.SalesReturnStatus `json:"salesReturnStatus"`
-
 
 		// 璐︽埛
 		AccountId []*model.AccountId `json:"accountId"`
 
-
 		// 鏄惁寮�绁�
 		IsInvoice []*model.IsInvoice `json:"isInvoice"`
-
 
 		// 閫�娆炬柟寮�
 		RefundMethod []*model.RefundMethod `json:"refundMethod"`
 
-
 		// 鏈嶅姟鍚堝悓绫诲瀷
 		ServiceContractType []*model.ServiceContractType `json:"serviceContractType"`
-
 
 		// 鏈嶅姟鍚堝悓鐘舵��
 		ServiceContractStatus []*model.ServiceContractStatus `json:"serviceContractStatus"`
 
-
 		// 宸ュ崟绫诲瀷
 		OrderType []*model.OrderType `json:"orderType"`
 
-
 		// 鎶ヨ〃鏉ユ簮
 		ReportSource []*model.ReportSource `json:"reportSource"`
-
 
 		// 鏈嶅姟浜哄憳鏄惁鏉ヨ繃
 		IsVisit []*model.IsVisit `json:"isVisit"`
@@ -265,6 +259,10 @@
 		TimelyRate []*model.TimelyRate `json:"timely_rate"`
 		// 瑙e喅鐜�
 		SolveRate []*model.SolveRate `json:"solve_rate"`
+		// 鍙兘鎬�
+		Possibility []*model.Possibility `json:"possibility"`
+		// 鐘舵��
+		Status []*model.Status `json:"status"`
 	}
 
 	DepartmentResponse struct {
@@ -326,4 +324,8 @@
 	QuotationStatusResponse struct {
 		List []*model.QuotationStatus `json:"list"`
 	}
+
+	CurrencyResponse struct {
+		List []*model.Currency `json:"list"`
+	}
 )
\ No newline at end of file
diff --git a/model/saleChance.go b/model/saleChance.go
index 1f88811..fdfb54b 100644
--- a/model/saleChance.go
+++ b/model/saleChance.go
@@ -1,7 +1,6 @@
 package model
 
 import (
-	"aps_crm/constvar"
 	"aps_crm/pkg/mysqlx"
 	"gorm.io/gorm"
 	"time"
@@ -9,38 +8,38 @@
 
 type (
 	SaleChance struct {
-		Id                 int                   `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
-		Name               string                `json:"name" gorm:"column:name;type:varchar(255);comment:鍏徃鍚嶇О"`
-		Number             string                `json:"number" gorm:"column:number;type:varchar(255);comment:閿�鍞嚎绱㈢紪鍙�"`
-		ContactId          int                   `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:鑱旂郴浜篒D"`
-		ClientId           int                   `json:"client_id" gorm:"column:client_id;type:int(11);comment:瀹㈡埛ID"`
-		SalesSourcesId     int                   `json:"sales_sources_id" gorm:"column:sales_sources_id;type:int(11);comment:鍟嗘満鏉ユ簮ID"`
-		SaleTypeId         int                   `json:"sale_type_id" gorm:"column:sale_type_id;type:int(11);comment:鍟嗘満绫诲瀷ID"`
-		SaleStageId        int                   `json:"sale_stage_id" gorm:"column:sale_stage_id;type:int(11);comment:鍟嗘満闃舵ID"`
-		MemberId           int                   `json:"member_id" gorm:"column:member_id;type:int(11);comment:閿�鍞礋璐d汉ID"`
-		RegularCustomersId int                   `json:"regular_customers_id" gorm:"column:regular_customers_id;type:int(11);comment:甯稿ID"`
-		Competitors        string                `json:"competitors" gorm:"column:competitors;type:varchar(255);comment:绔炰簤瀵规墜"`
-		PossibilitiesId    int                   `json:"possibilities_id" gorm:"column:possibilities_id;type:int(11);comment:鍙兘鎬D"`
-		Budget             float64               `json:"budget" gorm:"column:budget;type:decimal(10,2);comment:棰勭畻"`
-		ProjectedAmount    float64               `json:"projected_amount" gorm:"column:projected_amount;type:decimal(10,2);comment:棰勮閲戦"`
-		Currency           constvar.CurrencyType `json:"currency" gorm:"column:currency;type:int(11);comment:璐у竵绫诲瀷"`
-		ExpectedTime       time.Time             `json:"expected_time" gorm:"column:expected_time;type:datetime;comment:棰勮鎴愪氦鏃堕棿"`
-		StatusId           int                   `json:"status_id" gorm:"column:status_id;type:int(11);comment:鐘舵�両D"`
-		PainPoints         string                `json:"pain_points" gorm:"column:pain_points;type:text;comment:鐥涚偣"`
-		WhetherEstablished string                `json:"whether_established" gorm:"column:whether_established;type:text;comment:鏄惁鎴愮珛"`
-		CapitalBudget      string                `json:"capital_budget" gorm:"column:capital_budget;type:text;comment:璧勯噾棰勭畻"`
-		KeyMaker           string                `json:"key_maker" gorm:"column:key_maker;type:text;comment:鍏抽敭浜�"`
-		KeyFactors         string                `json:"key_factors" gorm:"column:key_factors;type:text;comment:鍏抽敭鍥犵礌"`
-		Process            string                `json:"process" gorm:"column:process;type:text;comment:鍐崇瓥娴佺▼"`
-		Solutions          string                `json:"solutions" gorm:"column:solutions;type:text;comment:绔炰簤瀵规墜瑙e喅鏂规"`
-		Advantages         string                `json:"advantages" gorm:"column:advantages;type:text;comment:绔炰簤浼樺娍"`
-		Disadvantages      string                `json:"disadvantages" gorm:"column:disadvantages;type:text;comment:绔炰簤鍔e娍"`
-		Opportunities      string                `json:"opportunities" gorm:"column:opportunities;type:text;comment:绔炰簤鏈轰細"`
-		Threats            string                `json:"threats" gorm:"column:threats;type:text;comment:绔炰簤濞佽儊"`
-		DetailAddress      string                `json:"detail_address" gorm:"column:detail_address;type:text;comment:璇︾粏鍦板潃"`
-		Remark             string                `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"`
-		Contact            Contact               `json:"contact" gorm:"foreignKey:ContactId;references:Id"`
-		Client             Client                `json:"client" gorm:"foreignKey:ClientId;references:Id"`
+		Id                 int       `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name               string    `json:"name" gorm:"column:name;type:varchar(255);comment:鍏徃鍚嶇О"`
+		Number             string    `json:"number" gorm:"column:number;type:varchar(255);comment:閿�鍞嚎绱㈢紪鍙�"`
+		ContactId          int       `json:"contact_id" gorm:"column:contact_id;type:int(11);comment:鑱旂郴浜篒D"`
+		ClientId           int       `json:"client_id" gorm:"column:client_id;type:int(11);comment:瀹㈡埛ID"`
+		SalesSourcesId     int       `json:"sales_sources_id" gorm:"column:sales_sources_id;type:int(11);comment:鍟嗘満鏉ユ簮ID"`
+		SaleTypeId         int       `json:"sale_type_id" gorm:"column:sale_type_id;type:int(11);comment:鍟嗘満绫诲瀷ID"`
+		SaleStageId        int       `json:"sale_stage_id" gorm:"column:sale_stage_id;type:int(11);comment:鍟嗘満闃舵ID"`
+		MemberId           int       `json:"member_id" gorm:"column:member_id;type:int(11);comment:閿�鍞礋璐d汉ID"`
+		RegularCustomersId int       `json:"regular_customers_id" gorm:"column:regular_customers_id;type:int(11);comment:甯稿ID"`
+		Competitors        string    `json:"competitors" gorm:"column:competitors;type:varchar(255);comment:绔炰簤瀵规墜"`
+		PossibilitiesId    int       `json:"possibilities_id" gorm:"column:possibilities_id;type:int(11);comment:鍙兘鎬D"`
+		Budget             float64   `json:"budget" gorm:"column:budget;type:decimal(10,2);comment:棰勭畻"`
+		ProjectedAmount    float64   `json:"projected_amount" gorm:"column:projected_amount;type:decimal(10,2);comment:棰勮閲戦"`
+		Currency           int       `json:"currency" gorm:"column:currency;type:int(11);comment:甯佺"`
+		ExpectedTime       time.Time `json:"expected_time" gorm:"column:expected_time;type:datetime;comment:棰勮鎴愪氦鏃堕棿"`
+		StatusId           int       `json:"status_id" gorm:"column:status_id;type:int(11);comment:鐘舵�両D"`
+		PainPoints         string    `json:"pain_points" gorm:"column:pain_points;type:text;comment:鐥涚偣"`
+		WhetherEstablished string    `json:"whether_established" gorm:"column:whether_established;type:text;comment:鏄惁鎴愮珛"`
+		CapitalBudget      string    `json:"capital_budget" gorm:"column:capital_budget;type:text;comment:璧勯噾棰勭畻"`
+		KeyMaker           string    `json:"key_maker" gorm:"column:key_maker;type:text;comment:鍏抽敭浜�"`
+		KeyFactors         string    `json:"key_factors" gorm:"column:key_factors;type:text;comment:鍏抽敭鍥犵礌"`
+		Process            string    `json:"process" gorm:"column:process;type:text;comment:鍐崇瓥娴佺▼"`
+		Solutions          string    `json:"solutions" gorm:"column:solutions;type:text;comment:绔炰簤瀵规墜瑙e喅鏂规"`
+		Advantages         string    `json:"advantages" gorm:"column:advantages;type:text;comment:绔炰簤浼樺娍"`
+		Disadvantages      string    `json:"disadvantages" gorm:"column:disadvantages;type:text;comment:绔炰簤鍔e娍"`
+		Opportunities      string    `json:"opportunities" gorm:"column:opportunities;type:text;comment:绔炰簤鏈轰細"`
+		Threats            string    `json:"threats" gorm:"column:threats;type:text;comment:绔炰簤濞佽儊"`
+		DetailAddress      string    `json:"detail_address" gorm:"column:detail_address;type:text;comment:璇︾粏鍦板潃"`
+		Remark             string    `json:"remark" gorm:"column:remark;type:text;comment:澶囨敞"`
+		Contact            Contact   `json:"contact" gorm:"foreignKey:ContactId;references:Id"`
+		Client             Client    `json:"client" gorm:"foreignKey:ClientId;references:Id"`
 		SalesSources       SalesSources
 		Address
 		gorm.Model `json:"-"`
diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go
index e224a24..3656b29 100644
--- a/pkg/ecode/code.go
+++ b/pkg/ecode/code.go
@@ -376,4 +376,11 @@
 	QuotationStatusSetErr    = 5500004 // 璁剧疆鎶ヤ环鍗曠姸鎬佸け璐�
 	QuotationStatusUpdateErr = 5500005 // 鏇存柊鎶ヤ环鍗曠姸鎬佸け璐�
 
-)
+
+	CurrencyExist     = 5000001 // 甯佺宸插瓨鍦�
+	CurrencyNotExist  = 5000002 // 甯佺涓嶅瓨鍦�
+	CurrencyListErr   = 5000003 // 鑾峰彇甯佺鍒楄〃澶辫触
+	CurrencySetErr    = 5000004 // 璁剧疆甯佺澶辫触
+	CurrencyUpdateErr = 5000005 // 鏇存柊甯佺澶辫触
+
+)
\ No newline at end of file
diff --git a/router/currency.go b/router/currency.go
new file mode 100644
index 0000000..cf7beb3
--- /dev/null
+++ b/router/currency.go
@@ -0,0 +1,20 @@
+
+package router
+
+import (
+	v1 "aps_crm/api/v1"
+	"github.com/gin-gonic/gin"
+)
+
+type CurrencyRouter struct{}
+
+func (s *CurrencyRouter) InitCurrencyRouter(router *gin.RouterGroup) {
+	currencyRouter := router.Group("currency")
+	currencyApi := v1.ApiGroup.CurrencyApi
+	{
+		currencyRouter.POST("add", currencyApi.Add)             // 娣诲姞$CName$
+		currencyRouter.DELETE("delete/:id", currencyApi.Delete) // 鍒犻櫎$CName$
+		currencyRouter.PUT("update", currencyApi.Update)        // 鏇存柊$CName$
+		currencyRouter.GET("list", currencyApi.List)            // 鑾峰彇$CName$鍒楄〃
+	}
+}
\ No newline at end of file
diff --git a/router/index.go b/router/index.go
index 65db83d..43f890a 100644
--- a/router/index.go
+++ b/router/index.go
@@ -11,6 +11,7 @@
 )
 
 type Group struct {
+    CurrencyRouter
     QuotationStatusRouter
     RepositoryRouter
     SalesReturnStatusRouter
@@ -155,6 +156,7 @@
         routerGroup.InitSalesReturnStatusRouter(PrivateGroup)
         routerGroup.InitRepositoryRouter(PrivateGroup)
         routerGroup.InitQuotationStatusRouter(PrivateGroup)
+        routerGroup.InitCurrencyRouter(PrivateGroup)
 	}
 	return Router
 }
\ No newline at end of file
diff --git a/service/currency.go b/service/currency.go
new file mode 100644
index 0000000..8ea2399
--- /dev/null
+++ b/service/currency.go
@@ -0,0 +1,69 @@
+
+package service
+
+import (
+	"aps_crm/model"
+	"aps_crm/model/request"
+	"aps_crm/pkg/ecode"
+)
+
+type CurrencyService struct{}
+
+func (CurrencyService) AddCurrency(currency *model.Currency) int {
+	err := model.NewCurrencySearch().Create(currency)
+	if err != nil {
+		return ecode.CurrencyExist
+	}
+
+	return ecode.OK
+}
+
+func (CurrencyService) DeleteCurrency(id int) int {
+	_, err := model.NewCurrencySearch().SetId(id).Find()
+	if err != nil {
+		return ecode.CurrencyNotExist
+	}
+
+	err = model.NewCurrencySearch().SetId(id).Delete()
+	if err != nil {
+		return ecode.CurrencyNotExist
+	}
+	return ecode.OK
+}
+
+func (CurrencyService) GetCurrencyList() ([]*model.Currency, int) {
+	list, err := model.NewCurrencySearch().FindAll()
+	if err != nil {
+		return nil, ecode.CurrencyListErr
+	}
+
+	return list, ecode.OK
+}
+
+func (CurrencyService) UpdateCurrency(currencys []*request.UpdateCurrency) int {
+	for _, v := range currencys {
+		// check currency exist
+		_, err := model.NewCurrencySearch().SetId(v.Id).Find()
+		if err != nil {
+			return ecode.CurrencyNotExist
+		}
+
+		err = model.NewCurrencySearch().SetId(v.Id).Updates(map[string]interface{}{
+			"name": v.Name,
+		})
+		if err != nil {
+			return ecode.CurrencySetErr
+		}
+	}
+
+	return ecode.OK
+}
+
+func (CurrencyService) GetCurrencyDetail(id int) (*model.Currency, int) {
+	currency, err := model.NewCurrencySearch().SetId(id).Find()
+	if err != nil {
+		return nil, ecode.CurrencyNotExist
+	}
+
+	return currency, ecode.OK
+}
diff --git a/service/dataServer.go b/service/dataServer.go
index 7cbe924..ab15917 100644
--- a/service/dataServer.go
+++ b/service/dataServer.go
@@ -100,51 +100,54 @@
 	reportSourceList, _ := ServiceGroup.GetReportSourceList()
 	data.ReportSource = reportSourceList
 
-
 	// get OrderType list
 	orderTypeList, _ := ServiceGroup.GetOrderTypeList()
 	data.OrderType = orderTypeList
-
 
 	// get ServiceContractStatus list
 	serviceContractStatusList, _ := ServiceGroup.GetServiceContractStatusList()
 	data.ServiceContractStatus = serviceContractStatusList
 
-
 	// get ServiceContractType list
 	serviceContractTypeList, _ := ServiceGroup.GetServiceContractTypeList()
 	data.ServiceContractType = serviceContractTypeList
-
 
 	// get RefundMethod list
 	refundMethodList, _ := ServiceGroup.GetRefundMethodList()
 	data.RefundMethod = refundMethodList
 
-
 	// get IsInvoice list
 	isInvoiceList, _ := ServiceGroup.GetIsInvoiceList()
 	data.IsInvoice = isInvoiceList
-
 
 	// get AccountId list
 	accountIdList, _ := ServiceGroup.GetAccountIdList()
 	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
 
+	// get Possibility list
+	possibilityList, _ := ServiceGroup.GetPossibilityList()
+	data.Possibility = possibilityList
+
+	// get Status list
+	statusList, _ := ServiceGroup.GetStatusList()
+	data.Status = statusList
+
+	// get Currency list
+	currencyList, _ := ServiceGroup.GetCurrencyList()
+	data.Currency = currencyList
+
 
 	errCode = ecode.OK
 
diff --git a/service/index.go b/service/index.go
index 3110c5e..e48386e 100644
--- a/service/index.go
+++ b/service/index.go
@@ -59,6 +59,7 @@
     SalesReturnStatusService
     RepositoryService
     QuotationStatusService
+    CurrencyService
 }
 
 var ServiceGroup = new(Group)
\ No newline at end of file

--
Gitblit v1.8.0