Cart.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php namespace Goods\Lib;
  2. use Dever;
  3. use Place;
  4. use Place\Lib\Resource;
  5. class Cart
  6. {
  7. private $type = 3;
  8. # 购物车列表
  9. public function getList()
  10. {
  11. $where['uid'] = Place::$uid;
  12. $set = array();
  13. //$set['num'] = 100;
  14. $data = Dever::db('cart', 'goods')->select($where, $set);
  15. if ($data) {
  16. $resource = new Resource($this->type);
  17. foreach($data as &$v) {
  18. Dever::input('price_id', 'set', $v['sku_id']);
  19. $info = $resource->getInfo($v['info_id'], false);
  20. if (!$info) {
  21. $v['del'] = 1;
  22. } else {
  23. $v['del'] = 2;
  24. }
  25. $v['name'] = $info['name'];
  26. $v['pic'] = $info['pic'];
  27. $v['price'] = $info['price'];
  28. $v['cdate_str'] = date('Y-m-d H:i:s', $v['cdate']);
  29. }
  30. }
  31. return $data;
  32. }
  33. # 购物车增减
  34. public function up($info_id, $sku_id, $num)
  35. {
  36. $data['uid'] = Place::$uid;
  37. $data['info_id'] = $info_id;
  38. $data['sku_id'] = $sku_id;
  39. $info = Dever::db('cart', 'goods')->find($data);
  40. if ($info) {
  41. $total = $info['num'] + $num;
  42. if ($total <= 0) {
  43. Dever::db('cart', 'goods')->delete($info['id']);
  44. } else {
  45. $data['num'] = array('+', $num);
  46. Dever::db('cart', 'goods')->update($info['id'], $data);
  47. }
  48. } else {
  49. $data['num'] = $num;
  50. Dever::db('cart', 'goods')->insert($data);
  51. }
  52. return $this->getList();
  53. }
  54. # 购物车选中状态
  55. public function edit($info_id, $sku_id, $status)
  56. {
  57. $data['uid'] = Place::$uid;
  58. $data['info_id'] = $info_id;
  59. $data['sku_id'] = $sku_id;
  60. $info = Dever::db('cart', 'goods')->find($data);
  61. if ($info) {
  62. Dever::db('cart', 'goods')->update($info['id'], array('status' => $status));
  63. }
  64. return $this->getList();
  65. }
  66. # 删除商品
  67. public function delete($info_id, $sku_id)
  68. {
  69. $data['uid'] = Place::$uid;
  70. $data['info_id'] = $info_id;
  71. $data['sku_id'] = $sku_id;
  72. Dever::db('cart', 'goods')->delete($data);
  73. return $this->getList();
  74. }
  75. public function drop()
  76. {
  77. $data['uid'] = Place::$uid;
  78. Dever::db('cart', 'goods')->delete($data);
  79. return $this->getList();
  80. }
  81. public function confirm()
  82. {
  83. //$id = Dever::input('ids', 'is_string', '请选择商品');
  84. $where['uid'] = Place::$uid;
  85. $where['status'] = 1;
  86. $data = Dever::db('cart', 'goods')->select($where);
  87. if ($data) {
  88. $result = array();
  89. $result['value'] = 0;
  90. $result['original'] = 0;
  91. $result['text'] = '';
  92. $result['id'] = '';
  93. $result['name'] = '';
  94. $resource = new Resource($this->type);
  95. foreach($data as &$v) {
  96. $id = $v['id'];
  97. $num = $v['num'];
  98. $sku_id = $v['sku_id'];
  99. Dever::input('price_id', 'set', $sku_id);
  100. $info = $resource->getInfo($v['info_id'], false);
  101. if ($info) {
  102. $v = $info;
  103. $v['cart_id'] = $id;
  104. $v['sku_id'] = $sku_id;
  105. $v['num'] = $num;
  106. $v['cash'] = $v['price']['value'];
  107. $result['value'] += $v['cash'];
  108. $result['original'] += $v['price']['original'];
  109. $v['name'] = $v['name'];
  110. if (isset($v['sku']['info']['name'])) {
  111. $v['sku_name'] = $v['sku']['info']['name'];
  112. }
  113. if (isset($v['sku']['info']['pic']) && $v['sku']['info']['pic']) {
  114. $v['pic'] = $v['sku']['info']['pic'];
  115. } else {
  116. $v['pic'] = $v['pic'][0];
  117. }
  118. if (!$result['id']) {
  119. $result['id'] = $v['id'];
  120. }
  121. if (!$result['name']) {
  122. $result['name'] = $v['name'];
  123. }
  124. }
  125. }
  126. $result['original'] = Dever::number($result['original']);
  127. $result['value'] = Dever::number($result['value']);
  128. $result['text'] = Dever::load('price', 'place')->getText($result['value'], 3);
  129. $result['detail'] = $data;
  130. return $result;
  131. } else {
  132. Dever::error('请选择商品');
  133. }
  134. }
  135. }