PR

【1/31】ユーザ残高保存 #3887

wada opened this at 2025-01-28T17:18:03; closed

Description

opened by wada at 2025-01-28T17:18:03; updated 2025-02-04T15:24:16

概要

ユーザのコイン残高をテーブルに保存
スクリプトでの一定間隔での更新は今後対応予定

新規テーブル

CREATE TABLE `user_platform_balance` (
  `user_no` int(11) unsigned NOT NULL,
  `balance` int(11) unsigned NOT NULL DEFAULT '0',
  `coin` int(11) unsigned NOT NULL DEFAULT '0',
  `free_coin` int(11) unsigned NOT NULL DEFAULT '0',
  `update_date` datetime NOT NULL,
  PRIMARY KEY (`user_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Comment

#38634 by wada at 2025-01-28T17:18:14; updated 2025-01-28T17:18:14

@kouho
レビューお願いします。

Comment

#38648 by kouho at 2025-01-29T18:59:09; updated 2025-01-29T18:59:09

@wada
今だとコイン残高を取得するページにアクセスするたびにUPDATEが実行されるため、更新があるときのみUPDATEできるように修正できませんか?

例えば、以下のようなクエリです。ごちゃごちゃになってしまうので最適化したいですがいい方法が思い浮かばず。。。

		$sql = sprintf("
			INSERT INTO user_platform_balance 
				(user_no, balance, coin, free_coin, update_date)
			VALUES 
				(%d, %d, %d, %d, NOW())
			ON DUPLICATE KEY UPDATE
				balance = IF(balance <> VALUES(balance), VALUES(balance), balance),
				coin = IF(coin <> VALUES(coin), VALUES(coin), coin),
				free_coin = IF(free_coin <> VALUES(free_coin), VALUES(free_coin), free_coin),
				update_date = IF(balance <> VALUES(balance) OR coin <> VALUES(coin) OR free_coin <> VALUES(free_coin), NOW(), update_date);
			",
			$user_no,   // ユーザーID
			$balance,   // 更新するバランス
			$coin,      // 更新するコイン
			$free_coin  // 更新するフリーコイン
		);
kouho add_label at 2025-01-29T18:59:19: コメントあり

Comment

#38650 by wada at 2025-01-29T19:02:10; updated 2025-01-29T19:02:10

@kouho
> 今だとコイン残高を取得するページにアクセスするたびにUPDATEが実行されるため、更新があるときのみUPDATEできるように修正できませんか?

どのような問題がありますか?

Comment

#38651 by wada at 2025-01-30T11:12:00; updated 2025-01-30T12:07:02

user_balanceをselectして以下の状態ならupdateするように変更
・balance,coin,free_coinいずれかに変更がある
・update_dateが3時間前

Comment

#38652 by wada at 2025-01-30T12:06:55; updated 2025-01-30T12:06:55

@kouho
> user_balanceをselectして以下の状態ならupdateするように変更
・balance,coin,free_coinいずれかに変更がある
・update_dateが3時間前

上記対応しました。

Comment

#38715 by kouho at 2025-02-04T10:18:16; updated 2025-02-04T10:18:16

@wada
対応ありがとうございます。確認OKです。

kouho add_label at 2025-02-04T10:18:19: 皇甫 LGTM
kouho delete_label at 2025-02-04T10:28:15: コメントあり
wada merge at 2025-02-04T15:24:02: 【1/31】ユーザ残高保存
wada close at 2025-02-04T15:24:02: Close
wada delete_branch at 2025-02-04T15:24:16: user_blance

Commit range

basefe5ee6df1ac02881ec1bdff1fc9a06071130ef67
head3c576158bde2ee3eb46024b27602a305da9521b0
base branchjolly/jr-web:master
head branchjolly/jr-web:user_blance

View commits

Commit details are loaded from Git when a dynamic archive server is running, or can be embedded with --include-commits.
Files changed3 filesView patch
statusfile
modifiedlib/SubFunc/SubFunc_yamada.inc
modifiedlib/class/platform/yamada/YamadaWithoutAPI.class.php
addedlib/models/dao/user_platform_balance.php
Patch body is stored as a separate file to keep this page lightweight.