1
This commit is contained in:
@@ -6751,11 +6751,11 @@ func Time2Week(t time.Time) int {
|
||||
}
|
||||
|
||||
// GetStoreSettlementList 根据门店统计结算信息
|
||||
func GetStoreSettlementList(storeId []int, start, end time.Time, vendorId []int, size, offset int) (*model.PagedInfo, error) {
|
||||
return dao.StatisticsSettlement(dao.GetDB(), storeId, start, end, vendorId, size, offset)
|
||||
func GetStoreSettlementList(storeId []int, start, end time.Time, vendorId []int, size, offset int, rank string) (*model.PagedInfo, error) {
|
||||
return dao.StatisticsSettlement(dao.GetDB(), storeId, start, end, vendorId, size, offset, rank)
|
||||
}
|
||||
|
||||
// GetCityCodeSettlementList 根据城市统计结算
|
||||
func GetCityCodeSettlementList(cityCode []string, start, end time.Time, vendorId []int, size, offset int) (*model.PagedInfo, error) {
|
||||
return dao.StatisticsSettlementByCity(dao.GetDB(), cityCode, start, end, vendorId, size, offset)
|
||||
func GetCityCodeSettlementList(cityCode []string, start, end time.Time, vendorId []int, size, offset int, rank string) (*model.PagedInfo, error) {
|
||||
return dao.StatisticsSettlementByCity(dao.GetDB(), cityCode, start, end, vendorId, size, offset, rank)
|
||||
}
|
||||
|
||||
@@ -1752,7 +1752,7 @@ func StatisticsFineFee(db *DaoDB, startTime, endTime time.Time, storeId []int) (
|
||||
}
|
||||
|
||||
// StatisticsSettlement 统计京西门店结算信息
|
||||
func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendorId []int, size, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendorId []int, size, offset int, rank string) (pagedInfo *model.PagedInfo, err error) {
|
||||
sql := `
|
||||
SELECT
|
||||
SQL_CALC_FOUND_ROWS
|
||||
@@ -1776,10 +1776,10 @@ func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendor
|
||||
COALESCE(COUNT(gs.vendor_order_id), 0) AS order_count, -- 处理 NULL
|
||||
COALESCE(SUM(w.desired_fee), 0) AS total_desired_fee,
|
||||
s.package_setting,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)), gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.jx_brand_fee_factor/10),3)) jx_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)) , gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.market_add_fee_factor/10),3)) market_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(gs.order_pay_percentage/2)/100)) -IFNULL(w.desired_fee,0),3)) store_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0), gs.total_shop_money- (gs.total_shop_money *(1-(gs.order_pay_percentage/2)/100))) -IFNULL(w.desired_fee,0),3)) platform_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price), gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.jx_brand_fee_factor/10),3)-IFNULL(w.desired_fee,0)) jx_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)) , gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.market_add_fee_factor/10),3)-IFNULL(w.desired_fee,0)) market_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(gs.order_pay_percentage/2)/100)) -IFNULL(w.desired_fee,0),3)-s.package_setting) store_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.total_shop_money-gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(1-(gs.order_pay_percentage/2)/100))) ,3)-IFNULL(w.desired_fee,0)) platform_income,
|
||||
COALESCE(SUM(gs.total_shop_money), 0) AS total_shop_money,-- 平台结算
|
||||
COALESCE(SUM(ao.refund_money), 0) AS refund_money -- 售后退款
|
||||
FROM goods_order gs
|
||||
@@ -1800,7 +1800,7 @@ func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendor
|
||||
`
|
||||
param := []interface{}{}
|
||||
if !utils.IsTimeZero(start) && !utils.IsTimeZero(end) {
|
||||
sql += ` AND gs.order_created_at BETWEEN ? AND ? AND gs.status = 110 `
|
||||
sql += ` AND gs.order_finished_at BETWEEN ? AND ? AND gs.status = 110 `
|
||||
param = append(param, start, end)
|
||||
}
|
||||
if len(storeId) != 0 {
|
||||
@@ -1819,8 +1819,15 @@ func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendor
|
||||
s.id, s.name, sm1.vendor_store_id, sm2.vendor_store_id, sm3.vendor_store_id,
|
||||
city.name, district.name, s.market_man_phone, u_market.name,
|
||||
u_operator1.name, u_operator2.name, u_operator3.name,
|
||||
s.jx_brand_fee_factor, s.market_add_fee_factor, s.pay_percentage, s.package_setting ORDER BY order_count desc LIMIT ? OFFSET ?
|
||||
`
|
||||
s.jx_brand_fee_factor, s.market_add_fee_factor, s.pay_percentage, s.package_setting `
|
||||
if rank != "" {
|
||||
fields := strings.Split(rank, ",")
|
||||
sql += fmt.Sprintf(` ORDER BY %s %s `, fields[0], fields[1])
|
||||
} else {
|
||||
sql += fmt.Sprintf(`ORDER BY order_count desc`)
|
||||
}
|
||||
|
||||
sql += ` LIMIT ? OFFSET ?`
|
||||
param = append(param, size, offset)
|
||||
|
||||
txDB, _ := Begin(db)
|
||||
@@ -1832,17 +1839,21 @@ func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendor
|
||||
|
||||
if len(msgList) > 0 {
|
||||
for _, v := range msgList {
|
||||
// 服务费
|
||||
v.PackageSetting = v.PackageSetting * v.OrderCount
|
||||
if v.BrandId == 1 || v.BrandId == 38 { // 京西/好菜
|
||||
// 袋子费
|
||||
v.PackagingFee = 40 * v.OrderCount
|
||||
v.JxIncome -= float64(v.PackagingFee)
|
||||
v.MarketIncome -= float64(v.PackagingFee)
|
||||
v.StoreIncome -= float64(v.PackagingFee)
|
||||
} else {
|
||||
if v.PayPercentage != 0 && v.JxIncome == 0 {
|
||||
v.JxIncome = float64(v.TotalShopMoney) - v.StoreIncome
|
||||
}
|
||||
}
|
||||
// 服务费
|
||||
v.PackageSetting = v.PackageSetting * v.OrderCount
|
||||
v.Profit = v.JxIncome + v.MarketIncome - float64(v.PackagingFee) + float64(v.PackageSetting)
|
||||
|
||||
v.Profit = v.JxIncome + v.MarketIncome + float64(v.PackageSetting)
|
||||
}
|
||||
}
|
||||
pagedInfo = &model.PagedInfo{
|
||||
@@ -1853,24 +1864,23 @@ func StatisticsSettlement(db *DaoDB, storeId []int, start, end time.Time, vendor
|
||||
}
|
||||
|
||||
// StatisticsSettlementByCity 根据城市统计结算
|
||||
func StatisticsSettlementByCity(db *DaoDB, cityCode []string, start, end time.Time, vendorId []int, size, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
func StatisticsSettlementByCity(db *DaoDB, cityCode []string, start, end time.Time, vendorId []int, size, offset int, rank string) (pagedInfo *model.PagedInfo, err error) {
|
||||
sql := `
|
||||
SELECT
|
||||
SQL_CALC_FOUND_ROWS
|
||||
p.name AS city_name,
|
||||
s.id AS jx_store_id,
|
||||
u.name AS user_name,
|
||||
u.mobile,
|
||||
s.brand_id,
|
||||
s.package_setting,
|
||||
COUNT(gs.vendor_order_id) AS order_count,
|
||||
COALESCE(SUM(w.desired_fee), 0) AS total_desired_fee,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)), gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.jx_brand_fee_factor/10),3)) jx_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)) , gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.market_add_fee_factor/10),3)) market_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(gs.order_pay_percentage/2)/100)) -IFNULL(w.desired_fee,0),3)) store_income,
|
||||
COALESCE(SUM(gs.total_shop_money), 0) AS total_shop_money,-- 平台结算
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0), gs.total_shop_money- (gs.total_shop_money *(1-(gs.order_pay_percentage/2)/100))) -IFNULL(w.desired_fee,0),3)) platform_income,
|
||||
COALESCE(SUM(ao.refund_money), 0) AS refund_money -- 售后退款
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price), gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.jx_brand_fee_factor/10),3)-IFNULL(w.desired_fee,0)) jx_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, (gs.total_shop_money-gs.earning_price-IFNULL(w.desired_fee,0)) , gs.total_shop_money *(gs.order_pay_percentage/2)/100) * (s.market_add_fee_factor/10),3)-IFNULL(w.desired_fee,0)) market_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(gs.order_pay_percentage/2)/100)) -IFNULL(w.desired_fee,0),3)-s.package_setting) store_income,
|
||||
SUM(ROUND(IF(gs.earning_type = 1, gs.total_shop_money-gs.earning_price, gs.total_shop_money- (gs.total_shop_money *(1-(gs.order_pay_percentage/2)/100))) ,3)-IFNULL(w.desired_fee,0)) platform_income,
|
||||
COALESCE(SUM(ao.refund_money), 0) AS refund_money, -- 售后退款
|
||||
COALESCE(SUM(gs.total_shop_money), 0) AS total_shop_money -- 平台结算
|
||||
FROM goods_order gs
|
||||
LEFT JOIN waybill w ON w.vendor_order_id = gs.vendor_order_id AND w.status IN (100,105)
|
||||
LEFT JOIN store s ON s.id = IF(gs.jx_store_id != 0, gs.jx_store_id, gs.store_id)
|
||||
@@ -1881,7 +1891,7 @@ func StatisticsSettlementByCity(db *DaoDB, cityCode []string, start, end time.Ti
|
||||
`
|
||||
param := []interface{}{}
|
||||
if !utils.IsTimeZero(start) && !utils.IsTimeZero(end) {
|
||||
sql += ` AND gs.order_created_at BETWEEN ? AND ? AND gs.status = 110 `
|
||||
sql += ` AND gs.order_finished_at BETWEEN ? AND ? AND gs.status = 110 `
|
||||
param = append(param, start, end)
|
||||
}
|
||||
if len(vendorId) != 0 {
|
||||
@@ -1896,10 +1906,16 @@ func StatisticsSettlementByCity(db *DaoDB, cityCode []string, start, end time.Ti
|
||||
sql += ` AND s.deleted_at = ? `
|
||||
param = append(param, utils.DefaultTimeValue)
|
||||
|
||||
sql += `
|
||||
GROUP BY
|
||||
u.name, u.mobile ,p.name,s.id ORDER BY order_count desc LIMIT ? OFFSET ?
|
||||
`
|
||||
sql += ` GROUP BY p.name,u.name, u.mobile,s.id `
|
||||
|
||||
if rank != "" {
|
||||
fields := strings.Split(rank, ",")
|
||||
sql += fmt.Sprintf(` ORDER BY %s %s `, fields[0], fields[1])
|
||||
} else {
|
||||
sql += fmt.Sprintf(`ORDER BY order_count desc`)
|
||||
}
|
||||
|
||||
sql += ` LIMIT ? OFFSET ?`
|
||||
param = append(param, size, offset)
|
||||
|
||||
txDB, _ := Begin(db)
|
||||
@@ -1911,15 +1927,20 @@ func StatisticsSettlementByCity(db *DaoDB, cityCode []string, start, end time.Ti
|
||||
|
||||
if len(msgList) > 0 {
|
||||
for _, v := range msgList {
|
||||
// 服务费
|
||||
v.PackageSetting = v.PackageSetting * v.OrderCount
|
||||
if v.BrandId == 1 || v.BrandId == 38 { // 京西/好菜
|
||||
// 袋子费
|
||||
v.PackagingFee = 40 * v.OrderCount
|
||||
v.JxIncome -= float64(v.PackagingFee)
|
||||
v.MarketIncome -= float64(v.PackagingFee)
|
||||
v.StoreInCome -= float64(v.PackagingFee)
|
||||
}
|
||||
// 服务费
|
||||
v.PackageSetting = v.PackageSetting * v.OrderCount
|
||||
v.Profit = v.JxIncome + v.MarketIncome - float64(v.PackagingFee) + float64(v.PackageSetting)
|
||||
|
||||
v.Profit = v.JxIncome + v.MarketIncome + float64(v.PackageSetting)
|
||||
}
|
||||
}
|
||||
|
||||
pagedInfo = &model.PagedInfo{
|
||||
TotalCount: GetLastTotalRowCount2(db, txDB),
|
||||
Data: msgList,
|
||||
|
||||
@@ -146,6 +146,7 @@ func (c *StoreController) GetStoreFineDesc() {
|
||||
// @Param end query string true "结束时间1970-01-01 23:59:59"
|
||||
// @Param size query int true "每页最大数"
|
||||
// @Param offset query int true "跳过数量"
|
||||
// @Param ranke query string true "排序字段 order_count,desc"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetStoreSettlementInfo [get]
|
||||
@@ -160,7 +161,7 @@ func (c *StoreController) GetStoreSettlementInfo() {
|
||||
if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDList, params.VendorIds, &vendorIdList); err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
retVal, err = cms.GetStoreSettlementList(storeIDList, timeList[0], timeList[1], vendorIdList, params.Size, params.Offset)
|
||||
retVal, err = cms.GetStoreSettlementList(storeIDList, timeList[0], timeList[1], vendorIdList, params.Size, params.Offset, params.Ranke)
|
||||
return
|
||||
})
|
||||
}
|
||||
@@ -174,6 +175,7 @@ func (c *StoreController) GetStoreSettlementInfo() {
|
||||
// @Param end query string true "结束时间1970-01-01 23:59:59"
|
||||
// @Param size query int true "每页最大数"
|
||||
// @Param offset query int true "跳过数量"
|
||||
// @Param ranke query string true "排序字段 order_count,desc"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetCitySettlementInfo [get]
|
||||
@@ -188,7 +190,7 @@ func (c *StoreController) GetCitySettlementInfo() {
|
||||
if err = jxutils.Strings2Objs(params.CityCode, &cityList, params.VendorIds, &vendorIdList); err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
retVal, err = cms.GetCityCodeSettlementList(cityList, timeList[0], timeList[1], vendorIdList, params.Size, params.Offset)
|
||||
retVal, err = cms.GetCityCodeSettlementList(cityList, timeList[0], timeList[1], vendorIdList, params.Size, params.Offset, params.Ranke)
|
||||
return
|
||||
})
|
||||
}
|
||||
|
||||
125682
swagger/param_parser.go.txt
125682
swagger/param_parser.go.txt
File diff suppressed because it is too large
Load Diff
@@ -18591,6 +18591,13 @@
|
||||
"description": "根据城市code统计京西收益",
|
||||
"operationId": "StoreController.根据城市code统计京西收益",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "header",
|
||||
"name": "token",
|
||||
"description": "认证token",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "cityCode",
|
||||
@@ -18632,6 +18639,13 @@
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "ranke",
|
||||
"description": "排序字段 order_count,desc",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -19583,6 +19597,13 @@
|
||||
"description": "统计门店订单结算以及京西收益,与美团订单对比",
|
||||
"operationId": "StoreController.统计门店订单结算以及京西收益,与美团订单对比",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "header",
|
||||
"name": "token",
|
||||
"description": "认证token",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "storeIDs",
|
||||
@@ -19624,6 +19645,13 @@
|
||||
"required": true,
|
||||
"type": "integer",
|
||||
"format": "int64"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "ranke",
|
||||
"description": "排序字段 order_count,desc",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
|
||||
@@ -12620,6 +12620,11 @@ paths:
|
||||
description: 根据城市code统计京西收益
|
||||
operationId: StoreController.根据城市code统计京西收益
|
||||
parameters:
|
||||
- in: header
|
||||
name: token
|
||||
description: 认证token
|
||||
required: true
|
||||
type: string
|
||||
- in: query
|
||||
name: cityCode
|
||||
description: 京西门店城市列表[1,2,3],缺省不限制
|
||||
@@ -12650,6 +12655,11 @@ paths:
|
||||
required: true
|
||||
type: integer
|
||||
format: int64
|
||||
- in: query
|
||||
name: ranke
|
||||
description: 排序字段 order_count,desc
|
||||
required: true
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{object} controllers.CallResult'
|
||||
@@ -13294,6 +13304,11 @@ paths:
|
||||
description: 统计门店订单结算以及京西收益,与美团订单对比
|
||||
operationId: StoreController.统计门店订单结算以及京西收益,与美团订单对比
|
||||
parameters:
|
||||
- in: header
|
||||
name: token
|
||||
description: 认证token
|
||||
required: true
|
||||
type: string
|
||||
- in: query
|
||||
name: storeIDs
|
||||
description: 京西门店ID列表[1,2,3],缺省不限制
|
||||
@@ -13324,6 +13339,11 @@ paths:
|
||||
required: true
|
||||
type: integer
|
||||
format: int64
|
||||
- in: query
|
||||
name: ranke
|
||||
description: 排序字段 order_count,desc
|
||||
required: true
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{object} controllers.CallResult'
|
||||
|
||||
Reference in New Issue
Block a user