'ID', 'mall_id' => 'Mall ID', 'user_coupon_id' => 'user_coupon_id', 'get_user_coupon_id' => 'get_user_coupon_id', 'coupon_id' => 'Coupon ID', 'giving_user_id' => 'Giving User ID', 'receive_user_id' => 'Receive User ID', 'giving_status' => 'Giving Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public static function setData($params) { $transaction = \Yii::$app->db->beginTransaction(); try { if (!empty($params['coupon_share_log_id'])) { // 领取 $model = self::findOne(['mall_id' => $params['mall_id'], 'id' => $params['coupon_share_log_id']]); if (empty($model)) throw new \Exception('服务不存在或已删除'); $model->get_user_coupon_id = $params['get_user_coupon_id']; $model->receive_user_id = $params['receive_user_id']; $model->giving_status = AddonsCouponEnum::GIVING_STATUS2; $model->updated_at = time(); $user_coupon = AddonsCouponUserRelate::findOne(['mall_id' => $params['mall_id'], 'id' => $model->user_coupon_id]); if(empty($user_coupon)) throw new \Exception('此优惠券暂不支持转赠'); if($user_coupon->coupon_status==4) throw new \Exception('已失效'); $user_coupon->is_giving = AddonsCouponEnum::GIVING; $user_coupon->giving_status = AddonsCouponEnum::GIVING_STATUS2; $get_user_coupon = AddonsCouponUserRelate::findOne(['mall_id' => $params['mall_id'], 'id' => $params['get_user_coupon_id']]); $get_user_coupon->give_time=$user_coupon->give_time+1;//转赠加次数 $get_user_coupon->save(); } else { // 转赠 $model = new self(); $model->mall_id = $params['mall_id']; $model->coupon_id = $params['coupon_id']; $model->user_coupon_id = $params['user_coupon_id']; $model->giving_user_id = $params['giving_user_id']; $model->get_user_coupon_id = 0; $model->receive_user_id = 0; $model->giving_status = 1; $model->created_at = time(); $user_coupon = AddonsCouponUserRelate::findOne(['mall_id' => $params['mall_id'], 'id' => $params['user_coupon_id']]); if(empty($user_coupon)) throw new \Exception('会员优惠券不存在'); if($user_coupon->coupon_status==4) throw new \Exception('已失效'); $user_coupon->is_giving = AddonsCouponEnum::GIVING; $user_coupon->giving_status = AddonsCouponEnum::GIVING_STATUS1; $addonCoupon=AddonsCoupon::findOne(['mall_id' => $params['mall_id'], 'id' => $params['coupon_id']]); if($addonCoupon->give_time>0&&$user_coupon->give_time>=$addonCoupon->give_time) { throw new \Exception('已达到转赠次数上限'); } } $res_user_coupon = $user_coupon->save(); $res_share_log = $model->save(); if ($res_share_log === false || $res_user_coupon === false) throw new \Exception('res_share_log => ' . var_export($model->getErrorMessage(), true) . ', res_user_coupon => ' . var_export($res_user_coupon, true)); $transaction->commit(); return $model; } catch (\Exception $e) { $transaction->rollback(); self::$static_error = $e->getMessage(); return false; } } }