| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace addons\CloudStock\common\services;
- use addons\CloudStock\common\models\CloudStockAgent;
- use addons\CloudStock\common\models\CloudStockGoods;
- use addons\CloudStock\common\models\CouponSetting;
- use addons\Coupon\common\enums\AddonsCouponEnum;
- use addons\Coupon\common\models\AddonsCouponUserRelate;
- use common\enums\StatusEnum;
- use common\models\user\UserWithdrawLog;
- use yii\helpers\Json;
- use Exception;
- use Yii;
- class CouponService extends BaseService
- {
- /**
- * 赠送优惠券
- * @param $type 0补货 1配货
- * @param $user_id
- * @param $goods_arr [['goods_id'=>1,'num'=>2],['goods_id'=>2,'num'=>5]]
- * @return bool
- */
- public function compute($type, $user_id,$goods_arr)
- {
- $where = ['goods_id' => array_column($goods_arr,'goods_id'), 'mall_id' => $this->mall_id, 'is_buhuo' => 1, 'status' => StatusEnum::ENABLED];
- if($type == 1){
- $where['is_peihuo'] = 1;
- }
- $cloud_stock_goods_list = CloudStockGoods::find()->where($where)->asArray()->all();
- if (empty($cloud_stock_goods_list)) {
- return true;
- }
- $coupon_goods = [];
- $goods_arr = array_column($goods_arr,null,'goods_id');
- foreach ($cloud_stock_goods_list as $item){
- $coupon_goods[] = [
- 'goods_id'=>$item['goods_id'],
- 'num'=>$goods_arr[$item['goods_id']]['num'],
- ];
- }
- $cloud_stock_agent = CloudStockAgent::getOne([
- ['user_id' => $user_id],
- ['mall_id' => $this->mall_id],
- ['status' => StatusEnum::ENABLED],
- ]);
- $coupon_data = CouponSetting::getGiveCoupon($this->mall_id,$coupon_goods,$cloud_stock_agent['level']);
- if(empty($coupon_data)) return true;
- $give_arr = [];
- foreach ($coupon_data as $item){
- if($item['give_num'] <= 0) continue;
- foreach ($item['coupon_arr'] as $coupon){
- if(isset($give_arr[$coupon['coupon_id']])){
- $give_arr[$coupon['coupon_id']] += $coupon['num'] * $item['give_num'];
- }else{
- $give_arr[$coupon['coupon_id']] = $coupon['num'] * $item['give_num'];
- }
- }
- }
- if(empty($give_arr)) return true;
- $res = AddonsCouponUserRelate::giveCoupon($this->mall_id, $user_id, $give_arr, AddonsCouponEnum::SEND_FROM20);
- if($res === false) Yii::error(AddonsCouponUserRelate::getStaticError());
- return true;
- }
- }
|