feat: sale info
This commit is contained in:
@@ -66,6 +66,34 @@ func maskSaleMobile(info *dao.SaleInfo) {
|
||||
info.Mobile = utils.DecryptPhoneReplace(mobile)
|
||||
}
|
||||
|
||||
// querySaleInfo 查询销售详情并附带分组;mobile 脱敏,origin_mobile 为加密串。
|
||||
// 未找到时返回 (nil, nil)。
|
||||
func querySaleInfo(id int64) (*dao.SaleInfo, error) {
|
||||
var info dao.SaleInfo
|
||||
if err := (model.SaleModel{}.Init().GetOne(modelbase.Params{
|
||||
Eq: map[string]string{"id": strconv.FormatInt(id, 10)},
|
||||
}, &info)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if info.Id < utils.NumberOne {
|
||||
return nil, nil
|
||||
}
|
||||
maskSaleMobile(&info)
|
||||
|
||||
if info.GroupId > utils.NumberZero {
|
||||
var group dao.SaleGroupNameItem
|
||||
if err := (model.SaleGroupModel{}.Init().GetOne(modelbase.Params{
|
||||
Eq: map[string]string{"id": strconv.FormatInt(info.GroupId, 10)},
|
||||
}, &group)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if group.Id > utils.NumberZero {
|
||||
info.Group = &group
|
||||
}
|
||||
}
|
||||
return &info, nil
|
||||
}
|
||||
|
||||
func maskSaleNameItems(items []dao.SaleNameItem) {
|
||||
for i := range items {
|
||||
mobile, err := utils.DecryptPhone(items[i].Mobile)
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"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/svc"
|
||||
"lone-services/services/sale/validator"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
type InfoInternalLogic struct {
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
logx.Logger
|
||||
}
|
||||
|
||||
func NewInfoInternalLogic(ctx context.Context, svcCtx *svc.ServiceContext) *InfoInternalLogic {
|
||||
return &InfoInternalLogic{
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
Logger: logx.WithContext(ctx),
|
||||
}
|
||||
}
|
||||
|
||||
func (l *InfoInternalLogic) InfoInternal(in *sale.InfoReq) (*sale.InfoData, error) {
|
||||
var req validator.InfoValidator
|
||||
if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty {
|
||||
return nil, status.Error(codes.InvalidArgument, msg)
|
||||
}
|
||||
|
||||
info, err := querySaleInfo(req.Id)
|
||||
if err != nil {
|
||||
l.Errorf("sale InfoInternal: %v", err)
|
||||
return nil, status.Error(codes.Internal, utils.Fail.Msg)
|
||||
}
|
||||
if info == nil {
|
||||
return nil, status.Error(codes.NotFound, utils.ErrorNotFund.Msg)
|
||||
}
|
||||
|
||||
return toSaleInfoData(info), nil
|
||||
}
|
||||
|
||||
func toSaleInfoData(info *dao.SaleInfo) *sale.InfoData {
|
||||
data := &sale.InfoData{
|
||||
Id: info.Id,
|
||||
SaleId: info.SaleId,
|
||||
Mobile: info.Mobile,
|
||||
OriginMobile: info.OriginMobile,
|
||||
Name: info.Name,
|
||||
IdCardFront: info.IdCardFront,
|
||||
IdCardBack: info.IdCardBack,
|
||||
BusinessLicense: info.BusinessLicense,
|
||||
Region: &sale.Region{
|
||||
Province: info.Region.Province,
|
||||
City: info.Region.City,
|
||||
District: info.Region.District,
|
||||
},
|
||||
ProvinceId: info.ProvinceId,
|
||||
CityId: info.CityId,
|
||||
DistrictId: info.DistrictId,
|
||||
TerritoryId: info.TerritoryId,
|
||||
TerritoryName: info.TerritoryName,
|
||||
GroupId: info.GroupId,
|
||||
Address: info.Address,
|
||||
Status: uint32(info.Status),
|
||||
Avatar: info.Avatar,
|
||||
Account: info.Account,
|
||||
Type: uint32(info.Type),
|
||||
Sex: uint32(info.Sex),
|
||||
BirthDate: info.BirthDate,
|
||||
Reason: info.Reason,
|
||||
AdminId: info.AdminId,
|
||||
AdminName: info.AdminName,
|
||||
CreateTime: info.CreateTime.String(),
|
||||
UpdateTime: info.UpdateTime.String(),
|
||||
}
|
||||
if info.Group != nil {
|
||||
data.Group = &sale.GroupItem{
|
||||
Id: info.Group.Id,
|
||||
Name: info.Group.Name,
|
||||
}
|
||||
}
|
||||
return data
|
||||
}
|
||||
@@ -2,14 +2,10 @@ package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
|
||||
"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"
|
||||
|
||||
@@ -36,16 +32,13 @@ func (l *InfoLogic) Info(in *sale.InfoReq) (*sale.Response, error) {
|
||||
return outResponse(utils.ErrorParams, msg), nil
|
||||
}
|
||||
|
||||
var info dao.SaleInfo
|
||||
if err := (model.SaleModel{}.Init().GetOne(modelbase.Params{
|
||||
Eq: map[string]string{"id": strconv.FormatInt(req.Id, 10)},
|
||||
}, &info)); err != nil {
|
||||
info, err := querySaleInfo(req.Id)
|
||||
if err != nil {
|
||||
l.Errorf("sale info: %v", err)
|
||||
return failResponse(utils.Fail), nil
|
||||
}
|
||||
if info.Id < utils.NumberOne {
|
||||
if info == nil {
|
||||
return failResponse(utils.ErrorNotFund), nil
|
||||
}
|
||||
maskSaleMobile(&info)
|
||||
return okResponse(info), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user