|
@@ -353,6 +353,35 @@ public abstract class SnapshotApplicationBase
|
|
|
return items;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 积分详情集合
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<IList<PointItemsOutDto>> GetPointItemsAsync(PointItemsInDto dto, CancellationToken token)
|
|
|
+ {
|
|
|
+ var items = await _pointsRecordRepository.Queryable()
|
|
|
+ .Where(m => m.UserId == _sessionContext.UserId && dto.Direction == m.Direction)
|
|
|
+ .Select(m => new PointItemsOutDto(), true)
|
|
|
+ .OrderByDescending(m => m.CreationTime)
|
|
|
+ .ToFixedListAsync(dto, token);
|
|
|
+ return items;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 积分总计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <param name="requestAborted"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<int> GetPointsTotalAsync(PointItemsInDto dto, CancellationToken token)
|
|
|
+ {
|
|
|
+ return await _pointsRecordRepository.Queryable()
|
|
|
+ .Where(m => m.UserId == _sessionContext.UserId && dto.Direction == m.Direction)
|
|
|
+ .SumAsync(m => m.Points);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 获取工单详情
|
|
|
/// </summary>
|
|
@@ -912,28 +941,47 @@ public abstract class SnapshotApplicationBase
|
|
|
var outDto = new PointsRankOutDto();
|
|
|
var record = await _pointsRecordRepository.Queryable()
|
|
|
.Where(m => m.UserId == _sessionContext.UserId)
|
|
|
- .Select(m => new {
|
|
|
+ .Select(m => new
|
|
|
+ {
|
|
|
Total = SqlFunc.AggregateSum(m.Points),
|
|
|
Out = SqlFunc.AggregateSum(SqlFunc.IIF(m.Direction == EPointsDirection.Out, m.Points, 0))
|
|
|
}).FirstAsync();
|
|
|
outDto.ValidPoints = record.Total - record.Out;
|
|
|
var startTime = new DateTime(DateTime.Now.Year, 1, 1, 0, 0, 0);
|
|
|
var endTime = new DateTime(DateTime.Now.Year, 12, 31, 23, 59, 59);
|
|
|
- var items = await _pointsRecordRepository.Queryable()
|
|
|
+ var query = _pointsRecordRepository.Queryable()
|
|
|
.LeftJoin<Citizen>((points, citizen) => points.UserId == citizen.Id)
|
|
|
.Where((points, citizen) => points.CreationTime >= startTime && points.CreationTime <= endTime)
|
|
|
- .GroupBy((points, citizen) => new { points.UserId, citizen.IsSecurityMax, citizen.Name, citizen.PhoneNumber })
|
|
|
- .Select((points, citizen) => new PointsItemsOutDto
|
|
|
+ .GroupBy((points, citizen) => new { citizen.Id, points.UserId, citizen.IsSecurityMax, citizen.Name, citizen.PhoneNumber })
|
|
|
+ .Select((points, citizen) => new PointsRankUserDto
|
|
|
{
|
|
|
IsSecurityMax = citizen.IsSecurityMax ?? false,
|
|
|
- Rank = SqlFunc.MappingColumn<int>("DENSE_RANK() OVER (ORDER BY SUM(CASE WHEN \"points\".\"Direction\" = 1 THEN \"points\".\"Points\" ELSE 0 END) DESC)"),
|
|
|
- OutTotalPoint = SqlFunc.AggregateSum(SqlFunc.IIF(points.Direction == EPointsDirection.Out, points.Points, 0)),
|
|
|
- OutPoints = SqlFunc.AggregateSum(SqlFunc.IIF(points.Direction == EPointsDirection.Out && points.Source == EPointsSource.Audit, points.Points, 0)),
|
|
|
- TotalPoints = SqlFunc.AggregateSum(points.Points),
|
|
|
- InTotalPoint = SqlFunc.AggregateSum(SqlFunc.IIF(points.Direction == EPointsDirection.In, points.Points, 0)),
|
|
|
+ Rank = SqlFunc.MappingColumn<int>($@"
|
|
|
+ CASE
|
|
|
+ WHEN citizen.""Id"" = '{_sessionContext.UserId}' THEN 1
|
|
|
+ ELSE DENSE_RANK() OVER (ORDER BY SUM(CASE WHEN ""points"".""Direction"" = 1 THEN ""points"".""Points"" ELSE 0 END) DESC)
|
|
|
+ END"),
|
|
|
+ Points = SqlFunc.AggregateSum(points.Points),
|
|
|
UserName = citizen.Name!,
|
|
|
- PhoneNumber = citizen.PhoneNumber
|
|
|
- }).Take(11).ToListAsync();
|
|
|
+ PhoneNumber = citizen.PhoneNumber,
|
|
|
+ CitizenId = citizen.Id,
|
|
|
+ }).MergeTable()
|
|
|
+ .OrderByDescending(points => points.Rank)
|
|
|
+ .Take(11);
|
|
|
+
|
|
|
+#if DEBUG
|
|
|
+ var sql = query.ToSqlString();
|
|
|
+#endif
|
|
|
+ var item = await query.ToListAsync();
|
|
|
+
|
|
|
+ item.ForEach(m =>
|
|
|
+ {
|
|
|
+ if (m.IsSecurityMax)
|
|
|
+ m.HeadUrl = _systemDicDataCacheManager.HeaderImages("aqws");
|
|
|
+ else
|
|
|
+ m.HeadUrl = _systemDicDataCacheManager.HeaderImages("default");
|
|
|
+ });
|
|
|
+ outDto.Ranks = item;
|
|
|
return outDto;
|
|
|
}
|
|
|
#endregion
|