1
This commit is contained in:
@@ -68,6 +68,8 @@ type GoodsOrderExt struct {
|
||||
|
||||
OperatorPhone3 string `orm:"size(16)" json:"operatorPhone3"` // 饿百运营人电话
|
||||
OperatorName3 string `orm:"size(32)" json:"operatorName3"` // 饿百运营人组(角色)
|
||||
|
||||
VendorPayType string `json:"vendorPayType"` // 支付方式,当订单来源小程序时通过支付方式区分订单来源(w06微信/tt抖音/ks快手/支付宝)
|
||||
}
|
||||
|
||||
type OrderSkuExt struct {
|
||||
|
||||
@@ -25,7 +25,8 @@ const (
|
||||
VendorGoMei = 12 // 国美
|
||||
VendorIDTT = 13 // 抖音平台小程序
|
||||
VendorIDDD = 14 // 抖店
|
||||
VendorIDPurchaseEnd = 15
|
||||
VendorIDKS = 15 // 快手小程序
|
||||
VendorIDPurchaseEnd = 20
|
||||
|
||||
VendorIDWXPay = 51 // 微信支付
|
||||
|
||||
|
||||
@@ -567,7 +567,7 @@ func IsWaybillFinalStatus(status int) bool {
|
||||
const (
|
||||
JXC4AppId = "wx4b5930c13f8b1170" // 京西菜市appId type=weixinmini
|
||||
JXC4BusinessAppId = "wx08a5c2a8581414ff" // 京西商家appId type=weixinmini
|
||||
JXC4TiktokAppId = "tta6a1d01c399f264201" // 抖音appID
|
||||
JXC4TiktokAppId = "ttaceeda5333d7a7ab01" // 抖音appID
|
||||
|
||||
JXC4ClientAppID = "wxf3657c94aa01a3f0" //京西菜市客户端APP ID type="weixinapp"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -11,9 +11,10 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
PayTypeWX = 1 // 微信支付
|
||||
PayTypeTL = 2 // 通联宝支付
|
||||
PayTypeTicTok = 3 // 抖音支付
|
||||
PayTypeWX = 1 // 微信支付
|
||||
PayTypeTL = 2 // 通联宝支付
|
||||
PayTypeTicTok = 3 // 抖音支付
|
||||
PayTypeKuaiShou = 4 // 快手支付
|
||||
|
||||
PayTypeTL_DiscountCard = 3 // 通联宝支付(会员折扣卡)
|
||||
PayTypeTL_StoreAcctPay = 4 // 通联宝支付(门店账户充值)
|
||||
@@ -135,32 +136,31 @@ type GoodsOrder struct {
|
||||
DeliveryType string `orm:"size(32)" json:"deliveryType"` // 订单配送方式,缺省是平台配送
|
||||
CreateDeliveryType int `orm:"default(0)" json:"createDeliveryType"` //默认0系统发单,1为门店发单
|
||||
|
||||
VendorWaybillID string `orm:"column(vendor_waybill_id);size(48)" json:"vendorWaybillID"`
|
||||
WaybillVendorID int `orm:"column(waybill_vendor_id)" json:"waybillVendorID"` // 表示当前承运商,-1表示还没有安排
|
||||
AdjustCount int8 `json:"adjustCount"` // 调整单(次数)
|
||||
DeliveryFlag int8 `json:"deliveryFlag"` // 第1位为1表示禁止调度器调度三方配送
|
||||
DuplicatedCount int `json:"-"` // 重复新订单消息数,这个一般不是由于消息重发造成的(消息重发由OrderStatus过滤),一般是业务逻辑造成的
|
||||
OrderCreatedAt time.Time `orm:"type(datetime);index" json:"orderCreatedAt"` // 这里记录的是订单生效时间,即用户支付完成(货到付款即为下单时间)
|
||||
OrderFinishedAt time.Time `orm:"type(datetime)" json:"orderFinishedAt"`
|
||||
StatusTime time.Time `orm:"type(datetime)" json:"statusTime"` // last status time
|
||||
PickDeadline time.Time `orm:"type(datetime);null" json:"pickDeadline"`
|
||||
DeliveryFeeFrom *time.Time `orm:"type(datetime);null" json:"deliveryFeeFrom,omitempty"` // 三方配置费计算的开始基准时间
|
||||
ModelTimeInfo `json:"-"`
|
||||
Flag int `json:"flag"` //非运单调整相关的其它状态
|
||||
|
||||
InvoiceTitle string `orm:"size(64)" json:"invoiceTitle"` // 发票抬头
|
||||
InvoiceTaxerID string `orm:"size(32);column(invoice_taxer_id)" json:"invoiceTaxerID"` // 发票纳税人识别码
|
||||
InvoiceEmail string `orm:"size(64)" json:"invoiceEmail"` // 发票邮箱
|
||||
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` //物料配送门店
|
||||
EclpOutID string `orm:"column(eclp_out_id)" json:"eclpOutID"` //物料配送的出库单号
|
||||
AddressID int64 `orm:"column(address_id)" json:"addressID"` //配送地址ID
|
||||
EarningType int `json:"earningType"` //订单结算方式,2为扣点,1为报价
|
||||
OrderType int `json:"orderType"` //订单类型,0为普通订单,1为物料订单,2为进货订单
|
||||
OrderPayPercentage int `json:"orderPayPercentage"`
|
||||
CouponIDs string `orm:"column(coupon_ids)" json:"couponIDs"` //优惠券IDs(京西商城)
|
||||
NotifyType int `json:"notifyType"` //0表示没有通知,1表示发的短信,2表示发的语音
|
||||
PhoneAscription string `orm:"column(phone_ascription)" json:"phoneAscription"` // 电话号码归属地
|
||||
VendorWaybillID string `orm:"column(vendor_waybill_id);size(48)" json:"vendorWaybillID"`
|
||||
WaybillVendorID int `orm:"column(waybill_vendor_id)" json:"waybillVendorID"` // 表示当前承运商,-1表示还没有安排
|
||||
AdjustCount int8 `json:"adjustCount"` // 调整单(次数)
|
||||
DeliveryFlag int8 `json:"deliveryFlag"` // 第1位为1表示禁止调度器调度三方配送
|
||||
DuplicatedCount int `json:"-"` // 重复新订单消息数,这个一般不是由于消息重发造成的(消息重发由OrderStatus过滤),一般是业务逻辑造成的
|
||||
OrderCreatedAt time.Time `orm:"type(datetime);index" json:"orderCreatedAt"` // 这里记录的是订单生效时间,即用户支付完成(货到付款即为下单时间)
|
||||
OrderFinishedAt time.Time `orm:"type(datetime)" json:"orderFinishedAt"`
|
||||
StatusTime time.Time `orm:"type(datetime)" json:"statusTime"` // last status time
|
||||
PickDeadline time.Time `orm:"type(datetime);null" json:"pickDeadline"`
|
||||
DeliveryFeeFrom *time.Time `orm:"type(datetime);null" json:"deliveryFeeFrom,omitempty"` // 三方配置费计算的开始基准时间
|
||||
ModelTimeInfo `json:"-"` // 1
|
||||
Flag int `json:"flag"` // 非运单调整相关的其它状态
|
||||
InvoiceTitle string `orm:"size(64)" json:"invoiceTitle"` // 发票抬头
|
||||
InvoiceTaxerID string `orm:"size(32);column(invoice_taxer_id)" json:"invoiceTaxerID"` // 发票纳税人识别码
|
||||
InvoiceEmail string `orm:"size(64)" json:"invoiceEmail"` // 发票邮箱
|
||||
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` // 物料配送门店
|
||||
EclpOutID string `orm:"column(eclp_out_id)" json:"eclpOutID"` // 物料配送的出库单号
|
||||
AddressID int64 `orm:"column(address_id)" json:"addressID"` // 配送地址ID
|
||||
EarningType int `json:"earningType"` // 订单结算方式,2为扣点,1为报价
|
||||
OrderType int `json:"orderType"` // 订单类型,0为普通订单,1为物料订单,2为进货订单
|
||||
OrderPayPercentage int `json:"orderPayPercentage"` // 调价包?
|
||||
CouponIDs string `orm:"column(coupon_ids)" json:"couponIDs"` // 优惠券IDs(京西商城)
|
||||
NotifyType int `json:"notifyType"` // 0表示没有通知,1表示发的短信,2表示发的语音
|
||||
PhoneAscription string `orm:"column(phone_ascription)" json:"phoneAscription"` // 电话号码归属地,{代表抖音号码归宿地[yes-四川成都]}
|
||||
|
||||
// 以下只是用于传递数据
|
||||
OriginalData string `orm:"-" json:"-"`
|
||||
@@ -244,7 +244,7 @@ type Waybill struct {
|
||||
ModelTimeInfo `json:"-"`
|
||||
OriginalData string `orm:"type(text)" json:"-"`
|
||||
Remark string `orm:"-" json:"-"` // 用于传递remark
|
||||
|
||||
//PunctualFee int64 `orm:"column(punctual_fee)" json:"punctualFee"` // 对应美团外卖运单的准时保险费
|
||||
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
|
||||
}
|
||||
|
||||
|
||||
@@ -325,7 +325,7 @@ type Store struct {
|
||||
AutoEnableAt *time.Time `orm:"type(datetime);null" json:"autoEnableAt"` // 自动营业时间(临时休息用)
|
||||
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
|
||||
SMSNotify int8 `orm:"column(sms_notify);" json:"smsNotify"` // 是否通过短信接收订单消息(每天只推一条)
|
||||
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` //今天是否已经推送过订单消息
|
||||
SMSNotifyMark int8 `orm:"column(sms_notify_mark);" json:"smsNotifyMark"` // 今天是否已经推送过订单消息
|
||||
AutoReplyType int8 `json:"autoReplyType"` // 订单评价自动回复类型
|
||||
LinkStoreID int `orm:"column(link_store_id);default(0);index" json:"linkStoreID"` // 关联门店ID
|
||||
StoreLevel string `orm:"default(C);size(32)" json:"storeLevel"` // 门店等级(筛选用,京西的)
|
||||
|
||||
Reference in New Issue
Block a user