From ae143c21adc9a17feb95f81bdaf9387512ba99c2 Mon Sep 17 00:00:00 2001 From: gjs Date: Fri, 28 Aug 2026 11:12:23 +0800 Subject: [PATCH 1/2] fix --- rpc/order/order.proto | 6 - services/express/internal/logic/infoLogic.go | 4 +- services/order/internal/dao/order.go | 23 ++- services/order/internal/logic/itemsLogic.go | 15 +- .../internal/logic/orderAuditingItemsLogic.go | 15 +- .../internal/logic/orderAuditingLogic.go | 47 +++++- .../order/internal/logic/orderCreateLogic.go | 137 +++++++++++++++++- services/order/internal/model/order.go | 19 +++ 8 files changed, 243 insertions(+), 23 deletions(-) diff --git a/rpc/order/order.proto b/rpc/order/order.proto index 37fc32c..9a0a732 100644 --- a/rpc/order/order.proto +++ b/rpc/order/order.proto @@ -49,12 +49,6 @@ message EditAddressRequest { int32 type = 8; } -message StatusAddressRequest { - int64 id = 1; - int32 status = 2; - string reason = 3; -} - message EmptyRequest { } diff --git a/services/express/internal/logic/infoLogic.go b/services/express/internal/logic/infoLogic.go index 7cc1198..9e8df5d 100644 --- a/services/express/internal/logic/infoLogic.go +++ b/services/express/internal/logic/infoLogic.go @@ -5,10 +5,10 @@ import ( "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/rpc/express/pb" - "lone-services/services/admin/validator" "lone-services/services/express/internal/dao" "lone-services/services/express/internal/model" "lone-services/services/express/internal/svc" + "lone-services/services/express/validator" "strconv" "github.com/zeromicro/go-zero/core/logx" @@ -30,7 +30,7 @@ func NewInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoLogic { } func (l *InfoLogic) Info(in *express.IdRequest) (*express.Response, error) { - var v validator.AdminInfoValidator + var v validator.InfoValidator if fail := l.checkParams(in, &v); fail != nil { return fail, nil } diff --git a/services/order/internal/dao/order.go b/services/order/internal/dao/order.go index 41e604b..639c60d 100644 --- a/services/order/internal/dao/order.go +++ b/services/order/internal/dao/order.go @@ -52,7 +52,7 @@ type OrderCreate struct { type OrderInfo struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` StoreId int `gorm:"column:store_id;type:int(11);comment:美容院关联ID号" json:"store_id"` StoreName string `gorm:"column:store_name;type:varchar(50);comment:门店名" json:"store_name"` SaleName string `gorm:"column:sale_name;type:varchar(50);comment:销售姓名" json:"sale_name"` @@ -75,6 +75,7 @@ type OrderInfo struct { OutTradeNo string `gorm:"column:out_trade_no;type:varchar(50);comment:支付订单号" json:"out_trade_no"` OldAddress string `gorm:"column:old_address;type:varchar(255);comment:老的收发货信息,如果有这个就表明是修改过收货地址" json:"old_address"` Type uint8 `gorm:"column:type;type:tinyint(1);default:0;comment:类型 1 销售,2为门店,3为个人,4为个人家庭试用,5为个人门店试用" json:"type"` + VerifyStatus uint8 `gorm:"column:verify_status;type:tinyint(1);default:0;comment:审核状态,1为通过,2为失败,3为待审核,0为正常订单不需要审核" json:"verify_status"` SignTime utils.CustomTime `gorm:"column:sign_time;type:datetime;comment:签收时间" json:"sign_time"` CreateType uint8 `gorm:"column:create_type;type:tinyint(1);default:1;comment:下单人类型,1为销售,2为门店,3为个人;NOT NULL" json:"create_type"` CreateTime utils.CustomTime `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;comment:订单创建时间" json:"create_time"` @@ -87,7 +88,7 @@ type OrderInfo struct { type OrderPay struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` TotalPrice float64 `gorm:"column:total_price;type:decimal(10,2);comment:总价;NOT NULL" json:"total_price"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` PayPrice float64 `gorm:"column:pay_price;type:decimal(10,2);comment:实际支付金额" json:"pay_price"` PayType uint8 `gorm:"column:pay_type;type:tinyint(1);default:1;comment:支付类型,1为微信,2为支付宝,3为余额支付" json:"pay_type"` DistrictIds string `gorm:"column:district_ids;type:varchar(255);comment:地区IDS;NOT NULL" json:"district_ids"` @@ -101,7 +102,7 @@ type OrderPay struct { type OrderDown struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` StoreId int `gorm:"column:store_id;type:int(11);comment:美容院关联ID号" json:"store_id"` StoreName string `gorm:"column:store_name;type:varchar(50);comment:门店名" json:"store_name"` SaleName string `gorm:"column:sale_name;type:varchar(50);comment:销售姓名" json:"sale_name"` @@ -128,7 +129,7 @@ type OrderDown struct { type OrderSaleItems struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` StoreName string `gorm:"column:store_name;type:varchar(50);comment:门店名" json:"store_name"` TotalPrice float64 `gorm:"column:total_price;type:decimal(10,2);comment:总价;NOT NULL" json:"total_price"` PayPrice float64 `gorm:"column:pay_price;type:decimal(10,2);comment:实际支付金额" json:"pay_price"` @@ -140,7 +141,7 @@ type OrderSaleItems struct { type OrderAccount struct { Id int `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` StoreId int `gorm:"column:store_id;type:int(11);comment:美容院关联ID号" json:"store_id"` UserId int `gorm:"column:user_id;type:int(11);comment:用户ID" json:"user_id"` SaleId int `gorm:"column:sale_id;type:int(11);comment:销售员ID号" json:"sale_id"` @@ -172,7 +173,7 @@ type OrderDeliverGoodsStatus struct { type OrderImitateInfo struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` Mobile string `gorm:"column:mobile;type:char(60);comment:收货人手机号;NOT NULL" json:"mobile"` Address string `gorm:"column:address;type:varchar(255);comment:收货人地址;NOT NULL" json:"address"` Addressee string `gorm:"column:addressee;type:varchar(50);comment:收货人姓名;NOT NULL" json:"addressee"` @@ -192,7 +193,7 @@ type OrderImitateItems struct { type OrderDownInfo struct { Id int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` - OrderSn string `gorm:"column:ordersn;type:varchar(100);comment:订单号;NOT NULL" json:"ordersn"` + OrderSn string `gorm:"column:order_sn;type:varchar(100);comment:订单号;NOT NULL" json:"order_sn"` StoreId int `gorm:"column:store_id;type:int(11);comment:美容院关联ID号" json:"store_id"` StoreName string `gorm:"column:store_name;type:varchar(50);comment:门店名" json:"store_name"` SaleName string `gorm:"column:sale_name;type:varchar(50);comment:销售姓名" json:"sale_name"` @@ -224,3 +225,11 @@ type OrderTaskAndAwardHalfYear struct { type OrderTaskAndAwardYear struct { TaskAwardYearStatus uint8 `gorm:"column:task_award_year_status;type:tinyint(1);default:2;comment:结算任务与奖励年,1 为已结算,2为未结算" json:"task_awark_year_status"` } + +type OrderAuditing struct { + Id int64 `json:"id" gorm:"id"` // ID + VerifyStatus uint8 `gorm:"column:verify_status;type:tinyint(1);default:0;comment:审核状态,1为通过,2为失败,3为待审核,0为正常订单不需要审核" json:"verify_status"` + Reason string `json:"reason" gorm:"reason"` // 原因 + AdminId int64 `json:"admin_id" gorm:"admin_id"` // 操作人ID + AdminName string `json:"admin_name" gorm:"admin_name"` // 操作人姓名 +} diff --git a/services/order/internal/logic/itemsLogic.go b/services/order/internal/logic/itemsLogic.go index b48cb03..2394fd5 100644 --- a/services/order/internal/logic/itemsLogic.go +++ b/services/order/internal/logic/itemsLogic.go @@ -48,8 +48,8 @@ func (l *ItemsLogic) Items(in *order.OrderItemsRequest) (*order.Response, error) } w.Like = make(map[string]string) - w.Eq = make(map[string]string) w.Other = make(map[string]string) + w.Eq = make(map[string]string) if in.ProductId > utils.NumberZero { w.Other["FIND_IN_SET(?, product_ids)"] = strconv.FormatInt(in.ProductId, utils.NumberTen) } @@ -86,8 +86,19 @@ func (l *ItemsLogic) Items(in *order.OrderItemsRequest) (*order.Response, error) l.Logger.Error(err) return l.fail(utils.ErrorNotFund) } + + var ids []string + for _, v := range info { + l.Logger.Error("order_sn:", v.OrderSn) + ids = append(ids, v.OrderSn) + } + l.Logger.Error("ids:", ids) + l.Logger.Error(len(ids), utils.NumberOne) var productItems []dao.OrderProducts - err = model.OrderProductModel{}.Init().Items(w, &productItems) + ww := modelbase.Params{ + In: map[string][]string{"order_sn": ids}, + } + err = model.OrderProductModel{}.Init().Items(ww, &productItems) if err != nil { utils.Logger.Error("product err:", err) return l.fail(utils.ErrorNotFund) diff --git a/services/order/internal/logic/orderAuditingItemsLogic.go b/services/order/internal/logic/orderAuditingItemsLogic.go index 6e14399..f9a9b2e 100644 --- a/services/order/internal/logic/orderAuditingItemsLogic.go +++ b/services/order/internal/logic/orderAuditingItemsLogic.go @@ -64,8 +64,21 @@ func (l *OrderAuditingItemsLogic) OrderAuditingItems(in *order.OrderAuditingItem l.Logger.Error(err) return l.fail(utils.ErrorNotFund) } + + var ids []string + for _, v := range info { + ids = append(ids, v.OrderSn) + } + + if len(ids) < utils.NumberOne { + return l.ok(items) + } + var productItems []dao.OrderProducts - err = model.OrderProductModel{}.Init().Items(w, &productItems) + ww := modelbase.Params{ + In: map[string][]string{"order_sn": ids}, + } + err = model.OrderProductModel{}.Init().Items(ww, &productItems) if err != nil { utils.Logger.Error("product err:", err) return l.fail(utils.ErrorNotFund) diff --git a/services/order/internal/logic/orderAuditingLogic.go b/services/order/internal/logic/orderAuditingLogic.go index fe226e9..69f0635 100644 --- a/services/order/internal/logic/orderAuditingLogic.go +++ b/services/order/internal/logic/orderAuditingLogic.go @@ -2,6 +2,12 @@ package logic import ( "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/order/internal/dao" + "lone-services/services/order/internal/model" + "lone-services/services/order/validator" + "strconv" "lone-services/rpc/order/pb" "lone-services/services/order/internal/svc" @@ -25,7 +31,42 @@ func NewOrderAuditingLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Ord } func (l *OrderAuditingLogic) OrderAuditing(in *order.OrderAuditingRequest) (*order.Response, error) { - // todo: add your logic here and delete this line - - return &order.Response{}, nil + var v validator.AdminOrderAuditingValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + var action = utils.ActionAdd{} + var info dao.OrderAuditing + w := modelbase.Params{Eq: map[string]string{"id": strconv.Itoa(int(in.Id))}} + modelObj := model.OrderModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + action.OldContent = info + info.VerifyStatus = uint8(in.Status) + info.Reason = in.Reason + info.AdminName = adminInfo.Name + info.AdminId = adminInfo.ID + row, editErr := modelObj.Edit(w, info) + if editErr != nil { + l.Logger.Error(editErr) + return l.fail(utils.Fail) + } + if row > utils.NumberZero { + action.NewContent = info + action.Reason = in.Reason + action.Type = utils.LogActionTypeStatus + action.ModuleName = utils.LogActionModuleOrder + utils.SetActionLog(adminInfo, action) + } + return l.ok(utils.NumberOne) } diff --git a/services/order/internal/logic/orderCreateLogic.go b/services/order/internal/logic/orderCreateLogic.go index af59d22..261d3eb 100644 --- a/services/order/internal/logic/orderCreateLogic.go +++ b/services/order/internal/logic/orderCreateLogic.go @@ -2,6 +2,13 @@ package logic import ( "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/order/internal/dao" + "lone-services/services/order/internal/model" + "lone-services/services/order/validator" + "strconv" + "strings" "lone-services/rpc/order/pb" "lone-services/services/order/internal/svc" @@ -25,7 +32,133 @@ func NewOrderCreateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Order } func (l *OrderCreateLogic) OrderCreate(in *order.AdminCreateOrderRequest) (*order.Response, error) { - // todo: add your logic here and delete this line + var v validator.AdminOrderCreateValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } - return &order.Response{}, nil + w := modelbase.Params{ + Eq: map[string]string{ + "id": strconv.FormatInt(in.AddressId, utils.NumberTen), + "type": strconv.Itoa(dao.OrderTypeStore), + "target_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + }, + } + var address dao.Address + err := model.AddressModel{}.Init().GetOne(w, &address) + if err != nil { + return l.fail(utils.Fail) + } + if address.Id < utils.NumberOne { + return l.out(utils.Fail, "地址不存在") + } + + data := dao.OrderCreate{ + Note: in.Note, + Mobile: address.Mobile, + VerifyStatus: model.VerifyCheckIn, + Address: address.Address, + Addressee: address.Name, + DistrictIds: address.DistrictIds, + } + + ww := modelbase.Params{ + Eq: map[string]string{ + "type": strconv.Itoa(dao.OrderTypeStore), + }, + } + data.StoreId = int(adminInfo.ID) + data.StoreName = adminInfo.Name + data.SaleId = int(adminInfo.SaleId) + data.GroupId = int(adminInfo.GroupId) + data.SaleMobile = adminInfo.SaleMobile + data.SaleProvince = int(adminInfo.SaleProvince) + data.CreateType = dao.OrderTypeStore + data.Type = dao.OrderTypeStore + ww.Eq["store_id"] = strconv.FormatInt(adminInfo.ID, utils.NumberTen) + data.OrderSn = svc.GetOrderSn(strconv.Itoa(dao.OrderTypeStore), adminInfo.ID) + + var cart dao.Cart + + ids, pErr := svc.GetCartInfo(in.Info) + if pErr != utils.Ok { + return l.fail(utils.Fail) + } + products, pErr := svc.GetCartData(l.svcCtx.ProductSvcName, ids) + if pErr != utils.Ok { + return l.fail(utils.Fail) + } + keys := make([]string, utils.NumberZero, len(products.Items)) + var totalPrice float64 + errData := make(map[int64]int64) + productItems := []dao.OrderProductCreate{} + for _, item := range products.Items { + if buyNum, ok := ids[item.Id]; ok { + if buyNum > int64(item.Number) { + errData[item.Id] = int64(item.Number) + return l.out(utils.Fail, + item.Name+"购买数量超出库存,目前可以够买:"+strconv.Itoa(int(item.Number))) + } else { + keys = append(keys, strconv.Itoa(int(item.Id))) + totalPrice += item.Price * float64(buyNum) + productItems = append(productItems, dao.OrderProductCreate{ + OrderSn: data.OrderSn, + ProductId: int(item.Id), + ProductName: item.Name, + Price: item.Price, + Number: int(buyNum), + }) + } + } + } + if len(keys) < utils.NumberOne { + return l.out(utils.Fail, "购买信息不存在") + } + data.ProductIds = strings.Join(keys, utils.DecollatorComma) + data.TotalPrice = totalPrice + mobileObj := model.OrderModel{}.Init() + + mobileObj.Begin() + err = mobileObj.Create(&data) + if err != nil { + mobileObj.Rollback() + return l.fail(utils.Fail) + } + + for _, item := range productItems { + err = model.OrderProductModel{}.Init().Create(&item) + if err != nil { + mobileObj.Rollback() + return l.fail(utils.Fail) + } + } + + _, err = model.CartModel{}.Init().Del(ww, &cart) + if err != nil { + mobileObj.Rollback() + return l.fail(utils.Fail) + } + + //TODO 扣库存接口 + //cli, err := svc.GetRpcClient(l.svcCtx.ProductSvcName) + //if err != nil { + // mobileObj.Rollback() + // return l.fail(utils.Fail) + //} + + //productClient := product.NewProductClient(cli.Conn()) + //_, err = productClient.Number(l.ctx, &product.NumberReq{Id: item.Id, Type: utils.NumberOne, Number: buyNum}) + //if err != nil { + // mobileObj.Rollback() + // logx.Errorf("get products err: %v", err) + // return l.fail(utils.Fail, "产品库存不足") + //} + + mobileObj.Commit() + + return l.ok(utils.NumberOne) } diff --git a/services/order/internal/model/order.go b/services/order/internal/model/order.go index 5c91cc1..369e181 100644 --- a/services/order/internal/model/order.go +++ b/services/order/internal/model/order.go @@ -5,6 +5,25 @@ import ( "lone-services/services/order/internal/dao" ) +const ( + PayStatusOk = 1 //1为已支付 + PayStatusNo = 2 //2为未支付 + PayStatusIn = 3 //为支付中 + PayStatusFail = 4 //4支付失败,5已失效 + PayStatusCancel = 5 //5已失效 + + AccountOrderStatusOk = 1 //已结算 + AccountOrderStatusNo = 2 //未结算 + + AccountShareStatusOk = 1 //已结算 + AccountShareStatusNo = 2 //未结算 + + VerifyOk = 1 //通过 + VerifyRefuse = 2 //拒绝 + VerifyCheckIn = 3 //一审中 + VerifySecondCheckIn = 4 //二审中 +) + type OrderModel struct { modelbase.Base } From a3d9238cea9abc4c624d445da3632bcb964140d8 Mon Sep 17 00:00:00 2001 From: gjs Date: Fri, 28 Aug 2026 14:34:53 +0800 Subject: [PATCH 2/2] update admin --- rpc/admin/admin.pb | Bin 18392 -> 18437 bytes rpc/admin/admin.proto | 2 ++ rpc/admin/pb/admin.pb.go | 22 ++++++++++++++++-- services/admin/internal/dao/admin.go | 4 ++++ .../admin/internal/logic/admineditlogic.go | 2 ++ services/admin/validator/admin.go | 15 ++++++++---- services/sale/.gitignore | 1 + services/sale/run.toml | 2 +- 8 files changed, 40 insertions(+), 8 deletions(-) diff --git a/rpc/admin/admin.pb b/rpc/admin/admin.pb index 16c7ceb2ecb19b22bc0b7937177fae9c0a3f6675..8f3f07c64f0bbf375652b1d5314b869d2768cc04 100644 GIT binary patch delta 73 zcmcc7&)7PFal>O{rUe?4pBh^--kdCNvQ}3}h>NA9vLIE0LxE9)H3-ZW66azsPRvP- X&rFfv1PU_;v4OarDVxuj@CX9{bLtiQ delta 27 jcmZpjz<8sdal>O{rqAk=pBh^-u9+-vvUc-N6CPmzsiq5r diff --git a/rpc/admin/admin.proto b/rpc/admin/admin.proto index 0319a2c..b78f025 100644 --- a/rpc/admin/admin.proto +++ b/rpc/admin/admin.proto @@ -12,6 +12,8 @@ message AdminEditRequest { string phone = 5; string email = 6; repeated int64 roles = 7; + int32 type = 8; + int64 sale_id = 9; } message StatusRequest { diff --git a/rpc/admin/pb/admin.pb.go b/rpc/admin/pb/admin.pb.go index 9fe70bb..666f77a 100644 --- a/rpc/admin/pb/admin.pb.go +++ b/rpc/admin/pb/admin.pb.go @@ -31,6 +31,8 @@ type AdminEditRequest struct { Phone string `protobuf:"bytes,5,opt,name=phone,proto3" json:"phone,omitempty"` Email string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"` Roles []int64 `protobuf:"varint,7,rep,packed,name=roles,proto3" json:"roles,omitempty"` + Type int32 `protobuf:"varint,8,opt,name=type,proto3" json:"type,omitempty"` + SaleId int64 `protobuf:"varint,9,opt,name=sale_id,json=saleId,proto3" json:"sale_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -114,6 +116,20 @@ func (x *AdminEditRequest) GetRoles() []int64 { return nil } +func (x *AdminEditRequest) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +func (x *AdminEditRequest) GetSaleId() int64 { + if x != nil { + return x.SaleId + } + return 0 +} + type StatusRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -1422,7 +1438,7 @@ var File_admin_admin_proto protoreflect.FileDescriptor const file_admin_admin_proto_rawDesc = "" + "\n" + - "\x11admin/admin.proto\x12\x05admin\x1a\x1cgoogle/api/annotations.proto\"\xac\x01\n" + + "\x11admin/admin.proto\x12\x05admin\x1a\x1cgoogle/api/annotations.proto\"\xd9\x01\n" + "\x10AdminEditRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + @@ -1430,7 +1446,9 @@ const file_admin_admin_proto_rawDesc = "" + "\x06avatar\x18\x04 \x01(\tR\x06avatar\x12\x14\n" + "\x05phone\x18\x05 \x01(\tR\x05phone\x12\x14\n" + "\x05email\x18\x06 \x01(\tR\x05email\x12\x14\n" + - "\x05roles\x18\a \x03(\x03R\x05roles\"O\n" + + "\x05roles\x18\a \x03(\x03R\x05roles\x12\x12\n" + + "\x04type\x18\b \x01(\x05R\x04type\x12\x17\n" + + "\asale_id\x18\t \x01(\x03R\x06saleId\"O\n" + "\rStatusRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\x12\x16\n" + "\x06status\x18\x02 \x01(\x05R\x06status\x12\x16\n" + diff --git a/services/admin/internal/dao/admin.go b/services/admin/internal/dao/admin.go index ed5afb3..0eb0093 100644 --- a/services/admin/internal/dao/admin.go +++ b/services/admin/internal/dao/admin.go @@ -14,6 +14,8 @@ type Admin struct { Salt string `gorm:"column:salt;type:char(5);comment:与密码混合搭配加密;NOT NULL" json:"salt"` Roles string `gorm:"column:roles;type:varchar(255);comment:角色" json:"roles"` Status uint8 `gorm:"column:status;type:tinyint(1);default:1;comment:状态,1为正常,2为禁用;NOT NULL" json:"status"` + Type uint8 `json:"type" gorm:"type"` // 1:销售,2:管理员 + SaleId int64 `json:"sale_id" gorm:"sale_id"` // 销售ID LastTime utils.CustomTime `gorm:"column:last_time;type:datetime;default:NULL;comment:最后一次登录时间" json:"last_time"` FailNumber int `gorm:"column:fail_number;type:tinyint(2);default:0;comment:连续登录失败次数" json:"fail_number"` Reason string `gorm:"column:reason;type:varchar(255);comment:原因" json:"reason"` @@ -48,6 +50,8 @@ type AdminInfo struct { Email string `gorm:"column:email;type:varchar(255);comment:邮箱" json:"email"` Roles string `gorm:"column:roles;type:varchar(255);comment:角色" json:"roles"` LastTime utils.CustomTime `gorm:"column:last_time;type:datetime;comment:最后一次登录时间" json:"last_time"` + Type uint8 `json:"type" gorm:"type"` // 1:销售,2:管理员 + SaleId int64 `json:"sale_id" gorm:"sale_id"` // 销售ID FailNumber int `gorm:"column:fail_number;type:tinyint(2);default:0;comment:连续登录失败次数" json:"fail_number"` } diff --git a/services/admin/internal/logic/admineditlogic.go b/services/admin/internal/logic/admineditlogic.go index 7f28dc0..1ac0110 100644 --- a/services/admin/internal/logic/admineditlogic.go +++ b/services/admin/internal/logic/admineditlogic.go @@ -98,6 +98,8 @@ func (l *AdminEditLogic) AdminEdit(in *admin.AdminEditRequest) (*admin.Response, info.Roles = strings.Join(roles, utils.DecollatorComma) info.Email = in.Email info.Avatar = in.Avatar + info.Type = uint8(in.Type) + info.SaleId = in.SaleId var err error var row int64 if info.Id > utils.NumberZero { diff --git a/services/admin/validator/admin.go b/services/admin/validator/admin.go index 2617e4c..53a81a4 100644 --- a/services/admin/validator/admin.go +++ b/services/admin/validator/admin.go @@ -11,16 +11,21 @@ type AdminEditValidator struct { Phone string `validate:"required"` Email string `validate:"required,email"` Roles []int + Type int32 `validate:"required,oneof=1 2"` + SaleId int64 `validate:"required_if=Type 2"` } // GetMessage 创建/编辑 - 提示消息 func (p AdminEditValidator) GetMessage() validate.ValidatorMessages { return validate.ValidatorMessages{ - "Phone.required": "手机号不能为空", - "Email.email": "邮箱格式不对", - "Email.required": "邮箱不能为空", - "Username.required": "账号不能为空", - "Name.required": "姓名不能为空", + "Phone.required": "手机号不能为空", + "Email.email": "邮箱格式不对", + "Email.required": "邮箱不能为空", + "Username.required": "账号不能为空", + "Name.required": "姓名不能为空", + "Type.required": "姓名不能为空", + "Type.oneof": "类型不对", + "SaleId.required_if": "销售ID不能为空", } } diff --git a/services/sale/.gitignore b/services/sale/.gitignore index d05f1c7..1004e40 100644 --- a/services/sale/.gitignore +++ b/services/sale/.gitignore @@ -1,2 +1,3 @@ services/sale/logs/ services/sale/run.toml +tmp \ No newline at end of file diff --git a/services/sale/run.toml b/services/sale/run.toml index de652ef..05a692a 100644 --- a/services/sale/run.toml +++ b/services/sale/run.toml @@ -2,7 +2,7 @@ login_out_time=43200 #api接口超时时间分 login_refresh_out_time=83200 name = "sale-service" - listenOn = "0.0.0.0:10300" + listenOn = "0.0.0.0:10900" mode = "dev" [log] path = "logs"