PR

【2/4】仲間集結キャンペーン #4486

kouho opened this at 2026-01-28T15:16:33; closed

Description

opened by kouho at 2026-01-28T15:16:33; updated 2026-02-05T17:13:31

概要

仕様書
https://docs.google.com/spreadsheets/d/1S6idyeT1StSmpCciYFDIiY2FNJtY0oi4JMPK6cG9ujY/edit?gid=2088028903#gid=2088028903

実装用シート
https://docs.google.com/spreadsheets/d/1rXTsIT1ROmFYP9WIt-x-RRNFPRYc0_eNLNZOygQbtPE/edit?gid=1458806153#gid=1458806153

SQL

CREATE TABLE `user_team_join_campaign` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT "管理ID", `campaign_no` int unsigned COMMENT "開催回", `user_no` int unsigned NOT NULL COMMENT "ユーザーID", `start_date` datetime NOT NULL COMMENT "参加確定/判定固定日時", PRIMARY KEY (`id`), UNIQUE KEY `uniq_campaign_user` (`campaign_no`,`user_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
CREATE TABLE `user_team_join_campaign_quest` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '管理ID',
  `campaign_no` int unsigned NOT NULL COMMENT '開催回',
  `user_no` int unsigned NOT NULL COMMENT 'ユーザーID',
  `quest_no` int unsigned NOT NULL COMMENT 'クエストID',
  `receive_flg` tinyint unsigned DEFAULT '0' COMMENT '受取済フラグ',
  `border_type` tinyint unsigned NOT NULL COMMENT 'クエスト種別',
  `border_count` int unsigned NOT NULL COMMENT '達成条件数',
  `clear_count` int unsigned NOT NULL COMMENT '進捗カウント',
  `update_time` datetime NOT NULL COMMENT '最終更新日時',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_campaign_user_team_quest` (`campaign_no`,`user_no`,`quest_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

TODO

  • [x] ログイン判定の妥当性の確認 → 加入時に判定追加

Comment

#44089 by kouho at 2026-01-28T15:17:07; updated 2026-01-28T15:17:07

@wada
レビューして頂ける状態でないですが、実装用シートと現状の共有です

Comment

#44123 by kouho at 2026-02-02T10:09:04; updated 2026-02-02T10:09:04

@wada
CPの進行と報酬の受け取りまでをプッシュしていますのでレビューをお願いいたします

kouho change_title at 2026-02-03T09:47:10: [WIP]スカウトキャンペーン(仮名称) 【2/4】仲間集結キャンペーン

Comment

#44139 by wada at 2026-02-03T14:54:03; updated 2026-02-03T14:54:03

@kouho
①②はコメントが隠れていたので再度コメントしています。

  • ①:lib/models/dao/user_info.phpget_by_user_no()メソッドは使用していますか?-
  • ②:lib/models/dao/user_team_join_campaign.phpinsert_usersでarray_chunk()を使ってより理解しやすいコードにしたいです。
$total = 0;
foreach (array_chunk($values, $chunk_size) as $chunk) {
    $this->insert_bulk($chunk);
    $total += count($chunk);
}
  • ③:lib/exec/tool_team_join_campaign_target.phpで失敗時を想定してトランザクション対応は不要ですか?
wada add_label at 2026-02-03T14:54:07: コメントあり

Comment

#44157 by wada at 2026-02-03T16:47:02; updated 2026-02-03T16:47:02

@kouho
defineファイルでconfig配列を$_dfに格納していますが、$_dfではなくconfig->toArray()を呼び出してconfig内の変数を参照しています。
こちらはなにか理由がありますか?

#define_{pf}.inc
$_df['team_join_cp'] = TeamJoinCampaignConfig::get()->toArray();

#contoller,model
$config = TeamJoinCampaignConfig::get()->toArray();
$config = $_df['team_join_cp']; #$_df代入ではダメ?

Comment

#44159 by kouho at 2026-02-03T17:12:10; updated 2026-02-03T17:12:22

@wada
確認ありがとうございます。以下修正しています。

> lib/models/dao/user_info.phpでget_by_user_no()メソッドは使用していますか?-
使用していないため、削除

> lib/models/dao/user_team_join_campaign.phpのinsert_usersでarray_chunk()を使ってより理解しやすいコードにしたいです。

> lib/exec/tool_team_join_campaign_target.phpで失敗時を想定してトランザクション対応は不要ですか?
トランザクション対応とRollback追加

> defineファイルでconfig配列を$_dfに格納していますが、$_dfではなくconfig->toArray()を呼び出してconfig内の変数を参照しています。こちらはなにか理由がありますか?
特に理由がありませんでしたので、global変数を参照する形に修正しました。

Comment

#44171 by wada at 2026-02-04T11:45:07; updated 2026-02-04T11:45:07

@kouho
Team_join_campaign.phpのupdate_clear_count()で以下の処理が2回呼び出されています。
・新規作成後の再取得であれば、if文内のcreate_quest()直後
・更新後の判定用であれば、取得済みのデータをamountを利用

$user_quest_dao->get_by_campaign_user_team($campaign_no, $user_no);

Comment

#44172 by wada at 2026-02-04T11:51:02; updated 2026-02-04T11:51:02

@kouho
quest_noquest_idreward_noreward_idが混在しているので、どちらかに合わせておいて欲しいです。
タイプミスを誘発します。

Comment

#44173 by wada at 2026-02-04T14:44:42; updated 2026-02-04T14:44:42

@kouho
Banner.phpのバナー情報もTeam_join_campaign.phpのget_banner_info()を使用してください。
設定は1箇所にまとめておきたいです。

Comment

#44174 by wada at 2026-02-04T15:16:34; updated 2026-02-04T15:16:34

@kouho
user_team_join_campaignテーブルのcp_statusは、どこかで更新したり参照していますか?

Comment

#44175 by kouho at 2026-02-04T15:37:13; updated 2026-02-04T15:37:46

@wada
確認ありがとうございます。以下対応いたしました。

> quest_noとquest_id、reward_noとreward_idが混在しているので、どちらかに合わせておいて欲しいです。
タイプミスを誘発します。

quest_noに合わせました。reward_noとreward_idはreward_noに統一しております。

> user_team_join_campaign_rewardを使用せず user_team_join_campaign_questのreceive_flgをセット

user_team_join_campaign_rewardの削除と、user_team_join_campaign_questのreceive_flgにカラム追加対応いたしました。

> Banner.phpのバナー情報もTeam_join_campaign.phpのget_banner_info()を使用してください。
設定は1箇所にまとめておきたいです。

Banner.phpにまとめ対応いたしました。

Comment

#44176 by wada at 2026-02-04T15:40:57; updated 2026-02-04T15:40:57

@kouho
初日のログインクエストは、すでにゲームを始めていて当日ログインしているとカウントされませんか?

Comment

#44177 by wada at 2026-02-04T15:48:12; updated 2026-02-04T15:48:12

@kouho
master_team_join_campaign_questのquest_nameカラム追加がpushされていないと思います。

Comment

#44178 by kouho at 2026-02-04T16:33:22; updated 2026-02-04T16:33:22

@wada
以下対応いたしました。
> Team_join_campaign.phpのupdate_clear_count()で以下の処理が2回呼び出されています。

1回だけの呼び出しに修正

> master_team_join_campaign_questのquest_nameカラム追加がpushされていないと思います。

master_team_join_campaign_questのquest_nameカラムは最初作りましたが、後で削除したものです。
参照箇所は$this->get_quest_descriptionを参照するように修正しました。

Comment

#44179 by kouho at 2026-02-05T15:24:49; updated 2026-02-05T15:24:49

@wada
判定の順番を修正しました
> クエスト進捗を取得してからログイン判定しているので、初回アクセス時にリストの進捗に反映されていません。

kouho merge at 2026-02-05T17:13:31: 【2/4】仲間集結キャンペーン
kouho close at 2026-02-05T17:13:31: Close

commit comment

#325 by wada at 2026-02-03T14:34:36; lib/models/dao/user_info.php / old:None new:153
f9113e4057d5a9f3675f7b727e458270d785b663

@kouho
このメソッドは使用していますか?

commit comment

#326 by wada at 2026-02-03T14:48:22; lib/models/dao/user_team_join_campaign.php / old:None new:64
f9113e4057d5a9f3675f7b727e458270d785b663

@kouho
array_chunkを使ってより理解しやすいコードにしたいです。

$total = 0;
foreach (array_chunk($values, $chunk_size) as $chunk) {
	$this->insert_bulk($chunk);
	$total += count($chunk);
}

commit comment

#327 by wada at 2026-02-05T14:52:29; lib/class/controller/JrControllerTeamJoinCampaign.class.php / old:38 new:None
e0722e2bf0483601e7477f07464e605801da74ea

@kouho
クエスト進捗を取得してからログイン判定しているので、初回アクセス時にリストの進捗に反映されていません。

Commit range

base2f6185a44d42e4a84b1210eb6958b911a6a1e761
heade0722e2bf0483601e7477f07464e605801da74ea
base branchjolly/jr-web:master
head branchjolly/jr-web:scout_cp

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed29 filesView patch
statusfile
modifiedlib/SubFunc.inc
modifiedlib/class/const/QuestConst.class.php
addedlib/class/controller/JrControllerTeamJoinCampaign.class.php
modifiedlib/conf/class/EventScheduleConfig.class.php
addedlib/conf/class/TeamJoinCampaignConfig.class.php
modifiedlib/conf/define_gesoten.inc
modifiedlib/conf/define_y.inc
addedlib/exec/tool_team_join_campaign_target.php
modifiedlib/models/Banner.php
addedlib/models/Team_join_campaign.php
addedlib/models/dao/master_team_join_campaign_quest.php
addedlib/models/dao/master_team_join_campaign_reward.php
addedlib/models/dao/user_team_join_campaign.php
addedlib/models/dao/user_team_join_campaign_quest.php
modifiedlib/public/Main.inc
modifiedlib/public/Tutorial-Scroll.inc
addedpublic_html/img/banner/Campaign/banner_team_join_campaign_1_1.jpg
addedpublic_html/img/banner/Campaign/banner_team_join_campaign_1_2.jpg
addedpublic_html/img/info_event/info_event_1707_1.jpg
addedpublic_html/img/info_event/info_event_1707_2.jpg
addedpublic_html/img/info_jrye/5354/info1.jpg
addedpublic_html/img/info_jrye/5354/info2.jpg
addedpublic_html/img/info_jrye/5354/info3.jpg
modifiedpublic_html/index.php
modifiedpublic_html/template/Main.tpl
modifiedpublic_html/template/Team.tpl
addedpublic_html/template/TeamJoinCamapgin-Obserb.tpl
addedpublic_html/template/TeamJoinCampaign-Default.tpl
addedpublic_html/template/TeamJoinCampaign-Obserb.tpl
Patch body is stored as a separate file to keep this page lightweight.

Review comment

#325 by wada at 2026-02-03T14:34:36; lib/models/dao/user_info.php / old:None new:153
f9113e4057d5a9f3675f7b727e458270d785b663

@kouho
このメソッドは使用していますか?

Review comment

#326 by wada at 2026-02-03T14:48:22; lib/models/dao/user_team_join_campaign.php / old:None new:64
f9113e4057d5a9f3675f7b727e458270d785b663

@kouho
array_chunkを使ってより理解しやすいコードにしたいです。

$total = 0;
foreach (array_chunk($values, $chunk_size) as $chunk) {
	$this->insert_bulk($chunk);
	$total += count($chunk);
}

Review comment

#327 by wada at 2026-02-05T14:52:29; lib/class/controller/JrControllerTeamJoinCampaign.class.php / old:38 new:None
e0722e2bf0483601e7477f07464e605801da74ea

@kouho
クエスト進捗を取得してからログイン判定しているので、初回アクセス時にリストの進捗に反映されていません。