This commit is contained in:
邹宗楠
2026-01-09 13:50:26 +08:00
parent 2ede1d1153
commit 3bc4795a5c
6 changed files with 62958 additions and 62861 deletions

View File

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

View File

@@ -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,

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -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": {

View File

@@ -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'