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.

111 lines
3.6 KiB

6 years ago
6 years ago
6 years ago
  1. <?php
  2. namespace App\Service;
  3. use App\Model\Order;
  4. use App\Model\OrderGoods;
  5. use App\Model\OrderMain;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\DbConnection\Db;
  8. use App\Model\Goods;
  9. use App\Model\Combination;
  10. use App\Model\ShopCar;
  11. use App\Constants\LogLabel;
  12. use App\Commons\Log;
  13. use Hyperf\Utils\ApplicationContext;
  14. use App\TaskWorker\SSDBTask;
  15. use App\Constants\SsdbKeysPrefix;
  16. class PurchaseLimitService implements PurchaseLimitServiceInterface
  17. {
  18. /**
  19. * @Inject
  20. * @var ParamsTokenServiceInterface
  21. */
  22. protected $paramsTokenService;
  23. public function getStoreIdByMarketId($params)
  24. {
  25. $market_id = $params['market_id'];
  26. //获取ssdb上的首页banner logo 列表
  27. $logo_list = $this->paramsTokenService->analyze('banner_logo_list');
  28. //获取ssdb上的首页banner 市场 列表
  29. $market_list = $this->paramsTokenService->analyze('banner_market_list');
  30. //根据前端指定的指获取店铺id 字符串 并拆分成数组
  31. $store_list = $market_list['market_id_'.$market_id];
  32. $store_list = explode(',',$store_list);
  33. //遍历店铺
  34. foreach ($store_list as $store_id){
  35. $res[] = [
  36. 'id' => 7,
  37. 'item' => 1,
  38. 'item_text' => 'page',
  39. 'logo' => $logo_list['store_id_'.$store_id],
  40. 'redirect_url' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid='.$store_id,
  41. 'src' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid='.$store_id,
  42. 'src2' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid='.$store_id,
  43. ];
  44. }
  45. return $res;
  46. }
  47. public function ssdbPurchaseRecord($data,$user_id,$global_order_id)
  48. {
  49. foreach ($data as $k => $v){
  50. if($v['money'] == 0.01){
  51. //添加特价商品购买记录到ssdb
  52. $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
  53. $ssdb->exec('set', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$user_id.'_'.$v['good_id'], $global_order_id);
  54. $end_timestamp = strtotime(date('Y-m-d').'23:59:59');
  55. $end_time = $end_timestamp - time();
  56. $ssdb->exec('expire', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$user_id.'_'.$v['good_id'],$end_time);
  57. }
  58. }
  59. return true;
  60. }
  61. public function delSsdbPurchaseRecord($global_order_id)
  62. {
  63. $order_main = OrderMain::where('global_order_id',$global_order_id)
  64. ->select('id','user_id')
  65. ->first();
  66. $order_id = $order_main->id;
  67. $ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
  68. $order = Order::query()
  69. ->where('order_main_id',$order_id)
  70. ->select('id','user_id')
  71. ->get()
  72. ->toArray();
  73. foreach ($order as $k1 => $v1){
  74. $goods = OrderGoods::query()
  75. ->where([
  76. ['order_id','=',$v1['id']],
  77. ['money','=',0.01],
  78. ])
  79. ->select('good_id')
  80. ->get()
  81. ->toArray();
  82. foreach ($goods as $k2 => $v2) {
  83. $ssdb->exec('del', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$v1['user_id'].'_'.$v2['good_id']);
  84. }
  85. }
  86. return true;
  87. }
  88. public function PurchaseLimit($orderGoods)
  89. {
  90. $sum = 0;
  91. foreach ($orderGoods as $goods){
  92. if($goods['money'] == 0.01){
  93. if($sum > 0){
  94. return false;
  95. }
  96. $sum++;
  97. }
  98. }
  99. return true;
  100. }
  101. }