You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
3.9 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. <?php
  2. namespace App\Service;
  3. use Hyperf\Di\Annotation\Inject;
  4. use Hyperf\DbConnection\Db;
  5. use App\Model\Goods;
  6. use App\Model\Combination;
  7. use App\Model\ShopCar;
  8. class PurchaseLimitService implements PurchaseLimitServiceInterface
  9. {
  10. public function addShopCar($params)
  11. {
  12. //获取主表商品表信息
  13. $goods = Goods::where([
  14. ['id','=',$params['good_id']],
  15. ])
  16. ->select('is_max','restrict_num','box_money','inventory','money')
  17. ->first();
  18. //获取购物车该商品购买数量
  19. $num = ShopCar::where([
  20. ['user_id', $params['user_id']],
  21. ['good_id', $params['good_id']],
  22. ])
  23. ->sum('num');
  24. //限购检验
  25. if($goods->restrict_num > 0 && $goods->restrict_num <= $num){
  26. return false;
  27. }
  28. //获取规格表商品信息
  29. if($params['combination_id'] > 0) {
  30. $combination = Combination::where([
  31. ['id', '=', $params['combination_id']],
  32. ])
  33. ->select('wm_money', 'number')
  34. ->first();
  35. $inventory = $combination->number;
  36. $money = $combination->wm_money;
  37. }else{
  38. $inventory = $goods->inventory;
  39. $money = $goods->money;
  40. }
  41. //库存校验
  42. if($goods->is_max == 2 && ($num + $params['num']) > $inventory)
  43. {
  44. return false;
  45. }
  46. //更新购物车
  47. $exists = ShopCar::where([
  48. ['user_id', '=', $params['user_id']],
  49. ['good_id', '=', $params['good_id']],
  50. ['market_id','=',$params['market_id']],
  51. ['combination_id','=', $params['combination_id']],
  52. ]);
  53. if($params['combination_id'] > 0) {
  54. $exists->where('combination_id',$params['combination_id']);
  55. }
  56. $test = $exists->exists();
  57. if($test)
  58. {
  59. $update = ShopCar::where([
  60. ['user_id', '=', $params['user_id']],
  61. ['good_id', '=', $params['good_id']],
  62. ['market_id','=',$params['market_id']],
  63. ]);
  64. if($params['combination_id'] > 0) {
  65. $update->where('combination_id',$params['combination_id']);
  66. }
  67. $update->increment('num', $params['num']);
  68. }else{
  69. $son_id = empty($params['son_id']) ? 0 : $params['son_id'];
  70. $dr_id = empty($params['dr_id']) ? 0 : $params['dr_id'];
  71. $combination_id = empty($params['combination_id']) ? 0 : $params['combination_id'];
  72. $qg_name = empty($params['qg_name']) ? ' ' : $params['qg_name'];
  73. $qg_logo = empty($params['qg_logo']) ? ' ' :$params['qg_logo'];
  74. ShopCar::insert(
  75. [
  76. 'market_id' => $params['market_id'],
  77. 'good_id' => $params['good_id'],
  78. 'store_id' => $params['store_id'],
  79. 'user_id' => $params['user_id'],
  80. 'combination_id' => $combination_id,
  81. 'num' => $params['num'],
  82. 'spec' => $params['spec'],
  83. 'son_id' => $son_id,
  84. 'dr_id' => $dr_id,
  85. 'qg_name' => $qg_name,
  86. 'qg_logo' => $qg_logo,
  87. 'money' => $money,
  88. 'box_money' => $goods->box_money,
  89. ]
  90. );
  91. }
  92. return $test;
  93. // if($params['goods_id'] == 1561){
  94. // return false;
  95. // }else{
  96. // return '加入购物车成功';
  97. // }
  98. }
  99. public function updateShopCar($params)
  100. {
  101. if($params['good_id'] == 1561){
  102. return false;
  103. }else{
  104. return '更新购物车成功';
  105. }
  106. }
  107. public function test($params)
  108. {
  109. return $params;
  110. }
  111. }