Files
jx-callback/controllers/bidding.go
邹宗楠 44b4249bc8 1
2026-03-31 14:02:51 +08:00

340 lines
14 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
})
}
// UpdateMtActivity 更新美团任务数据
// @Title 更新美团任务数据
// @Description 更新美团任务数据
// @Param token header string true "认证token"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateMtActivity [get]
func (c *BiddingController) UpdateMtActivity() {
c.callUpdateMtActivity(func(params *tBindUpdateMtActivityParams) (retVal interface{}, hint string, err error) {
retVal = bidding.GetMTInfo()
return retVal, "", err
})
}
// GetActivityList 更新美团任务数据
// @Title 更新美团任务数据
// @Description 更新美团任务数据
// @Param token header string true "认证token"
// @Param startTime formData string true "开始时间"
// @Param endTime formData string true "结束时间"
// @Param storeIDs query string false "门店ID"
// @Param offset query int false "结果起始序号以0开始缺省为0"
// @Param pageSize query int false "结果页大小缺省为50-1表示全部"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetActivityList [get]
func (c *BiddingController) GetActivityList() {
c.callGetActivityList(func(params *tBindGetActivityListParams) (retVal interface{}, hint string, err error) {
var storeIDs []int
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs); err != nil {
return nil, "", err
}
retVal, err = bidding.GetStatisticsList(utils.Str2Time(params.StartTime), utils.Str2Time(params.EndTime), storeIDs, params.Offset, params.PageSize)
return
})
}