📋 出券設定
📝 文件版本
v1.0
📅 建立日期
2026-01-19
👤 撰寫者
Abby
🔄 最後更新
2026-01-23
📌 附註:
本文件為「電子券管理 / 出券設定」頁面的按鈕功能詳細規格,所有 UI 互動應遵循此規格實作。如有異動需求,請更新本文件並通知相關人員。
1. 頁面概述
本頁面用於管理電子券活動的出券(發券)設定,當會員符合設定的條件(如消費滿額、持有特定卡種等)時,系統會自動發放電子券至會員帳戶中。頁面提供查詢現有出券設定及新增出券活動的功能,管理者可設定活動期間、適用卡種、滿額門檻、發券數量等條件。
2. 主要功能說明
📋 功能說明
執行篩選條件查詢,依據使用者輸入的條件篩選出券設定列表。可不帶入任何條件,查詢全部資料。
▲ 出券設定查詢畫面
⚙️ 查詢欄位說明 (tblDiscount + 關聯表)
| DB欄位 | 欄位名稱 | 資料類型 | 說明 | 必填 |
|---|---|---|---|---|
| cActionCode | 活動編號 | 文字 | 模糊搜尋活動編號 格式: T2XXXX 例:T25028、T26004 |
否 |
| cActionName | 活動名稱 | 文字 | 模糊搜尋活動名稱 最多顯示30字,超過顯示... 例:滿2000打9折、春季特惠活動 |
否 |
| cEventCode | 電子券代碼 | 文字 | 輸入電子券代碼進行查詢(票證活動代號) 格式: Y0XX 例:Y031、Y148、Y149 |
否 |
| cSponsorCode | 付款廠商代號 | 文字 varchar(10) |
輸入付款廠商代號進行篩選 例:1234、6674、6681 |
否 |
| cActionFrom cActionTo |
有效期間 | 日期區間 | 選擇活動期間範圍進行篩選 起始日期不得大於結束日期 格式:YYYY/MM/DD ~ YYYY/MM/DD 例:2026/01/01 ~ 2026/12/31 |
否 |
| - (查詢條件) |
行銷折價券抵用設定 | 下拉選單 | 篩選電子券的商品折抵規則設定狀態 選項:全部、已設定、未設定 列表顯示:1/1 已設定 或 0/1 未設定 說明:此為前端查詢條件,依據 tblWriteOffSettings 是否有對應資料判定 |
否 |
📤 執行結果
- 成功:顯示符合條件的出券設定列表,包含分頁資訊
- 無資料:顯示空白列表與「查無資料」提示
- 失敗:顯示錯誤訊息,並保留原有查詢結果
💡 注意事項
- 若未填寫任何篩選條件,將查詢所有出券設定資料
- 查詢結果預設每頁顯示 10 筆資料
- 查詢結果依照建立時間由新到舊排序
📋 功能說明
開啟新增出券設定對話框,建立新的電子券活動設定。
▲ 出券設定新增畫面 (圖1)
▲ 出券設定新增畫面 (圖2)
▲ 出券設定新增畫面 (圖3)
⚙️ 新增欄位說明 (tblDiscount + 關聯表)
| DB欄位 | 欄位名稱 | 資料類型 | 說明 | 必填 |
|---|---|---|---|---|
| cDiscountType | 出券形式 | 下拉選單 | 選擇出券產生方式 1:整批產卡:由系統批次產生券號,供後續使用 2:活動產卡:由POS系統依活動條件自動產生,符合條件時即發券 |
是 |
| ccardId (tblCard) |
電子券類型 | 下拉選單 | 選擇電子券卡片類型 下拉選單顯示已設定的卡種 例:Y卡、I卡、C卡 |
是 |
| cEventCode | 電子券代碼 | 下拉選單 | 選擇要發放的電子券商品(票證活動代號) 下拉選單顯示系統已建立的電子券清單 例:滿2000打9折、全館85折、春季特惠 |
是 |
| cProductQty (tblDiscountByProduct) |
張數 | 數字 | 輸入發放張數(符合條件時單次發放數量) 預設值:1 例:1、2、5 |
是 |
| cMemberType | 會員別限制 | 下拉選單 | 選擇適用的會員類型 -1:請選擇:預設值,未設定時 0:全部(不限):所有會員皆可領取,無限制 1:福利卡(含PXPAY會員/VIP):僅限福利卡會員可領取 2:PXPAY會員:僅限PXPAY會員可領取 3:VIP會員:僅限VIP會員可領取 |
是 |
| cCarrierType | 載體類型 | 下拉選單 | 選擇電子券載體形式 1:紙本:列印成紙本券,可於門市使用 2:數位:儲存於APP或系統中,以電子形式使用 |
是 |
| cType1 | 類型1 | 下拉選單 | 選擇出券計算方式(與「類型2」、「活動條件」搭配使用) 1:單筆:以單次交易計算,每次交易獨立判斷 2:累積:以累計金額/數量計算,可跨交易累積 範例: 單筆 + 金額 + 2000 = 單次消費滿2000元發券 單筆 + 數量 + 3 = 單次購買滿3件發券 單筆 + N% + 10 = 單次消費金額10%回饋券 累計 + 金額 + 5000 = 累計消費達5000元發券 累計 + 數量 + 10 = 累計購買滿10件發券 累計 + N% + 5 = 累計消費金額5%回饋券 |
是 |
| cType2 | 類型2 | 下拉選單 | 選擇出券條件單位(與「類型1」、「活動條件」搭配使用) 1:數量:依購買數量判斷,達到指定件數即發券 2:金額:依消費金額判斷,達到指定金額即發券 範例: 單筆 + 金額 + 2000 = 單次消費滿2000元發券 單筆 + 數量 + 3 = 單次購買滿3件發券 單筆 + N% + 10 = 單次消費金額10%回饋券 累計 + 金額 + 5000 = 累計消費達5000元發券 累計 + 數量 + 10 = 累計購買滿10件發券 累計 + N% + 5 = 累計消費金額5%回饋券 |
是 |
| cCondition | 活動條件 | 數字 | 輸入發券觸發門檻值(與「類型1」、「類型2」搭配使用) 0表示無門檻,任何消費都發券 例:0、200、1111、2000 範例: 單筆 + 金額 + 0 = 每筆交易都發券(無門檻) 單筆 + 金額 + 2000 = 單筆消費滿2000元即發券 單筆 + 數量 + 3 = 單筆購買滿3件即發券 單筆 + N% + 10 = 單筆消費金額10%回饋 累計 + 金額 + 5000 = 累計消費達5000元即發券 累計 + 數量 + 10 = 累計購買滿10件即發券 累計 + N% + 5 = 累計消費金額5%回饋 |
是 |
| cSponsorName (tblSponsor) |
付款廠商名稱 | 文字 | 輸入付款廠商名稱(選填,方便識別) 例:全聯實業、統一企業、可口可樂 |
否 |
| cSponsorCode | 付款廠商代號 | 文字 varchar(10) |
輸入付款廠商代號(用於成本歸屬與財務結算) 例:6674、6681、1234 |
是 |
| cActionSendType | 活動總發行上限類型 | 下拉選單 | 選擇發行上限方式(與「整檔活動贈送上限」搭配,達上限後停止發券) -1:請選擇:預設值,未設定時 0:無:不限制發行數量,可無限發券 1:金額:以總金額上限控制,達到總金額後停止發券 2:次數:以總發行次數控制,達到總次數後停止發券 範例: 無 + 0 = 無限發券 金額 + 100000 = 總發行額度10萬元 次數 + 500 = 總共只發500次 |
是 |
| cAllActivityGiftlimit | 整檔活動贈送上限 | 數字 | 輸入整個活動的總發行額度或張數(與「上限類型」搭配,單位依類型而定) 預設值:0(無上限) 範例: 無 + 0 = 無上限 金額 + 100000 = 上限金額10萬元 次數 + 500 = 上限500次 |
否 |
| cOnePayActivityGiftlimit | 單次交易贈送上限 | 數字 | 輸入單筆交易可獲得的電子券數量上限(防止單次取得過多券) 例:1(單次交易最多1張)、5(單次交易最多5張) |
否 |
| cSettlementType | 交結結算 | 下拉選單 | 選擇電子券在交班結算時的處理方式(僅數位載體有此設定) -1:請選擇:預設值,未設定時 1:結算歸零:交班結算時,未使用的電子券將歸零清除 2:餘額累計:交班結算時,未使用的電子券保留至下次交班 說明:此欄位僅在「會員別限制」不為「全部(不限)」且「載體類型」為「數位」時顯示。當會員為「全部(不限)」時自動停用 限制:當電子券類型(cProductType)為「結算額的N%」(值=4)時,此欄位不顯示 |
否 |
| cActionCode | 活動編號 | 文字 | 系統自動產生的活動代碼(新增時唯讀,不需手動輸入) 格式:T2+4位數字(T2XXXX) 例:T26004、T25026 |
否 |
| cActionName | 活動名稱 | 文字 | 輸入活動名稱(顯示於系統列表與報表,最多20字) 例:春季特惠活動、滿2000送100、會員日限定優惠 |
是 |
| cActionFrom cActionTo |
活動期間 | 日期區間 | 選擇活動的有效起訖日期(起始日期不得大於結束日期) 格式:YYYY/MM/DD 例:2026/01/21 ~ 2026/02/28、 2026/01/01 ~ 2026/12/31 |
是 |
| cActionTimefrom cActionTimeto |
活動時段 | 時間區間 | 每日可使用此活動的時間範圍 格式:HH:mm(24小時制) 說明:在活動期間內,每天只有在此時段內才可發券 例:00:00 ~ 23:59(全天)、09:00 ~ 17:00(營業時間)、18:00 ~ 22:00(晚間限定) |
是 |
| cFrequencyType cFrequencyDay |
限活動日 | 下拉選單+文字 | 限定特定日期才可發券(控制活動日設定) cFrequencyType類型: 0:無設定(天天活動日)- 活動期間內每日皆可發券 1:每月N日 - 每月指定日期才發券(例如:1,15 表示每月1日和15日) 2:每周N - 每週指定星期才發券(例如:1,3,5 表示週一、週三、週五) cFrequencyDay說明:僅當選擇「每月N日」或「每周N」時需填寫,多個日期用逗號分隔 例:每月1,15日發券 / 每週1,3,5發券 |
是 |
| cStatus | 啟用狀態 | 開關切換 | 控制此出券活動是否啟用 1:啟用 - 活動生效,符合條件時會發券 0:停用 - 活動暫停,即使符合條件也不會發券 說明:可用於臨時暫停/恢復活動,無需刪除設定 |
是 |
| cSelfserviceType | 限自助收銀 | 核取方塊 | 是否限定僅自助收銀機才可發行此電子券 0:否 - 所有收銀方式皆可發券(一般櫃台+自助收銀) 1:是 - 僅限自助收銀機才可發券(勾選時) 例:鼓勵使用自助結帳的促銷活動 |
否 |
| cPayType (tblDiscountByPay) |
支付工具代碼 | 下拉選單 (可新增多筆) |
限定特定支付方式才可觸發發券(一對多關係,可設定多組支付方式) 支付類型選項: 0:無限制(全部支付方式) 1:全支付(所有電子支付) 2:信用卡銀行(需搭配「支付銀行代碼」欄位) 3:票證(悠遊卡、一卡通等) 4:儲值金(PX PAY儲值金) 5:禮券(實體禮券) 6:PXPAY銀行(需搭配「支付銀行代碼」欄位) 關聯性:與「支付銀行代碼」欄位搭配使用。當選擇類型2或6時,必須在「支付銀行代碼」中指定銀行 UI顯示:下方顯示已設定的支付方式清單表格,欄位包含「支付方式」、「銀行」、「操作」 資料儲存:寫入 tblDiscountByPay 資料表(cDiscountNo 關聯到主活動) |
否 |
| cBankCode (tblDiscountByPay) |
支付銀行代碼 | 下拉選單 | 當支付方式為銀行類型時,指定銀行代碼 使用時機: 僅當「支付工具代碼」選擇以下類型時才需填寫: • 2:信用卡銀行 • 6:PXPAY銀行 銀行代碼:從 tblBankCode 資料表選擇(如:822=中國信託、812=台北富邦等) 關聯性:與「支付工具代碼」欄位搭配使用,組成完整的支付方式限制條件 資料儲存:與 cPayType 同筆記錄寫入 tblDiscountByPay |
否 |
| - (前端控制) |
限定門市發行 | 核取方塊 | 控制是否啟用門市限制功能 0:不勾選 - 所有門市皆可發券,不限制特定門市 1:勾選 - 啟用門市限制,只有在「單店發行上限」設定的門市才可發券 關聯性:控制「單店發行上限」欄位是否生效。勾選後,必須在「單店發行上限」中設定至少一個門市 說明:此為前端 UI 控制欄位,用於啟用/停用門市限制功能,不寫入資料庫 |
否 |
| cUpperlimitType cStoreId cUpperValue (tblDiscountByStore) |
單店發行上限 | 下拉選單+數字 (可設定多筆) |
為不同門市個別設定發行上限(一對多關係,可為多個門市分別設定) 前提條件:需先勾選「限定門市發行」核取方塊才能設定 設定方式: 1. 選擇「單店發行上限類型」(cUpperlimitType) 2. 選擇「店號」(cStoreId)- 從下拉選單選擇門市 3. 輸入「上限值」(cUpperValue) 4. 點擊「新增」將此門市設定加入清單 5. 重複步驟 1-4 可為其他門市設定不同上限 cUpperlimitType(上限類型): -1:請選擇 - 預設值,未設定時 0:無 - 不限制該門市發行量 1:金額(發行總額) - 以總發行金額上限控制(單位:元) 2:次數 - 以總發行張數控制(單位:張) cStoreId(店號):門市流水號,指定要設定上限的門市 cUpperValue(上限值):該門市的上限數值(金額單位=元 / 次數單位=張) 範例: 門市A:類型=金額 + 上限=100000 → 門市A最多發行10萬元 門市B:類型=次數 + 上限=500 → 門市B最多發500張 關聯性:與「限定門市發行」核取方塊搭配使用。勾選後此設定才會生效 UI顯示:下方顯示已設定的門市清單表格,欄位包含「店號」、「門市名稱」、「上限類型」、「上限金額」、「操作」 資料儲存:每筆門市設定寫入 tblDiscountByStore 一筆記錄(cDiscountNo 關聯到主活動) |
否 |
| cPersonalType cPersonalPeriodType cPersonalPeriodlimit |
發行上限類型 | 下拉選單+數字 | 設定個人領取上限的計算方式、週期和數值 cPersonalType(上限計算方式): -1:請選擇 - 預設值,未設定時 0:無 - 不限制個人領取量 1:金額 - 以個人領取總金額上限控制 2:次數 - 以個人領取總張數控制 cPersonalPeriodType(上限計算週期): -1:請選擇(預設值,未設定時) 0:無 - 不限制週期 1:活動期間 - 整個活動期間累計 2:月 - 每月獨立計算,每月重置 3:周 - 每週獨立計算,每週重置 4:日 - 每日獨立計算,每天重置 5:單筆 - 單次交易限制 cPersonalPeriodlimit(上限數值): 依類型而定:金額單位=元 / 數量單位=張 範例: 數量 + 日 + 3 = 每人每日最多領3張 金額 + 活動期間 + 500 = 每人整個活動最多領500元 |
否 |
| cIsAll | 全品項 | 下拉選單 | 設定此活動是否適用於全部商品(若選「是」,則商品設定區塊不提供選擇) 1:是 - 所有商品都適用此出券活動,無需另外設定商品範圍 0:否 - 需要在「商品設定」區塊中指定適用的商品分類或品項 說明:選擇「是」時,tblDiscountByCommodity 不需要設定資料;選擇「否」時,必須在商品設定區塊中新增適用商品 |
是 |
| cDpsLevelType cDpsLevelNo cCommodityNo (tblDiscountByCommodity) |
商品設定 | 複選清單 (可新增多筆) |
設定此活動發放的折價券可抵用的商品範圍(一對多關係,可設定多個分類或商品) 設定方式: 1. 點擊「查詢分類」按鈕選擇商品分類 2. 或點擊「查詢商品」按鈕選擇指定商品 3. 選擇「篩選模式」:包含(綠色)或排除(紅色) 4. 選擇後加入清單 5. 可重複新增多個分類或商品 查詢分類彈窗欄位: • 篩選模式:下拉選單(包含/排除) • 分類類型:下拉選單(大分類/中分類/小分類/細分類/廠商編號) • 分類代碼:依選擇的分類類型顯示對應下拉選單 • 查詢結果:顯示符合條件的分類清單 查詢商品彈窗欄位: • 篩選模式:下拉選單(包含/排除) • 分類類型:下拉選單(大分類/中分類/小分類/細分類) • 分類代碼/名稱:依選擇的類型顯示對應下拉選單 • 商品編號:文字框,輸入商品編號 • 商品名稱:文字框,輸入商品名稱 • 查詢結果:顯示符合條件的商品清單 cDpsLevelType 商品分類類型(tinyint): 0:品項 - 指定單一商品品項 1:大分類 - 選擇商品大分類(DpsLevel1,如:食品、日用品、3C電器) 2:中分類 - 選擇商品中分類(DpsLevel2,如:飲料、零食、清潔用品) 3:小分類 - 選擇商品小分類(DpsLevel3,如:碳酸飲料、餅乾、洗衣精) 4:細分類 - 選擇商品細分類(DpsLevel4,更精細的分類層級) 8:廠商編號 - 依供應商限制(Merchant,可限制特定廠商的商品) 篩選模式(cfiltertype): 1:包含 - 符合此條件的商品才可使用(綠色顯示) 2:排除 - 符合此條件的商品不可使用(紅色顯示) 注意:單一分類不能同時設定包含及排除 cDpsLevelNo:若選擇分類(1-4, 8),此為分類代碼(varchar(8));若選擇品項(0)則為 null cCommodityNo:若選擇品項(0),此為商品流水號(int);若選擇分類則為 null cMerchantId:若選擇廠商編號(8),此為廠商 ID(int) 說明:若「全品項」設為「是」,則此區塊不需設定。可選擇大/中/小/細分類、廠商或指定商品,也可混合設定 UI顯示:下方顯示已選擇的商品清單表格,欄位包含「全選」、「篩選模式」、「分類類型」、「代碼」、「名稱」 資料儲存:每筆商品設定寫入 tblDiscountByCommodity 一筆記錄(cDiscountNo 關聯到主活動) |
否 |
| cEffDatefrom cEffDateto (tblWriteOffSettings) |
*行銷折價券抵用期間 | 日期區間 | 設定此電子券可以抵用的有效日期,需符合[行銷折價券抵用設定]裡面的[活動期間]欄位的時間 格式:dd/mm/yyyy ~ dd/mm/yyyy 例:21/01/2026 ~ 28/02/2026 |
是 |
📤 執行結果
- 成功:關閉對話框,刷新列表,顯示「新增成功」訊息
- 失敗:保留表單資料,顯示錯誤訊息
💡 注意事項
- 活動編號由系統自動產生,格式為 T2XXXX
- 活動期間的起始日期不得大於結束日期
- 若選擇「限定門市發行」,必須至少設定一個門市
- 若「全品項」選擇「否」,必須在商品設定中新增適用商品
2.3 訊息提示
✅ 成功訊息
樣式:綠色 toast 通知,畫面右上角,3秒後自動消失
查詢完成 / 活動設定新增成功! / 活動設定更新成功! / 活動設定刪除成功!
查詢完成 / 活動設定新增成功! / 活動設定更新成功! / 活動設定刪除成功!
❌ 錯誤訊息
樣式:紅色 toast 通知,畫面右上角,5秒後自動消失或手動關閉
查詢失敗,請稍後再試 / 新增失敗,請稍後再試 / 更新失敗,請稍後再試 / 刪除失敗,請稍後再試 / 顯示具體欄位錯誤
查詢失敗,請稍後再試 / 新增失敗,請稍後再試 / 更新失敗,請稍後再試 / 刪除失敗,請稍後再試 / 顯示具體欄位錯誤
2.4 列表功能
- 排序:支援依活動編號、活動開始時間排序
- 分頁:每頁顯示 10/20/50 筆可選
- 選取:不支援批次操作
- 匯出:不支援(若需要請另行評估)
2.5 操作按鈕說明
- 🔍 查詢按鈕:執行查詢功能。藍色背景可點擊,查詢執行中顯示載入圖示且不可點擊
- ➕ 新增按鈕:開啟新增出券設定對話框。有權限顯示綠色背景可點擊,無權限顯示灰色不可點擊
- 👁️ 檢視按鈕:以唯讀模式查看出券設定詳細資料。藍色文字可點擊,滑鼠移入顯示底線效果
- ✏️ 編輯按鈕:開啟編輯對話框修改出券設定。有權限顯示綠色文字可點擊,無權限顯示灰色不可點擊
- 🗑️ 刪除按鈕:刪除選定的出券設定(已發放電子券的活動無法刪除)。有權限且可刪除顯示紅色文字可點擊,無權限或活動已開始顯示灰色不可點擊
3. API 規格
3.1 查詢出券設定列表(對應「查詢」按鈕)
端點:
💻 請求範例 (cURL):
🔴 錯誤回應 (Response - 401 Unauthorized):
POST /api/CardEventSetting/GetList
📝 描述:
查詢出券設定列表,支援多種條件篩選與分頁功能
📋 請求參數 (Request Parameters):| 參數名稱 | 類型 | 說明 | 必填 |
|---|---|---|---|
cNo |
int | 活動編號(TblCardAction 的主鍵) | 否 |
cActionDateFrom |
datetime | 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss) | 否 |
cActionDateTo |
datetime | 活動結束日期(格式:yyyy-MM-ddTHH:mm:ss) 注意:開始日期不得大於結束日期 |
否 |
cOnorOff |
boolean | 啟停用狀態(true=啟用, false=停用) | 否 |
cProductId |
int | 商品ID(用於篩選包含指定商品的活動,-1表示不篩選) | 否 |
PageIndex |
int | 頁碼(預設:1) | 否 |
PageSize |
int | 每頁筆數(預設:50) | 否 |
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetList" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cActionDateFrom": "2026-01-01T00:00:00",
"cActionDateTo": "2026-12-31T23:59:59",
"cProductId": -1,
"PageIndex": 1,
"PageSize": 10
}'
✅ 回應範例 (Response - 200 OK):{
"StatusCode": 200,
"Message": "查詢成功",
"TotalItems": 50,
"Entries": [
{
"cNo": 1,
"cAllAmt": 100000.00,
"cAllCount": 500,
"cAmt": 5000.00,
"cCount": 5,
"cActionDateFrom": "2026-01-21T00:00:00",
"cActionDateTo": "2026-02-28T23:59:59",
"cOnorOff": true,
"cOnorOffName": "啟用",
"cProductNo": "P001,P002,P003"
},
{
"cNo": 2,
"cAllAmt": 50000.00,
"cAllCount": 200,
"cAmt": 2000.00,
"cCount": 3,
"cActionDateFrom": "2026-03-01T00:00:00",
"cActionDateTo": "2026-03-31T23:59:59",
"cOnorOff": false,
"cOnorOffName": "停用",
"cProductNo": "P004"
}
]
}
📋 回應欄位說明:
| 欄位名稱 | 類型 | 說明 |
|---|---|---|
cNo |
int | 活動編號(主鍵) |
cAllAmt |
decimal | 總金額卡控 |
cAllCount |
int | 總數量卡控 |
cAmt |
decimal | 個人金額 |
cCount |
int | 個人數量卡控 |
cActionDateFrom |
datetime | 活動開始日期時間 |
cActionDateTo |
datetime | 活動結束日期時間 |
cOnorOff |
boolean | 啟停用狀態(true=啟用, false=停用) |
cOnorOffName |
string | 啟停用狀態名稱("啟用" 或 "停用") |
cProductNo |
string | 商品編號列表(逗號分隔) |
{
"StatusCode": 401,
"Message": "未授權存取",
"Data": null
}
3.2 取得單筆出券設定資料(對應「檢視」/「編輯」按鈕)
端點:
💻 請求範例 (cURL):
🔴 錯誤回應 (Response - 404 Not Found):
POST /api/CardEventSetting/GetData
📝 描述:
依活動編號取得單筆出券設定的完整資料
📋 請求參數 (Request Body):| 參數名稱 | 類型 | 說明 | 必填 |
|---|---|---|---|
cNo |
int | 活動編號(TblCardAction 主鍵) | 是 |
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetData" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cNo": 1
}'
✅ 回應範例 (Response - 200 OK):{
"StatusCode": 200,
"Message": "查詢成功",
"Entries": {
"cNo": 1,
"cAllAmt": 100000.00,
"cAllCount": 500,
"cAmt": 5000.00,
"cCount": 5,
"cActionDateFrom": "2026-01-21T00:00:00",
"cActionDateTo": "2026-02-28T23:59:59",
"cOnorOff": true,
"cOnorOffName": "啟用",
"cProductList": [
{
"cProductId": 101,
"cProductNo": "P001",
"cProductName": "商品名稱A"
},
{
"cProductId": 102,
"cProductNo": "P002",
"cProductName": "商品名稱B"
}
]
}
}
📋 回應欄位說明:
| 欄位名稱 | 類型 | 說明 |
|---|---|---|
cNo |
int | 活動編號(主鍵) |
cAllAmt |
decimal | 總金額卡控 |
cAllCount |
int | 總數量卡控 |
cAmt |
decimal | 個人金額 |
cCount |
int | 個人數量卡控 |
cActionDateFrom |
datetime | 活動開始日期時間 |
cActionDateTo |
datetime | 活動結束日期時間 |
cOnorOff |
boolean | 啟停用狀態(true=啟用, false=停用) |
cOnorOffName |
string | 啟停用狀態名稱("啟用" 或 "停用") |
cProductList |
array | 商品列表(包含 cProductId, cProductNo, cProductName) |
{
"StatusCode": 404,
"Message": "查無此活動編號",
"Data": null
}
3.3 新增/更新出券設定(對應對話框「確定」按鈕)
端點:
💻 請求範例 (cURL):
POST /api/CardEventSetting/SaveData
📝 描述:
新增或更新出券設定資料。若 cNo 存在則為更新,否則為新增
📋 請求參數 (Request Body):| 參數名稱 | 類型 | 說明 | 必填 |
|---|---|---|---|
cNo |
int | 活動編號(更新時必填,新增時不填或填0) | 否 |
cAllAmt |
decimal | 總金額卡控 | 否 |
cAllCount |
int | 總數量卡控 | 否 |
cAmt |
decimal | 個人金額 | 否 |
cCount |
int | 個人數量卡控 | 否 |
cLastAmt |
decimal | 總量卡控金額剩餘 | 否 |
cLastCount |
int | 總量卡控數剩餘 | 否 |
cActionDateFrom |
datetime | 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss) | 否 |
cActionDateTo |
datetime | 活動結束日期(格式:yyyy-MM-ddTHH:mm:ss) | 否 |
cOnorOff |
boolean | 啟停用狀態(true=啟用, false=停用) | 否 |
cProductList |
array | 商品列表(包含 cProductId, cProductNo, cProductName) | 否 |
curl -X POST "https://api.pxmart.com/api/CardEventSetting/SaveData" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cNo": 0,
"cAllAmt": 100000.00,
"cAllCount": 500,
"cAmt": 5000.00,
"cCount": 5,
"cLastAmt": 100000.00,
"cLastCount": 500,
"cActionDateFrom": "2026-01-21T00:00:00",
"cActionDateTo": "2026-02-28T23:59:59",
"cOnorOff": true,
"cProductList": [
{
"cProductId": 101,
"cProductNo": "P001",
"cProductName": "商品名稱A"
},
{
"cProductId": 102,
"cProductNo": "P002",
"cProductName": "商品名稱B"
}
]
}'
✅ 回應範例 (Response - 200 OK):{
"StatusCode": 200,
"Message": "儲存成功",
"Entries": null
}
🔴 錯誤回應 (Response - 400 Bad Request):{
"StatusCode": 400,
"Message": "驗證失敗",
"Errors": [
{
"Field": "ActivityName",
"Message": "活動名稱不可為空"
},
{
"Field": "StartDate",
"Message": "活動開始日期不得大於結束日期"
}
]
}
3.4 刪除出券設定(對應「刪除」按鈕)
端點:
💻 請求範例 (cURL):
POST /api/CardEventSetting/RemoveData
📝 描述:
刪除指定活動編號的出券設定資料
⚠️ 注意事項:- 活動已開始則無法刪除
- 刪除動作無法復原,請謹慎操作
| 參數名稱 | 類型 | 說明 | 必填 |
|---|---|---|---|
cNo |
int | 要刪除的活動編號 | 是 |
cActionDateFrom |
datetime | 活動開始日期(格式:yyyy-MM-ddTHH:mm:ss) | 是 |
curl -X POST "https://api.pxmart.com/api/CardEventSetting/RemoveData" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cNo": 1,
"cActionDateFrom": "2026-01-21T00:00:00"
}'
✅ 回應範例 (Response - 200 OK):{
"StatusCode": 200,
"Message": "刪除成功",
"Data": null
}
🔴 錯誤回應 (Response - 400 Bad Request):{
"StatusCode": 400,
"Message": "活動已開始,無法刪除",
"Data": null
}
3.5 取得商品列表(頁面初始化時自動調用,填充查詢條件的「請選擇電子券」下拉選單)
端點:
POST /api/CardEventSetting/GetProductList
📝 描述:
取得禮物卡商品列表(例如:全聯禮物卡500元、1000元等),用於頁面上方查詢條件的「請選擇電子券」下拉選單。用戶可依商品篩選相關的出券活動設定。
🎯 使用時機:- 頁面載入時自動調用,填充查詢條件下拉選單
- 用途:讓用戶可以查詢「哪些出券活動使用了這個商品」
- 例如:選擇「全聯禮物卡500元」,查詢所有使用該商品的出券活動
- 查詢 TblProduct(商品表)+ TblCard(卡片表)
- 只顯示 CcardType = 'J' 的商品(APP 販售的禮物卡)
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetProductList" \ -H "Content-Type: application/json"✅ 回應範例 (Response - 200 OK):
[
{
"cProductId": 101,
"cProductNo": "GC500",
"cProductName": "全聯禮物卡500元"
},
{
"cProductId": 102,
"cProductNo": "GC1000",
"cProductName": "全聯禮物卡1000元"
},
{
"cProductId": 103,
"cProductNo": "GC3000",
"cProductName": "全聯禮物卡3000元"
}
]
3.6 取得可用活動商品列表(點擊「新增」按鈕時調用,填充新增對話框的商品下拉選單)
端點:
POST /api/CardEventSetting/GetEventDropList
📝 描述:
當用戶點擊「新增」按鈕開啟新增對話框時調用,取得尚未被使用在進行中活動的商品列表,用於彈出畫面的商品選擇下拉選單。
🎯 使用時機:- 點擊頁面上的「新增」按鈕時自動調用
- 與 3.5 的差異:此 API 會過濾掉已在進行中活動的商品,避免重複設定
- 只顯示 APP 販售的禮物卡(CcardType = 'J')
- 排除已被使用在進行中活動的商品
- 進行中活動定義:活動結束日期 > 當前時間 且 啟用狀態 = true
curl -X POST "https://api.pxmart.com/api/CardEventSetting/GetEventDropList" \ -H "Content-Type: application/json"✅ 回應範例 (Response - 200 OK):
[
{
"cProductId": 104,
"cProductNo": "P004",
"cProductName": "全聯禮物卡5000元"
},
{
"cProductId": 105,
"cProductNo": "P005",
"cProductName": "全聯禮物卡10000元"
}
]
📌 說明:
- 此 API 會過濾掉已被使用在進行中活動的商品
- 進行中活動定義:
CActionDateTo > 當前時間且COnorOff = true - 只返回
CcardType = 'J'的禮物卡商品
4. 測試案例
4.1 查詢功能測試
| 測試案例 | 輸入 | 預期結果 |
|---|---|---|
| TC-001 | 不輸入任何條件點擊查詢 | 顯示所有資料 |
| TC-002 | 輸入存在的活動編號 | 顯示該活動資料 |
| TC-003 | 輸入不存在的活動編號 | 顯示「查無資料」 |
| TC-004 | 輸入日期區間(起>訖) | 顯示「結束日期不得早於開始日期」 |
| TC-005 | 輸入錯誤日期格式 | 顯示「日期格式錯誤」 |
4.2 新增功能測試
| 測試案例 | 輸入 | 預期結果 |
|---|---|---|
| TC-006 | 填寫所有必填欄位並儲存 | 新增成功,列表更新 |
| TC-007 | 不填寫活動名稱並儲存 | 顯示「請填寫活動名稱」 |
| TC-008 | 輸入已存在的活動編號 | 顯示「活動編號已存在」 |
| TC-009 | 無新增權限點擊新增按鈕 | 按鈕禁用,無法點擊 |
4.3 編輯功能測試
| 測試案例 | 輸入 | 預期結果 |
|---|---|---|
| TC-010 | 編輯未開始的活動 | 可編輯所有欄位 |
| TC-011 | 編輯已開始的活動 | 僅能編輯「行銷折價券抵用設定」 |
| TC-012 | 無編輯權限點擊編輯 | 按鈕禁用或不顯示 |
4.4 刪除功能測試
| 測試案例 | 輸入 | 預期結果 |
|---|---|---|
| TC-013 | 刪除未開始的活動並確認 | 刪除成功,列表更新 |
| TC-014 | 刪除已開始的活動 | 顯示「活動已開始,無法刪除」 |
| TC-015 | 刪除確認對話框點擊取消 | 關閉對話框,不執行刪除 |
| TC-016 | 無刪除權限點擊刪除 | 按鈕禁用或不顯示 |