账单-金币统计-统计-强制使用索引

This commit is contained in:
2025-07-06 16:34:11 +08:00
parent 8ae1b7b6d8
commit 191cffb1d6
4 changed files with 23 additions and 20 deletions

View File

@@ -10,6 +10,8 @@ import com.accompany.common.constant.Constant;
import com.accompany.common.utils.BlankUtil;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.BillObjTypeEnum;
import com.accompany.core.enumeration.CurrencyEnum;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.model.Users;
import com.accompany.core.service.user.UsersBaseService;
import com.accompany.sharding.mapper.BillRecordMapper;
@@ -43,18 +45,20 @@ public class BillRecordAdminService extends BaseService {
private GiftService giftService;
public void pageBillRecordList(Page<BillRecord> page, Long erbanNo, Integer billType, String startDate, String endDate){
Long uid = null;
QueryWrapper<BillRecord> wrapper = new QueryWrapper<>();
if (erbanNo != null) {
Users users = usersBaseService.getUsersByErBanNo(erbanNo);
if (users == null) {
return;
}
uid = users.getUid();
Long uid = users.getUid();
wrapper.lambda().eq(BillRecord::getUid, uid);
}
List<Integer> bList = new ArrayList<>();
QueryWrapper<BillRecord> wrapper = new QueryWrapper<>();
if(billType != null){
List<Integer> bList = new ArrayList<>();
if(billType.equals(Constant.BillType.openNoble)){
bList = Arrays.asList(Constant.BillType.openNoble, Constant.BillType.renewNoble);
}else if(billType.equals(Constant.BillType.purchaseCarGoods)){
@@ -62,15 +66,14 @@ public class BillRecordAdminService extends BaseService {
}else {
bList.add(billType);
}
wrapper.lambda().in(BillRecord::getObjType, bList)
.in(BillRecord::getPartitionId, Arrays.stream(PartitionEnum.values()).map(PartitionEnum::getId).sorted().toList());
}
wrapper.lambda().eq(uid != null, BillRecord::getUid, uid)
.ge(!BlankUtil.isBlank(startDate), BillRecord::getCreateTime, DateTimeUtil.convertStrToDate(startDate))
.le(!BlankUtil.isBlank(endDate),BillRecord::getCreateTime, DateTimeUtil.convertStrToDate(endDate));
if (!CollectionUtils.isEmpty(bList)) {
wrapper.lambda().in(BillRecord::getObjType, bList);
}
wrapper.lambda().orderByDesc(BillRecord::getCreateTime);
wrapper.lambda().ge(!BlankUtil.isBlank(startDate), BillRecord::getCreateTime, DateTimeUtil.convertStrToDate(startDate))
.le(!BlankUtil.isBlank(endDate),BillRecord::getCreateTime, DateTimeUtil.convertStrToDate(endDate))
.orderByDesc(BillRecord::getCreateTime);
billRecordService.page(page, wrapper);
}

View File

@@ -131,14 +131,14 @@
</select>-->
<select id="statDiamondBillRecord" resultType="com.accompany.sharding.vo.DiamondBillRecordStatVo">
select br.partition_id,
br.obj_type,
select br.obj_type,
br.partition_id,
sum(br.amount) `total_diamond`
from bill_record br
where br.partition_id = #{partitionId}
and br.obj_type in <foreach item="id" index="index" collection="objTypeList" open="(" close=")" separator=",">#{id}</foreach>
and br.create_time >= #{startTime} and br.create_time &lt;= #{endTime}
group by br.partition_id, br.obj_type
from bill_record br force index (idx_obj_type_partition_id_create_time)
where br.obj_type in <foreach item="id" index="index" collection="objTypeList" open="(" close=")" separator=",">#{id}</foreach>
and br.partition_id = #{partitionId}
and br.create_time between #{startTime} and #{endTime}
group by br.obj_type
</select>
</mapper>

View File

@@ -46,7 +46,7 @@ public class DiamondStatService {
Date systemStartTime = DateTimeUtil.converLocalDateTimeToDate(startOfDay.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
// 获取当天的最后一秒
ZonedDateTime endOfDay = hourAgo.withHour(23).withMinute(59).withSecond(59).withNano(999999999);
ZonedDateTime endOfDay = hourAgo.withHour(23).withMinute(59).withSecond(59).withNano(999);
Date systemEndTime = DateTimeUtil.converLocalDateTimeToDate(endOfDay.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
List<Integer> diamondObjTypeList = Arrays.stream(BillObjTypeEnum.values()).filter(billObjTypeEnum -> CurrencyEnum.DIAMOND.equals(billObjTypeEnum.getCurrency()))

View File

@@ -261,8 +261,8 @@ public class BillRecordService extends ServiceImpl<BillRecordMapper, BillRecord>
QueryWrapper<BillRecord> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(BillRecord::getUid, uid)
.between(BillRecord::getCreateTime, systemStartTime, systemEndTime)
.eq(BillRecord::getCurrency, currencyType)
.between(BillRecord::getCreateTime, systemStartTime, systemEndTime)
.eq(null != billType, BillRecord::getBillType, billType)
.in(!CollectionUtils.isEmpty(objTypeList), BillRecord::getObjType, objTypeList)
.orderByDesc(BillRecord::getCreateTime);