recommend_combo.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/8/16
  6. * Time: 下午4:33
  7. */
  8. namespace activity;
  9. use Log;
  10. use StatesHelper;
  11. class recommend_combo
  12. {
  13. static private $stInstance = null;
  14. //goods_id 可能包含多个商品形成一个组合
  15. private $goods_combos;
  16. const cache_name = 'all_recommend_combo';
  17. private function __construct() {
  18. }
  19. static public function instance()
  20. {
  21. if(self::$stInstance == null) {
  22. self::$stInstance = new recommend_combo();
  23. }
  24. if(StatesHelper::fetch_state('recommend_combo')) {
  25. Log::record("recommend_combo reinit data.",Log::DEBUG);
  26. self::$stInstance->init();
  27. }
  28. return self::$stInstance;
  29. }
  30. private function init()
  31. {
  32. $data = $this->read_cache();
  33. $this->goods_combos = $data['goods_combos'];
  34. }
  35. private function read_cache()
  36. {
  37. $prefix = 'mb_activity';
  38. $items = rcache(self::cache_name, $prefix);
  39. if (!empty($items)) {
  40. return unserialize($items['data']);
  41. }
  42. $goods_combos = [];
  43. $mod = Model('goods_combo');
  44. $list = $mod->getGoodsComboList(array());
  45. foreach ($list as $val)
  46. {
  47. $gid = intval($val['goods_id']);
  48. $cgid = intval($val['combo_goodsid']);
  49. if(isset($goods_combos[$gid])) {
  50. $goods_combos[$gid][] = $cgid;
  51. } else {
  52. $goods_combos[$gid] = [];
  53. $goods_combos[$gid][] = $cgid;
  54. }
  55. }
  56. $data = array('goods_combos' => $goods_combos);
  57. wcache(self::cache_name, array('data' => serialize($data)), $prefix);
  58. return $data;
  59. }
  60. public function have_combo($goods_id)
  61. {
  62. $goods_id = intval($goods_id);
  63. if(isset($this->goods_combos[$goods_id])) {
  64. return true;
  65. } else {
  66. return false;
  67. }
  68. }
  69. public function combo_goods($goods_id)
  70. {
  71. $goods_id = intval($goods_id);
  72. if(isset($this->goods_combos[$goods_id])) {
  73. return $this->goods_combos[$goods_id];
  74. } else {
  75. return false;
  76. }
  77. }
  78. }