Files
lone-services/services/sale/internal/logic/helper.go
T
2026-08-28 15:05:44 +08:00

123 lines
3.0 KiB
Go

package logic
import (
"strconv"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/services/sale/internal/dao"
"lone-services/services/sale/internal/model"
"lone-services/services/sale/validator"
)
func saleTypeOptions() []dao.SaleTypeOption {
return []dao.SaleTypeOption{
{Value: dao.SaleTypeStaff, Label: "销售人员"},
{Value: dao.SaleTypeAgentCorp, Label: "销售商(法人)"},
{Value: dao.SaleTypeAgentPerson, Label: "销售商(个人)"},
}
}
func buildRegion(province, city, district string) dao.RegionNames {
return dao.RegionNames{
Province: province,
City: city,
District: district,
}
}
func querySaleNames(req validator.NamesValidator) ([]dao.SaleNameItem, error) {
w := modelbase.Params{
Eq: map[string]string{"status": strconv.Itoa(int(dao.SaleStatusApproved))},
Order: "id desc",
Like: map[string]string{},
}
if req.Type > utils.NumberZero {
w.Eq["type"] = strconv.Itoa(int(req.Type))
}
if req.Level == utils.NumberOne {
w.Eq["sale_id"] = strconv.Itoa(utils.NumberZero)
}
if req.Name != utils.StringEmpty {
w.Like["name LIKE ?"] = "%" + req.Name + "%"
}
var items []dao.SaleNameItem
m := model.SaleModel{}.Init()
if err := m.Items(w, &items); err != nil {
return nil, err
}
if items == nil {
items = []dao.SaleNameItem{}
}
maskSaleNameItems(items)
return items, nil
}
func maskSaleMobile(info *dao.SaleInfo) {
if info == nil {
return
}
info.OriginMobile = info.Mobile
mobile, err := utils.DecryptPhone(info.Mobile)
if err != nil {
return
}
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)
if err != nil {
continue
}
items[i].Mobile = utils.DecryptPhoneReplace(mobile)
}
}
func validateSaleTypeRules(saleType uint32, account, businessLicense string) string {
switch uint8(saleType) {
case dao.SaleTypeAgentCorp:
if account == utils.StringEmpty {
return "缺少账户信息"
}
if businessLicense == utils.StringEmpty {
return "缺少营业执照"
}
case dao.SaleTypeAgentPerson:
if account == utils.StringEmpty {
return "缺少账户信息"
}
}
return utils.StringEmpty
}