Files
thinkyu/報到系統/DOC/活動人員簽到簽退.md
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

2.1 KiB
Raw Permalink Blame History

活動人員簽到簽退

資料關聯

Classes.ID (1) <-> (*) SignUp.CourseID

資料類別

  • 各資料存取類別、資料集合類別、資料類別已有程式碼
  • 如需擴充加在 DAC_XXXX2.cs 裡面
  • DAC_Classes:活動資料處理類別
  • ClassesList:活動資料集類別
  • ClassesItem:活動資料項目類別
  • DAC_SignUp:活動參加人員資料處理類別
  • SignUpList:活動參加人員資料集類別
  • SignUpItem:活動參加人員資料項目類別
  • CheckInItem:簽到資料項目類別(用於 UploadCheckIns

畫面檔

  • 沒有,這是寫給 WinForm 客戶端使用的後端服務

後端服務

  • Services/ClassesService.asmx
    • 活動的後端服務
    • SearchClasses:查詢活動清單
  • Services/SignUpService.asmx
    • 活動參加人員的後端服務
    • SearchSignUps:以活動編號(CourseID)查詢參加人員
    • UploadCheckIns(int courseID, List items):批量上傳簽到簽退資料
      • 上傳資料欄位(CheckInItem):CourseID, Name, Mobile, IDNumber, IDType, MealType, Email, SignUpType, CheckInType, CheckInTime
      • 驗證規則
        • CourseID: 必填、必須存在於課程表 Classes.ID
        • Name, Mobile: 必填
        • SignUpType: 必填,允許值 (預約 / 現場)
        • CheckInType: 必填,允許值 (CHECKIN / CHECKOUT)
        • CheckInTime: 必填,格式 yyyy-MM-dd HH:mm:ss
      • 處理邏輯
        • 按 (CourseID, Name, Mobile) 查詢 SignUp 表
        • 若找到則依照 CheckInType 更新 CheckInTime/CheckOutTime,計入成功筆數
        • 若沒找到則新增 (SignUpType="現場"),並依 CheckInType 設定時間欄位,計入成功筆數
        • 不使用 transaction
      • 回應格式
        • 成功: { Success: true, Message: "...", Data: { CreatedCount, UpdatedCount, FailedCount, SkippedCount, SuccessIDs, Errors } }
        • 失敗: { Success: false, Message: "...", Data: {...} }

技術規格

  • 前端使用 Vue.js 實作,不使用 Server Control
  • 後端使用 WebService,要 EnableSession