- GetServerInfo added.
This commit is contained in:
@@ -2,13 +2,57 @@ package cms
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
)
|
||||
|
||||
type MetaData struct {
|
||||
Units []string `json:"units"`
|
||||
SpecUnits []string `json:"specUnits"`
|
||||
|
||||
DeliveryRangeType map[int]string `json:"deliveryRangeType"`
|
||||
DeliveryType map[int]string `json:"deliveryType"`
|
||||
StoreStatus map[int]string `json:"storeStatus"`
|
||||
CategoryType map[int]string `json:"categoryType"`
|
||||
SkuStatus map[int]string `json:"skuStatus"`
|
||||
VendorName map[int]string `json:"vendorName"`
|
||||
}
|
||||
|
||||
type ServerInfo struct {
|
||||
Version string `json:"version"`
|
||||
BuildDate string `json:"buildDate"`
|
||||
GitCommit string `json:"gitCommit"`
|
||||
MetaData MetaData `json:"metaData"`
|
||||
}
|
||||
|
||||
var (
|
||||
CurVendorSync VendorSync
|
||||
serverInfo *ServerInfo
|
||||
)
|
||||
|
||||
func InitServerInfo(version, buildDate, gitCommit string) {
|
||||
serverInfo = &ServerInfo{
|
||||
Version: version,
|
||||
BuildDate: buildDate,
|
||||
GitCommit: gitCommit,
|
||||
MetaData: MetaData{
|
||||
Units: model.UnitNames,
|
||||
SpecUnits: model.SpecUnitNames,
|
||||
|
||||
DeliveryRangeType: model.DeliveryTypeName,
|
||||
DeliveryType: model.DeliveryTypeName,
|
||||
StoreStatus: model.SkuStatusName,
|
||||
CategoryType: model.CategoryTypeName,
|
||||
SkuStatus: model.SkuStatusName,
|
||||
VendorName: model.VendorChineseNames,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func GetPurchaseHandler(vendorID int) partner.IPurchasePlatformHandler {
|
||||
return basesch.FixedBaseScheduler.GetPurchasePlatformFromVendorID(vendorID)
|
||||
}
|
||||
|
||||
func GetServerInfo() *ServerInfo {
|
||||
return serverInfo
|
||||
}
|
||||
|
||||
@@ -35,13 +35,6 @@ func GetVendorCategories(vendorID int, parentID int) (vendorCats []*model.SkuVen
|
||||
return vendorCats, dao.GetEntities(nil, &vendorCats, cond, false)
|
||||
}
|
||||
|
||||
func GetSkuMetaInfo() (*model.SkuMetaInfo, error) {
|
||||
return &model.SkuMetaInfo{
|
||||
Units: model.UnitNames,
|
||||
SpecUnits: model.SpecUnitNames,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// parentID 为-1表示所有
|
||||
func GetCategories(parentID int) (cats []*model.SkuCategory, err error) {
|
||||
if parentID == -1 {
|
||||
@@ -196,7 +189,7 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize
|
||||
if params["toStatus"] != nil {
|
||||
toStatus = params["toStatus"].(int)
|
||||
}
|
||||
sql += " AND t1.status >= ? AND t1.status <= ?"
|
||||
sql += " AND t2.status >= ? AND t2.status <= ?"
|
||||
sqlParams = append(sqlParams, fromStatus, toStatus)
|
||||
}
|
||||
sql += `
|
||||
@@ -210,7 +203,6 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize
|
||||
t1.comment,
|
||||
t1.brand_id,
|
||||
t1.category_id,
|
||||
t1.status,
|
||||
t1.is_global,
|
||||
t1.unit,
|
||||
t1.price,
|
||||
@@ -229,13 +221,12 @@ func GetSkuNames(keyword string, params map[string]interface{}, offset, pageSize
|
||||
t1.comment,
|
||||
t1.brand_id,
|
||||
t1.category_id,
|
||||
t1.status,
|
||||
t1.is_global,
|
||||
t1.unit,
|
||||
t1.price,
|
||||
t1.img,
|
||||
t1.elm_img_hash_code,
|
||||
CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"), '","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","weight":', t2.weight, ',"jdID":', t2.jd_id, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id, "}")), "]") skus_str
|
||||
CONCAT("[", GROUP_CONCAT(CONCAT('{"id":', t2.id, ',"status":', t2.status, ',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"), '","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","weight":', t2.weight, ',"jdID":', t2.jd_id, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id, "}")), "]") skus_str
|
||||
` + sql + `
|
||||
ORDER BY t1.id
|
||||
LIMIT ? OFFSET ?`
|
||||
|
||||
@@ -13,8 +13,9 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
SkuNameStatusNormal = 0
|
||||
SkuNameStatusDontSale = 1
|
||||
SkuStatusDeleted = -1
|
||||
SkuStatusDontSale = 0
|
||||
SkuStatusNormal = 1
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -52,6 +53,23 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
CategoryTypeName map[int]string
|
||||
SkuStatusName map[int]string
|
||||
)
|
||||
|
||||
func init() {
|
||||
CategoryTypeName = map[int]string{
|
||||
SkuCategoryNormal: "普通类别",
|
||||
SkuCategorySpecial: "特殊类别",
|
||||
}
|
||||
SkuStatusName = map[int]string{
|
||||
SkuStatusDeleted: "删除",
|
||||
SkuStatusDontSale: "下架",
|
||||
SkuStatusNormal: "上架",
|
||||
}
|
||||
}
|
||||
|
||||
// 这个指的是厂商(比如京东到家,饿百)自已的商品分类,与商家自己的商品分类是两回事
|
||||
type SkuVendorCategory struct {
|
||||
ModelIDCUL
|
||||
@@ -103,7 +121,6 @@ type SkuName struct {
|
||||
|
||||
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // 此属性暂时没有使用
|
||||
CategoryID int `orm:"column(category_id)" json:"categoryID"` // 标准类别
|
||||
Status int `json:"status"`
|
||||
|
||||
IsGlobal int8 `orm:"default(1)" json:"isGlobal"` // 是否是全部(全国)可见,如果否的话,可见性由SkuPlace决定
|
||||
Unit string `orm:"size(8)" json:"unit"`
|
||||
@@ -126,6 +143,7 @@ type Sku struct {
|
||||
SpecQuality float32 `json:"specQuality"`
|
||||
SpecUnit string `orm:"size(8)" json:"specUnit"` // 质量或容量
|
||||
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||
Status int `json:"status"`
|
||||
|
||||
JdID int64 `orm:"column(jd_id)" json:"jdID"`
|
||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||
|
||||
@@ -17,6 +17,35 @@ const (
|
||||
DeliveryRangeTypeRadius = 3
|
||||
)
|
||||
|
||||
const (
|
||||
StoreDeliveryTypeCrowdSourcing = 0 //缺省,平台众包配送,可转自送
|
||||
StoreDeliveryTypeByPlatform = 1 //平台专送
|
||||
StoreDeliveryTypeByStore = 2 //完全门店自送
|
||||
)
|
||||
|
||||
var (
|
||||
StoreStatusName map[int]string
|
||||
DeliveryRangeTypeName map[int]string
|
||||
DeliveryTypeName map[int]string
|
||||
)
|
||||
|
||||
func init() {
|
||||
StoreStatusName = map[int]string{
|
||||
StoreStatusDisabled: "禁用",
|
||||
StoreStatusClosed: "休息",
|
||||
StoreStatusOpened: "营业中",
|
||||
}
|
||||
DeliveryRangeTypeName = map[int]string{
|
||||
DeliveryRangeTypePolygon: "多边形",
|
||||
DeliveryRangeTypeRadius: "圆",
|
||||
}
|
||||
DeliveryTypeName = map[int]string{
|
||||
StoreDeliveryTypeCrowdSourcing: "平台众包配送",
|
||||
StoreDeliveryTypeByPlatform: "平台专送",
|
||||
StoreDeliveryTypeByStore: "门店自送",
|
||||
}
|
||||
}
|
||||
|
||||
type Store struct {
|
||||
ModelIDCUL
|
||||
|
||||
|
||||
@@ -25,10 +25,6 @@ type skuInfoExt struct {
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string) (err error) {
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
var jdPid int64
|
||||
if cat.ParentID != 0 {
|
||||
pCat := &model.SkuCategory{}
|
||||
@@ -39,9 +35,11 @@ func (p *PurchaseHandler) CreateCategory(cat *model.SkuCategory, userName string
|
||||
return err
|
||||
}
|
||||
}
|
||||
result, err := api.JdAPI.AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
|
||||
if err == nil {
|
||||
cat.JdID = utils.Str2Int64(result)
|
||||
if globals.EnableStoreWrite {
|
||||
result, err2 := api.JdAPI.AddShopCategory(jdPid, cat.Name, int(cat.Level), cat.Seq, userName)
|
||||
if err = err2; err == nil {
|
||||
cat.JdID = utils.Str2Int64(result)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -81,7 +79,6 @@ func (p *PurchaseHandler) UpdateCategory(cat *model.SkuCategory, userName string
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
return api.JdAPI.UpdateShopCategory(cat.JdID, cat.Name)
|
||||
}
|
||||
|
||||
@@ -89,31 +86,24 @@ func (p *PurchaseHandler) DeleteCategory(cat *model.SkuCategory, userName string
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
return api.JdAPI.DelShopCategory(cat.JdID)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) ReorderCategories(parentCat *model.SkuCategory, userName string) (err error) {
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
var cats []*model.SkuCategory
|
||||
if err = dao.GetRows(nil, &cats, "SELECT * FROM sku_category WHERE parent_id = ? ORDER BY seq", parentCat.ID); err == nil {
|
||||
jdCatIDs := make([]int64, len(cats))
|
||||
for k, v := range cats {
|
||||
jdCatIDs[k] = v.JdID
|
||||
}
|
||||
err = api.JdAPI.ChangeShopCategoryOrder(parentCat.JdID, jdCatIDs)
|
||||
if globals.EnableStoreWrite {
|
||||
err = api.JdAPI.ChangeShopCategoryOrder(parentCat.JdID, jdCatIDs)
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error)) (err error) {
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
var otherInfo skuInfoExt
|
||||
db := dao.GetDB()
|
||||
err = dao.GetRow(nil, &otherInfo, `
|
||||
@@ -160,8 +150,11 @@ func (p *PurchaseHandler) cuSku(sku *model.Sku, handler func(skuExt *skuInfoExt,
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateSku(sku *model.Sku, userName string) (err error) {
|
||||
return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error) {
|
||||
return api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, skuExt.Price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams)
|
||||
return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
if globals.EnableStoreWrite {
|
||||
vendorSkuID, err = api.JdAPI.AddSku(utils.Int2Str(sku.ID), skuExt.JdCategoryID, shopCategories, skuExt.BrandID, skuName, skuExt.Price, jxutils.IntWeight2Float(sku.Weight), []string{skuExt.Img}, 1, true, addParams)
|
||||
}
|
||||
return vendorSkuID, err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -189,9 +182,9 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s
|
||||
SpecUnit: specUnit,
|
||||
Weight: jxutils.FloatWeight2Int(float32(utils.MustInterface2Float64(mapData["weight"]))),
|
||||
JdID: utils.MustInterface2Int64(mapData["skuId"]),
|
||||
Status: jdStatus2jxStatus(int(utils.MustInterface2Int64(mapData["fixedStatus"]))),
|
||||
}
|
||||
sku.ID = int(utils.Str2Int64(utils.Interface2String(mapData["outSkuId"])))
|
||||
|
||||
db := dao.GetDB()
|
||||
shopCategories := utils.Interface2Int64List(mapData["shopCategories"])
|
||||
if len(shopCategories) > 0 {
|
||||
@@ -215,7 +208,7 @@ func (p *PurchaseHandler) ReadSku(vendorSkuID string) (skuName *model.SkuName, s
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error) {
|
||||
return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (string, error) {
|
||||
return p.cuSku(sku, func(skuExt *skuInfoExt, skuName string, shopCategories []int64, addParams map[string]interface{}) (vendorSkuID string, err error) {
|
||||
params := utils.MergeMaps(addParams)
|
||||
params["categoryId"] = skuExt.JdCategoryID
|
||||
params["shopCategories"] = shopCategories
|
||||
@@ -223,19 +216,44 @@ func (p *PurchaseHandler) UpdateSku(sku *model.Sku, userName string) (err error)
|
||||
params["skuName"] = skuName
|
||||
params["weight"] = jxutils.IntWeight2Float(sku.Weight)
|
||||
params["images"] = []string{skuExt.Img}
|
||||
|
||||
return api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params)
|
||||
params["fixedStatus"] = jxStatus2jdStatus(sku.Status)
|
||||
if globals.EnableStoreWrite {
|
||||
vendorSkuID, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params)
|
||||
}
|
||||
return vendorSkuID, err
|
||||
})
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) DeleteSku(sku *model.Sku, userName string) (err error) {
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
|
||||
params := map[string]interface{}{
|
||||
"fixedStatus": 4,
|
||||
}
|
||||
_, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params)
|
||||
if globals.EnableStoreWrite {
|
||||
_, err = api.JdAPI.UpdateSku(utils.Int2Str(sku.ID), params)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func jdStatus2jxStatus(jdStatus int) (jxStatus int) {
|
||||
switch jdStatus {
|
||||
case 1:
|
||||
jxStatus = model.SkuStatusNormal
|
||||
case 2:
|
||||
jxStatus = model.SkuStatusDontSale
|
||||
case 4:
|
||||
jxStatus = model.SkuStatusDeleted
|
||||
}
|
||||
return jxStatus
|
||||
}
|
||||
|
||||
func jxStatus2jdStatus(jxStatus int) (jdStatus int) {
|
||||
switch jxStatus {
|
||||
case model.SkuStatusNormal:
|
||||
jdStatus = 1
|
||||
case model.SkuStatusDontSale:
|
||||
jdStatus = 2
|
||||
case model.SkuStatusDeleted:
|
||||
jdStatus = 4
|
||||
}
|
||||
return jdStatus
|
||||
}
|
||||
|
||||
@@ -62,10 +62,7 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) error {
|
||||
if !globals.EnableStoreWrite {
|
||||
return nil
|
||||
}
|
||||
func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store, userName string) (err error) {
|
||||
params := map[string]interface{}{
|
||||
"outSystemId": utils.Int2Str(int(store.ID)),
|
||||
"stationName": store.Name,
|
||||
@@ -88,7 +85,10 @@ func (p *PurchaseHandler) UpdateStore(vendorStoreID string, store *model.Store,
|
||||
}
|
||||
_, params["closeStatus"] = JxStoreStatus2JdStatus(store.Status)
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||
return api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params)
|
||||
if globals.EnableStoreWrite {
|
||||
err = api.JdAPI.UpdateStoreInfo4Open(vendorStoreID, userName, params)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// 没用
|
||||
|
||||
23
controllers/cms.go
Normal file
23
controllers/cms.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
type CmsController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
// @Title 得到服务相关的一些基础信息
|
||||
// @Description 得到服务相关的一些基础信息,包括版本,及一些元数据信息
|
||||
// @Param token header string true "认证token"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetServerInfo [get]
|
||||
func (c *CmsController) GetServerInfo() {
|
||||
c.callGetServerInfo(func(params *tCmsGetServerInfoParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal = cms.GetServerInfo()
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
@@ -29,19 +29,6 @@ func (c *SkuController) GetVendorCategories() {
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 得到商品相关的一些基础信息
|
||||
// @Description 得到商品相关的一些基础信息,包括unit列表,specUnit列表
|
||||
// @Param token header string true "认证token"
|
||||
// @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
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 得到商品类别
|
||||
// @Description 得到商品类别(区别于厂商家SKU类别)
|
||||
// @Param token header string true "认证token"
|
||||
|
||||
2
main.go
2
main.go
@@ -6,6 +6,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/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"git.rosy.net.cn/jx-callback/globals/beegodb"
|
||||
@@ -25,6 +26,7 @@ var (
|
||||
|
||||
func Init() {
|
||||
// globals.Init()
|
||||
cms.InitServerInfo(Version, BuildDate, GitCommit)
|
||||
beegodb.Init()
|
||||
api.Init()
|
||||
}
|
||||
|
||||
@@ -55,6 +55,14 @@ func init() {
|
||||
MethodParams: param.Make(),
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:CmsController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:CmsController"],
|
||||
beego.ControllerComments{
|
||||
Method: "GetServerInfo",
|
||||
Router: `/GetServerInfo`,
|
||||
AllowHTTPMethods: []string{"get"},
|
||||
MethodParams: param.Make(),
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"],
|
||||
beego.ControllerComments{
|
||||
Method: "CreateWaybillOnProviders",
|
||||
@@ -159,14 +167,6 @@ 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: "GetSkuNames",
|
||||
|
||||
@@ -36,6 +36,11 @@ func init() {
|
||||
&controllers.AuthController{},
|
||||
),
|
||||
),
|
||||
beego.NSNamespace("/cms",
|
||||
beego.NSInclude(
|
||||
&controllers.CmsController{},
|
||||
),
|
||||
),
|
||||
)
|
||||
beego.AddNamespace(ns)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user