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
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
|
|
}
|