重构CalculateOrderDeliveryFee与QueryUserDeliveryAddress
This commit is contained in:
@@ -637,7 +637,7 @@ func UpdateMyDeliveryAddress(ctx *jxcontext.Context, addressID int, payload map[
|
|||||||
}
|
}
|
||||||
|
|
||||||
func QueryUserDeliveryAddress(ctx *jxcontext.Context, userIDs []string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
func QueryUserDeliveryAddress(ctx *jxcontext.Context, userIDs []string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
addressList, totalCount, err := dao.QueryUserDeliveryAddress(dao.GetDB(), userIDs, offset, pageSize)
|
addressList, totalCount, err := dao.QueryUserDeliveryAddress(dao.GetDB(), 0, userIDs, offset, pageSize)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
pagedInfo = &model.PagedInfo{
|
pagedInfo = &model.PagedInfo{
|
||||||
TotalCount: totalCount,
|
TotalCount: totalCount,
|
||||||
@@ -649,7 +649,7 @@ func QueryUserDeliveryAddress(ctx *jxcontext.Context, userIDs []string, offset,
|
|||||||
|
|
||||||
func QueryMyDeliveryAddress(ctx *jxcontext.Context) (addressList []*dao.UserDeliveryAddressEx, err error) {
|
func QueryMyDeliveryAddress(ctx *jxcontext.Context) (addressList []*dao.UserDeliveryAddressEx, err error) {
|
||||||
_, userID := ctx.GetMobileAndUserID()
|
_, userID := ctx.GetMobileAndUserID()
|
||||||
addressList, _, err = dao.QueryUserDeliveryAddress(dao.GetDB(), []string{userID}, 0, model.UnlimitedPageSize)
|
addressList, _, err = dao.QueryUserDeliveryAddress(dao.GetDB(), 0, []string{userID}, 0, model.UnlimitedPageSize)
|
||||||
return addressList, err
|
return addressList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ func GetStoreListByMobileOrStoreIDs(db *DaoDB, mobile string, shortRoleNameList
|
|||||||
return storeList, err
|
return storeList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func QueryUserDeliveryAddress(db *DaoDB, userIDs []string, offset, pageSize int) (addressList []*UserDeliveryAddressEx, totalCount int, err error) {
|
func QueryUserDeliveryAddress(db *DaoDB, addressID int64, userIDs []string, offset, pageSize int) (addressList []*UserDeliveryAddressEx, totalCount int, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS
|
SELECT SQL_CALC_FOUND_ROWS
|
||||||
t1.*,
|
t1.*,
|
||||||
@@ -174,6 +174,10 @@ func QueryUserDeliveryAddress(db *DaoDB, userIDs []string, offset, pageSize int)
|
|||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
|
if addressID > 0 {
|
||||||
|
sql += " AND t1.id = ? "
|
||||||
|
sqlParams = append(sqlParams, addressID)
|
||||||
|
}
|
||||||
if len(userIDs) > 0 {
|
if len(userIDs) > 0 {
|
||||||
sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")"
|
sql += " AND t1.user_id IN (" + GenQuestionMarks(len(userIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, userIDs)
|
sqlParams = append(sqlParams, userIDs)
|
||||||
|
|||||||
@@ -34,12 +34,11 @@ func CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee int64, order *model.Goo
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *dao.DaoDB) (deliveryFee, addFee int64, err error) {
|
func CalculateDeliveryFee(db *dao.DaoDB, jxStoreID int, hint string, consigneeLng, consigneeLat, coordinateType, weight int, billTime time.Time) (deliveryFee, addFee int64, err error) {
|
||||||
globals.SugarLogger.Debugf("CalculateOrderDeliveryFee orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Debugf("CalculateOrderDeliveryFee orderID:%s", hint)
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
}
|
}
|
||||||
jxStoreID := jxutils.GetSaleStoreIDFromOrder(order)
|
|
||||||
var lng, lat float64
|
var lng, lat float64
|
||||||
priceInfo := &struct {
|
priceInfo := &struct {
|
||||||
CityPrice int64
|
CityPrice int64
|
||||||
@@ -63,21 +62,21 @@ func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *
|
|||||||
deliveryFee = priceInfo.CityPrice
|
deliveryFee = priceInfo.CityPrice
|
||||||
}
|
}
|
||||||
if deliveryFee == 0 {
|
if deliveryFee == 0 {
|
||||||
globals.SugarLogger.Warnf("CalculateOrderDeliveryFee 查不到美团配送价格 orderID:%s", order.VendorOrderID)
|
globals.SugarLogger.Warnf("CalculateOrderDeliveryFee 查不到美团配送价格 orderID:%s", hint)
|
||||||
deliveryFee = 650
|
deliveryFee = 650
|
||||||
}
|
}
|
||||||
if lng == 0 || lat == 0 {
|
if lng == 0 || lat == 0 {
|
||||||
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,门店:%d没有坐标信息", order.VendorOrderID, jxutils.GetSaleStoreIDFromOrder(order))
|
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,门店:%d没有坐标信息", hint, jxStoreID)
|
||||||
return 0, 0, fmt.Errorf("找不到门店:%d的坐标", jxutils.GetSaleStoreIDFromOrder(order))
|
return 0, 0, fmt.Errorf("找不到门店:%d的坐标", jxStoreID)
|
||||||
}
|
}
|
||||||
lng2, lat2, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
lng2, lat2, _ := jxutils.IntCoordinate2MarsStandard(consigneeLng, consigneeLat, coordinateType)
|
||||||
|
|
||||||
var distanceAddFee, weightAddFee, timeAddFee int64
|
var distanceAddFee, weightAddFee, timeAddFee int64
|
||||||
|
|
||||||
// 距离加价
|
// 距离加价
|
||||||
distance := jxutils.WalkingDistance(lng, lat, lng2, lat2)
|
distance := jxutils.WalkingDistance(lng, lat, lng2, lat2)
|
||||||
if distance > warningDistance {
|
if distance > warningDistance {
|
||||||
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,距离%.3fkm太远,请检查门店坐标信息", order.VendorOrderID, distance)
|
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,距离%.3fkm太远,请检查门店坐标信息", hint, distance)
|
||||||
}
|
}
|
||||||
distanceAddFee = int64(jxutils.CalcStageValue([][]float64{
|
distanceAddFee = int64(jxutils.CalcStageValue([][]float64{
|
||||||
[]float64{
|
[]float64{
|
||||||
@@ -95,8 +94,8 @@ func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *
|
|||||||
}, distance))
|
}, distance))
|
||||||
|
|
||||||
// 重量加价
|
// 重量加价
|
||||||
if order.Weight > warningWeight {
|
if weight > warningWeight {
|
||||||
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,重量:%dg太重,请检查商品属性", order.VendorOrderID, order.Weight)
|
globals.SugarLogger.Infof("[运营]计算订单配送费orderID:%s,重量:%dg太重,请检查商品属性", hint, weight)
|
||||||
}
|
}
|
||||||
weightAddFee = int64(jxutils.CalcStageValue([][]float64{
|
weightAddFee = int64(jxutils.CalcStageValue([][]float64{
|
||||||
[]float64{
|
[]float64{
|
||||||
@@ -111,7 +110,7 @@ func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *
|
|||||||
5,
|
5,
|
||||||
50,
|
50,
|
||||||
},
|
},
|
||||||
}, float64(order.Weight)/1000))
|
}, float64(weight)/1000))
|
||||||
|
|
||||||
// 其它加价
|
// 其它加价
|
||||||
hour, min, sec := billTime.Clock()
|
hour, min, sec := billTime.Clock()
|
||||||
@@ -123,10 +122,15 @@ func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *
|
|||||||
timeAddFee = jxutils.StandardPrice2Int(3)
|
timeAddFee = jxutils.StandardPrice2Int(3)
|
||||||
}
|
}
|
||||||
addFee = distanceAddFee + weightAddFee + timeAddFee
|
addFee = distanceAddFee + weightAddFee + timeAddFee
|
||||||
globals.SugarLogger.Debugf("CalculateOrderDeliveryFee orderID:%s, deliveryFee:%d addFee:%d, distance:%.3fkm distanceAddFee:%d, weight:%dg weightAddFee:%d, time:%s timeAddFee:%d", order.VendorOrderID, deliveryFee, addFee, distance, distanceAddFee, order.Weight, weightAddFee, utils.Time2TimeStr(billTime), timeAddFee)
|
globals.SugarLogger.Debugf("CalculateOrderDeliveryFee orderID:%s, deliveryFee:%d addFee:%d, distance:%.3fkm distanceAddFee:%d, weight:%dg weightAddFee:%d, time:%s timeAddFee:%d",
|
||||||
|
hint, deliveryFee, addFee, distance, distanceAddFee, weight, weightAddFee, utils.Time2TimeStr(billTime), timeAddFee)
|
||||||
return deliveryFee + addFee, addFee, nil
|
return deliveryFee + addFee, addFee, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CalculateOrderDeliveryFee(order *model.GoodsOrder, billTime time.Time, db *dao.DaoDB) (deliveryFee, addFee int64, err error) {
|
||||||
|
return CalculateDeliveryFee(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorOrderID, order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType, order.Weight, billTime)
|
||||||
|
}
|
||||||
|
|
||||||
func CalculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) {
|
func CalculateBillDeliveryFee(bill *model.Waybill) (deliveryFee, addFee int64) {
|
||||||
order, err := partner.CurOrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID)
|
order, err := partner.CurOrderManager.LoadOrder(bill.VendorOrderID, bill.OrderVendorID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user