From f8283bb1597487ebbc2a87347cd296a71f324379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 26 Nov 2019 18:31:04 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=BE=AE=E7=9B=9F?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/yonghui/yonghui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index c11e689ed..75b2a1204 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -1025,7 +1025,7 @@ func GetWeimobOrdersExcel(ctx *jxcontext.Context, OrderNo string) (result *Weimo if v.GoodsCode != "" { if v.GoodsCode[0:1] == "0" { DataHairy := &Data{ - GoodsID: v.GoodsCode, + GoodsID: v.GoodsCode[1:len(v.GoodsCode)], GoodsName: v.GoodsTitle, GoodsNum: v.SkuNum, } From 7913fc96b96a23a3486cd03b0109544e91d38f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 27 Nov 2019 08:23:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=BE=AE=E7=9B=9F?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/yonghui/yonghui.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index 75b2a1204..c4443afd9 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -1023,17 +1023,23 @@ func GetWeimobOrdersExcel(ctx *jxcontext.Context, OrderNo string) (result *Weimo itemList := orderSingle.ItemList for _, v := range itemList { if v.GoodsCode != "" { + var goodsTile string + if v.GoodsTitle[0:1] == "(" { + goodsTile = v.GoodsTitle[strings.Index(v.GoodsTitle, ")")+1 : len(v.GoodsTitle)] + } else { + goodsTile = v.GoodsTitle + } if v.GoodsCode[0:1] == "0" { DataHairy := &Data{ GoodsID: v.GoodsCode[1:len(v.GoodsCode)], - GoodsName: v.GoodsTitle, + GoodsName: goodsTile, GoodsNum: v.SkuNum, } DataHairyList = append(DataHairyList, DataHairy) } else { DataFine := &Data{ GoodsID: v.GoodsCode, - GoodsName: v.GoodsTitle, + GoodsName: goodsTile, GoodsNum: v.SkuNum, } DataFineList = append(DataFineList, DataFine) From 3ffb353901f7b1adc36624f118a26379670cebcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 27 Nov 2019 10:05:57 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=80=81=E6=A0=BC=E6=8B=93=E5=BA=97?= =?UTF-8?q?=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 87 +++++++++++++++++++++++++++ controllers/temp_op.go | 15 +++++ routers/commentsRouter_controllers.go | 9 +++ 3 files changed, 111 insertions(+) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index eed263e6c..ab50dcf51 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -2,26 +2,32 @@ package tempop import ( "bytes" + "errors" "fmt" "image" "image/jpeg" "image/png" + "io" + "mime/multipart" "net/http" "regexp" "strings" "sync" "time" + "git.rosy.net.cn/baseapi" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/partner/delivery" "github.com/360EntSecGroup-Skylar/excelize" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -1359,3 +1365,84 @@ func JdStoreInfo1125() (hint string, err error) { } return hint, err } + +func JdStoreInfoCoordinateRecover(ctx *jxcontext.Context, files []*multipart.FileHeader) (err error) { + if len(files) == 0 { + return errors.New("没有文件上传!") + } + fileHeader := files[0] + file1, err := fileHeader.Open() + defer file1.Close() + + db := dao.GetDB() + storeList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + if err == nil { + var validStoreList []*dao.StoreDetail + for _, v := range storeList { + if v.Status != model.StoreStatusDisabled && v.CreatedAt.Sub(utils.Str2Time("2019-10-01")) > 0 { + storeInfo, err := api.JdAPI.GetStoreInfoByStationNo2(v.VendorStoreID) + if err == nil && storeInfo.CreateTime.GoTime().Sub(utils.Str2Time("2019-10-25")) > 0 { + if storeDetail, err := dao.GetStoreDetail(db, v.StoreID, v.VendorID); err == nil { + validStoreList = append(validStoreList, storeDetail) + } + } + } + } + getStoreList := func(lng, lat, lng2, lat2 int) (vendorStoreIDs []string) { + for _, v := range validStoreList { + if v.Lng >= lng && v.Lng <= lng2 && v.Lat >= lat && v.Lat <= lat2 { + vendorStoreIDs = append(vendorStoreIDs, v.VendorStoreID) + } + } + return vendorStoreIDs + } + sheetName := "老格明细" + file, err2 := excelize.OpenReader(file1) + if err = err2; err == nil { + rows, err2 := file.GetRows(sheetName) + if err = err2; err == nil { + str2Coords := func(str string) (lng, lat int) { + list := strings.Split(str, ",") + if len(list) >= 2 { + lng, lat = jxutils.StandardCoordinate2Int(utils.Str2Float64WithDefault(list[1], 0)), jxutils.StandardCoordinate2Int(utils.Str2Float64WithDefault(list[0], 0)) + } + return lng, lat + } + for i := 1; i < len(rows); i++ { + lng, lat := str2Coords(rows[i][8]) + lng2, lat2 := str2Coords(rows[i][7]) + vendorStoreIDs := getStoreList(lng, lat, lng2, lat2) + countInfo := fmt.Sprintf("京西已拓%d", len(vendorStoreIDs)) + axis, _ := excelize.CoordinatesToCellName(5, i+1) + file.SetCellStr(sheetName, axis, countInfo) + axis2, _ := excelize.CoordinatesToCellName(6, i+1) + file.SetCellStr(sheetName, axis2, strings.Join(vendorStoreIDs, ",")) + } + filename := ExecuteFileName(fileHeader.Filename) + buf := bytes.NewBuffer(nil) + if _, err = io.Copy(buf, file1); err != nil { + return err + } + baseapi.SugarLogger.Debugf("WriteToExcel:save %s success", filename) + downloadURL, err := jxutils.UploadExportContent(buf.Bytes(), filename) + if err != nil { + baseapi.SugarLogger.Errorf("WriteToExcel:upload %s, failed error:%v", filename, err) + } else { + if authInfo, err := ctx.GetV2AuthInfo(); err == nil { + noticeMsg := fmt.Sprintf("path=%s\n", downloadURL) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "导出老格恢复拓店进度成功", noticeMsg) + } + baseapi.SugarLogger.Debugf("WriteToExcel:upload %s success, downloadURL:%s", filename, downloadURL) + } + } + } + } + return err +} + +func ExecuteFileName(filename string) (name string) { + filePrefix := filename[strings.LastIndex(filename, "."):len(filename)] + fileRealName := filename[0:strings.LastIndex(filename, ".")] + name = fileRealName + utils.Int64ToStr(time.Now().Unix()) + filePrefix + return name +} diff --git a/controllers/temp_op.go b/controllers/temp_op.go index c9524bd6c..392cfa305 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -352,3 +352,18 @@ func (c *TempOpController) FixMtwmCategory() { return retVal, "", err }) } + +// @Title 老格恢复拓店进度 +// @Description 老格恢复拓店进度 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /JdStoreInfoCoordinateRecover [post] +func (c *TempOpController) JdStoreInfoCoordinateRecover() { + c.callJdStoreInfoCoordinateRecover(func(params *tTempopJdStoreInfoCoordinateRecoverParams) (retVal interface{}, errCode string, err error) { + r := c.Ctx.Request + files := r.MultipartForm.File["userfiles"] + err = tempop.JdStoreInfoCoordinateRecover(params.Ctx, files) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 20f0c80d2..b69a0ce75 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1791,6 +1791,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], + beego.ControllerComments{ + Method: "JdStoreInfoCoordinateRecover", + Router: `/JdStoreInfoCoordinateRecover`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "PrintMsg", From 7c913c0d5bcbb31aa48bafdbf475f5c1bfbec38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 27 Nov 2019 11:04:03 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E5=BE=AE=E7=9B=9F?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=AC=E8=A5=BF=E4=BB=B7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/yonghui/yonghui.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index c4443afd9..3087d3209 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -771,6 +771,7 @@ func UpdateJxPriceByWeimob(ctx *jxcontext.Context, storeIDs []int, isAsync, isCo var ( storeSkuBindInfoList []interface{} skuBindInfos []*cms.StoreSkuBindInfo + nameID int ) db := dao.GetDB() dataFailed.dataFailedList = dataFailed.dataFailedList[0:0] @@ -793,9 +794,19 @@ func UpdateJxPriceByWeimob(ctx *jxcontext.Context, storeIDs []int, isAsync, isCo if err != nil { baseapi.SugarLogger.Errorf("QueryGoodsDetail error:%v", err) } - nameID := int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode)) - unitPrice := int(utils.Float64TwoInt64(goodsDetail.SkuMap.SingleSku.CostPrice * 100)) goodsID := goodsDetail.OuterGoodsCode + unitPrice := int(utils.Float64TwoInt64(goodsDetail.SkuMap.SingleSku.CostPrice * 100)) + if goodsDetail.SkuMap.SingleSku.OuterSkuCode != "" { + nameID = int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode)) + } else { + outPutData := DataFailed{ + GoodsID: goodsID, + GoodsName: goodsDetail.Title, + Comment: "微盟上没有该商品的商品编码", + } + dataFailed.AppendData2(outPutData) + nameID = -1 + } skuList, err := dao.GetStoreSkusByNameIDs(db, storeIDs, nameID) if len(skuList) > 0 { if goodsDetail.OuterGoodsCode != "" { From bbc9be5503844b5854642ca56cc02c01b46d5121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 Nov 2019 08:49:53 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9F=A5=E6=89=BE=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E7=94=A8=E6=88=B7=E5=85=B3=E8=81=94=E7=9A=84?= =?UTF-8?q?=E6=B4=BB=E8=B7=83=E9=97=A8=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 110 +++++++++++++++++++++++++- business/jxstore/yonghui/yonghui.go | 2 +- business/model/dao/store.go | 19 +++++ controllers/temp_op.go | 15 ++++ routers/commentsRouter_controllers.go | 9 +++ 5 files changed, 153 insertions(+), 2 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index ab50dcf51..8005bb8bb 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -15,6 +15,8 @@ import ( "sync" "time" + "git.rosy.net.cn/jx-callback/business/jxutils/excel" + "git.rosy.net.cn/baseapi" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/partner/delivery" @@ -26,6 +28,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxstore/yonghui" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" @@ -40,7 +43,24 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" ) -var innerDataPat *regexp.Regexp +var ( + innerDataPat *regexp.Regexp + jdUsersStruct GetJdUsersStruct + titleList = []string{ + "用户名", + "关联门店", + } +) + +type GetJdUsersStruct struct { + locker sync.RWMutex + userMap []JdUserStruct +} + +type JdUserStruct struct { + UserName string `json:"用户名"` + StoreIDs string `json:"关联门店"` +} func init() { innerDataPat = regexp.MustCompile(`"result":(.*),"code":200`) @@ -1446,3 +1466,91 @@ func ExecuteFileName(filename string) (name string) { name = fileRealName + utils.Int64ToStr(time.Now().Unix()) + filePrefix return name } + +func GetJdUsers(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) { + var ( + jxVendorIDsMap = make(map[string]string) + ) + //获取京东有效的店 + db := dao.GetDB() + storeMapList, err := dao.GetStoreMapsListWithoutDisabled(db, []int{model.VendorIDJD}, model.StoreStatusDisabled) + for _, v := range storeMapList { + jxVendorIDsMap[v.VendorStoreID] = v.VendorStoreID + } + //获取京东商城所有用户 + storeUserList, err := api.JdAPI.PrivilegeSearchUserAll() + taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + vv := batchItemList[0].(*jdapi.StoreUserInfo) + vendorStoreIDs, err := api.JdAPI.GetJdUserBindStoreIDs(vv.ID) + var vendorStoreIDsMap = make(map[string]string, len(vendorStoreIDs)) + var vendorStoreIDsResult []string + for _, v := range vendorStoreIDs { + if jxVendorIDsMap[v] == "" { + continue + } + vendorStoreIDsMap[v] = v + } + if len(vendorStoreIDsMap) == 0 { + jdStruct := JdUserStruct{vv.LoginName, ""} + jdUsersStruct.AppendData(jdStruct) + } else { + for _, m := range vendorStoreIDsMap { + vendorStoreIDsResult = append(vendorStoreIDsResult, m) + } + jdStruct := JdUserStruct{vv.LoginName, strings.Join(vendorStoreIDsResult, ",")} + jdUsersStruct.AppendData(jdStruct) + } + return retVal, err + } + taskParallel := tasksch.NewParallelTask("获取京东商城用户列表", tasksch.NewParallelConfig(), ctx, taskFunc, storeUserList) + tasksch.HandleTask(taskParallel, task, true).Run() + _, err = taskParallel.GetResult(0) + case 1: + //写excel + WriteToExcel(task, jdUsersStruct.userMap) + } + return result, err + } + taskSeq := tasksch.NewSeqTask2("获取京东商城用户列表-序列任务", ctx, isContinueWhenError, taskSeqFunc, 2) + tasksch.HandleTask(taskSeq, nil, true).Run() + if !isAsync { + _, err = taskSeq.GetResult(0) + hint = "1" + } else { + hint = taskSeq.GetID() + } + return hint, err +} + +func (d *GetJdUsersStruct) AppendData(jd JdUserStruct) { + d.locker.RLock() + defer d.locker.RUnlock() + d.userMap = append(d.userMap, jd) +} + +func WriteToExcel(task *tasksch.SeqTask, jd []JdUserStruct) (err error) { + var sheetList []*excel.Obj2ExcelSheetConfig + var downloadURL, fileName string + excelConf := &excel.Obj2ExcelSheetConfig{ + Title: "京东用户列表", + Data: jd, + CaptionList: titleList, + } + sheetList = append(sheetList, excelConf) + if excelConf != nil { + downloadURL, fileName, err = yonghui.UploadExeclAndPushMsg(sheetList, "京东用户列表") + } else { + baseapi.SugarLogger.Debug("WriteToExcel: JdUserStruct is nil!") + } + if err != nil { + baseapi.SugarLogger.Errorf("WriteToExcel:upload %s,failed error:%v", fileName, err) + } else { + noticeMsg := fmt.Sprintf("[详情点我]path=%s, \n", downloadURL) + task.SetNoticeMsg(noticeMsg) + baseapi.SugarLogger.Debugf("WriteToExcel:upload %s, success, downloadURL:%s", fileName, downloadURL) + } + return err +} diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index 3087d3209..817eda93a 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -539,7 +539,7 @@ func updateWeiMobGoods(costPrice, salePrice float64, unit string, isCompare bool } else { outPutData := DataSuccess{ NameID: goodsDetail.OuterGoodsCode, - Name: goodsDetail.Title, + Name: newSkuTitle, Unit: unit, OrgPrice: goodsDetail.SkuMap.SingleSku.SalePrice, NowPrice: salePrice, diff --git a/business/model/dao/store.go b/business/model/dao/store.go index b5eff9d84..18ec8da5a 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -441,3 +441,22 @@ func FreightDeductionPack2Obj(packStr string) (obj *model.FreightDeductionPack) } return obj } + +func GetStoreMapsListWithoutDisabled(db *DaoDB, vendorIDs []int, status int) (storeMapList []*model.StoreMap, err error) { + sql := ` + SELECT * + FROM store_map + WHERE 1=1 + ` + sqlParams := []interface{}{} + if len(vendorIDs) > 0 { + sql += " AND vendor_id in (" + GenQuestionMarks(len(vendorIDs)) + ")" + sqlParams = append(sqlParams, vendorIDs) + } + if status != model.StoreStatusAll { + sql += " AND status != ?" + sqlParams = append(sqlParams, status) + } + err = GetRows(db, &storeMapList, sql, sqlParams...) + return storeMapList, err +} diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 392cfa305..01e799eae 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -367,3 +367,18 @@ func (c *TempOpController) JdStoreInfoCoordinateRecover() { return retVal, "", err }) } + +// @Title 查找京东用户 +// @Description 查找京东用户 +// @Param token header string true "认证token" +// @Param isAsync formData bool false "是否异步操作" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetJdUsers [post] +func (c *TempOpController) GetJdUsers() { + c.callGetJdUsers(func(params *tTempopGetJdUsersParams) (retVal interface{}, errCode string, err error) { + retVal, err = tempop.GetJdUsers(params.Ctx, params.IsAsync, params.IsContinueWhenError) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 30ea3b173..a8619ec5e 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1800,6 +1800,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], + beego.ControllerComments{ + Method: "GetJdUsers", + Router: `/GetJdUsers`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "JdStoreInfoCoordinateRecover",