Merge remote-tracking branch 'origin/mark' into su
This commit is contained in:
@@ -31,7 +31,7 @@ const (
|
|||||||
minute2Schedule3rdCarrier4Ebai = 30 // 饿百的最少转自配送需要的时间(分钟)
|
minute2Schedule3rdCarrier4Ebai = 30 // 饿百的最少转自配送需要的时间(分钟)
|
||||||
minMinute2Schedule3rdCarrier = 5 // 转三方配送最少等待时间(分钟)
|
minMinute2Schedule3rdCarrier = 5 // 转三方配送最少等待时间(分钟)
|
||||||
|
|
||||||
time2AutoPickupMin = 15 * time.Minute // 自动拣货等待时间,这个只有在没有PickDeadline信息才有用,否则会根据PickDeadline设置
|
time2AutoPickupMin = 14 * time.Minute // 自动拣货等待时间,这个只有在没有PickDeadline信息才有用,否则会根据PickDeadline设置
|
||||||
second2AutoPickupGap = 60 //随机60秒
|
second2AutoPickupGap = 60 //随机60秒
|
||||||
time2AutoPickupAhead = 20 * time.Second // 有最后拣货时间的提前值
|
time2AutoPickupAhead = 20 * time.Second // 有最后拣货时间的提前值
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ func getVendorPriceFromStoreSkuBind(bind *model.StoreSkuBind, vendorID int) (ven
|
|||||||
vendorPrice = bind.MtwmPrice
|
vendorPrice = bind.MtwmPrice
|
||||||
case model.VendorIDEBAI:
|
case model.VendorIDEBAI:
|
||||||
vendorPrice = bind.EbaiPrice
|
vendorPrice = bind.EbaiPrice
|
||||||
|
case model.VendorIDJX:
|
||||||
|
vendorPrice = bind.JxPrice
|
||||||
}
|
}
|
||||||
return vendorPrice
|
return vendorPrice
|
||||||
}
|
}
|
||||||
@@ -158,7 +160,9 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
|
|||||||
wrongSkuList = append(wrongSkuList, v)
|
wrongSkuList = append(wrongSkuList, v)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
actSkuMap.SyncStatus = model.SyncFlagNewMask
|
if !(vendorID == model.VendorIDJX || act.Type == model.ActSkuFake) {
|
||||||
|
actSkuMap.SyncStatus = model.SyncFlagNewMask
|
||||||
|
}
|
||||||
if v.ActPrice != 0 {
|
if v.ActPrice != 0 {
|
||||||
actSkuMap.ActualActPrice = v.ActPrice
|
actSkuMap.ActualActPrice = v.ActPrice
|
||||||
} else {
|
} else {
|
||||||
@@ -428,11 +432,9 @@ func CreateAct(ctx *jxcontext.Context, act *model.Act, vendorIDs []int, actRules
|
|||||||
actMap := &model.ActMap{
|
actMap := &model.ActMap{
|
||||||
ActID: act.ID,
|
ActID: act.ID,
|
||||||
VendorID: vendorID,
|
VendorID: vendorID,
|
||||||
|
|
||||||
SyncStatus: model.SyncFlagNewMask,
|
|
||||||
}
|
}
|
||||||
if act.Type == model.ActSkuFake {
|
if !(vendorID == model.VendorIDJX || act.Type == model.ActSkuFake) {
|
||||||
actMap.SyncStatus = 0
|
actMap.SyncStatus = model.SyncFlagNewMask
|
||||||
}
|
}
|
||||||
dao.WrapAddIDCULDEntity(actMap, ctx.GetUserName())
|
dao.WrapAddIDCULDEntity(actMap, ctx.GetUserName())
|
||||||
actMapList = append(actMapList, actMap)
|
actMapList = append(actMapList, actMap)
|
||||||
|
|||||||
@@ -85,6 +85,11 @@ type OrderList struct {
|
|||||||
OrderNo int64 `json:"orderNo"`
|
OrderNo int64 `json:"orderNo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WeimobOrderSkusExcelResult struct {
|
||||||
|
DownloadUrlFine string `json:"downloadUrlFine,omitempty"`
|
||||||
|
DownloadUrlHairy string `json:"downloadUrlHairy,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
sheetMap = map[string]*SheetParam{
|
sheetMap = map[string]*SheetParam{
|
||||||
"蔬菜": &SheetParam{
|
"蔬菜": &SheetParam{
|
||||||
@@ -877,7 +882,11 @@ func GetWeimobOrdersList(fromTimeParam, toTimeParam int64, keyword string) (aLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetWeimobOrderDetail(orderNo int64) (order *weimobapi.OrderDetail, err error) {
|
func GetWeimobOrderDetail(orderNo int64) (order *weimobapi.OrderDetail, err error) {
|
||||||
return api.WeimobAPI.QueryOrderDetail2(orderNo, false)
|
order, err = api.WeimobAPI.QueryOrderDetail2(orderNo, false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return order, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetSingleOrderResultList(params map[string]interface{}) (result []*OrderList, err error) {
|
func GetSingleOrderResultList(params map[string]interface{}) (result []*OrderList, err error) {
|
||||||
@@ -896,41 +905,55 @@ func ContainsKeyword(v *weimobapi.OrderInfo, keyword string) bool {
|
|||||||
return strings.Contains(v.ReceiverName, keyword) || strings.Contains(utils.Int64ToStr(v.OrderNo), keyword) || strings.Contains(v.ReceiverMobile, keyword)
|
return strings.Contains(v.ReceiverName, keyword) || strings.Contains(utils.Int64ToStr(v.OrderNo), keyword) || strings.Contains(v.ReceiverMobile, keyword)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetWeimobOrdersExcel(ctx *jxcontext.Context, OrderNo string) (err error) {
|
func GetWeimobOrdersExcel(ctx *jxcontext.Context, OrderNo string) (result *WeimobOrderSkusExcelResult, err error) {
|
||||||
var (
|
var (
|
||||||
DataFineList []*Data //精品
|
DataFineList []*Data //精品
|
||||||
DataHairyList []*Data //毛菜
|
DataHairyList []*Data //毛菜
|
||||||
)
|
)
|
||||||
orderSingle, err := GetWeimobOrderDetail(utils.Str2Int64(OrderNo))
|
orderSingle, err := GetWeimobOrderDetail(utils.Str2Int64(OrderNo))
|
||||||
itemList := orderSingle.ItemList
|
if err != nil {
|
||||||
for _, v := range itemList {
|
return result, err
|
||||||
if v.GoodsCode[0:1] == "0" {
|
|
||||||
DataHairy := &Data{
|
|
||||||
GoodsID: v.GoodsCode,
|
|
||||||
GoodsName: v.GoodsTitle,
|
|
||||||
GoodsNum: v.SkuNum,
|
|
||||||
}
|
|
||||||
DataHairyList = append(DataHairyList, DataHairy)
|
|
||||||
} else {
|
|
||||||
DataFine := &Data{
|
|
||||||
GoodsID: v.GoodsCode,
|
|
||||||
GoodsName: v.GoodsTitle,
|
|
||||||
GoodsNum: v.SkuNum,
|
|
||||||
}
|
|
||||||
DataFineList = append(DataFineList, DataFine)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
WriteToExcel2(ctx, DataFineList, DataHairyList)
|
if len(orderSingle.ItemList) > 0 {
|
||||||
return err
|
itemList := orderSingle.ItemList
|
||||||
|
for _, v := range itemList {
|
||||||
|
if v.GoodsCode != "" {
|
||||||
|
if v.GoodsCode[0:1] == "0" {
|
||||||
|
DataHairy := &Data{
|
||||||
|
GoodsID: v.GoodsCode,
|
||||||
|
GoodsName: v.GoodsTitle,
|
||||||
|
GoodsNum: v.SkuNum,
|
||||||
|
}
|
||||||
|
DataHairyList = append(DataHairyList, DataHairy)
|
||||||
|
} else {
|
||||||
|
DataFine := &Data{
|
||||||
|
GoodsID: v.GoodsCode,
|
||||||
|
GoodsName: v.GoodsTitle,
|
||||||
|
GoodsNum: v.SkuNum,
|
||||||
|
}
|
||||||
|
DataFineList = append(DataFineList, DataFine)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return result, errors.New(fmt.Sprintf("此订单中该商品无spu编码,请检查!订单号:[%v] ,商品名: [%v]", OrderNo, v.GoodsTitle))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return result, errors.New(fmt.Sprintf("此订单中无商品信息,请检查!订单号:[%v]", OrderNo))
|
||||||
|
}
|
||||||
|
downloadURL1, downloadURL2, err := WriteToExcel2(ctx, DataFineList, DataHairyList)
|
||||||
|
result = &WeimobOrderSkusExcelResult{
|
||||||
|
DownloadUrlFine: downloadURL1,
|
||||||
|
DownloadUrlHairy: downloadURL2,
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteToExcel2(ctx *jxcontext.Context, DataFineList, DataHairyList []*Data) (err error) {
|
func WriteToExcel2(ctx *jxcontext.Context, DataFineList, DataHairyList []*Data) (downloadURL1, downloadURL2 string, err error) {
|
||||||
var (
|
var (
|
||||||
sheetList1 []*excel.Obj2ExcelSheetConfig
|
sheetList1 []*excel.Obj2ExcelSheetConfig
|
||||||
sheetList2 []*excel.Obj2ExcelSheetConfig
|
sheetList2 []*excel.Obj2ExcelSheetConfig
|
||||||
downloadURL1, downloadURL2 string
|
fileName1, fileName2 string
|
||||||
fileName1, fileName2 string
|
noticeMsg string
|
||||||
noticeMsg string
|
|
||||||
)
|
)
|
||||||
excelConf1 := &excel.Obj2ExcelSheetConfig{
|
excelConf1 := &excel.Obj2ExcelSheetConfig{
|
||||||
Title: "sheet1",
|
Title: "sheet1",
|
||||||
@@ -965,5 +988,5 @@ func WriteToExcel2(ctx *jxcontext.Context, DataFineList, DataHairyList []*Data)
|
|||||||
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s ,%s success, downloadURL1:%s ,downloadURL2:%s", fileName1, fileName2, downloadURL1, downloadURL2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return downloadURL1, downloadURL2, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
|||||||
pageSize = FormalizePageSize(pageSize)
|
pageSize = FormalizePageSize(pageSize)
|
||||||
|
|
||||||
leftOrEmpty := ""
|
leftOrEmpty := ""
|
||||||
if len(vendorIDs) == 1 && vendorIDs[0] == -1 {
|
if len(vendorIDs) == 1 && (vendorIDs[0] == -1 || vendorIDs[0] == model.VendorIDJX) {
|
||||||
leftOrEmpty = "LEFT"
|
leftOrEmpty = "LEFT"
|
||||||
}
|
}
|
||||||
sql := fmt.Sprintf(`
|
sql := fmt.Sprintf(`
|
||||||
@@ -102,19 +102,19 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
|||||||
actID,
|
actID,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(vendorIDs) > 0 {
|
if len(vendorIDs) > 0 {
|
||||||
sql += " AND t2.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
sql += " AND t2.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
}
|
}
|
||||||
|
sql += `
|
||||||
sql += fmt.Sprintf(`
|
LEFT JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ?
|
||||||
%s JOIN store_map t3 ON t3.store_id = t1.store_id AND t3.vendor_id = t2.vendor_id AND t3.deleted_at = ?
|
|
||||||
JOIN sku t4 ON t4.id = t1.sku_id
|
JOIN sku t4 ON t4.id = t1.sku_id
|
||||||
LEFT JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
LEFT JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
||||||
LEFT JOIN store t6 ON t6.id = t1.store_id
|
LEFT JOIN store t6 ON t6.id = t1.store_id
|
||||||
JOIN sku_name t7 ON t7.id = t4.name_id
|
JOIN sku_name t7 ON t7.id = t4.name_id
|
||||||
WHERE t1.act_id = ?
|
WHERE t1.act_id = ?
|
||||||
`, leftOrEmpty)
|
`
|
||||||
sqlParams = append(sqlParams,
|
sqlParams = append(sqlParams,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
|
|||||||
@@ -104,6 +104,9 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID string) (sto
|
|||||||
storeDetail.AutoPickup = 1
|
storeDetail.AutoPickup = 1
|
||||||
storeDetail.DeliveryType = model.StoreDeliveryTypeByStore
|
storeDetail.DeliveryType = model.StoreDeliveryTypeByStore
|
||||||
storeDetail.DeliveryCompetition = 1
|
storeDetail.DeliveryCompetition = 1
|
||||||
|
if vendorID == model.VendorIDJX {
|
||||||
|
storeDetail.IsSync = 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return storeDetail, nil
|
return storeDetail, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ func (c *YongHuiController) GetWeimobOrders() {
|
|||||||
// @router /GetWeimobOrdersExcel [post]
|
// @router /GetWeimobOrdersExcel [post]
|
||||||
func (c *YongHuiController) GetWeimobOrdersExcel() {
|
func (c *YongHuiController) GetWeimobOrdersExcel() {
|
||||||
c.callGetWeimobOrdersExcel(func(params *tYonghuiGetWeimobOrdersExcelParams) (retVal interface{}, errCode string, err error) {
|
c.callGetWeimobOrdersExcel(func(params *tYonghuiGetWeimobOrdersExcelParams) (retVal interface{}, errCode string, err error) {
|
||||||
err = yonghui.GetWeimobOrdersExcel(params.Ctx, params.OrderNo)
|
retVal, err = yonghui.GetWeimobOrdersExcel(params.Ctx, params.OrderNo)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user