| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | <?php/** * Created by PhpStorm. * User: wuzhenke * Date: 2018/11/12 * Time: 19:09 */namespace App\Services\Common;use App\Repositories\SetmealIncrementsRepository;use App\Repositories\SetmealRepository;class SetmealIncrementsService{    protected $setmealIncrementsRepository;    protected $setmealRepository;    /**     * SetmealIncrementsService constructor.     * @param $setmealIncrementsRepository     * @param $setmealRepository     */    public function __construct(SetmealIncrementsRepository  $setmealIncrementsRepository, SetmealRepository $setmealRepository)    {        $this->setmealIncrementsRepository = $setmealIncrementsRepository;        $this->setmealRepository = $setmealRepository;    }    /**     * @param $cat stick emergency     * @return mixed     */    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);  ////获取折扣类型                    //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致                    $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会员价格,取出折扣最大的套餐折扣                    $vip_discount = $this->getMaxDiscount($cat);                    $increment_arr[$key]->vip_price = intval($vip_discount)>0?round($value->price*$vip_discount/10, 2):$value->price;                    //VIP会员单条价格                    $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->getIncrementCache('', $id);        return $this->setmealIncrementsRepository->getIncrement($id);    }}
 |