SetmealIncrementsService.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wuzhenke
  5. * Date: 2018/11/12
  6. * Time: 19:09
  7. */
  8. namespace App\Services\Common;
  9. use App\Repositories\SetmealIncrementsRepository;
  10. use App\Repositories\SetmealRepository;
  11. class SetmealIncrementsService
  12. {
  13. protected $setmealIncrementsRepository;
  14. protected $setmealRepository;
  15. /**
  16. * SetmealIncrementsService constructor.
  17. * @param $setmealIncrementsRepository
  18. * @param $setmealRepository
  19. */
  20. public function __construct(SetmealIncrementsRepository $setmealIncrementsRepository, SetmealRepository $setmealRepository)
  21. {
  22. $this->setmealIncrementsRepository = $setmealIncrementsRepository;
  23. $this->setmealRepository = $setmealRepository;
  24. }
  25. /**
  26. * @param $cat stick emergency
  27. * @return mixed
  28. */
  29. public function getCat($cat)
  30. {
  31. return $this->setmealIncrementsRepository->getCat($cat);
  32. }
  33. //获取折扣类型
  34. public function getIncrementDiscountByArray($cat, $member_setmeal)
  35. {
  36. switch ($cat) {
  37. case 'download_resume':
  38. case 'sms':
  39. case 'stick':
  40. case 'emergency':
  41. case 'auto_refresh_jobs':
  42. case 'tpl':
  43. $field = 'discount_'.$cat;
  44. break;
  45. default:
  46. $field = 'discount_download_resume';
  47. break;
  48. }
  49. $return = $member_setmeal->$field;
  50. $value_arr = explode(".", $return);
  51. if (count($value_arr)>1) {
  52. if ($value_arr[1]==0) {
  53. return $value_arr[0];
  54. }
  55. }
  56. return $return;
  57. }
  58. //获取企业增值服务信息
  59. public function getIncrementArr($member_setmeal, $cat)
  60. {
  61. $increment_arr = $this->setmealIncrementsRepository->getIncrementCache('download_resume');
  62. if ($increment_arr) {
  63. foreach ($increment_arr as $key => $value) {
  64. //如果是非免费套餐
  65. if ($member_setmeal->is_free==0) {
  66. $discount = $this->getIncrementDiscountByArray($cat, $member_setmeal); ////获取折扣类型
  67. //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致
  68. $increment_arr[$key]->my_price = $discount>0?round($value->price*$discount/10, 2):$value->price;
  69. //当前基础套餐的对应的折扣
  70. $increment_arr[$key]->my_discount = $discount;
  71. //单条价格
  72. $increment_arr[$key]->my_unit_price = round($increment_arr[$key]->my_price/$value->value, 2);
  73. //节省的数
  74. $increment_arr[$key]->my_saved_price = $value->price-$increment_arr[$key]->my_price;
  75. } else {
  76. $free_discount = $this->getIncrementDiscountByArray($cat, $member_setmeal);
  77. //免费会员需要付的价格
  78. $increment_arr[$key]->my_price = $free_discount>0?round($value->price*$free_discount/10, 2):$value->price;
  79. //免费会员单条价格
  80. $increment_arr[$key]->my_unit_price = round($increment_arr[$key]->my_price/$value->value, 2);
  81. //VIP会员价格,取出折扣最大的套餐折扣
  82. $vip_discount = $this->getMaxDiscount($cat);
  83. $increment_arr[$key]->vip_price = intval($vip_discount)>0?round($value->price*$vip_discount/10, 2):$value->price;
  84. //VIP会员单条价格
  85. $increment_arr[$key]->vip_unit_price = round($increment_arr[$key]->vip_price/$value->value, 2);
  86. }
  87. //换算积分
  88. $increment_arr[$key]->need_points = round($increment_arr[$key]->my_price*config('aix.companyset.points.points_set.payment_rate'));
  89. }
  90. }
  91. return $increment_arr;
  92. }
  93. public function getMaxDiscount($cat)
  94. {
  95. return $this->setmealRepository->getMaxDiscount($cat);
  96. }
  97. public function getServiceUnit()
  98. {
  99. return $this->setmealIncrementsRepository->service_unit;
  100. }
  101. public function getIncrement($id, $cat = '')
  102. {
  103. // return $this->setmealIncrementsRepository->getIncrementCache('', $id);
  104. return $this->setmealIncrementsRepository->getIncrement($id);
  105. }
  106. }