forked from free-lancers/electricity_bill_calc_service
统计当前系统中的报表
This commit is contained in:
74
service/statistics.go
Normal file
74
service/statistics.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"electricity_bill_calc/global"
|
||||
"electricity_bill_calc/logger"
|
||||
"electricity_bill_calc/model"
|
||||
"github.com/doug-martin/goqu/v9"
|
||||
"github.com/georgysavva/scany/v2/pgxscan"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type _StatisticsService struct {
|
||||
l *zap.Logger
|
||||
ss goqu.DialectWrapper
|
||||
}
|
||||
|
||||
var StatisticsService = _StatisticsService{
|
||||
logger.Named("Service", "Stat"),
|
||||
goqu.Dialect("postgres"),
|
||||
}
|
||||
|
||||
//用于统计企业用户数量
|
||||
func (ss _StatisticsService) EnabledEnterprises() (int64, error) {
|
||||
ss.l.Info("开始统计企业数量。")
|
||||
ctx, cancel := global.TimeoutContext()
|
||||
defer cancel()
|
||||
|
||||
UserCountQuery, UserCountQueryArgs, _ := ss.ss.
|
||||
From(goqu.T("user")).
|
||||
Where(goqu.I("type").Eq(model.USER_TYPE_ENT)).
|
||||
Where(goqu.I("enabled").Eq(true)).
|
||||
Select(goqu.COUNT("*")).ToSQL()
|
||||
|
||||
var c int64
|
||||
err := pgxscan.Get(ctx, global.DB, &c, UserCountQuery, UserCountQueryArgs...)
|
||||
if err != nil {
|
||||
ss.l.Error("统计企业数量出错", zap.Error(err))
|
||||
return 0, err
|
||||
}
|
||||
return c, nil
|
||||
}
|
||||
|
||||
//用于统计园区数量
|
||||
func (ss _StatisticsService) EnabledParks(userIds ...string) (int64, error) {
|
||||
ss.l.Info("开始统计园区数量", zap.Strings("userId", userIds))
|
||||
ctx, cancel := global.TimeoutContext()
|
||||
defer cancel()
|
||||
|
||||
ParkCountQuery := ss.ss.
|
||||
From(goqu.T("park")).
|
||||
Where(goqu.I("enabled").Eq(true))
|
||||
|
||||
if len(userIds) > 0 {
|
||||
ParkCountQuery = ParkCountQuery.Where(goqu.I("user_id").In(userIds))
|
||||
}
|
||||
|
||||
ParkCountQuerySql, ParkCountQueryArgs, _ := ParkCountQuery.Select(goqu.COUNT("*")).ToSQL()
|
||||
|
||||
var c int64
|
||||
err := pgxscan.Get(ctx, global.DB, &c, ParkCountQuerySql, ParkCountQueryArgs...)
|
||||
if err != nil {
|
||||
ss.l.Error("园区数量统计错误", zap.Error(err))
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
||||
//用户统计报表
|
||||
func (ss _StatisticsService) ParkNewestState(userIds ...string) ([]model.ParkPeriodStatistics, error) {
|
||||
//TODO: 2023.07.26 报表数据库结构改变,此处逻辑复杂放在最后处理
|
||||
//return nil,errors.New("还未处理逻辑")
|
||||
return []model.ParkPeriodStatistics{}, nil
|
||||
}
|
Reference in New Issue
Block a user