From 90ebefc0ce4306bdc96f34ea9503ca986a59bbe7 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 31 一月 2024 14:12:00 +0800
Subject: [PATCH] 客户列表grpc接口
---
api/v1/quotation.go | 77 +++++++++++++++++++++++++++++++++++---
1 files changed, 71 insertions(+), 6 deletions(-)
diff --git a/api/v1/quotation.go b/api/v1/quotation.go
index 724da4f..ecbe7da 100644
--- a/api/v1/quotation.go
+++ b/api/v1/quotation.go
@@ -1,13 +1,15 @@
package v1
import (
+ "aps_crm/constvar"
"aps_crm/model"
"aps_crm/model/request"
"aps_crm/model/response"
"aps_crm/pkg/contextx"
"aps_crm/pkg/ecode"
+ "aps_crm/utils"
"github.com/gin-gonic/gin"
- "strconv"
+ "github.com/shopspring/decimal"
)
type QuotationApi struct{}
@@ -33,6 +35,23 @@
return
}
+ count, err := model.NewQuotationSearch(nil).SetNumber(params.Number).Count()
+ if err != nil {
+ ctx.FailWithMsg(ecode.UnknownErr, "缂栫爜楠岃瘉澶辫触")
+ return
+ }
+ if count > 0 {
+ ctx.FailWithMsg(ecode.UnknownErr, "缂栫爜宸插瓨鍦�")
+ return
+ }
+
+ if quotation.MemberId == 0 {
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ quotation.MemberId = userInfo.CrmUserId
+ }
+ }
+
errCode = quotationService.AddQuotation("ation)
if errCode != ecode.OK {
ctx.Fail(errCode)
@@ -47,17 +66,17 @@
// @Tags Quotation
// @Summary 鍒犻櫎鎶ヤ环鍗�
// @Produce application/json
-// @Param id path int true "鏌ヨ鍙傛暟"
+// @Param object body request.DeleteQuotation true "鏌ヨ鍙傛暟"
// @Success 200 {object} contextx.Response{}
-// @Router /api/quotation/delete/{id} [delete]
+// @Router /api/quotation/delete [delete]
func (s *QuotationApi) Delete(c *gin.Context) {
- ctx, ok := contextx.NewContext(c, nil)
+ var params request.DeleteQuotation
+ ctx, ok := contextx.NewContext(c, ¶ms)
if !ok {
return
}
- id, _ := strconv.Atoi(c.Param("id"))
- errCode := quotationService.DeleteQuotation(id)
+ errCode := quotationService.DeleteQuotation(params.Ids)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
@@ -140,6 +159,9 @@
quotationModel.ContactId = quotation.ContactId
quotationModel.Conditions = quotation.Conditions
quotationModel.File = quotation.File
+ quotationModel.Products = quotation.Products
+ quotationModel.CodeStandID = quotation.CodeStandID
+ quotationModel.QuotationName = quotation.QuotationName
return ecode.OK, quotationModel
@@ -160,14 +182,57 @@
return
}
+ userInfo := utils.GetUserInfo(c)
+ if userInfo.UserType == constvar.UserTypeSub {
+ if params.SearchMap == nil {
+ params.SearchMap = make(map[string]interface{}, 0)
+ }
+ params.SearchMap["member_ids"] = userInfo.SubUserIds
+ }
+
quotations, total, errCode := quotationService.GetQuotationList(params.Page, params.PageSize, params.SearchMap)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
}
+ for _, quotation := range quotations {
+ amount := decimal.NewFromInt(0)
+ for _, product := range quotation.Products {
+ amount = amount.Add(product.Total)
+ }
+ quotation.AmountTotal = amount
+ }
+
ctx.OkWithDetailed(response.QuotationResponse{
List: quotations,
Count: int(total),
})
}
+
+// Statistics
+//
+// @Tags Quotation
+// @Summary 鎶ヤ环鍗曠粺璁�
+// @Produce application/json
+// @Success 200 {object} contextx.Response{data=map[string]int64}
+// @Router /api/quotation/statistics [get]
+func (con *QuotationApi) Statistics(c *gin.Context) {
+ ctx, ok := contextx.NewContext(c, nil)
+ if !ok {
+ return
+ }
+ m := make(map[string]int64)
+ total, _ := model.NewQuotationSearch(nil).Count()
+ m["total"] = total
+ //宸插垱寤�
+ created, _ := model.NewQuotationSearch(nil).SetQuotationStatusId(1).Count()
+ m["created"] = created
+ //宸插鎵�
+ approved, _ := model.NewQuotationSearch(nil).SetQuotationStatusId(3).Count()
+ m["approved"] = approved
+ //宸叉帴鍙�
+ accepted, _ := model.NewQuotationSearch(nil).SetQuotationStatusId(5).Count()
+ m["accepted"] = accepted
+ ctx.OkWithDetailed(m)
+}
--
Gitblit v1.8.0