Skip to content

Commit cf0c215

Browse files
committed
過去に報酬を配布した確認するメソッドを追加
1 parent e3ee486 commit cf0c215

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

src/main/java/dev/felnull/pointed/core/commands/PtTeam.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N
6767
}
6868
}
6969
case "forcegive" -> {
70-
if(args.length < 2){
70+
if(args.length < 3){
7171
sender.sendMessage("引数が足りません");
7272
return true;
7373
}
@@ -87,6 +87,22 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @N
8787
throw new RuntimeException(e);
8888
}
8989
}
90+
case "checkreward" -> {
91+
if(args.length < 2){
92+
sender.sendMessage("引数が足りません");
93+
return true;
94+
}
95+
RewardAdminService adminService = Pointed.getInstance().getRewardAdminService();
96+
try {
97+
if(adminService.rewardExists(Integer.parseInt(args[1]))){
98+
sender.sendMessage("指定したリワードは存在します");
99+
}else {
100+
sender.sendMessage("指定したリワードは存在しません...");
101+
}
102+
} catch (NumberFormatException e) {
103+
sender.sendMessage("rewardIDを数字で入力してください!!!! : " + args[1]);
104+
}
105+
}
90106
default -> sender.sendMessage(Util.f("/ptteam <set> <teamID>"));
91107
}
92108

src/main/java/dev/felnull/pointed/teams/manager/reward/RewardAdminService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dev.felnull.pointed.teams.manager.reward.data.RewardSummary;
77
import org.jetbrains.annotations.Nullable;
88

9+
import java.sql.Connection;
910
import java.sql.SQLException;
1011
import java.time.LocalDate;
1112
import java.util.List;
@@ -74,4 +75,7 @@ void dispatchByBuckets(long teamSubjectId, String scope,
7475

7576
/** 詳細(コマンド付き) */
7677
RewardDetail getRewardDetail(int rewardId, boolean onlyEnabledCommands) throws SQLException;
78+
79+
/** 過去にその報酬を配布したか */
80+
boolean hasEverDistributedRewardToPlayer(long playerSubjectId, int rewardId) throws SQLException;
7781
}

src/main/java/dev/felnull/pointed/teams/manager/reward/impl/RewardAdminServiceImpl.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.felnull.pointed.teams.manager.reward.impl;
22

33
import dev.felnull.pointed.Pointed;
4+
import dev.felnull.pointed.core.database.Db;
45
import dev.felnull.pointed.core.database.Names;
56
import dev.felnull.pointed.teams.manager.reward.RankingService;
67
import dev.felnull.pointed.teams.manager.reward.RewardAdminService;
@@ -763,7 +764,7 @@ public boolean rewardExists(long rewardId) {
763764

764765
// ==== 存在確認(トランザクション版・接続使い回し)====
765766
public boolean rewardExists(Connection con, long rewardId) throws SQLException {
766-
final String sql = "SELECT 1 FROM rewards WHERE id = ? LIMIT 1";
767+
final String sql = "SELECT 1 FROM " + Names.t("rewards") + " WHERE id = ? LIMIT 1";
767768
try (PreparedStatement ps = con.prepareStatement(sql)) {
768769
ps.setLong(1, rewardId);
769770
try (ResultSet rs = ps.executeQuery()) {
@@ -774,7 +775,7 @@ public boolean rewardExists(Connection con, long rewardId) throws SQLException {
774775

775776
// もし名前で唯一ならこっちも(任意)
776777
public boolean rewardExistsByName(Connection con, String name) throws SQLException {
777-
final String sql = "SELECT 1 FROM rewards WHERE name = ? LIMIT 1";
778+
final String sql = "SELECT 1 FROM " + Names.t("rewards") + " WHERE name = ? LIMIT 1";
778779
try (PreparedStatement ps = con.prepareStatement(sql)) {
779780
ps.setString(1, name);
780781
try (ResultSet rs = ps.executeQuery()) {
@@ -783,4 +784,22 @@ public boolean rewardExistsByName(Connection con, String name) throws SQLExcepti
783784
}
784785
}
785786

787+
@Override
788+
public boolean hasEverDistributedRewardToPlayer(
789+
long playerSubjectId,
790+
int rewardId
791+
) throws SQLException {
792+
Connection con = Db.get().getConnection();
793+
final String sql =
794+
"SELECT 1 FROM " + Names.t("reward_dispatch_log") +
795+
" WHERE player_subject_id = ? AND reward_id = ? LIMIT 1";
796+
try (PreparedStatement ps = con.prepareStatement(sql)) {
797+
ps.setLong(1, playerSubjectId);
798+
ps.setInt(2, rewardId);
799+
try (ResultSet rs = ps.executeQuery()) {
800+
return rs.next();
801+
}
802+
}
803+
}
804+
786805
}

0 commit comments

Comments
 (0)