20260324193650_AddPaymentTables.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. using System;
  2. using Microsoft.EntityFrameworkCore.Migrations;
  3. #nullable disable
  4. namespace Infrastructure.Persistence.Migrations
  5. {
  6. /// <inheritdoc />
  7. public partial class AddPaymentTables : Migration
  8. {
  9. /// <inheritdoc />
  10. protected override void Up(MigrationBuilder migrationBuilder)
  11. {
  12. migrationBuilder.AddColumn<string>(
  13. name: "MerchantId",
  14. table: "PaymentOrder",
  15. type: "nvarchar(20)",
  16. maxLength: 20,
  17. nullable: false,
  18. defaultValue: "");
  19. migrationBuilder.AddColumn<string>(
  20. name: "OrderName",
  21. table: "PaymentOrder",
  22. type: "nvarchar(100)",
  23. maxLength: 100,
  24. nullable: false,
  25. defaultValue: "");
  26. migrationBuilder.CreateTable(
  27. name: "PaymentCancel",
  28. columns: table => new
  29. {
  30. ID = table.Column<int>(type: "int", nullable: false)
  31. .Annotation("SqlServer:Identity", "1, 1"),
  32. MemberID = table.Column<int>(type: "int", nullable: false),
  33. PaymentOrderID = table.Column<int>(type: "int", nullable: false),
  34. Method = table.Column<int>(type: "int", nullable: false),
  35. TransactionId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
  36. OrderId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
  37. Amount = table.Column<int>(type: "int", nullable: false),
  38. MerchantId = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false),
  39. CancelType = table.Column<int>(type: "int", nullable: false),
  40. CancelRequester = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  41. CancelReason = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true),
  42. ResponseCode = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  43. ResponseMessage = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
  44. OriginalTransactionId = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
  45. CancelledAmount = table.Column<int>(type: "int", nullable: true),
  46. TransDate = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
  47. TransTime = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
  48. Balance = table.Column<int>(type: "int", nullable: true),
  49. RemainedAmount = table.Column<int>(type: "int", nullable: true),
  50. ApprovalDateTime = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
  51. CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
  52. UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
  53. },
  54. constraints: table =>
  55. {
  56. table.PrimaryKey("PK_PaymentCancel", x => x.ID);
  57. table.ForeignKey(
  58. name: "FK_PaymentCancel_Member_MemberID",
  59. column: x => x.MemberID,
  60. principalTable: "Member",
  61. principalColumn: "ID");
  62. table.ForeignKey(
  63. name: "FK_PaymentCancel_PaymentOrder_PaymentOrderID",
  64. column: x => x.PaymentOrderID,
  65. principalTable: "PaymentOrder",
  66. principalColumn: "ID");
  67. },
  68. comment: "PG 결제 취소 (요청+응답)");
  69. migrationBuilder.CreateTable(
  70. name: "PaymentConfirm",
  71. columns: table => new
  72. {
  73. ID = table.Column<int>(type: "int", nullable: false)
  74. .Annotation("SqlServer:Identity", "1, 1"),
  75. MemberID = table.Column<int>(type: "int", nullable: false),
  76. PaymentOrderID = table.Column<int>(type: "int", nullable: false),
  77. Method = table.Column<int>(type: "int", nullable: false),
  78. TransactionId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
  79. OrderId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
  80. Amount = table.Column<int>(type: "int", nullable: false),
  81. MerchantId = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false),
  82. CertificateToken = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
  83. ResponseCode = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  84. ResponseMessage = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
  85. OrderName = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
  86. TotalAmount = table.Column<int>(type: "int", nullable: true),
  87. DiscountAmount = table.Column<int>(type: "int", nullable: true),
  88. UserName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  89. TransDate = table.Column<string>(type: "nvarchar(8)", maxLength: 8, nullable: true),
  90. TransTime = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  91. CardCode = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  92. CardName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
  93. CardNo = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
  94. InstallmentMonths = table.Column<byte>(type: "tinyint", nullable: true),
  95. ApproveNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
  96. ApprovalDateTime = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
  97. AuthKey = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
  98. AccountNumber = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
  99. BankCode = table.Column<string>(type: "nvarchar(3)", maxLength: 3, nullable: true),
  100. UserId = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  101. UserEmail = table.Column<string>(type: "nvarchar(60)", maxLength: 60, nullable: true),
  102. BankName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true),
  103. ExpireDate = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true),
  104. ExpireTime = table.Column<string>(type: "nvarchar(15)", maxLength: 15, nullable: true),
  105. VirtualAccountNumber = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true),
  106. UseCashReceipt = table.Column<string>(type: "nvarchar(1)", maxLength: 1, nullable: true),
  107. CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
  108. UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
  109. },
  110. constraints: table =>
  111. {
  112. table.PrimaryKey("PK_PaymentConfirm", x => x.ID);
  113. table.ForeignKey(
  114. name: "FK_PaymentConfirm_Member_MemberID",
  115. column: x => x.MemberID,
  116. principalTable: "Member",
  117. principalColumn: "ID");
  118. table.ForeignKey(
  119. name: "FK_PaymentConfirm_PaymentOrder_PaymentOrderID",
  120. column: x => x.PaymentOrderID,
  121. principalTable: "PaymentOrder",
  122. principalColumn: "ID");
  123. },
  124. comment: "PG 결제 승인 (요청+응답)");
  125. migrationBuilder.CreateTable(
  126. name: "PaymentLog",
  127. columns: table => new
  128. {
  129. ID = table.Column<int>(type: "int", nullable: false)
  130. .Annotation("SqlServer:Identity", "1, 1"),
  131. MemberID = table.Column<int>(type: "int", nullable: false),
  132. LogType = table.Column<int>(type: "int", nullable: false),
  133. Code = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false),
  134. Message = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false),
  135. TransactionId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
  136. OrderId = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
  137. ExtraData = table.Column<string>(type: "nvarchar(4000)", maxLength: 4000, nullable: true),
  138. CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
  139. },
  140. constraints: table =>
  141. {
  142. table.PrimaryKey("PK_PaymentLog", x => x.ID);
  143. table.ForeignKey(
  144. name: "FK_PaymentLog_Member_MemberID",
  145. column: x => x.MemberID,
  146. principalTable: "Member",
  147. principalColumn: "ID");
  148. },
  149. comment: "PG 결제 에러/실패/웹훅 로그");
  150. migrationBuilder.CreateIndex(
  151. name: "IX_PaymentCancel_CancelType",
  152. table: "PaymentCancel",
  153. column: "CancelType");
  154. migrationBuilder.CreateIndex(
  155. name: "IX_PaymentCancel_MemberID",
  156. table: "PaymentCancel",
  157. column: "MemberID");
  158. migrationBuilder.CreateIndex(
  159. name: "IX_PaymentCancel_Method",
  160. table: "PaymentCancel",
  161. column: "Method");
  162. migrationBuilder.CreateIndex(
  163. name: "IX_PaymentCancel_OrderId",
  164. table: "PaymentCancel",
  165. column: "OrderId");
  166. migrationBuilder.CreateIndex(
  167. name: "IX_PaymentCancel_PaymentOrderID",
  168. table: "PaymentCancel",
  169. column: "PaymentOrderID");
  170. migrationBuilder.CreateIndex(
  171. name: "IX_PaymentCancel_TransactionId",
  172. table: "PaymentCancel",
  173. column: "TransactionId");
  174. migrationBuilder.CreateIndex(
  175. name: "IX_PaymentConfirm_MemberID",
  176. table: "PaymentConfirm",
  177. column: "MemberID");
  178. migrationBuilder.CreateIndex(
  179. name: "IX_PaymentConfirm_Method",
  180. table: "PaymentConfirm",
  181. column: "Method");
  182. migrationBuilder.CreateIndex(
  183. name: "IX_PaymentConfirm_OrderId",
  184. table: "PaymentConfirm",
  185. column: "OrderId",
  186. unique: true);
  187. migrationBuilder.CreateIndex(
  188. name: "IX_PaymentConfirm_PaymentOrderID",
  189. table: "PaymentConfirm",
  190. column: "PaymentOrderID");
  191. migrationBuilder.CreateIndex(
  192. name: "IX_PaymentConfirm_TransactionId",
  193. table: "PaymentConfirm",
  194. column: "TransactionId",
  195. unique: true);
  196. migrationBuilder.CreateIndex(
  197. name: "IX_PaymentLog_Code",
  198. table: "PaymentLog",
  199. column: "Code");
  200. migrationBuilder.CreateIndex(
  201. name: "IX_PaymentLog_LogType",
  202. table: "PaymentLog",
  203. column: "LogType");
  204. migrationBuilder.CreateIndex(
  205. name: "IX_PaymentLog_MemberID",
  206. table: "PaymentLog",
  207. column: "MemberID");
  208. migrationBuilder.CreateIndex(
  209. name: "IX_PaymentLog_OrderId",
  210. table: "PaymentLog",
  211. column: "OrderId");
  212. migrationBuilder.CreateIndex(
  213. name: "IX_PaymentLog_TransactionId",
  214. table: "PaymentLog",
  215. column: "TransactionId");
  216. }
  217. /// <inheritdoc />
  218. protected override void Down(MigrationBuilder migrationBuilder)
  219. {
  220. migrationBuilder.DropTable(
  221. name: "PaymentCancel");
  222. migrationBuilder.DropTable(
  223. name: "PaymentConfirm");
  224. migrationBuilder.DropTable(
  225. name: "PaymentLog");
  226. migrationBuilder.DropColumn(
  227. name: "MerchantId",
  228. table: "PaymentOrder");
  229. migrationBuilder.DropColumn(
  230. name: "OrderName",
  231. table: "PaymentOrder");
  232. }
  233. }
  234. }