You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
3.3 KiB

package wallet
import (
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/order"
"recook/internal/model/user"
"recook/tools"
"strings"
"time"
)
/*
查询销售提成实时明细
*/
func QuerySalesIncomeList(c *gin.Context) {
var p queryDateIncomeParam
if err := tools.ParseParams(&p, c); err != nil {
back.Fail(c, err.Error())
return
}
beginDate, endDate, err := FormatDateZone(p.Date)
if err != nil {
back.Fail(c, "时间无法解析"+err.Error())
return
}
var stat statistics
if err := dbc.DB.Table((&order.GoodsDetail{}).TableName()).Select("SUM(total_commission) AS income, SUM(actual_amount) AS sales_amount").
Where("parent_id = ? AND pay_status = 1 AND ass_type = 0 AND order_time > ? AND order_time < ?", p.UserID, beginDate, endDate).
First(&stat).Error; err != nil && gorm.IsRecordNotFoundError(err) == false {
back.Err(c, err.Error())
return
}
if err := dbc.DB.Table((&order.Information{}).TableName()).
Where("parent_id = ? AND (status = 1 OR status = 4) AND created_at > ? AND created_at < ?", p.UserID, beginDate, endDate).
Count(&(stat.OrderCount)).Error; err != nil {
back.Err(c, err.Error())
return
}
list := make([]user.WalletSalesIncomeList, 0, 0)
dbc.DB.Select("amount,title,comment,order_id, order_time").
Limit(20).Offset(20*p.Page).Order("id desc").
Find(&list, "user_id = ? AND order_time > ? AND order_time < ?", p.UserID, beginDate, endDate)
back.Suc(c, "", gin.H{
"statistics": stat,
"list": list,
})
}
/*
查询销售提成累计记录
*/
func QuerySumSalesIncomeList(c *gin.Context) {
var p queryDateIncomeParam
if err := tools.ParseParams(&p, c); err != nil {
back.Fail(c, err.Error())
return
}
beginDate, endDate, err := FormatDateZone(p.Date)
if err != nil {
back.Fail(c, "时间无法解析")
return
}
var stat statistics
if err := dbc.DB.Table((&order.GoodsDetail{}).TableName()).Select("SUM(total_commission) AS income, SUM(actual_amount) AS sales_amount").
Where("parent_id = ? AND status = 1 AND order_time > ? AND order_time < ?", p.UserID, beginDate, endDate).
First(&stat).Error; err != nil && gorm.IsRecordNotFoundError(err) == false {
back.Err(c, err.Error())
return
}
if err := dbc.DB.Table((&order.Information{}).TableName()).
Where("parent_id = ? AND status = 4 AND created_at > ? AND created_at < ?", p.UserID, beginDate, endDate).
Count(&(stat.OrderCount)).Error; err != nil {
back.Err(c, err.Error())
return
}
list := make([]user.WalletBalanceList, 0, 0)
dbc.DB.Select("amount,title,comment,order_id, order_time").
Limit(20).Offset(20*p.Page).Order("id desc").
Find(&list, "user_id = ? AND income_type = 2 AND order_time > ? AND order_time < ?", p.UserID, beginDate, endDate)
back.Suc(c, "", gin.H{
"statistics": stat,
"list": list,
})
}
// 根据传入的参数, 按年或者按月
func FormatDateZone(date string) (beginDate, endDate string, err error) {
var timeLayout string
if len(strings.TrimSpace(date)) == 7 {
timeLayout = "2006-01"
} else {
timeLayout = "2006"
}
st, err := time.Parse(timeLayout, date)
if err != nil {
return
}
if len(timeLayout) == 4 {
beginDate = st.String() + "-01-01"
endDate = st.AddDate(1, 0, 0).String() + "-01-01"
} else if len(timeLayout) == 6 {
beginDate = st.String()
endDate = st.AddDate(0, 1, 0).String()
}
return
}