Files
lone-services/services/order/internal/svc/order.go
T
gjs 38e040af07
CI / changes (push) Successful in 37s
CI / ad (push) Successful in 29s
CI / admin (push) Successful in 17s
CI / bff (push) Successful in 13s
CI / chore (push) Successful in 15s
CI / equipment (push) Successful in 14s
CI / express (push) Successful in 14s
CI / product (push) Successful in 13s
CI / record (push) Successful in 13s
CI / sale (push) Successful in 13s
CI / task (push) Successful in 13s
CI / user (push) Successful in 14s
CI / wecom (push) Successful in 13s
订单下载。jd下单。。
2026-09-09 17:52:07 +08:00

98 lines
2.5 KiB
Go

package svc
import (
"context"
"fmt"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
product "lone-services/rpc/product/pb"
"lone-services/services/order/internal/dao"
"math/rand"
"strconv"
"time"
jsoniter "github.com/json-iterator/go"
"github.com/zeromicro/go-zero/core/logx"
)
func GetOrderSn(orderType string, adminId int64) string {
now := time.Now().Format("20060102150405")
r := rand.New(rand.NewSource(time.Now().UnixNano()))
rnd := r.Intn(90000000) + 10000000
sn := fmt.Sprintf("O%s%s%d%d", now, orderType, adminId, rnd)
return sn
}
func GetCartData(name string, info map[int64]int64) (*product.ItemsByIdsData, utils.Status) {
keys := make([]int64, utils.NumberZero, len(info))
for k := range info {
keys = append(keys, k)
}
cli, err := GetRpcClient(name)
if err != nil {
logx.Errorf("get rpc client err: %v", err)
return nil, utils.Fail
}
productClient := product.NewProductClient(cli.Conn())
products, err := productClient.ItemsByIds(context.Background(), &product.ItemsByIdsReq{Ids: keys})
if err != nil {
logx.Errorf("get products err: %v", err)
return nil, utils.Fail
}
return products, utils.Ok
}
func GetCartInfo(info string) (map[int64]int64, utils.Status) {
var list [][]int64
err := jsoniter.Unmarshal([]byte(info), &list)
if err != nil {
return nil, utils.ErrorJsonDataError
}
m := make(map[int64]int64, len(list))
for _, item := range list {
if len(item) >= 2 {
m[item[0]] = item[1]
}
}
return m, utils.Ok
}
func GetOneData(name string, id int64) (*product.Item, utils.Status) {
cli, err := GetRpcClient(name)
if err != nil {
logx.Errorf("get rpc client err: %v", err)
return nil, utils.Fail
}
productClient := product.NewProductClient(cli.Conn())
productInfo, err := productClient.InfoById(context.Background(), &product.InfoByIdReq{Id: id})
if err != nil {
logx.Errorf("get products err: %v", err)
return nil, utils.Fail
}
return productInfo, utils.Ok
}
func SetGroupWhere(w *modelbase.Params, adminInfo utils.UserInfo, checkProvince bool) {
if w.Eq == nil {
w.Eq = make(map[string]string)
}
if adminInfo.GroupId < utils.NumberOne {
return
}
//如果是公司销售
if adminInfo.Type == dao.TypeSale {
w.Eq["group_id"] = strconv.FormatInt(adminInfo.GroupId, utils.NumberTen)
} else if adminInfo.SaleProvince > utils.NumberZero {
if checkProvince {
w.Eq["sale_province"] = strconv.FormatInt(adminInfo.SaleProvince, utils.NumberTen)
} else {
w.Eq["group_id"] = strconv.FormatInt(adminInfo.GroupId, utils.NumberTen)
}
}
}