LuckyCalc.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace tw\async\activities;
  3. use think\facade\Config;
  4. class LuckyCalc extends ActivityCalc
  5. {
  6. protected static $NAME = 'lucky';
  7. // protected static $Flag = Config::get('activity.lucky_spec_items', [20, 22]);
  8. public function __construct()
  9. {
  10. }
  11. protected function getId()
  12. {
  13. return Config::get('activity.lucky_cate_id');
  14. }
  15. protected function getName()
  16. {
  17. return self::$NAME;
  18. }
  19. protected function getNameCN()
  20. {
  21. return get_luck_name();
  22. }
  23. protected function repRate()
  24. {
  25. return 0.3;
  26. }
  27. protected function getMinimalProductNum()
  28. {
  29. return 1;
  30. }
  31. protected function getResult($leftwin = true)
  32. {
  33. $f2021 = Config::get('activity.lucky_spec_items', [20, 22]);
  34. return $leftwin ? $f2021[0] : $f2021[1];
  35. }
  36. /**
  37. * 20 分类到左边
  38. * 这里严格要求商品必须设置 20 22 属性
  39. */
  40. protected function leaningJudge($index, $product, $attr)
  41. {
  42. $suk = isset($attr['suk']) ? $attr['suk'] : 'any';
  43. $flag = $this->searchActiveInSuk($suk);
  44. $f2021 = Config::get('activity.lucky_spec_items', [20, 22]);
  45. return $flag == $f2021[0];
  46. }
  47. /**
  48. * 从商品的 sku 信息中找到用户选择的 20/22
  49. * @param $suk
  50. * @return bool|string
  51. */
  52. private function searchActiveInSuk($suk)
  53. {
  54. $parts = explode(",", $suk);
  55. if (count($parts) <= 0) {
  56. return false;
  57. }
  58. $f2021 = Config::get('activity.lucky_spec_items', [20, 22]);
  59. foreach ($parts as $part) {
  60. $t = trim($part);
  61. if ($t == $f2021[0] || $t == $f2021[1]) {
  62. return $t;
  63. }
  64. }
  65. return false;
  66. }
  67. }