From 00c086f3158e8841ab495c62c3c41720e27456e0 Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期二, 11 七月 2023 15:25:58 +0800
Subject: [PATCH] add
---
api/v1/index.go | 2
api/v1/subOrder.go | 141 +++++++++
model/request/subOrder.go | 20 +
pkg/ecode/code.go | 7
docs/swagger.yaml | 122 ++++++++
docs/docs.go | 190 ++++++++++++
docs/swagger.json | 190 ++++++++++++
model/response/response.go | 4
model/product.go | 18 +
service/index.go | 1
router/subOrder.go | 19 +
model/index.go | 2
service/subOrder.go | 54 +++
logs/aps-admin.err.log | 13
router/index.go | 2
model/subOrder.go | 74 ++++
16 files changed, 859 insertions(+), 0 deletions(-)
diff --git a/api/v1/index.go b/api/v1/index.go
index a226025..af7f83b 100644
--- a/api/v1/index.go
+++ b/api/v1/index.go
@@ -33,6 +33,7 @@
StatusApi
QuotationApi
MasterOrderApi
+ SubOrderApi
}
var ApiGroup = new(Group)
@@ -65,4 +66,5 @@
statusService = service.ServiceGroup.StatusService
quotationService = service.ServiceGroup.QuotationService
masterOrderService = service.ServiceGroup.MasterOrderService
+ subOrderService = service.ServiceGroup.SubOrderService
)
diff --git a/api/v1/subOrder.go b/api/v1/subOrder.go
new file mode 100644
index 0000000..2ec0fd3
--- /dev/null
+++ b/api/v1/subOrder.go
@@ -0,0 +1,141 @@
+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 SubOrderApi struct{}
+
+// Add
+//
+// @Tags SubOrder
+// @Summary 娣诲姞瀛愯鍗�
+// @Produce application/json
+// @Param object body request.AddSubOrder true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/subOrder/add [post]
+func (s *SubOrderApi) Add(c *gin.Context) {
+ var params request.AddSubOrder
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode, subOrder := checkSubOrderParams(params.SubOrder)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ errCode = subOrderService.AddSubOrder(&subOrder)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Delete
+//
+// @Tags SubOrder
+// @Summary 鍒犻櫎瀛愯鍗�
+// @Produce application/json
+// @Param id path int true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/subOrder/delete/{id} [delete]
+func (s *SubOrderApi) Delete(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ id, _ := strconv.Atoi(c.Param("id"))
+ errCode := subOrderService.DeleteSubOrder(id)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// Update
+//
+// @Tags SubOrder
+// @Summary 鏇存柊瀛愯鍗�
+// @Produce application/json
+// @Param object body request.UpdateSubOrder true "鏌ヨ鍙傛暟"
+// @Success 200 {object} contextx.Response{}
+// @Router /api/subOrder/update [put]
+func (s *SubOrderApi) Update(c *gin.Context) {
+ var params request.UpdateSubOrder
+ ctx, ok := contextx.NewContext(c, ¶ms)
+ if !ok {
+ return
+ }
+
+ errCode, subOrder := checkSubOrderParams(params.SubOrder)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ errCode = subOrderService.UpdateSubOrder(&subOrder)
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.Ok()
+}
+
+// List
+//
+// @Tags SubOrder
+// @Summary 鑾峰彇瀛愯鍗曞垪琛�
+// @Produce application/json
+// @Success 200 {object} contextx.Response{}
+// @Router /api/subOrder/list [get]
+func (s *SubOrderApi) List(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+
+ subOrders, errCode := subOrderService.GetSubOrderList()
+ if errCode != ecode.OK {
+ ctx.Fail(errCode)
+ return
+ }
+
+ ctx.OkWithDetailed(response.SubOrderResponse{
+ List: subOrders,
+ })
+}
+
+// checkSubOrderParams
+// 妫�鏌ュ瓙璁㈠崟鍙傛暟
+func checkSubOrderParams(subOrder request.SubOrder) (errCode int, newSubOrder model.SubOrder) {
+ if subOrder.Number == "" {
+ return ecode.InvalidParams, newSubOrder
+ }
+ if subOrder.MemberId == 0 {
+ return ecode.InvalidParams, newSubOrder
+ }
+
+ newSubOrder.ClientId = subOrder.ClientId
+ newSubOrder.MasterOrderId = subOrder.MasterOrderId
+ newSubOrder.Number = subOrder.Number
+ newSubOrder.MemberId = subOrder.MemberId
+
+ newSubOrder.Products = subOrder.Product
+
+ return ecode.OK, newSubOrder
+}
diff --git a/docs/docs.go b/docs/docs.go
index d9ffe10..1ef0d67 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -3163,6 +3163,113 @@
}
}
},
+ "/api/subOrder/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "娣诲姞瀛愯鍗�",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddSubOrder"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鍒犻櫎瀛愯鍗�",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鑾峰彇瀛愯鍗曞垪琛�",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鏇存柊瀛愯鍗�",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateSubOrder"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/user/changePassword": {
"post": {
"produces": [
@@ -3942,6 +4049,32 @@
},
"name": {
"type": "string"
+ }
+ }
+ },
+ "model.Product": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer"
+ },
+ "desc": {
+ "type": "string"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "number": {
+ "type": "string"
+ },
+ "price": {
+ "type": "number"
+ },
+ "total": {
+ "type": "number"
}
}
},
@@ -4881,6 +5014,14 @@
}
}
},
+ "request.AddSubOrder": {
+ "type": "object",
+ "properties": {
+ "subOrder": {
+ "$ref": "#/definitions/request.SubOrder"
+ }
+ }
+ },
"request.ChangePasswordReq": {
"type": "object",
"properties": {
@@ -5165,6 +5306,29 @@
"type": "array",
"items": {
"type": "integer"
+ }
+ }
+ }
+ },
+ "request.SubOrder": {
+ "type": "object",
+ "properties": {
+ "clientId": {
+ "type": "integer"
+ },
+ "masterOrderId": {
+ "type": "integer"
+ },
+ "memberId": {
+ "type": "integer"
+ },
+ "number": {
+ "type": "string"
+ },
+ "product": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.Product"
}
}
}
@@ -6047,6 +6211,32 @@
}
}
},
+ "request.UpdateSubOrder": {
+ "type": "object",
+ "properties": {
+ "clientId": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "masterOrderId": {
+ "type": "integer"
+ },
+ "memberId": {
+ "type": "integer"
+ },
+ "number": {
+ "type": "string"
+ },
+ "product": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.Product"
+ }
+ }
+ }
+ },
"response.CityResponse": {
"type": "object",
"properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index c0e0598..ab980ca 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -3151,6 +3151,113 @@
}
}
},
+ "/api/subOrder/add": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "娣诲姞瀛愯鍗�",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.AddSubOrder"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/delete/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鍒犻櫎瀛愯鍗�",
+ "parameters": [
+ {
+ "type": "integer",
+ "description": "鏌ヨ鍙傛暟",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/list": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鑾峰彇瀛愯鍗曞垪琛�",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api/subOrder/update": {
+ "put": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "SubOrder"
+ ],
+ "summary": "鏇存柊瀛愯鍗�",
+ "parameters": [
+ {
+ "description": "鏌ヨ鍙傛暟",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/request.UpdateSubOrder"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/contextx.Response"
+ }
+ }
+ }
+ }
+ },
"/api/user/changePassword": {
"post": {
"produces": [
@@ -3930,6 +4037,32 @@
},
"name": {
"type": "string"
+ }
+ }
+ },
+ "model.Product": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "type": "integer"
+ },
+ "desc": {
+ "type": "string"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "number": {
+ "type": "string"
+ },
+ "price": {
+ "type": "number"
+ },
+ "total": {
+ "type": "number"
}
}
},
@@ -4869,6 +5002,14 @@
}
}
},
+ "request.AddSubOrder": {
+ "type": "object",
+ "properties": {
+ "subOrder": {
+ "$ref": "#/definitions/request.SubOrder"
+ }
+ }
+ },
"request.ChangePasswordReq": {
"type": "object",
"properties": {
@@ -5153,6 +5294,29 @@
"type": "array",
"items": {
"type": "integer"
+ }
+ }
+ }
+ },
+ "request.SubOrder": {
+ "type": "object",
+ "properties": {
+ "clientId": {
+ "type": "integer"
+ },
+ "masterOrderId": {
+ "type": "integer"
+ },
+ "memberId": {
+ "type": "integer"
+ },
+ "number": {
+ "type": "string"
+ },
+ "product": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.Product"
}
}
}
@@ -6035,6 +6199,32 @@
}
}
},
+ "request.UpdateSubOrder": {
+ "type": "object",
+ "properties": {
+ "clientId": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "integer"
+ },
+ "masterOrderId": {
+ "type": "integer"
+ },
+ "memberId": {
+ "type": "integer"
+ },
+ "number": {
+ "type": "string"
+ },
+ "product": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/model.Product"
+ }
+ }
+ }
+ },
"response.CityResponse": {
"type": "object",
"properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 176ac93..3d30a6b 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -355,6 +355,23 @@
name:
type: string
type: object
+ model.Product:
+ properties:
+ amount:
+ type: integer
+ desc:
+ type: string
+ id:
+ type: integer
+ name:
+ type: string
+ number:
+ type: string
+ price:
+ type: number
+ total:
+ type: number
+ type: object
model.Province:
properties:
cities:
@@ -984,6 +1001,11 @@
required:
- name
type: object
+ request.AddSubOrder:
+ properties:
+ subOrder:
+ $ref: '#/definitions/request.SubOrder'
+ type: object
request.ChangePasswordReq:
properties:
newPassword:
@@ -1185,6 +1207,21 @@
description: 鍦板尯ID鍒楄〃
items:
type: integer
+ type: array
+ type: object
+ request.SubOrder:
+ properties:
+ clientId:
+ type: integer
+ masterOrderId:
+ type: integer
+ memberId:
+ type: integer
+ number:
+ type: string
+ product:
+ items:
+ $ref: '#/definitions/model.Product'
type: array
type: object
request.UpdateCities:
@@ -1780,6 +1817,23 @@
type: array
required:
- list
+ type: object
+ request.UpdateSubOrder:
+ properties:
+ clientId:
+ type: integer
+ id:
+ type: integer
+ masterOrderId:
+ type: integer
+ memberId:
+ type: integer
+ number:
+ type: string
+ product:
+ items:
+ $ref: '#/definitions/model.Product'
+ type: array
type: object
response.CityResponse:
properties:
@@ -3900,6 +3954,74 @@
summary: 鏇存柊鐘舵��
tags:
- Status
+ /api/subOrder/add:
+ post:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.AddSubOrder'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 娣诲姞瀛愯鍗�
+ tags:
+ - SubOrder
+ /api/subOrder/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:
+ - SubOrder
+ /api/subOrder/list:
+ get:
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鑾峰彇瀛愯鍗曞垪琛�
+ tags:
+ - SubOrder
+ /api/subOrder/update:
+ put:
+ parameters:
+ - description: 鏌ヨ鍙傛暟
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/request.UpdateSubOrder'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: OK
+ schema:
+ $ref: '#/definitions/contextx.Response'
+ summary: 鏇存柊瀛愯鍗�
+ tags:
+ - SubOrder
/api/user/changePassword:
post:
parameters:
diff --git a/logs/aps-admin.err.log b/logs/aps-admin.err.log
index ff4e4b6..dd58b9b 100644
--- a/logs/aps-admin.err.log
+++ b/logs/aps-admin.err.log
@@ -332,3 +332,16 @@
[2023-07-06 13:55:26] [error] [gorm.io/driver/mysql.Migrator.AlterColumn.func1:59] trace {"error": "Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length", "elapsed": 0.0007354, "rows": 0, "sql": "ALTER TABLE `client_level` MODIFY COLUMN `name` longtext"}
[2023-07-06 13:55:26] [error] [main.main:29] model Init err:Error 1170 (42000): BLOB/TEXT column 'name' used in key specification without a key length
[2023-07-10 11:06:33] [error] [aps_crm/model.(*PossibilitySearch).Create:46] trace {"error": "Error 1146 (42S02): Table 'aps_crm.possibility' doesn't exist", "elapsed": 0.0032687, "rows": 0, "sql": "INSERT INTO `possibility` (`name`) VALUES ('10')"}
+[2023-07-10 20:54:43] [error] [aps_crm/model.(*SubOrderSearch).Create:45] trace {"error": "Error 1146 (42S02): Table 'aps_crm.sub_order' doesn't exist", "elapsed": 0.001705, "rows": 0, "sql": "INSERT INTO `sub_order` (`client_id`,`member_id`,`master_order_id`,`number`,`created_at`,`updated_at`,`deleted_at`) VALUES (11,110,1,'AC6521','2023-07-10 20:54:43.768','2023-07-10 20:54:43.768',NULL)"}
+[2023-07-11 10:43:59] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", Products:[]model.Product(nil), Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 10:43:59] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", Products:[]model.Product(nil), Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 10:43:59] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field Products: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:31:58] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:31:58] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:31:58] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:32:32] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:32:32] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:32:32] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:33:55] [error] [gorm.io/gorm/migrator.Migrator.AutoMigrate:104] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:33:55] [error] [gorm.io/gorm/migrator.Migrator.CreateTable:198] failed to parse value model.SubOrder{Id:0, ClientId:0, MemberId:0, MasterOrderId:0, Number:"", ProductOrder:model.ProductOrder{Id:0, Products:[]model.Product(nil)}, Model:gorm.Model{ID:0x0, CreatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdatedAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), DeletedAt:gorm.DeletedAt{Time:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), Valid:false}}}, got error invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
+[2023-07-11 11:33:55] [error] [main.main:29] model Init err:invalid field found for struct aps_crm/model.SubOrder's field ProductOrder: define a valid foreign key for relations or implement the Valuer/Scanner interface
diff --git a/model/index.go b/model/index.go
index cda1221..91a30b1 100644
--- a/model/index.go
+++ b/model/index.go
@@ -48,6 +48,8 @@
Status{},
Quotation{},
MasterOrder{},
+ SubOrder{},
+ Product{},
)
return err
}
diff --git a/model/product.go b/model/product.go
new file mode 100644
index 0000000..029857b
--- /dev/null
+++ b/model/product.go
@@ -0,0 +1,18 @@
+package model
+
+import "gorm.io/gorm"
+
+type Product struct {
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ Name string `json:"name" gorm:"column:name;type:varchar(255);comment:浜у搧鍚嶇О"`
+ Price float64 `json:"price" gorm:"column:price;type:decimal(10,2);comment:浜у搧浠锋牸"`
+ Number string `json:"number" gorm:"column:number;type:varchar(255);comment:浜у搧缂栧彿"`
+ Amount int `json:"amount" gorm:"column:amount;type:int;comment:浜у搧鏁伴噺"`
+ Total float64 `json:"total" gorm:"column:total;type:decimal(10,2);comment:浜у搧鎬讳环"`
+ Desc string `json:"desc" gorm:"column:desc;type:varchar(255);comment:浜у搧鎻忚堪"`
+ gorm.Model `json:"-"`
+}
+
+func (Product) TableName() string {
+ return "products"
+}
diff --git a/model/request/subOrder.go b/model/request/subOrder.go
new file mode 100644
index 0000000..994550f
--- /dev/null
+++ b/model/request/subOrder.go
@@ -0,0 +1,20 @@
+package request
+
+import "aps_crm/model"
+
+type AddSubOrder struct {
+ SubOrder SubOrder `json:"subOrder"`
+}
+
+type SubOrder struct {
+ ClientId int `json:"clientId"`
+ MasterOrderId int `json:"masterOrderId"`
+ Number string `json:"number"`
+ MemberId int `json:"memberId"`
+ Product []model.Product `json:"product"`
+}
+
+type UpdateSubOrder struct {
+ Id int `json:"id"`
+ SubOrder
+}
diff --git a/model/response/response.go b/model/response/response.go
index 2142098..842c0f3 100644
--- a/model/response/response.go
+++ b/model/response/response.go
@@ -129,4 +129,8 @@
MasterOrderResponse struct {
List []*model.MasterOrder `json:"list"`
}
+
+ SubOrderResponse struct {
+ List []*model.SubOrder `json:"list"`
+ }
)
diff --git a/model/subOrder.go b/model/subOrder.go
new file mode 100644
index 0000000..b1f3479
--- /dev/null
+++ b/model/subOrder.go
@@ -0,0 +1,74 @@
+package model
+
+import (
+ "aps_crm/pkg/mysqlx"
+ "gorm.io/gorm"
+)
+
+type (
+ SubOrder struct {
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:瀹㈡埛id"`
+ MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"`
+ MasterOrderId int `json:"masterOrderId" gorm:"column:master_order_id;type:int;comment:閿�鍞�诲崟id"`
+ Number string `json:"number" gorm:"column:number;type:varchar(255);comment:閿�鍞瓙鍗曞彿"`
+ Products []Product `json:"products" gorm:"many2many:subOrder_product;"`
+ gorm.Model `json:"-"`
+ }
+
+ SubOrderSearch struct {
+ SubOrder
+ Orm *gorm.DB
+ }
+)
+
+func (SubOrder) TableName() string {
+ return "sub_order"
+}
+
+func NewSubOrderSearch() *SubOrderSearch {
+ return &SubOrderSearch{
+ Orm: mysqlx.GetDB(),
+ }
+}
+
+func (slf *SubOrderSearch) build() *gorm.DB {
+ var db = slf.Orm.Model(&SubOrder{})
+ if slf.Id != 0 {
+ db = db.Where("id = ?", slf.Id)
+ }
+
+ return db
+}
+
+func (slf *SubOrderSearch) Create(record *SubOrder) error {
+ var db = slf.build()
+ return db.Create(record).Error
+}
+
+func (slf *SubOrderSearch) Delete() error {
+ var db = slf.build()
+ return db.Delete(&SubOrder{}).Error
+}
+
+func (slf *SubOrderSearch) Update(record *SubOrder) error {
+ var db = slf.build()
+ return db.Updates(record).Error
+}
+
+func (slf *SubOrderSearch) Find() (result []SubOrder, err error) {
+ var db = slf.build()
+ err = db.Find(&result).Error
+ return
+}
+
+func (slf *SubOrderSearch) FindAll() (result []*SubOrder, err error) {
+ var db = slf.build()
+ err = db.Preload("Products").Find(&result).Error
+ return
+}
+
+func (slf *SubOrderSearch) SetId(id int) *SubOrderSearch {
+ slf.Id = id
+ return slf
+}
diff --git a/pkg/ecode/code.go b/pkg/ecode/code.go
index e16bafd..867c208 100644
--- a/pkg/ecode/code.go
+++ b/pkg/ecode/code.go
@@ -191,4 +191,11 @@
MasterOrderUpdateErr = 2600005 // 鏇存柊涓昏鍗曞け璐�
MasterOrderDeleteErr = 2600006 // 鍒犻櫎涓昏鍗曞け璐�
+ SubOrderExist = 2700001 // 瀛愯鍗曞凡瀛樺湪
+ SubOrderNotExist = 2700002 // 瀛愯鍗曚笉瀛樺湪
+ SubOrderListErr = 2700003 // 鑾峰彇瀛愯鍗曞垪琛ㄥけ璐�
+ SubOrderSetErr = 2700004 // 璁剧疆瀛愯鍗曞け璐�
+ SubOrderUpdateErr = 2700005 // 鏇存柊瀛愯鍗曞け璐�
+ SubOrderDeleteErr = 2700006 // 鍒犻櫎瀛愯鍗曞け璐�
+
)
diff --git a/router/index.go b/router/index.go
index 9346158..2cf4c1b 100644
--- a/router/index.go
+++ b/router/index.go
@@ -39,6 +39,7 @@
StatusRouter
QuotationRouter
MasterOrderRouter
+ SubOrderRouter
}
func InitRouter() *gin.Engine {
@@ -95,6 +96,7 @@
routerGroup.InitStatusRouter(PrivateGroup) // 娉ㄥ唽status璺敱
routerGroup.InitQuotationRouter(PrivateGroup) // 娉ㄥ唽quotation璺敱
routerGroup.InitMasterOrderRouter(PrivateGroup) // 娉ㄥ唽masterOrder璺敱
+ routerGroup.InitSubOrderRouter(PrivateGroup) // 娉ㄥ唽subOrder璺敱
}
return Router
}
diff --git a/router/subOrder.go b/router/subOrder.go
new file mode 100644
index 0000000..1cd0197
--- /dev/null
+++ b/router/subOrder.go
@@ -0,0 +1,19 @@
+package router
+
+import (
+ v1 "aps_crm/api/v1"
+ "github.com/gin-gonic/gin"
+)
+
+type SubOrderRouter struct{}
+
+func (s *SubOrderRouter) InitSubOrderRouter(router *gin.RouterGroup) {
+ subOrderRouter := router.Group("subOrder")
+ subOrderApi := v1.ApiGroup.SubOrderApi
+ {
+ subOrderRouter.POST("add", subOrderApi.Add) // 娣诲姞瀛愯鍗�
+ subOrderRouter.DELETE("delete/:id", subOrderApi.Delete) // 鍒犻櫎瀛愯鍗�
+ subOrderRouter.PUT("update", subOrderApi.Update) // 鏇存柊瀛愯鍗�
+ subOrderRouter.GET("list", subOrderApi.List) // 鑾峰彇瀛愯鍗曞垪琛�
+ }
+}
diff --git a/service/index.go b/service/index.go
index 26577e4..d8ab5e1 100644
--- a/service/index.go
+++ b/service/index.go
@@ -28,6 +28,7 @@
StatusService
QuotationService
MasterOrderService
+ SubOrderService
}
var ServiceGroup = new(Group)
diff --git a/service/subOrder.go b/service/subOrder.go
new file mode 100644
index 0000000..cf6df59
--- /dev/null
+++ b/service/subOrder.go
@@ -0,0 +1,54 @@
+package service
+
+import (
+ "aps_crm/model"
+ "aps_crm/pkg/ecode"
+)
+
+type SubOrderService struct{}
+
+func (SubOrderService) AddSubOrder(subOrder *model.SubOrder) int {
+ err := model.NewSubOrderSearch().Create(subOrder)
+ if err != nil {
+ return ecode.SubOrderExist
+ }
+
+ return ecode.OK
+}
+
+func (SubOrderService) DeleteSubOrder(id int) int {
+ _, err := model.NewSubOrderSearch().SetId(id).Find()
+ if err != nil {
+ return ecode.SubOrderNotExist
+ }
+
+ err = model.NewSubOrderSearch().SetId(id).Delete()
+ if err != nil {
+ return ecode.SubOrderNotExist
+ }
+ return ecode.OK
+}
+
+func (SubOrderService) GetSubOrderList() ([]*model.SubOrder, int) {
+ list, err := model.NewSubOrderSearch().FindAll()
+ if err != nil {
+ return nil, ecode.SubOrderListErr
+ }
+
+ return list, ecode.OK
+}
+
+func (SubOrderService) UpdateSubOrder(subOrder *model.SubOrder) int {
+ // check subOrder exist
+ _, err := model.NewSubOrderSearch().SetId(subOrder.Id).Find()
+ if err != nil {
+ return ecode.SubOrderNotExist
+ }
+
+ err = model.NewSubOrderSearch().SetId(subOrder.Id).Update(subOrder)
+ if err != nil {
+ return ecode.SubOrderSetErr
+ }
+
+ return ecode.OK
+}
--
Gitblit v1.8.0