公会-土耳其-公会水晶结算-兼容已退出的公会成员

This commit is contained in:
2025-08-20 18:44:36 +08:00
parent e6582b0e57
commit b258e18ef7
4 changed files with 35 additions and 5 deletions

View File

@@ -16,6 +16,8 @@ public interface GuildMemberMapper extends BaseMapper<GuildMember> {
List<GuildMember> listVaildGuildMemberByTime(@Param("guildId") Integer guildId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
List<GuildMember> listGuildMemberByPartitionIdBetweenTime(@Param("partitionId") Integer partitionId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
GuildMember selectGuildMemberByTime(@Param("guildId") Integer guildId, @Param("uid") Long uid, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
List<GuildMember> listGuildOwnerByPartitionIdRegionId(@Param("partitionId") int partitionId, @Param("regionId") int regionId);

View File

@@ -96,7 +96,7 @@ public class GuildMemberService extends ServiceImpl<GuildMemberMapper, GuildMemb
return this.lambdaQuery().eq(GuildMember::getPartitionId, partitionId).list();
}
public List<GuildMember> listValidGuildMemberByPartitionId(int partitionId) {
return this.lambdaQuery().eq(GuildMember::getEnable, Boolean.TRUE).eq(GuildMember::getPartitionId, partitionId).list();
public List<GuildMember> listGuildMemberByPartitionIdBetweenTime(Integer partitionId, Date startTime, Date endTime) {
return this.baseMapper.listGuildMemberByPartitionIdBetweenTime(partitionId, startTime, endTime);
}
}

View File

@@ -19,6 +19,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -43,9 +47,18 @@ public class GuildCrystalSettlementService {
//当天零点再前推1秒相当于昨天23:59:59 给客户端周查询
Date now = null == cycleTime? DateTimeUtil.addSeconds(DateTimeUtil.getBeginTimeOfDay(new Date()),-1): DateTimeUtil.getEndTimeOfDay(cycleTime);
String cycleDate = FullMonthCycleTimeUtil.getCycleDateByZoneId(now, partitionEnum.getClanMode());
ZonedDateTime zdt = DateTimeUtil.convertWithZoneId(now, partitionEnum.getZoneId());
String cycleDate = FullMonthCycleTimeUtil.getCycleDate(zdt);
String cycleEndDate = FullMonthCycleTimeUtil.getCycleEndDate(zdt);
List<GuildMember> guildMemberList = guildMemberService.listByPartitionId(partitionId);
ZoneId zoneId = ZoneId.of(partitionEnum.getZoneId());
ZonedDateTime zonedStartTime = ZonedDateTime.of(LocalDate.parse(cycleDate, DateTimeUtil.dateFormatter), LocalTime.MIN, zoneId);
Date systemStartTime = Date.from(zonedStartTime.withZoneSameLocal(ZoneId.systemDefault()).toInstant());
ZonedDateTime zonedEndTime = ZonedDateTime.of(LocalDate.parse(cycleEndDate, DateTimeUtil.dateFormatter), LocalTime.MAX, zoneId);
Date systemEndTime = Date.from(zonedEndTime.withZoneSameLocal(ZoneId.systemDefault()).toInstant());
List<GuildMember> guildMemberList = guildMemberService.listGuildMemberByPartitionIdBetweenTime(partitionId, systemStartTime, systemEndTime);
if (CollectionUtils.isEmpty(guildMemberList)){
return;
}
@@ -98,7 +111,7 @@ public class GuildCrystalSettlementService {
if (Double.compare(guildCrystal, 0d) > 0){
//扣金币
userPurseMapper.updateSettlementGolds(uid, guildCrystal);
userPurseMapper.updateSettlementGuildCrystal(uid, guildCrystal);
}
//结算记录

View File

@@ -30,6 +30,21 @@
order by role_type asc , enable desc, create_time asc
</select>
<select id="listGuildMemberByPartitionIdBetweenTime" resultType="com.accompany.business.model.guild.GuildMember">
select fm.`id`, guild_id, uid, role_type, create_time, update_time, enable
from guild_member fm
inner join
(select max(id) `id`
from guild_member fm
where 1=1
<if test="partitionId != null">
and fm.partition_id = #{partitionId}
</if>
and (fm.enable = 1 or (fm.update_time between #{startTime} and #{endTime}))
group by uid) sub_fm on fm.id = sub_fm.id
order by role_type asc , enable desc, create_time asc
</select>
<select id="selectGuildMemberByTime" resultType="com.accompany.business.model.guild.GuildMember">
select guild_id, uid, role_type, create_time, update_time, enable
from guild_member fm