幸运24-后台-个人-自定义排序
This commit is contained in:
@@ -6,6 +6,7 @@ import com.accompany.admin.vo.luckybag.Lucky24RecordAdminVo;
|
||||
import com.accompany.business.constant.Lucky24PoolTypeEnum;
|
||||
import com.accompany.business.model.Gift;
|
||||
import com.accompany.business.model.lucky.Lucky24Pool;
|
||||
import com.accompany.business.mybatismapper.SuperManagerOperateRecordMapperMgr;
|
||||
import com.accompany.business.mybatismapper.lucky.Lucky24PoolMapper;
|
||||
import com.accompany.business.mybatismapper.lucky.Lucky24StatMapper;
|
||||
import com.accompany.business.service.gift.GiftService;
|
||||
@@ -40,6 +41,7 @@ import java.time.ZonedDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@@ -66,6 +68,15 @@ public class Lucky24RecordAdminService {
|
||||
@Autowired
|
||||
private GiftService giftService;
|
||||
|
||||
private final Map<String, Function<Lucky24PersonalStat, Object>> fieldExtractors = Map.of(
|
||||
"totalInput", Lucky24PersonalStat::getTotalInput,
|
||||
"totalOutput", Lucky24PersonalStat::getTotalOutput,
|
||||
"production", Lucky24PersonalStat::getProduction,
|
||||
"productionRatio", Lucky24PersonalStat::getProductionRatio
|
||||
);
|
||||
@Autowired
|
||||
private SuperManagerOperateRecordMapperMgr superManagerOperateRecordMapperMgr;
|
||||
|
||||
public Lucky24PlatformStatVo getPlatform(Integer partitionId, Integer poolType) {
|
||||
List<Lucky24PlatformStat> list = listPlatform(partitionId, poolType);
|
||||
long totalInput = list.stream().mapToLong(Lucky24PlatformStat::getTotalInput).sum();
|
||||
@@ -146,6 +157,7 @@ public class Lucky24RecordAdminService {
|
||||
|
||||
@SneakyThrows
|
||||
public Lucky24PersonalStatVo getPersonal(Integer partitionId, Long erbanNo, String date, String userRechargeLevel, Integer poolType,
|
||||
String sortCol, String sortOrder,
|
||||
int pageNo, int pageSize) {
|
||||
Page<Lucky24PersonalStat> page = new Page<>(pageNo, pageSize);
|
||||
|
||||
@@ -172,8 +184,18 @@ public class Lucky24RecordAdminService {
|
||||
long totalOutput = list.stream().mapToLong(Lucky24PersonalStat::getTotalOutput).sum();
|
||||
BigDecimal totalProductionRatio = BigDecimal.valueOf(totalOutput).divide(BigDecimal.valueOf(totalInput), 4, RoundingMode.HALF_UP);
|
||||
|
||||
|
||||
// 按大到小排序
|
||||
list.sort(Comparator.comparing(Lucky24PersonalStat::getTotalInput).reversed());
|
||||
Comparator<Lucky24PersonalStat> comparator = null == sortCol? Comparator.comparing(Lucky24PersonalStat::getTotalInput):
|
||||
(o1, o2) -> {
|
||||
Object v1 = fieldExtractors.get(sortCol).apply(o1);
|
||||
Object v2 = fieldExtractors.get(sortCol).apply(o2);
|
||||
return ((Comparable<Object>) v1).compareTo(v2);
|
||||
};
|
||||
if (null == sortOrder || "desc".equals(sortOrder)){
|
||||
comparator = comparator.reversed();
|
||||
}
|
||||
list.sort(comparator);
|
||||
int startIndex = (pageNo -1) * pageSize;
|
||||
int endIndex = Math.min(startIndex + pageSize, list.size());
|
||||
|
||||
|
@@ -54,16 +54,19 @@ public class Lucky24RecordAdminController {
|
||||
@ApiImplicitParam(value = "erbanNo", name = "用户ID"),
|
||||
@ApiImplicitParam(value = "date", name = "开始日期", required = true),
|
||||
@ApiImplicitParam(value = "poolType", name = "数组类型", required = true),
|
||||
@ApiImplicitParam(value = "sortCol", name = "排序列", required = true),
|
||||
@ApiImplicitParam(value = "sortOrder", name = "排序方式", required = true),
|
||||
@ApiImplicitParam(value = "pageNo", name = "页号", required = true),
|
||||
@ApiImplicitParam(value = "pageSize", name = "页长", required = true),
|
||||
})
|
||||
@GetMapping("/personal")
|
||||
public BusiResult<Lucky24PersonalStatVo> personal(Integer partitionId, Long erbanNo, String date, String userRechargeLevel, Integer poolType,
|
||||
String sortCol, String sortOrder,
|
||||
int pageNo, int pageSize) {
|
||||
if (null == partitionId || (null == erbanNo && !StringUtils.hasText(date))) {
|
||||
throw new ServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
Lucky24PersonalStatVo vo = service.getPersonal(partitionId, erbanNo, date, userRechargeLevel, poolType, pageNo, pageSize);
|
||||
Lucky24PersonalStatVo vo = service.getPersonal(partitionId, erbanNo, date, userRechargeLevel, poolType, sortCol, sortOrder, pageNo, pageSize);
|
||||
return BusiResult.success(vo);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user