- basic cms structure.

This commit is contained in:
gazebo
2018-09-02 19:11:54 +08:00
parent d46bc8981a
commit 945431d566
19 changed files with 576 additions and 211 deletions

View File

@@ -1,72 +1,9 @@
package cms
import (
"reflect"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/gormdb"
"github.com/qor/admin"
"github.com/qor/qor"
"github.com/qor/qor/resource"
"errors"
)
var (
curAdmin *admin.Admin
ErrHaveNotImplementedYet = errors.New("还没有实现")
)
func Init() {
gormdb.Init()
curAdmin = admin.New(&admin.AdminConfig{
DB: gormdb.GetDB(),
SiteName: "京西管理系统v0.0.1",
})
storeRes := curAdmin.AddResource(&model.Store{})
lngMeta := storeRes.GetMeta("Lng")
lngMeta.Type = "float"
lngMeta.SetSetter(func(record interface{}, metaValue *resource.MetaValue, context *qor.Context) {
store := record.(*model.Store)
store.Lng = int(utils.Str2Float64((metaValue.Value.([]string))[0]) * 1000000)
globals.SugarLogger.Debugf("metaValue:%v", reflect.TypeOf(metaValue.Value))
})
lngMeta.SetValuer(func(record interface{}, context *qor.Context) (result interface{}) {
store := record.(*model.Store)
result = float64(store.Lng) / 1000000
return result
})
curAdmin.AddResource(&model.StoreSub{})
curAdmin.AddResource(&model.Sku{})
curAdmin.AddResource(&model.SkuName{})
}
func GetAdmin() *admin.Admin {
return curAdmin
}
// func SaveMapSlice2DB(db *gorm.DB, data []map[string]interface{}, tableName string, keyMaps map[string]string) {
// if len(data) == 0 {
// return
// }
// sql := "INSERT INTO " + tableName + "("
// for k := range data[0] {
// realK, ok := keyMaps[k]
// if !ok {
// realK = k
// }
// sql += realK + ","
// }
// sql = sql[:len(sql)-1] + ") "
// for _, dataRow := range data {
// for k, v := range dataRow {
// realK, ok := keyMaps[k]
// if !ok {
// realK = k
// }
// sql += "("
// }
// }
// }

View File

@@ -0,0 +1,19 @@
package cms
import (
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/gormdb"
)
func GetVendorCategories(vendorID int) ([]*model.SkuVendorCategory, error) {
db := gormdb.GetDB()
cats := []*model.SkuVendorCategory{}
return cats, db.Where("vendor_id = ?", vendorID).Find(&cats).Error
}
func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
return &model.SkuMetaInfo{
Units: model.UnitNames,
SpecUnits: model.SpecUnitNames,
}, nil
}

View File

@@ -0,0 +1,22 @@
package cms
import (
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/gormdb"
)
func GetCities(parentCode int, vendorID int, includeDisabled bool) ([]*model.Place, error) {
db := gormdb.GetDB()
places := []*model.Place{}
sql := "enabled = 1 "
if includeDisabled {
sql = "1 = 1 "
}
if vendorID >= 0 {
if vendorID == model.VendorIDJD {
return places, db.Where(sql + "AND jd_code <> 0 AND level >= 2").Find(&places).Error
}
return nil, ErrHaveNotImplementedYet
}
return places, db.Where(sql+"AND parent_code = ?", parentCode).Find(&places).Error
}

View File

@@ -0,0 +1,72 @@
package qorcms
import (
"reflect"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/gormdb"
"github.com/qor/admin"
"github.com/qor/qor"
"github.com/qor/qor/resource"
)
var (
curAdmin *admin.Admin
)
func Init() {
gormdb.Init()
curAdmin = admin.New(&admin.AdminConfig{
DB: gormdb.GetDB(),
SiteName: "京西管理系统v0.0.1",
})
storeRes := curAdmin.AddResource(&model.Store{})
lngMeta := storeRes.GetMeta("Lng")
lngMeta.Type = "float"
lngMeta.SetSetter(func(record interface{}, metaValue *resource.MetaValue, context *qor.Context) {
store := record.(*model.Store)
store.Lng = int(utils.Str2Float64((metaValue.Value.([]string))[0]) * 1000000)
globals.SugarLogger.Debugf("metaValue:%v", reflect.TypeOf(metaValue.Value))
})
lngMeta.SetValuer(func(record interface{}, context *qor.Context) (result interface{}) {
store := record.(*model.Store)
result = float64(store.Lng) / 1000000
return result
})
curAdmin.AddResource(&model.StoreSub{})
curAdmin.AddResource(&model.Sku{})
curAdmin.AddResource(&model.SkuName{})
}
func GetAdmin() *admin.Admin {
return curAdmin
}
// func SaveMapSlice2DB(db *gorm.DB, data []map[string]interface{}, tableName string, keyMaps map[string]string) {
// if len(data) == 0 {
// return
// }
// sql := "INSERT INTO " + tableName + "("
// for k := range data[0] {
// realK, ok := keyMaps[k]
// if !ok {
// realK = k
// }
// sql += realK + ","
// }
// sql = sql[:len(sql)-1] + ") "
// for _, dataRow := range data {
// for k, v := range dataRow {
// realK, ok := keyMaps[k]
// if !ok {
// realK = k
// }
// sql += "("
// }
// }
// }

