From e079b27d686b045639c7e0d470c2cbc812c401b1 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期二, 26 三月 2024 13:58:40 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/crm
---
proto/crm_aps/server.go | 169 +++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 135 insertions(+), 34 deletions(-)
diff --git a/proto/crm_aps/server.go b/proto/crm_aps/server.go
index b626b02..c88b98e 100644
--- a/proto/crm_aps/server.go
+++ b/proto/crm_aps/server.go
@@ -4,9 +4,13 @@
"aps_crm/constvar"
"aps_crm/model"
"aps_crm/model/grpc_init"
- "aps_crm/proto/product_inventory"
+ "aps_crm/pkg/ecode"
+ "aps_crm/service"
"context"
+ "errors"
+ "fmt"
"github.com/shopspring/decimal"
+ "gorm.io/gorm"
)
type Server struct {
@@ -72,38 +76,38 @@
}
//鎺ㄩ�佸埌wms
- clientName := ""
- if detail.ClientId > 0 {
- first, err := model.NewClientSearch(nil).SetId(detail.ClientId).First()
- if err == nil {
- clientName = first.Name
- }
- }
- wmsProducts := make([]*product_inventory.InventoryProduct, 0)
- for _, product := range detail.Products {
- var p product_inventory.InventoryProduct
- p.Id = product.Number
- p.Amount = product.Amount.String()
- wmsProducts = append(wmsProducts, &p)
- }
- clientWms := product_inventory.NewProductInventoryServiceClient(grpc_init.ProductInventoryServiceConn)
- _, err = clientWms.CreateOperation(ctx, &product_inventory.CreateOperationRequest{
- Number: detail.Number,
- Addressee: detail.Addressee,
- Address: detail.Address,
- Phone: detail.Phone,
- DeliverType: int32(detail.DeliverType),
- Source: "CRM",
- ClientId: int64(detail.ClientId),
- ClientName: clientName,
- ProductList: wmsProducts,
- })
- if err != nil {
- //鐘舵�佽繕鍘�
- m["status"] = constvar.WaitConfirmed
- _ = model.NewSalesDetailsSearch().SetNumber(detail.Number).UpdateByMap(m)
- return nil, err
- }
+ //clientName := ""
+ //if detail.ClientId > 0 {
+ // first, err := model.NewClientSearch(nil).SetId(detail.ClientId).First()
+ // if err == nil {
+ // clientName = first.Name
+ // }
+ //}
+ //wmsProducts := make([]*product_inventory.InventoryProduct, 0)
+ //for _, product := range detail.Products {
+ // var p product_inventory.InventoryProduct
+ // p.Id = product.Number
+ // p.Amount = product.Amount.String()
+ // wmsProducts = append(wmsProducts, &p)
+ //}
+ //clientWms := product_inventory.NewProductInventoryServiceClient(grpc_init.ProductInventoryServiceConn)
+ //_, err = clientWms.CreateOperation(ctx, &product_inventory.CreateOperationRequest{
+ // Number: detail.Number,
+ // Addressee: detail.Addressee,
+ // Address: detail.Address,
+ // Phone: detail.Phone,
+ // DeliverType: int32(detail.DeliverType),
+ // Source: "CRM",
+ // ClientId: int64(detail.ClientId),
+ // ClientName: clientName,
+ // ProductList: wmsProducts,
+ //})
+ //if err != nil {
+ // //鐘舵�佽繕鍘�
+ // m["status"] = constvar.WaitConfirmed
+ // _ = model.NewSalesDetailsSearch().SetNumber(detail.Number).UpdateByMap(m)
+ // return nil, err
+ //}
//鎺ㄩ�佸埌aps
products := make([]*SalesDetailsProduct, 0)
@@ -123,7 +127,7 @@
MemberName: detail.Member.Username,
SignTime: detail.SignTime,
DeliveryDate: detail.DeliveryDate,
- Source: detail.Source,
+ Source: "CRM",
ProductTotal: total.IntPart(),
ProjectId: req.ProjectId,
Products: products,
@@ -137,3 +141,100 @@
}
return new(SendSalesDetailsAndProjectToCrmResponse), nil
}
+
+func (s *Server) GetClientList(ctx context.Context, req *GetClientListRequest) (*GetClientListResponse, error) {
+ if req.Page <= 0 || req.PageSize == 0 {
+ return nil, errors.New("鍙傛暟閿欒")
+ }
+ clientService := new(service.ClientService)
+ params := map[string]interface{}{}
+ if req.Keyword != "" {
+ params["name"] = req.Keyword
+ }
+ clients, total, errCode := clientService.GetClientList(int(req.Page), int(req.PageSize), params)
+ if errCode != ecode.OK {
+ return nil, errors.New(fmt.Sprintf("鍐呴儴閿欒, code:%v", errCode))
+ }
+ resp := new(GetClientListResponse)
+ resp.Total = total
+ resp.List = make([]*Client, 0, len(clients))
+ for _, client := range clients {
+ resp.List = append(resp.List, &Client{
+ Number: client.Number,
+ Name: client.Name,
+ })
+ }
+ return resp, nil
+}
+func (s *Server) UpdateSalesDetail(ctx context.Context, req *UpdateSalesDetailRequest) (*UpdateSalesDetailResponse, error) {
+ if req.Number == "" {
+ return nil, errors.New("閿�鍞槑缁嗙紪鍙蜂负绌�")
+ }
+ if req.Status == 0 {
+ return nil, errors.New("閿�鍞槑缁嗙姸鎬佷负绌�")
+ }
+
+ status := constvar.SalesDetailsStatus(int(req.Status))
+ if !status.Valid() {
+ return nil, errors.New("閿�鍞槑缁嗙姸鎬佷笉姝g‘")
+ }
+
+ salesDetail, err := model.NewSalesDetailsSearch().SetNumber(req.Number).First()
+ if err == gorm.ErrRecordNotFound {
+ return nil, errors.New("閿�鍞槑缁嗕笉瀛樺湪")
+ }
+
+ salesDetail.Status = status
+ err = model.NewSalesDetailsSearch().SetId(salesDetail.Id).Update(salesDetail)
+ if err != nil {
+ return nil, errors.New("鏇存敼CRM閿�鍞槑缁嗗け璐�")
+ }
+
+ return &UpdateSalesDetailResponse{}, nil
+}
+
+func (s *Server) RemoveSalesDetail(ctx context.Context, req *RemoveSalesDetailRequest) (*RemoveSalesDetailResponse, error) {
+ if req.Number == "" {
+ return nil, errors.New("閿�鍞槑缁嗙紪鍙蜂负绌�")
+ }
+
+ _, err := model.NewSalesDetailsSearch().SetNumber(req.Number).First()
+ if err == gorm.ErrRecordNotFound {
+ return nil, errors.New("閿�鍞槑缁嗕笉瀛樺湪")
+ }
+
+ err = model.NewSalesDetailsSearch().SetNumber(req.Number).Delete()
+ if err == gorm.ErrRecordNotFound {
+ return nil, errors.New("閿�鍞槑缁嗗垹闄ゅけ璐�")
+ }
+
+ return &RemoveSalesDetailResponse{}, nil
+}
+
+func (s *Server) GetCrmSalesDetailsProductInfo(ctx context.Context, req *GetCrmSalesDetailsProductInfoRequest) (*GetCrmSalesDetailsProductInfoResponse, error) {
+ if req.SalesDetailsNumber == "" {
+ return nil, errors.New("閿�鍞槑缁嗙紪鍙蜂负绌�")
+ }
+ first, err := model.NewSalesDetailsSearch().SetPreload(true).SetNumber(req.SalesDetailsNumber).First()
+ if err != nil {
+ return nil, err
+ }
+ list := make([]*CrmSalesDetailsProductInfo, 0)
+ for _, product := range first.Products {
+ var csp CrmSalesDetailsProductInfo
+ csp.ProductId = product.Number
+ csp.ProductName = product.Name
+ csp.Specs = product.Specs
+ csp.Unit = product.Unit
+ csp.Amount = product.Amount.IntPart()
+ csp.Cost = product.Cost
+ csp.Price = product.Price.IntPart()
+ csp.Total = product.Total.IntPart()
+ csp.Profit = product.Profit
+ csp.Margin = product.Margin
+ list = append(list, &csp)
+ }
+ resp := new(GetCrmSalesDetailsProductInfoResponse)
+ resp.List = list
+ return resp, nil
+}
--
Gitblit v1.8.0