解决冲突
This commit is contained in:
@@ -35,9 +35,10 @@ type GoodsOrderExt struct {
|
||||
WaybillCreatedAt time.Time `orm:"type(datetime);index" json:"waybillCreatedAt"`
|
||||
WaybillFinishedAt time.Time `orm:"type(datetime)" json:"waybillFinishedAt"`
|
||||
|
||||
DistrictName string `json:"districtName"`
|
||||
CityName string `json:"cityName"`
|
||||
PayPercentage int `json:"payPercentage"`
|
||||
DistrictName string `json:"districtName"`
|
||||
CityName string `json:"cityName"`
|
||||
PayPercentage int `json:"payPercentage"`
|
||||
OldPayPercentage int `json:"oldPayPercentage"`
|
||||
|
||||
SkuInfo string `json:"skuInfo,omitempty"`
|
||||
SkuInfo2 string `json:"skuInfo2,omitempty"`
|
||||
|
||||
@@ -26,7 +26,8 @@ const (
|
||||
VendorIDDada = 101
|
||||
VendorIDMTPS = 102
|
||||
VendorIDFengNiao = 103
|
||||
VendorIDDeliveryEnd = 200
|
||||
VendorIDJDWL = 401 //京东物流
|
||||
VendorIDDeliveryEnd = 500
|
||||
|
||||
VendorIDPrinterBegin = 201
|
||||
VendorIDFeiE = 201 // 飞鹅打印机
|
||||
@@ -48,7 +49,6 @@ const (
|
||||
VendorIDQiNiuCloud = 323 // 七牛云
|
||||
VendorIDShowAPI = 325 // 万维易源
|
||||
|
||||
VendorIDJDWL = 401 //京东物流
|
||||
)
|
||||
|
||||
type VendorInfo struct {
|
||||
@@ -82,6 +82,7 @@ var (
|
||||
VendorIDZhongWu: "ZhongWu",
|
||||
|
||||
VendorIDQiNiuCloud: "Qiniu",
|
||||
VendorIDJDWL: "Jdwl",
|
||||
}
|
||||
|
||||
VendorTypeName = map[int]string{
|
||||
|
||||
@@ -767,7 +767,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
|
||||
CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price,
|
||||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at,
|
||||
t5.pay_percentage,
|
||||
t5.pay_percentage, t5.old_pay_percentage,
|
||||
city.name city_name, district.name district_name`, model.DefaultEarningPricePercentage)
|
||||
if isIncludeSku {
|
||||
sql += `,
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/aliupcapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
@@ -255,11 +257,8 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs
|
||||
IF(t11.resource_type IS NULL OR t11.resource_type <> ?, t2.img, '') img,
|
||||
IF(t12.resource_type IS NULL OR t12.resource_type <> ?, t2.img2, '') img2,
|
||||
t2.desc_img,
|
||||
t2.ex_prefix,
|
||||
t2.ex_prefix_begin,
|
||||
t2.ex_prefix_end,
|
||||
t3.jd_category_id vendor_vendor_cat_id,
|
||||
|
||||
tsu.ex_prefix, tsu.begin_at ex_prefix_begin, tsu.end_at ex_prefix_end, tsu.img_watermark,
|
||||
t3m.sync_status cat_sync_status,
|
||||
t3m.vendor_thing_id vendor_cat_id
|
||||
|
||||
@@ -286,9 +285,10 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs
|
||||
AND t3m.vendor_id = t1m.vendor_id AND t3m.vendor_org_code = t1m.vendor_org_code
|
||||
LEFT JOIN data_resource t11 ON t11.main_url = t2.img
|
||||
LEFT JOIN data_resource t12 ON t12.main_url = t2.img2
|
||||
LEFT JOIN sku_exinfo_map tsu ON tsu.name_id = t2.id AND tsu.deleted_at = ? AND tsu.vendor_id = t1m.vendor_id
|
||||
WHERE 1 = 1
|
||||
`
|
||||
sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue)
|
||||
sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
if mustDirty {
|
||||
sql += " AND t1m.sync_status IS NOT NULL AND t1m.sync_status <> 0"
|
||||
} else {
|
||||
@@ -379,3 +379,34 @@ func InsertUpcDepot(db *DaoDB, result *aliupcapi.GetAliUpcInfoResult) (err error
|
||||
_, err = ExecuteSQL(db, sql, sqlParams)
|
||||
return err
|
||||
}
|
||||
|
||||
func GetSkuExinfos(db *DaoDB, nameIDs []int, vendorIDs []int, exPrefix string, fromTime, toTime time.Time) (skuExinfoMaps []*model.SkuExinfoMap, err error) {
|
||||
sql := `
|
||||
SELECT *
|
||||
FROM sku_exinfo_map
|
||||
WHERE deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if len(nameIDs) > 0 {
|
||||
sql += " AND name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")"
|
||||
sqlParams = append(sqlParams, nameIDs)
|
||||
}
|
||||
if len(vendorIDs) > 0 {
|
||||
sql += " AND vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||
sqlParams = append(sqlParams, vendorIDs)
|
||||
}
|
||||
if exPrefix != "" {
|
||||
sql += " AND ex_prefix LIKE ?"
|
||||
sqlParams = append(sqlParams, "%"+exPrefix+"%")
|
||||
}
|
||||
if fromTime != utils.ZeroTimeValue && toTime != utils.ZeroTimeValue {
|
||||
sql += " AND NOT (begin_at > ? OR end_at < ?)"
|
||||
sqlParams = append(sqlParams, toTime, fromTime)
|
||||
}
|
||||
if err = GetRows(db, &skuExinfoMaps, sql, sqlParams...); err == nil {
|
||||
return skuExinfoMaps, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -75,23 +75,29 @@ type StoreSkuSyncInfo struct {
|
||||
ExPrefix string
|
||||
ExPrefixBegin *time.Time
|
||||
ExPrefixEnd *time.Time
|
||||
|
||||
// NameID int `orm:"column(name_id)"`
|
||||
VendorNameID string `orm:"column(vendor_name_id)"` // 暂时无用
|
||||
Name string
|
||||
Unit string
|
||||
Upc string
|
||||
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
||||
NameStatus int
|
||||
SellCities []string
|
||||
NameCategoryID int `orm:"column(name_category_id)"`
|
||||
YbNameSuffix string //银豹的商品条码后缀
|
||||
YbBarCode string //银豹的商品条码
|
||||
JdsStockSwitch int
|
||||
VendorNameID string `orm:"column(vendor_name_id)"` // 暂时无用
|
||||
Name string
|
||||
Unit string
|
||||
Upc string
|
||||
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
||||
NameStatus int
|
||||
SellCities []string
|
||||
NameCategoryID int `orm:"column(name_category_id)"`
|
||||
YbNameSuffix string //银豹的商品条码后缀
|
||||
YbBarCode string //银豹的商品条码
|
||||
JdsStockSwitch int
|
||||
PreparationTime int
|
||||
|
||||
// 平台相关的图片信息
|
||||
Img string
|
||||
Img2 string
|
||||
DescImg string
|
||||
Img string
|
||||
Img2 string
|
||||
Img3 string
|
||||
DescImg string
|
||||
ImgWatermark string `json:"imgWatermark"` //图片水印
|
||||
ImgMix string //合成水印后的图片
|
||||
ImgOrigin string //skuname里的img
|
||||
|
||||
VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"` // 平台商品分类(叶子结点)
|
||||
CategoryName string `json:"categoryName"` //分类名
|
||||
@@ -108,6 +114,7 @@ type StoreSkuSyncInfo struct {
|
||||
|
||||
MergedStatus int
|
||||
SkuName string
|
||||
SkuNameOrigin string
|
||||
StatusSaleBegin int16 `json:"statusSaleBegin"` //商品可售时间范围
|
||||
StatusSaleEnd int16 `json:"statusSaleEnd"`
|
||||
|
||||
@@ -403,19 +410,22 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
||||
%s vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price, t1.%s_lock_time lock_time,
|
||||
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end, t1.jds_ware_id,
|
||||
t2.*,
|
||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.status name_status, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end, t3.category_id name_category_id, t3.yb_name_suffix,
|
||||
t3.jds_stock_switch,
|
||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.status name_status, t3.category_id name_category_id, t3.yb_name_suffix,
|
||||
t3.jds_stock_switch, t3.preparation_time, t3.img_watermark, t3.ex_vendor_id, t3.img img_origin,
|
||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
||||
IF(t15.%s <> '', t15.%s, t3.img3) img3,
|
||||
IF(t13.%s <> '', t13.%s, t3.desc_img) desc_img,
|
||||
t4.%s_category_id vendor_vendor_cat_id,
|
||||
t4.name category_name,
|
||||
ts.name store_name`
|
||||
ts.name store_name,
|
||||
tsu.ex_prefix, tsu.begin_at ex_prefix_begin, tsu.end_at ex_prefix_end, tsu.img_watermark`
|
||||
fmtParams := []interface{}{
|
||||
skuVendorIDField, fieldPrefix, fieldPrefix, fieldPrefix,
|
||||
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
|
||||
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
|
||||
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
|
||||
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
|
||||
fieldPrefix,
|
||||
}
|
||||
if isSingleStorePF {
|
||||
@@ -441,7 +451,9 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
||||
LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ?
|
||||
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
|
||||
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
|
||||
LEFT JOIN data_resource t15 ON t15.main_url = t3.img3
|
||||
LEFT JOIN data_resource t13 ON t13.main_url = t3.desc_img
|
||||
LEFT JOIN sku_exinfo_map tsu ON tsu.name_id = t3.id AND tsu.deleted_at = ? AND tsu.vendor_id = t14.vendor_id
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
vendorID, utils.DefaultTimeValue,
|
||||
@@ -449,6 +461,7 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
||||
utils.DefaultTimeValue, // model.SkuStatusNormal,
|
||||
utils.DefaultTimeValue,
|
||||
utils.DefaultTimeValue,
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if globals.IsStoreSkuAct {
|
||||
sql += `
|
||||
@@ -606,7 +619,6 @@ func GetStoreSkuPriceAndWeight(db *DaoDB, vendorStoreID string, vendorID int, ve
|
||||
} else {
|
||||
sqlParams = append(sqlParams, vendorSkuIDs)
|
||||
}
|
||||
// globals.SugarLogger.Debugf(sql)
|
||||
err = GetRows(db, &l, sql, sqlParams...)
|
||||
return l, err
|
||||
}
|
||||
@@ -965,17 +977,20 @@ func DeleteSkuNameExPrefixOverdue(db *DaoDB) (num int64, err error) {
|
||||
|
||||
func GetStoreSkusByNameIDs(db *DaoDB, storeIDs []int, nameID int) (skuList []*StoreSkuSyncInfo, err error) {
|
||||
sql := `
|
||||
SELECT a.*,c.unit,c.name
|
||||
SELECT a.*, c.unit, c.name, b.name_id, a.status store_sku_status
|
||||
FROM store_sku_bind a
|
||||
JOIN sku b ON a.sku_id = b.id
|
||||
JOIN sku_name c ON b.name_id = c.id
|
||||
WHERE b.name_id = ?
|
||||
WHERE 1=1
|
||||
AND a.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
nameID,
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if nameID != 0 {
|
||||
sql += " AND b.name_id = ?"
|
||||
sqlParams = append(sqlParams, nameID)
|
||||
}
|
||||
if len(storeIDs) > 0 {
|
||||
sql += " AND a.store_id in (" + GenQuestionMarks(len(storeIDs)) + ")"
|
||||
sqlParams = append(sqlParams, storeIDs)
|
||||
@@ -1522,13 +1537,14 @@ func UpdateYbOtherSku(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error)
|
||||
func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) {
|
||||
sql := `
|
||||
UPDATE store_sku_bind
|
||||
SET jds_ware_id = ?
|
||||
SET jds_ware_id = ?, jds_id = ?
|
||||
WHERE store_id = ?
|
||||
AND sku_id = ?
|
||||
AND deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
storeSkuSyncInfo.JdsWareID,
|
||||
storeSkuSyncInfo.VendorSkuID,
|
||||
storeSkuSyncInfo.StoreID,
|
||||
storeSkuSyncInfo.SkuID,
|
||||
utils.DefaultTimeValue,
|
||||
@@ -1550,6 +1566,7 @@ type tStoreSkuAudit struct {
|
||||
MidUnitPrice int `json:"midUnitPrice"`
|
||||
CityName string `json:"cityName"`
|
||||
PayPercentage int `json:"payPercentage"`
|
||||
StoreLevel string `json:"storeLevel"`
|
||||
}
|
||||
|
||||
func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, cityName string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
@@ -1557,7 +1574,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*,
|
||||
c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img,
|
||||
d.name store_name, b.name, e.mid_unit_price, f.name city_name, d.pay_percentage
|
||||
d.name store_name, b.name, e.mid_unit_price, f.name city_name, d.pay_percentage, d.store_level
|
||||
FROM store_sku_audit a
|
||||
LEFT JOIN user b ON a.user_id = b.user_id
|
||||
LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ?
|
||||
@@ -1596,7 +1613,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int
|
||||
}
|
||||
if auditTimeStart != utils.ZeroTimeValue && auditTimeEnd != utils.ZeroTimeValue {
|
||||
sql += " AND a.updated_at BETWEEN ? AND ?"
|
||||
sqlParams = append(sqlParams, applyTimeStart, applyTimeEnd)
|
||||
sqlParams = append(sqlParams, auditTimeStart, auditTimeEnd)
|
||||
}
|
||||
if len(types) > 0 {
|
||||
sql += " AND a.type IN (" + GenQuestionMarks(len(types)) + ")"
|
||||
@@ -1614,7 +1631,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int
|
||||
sql += " AND f.name LIKE ? "
|
||||
sqlParams = append(sqlParams, "%"+cityName+"%")
|
||||
}
|
||||
sql += " ORDER BY a.updated_at DESC LIMIT ? OFFSET ?"
|
||||
sql += " ORDER BY a.updated_at LIMIT ? OFFSET ?"
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
Begin(db)
|
||||
|
||||
@@ -154,12 +154,13 @@ func (*SkuCategory) TableUnique() [][]string {
|
||||
type SkuName struct {
|
||||
ModelIDCULD
|
||||
|
||||
Prefix string `orm:"size(255)" json:"prefix"`
|
||||
Name string `orm:"size(255)" json:"name"`
|
||||
ExPrefix string `orm:"size(255)" json:"exPrefix"`
|
||||
Prefix string `orm:"size(255)" json:"prefix"`
|
||||
Name string `orm:"size(255)" json:"name"`
|
||||
|
||||
ExPrefix string `orm:"size(255)" json:"exPrefix"`
|
||||
ExPrefixBegin *time.Time `orm:"null" json:"exPrefixBegin"`
|
||||
ExPrefixEnd *time.Time `orm:"null" json:"exPrefixEnd"`
|
||||
ExVendorID int `orm:"column(ex_vendor_id)" json:"exVendorID"`
|
||||
|
||||
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid
|
||||
CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别
|
||||
@@ -171,8 +172,11 @@ type SkuName struct {
|
||||
SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性
|
||||
Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量。todo 为份的确定必须有质量
|
||||
|
||||
Img string `orm:"size(512)" json:"img"`
|
||||
Img2 string `orm:"size(512)" json:"img2"` // 第二张图片
|
||||
Img string `orm:"size(512)" json:"img"`
|
||||
Img2 string `orm:"size(512)" json:"img2"` // 第二张图片
|
||||
Img3 string `orm:"size(512)" json:"img3"` //第三张图片
|
||||
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
||||
ImgMix string `orm:"size(512)" json:"imgMix"` //图片混合水印的图片
|
||||
// ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
|
||||
// ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
|
||||
|
||||
@@ -187,8 +191,9 @@ type SkuName struct {
|
||||
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||
|
||||
// LinkID int `orm:"column(link_id);null;index" json:"linkID"`
|
||||
YbNameSuffix string `json:"ybNameSuffix"` //银豹商品后缀
|
||||
JdsStockSwitch int8 `orm:"default(1)" json:"jdsStockSwitch"`
|
||||
YbNameSuffix string `json:"ybNameSuffix"` //银豹商品后缀
|
||||
JdsStockSwitch int8 `orm:"default(1)" json:"jdsStockSwitch"` //京东商城总库存
|
||||
PreparationTime int `orm:"default(1)" json:"preparationTime"` //商品准备时长
|
||||
}
|
||||
|
||||
func (*SkuName) TableUnique() [][]string {
|
||||
@@ -279,3 +284,20 @@ type SkuNameExt struct {
|
||||
PlacesStr string `json:"-"`
|
||||
MidUnitPrice int `json:"midUnitPrice"`
|
||||
}
|
||||
|
||||
type SkuExinfoMap struct {
|
||||
ModelIDCULD
|
||||
|
||||
NameID int `orm:"column(name_id)" json:"nameID"`
|
||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||
BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` //设置起始时间
|
||||
EndAt time.Time `orm:"type(datetime);index" json:"endAt"` //设置结束时间
|
||||
ExPrefix string `orm:"size(255)" json:"exPrefix"` //额外前缀
|
||||
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
||||
}
|
||||
|
||||
func (*SkuExinfoMap) TableIndex() [][]string {
|
||||
return [][]string{
|
||||
[]string{"NameID", "VendorID", "BeginAt", "EndAt"},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,6 +292,7 @@ type Store struct {
|
||||
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` //今天是否已经推送过订单消息
|
||||
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
||||
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
|
||||
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
|
||||
|
||||
PrinterDisabled int8 `orm:"default(0)" json:"printerDisabled"` // 是否禁用网络打印机
|
||||
PrinterFontSize int8 `orm:"default(0)" json:"printerFontSize"` // 打印字体-1:小,0:正常,1:大
|
||||
@@ -335,6 +336,7 @@ type Store struct {
|
||||
PayeeBankBranchName string `orm:"size(255)" json:"payeeBankBranchName"` // 开户支行
|
||||
PayeeBankCode string `orm:"size(8)" json:"payeeBankCode"` // 开户行代码
|
||||
PayPercentage int `json:"payPercentage"`
|
||||
OldPayPercentage int `json:"oldPayPercentage"`
|
||||
|
||||
// OperatorName string `orm:"size(8)" json:"operatorName"` // 运营人姓名
|
||||
OperatorPhone string `orm:"size(16)" json:"operatorPhone"` // 京东运营人电话
|
||||
|
||||
Reference in New Issue
Block a user