View File

@@ -1,19 +1 @@
package skuman
import (
"git.rosy.net.cn/jx-callback/business/model"
)
const (
defJdCategoryID = 20462
)
type Sku struct {
*model.Sku
}
func New(sku *model.Sku) *Sku {
return &Sku{
Sku: sku,
}
}

View File

@@ -17,3 +17,8 @@ type GoodsOrderCountInfo struct {
Status int `json:"status"`
Count int `json:"count"`
}
type SkuMetaInfo struct {
Units []string `json:"units"`
SpecUnits []string `json:"specUnits"`
}

View File

@@ -1,14 +1,52 @@
package dao
import (
"fmt"
"reflect"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/gormdb"
"github.com/jinzhu/gorm"
)
func GetRows(db *gorm.DB, inPtr interface{}, sql string, values ...interface{}) (err error) {
if db == nil {
db = gormdb.GetDB()
}
topTypeInfo := reflect.TypeOf(inPtr)
if topTypeInfo.Kind() != reflect.Ptr {
panic("SelectEntities inPtr should be slice ptr (*[]Type)")
}
typeInfo := topTypeInfo.Elem()
if typeInfo.Kind() != reflect.Slice {
fmt.Printf("type:%s", typeInfo.String())
panic("SelectEntities inPtr should be slice ptr (*[]Type)")
}
elmType := typeInfo.Elem()
valueInfo := reflect.ValueOf(inPtr)
rows, err := db.Raw(sql, values...).Rows()
if err == nil {
defer rows.Close()
for rows.Next() {
var value reflect.Value
if elmType.Kind() == reflect.Ptr {
value = reflect.New(elmType.Elem())
} else {
value = reflect.New(elmType)
}
db.ScanRows(rows, value.Interface())
if elmType.Kind() != reflect.Ptr {
value = value.Elem()
}
valueInfo.Elem().Set(reflect.Append(valueInfo.Elem(), value))
}
return nil
}
return err
}
func GetEntity(item interface{}, db *gorm.DB) error {
if db == nil {
db = gormdb.GetDB()
@@ -20,9 +58,7 @@ func GetEntity(item interface{}, db *gorm.DB) error {
}
func GetSellCities(skuNameID int, vendorID int, db *gorm.DB) (cities []*model.Place, err error) {
if db == nil {
db = gormdb.GetDB()
}
cities = []*model.Place{}
sql := `
SELECT DISTINCT t3.*
FROM sku_name_place_bind t1
@@ -33,16 +69,5 @@ func GetSellCities(skuNameID int, vendorID int, db *gorm.DB) (cities []*model.Pl
if vendorID == model.VendorIDJD {
sql += "AND t3.jd_code <> 0\n"
}
rows, err := db.Raw(sql, skuNameID).Rows()
if err == nil {
defer rows.Close()
places := make([]*model.Place, 0)
for rows.Next() {
place := new(model.Place)
db.ScanRows(rows, place)
places = append(places, place)
}
return places, nil
}
return nil, err
return cities, GetRows(nil, &cities, sql, skuNameID)
}

View File

@@ -0,0 +1,36 @@
package dao
import (
"testing"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/jx-callback/globals/beegodb"
"git.rosy.net.cn/jx-callback/globals/gormdb"
"github.com/astaxie/beego"
)
func init() {
beego.InitBeegoBeforeTest("/Users/xujianhua/go/src/git.rosy.net.cn/jx-callback/conf/app.conf")
// beego.BConfig.RunMode = "dev" // InitBeegoBeforeTest会将runmode设置为test
globals.Init()
beegodb.Init()
gormdb.Init()
api.Init()
}
func TestSelectEntities(t *testing.T) {
places := []*model.Place{}
GetRows(nil, &places, `
SELECT DISTINCT t3.*
FROM sku_name_place_bind t1
JOIN place t2 ON t1.place_code = t2.code
JOIN place t3 ON (t2.level = 2 AND t2.code = t3.code) OR (t2.level = 1 AND t2.code = t3.parent_code)
WHERE t1.sku_name_id = ?
`, 40)
globals.SugarLogger.Debug(utils.Format4Output(places, false))
}

View File

@@ -3,22 +3,22 @@ package model
import "time"
type ModelO struct {
ID int `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
ID int `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
DeletedAt *time.Time `sql:"index"`
LastOperator string `gorm:"type:varchar(32)"` // 最后操作员
LastOperator string `gorm:"type:varchar(32)" json:"lastOperator"` // 最后操作员
}
type ModelIDCU struct {
ID int `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
ID int `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type ModelIDCUO struct {
ID int `gorm:"primary_key"`
CreatedAt time.Time
UpdatedAt time.Time
LastOperator string `gorm:"type:varchar(32)"` // 最后操作员
ID int `gorm:"primary_key" json:"id"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
LastOperator string `gorm:"type:varchar(32)" json:"lastOperator"` // 最后操作员
}

View File

@@ -10,15 +10,15 @@ const (
)
type Place struct {
ID int
Code int `gorm:"unique_index"` // 国家标准代码
Name string `gorm:"type:varchar(16);index"` // 如果是直辖市,省的概念不加“市”来区别
ParentCode int // 上级代码
PostCode string `gorm:"type:varchar(8);index"`
Level int8 // 城市级别,参见相关常量定义
TelCode string `gorm:"type:varchar(8);index"`
JdCode int `gorm:"index"` // 对应的京东代码
Enabled int8 // 是否启用
MtpsPrice int // 分为单位
UpdatedAt time.Time
ID int `json:"-"`
Code int `gorm:"unique_index" json:"code"` // 国家标准代码
Name string `gorm:"type:varchar(16);index" json:"name"` // 如果是直辖市,省的概念不加“市”来区别
ParentCode int `json:"parentCode"` // 上级代码
PostCode string `gorm:"type:varchar(8);index" json:"postCode"`
Level int8 `json:"level"` // 城市级别,参见相关常量定义
TelCode string `gorm:"type:varchar(8);index" json:"telCode"`
JdCode int `gorm:"index" json:"jdCode"` // 对应的京东代码
Enabled int8 `json:"enabled"` // 是否启用
MtpsPrice int `json:"mtpsPrice"` // 分为单位
UpdatedAt time.Time `json:"updatedAt"`
}

View File

@@ -47,14 +47,18 @@ var (
}
)
// 这个指的是京东自已的商品分类,与商家自己的商品分类是两回事
type SkuJdCategory struct {
// 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事
type SkuVendorCategory struct {
ModelIDCUO
Name string `gorm:"type:varchar(255);index"`
Level int
ParentID int
VendorCategoryID string `gorm:"type:varchar(48);unique_index:unique_index_id_vendor_id" json:"vendorCategoryID"`
VendorID int `gorm:"unique_index:unique_index_id_vendor_id" json:"vendorID"`
Name string `gorm:"type:varchar(255);index" json:"name"`
IsLeaf int8 `json:"isLeaf"`
Level int `json:"level"`
ParentID string `gorm:"type:varchar(255);index" json:"parentID"` // 父ID引用的是VendorCategoryID而不是ID
}
// 基础数据,除了商家商品类别外,基本都以京东到家为准
type SkuCategory struct {
ModelIDCUO
Name string `gorm:"type:varchar(255);unique_index"`
@@ -63,19 +67,17 @@ type SkuCategory struct {
Type int8 // 类别类型
Seq int
JdID int64 `gorm:"index"` // 这个是指商家自己的商品类别在京东平台上的ID
JdCategoryID int // 这个是指对应的京东商品类别
ElmID int64 `gorm:"index"`
MtID string `gorm:"type:varchar(48);index"`
DidiID string `gorm:"type:varchar(48);index"`
}
JdID int64 `gorm:"index"` // 这个是指商家自己的商品类别在京东平台上的ID
JdCategoryID int // 这个是指对应的京东商品类别
type StoreSkuCategoryMap struct {
ModelIDCUO
StoreID int
SkuCategoryID int
// ElmID int64 `gorm:"index"` // 饿了么是单店模式,不需要
ElmCategoryID int64 // 这个是指对应的饿了么商品类别
ElmID string `gorm:"type:varchar(48)"`
// EbaiID int64 `gorm:"index"` // 饿百是单店模式,不需要
EbaiCategoryID int64 // 这个是指对应的饿百商品类别
// MtID string `gorm:"type:varchar(48);index"`
// DidiID string `gorm:"type:varchar(48);index"`
}
type SkuName struct {
@@ -84,7 +86,7 @@ type SkuName struct {
Name string `gorm:"type:varchar(255)"`
Comment string `gorm:"type:varchar(255)"`
BrandID int
BrandID int `gorm:"default:0"` // 此属性暂时没有使用
CategoryID int // 标准类别
Status int
@@ -112,6 +114,16 @@ type SkuNamePlaceBind struct {
PlaceCode int `gorm:"unique_index:unique_sku_name_id_sku_place_id"`
}
// 以下为门店相关数据
type StoreSkuCategoryMap struct {
ModelIDCUO
StoreID int
SkuCategoryID int
ElmID int64 `gorm:"index"`
EbaiID int64 `gorm:"index"`
}
type StoreSkuBind struct {
ModelIDCUO
StoreID int `gorm:"unique_index:unique_store_id_sku_id"`
@@ -120,5 +132,6 @@ type StoreSkuBind struct {
Price int // 单位为分不用int64的原因是这里不需要累加
Status int
ElmID int64
ElmID int64 `gorm:"index"`
EbaiID int64 `gorm:"index"`
}

37
controllers/cms_sku.go Normal file
View File

@@ -0,0 +1,37 @@
package controllers
import (
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"github.com/astaxie/beego"
)
type SkuController struct {
beego.Controller
}
// @Title 得到厂商商品类别
// @Description 得到厂商商品类别区别于商家SKU类别
// @Param token header string true "认证toke"
// @Param vendorID query int true "厂商ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetVendorCategories [get]
func (c *SkuController) GetVendorCategories() {
c.callGetVendorCategories(func(params *tSkuGetVendorCategoriesParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetVendorCategories(params.VendorID)
return retVal, "", err
})
}
// @Title 得到商品相关的一些基础信息
// @Description 得到商品相关的一些基础信息包括unit列表specUnit列表
// @Param token header string true "认证toke"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetSkuMetaInfo [get]
func (c *SkuController) GetSkuMetaInfo() {
c.callGetSkuMetaInfo(func(params *tSkuGetSkuMetaInfoParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.GetSkuMetaInfo()
return retVal, "", err
})
}

34
controllers/cms_store.go Normal file
View File

@@ -0,0 +1,34 @@
package controllers
import (
"errors"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"github.com/astaxie/beego"
)
type StoreController struct {
beego.Controller
}
// @Title 得到地点(省,城市,区)信息
// @Description parentCode与vendorID必传入一个vendorID的意思是得到所有与这个厂商相关的城市列表
// @Param token header string true "认证toke"
// @Param parentCode query int false "上级地点code。地点级别省为1市为2区为3缺省为市"
// @Param vendorID query int false "得到所有与这个厂商相关的省与城市列表"
// @Param includeDisabled query bool false "是否包括禁用的城市"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetCities [get]
func (c *StoreController) GetCities() {
c.callGetCities(func(params *tStoreGetCitiesParams) (retVal interface{}, errCode string, err error) {
if c.GetString("vendorID") == "" {
params.VendorID = -1 // -1表示没有指定因为0表示京东到家
}
if params.VendorID == -1 && params.ParentCode == 0 {
return nil, "", errors.New("parentCode与vendorID至少要指定一个")
}
retVal, err = cms.GetCities(params.ParentCode, params.VendorID, params.IncludeDisabled)
return retVal, "", err
})
}

View File

@@ -12,38 +12,41 @@ import (
)
const (
StrRequiredParamIsEmpty = "参数[%s]为空或数值不合法!"
strRequiredParamIsEmpty = "参数[%s]为空或数值不合法!"
)
type tOrderSelfDeliveredParams struct {
type tStoreGetCitiesParams struct {
Token string
VendorOrderID string
ParentCode int
VendorID int
IncludeDisabled bool
}
// func (c *OrderController) SelfDelivered() {
// c.callSelfDelivered(func(params *tOrderSelfDeliveredParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// func (c *StoreController) GetCities() {
// c.callGetCities(func(params *tStoreGetCitiesParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callSelfDelivered(handler func(params *tOrderSelfDeliveredParams) (interface{}, string, error)) {
func (c *StoreController) callGetCities(handler func(params *tStoreGetCitiesParams) (interface{}, string, error)) {
var err error
params := &tOrderSelfDeliveredParams{}
params := &tStoreGetCitiesParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
if params.ParentCode, err = c.GetInt("parentCode", 0); err != nil {
errParams = append(errParams, "parentCode")
}
if params.VendorID, err = c.GetInt("vendorID", 0); err != nil {
errParams = append(errParams, "vendorID")
}
if params.IncludeDisabled, err = c.GetBool("includeDisabled", false); err != nil {
errParams = append(errParams, "includeDisabled")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -68,20 +71,20 @@ func (c *OrderController) callSelfDelivered(handler func(params *tOrderSelfDeliv
c.ServeJSON()
}
type tOrderGetOrderSkuInfoParams struct {
type tOrderCreateWaybillOnProvidersParams struct {
Token string
VendorOrderID string
VendorID int
}
// func (c *OrderController) GetOrderSkuInfo() {
// c.callGetOrderSkuInfo(func(params *tOrderGetOrderSkuInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// func (c *OrderController) CreateWaybillOnProviders() {
// c.callCreateWaybillOnProviders(func(params *tOrderCreateWaybillOnProvidersParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callGetOrderSkuInfo(handler func(params *tOrderGetOrderSkuInfoParams) (interface{}, string, error)) {
func (c *OrderController) callCreateWaybillOnProviders(handler func(params *tOrderCreateWaybillOnProvidersParams) (interface{}, string, error)) {
var err error
params := &tOrderGetOrderSkuInfoParams{}
params := &tOrderCreateWaybillOnProvidersParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
@@ -90,13 +93,66 @@ func (c *OrderController) callGetOrderSkuInfo(handler func(params *tOrderGetOrde
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
if err == nil {
result, errCode2, err2 := handler(params)
if err = err2; err == nil {
resultMarshal, _ := json.Marshal(result)
c.Data["json"] = &CallResult{
Code: "0",
Data: string(resultMarshal),
}
} else if errCode2 != "0" && errCode2 != "" {
errCode = errCode2
}
}
if err != nil {
c.Data["json"] = &CallResult{
Code: errCode,
Desc: err.Error(),
}
}
c.ServeJSON()
}
type tOrderSelfDeliveredParams struct {
Token string
VendorOrderID string
VendorID int
}
// func (c *OrderController) SelfDelivered() {
// c.callSelfDelivered(func(params *tOrderSelfDeliveredParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callSelfDelivered(handler func(params *tOrderSelfDeliveredParams) (interface{}, string, error)) {
var err error
params := &tOrderSelfDeliveredParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
if params.VendorID, err = c.GetInt("vendorID", 0); err != nil {
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -133,7 +189,7 @@ type tOrderGetStoreOrderInfoParams struct {
// func (c *OrderController) GetStoreOrderInfo() {
// c.callGetStoreOrderInfo(func(params *tOrderGetStoreOrderInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// return retVal, "", err
// })
// }
func (c *OrderController) callGetStoreOrderInfo(handler func(params *tOrderGetStoreOrderInfoParams) (interface{}, string, error)) {
@@ -159,13 +215,66 @@ func (c *OrderController) callGetStoreOrderInfo(handler func(params *tOrderGetSt
errParams = append(errParams, "pageSize")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.StoreID == "" {
errParams = append(errParams, "storeID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
if err == nil {
result, errCode2, err2 := handler(params)
if err = err2; err == nil {
resultMarshal, _ := json.Marshal(result)
c.Data["json"] = &CallResult{
Code: "0",
Data: string(resultMarshal),
}
} else if errCode2 != "0" && errCode2 != "" {
errCode = errCode2
}
}
if err != nil {
c.Data["json"] = &CallResult{
Code: errCode,
Desc: err.Error(),
}
}
c.ServeJSON()
}
type tOrderGetOrderSkuInfoParams struct {
Token string
VendorOrderID string
VendorID int
}
// func (c *OrderController) GetOrderSkuInfo() {
// c.callGetOrderSkuInfo(func(params *tOrderGetOrderSkuInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callGetOrderSkuInfo(handler func(params *tOrderGetOrderSkuInfoParams) (interface{}, string, error)) {
var err error
params := &tOrderGetOrderSkuInfoParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
if params.VendorID, err = c.GetInt("vendorID", 0); err != nil {
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -199,7 +308,7 @@ type tOrderGetOrderInfoParams struct {
// func (c *OrderController) GetOrderInfo() {
// c.callGetOrderInfo(func(params *tOrderGetOrderInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// return retVal, "", err
// })
// }
func (c *OrderController) callGetOrderInfo(handler func(params *tOrderGetOrderInfoParams) (interface{}, string, error)) {
@@ -216,13 +325,13 @@ func (c *OrderController) callGetOrderInfo(handler func(params *tOrderGetOrderIn
errParams = append(errParams, "refresh")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -247,35 +356,30 @@ func (c *OrderController) callGetOrderInfo(handler func(params *tOrderGetOrderIn
c.ServeJSON()
}
type tOrderSelfDeliveringParams struct {
type tSkuGetVendorCategoriesParams struct {
Token string
VendorOrderID string
VendorID int
}
// func (c *OrderController) SelfDelivering() {
// c.callSelfDelivering(func(params *tOrderSelfDeliveringParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// func (c *SkuController) GetVendorCategories() {
// c.callGetVendorCategories(func(params *tSkuGetVendorCategoriesParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callSelfDelivering(handler func(params *tOrderSelfDeliveringParams) (interface{}, string, error)) {
func (c *SkuController) callGetVendorCategories(handler func(params *tSkuGetVendorCategoriesParams) (interface{}, string, error)) {
var err error
params := &tOrderSelfDeliveringParams{}
params := &tSkuGetVendorCategoriesParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
if params.VendorID, err = c.GetInt("vendorID", 0); err != nil {
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -308,7 +412,7 @@ type tOrderFinishedPickupParams struct {
// func (c *OrderController) FinishedPickup() {
// c.callFinishedPickup(func(params *tOrderFinishedPickupParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// return retVal, "", err
// })
// }
func (c *OrderController) callFinishedPickup(handler func(params *tOrderFinishedPickupParams) (interface{}, string, error)) {
@@ -322,13 +426,13 @@ func (c *OrderController) callFinishedPickup(handler func(params *tOrderFinished
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -353,20 +457,20 @@ func (c *OrderController) callFinishedPickup(handler func(params *tOrderFinished
c.ServeJSON()
}
type tOrderCreateWaybillOnProvidersParams struct {
type tOrderSelfDeliveringParams struct {
Token string
VendorOrderID string
VendorID int
}
// func (c *OrderController) CreateWaybillOnProviders() {
// c.callCreateWaybillOnProviders(func(params *tOrderCreateWaybillOnProvidersParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// func (c *OrderController) SelfDelivering() {
// c.callSelfDelivering(func(params *tOrderSelfDeliveringParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *OrderController) callCreateWaybillOnProviders(handler func(params *tOrderCreateWaybillOnProvidersParams) (interface{}, string, error)) {
func (c *OrderController) callSelfDelivering(handler func(params *tOrderSelfDeliveringParams) (interface{}, string, error)) {
var err error
params := &tOrderCreateWaybillOnProvidersParams{}
params := &tOrderSelfDeliveringParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
params.VendorOrderID = c.GetString("vendorOrderID")
@@ -375,13 +479,13 @@ func (c *OrderController) callCreateWaybillOnProviders(handler func(params *tOrd
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -414,7 +518,7 @@ type tOrderGetStoreOrderCountInfoParams struct {
// func (c *OrderController) GetStoreOrderCountInfo() {
// c.callGetStoreOrderCountInfo(func(params *tOrderGetStoreOrderCountInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// return retVal, "", err
// })
// }
func (c *OrderController) callGetStoreOrderCountInfo(handler func(params *tOrderGetStoreOrderCountInfoParams) (interface{}, string, error)) {
@@ -428,13 +532,13 @@ func (c *OrderController) callGetStoreOrderCountInfo(handler func(params *tOrder
errParams = append(errParams, "lastHours")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.StoreID == "" {
errParams = append(errParams, "storeID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
@@ -467,7 +571,7 @@ type tOrderGetOrderWaybillInfoParams struct {
// func (c *OrderController) GetOrderWaybillInfo() {
// c.callGetOrderWaybillInfo(func(params *tOrderGetOrderWaybillInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// return retVal, "", err
// })
// }
func (c *OrderController) callGetOrderWaybillInfo(handler func(params *tOrderGetOrderWaybillInfoParams) (interface{}, string, error)) {
@@ -481,13 +585,57 @@ func (c *OrderController) callGetOrderWaybillInfo(handler func(params *tOrderGet
errParams = append(errParams, "vendorID")
}
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("something wrong!")
err = errors.New("Something wrong!")
}
if params.VendorOrderID == "" {
errParams = append(errParams, "vendorOrderID")
}
if err == nil && len(errParams) > 0 {
err = fmt.Errorf(StrRequiredParamIsEmpty, strings.Join(errParams, ","))
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"
if err == nil {
result, errCode2, err2 := handler(params)
if err = err2; err == nil {
resultMarshal, _ := json.Marshal(result)
c.Data["json"] = &CallResult{
Code: "0",
Data: string(resultMarshal),
}
} else if errCode2 != "0" && errCode2 != "" {
errCode = errCode2
}
}
if err != nil {
c.Data["json"] = &CallResult{
Code: errCode,
Desc: err.Error(),
}
}
c.ServeJSON()
}
type tSkuGetSkuMetaInfoParams struct {
Token string
}
// func (c *SkuController) GetSkuMetaInfo() {
// c.callGetSkuMetaInfo(func(params *tSkuGetSkuMetaInfoParams) (retVal interface{}, errCode string, err error) {
// return retVal, "", err
// })
// }
func (c *SkuController) callGetSkuMetaInfo(handler func(params *tSkuGetSkuMetaInfoParams) (interface{}, string, error)) {
var err error
params := &tSkuGetSkuMetaInfoParams{}
errParams := []string{}
params.Token = c.Ctx.Input.Header("token")
if params.Token == "" { // 对于token缺失报一个模糊的错误信息
err = errors.New("Something wrong!")
}
if len(errParams) > 0 {
err = fmt.Errorf(strRequiredParamIsEmpty, strings.Join(errParams, ","))
}
errCode := "-1"

View File

@@ -1 +1,2 @@
bee generate docs
cp swagger/param_parser.go.txt controllers/param_parser.go

View File

@@ -31,10 +31,10 @@ func AutoMigrate() {
// db.DropTableIfExists(&model.Place{})
// db.DropTableIfExists(&model.Store{}, &model.StoreSub{}, &model.StoreMap{})
// db.DropTableIfExists(&model.SkuCategory{}, &model.SkuJdCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
// db.DropTableIfExists(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{}, &model.SkuCategory{})
db.AutoMigrate(&model.Place{})
db.AutoMigrate(&model.Store{}, &model.StoreSub{}, &model.StoreMap{})
db.AutoMigrate(&model.SkuJdCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
db.AutoMigrate(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{})
db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&model.SkuCategory{})
}

View File

@@ -7,7 +7,7 @@ import (
"os"
"git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/jxstore/qorcms"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/jx-callback/globals/beegodb"
@@ -87,9 +87,9 @@ func main() {
orderman.LoadPendingOrders()
}
if beego.AppConfig.DefaultBool("enableStore", false) {
cms.Init()
qorcms.Init()
mux := http.NewServeMux()
curAdmin := cms.GetAdmin()
curAdmin := qorcms.GetAdmin()
curAdmin.MountTo("/admin", mux)
beego.Handler("/admin/*", mux)
}

View File

@@ -79,4 +79,28 @@ func init() {
MethodParams: param.Make(),
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "GetSkuMetaInfo",
Router: `/GetSkuMetaInfo`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
beego.ControllerComments{
Method: "GetVendorCategories",
Router: `/GetVendorCategories`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
beego.ControllerComments{
Method: "GetCities",
Router: `/GetCities`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Params: nil})
}

View File

@@ -21,6 +21,16 @@ func init() {
&controllers.OrderController{},
),
),
beego.NSNamespace("/sku",
beego.NSInclude(
&controllers.SkuController{},
),
),
beego.NSNamespace("/store",
beego.NSInclude(
&controllers.StoreController{},
),
),
)
beego.AddNamespace(ns)