package logic import ( "context" "fmt" "lone-services/pkg/utils" "lone-services/services/express/internal/dao" "lone-services/services/express/internal/model" "lone-services/services/express/validator" "strconv" "time" "lone-services/rpc/express/pb" "lone-services/services/express/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) type PrintBarCodeLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger BaseLogic } func NewPrintBarCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PrintBarCodeLogic { return &PrintBarCodeLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *PrintBarCodeLogic) PrintBarCode(in *express.PrintBarCodeRequest) (*express.Response, error) { var v validator.PrintBarCodeValidator 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 info []dao.CodeInfo modelObj := model.CodeModel{}.Init() for i := utils.NumberOne; i <= int(in.Number); i++ { tmp := dao.CodeCreate{ Code: l.getCode(in.ProductId, adminInfo.ID), ProductId: int(in.ProductId), AdminId: int(adminInfo.ID), AdminName: adminInfo.Name, Status: utils.StatusOk, } err := modelObj.Create(&tmp) if err != nil { l.Logger.Error(err) } else { info = append(info, dao.CodeInfo{ Id: tmp.Id, ProductId: tmp.ProductId, Code: tmp.Code, Status: utils.StatusOk, }) } } return l.ok(info) } func (l *PrintBarCodeLogic) getCode(productId, uId int64) string { now := time.Now() code := dao.BacCode + fmt.Sprintf("%04d", productId) + fmt.Sprintf("%04d", uId) + now.Format("20060102150405") + strconv.Itoa(utils.GetRandNum(1000)) return code }