This commit is contained in:
richboo111
2023-04-25 10:39:28 +08:00
57 changed files with 1242 additions and 260 deletions

View File

@@ -37,6 +37,9 @@ type StoresOrderSaleInfo struct {
WaybillTipMoney int64 `json:"waybillTipMoney"` // 京西加的平台配送小费
RealEarningPrice int64 `json:"realEarningPrice"`
PlatformSettlement int64 `json:"platformSettlement"` // 真实订单的平台结算(无扣点)
ActualFee int64 `json:"actualFee"` // 真三方运单配送费
}
type OrderSkuWithActualPayPrice struct {
@@ -411,6 +414,60 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt
return skuList, err
}
type TotalShopMoney struct {
TotalShopMoney int64 `json:"totalShopMoney"`
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
}
// GetPlatformSettlement 统计平台的结算信息
func GetPlatformSettlement(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time) ([]*TotalShopMoney, error) {
sql := `
SELECT SUM(t2.total_shop_money) total_shop_money,t2.vendor_id FROM goods_order t2 WHERE t2.order_finished_at >= ? AND t2.order_finished_at <= ?
`
sqlParams := []interface{}{
finishedAtBegin,
finishedAtEnd,
}
if len(storeIDs) > 0 {
sql += " AND IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
sql += ` AND t2.status = ? GROUP BY t2.vendor_id`
sqlParams = append(sqlParams, model.OrderStatusFinished)
var total []*TotalShopMoney
err := GetRows(db, &total, sql, sqlParams...)
return total, err
}
type DeliveryFee struct {
ActualFee int64 `json:"actualFee"`
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
}
// GetPlatformDesiredFee 统计平台的订单的配送费信息
func GetPlatformDesiredFee(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time) (fee []*DeliveryFee, err error) {
sql := `
SELECT sum(b.actual_fee) actual_fee,b.order_vendor_id vendor_id FROM goods_order t2
RIGHT JOIN waybill b ON t2.vendor_order_id = b.vendor_order_id AND b.status IN (?,?) AND b.vendor_order_id <> b.vendor_waybill_id
WHERE t2.order_finished_at >= ? AND t2.order_finished_at <= ?
`
sqlParams := []interface{}{
model.WaybillStatusDelivered,
110,
finishedAtBegin,
finishedAtEnd,
}
if len(storeIDs) > 0 {
sql += " AND IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
sql += ` GROUP BY b.order_vendor_id `
err = GetRows(db, &fee, sql, sqlParams...)
return
}
func GetStoreOrderSkuList4Afs(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAtEnd time.Time, isFinish bool) (skuList []*OrderSkuWithActualPayPrice, err error) {
sql := `
SELECT t1.*,
@@ -458,6 +515,7 @@ func GetStoreOrderSkuList4Afs2(db *DaoDB, vendorOrderIDs []string) (skuList []*O
`
sqlParams = append(sqlParams, vendorOrderIDs)
}
err = GetRows(db, &skuList, sql, sqlParams...)
return skuList, err
}
@@ -502,6 +560,23 @@ func GetStoreAfsOrderSkuList2(db *DaoDB, vendorOrderIDs []string) (afsSkuList []
sql += " AND t2.vendor_order_id IN (" + GenQuestionMarks(len(vendorOrderIDs)) + ")"
sqlParams = append(sqlParams, vendorOrderIDs)
}
err = GetRows(db, &afsSkuList, sql, sqlParams...)
return afsSkuList, err
}
func GetOrderRefundSkuList(db *DaoDB, vendorOrderIDs []string) (afsSkuList []*model.OrderSkuFinancial, err error) {
sql := `
SELECT t1.*
FROM order_sku_financial t1
JOIN afs_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id AND t2.afs_order_id = t1.afs_order_id
WHERE t1.is_afs_order = 1
`
sqlParams := []interface{}{}
if len(vendorOrderIDs) > 0 {
sql += " AND t2.vendor_order_id IN (" + GenQuestionMarks(len(vendorOrderIDs)) + ")"
sqlParams = append(sqlParams, vendorOrderIDs)
}
err = GetRows(db, &afsSkuList, sql, sqlParams...)
return afsSkuList, err
}
@@ -826,7 +901,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
t5.pay_percentage, t5.comment ,t5.old_pay_percentage, t5.market_man_phone, tu.name market_man_name,
t5.operator_phone, t5.operator_phone2, t5.operator_phone3, tu1.name operator_name, tu2.name operator_name2, tu3.name operator_name3,
t6.vendor_pay_percentage,
city.name city_name, district.name district_name,
city.name city_name, district.name district_name,op.vendor_pay_type,
ROUND(IF(t1.earning_type = 1, t1.total_shop_money-t1.earning_price-IFNULL(t2.desired_fee,0), t1.total_shop_money *(t1.order_pay_percentage/2)/100)) jx_income`, model.DefaultEarningPricePercentage)
if isIncludeSku {
sql += `,
@@ -849,6 +924,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
LEFT JOIN user tu1 ON tu1.mobile = t5.operator_phone
LEFT JOIN user tu2 ON tu2.mobile = t5.operator_phone2
LEFT JOIN user tu3 ON tu3.mobile = t5.operator_phone3
LEFT JOIN order_pay op ON op.vendor_order_id = t1.vendor_order_id
-- LEFT JOIN (SELECT MAX(created_at), afs_order_id, vendor_order_id, vendor_id FROM afs_order WHERE status = 180 GROUP BY 2, 3, 4) t7 ON t7.vendor_order_id = t1.vendor_order_id AND t7.vendor_id = t1.vendor_id
-- LEFT JOIN afs_order t8 ON t8.afs_order_id = t7.afs_order_id
`
@@ -943,7 +1019,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
} else {
sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
//globals.SugarLogger.Debugf("sqlParams storeIDs========%d", storeIDs)
}
}
}
@@ -1821,8 +1896,8 @@ func GetOrderStoreIDs(db *DaoDB, beginAt, endAt time.Time, vendorID int) (storeI
// GetOrderListByStoreList 根据门店id获取正在刷单的门店商品
func GetOrderListByStoreList(db *DaoDB, storeId []int64) (order []*model.GoodsOrder, err error) {
sql := `SELECT * FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)` + `AND g.vendor_id = ? AND g.status < ?`
sqlParam := []interface{}{time.Now().AddDate(0, 0, -5), time.Now().AddDate(0, 0, 1), storeId, model.VendorIDDD, model.OrderStatusDelivering}
sql := `SELECT * FROM goods_order g WHERE g.order_created_at >= ? AND g.order_created_at <= ? AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)` + `AND g.vendor_id IN (` + GenQuestionMarks(2) + `)` + `AND g.status < ?`
sqlParam := []interface{}{time.Now().AddDate(0, 0, -5), time.Now().AddDate(0, 0, 1), storeId, []int{model.VendorIDDD, model.VendorIDEBAI}, model.OrderStatusDelivering}
if err := GetRows(db, &order, sql, sqlParam...); err != nil {
return nil, err

View File

@@ -1285,7 +1285,7 @@ func GetTopSkusByCityCode(db *DaoDB, cityCode int, orderCreate time.Time) (skuNa
AND b.sale_price > ?
AND a.order_created_at BETWEEN ? and NOW()
GROUP BY 2,3,4
ORDER BY count DESC
ORDER BY count DESC LIMIT 100
`
sqlParams := []interface{}{
utils.DefaultTimeValue,