StoreCart.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\model\api;
  4. use think\Model;
  5. /**
  6. * @mixin \think\Model
  7. */
  8. class StoreCart extends Model
  9. {
  10. protected $name = 'store_cart';
  11. /**
  12. * 获取购物车列表
  13. * @param int $uid
  14. * @return array
  15. */
  16. public function getCartList($uid)
  17. {
  18. $list = $this->alias('c')
  19. ->field('c.*,p.title,p.image,p.price as product_price')
  20. ->leftJoin('store_product p', 'p.id = c.product_id')
  21. ->where('c.uid', $uid)
  22. ->select()
  23. ->toArray();
  24. return $list;
  25. }
  26. /**
  27. * 添加购物车
  28. * @param array $data
  29. * @return int|false 成功返回购物车ID,失败返回false
  30. */
  31. public function addToCart($data)
  32. {
  33. // 确保cart_num为整数
  34. $cartNum = (int)($data['cart_num'] ?? 1);
  35. if ($cartNum <= 0) {
  36. $cartNum = 1;
  37. }
  38. // 检查是否已存在
  39. $exist = $this->where('uid', $data['uid'])
  40. ->where('product_id', $data['product_id'])
  41. ->where('product_attr_unique', $data['product_attr_unique'] ?? '')
  42. ->find();
  43. if ($exist) {
  44. // 更新数量,使用整数类型
  45. $result = $this->where('id', $exist['id'])->inc('cart_num', $cartNum)->update();
  46. return $result ? $exist['id'] : false;
  47. } else {
  48. // 新增
  49. $data['cart_num'] = $cartNum;
  50. $result = $this->insert($data);
  51. return $result ? $this->getLastInsID() : false;
  52. }
  53. }
  54. /**
  55. * 修改购物车数量
  56. * @param int $id
  57. * @param int $cartNum
  58. * @param int $uid
  59. * @return bool
  60. */
  61. public function updateCartNum($id, $cartNum, $uid)
  62. {
  63. return $this->where('id', $id)->where('uid', $uid)->update(['cart_num' => $cartNum]);
  64. }
  65. /**
  66. * 删除购物车
  67. * @param array $ids
  68. * @param int $uid
  69. * @return bool
  70. */
  71. public function deleteCart($ids, $uid)
  72. {
  73. return $this->where('uid', $uid)->whereIn('id', $ids)->delete();
  74. }
  75. }