Deli.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace App\Controllers;
  3. use CodeIgniter\RESTful\ResourceController;
  4. class Deli extends ResourceController
  5. {
  6. //구매자 리스트
  7. public function delilist()
  8. {
  9. $db = \Config\Database::connect();
  10. $request = $this->request->getJSON(true);
  11. $itemSeq = isset($request['item_seq']) ? $request['item_seq'] : null;
  12. $infSeq = isset($request['inf_seq']) ? $request['inf_seq'] : null;
  13. // 쿼리 빌더
  14. // 인플루언서 시퀀스가 들어올 경우 해당 정보만 노출, 들어오지 않으면 전체 노출
  15. if($infSeq){
  16. $builder = $db->table('ITEM_ORDER_LIST')->where('ITEM_SEQ', $itemSeq )->where('INF_SEQ', $infSeq);
  17. } else {
  18. $builder = $db->table('ITEM_ORDER_LIST')->where('ITEM_SEQ', $itemSeq );
  19. }
  20. // 주문일 기준으로 정렬
  21. $builder->orderBy('ORDER_DATE', 'DESC');
  22. $lists = $builder->get()->getResultArray();
  23. return $this->respond($lists, 200);
  24. }
  25. //구매자 등록
  26. public function deliRegister()
  27. {
  28. $db = \Config\Database::connect();
  29. $request = $this->request->getJSON(true);
  30. $itemSeq = isset($request['item_seq']) ? $request['item_seq'] : null;
  31. $infSeq = isset($request['inf_seq']) ? $request['inf_seq'] : null;
  32. $deliveryList = $request['deliveryList'] ?? [];
  33. $db->table('ITEM_ORDER_LIST')
  34. ->where('ITEM_SEQ', $itemSeq)
  35. ->where('INF_SEQ', $infSeq)
  36. ->delete();
  37. foreach ($deliveryList as $index => $delivery) {
  38. $requiredFields = ['buyerName', 'address', 'phone', 'qty', 'total', 'orderDate'];
  39. foreach ($requiredFields as $field) {
  40. if (!isset($delivery[$field]) || $delivery[$field] === '') {
  41. return $this->fail("deliveryList[$index] 항목의 '{$field}' 값이 누락되었습니다.", 400);
  42. }
  43. }
  44. // 삽입
  45. $data = [
  46. 'ITEM_SEQ' => $itemSeq,
  47. 'INF_SEQ' => $infSeq,
  48. 'BUYER_NAME' => $delivery['buyerName'],
  49. 'ADDRESS' => $delivery['address'],
  50. 'PHONE' => $delivery['phone'],
  51. 'EMAIL' => $delivery['email'],
  52. 'QTY' => $delivery['qty'],
  53. 'TOTAL' => $delivery['total'],
  54. 'DELI_COMP' => $delivery['deliComp'] ?? null,
  55. 'DELI_NUMB' => $delivery['deliNumb'] ?? null,
  56. 'ORDER_DATE' => date('Y-m-d H:i:s', strtotime($delivery['orderDate'])),
  57. 'REG_DATE' => date('Y-m-d'),
  58. ];
  59. $db->table('ITEM_ORDER_LIST')->insert($data);
  60. }
  61. return $this->respond(['message' => '배송 데이터가 성공적으로 저장되었습니다.'], 200);
  62. }
  63. //아이템 상세
  64. public function itemDetail($seq)
  65. {
  66. // DB 객체 얻기
  67. $db = \Config\Database::connect();
  68. $builder = $db->table('ITEM_LIST');
  69. $item = $builder->where('seq', $seq)->get()->getRowArray();
  70. if($item){
  71. return $this->respond($item, 200);
  72. } else {
  73. return $this->respond([
  74. 'status' => 'fail',
  75. 'message' => '유효하지 않은 seq입니다.'
  76. ], 404);
  77. }
  78. }
  79. //아이템 삭제
  80. public function itemDelete($seq)
  81. {
  82. $db = \Config\Database::connect();
  83. $db->transBegin();
  84. //아이템 삭제
  85. $deleted = $db->table('ITEM_LIST')
  86. ->where('SEQ', $seq)
  87. ->update(['DEL_YN' => 'Y']);
  88. if ($db->transStatus() === false || !$deleted) {
  89. $db->transRollback();
  90. return $this->respond(['status' => 'fail', 'message' => '이벤트 삭제 중 오류가 발생했습니다.']);
  91. }
  92. $db->transCommit();
  93. return $this->respond(['status' => 'success', 'message' => '이벤트가 삭제되었습니다.'], 200);
  94. }
  95. }