123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace App\Services\Common;
- use App\Repositories\SetmealIncrementsRepository;
- use App\Repositories\SetmealRepository;
- class SetmealIncrementsService
- {
- protected $setmealIncrementsRepository;
- protected $setmealRepository;
-
- public function __construct(SetmealIncrementsRepository $setmealIncrementsRepository, SetmealRepository $setmealRepository)
- {
- $this->setmealIncrementsRepository = $setmealIncrementsRepository;
- $this->setmealRepository = $setmealRepository;
- }
-
- public function getCat($cat)
- {
- return $this->setmealIncrementsRepository->getCat($cat);
- }
-
- public function getIncrementDiscountByArray($cat, $member_setmeal)
- {
- switch ($cat) {
- case 'download_resume':
- case 'sms':
- case 'stick':
- case 'emergency':
- case 'auto_refresh_jobs':
- case 'tpl':
- $field = 'discount_'.$cat;
- break;
- default:
- $field = 'discount_download_resume';
- break;
- }
- $return = $member_setmeal->$field;
- $value_arr = explode(".", $return);
- if (count($value_arr)>1) {
- if ($value_arr[1]==0) {
- return $value_arr[0];
- }
- }
- return $return;
- }
-
- public function getIncrementArr($member_setmeal, $cat)
- {
- $increment_arr = $this->setmealIncrementsRepository->getIncrementCache('download_resume');
- if ($increment_arr) {
- foreach ($increment_arr as $key => $value) {
-
- if ($member_setmeal->is_free==0) {
- $discount = $this->getIncrementDiscountByArray($cat, $member_setmeal);
-
- $increment_arr[$key]->my_price = $discount>0?round($value->price*$discount/10, 2):$value->price;
-
- $increment_arr[$key]->my_discount = $discount;
-
- $increment_arr[$key]->my_unit_price = round($increment_arr[$key]->my_price/$value->value, 2);
-
- $increment_arr[$key]->my_saved_price = $value->price-$increment_arr[$key]->my_price;
- } else {
- $free_discount = $this->getIncrementDiscountByArray($cat, $member_setmeal);
-
- $increment_arr[$key]->my_price = $free_discount>0?round($value->price*$free_discount/10, 2):$value->price;
-
- $increment_arr[$key]->my_unit_price = round($increment_arr[$key]->my_price/$value->value, 2);
-
- $vip_discount = $this->getMaxDiscount($cat);
- $increment_arr[$key]->vip_price = intval($vip_discount)>0?round($value->price*$vip_discount/10, 2):$value->price;
-
- $increment_arr[$key]->vip_unit_price = round($increment_arr[$key]->vip_price/$value->value, 2);
- }
-
- $increment_arr[$key]->need_points = round($increment_arr[$key]->my_price*config('aix.companyset.points.points_set.payment_rate'));
- }
- }
- return $increment_arr;
- }
- public function getMaxDiscount($cat)
- {
- return $this->setmealRepository->getMaxDiscount($cat);
- }
- public function getServiceUnit()
- {
- return $this->setmealIncrementsRepository->service_unit;
- }
- public function getIncrement($id, $cat = '')
- {
- return $this->setmealIncrementsRepository->getIncrement($id);
- }
- }
|