From 116948bcec330a6dde841708515c222fcebf51a7 Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期二, 06 二月 2024 10:12:10 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/crm

---
 proto/crm_aps/server.go |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 114 insertions(+), 1 deletions(-)

diff --git a/proto/crm_aps/server.go b/proto/crm_aps/server.go
index fd51bc1..1a45676 100644
--- a/proto/crm_aps/server.go
+++ b/proto/crm_aps/server.go
@@ -4,8 +4,14 @@
 	"aps_crm/constvar"
 	"aps_crm/model"
 	"aps_crm/model/grpc_init"
+	"aps_crm/pkg/ecode"
+	"aps_crm/proto/product_inventory"
+	"aps_crm/service"
 	"context"
+	"errors"
+	"fmt"
 	"github.com/shopspring/decimal"
+	"gorm.io/gorm"
 )
 
 type Server struct {
@@ -70,6 +76,41 @@
 			return nil, err
 		}
 
+		//鎺ㄩ�佸埌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
+		}
+
+		//鎺ㄩ�佸埌aps
 		products := make([]*SalesDetailsProduct, 0)
 		var total decimal.Decimal
 		for _, product := range detail.Products {
@@ -87,14 +128,86 @@
 			MemberName:   detail.Member.Username,
 			SignTime:     detail.SignTime,
 			DeliveryDate: detail.DeliveryDate,
-			Source:       detail.Source,
+			Source:       "CRM",
 			ProductTotal: total.IntPart(),
 			ProjectId:    req.ProjectId,
 			Products:     products,
 		})
 		if err != nil {
+			//鐘舵�佽繕鍘�
+			m["status"] = constvar.WaitConfirmed
+			_ = model.NewSalesDetailsSearch().SetNumber(detail.Number).UpdateByMap(m)
 			return nil, err
 		}
 	}
 	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().Update(salesDetail)
+	if err != nil {
+		return nil, errors.New("鏇存敼CRM閿�鍞槑缁嗗け璐�")
+	}
+
+	return &UpdateSalesDetailResponse{}, nil
+}
+
+func (s *Server) RemoveSalesDetail(ctx context.Context, req *RemoveSalesDetailRequest) (*RemoveSalesDetailRequest, 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 &RemoveSalesDetailRequest{}, nil
+}

--
Gitblit v1.8.0