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