feat: sale manager
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"lone-services/pkg/modelbase"
|
||||
"lone-services/pkg/utils"
|
||||
"lone-services/pkg/validate"
|
||||
sale "lone-services/rpc/sale/pb"
|
||||
"lone-services/services/sale/internal/dao"
|
||||
"lone-services/services/sale/internal/model"
|
||||
"lone-services/services/sale/internal/svc"
|
||||
"lone-services/services/sale/validator"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type CreateLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewCreateLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateLogic {
|
||||
return &CreateLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *CreateLogic) Create(in *sale.CreateReq) (*sale.Response, error) {
|
||||
var req validator.CreateValidator
|
||||
if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty {
|
||||
return outResponse(utils.ErrorParams, msg), nil
|
||||
}
|
||||
if msg := validateSaleTypeRules(req.Type, req.Account, req.BusinessLicense); msg != utils.StringEmpty {
|
||||
return outResponse(utils.ErrorParams, msg), nil
|
||||
}
|
||||
|
||||
adminInfo := utils.GetUserFromCtx(l.ctx)
|
||||
if adminInfo.ID < utils.NumberOne {
|
||||
return failResponse(utils.ErrorNoLoginInfo), nil
|
||||
}
|
||||
|
||||
encryptMobile, err := utils.EncryptPhone(req.Mobile)
|
||||
if err != nil {
|
||||
l.Errorf("encrypt mobile: %v", err)
|
||||
return failResponse(utils.Fail), nil
|
||||
}
|
||||
|
||||
m := model.SaleModel{}.Init()
|
||||
var existing dao.SaleStatusUpdate
|
||||
if err := m.GetOne(modelbase.Params{Eq: map[string]string{"mobile": encryptMobile}}, &existing); err != nil {
|
||||
l.Errorf("sale create check: %v", err)
|
||||
return failResponse(utils.Fail), nil
|
||||
}
|
||||
if existing.Id > utils.NumberZero {
|
||||
return failResponse(utils.ErrorDataIsExist), nil
|
||||
}
|
||||
|
||||
data := dao.SaleCreate{
|
||||
SaleId: req.SaleId,
|
||||
Mobile: encryptMobile,
|
||||
Name: req.Name,
|
||||
IdCardFront: req.IdCardFront,
|
||||
IdCardBack: req.IdCardBack,
|
||||
BusinessLicense: req.BusinessLicense,
|
||||
Region: buildRegion(req.RegionProvince, req.RegionCity, req.RegionDistrict),
|
||||
ProvinceId: req.ProvinceId,
|
||||
CityId: req.CityId,
|
||||
DistrictId: req.DistrictId,
|
||||
TerritoryId: req.TerritoryId,
|
||||
TerritoryName: req.TerritoryName,
|
||||
GroupId: req.GroupId,
|
||||
Address: req.Address,
|
||||
Status: dao.SaleStatusApproved,
|
||||
Account: req.Account,
|
||||
Type: uint8(req.Type),
|
||||
Sex: uint8(req.Sex),
|
||||
BirthDate: req.BirthDate,
|
||||
AdminId: adminInfo.ID,
|
||||
AdminName: adminInfo.Name,
|
||||
}
|
||||
if err := m.Create(&data); err != nil {
|
||||
l.Errorf("sale create: %v", err)
|
||||
return failResponse(utils.Fail), nil
|
||||
}
|
||||
|
||||
return okResponse(nil), nil
|
||||
}
|
||||
Reference in New Issue
Block a user