CardClassificationService DB問い合わせ実装(LoadMemberInfo/LoadSeatInfo)
Resolved 💬 3 comments Opened Dec 24, 2025 by error21 Closed Feb 12, 2026
概要
Issue #773 (Device Service Layer 統合) の続き。CardClassificationService に DB 問い合わせ機能を追加し、カードIDから会員情報・打席情報を取得できるようにする。
背景
現在の CardClassificationService は:
- カードID先頭文字でカード種別を判定(Step 7)
- MemberCardClassifiedEvent 等を発行(Step 8-9)
しかし、MemberCardData に含まれる MemberNo, Balance 等は未設定(カードIDのみ)。
実装内容
1. データモデル追加 (SharedDataService/Models/)
// UchipEntity.cs - m_uchip テーブル
public class UchipEntity : DatabaseEntity
{
public string UchipNO { get; set; } // カードUID(主キー)
public int Type { get; set; } // 0=未登録, 1=会員, 10=打席
public int MemberNO { get; set; } // 会員番号
public int SeatNO { get; set; } // 打席番号
public int UchipReissueNO { get; set; }
public int Deposit { get; set; }
public int PrintNO { get; set; }
}
// MemberMasterEntity.cs - m_membermaster テーブル
public class MemberMasterEntity : DatabaseEntity
{
public int MemberNO { get; set; }
public string MemberName { get; set; }
public int MemberType { get; set; }
public int Balance { get; set; }
// ... 必要なフィールド
}
2. リポジトリ追加 (SharedDataService/Repositories/)
// ICardDataRepository.cs
public interface ICardDataRepository
{
Task<UchipEntity> GetUchipByCardIdAsync(string cardId);
Task<MemberMasterEntity> GetMemberByMemberNoAsync(int memberNo);
}
3. CardClassificationService 修正
private async Task<MemberCardData> LoadMemberInfoAsync(string cardId)
{
var uchip = await _cardDataRepository.GetUchipByCardIdAsync(cardId);
if (uchip == null || uchip.Type != 1) return null;
var member = await _cardDataRepository.GetMemberByMemberNoAsync(uchip.MemberNO);
return new MemberCardData
{
CardId = cardId,
MemberNo = member.MemberNO,
MemberType = member.MemberType,
Balance = member.Balance,
// ...
};
}
判定ロジック
| m_uchip.Type | カード種類 |
|--------------|------------|
| 0 | 未登録 |
| 1 | 会員カード |
| 10 | 打席カード |
関連
- Parent: #773 (Device Service Layer 統合)
- 参考:
wesp/Common/COMDB2.csのUchipDBRead_Dapperメソッド
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