From 402650660aace849513f86f74f035b317e395968 Mon Sep 17 00:00:00 2001 From: huangjiajun <582604932@qq.com> Date: Mon, 17 Jun 2024 16:17:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/db_order.go | 9 ++++--- db/db_order_count.go | 20 +++++++++++--- db/db_order_relate.go | 8 ++++-- db/db_order_sum.go | 25 +++++++++++++++--- db/model/express_order.go | 55 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 11 deletions(-) create mode 100644 db/model/express_order.go diff --git a/db/db_order.go b/db/db_order.go index a6df4c0..a4fd442 100644 --- a/db/db_order.go +++ b/db/db_order.go @@ -28,10 +28,11 @@ func OrderListCountByUIDByOrderTypeByTime(Db *xorm.Engine, uid, buyType, state, total3, _ := Db.Where("uid = ? AND settle_at > ? AND settle_at < ? and confirm_at=0", uid, stime, etime).Count(&model.OrdList{}) total2, _ := Db.Where("uid = ? AND created_at > ? AND created_at < ? and state=?", uid, stime, etime, 1).Count(&model.PrivilegeCardOrd{}) total4, _ := Db.Where("uid = ? AND create_time > ? AND create_time < ? and status=?", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05"), "已付款").Count(&model.RechargeOrder{}) + total5, _ := Db.In("status", []string{"待取件", "运输中", "已完成"}).Where("uid = ? AND create_time > ? AND create_time < ? ", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05")).Count(&model.ExpressOrder{}) fmt.Println(total) - return total + total1 + total2 + total3 + total4, nil + return total + total1 + total2 + total3 + total4 + total5, nil } // 查询用户某时间段内某状态的佣金(ord_id => amount) @@ -89,7 +90,8 @@ func OrderListPaidPriceByUIDByOrderTypeByTime(Db *xorm.Engine, uid, buyType, sta total1, _ := Db.Where("uid = ? AND settle_at > ? AND settle_at < ? and settle_at>0", uid, stime, etime).Sum(&model.OrdList{}, "paid_price") total2, _ := Db.Where("uid = ? AND created_at > ? AND created_at < ? and state=?", uid, stime, etime, 1).Sum(&model.PrivilegeCardOrd{}, "paid_price") total4, _ := Db.Where("uid = ? AND create_time > ? AND create_time < ? and status=?", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05"), "已付款").Sum(&model.RechargeOrder{}, "amount") - total = total + total1 + total2 + total4 + total5, _ := Db.In("status", []string{"待取件", "运输中", "已完成"}).Where("uid = ? AND create_time > ? AND create_time < ? ", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05")).Sum(&model.ExpressOrder{}, "money") + total = total + total1 + total2 + total4 + total5 } else { types := "confirm_at" serializeStr := zhios_condition_statistics_utils.SerializeStr(state) @@ -107,7 +109,8 @@ func OrderListPaidPriceByUIDByOrderTypeByTime(Db *xorm.Engine, uid, buyType, sta total1, _ := Db.Where("uid = ? AND ? and settle_at>0", uid, sqlStr).Sum(&model.OrdList{}, "paid_price") total2, _ := Db.Where("uid = ? AND created_at > ? AND created_at < ? and state=?", uid, stime, etime, 1).Sum(&model.PrivilegeCardOrd{}, "paid_price") total4, _ := Db.Where("uid = ? AND create_time > ? AND create_time < ? and status=?", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05"), "已付款").Sum(&model.RechargeOrder{}, "amount") - total = total + total1 + total2 + total4 + total5, _ := Db.In("status", []string{"待取件", "运输中", "已完成"}).Where("uid = ? AND create_time > ? AND create_time < ? ", uid, time.Unix(zhios_condition_statistics_utils.AnyToInt64(stime), 0).Format("2006-01-02 15:04:05"), time.Unix(zhios_condition_statistics_utils.AnyToInt64(etime), 0).Format("2006-01-02 15:04:05")).Sum(&model.ExpressOrder{}, "money") + total = total + total1 + total2 + total4 + total5 } fmt.Println(total) diff --git a/db/db_order_count.go b/db/db_order_count.go index 9473567..08b1e6d 100644 --- a/db/db_order_count.go +++ b/db/db_order_count.go @@ -19,10 +19,12 @@ func OrderListCountByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, t } timeType2 := "created_at" timeType4 := "create_time" + timeType5 := "create_time" if task.OrdState == 3 { timeType = "settle_at" timeType2 = "settle_at" timeType4 = "settle_at" + timeType5 = "settle_time" } if types == "free" { timeType = "create_at" @@ -36,6 +38,7 @@ func OrderListCountByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, t sess1 := Db.Where("uid = ? and settle_at>0", uid) sess2 := Db.Where("uid = ?", uid) sess4 := Db.Where("uid = ?", uid) + sess5 := Db.Where("uid = ?", uid) if types == "free" { sess.And("price_type>0 or second_price_type>0 or third_price_type>0") sess1.And("price_type>0 or second_price_type>0 or third_price_type>0") @@ -48,10 +51,19 @@ func OrderListCountByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, t sess2 = sess2.And(sqlStr2) sqlStr4 := fmt.Sprintf(" %s >'%s' AND %s < '%s'", timeType4, stime.Format("2006-01-02 15:04:05"), timeType4, etime.Format("2006-01-02 15:04:05")) sess4 = sess4.And(sqlStr4) + if timeType5 == "settle_time" { + sqlStr5 := fmt.Sprintf(" %s >'%s' AND %s < '%s'", timeType5, stime.Format("2006-01-02 15:04:05"), timeType5, etime.Format("2006-01-02 15:04:05")) + sess5 = sess5.And(sqlStr5) + } else { + sqlStr5 := fmt.Sprintf(" %s > %d AND %s < %d", timeType5, stime.Unix(), timeType5, etime.Unix()) + sess5 = sess5.And(sqlStr5) + } + } if task.OrdState == 3 { sess2 = sess2.And("settle_at>0") sess4 = sess4.And("settle_at>0") + sess5 = sess5.And("settle_time>0") } var err error if task.OrdState != 3 { @@ -65,14 +77,16 @@ func OrderListCountByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, t total1, _ := sess1.Count(&model.OrdList{}) var total2 int64 var total4 int64 + var total5 int64 if types != "free" { - total2, _ = sess2.Where("state=?", uid, 1).Count(&model.PrivilegeCardOrd{}) - total4, _ = sess4.Where("status=?", uid, "已付款").Count(&model.RechargeOrder{}) + total2, _ = sess2.Where("state=?", 1).Count(&model.PrivilegeCardOrd{}) + total5, _ = sess5.In("status", []string{"待取件", "运输中", "已完成"}).Count(&model.ExpressOrder{}) + total4, _ = sess4.Where("status=?", "已付款").Count(&model.RechargeOrder{}) } fmt.Println(total) - return total + total1 + total2 + total4, nil + return total + total1 + total2 + total4 + total5, nil } func MallOrdWithCountNew(Db *xorm.Engine, uid interface{}, task *model.UserLevelUpgradeTask) (int64, error) { diff --git a/db/db_order_relate.go b/db/db_order_relate.go index 2e59491..1c476e4 100644 --- a/db/db_order_relate.go +++ b/db/db_order_relate.go @@ -25,6 +25,7 @@ func OrderRelateListByTimeByStateNew(Db *xorm.Engine, uid interface{}, task *mod timeStr += " or (dol.create_at>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and dol.create_at<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (ro.create_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and ro.create_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (pso.create_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and pso.create_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" + timeStr += " or (eo.create_time>='" + stime.Format("2006-01-02 15:04:05") + "' and eo.create_time<='" + etime.Format("2006-01-02 15:04:05") + "')" timeStr += " )" } if task.OrdState == 1 { //已付款 @@ -37,6 +38,7 @@ func OrderRelateListByTimeByStateNew(Db *xorm.Engine, uid interface{}, task *mod timeStr += " or (dol.create_at>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and dol.create_at<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (ro.create_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and ro.create_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (pso.create_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and pso.create_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" + timeStr += " or (eo.create_time>='" + stime.Format("2006-01-02 15:04:05") + "' and eo.create_time<='" + etime.Format("2006-01-02 15:04:05") + "')" timeStr += " )" } } @@ -50,9 +52,10 @@ func OrderRelateListByTimeByStateNew(Db *xorm.Engine, uid interface{}, task *mod timeStr += " or (dol.settle_at>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and dol.settle_at<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (ro.settle_at>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and ro.settle_at<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " or (pso.settle_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and pso.settle_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" + timeStr += " or (eo.settle_time>=" + zhios_condition_statistics_utils.Int64ToStr(stime.Unix()) + " and eo.settle_time<=" + zhios_condition_statistics_utils.Int64ToStr(etime.Unix()) + ")" timeStr += " )" } - timeStr += " and (ol.settle_at>0 or pco.settle_at>0 or dol.settle_at>0 or ro.settle_at>0 or pso.settle_time>0)" + timeStr += " and (ol.settle_at>0 or pco.settle_at>0 or dol.settle_at>0 or ro.settle_at>0 or pso.settle_time>0 or eo.settle_time>0)" } var sum float64 = 0 @@ -64,8 +67,9 @@ FROM ord_list_relate olr LEFT JOIN privilege_card_ord pco ON olr.oid =pco.ord_id LEFT JOIN duoyou_ord_list dol ON olr.oid =dol.oid LEFT JOIN recharge_order ro ON olr.oid =ro.oid + LEFT JOIN express_order eo ON olr.oid =eo.oid LEFT JOIN playlet_sale_order pso ON olr.oid =pso.custom_oid -WHERE olr.uid = ? %s AND (ol.state in(%s) or pco.state=1 or dol.id>0 or ro.status<>'已退款' or pso.status<>'订单退款'); +WHERE olr.uid = ? %s AND (ol.state in(%s) or pco.state=1 or dol.id>0 or ro.status<>'已退款' or pso.status<>'订单退款' or eo.status in('待取件','运输中','已完成')); ` sqlTpl = fmt.Sprintf(sqlTpl, timeStr, state) todayResult, err := QueryNativeString(Db, sqlTpl, uid) diff --git a/db/db_order_sum.go b/db/db_order_sum.go index f869882..b53caa0 100644 --- a/db/db_order_sum.go +++ b/db/db_order_sum.go @@ -19,10 +19,14 @@ func OrderListSumByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, typ } timeType2 := "created_at" timeType4 := "create_time" + timeType5 := "create_time" + if task.OrdState == 3 { timeType = "settle_at" timeType2 = "settle_at" timeType4 = "settle_at" + timeType5 = "settle_time" + } t := time.Now() stime := time.Date(t.Year(), t.Month(), t.Day()-task.WithinDays, t.Hour(), 0, 0, 0, t.Location()) @@ -32,6 +36,8 @@ func OrderListSumByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, typ sess1 := Db.Where("uid = ? and settle_at>0", uid) sess2 := Db.Where("uid = ?", uid) sess4 := Db.Where("uid = ?", uid) + sess5 := Db.Where("uid = ?", uid) + if types == "free" { sess.And("price_type>0 or second_price_type>0 or third_price_type>0") sess1.And("price_type>0 or second_price_type>0 or third_price_type>0") @@ -44,10 +50,19 @@ func OrderListSumByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, typ sess1.And(sqlStr) sess2.And(sqlStr2) sess4.And(sqlStr4) + if timeType5 == "settle_time" { + sqlStr5 := fmt.Sprintf(" %s >'%s' AND %s < '%s'", timeType5, stime.Format("2006-01-02 15:04:05"), timeType5, etime.Format("2006-01-02 15:04:05")) + sess5 = sess5.And(sqlStr5) + } else { + sqlStr5 := fmt.Sprintf(" %s > %d AND %s < %d", timeType5, stime.Unix(), timeType5, etime.Unix()) + sess5 = sess5.And(sqlStr5) + } } if task.OrdState == 3 { sess2.And("settle_at>0") sess4.And("settle_at>0") + sess5 = sess5.And("settle_time>0") + } if task.OrdState != 3 { total, _ = sess.In("state", state).Sum(&model.OrdList{}, "paid_price") @@ -57,13 +72,17 @@ func OrderListSumByUIDByOrderTypeByTimeNew(Db *xorm.Engine, uid interface{}, typ total1, _ := sess1.Sum(&model.OrdList{}, "paid_price") var total2 float64 var total4 float64 + var total5 float64 + if types != "free" { - total2, _ = sess2.Where("state=?", uid, 1).Sum(&model.PrivilegeCardOrd{}, "paid_price") - total4, _ = sess4.Where("status=?", uid, "已付款").Sum(&model.RechargeOrder{}, "amount") + total5, _ = sess5.In("status", []string{"待取件", "运输中", "已完成"}).Sum(&model.ExpressOrder{}, "money") + + total2, _ = sess2.Where("state=?", 1).Sum(&model.PrivilegeCardOrd{}, "paid_price") + total4, _ = sess4.Where("status=?", "已付款").Sum(&model.RechargeOrder{}, "amount") } fmt.Println(total) - return total + total1 + total2 + total4, nil + return total + total1 + total2 + total4 + total5, nil } func MallOrdWithSumNew(Db *xorm.Engine, uid interface{}, orderType int, task *model.UserLevelUpgradeTask) (float64, error) { diff --git a/db/model/express_order.go b/db/model/express_order.go new file mode 100644 index 0000000..afd291b --- /dev/null +++ b/db/model/express_order.go @@ -0,0 +1,55 @@ +package model + +import ( + "time" +) + +type ExpressOrder struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"default 0 INT(11)"` + Oid string `json:"oid" xorm:"VARCHAR(255)"` + PvdOid string `json:"pvd_oid" xorm:"VARCHAR(255)"` + CreateTime time.Time `json:"create_time" xorm:"DATETIME"` + PayTime time.Time `json:"pay_time" xorm:"DATETIME"` + SupplementPayTime time.Time `json:"supplement_pay_time" xorm:"comment('补交时间') DATETIME"` + Money string `json:"money" xorm:"default 0.00000000 comment('第一次') DECIMAL(20,8)"` + Profit string `json:"profit" xorm:"default 0.00000000 comment('利润') DECIMAL(20,8)"` + RealProfit string `json:"real_profit" xorm:"default 0.00000000 comment('利润') DECIMAL(20,8)"` + SupplementMoney string `json:"supplement_money" xorm:"default 0.00000000 DECIMAL(20,8)"` + IsPay int `json:"is_pay" xorm:"default 0 INT(1)"` + IsSupplementPay int `json:"is_supplement_pay" xorm:"default 0 INT(1)"` + Status string `json:"status" xorm:"VARCHAR(255)"` + Ext string `json:"ext" xorm:"TEXT"` + IsRefund int `json:"is_refund" xorm:"default 0 INT(1)"` + RefundTime time.Time `json:"refund_time" xorm:"DATETIME"` + IsCancel int `json:"is_cancel" xorm:"default 0 INT(1)"` + PayWay int `json:"pay_way" xorm:"default 0 INT(11)"` + CommissionTime int `json:"commission_time" xorm:"default 0 INT(11)"` + SettleTime int `json:"settle_time" xorm:"default 0 INT(11)"` + CancelTime time.Time `json:"cancel_time" xorm:"DATETIME"` + Info string `json:"info" xorm:"TEXT"` + SendInfo string `json:"send_info" xorm:"TEXT"` + WlOid string `json:"wl_oid" xorm:"VARCHAR(255)"` + EmpName string `json:"emp_name" xorm:"VARCHAR(255)"` + SenderPhone string `json:"sender_phone" xorm:"VARCHAR(255)"` + ReceiverPhone string `json:"receiver_phone" xorm:"VARCHAR(255)"` + CompanyCode string `json:"company_code" xorm:"VARCHAR(255)"` + ExpressFirstAddPrice string `json:"express_first_add_price" xorm:"VARCHAR(255)"` + ExpressSecondAddPrice string `json:"express_second_add_price" xorm:"VARCHAR(255)"` + AgentPay int `json:"agent_pay" xorm:"default 0 INT(11)"` + StationPay int `json:"station_pay" xorm:"default 0 INT(11)"` + IsNew int `json:"is_new" xorm:"default 0 INT(11)"` + AgentPrice string `json:"agent_price" xorm:"default 0.00 comment('第一次') DECIMAL(20,2)"` + StationPrice string `json:"station_price" xorm:"default 0.00 comment('第一次') DECIMAL(20,2)"` + PlatformPrice string `json:"platform_price" xorm:"default 0.00 comment('第一次') DECIMAL(20,2)"` + PlatformSupplementMoney string `json:"platform_supplement_money" xorm:"default 0.00 comment('第一次') DECIMAL(20,2)"` + CreateMsg string `json:"create_msg" xorm:"TEXT"` + ApiMsg string `json:"api_msg" xorm:"TEXT"` + StationSupplementMoney string `json:"station_supplement_money" xorm:"default 0.00000000 DECIMAL(20,8)"` + AgentSupplementMoney string `json:"agent_supplement_money" xorm:"default 0.00000000 DECIMAL(20,8)"` + IsStationSupplementPay int `json:"is_station_supplement_pay" xorm:"default 0 INT(1)"` + IsAgentSupplementPay int `json:"is_agent_supplement_pay" xorm:"default 0 INT(1)"` + Platform int `json:"platform" xorm:"default 0 INT(1)"` + Own int `json:"own" xorm:"default 0 INT(1)"` + NeedDeduct string `json:"need_deduct" xorm:"default 0.00000000 DECIMAL(20,8)"` +}