ShowPromotion.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\presale\event;
  13. use think\facade\Db;
  14. /**
  15. * 活动展示
  16. */
  17. class ShowPromotion
  18. {
  19. /**
  20. * 活动展示
  21. *
  22. * @param array $params
  23. * @return array
  24. */
  25. public function handle($params = [])
  26. {
  27. $data = [
  28. 'shop' => [
  29. [
  30. //插件名称
  31. 'name' => 'presale',
  32. //店铺端展示分类 shop:营销活动 member:互动营销
  33. 'show_type' => 'shop',
  34. //展示主题
  35. 'title' => '商品预售',
  36. //展示介绍
  37. 'description' => '定金膨胀引流预热',
  38. //展示图标
  39. 'icon' => 'addon/presale/icon.png',
  40. //跳转链接
  41. 'url' => 'presale://shop/presale/lists',
  42. 'summary' => $this->summary($params)
  43. ]
  44. ]
  45. ];
  46. return $data;
  47. }
  48. /**
  49. * 营销活动概况
  50. * @param $params
  51. * @return array
  52. */
  53. private function summary($params)
  54. {
  55. if (empty($params)) {
  56. return [];
  57. }
  58. //获取活动数量
  59. if (isset($params[ 'count' ])) {
  60. $count = model("promotion_presale")->getCount([ [ 'site_id', '=', $params[ 'site_id' ] ] ]);
  61. return [
  62. 'count' => $count
  63. ];
  64. }
  65. //获取活动概况,需要获取开始时间与结束时间
  66. if (isset($params[ 'summary' ])) {
  67. $join = [
  68. [ 'goods g', 'p.goods_id = g.goods_id', 'inner' ]
  69. ];
  70. $list = model("promotion_presale")->getList([
  71. [ '', 'exp', Db::raw('not ( (`start_time` >= ' . $params[ 'end_time' ] . ') or (`end_time` <= ' . $params[ 'start_time' ] . '))') ],
  72. [ 'p.site_id', '=', $params[ 'site_id' ] ],
  73. [ 'p.status', '<>', 3 ],
  74. [ 'p.status', '<>', 4 ],
  75. [ 'g.goods_state', '=', 1 ],
  76. [ 'g.is_delete', '=', 0 ]
  77. ], 'p.presale_name as promotion_name,p.presale_id as promotion_id,p.start_time,p.end_time', '', 'p', $join, 'p.presale_name');
  78. return !empty($list) ? [
  79. 'time_limit' => [
  80. 'count' => count($list),
  81. 'detail' => $list,
  82. 'color' => '#E066FF'
  83. ]
  84. ] : [];
  85. }
  86. }
  87. }