Files
jx-callback/controllers/bidding.go
邹宗楠 6174d1cad0 1
2024-12-17 16:12:07 +08:00

303 lines
12 KiB
Go

package controllers
import (
"encoding/json"
"errors"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/bidding"
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
"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/excel"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web"
"strings"
"time"
)
type BiddingController struct {
web.Controller
}
// @Title 获取招标信息
// @Description 获取招标信息
// @Param token header string false "认证token"
// @Param title query string false "标题"
// @Param city query string false "标题"
// @Param startTime query string false "开始时间"
// @Param endTime query string false "结束时间"
// @Param pageSize query int false "页数"
// @Param pageNumber query int false "页码"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetBiddingMsg [get]
func (c *BiddingController) GetBiddingMsg() {
c.callGetBiddingMsg(func(params *tBindGetBiddingMsgParams) (retVal interface{}, errCode string, err error) {
retVal, err = bidding.GetBiddingMsg(params.Ctx, params.MapData)
return retVal, "", err
})
}
// GetRefundOrderList 获取退货账单
// @Title 获取招标信息
// @Description 获取招标信息
// @Param token header string true "认证token"
// @Param brandId query int true "品牌"
// @Param start query string true "开始时间"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetRefundOrderList [get]
func (c *BiddingController) GetRefundOrderList() {
c.callGetRefundOrderList(func(params *tBindGetRefundOrderListParams) (interface{}, string, error) {
data, err := bidding.GetBrandPayOrder(params.BrandId, params.Start)
return data, "", err
})
}
// GetStoreBindStatus 查询门店是否绑定成功,成功之后创建本地门店
// 查询门店是否绑定成功,成功之后创建本地门店
// @Title 查询门店是否绑定成功,成功之后创建本地门店
// @Description 查询门店是否绑定成功,成功之后创建本地门店
// @Param token header string true "认证token"
// @Param platformId query string false "授权成功平台id"
// @Param platformType query int false "授权平台id"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetStoreBindStatus [get]
func (c *BiddingController) GetStoreBindStatus() {
c.callGetStoreBindStatus(func(params *tBindGetStoreBindStatusParams) (interface{}, string, error) {
switch params.PlatformType {
case model.VendorIDMTWM:
data, err := api.Mtwm2API.GetBoundList(params.PlatformId)
if err != nil {
return nil, "", err
}
for _, v := range data {
if v.AppID == utils.Str2Int(params.PlatformId) {
return data, "", nil
}
}
return nil, "", errors.New("未查询到绑定数据,请检查美团门店id是否正确")
case model.VendorIDEBAI:
case model.VendorIDJD:
case model.VendorIDTT:
}
return nil, "", nil
})
}
// NeedDeleteGetStoreBindStatus 查询门店是否绑定成功,成功之后创建本地门店
// 查询门店是否绑定成功,成功之后创建本地门店
// @Title 查询门店是否绑定成功,成功之后创建本地门店
// @Description 查询门店是否绑定成功,成功之后创建本地门店
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /NeedDeleteGetStoreBindStatus [get]
func (c *BiddingController) NeedDeleteGetStoreBindStatus() {
c.callNeedDeleteGetStoreBindStatus(func(params *tBindNeedDeleteGetStoreBindStatusParams) (interface{}, string, error) {
dd := bidding.QueryNeedDeleteSku()
return dd, "", nil
})
}
// UpdateTiktokOrderPhoneAddress 更新抖音电话归属地
// @Title 更新抖音电话归属地
// @Description 更新抖音电话归属地
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateTiktokOrderPhoneAddress [get]
func (c *BiddingController) UpdateTiktokOrderPhoneAddress() {
c.callUpdateTiktokOrderPhoneAddress(func(params *tBindUpdateTiktokOrderPhoneAddressParams) (interface{}, string, error) {
err := bidding.UpdateTiktokOrderPhoneAddress()
return nil, "", err
})
}
// JXPrintAfsOrder 售后单打印
// @Title 售后单打印
// @Description 售后单打印
// @Param orderId query string true "订单ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /JXPrintAfsOrder [get]
func (c *BiddingController) JXPrintAfsOrder() {
c.callJXPrintAfsOrder(func(params *tBindJXPrintAfsOrderParams) (interface{}, string, error) {
afsOrder2, _ := partner.CurOrderManager.LoadAfsOrder(params.OrderId, model.VendorIDMTWM)
err := scheduler.CurrentScheduler.OnAfsOrderNew(afsOrder2, false)
return nil, "", err
})
}
// CreateSupermarketSign 创建超市签约信息
// @Title 创建超市签约信息
// @Description 创建超市签约信息:记录已经签约的门店信息
// @Param signObj formData string true "model.SupermarketSign"
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CreateSupermarketSign [post]
func (c *BiddingController) CreateSupermarketSign() {
c.callCreateSupermarketSign(func(params *tBindCreateSupermarketSignParams) (retVal interface{}, hint string, err error) {
supermarket := make([]*model.SupermarketSign, 0, 0)
if err = json.Unmarshal([]byte(params.SignObj), &supermarket); err != nil {
return nil, "", err
}
retVal = bidding.CreateSupermarketSign(supermarket, params.Ctx.GetUserID())
return retVal, "", nil
})
}
// GetSupermarketSign 查询超市签约信息
// @Title 查询超市签约信息
// @Description 查询超市签约信息:记录已经签约的门店信息
// @Param storeID formData string false "美团门店ID"
// @Param storeName formData string false "美团门店名称"
// @Param startTime formData int64 false "签约开始时间"
// @Param endTime formData int64 false "签约结束时间"
// @Param expirationStart formData int64 false "到期开始时间"
// @Param expirationEnd formData int64 false "到期结束时间"
// @Param cityName formData string false "门店城市"
// @Param storeType formData string false "门店类型"
// @Param signPeople formData string false "签约人"
// @Param page formData int64 true "页码"
// @Param size formData int64 true "页数"
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetSupermarketSign [post]
func (c *BiddingController) GetSupermarketSign() {
c.callGetSupermarketSign(func(params *tBindGetSupermarketSignParams) (retVal interface{}, hint string, err error) {
retVal, count, err := bidding.QuerySupermarketSign(params.StoreID, params.StoreName, params.CityName, params.StoreType, params.SignPeople, params.StartTime, params.EndTime, params.ExpirationStart, params.ExpirationEnd, params.Page, params.Size)
return map[string]interface{}{"data": retVal, "page": count}, "", err
})
}
// DeleteSignData 查询超市签约信息
// @Title 查询超市签约信息
// @Description 查询超市签约信息:记录已经签约的门店信息
// @Param storeID formData string true "美团门店ID"
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /DeleteSignData [delete]
func (c *BiddingController) DeleteSignData() {
c.callDeleteSignData(func(params *tBindDeleteSignDataParams) (retVal interface{}, hint string, err error) {
retVal, err = bidding.DeleteSignData(params.StoreID)
return retVal, hint, err
})
}
// DownSupermarketSign 下载超市签约信息
// @Title 下载超市签约信息
// @Description 下载超市签约信息
// @Param storeID formData string false "美团门店ID"
// @Param storeName formData string false "美团门店名称"
// @Param startTime formData int64 false "签约开始时间"
// @Param endTime formData int64 false "签约结束时间"
// @Param expirationStart formData int64 false "到期开始时间"
// @Param expirationEnd formData int64 false "到期结束时间"
// @Param cityName formData string false "门店城市"
// @Param storeType formData string false "门店类型"
// @Param signPeople formData string false "签约人"
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /DownSupermarketSign [post]
func (c *BiddingController) DownSupermarketSign() {
c.callDownSupermarketSign(func(params *tBindDownSupermarketSignParams) (retVal interface{}, hint string, err error) {
var (
stores []*model.SupermarketSign
excelBin []byte
)
task := tasksch.NewSeqTask("导出签约门店", params.Ctx,
func(task *tasksch.SeqTask, step int, params2 ...interface{}) (result interface{}, err error) {
switch step {
case 0:
stores, _, _ = bidding.QuerySupermarketSign(params.StoreID, params.StoreName, params.CityName, params.StoreType, params.SignPeople, params.StartTime, params.EndTime, params.ExpirationStart, params.ExpirationEnd, 1, model.UnlimitedPageSize)
case 1:
excelConf := &excel.Obj2ExcelSheetConfig{
Title: "签约门店导出",
Data: stores,
CaptionList: []string{
"createdAt",
"updatedAt",
"storeID",
"storeName",
"codeName",
"storeType",
"salesVolume",
"points",
"contractFee",
"signStartTime",
"signEndTime",
"signPeople",
"status",
"remake",
"reward",
"createCrowd",
},
}
excelBin = excel.Obj2Excel([]*excel.Obj2ExcelSheetConfig{excelConf})
case 2:
keyPart := []string{
params.Ctx.GetUserName(),
}
keyPart = append(keyPart, time.Now().Format("20060102T150405")+".xlsx")
key := "export/" + strings.Join(keyPart, "_")
excelURL, err2 := jxutils.UploadExportContent(excelBin, key)
if err = err2; err == nil {
//task.SetNoticeMsg(excelURL)
if authInfo, err := params.Ctx.GetV2AuthInfo(); err == nil {
noticeMsg := fmt.Sprintf("path=%s\n", excelURL)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "导出签约门店数据", noticeMsg)
}
}
}
return nil, err
}, 3)
tasksch.ManageTask(task).Run()
hint = task.GetID()
return "", hint, err
})
}
// UpdateStockBySkuID 根据skuId更新商品库存
// @Title 根据skuId更新商品库存
// @Description 批量更新库存
// @Param storeID formData int true "标准门店库存ID"
// @Param stock formData string true "库存列表"[{"skuId":110,"stock":10},{"skuId":111,"stock":10}]"
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateStockBySkuID [post]
func (c *BiddingController) UpdateStockBySkuID() {
c.callUpdateStockBySkuID(func(params *tBindUpdateStockBySkuIDParams) (retVal interface{}, hint string, err error) {
var (
stockList []*bidding.SkuIdAndStock
db = dao.GetDB()
)
if err = jxutils.Strings2Objs(params.Stock, &stockList); err != nil {
return nil, "", err
}
if err = bidding.UpdateStockBySkuId(db, params.StoreID, stockList); err != nil {
return nil, "", err
}
retVal, err = cms.CurVendorSync.SyncStoresSkus(params.Ctx, nil, 0, db, nil, []int{params.StoreID}, nil, true, true, true)
return
})
}