ShowPromotion.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\bargain\event;
  11. use think\facade\Db;
  12. /**
  13. * 活动展示
  14. */
  15. class ShowPromotion
  16. {
  17. /**
  18. * 活动展示
  19. * @param $params
  20. * @return array
  21. */
  22. public function handle($params)
  23. {
  24. $data = [
  25. 'shop' => [
  26. [
  27. //插件名称
  28. 'name' => 'bargain',
  29. //店铺端展示分类 shop:营销活动 member:互动营销
  30. 'show_type' => 'shop',
  31. //展示主题
  32. 'title' => '砍价',
  33. //展示介绍
  34. 'description' => '邀请好友砍价后低价购买',
  35. //展示图标
  36. 'icon' => 'addon/bargain/icon.png',
  37. //跳转链接
  38. 'url' => 'bargain://shop/bargain/lists',
  39. 'summary' => $this->summary($params),
  40. ]
  41. ]
  42. ];
  43. return $data;
  44. }
  45. /**
  46. * 营销活动概况
  47. * @param $params
  48. * @return array
  49. */
  50. private function summary($params)
  51. {
  52. if (empty($params)) {
  53. return [];
  54. }
  55. //获取活动数量
  56. if (isset($params[ 'count' ])) {
  57. $count = model("promotion_bargain")->getCount([ 'site_id' => $params[ 'site_id' ] ]);
  58. return [
  59. 'count' => $count
  60. ];
  61. }
  62. //获取活动概况,需要获取开始时间与结束时间
  63. if (isset($params[ 'summary' ])) {
  64. $join = [
  65. [ 'goods g', 'p.goods_id = g.goods_id', 'inner' ]
  66. ];
  67. $list = model("promotion_bargain")->getList([
  68. [ '', 'exp', Db::raw('not ( (`start_time` >= ' . $params[ 'end_time' ] . ') or (`end_time` <= ' . $params[ 'start_time' ] . '))') ],
  69. [ 'p.site_id', '=', $params[ 'site_id' ] ],
  70. [ 'p.status', '<>', 2 ],
  71. [ 'p.status', '<>', 3 ],
  72. [ 'p.status', '<>', 4 ],
  73. [ 'g.goods_state', '=', 1 ],
  74. [ 'g.is_delete', '=', 0 ]
  75. ], 'p.bargain_name as promotion_name,p.bargain_id as promotion_id,p.start_time,p.end_time', '', 'p', $join, 'p.create_time');
  76. return !empty($list) ? [
  77. 'time_limit' => [
  78. 'count' => count($list),
  79. 'detail' => $list,
  80. 'color' => '#6699FF'
  81. ]
  82. ] : [];
  83. }
  84. }
  85. }