20260324193650_AddPaymentTables.cs 12 KB

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