255], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'mall_id' => 'Mall ID', 'is_enable' => 'Is Enable', 'is_alone' => 'Is Alone', 'item_id' => 'Item ID', 'item_type' => 'Item Type', 'commission_type' => 'Commission Type', 'status' => 'Status', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } public function getDetail() { return $this->hasOne(ShortVideoCommissionItemSettingDetail::class, ['short_video_commission_item_setting_id' => 'id']); } public static function setData($params, $data) { // dd($params, $data); try { $transaction = \Yii::$app->db->beginTransaction(); foreach ($data as $commission_type => $item) { $detail_params = $item['detail']; unset($item['detail']); $model = self::findOne([ 'mall_id' => $params['mall_id'], 'item_type' => $item['item_type'], 'item_id' => $params['item_id'], 'commission_type' => $item['commission_type'], 'status' => [StatusEnum::ENABLED] ]); if (empty($model)) { $model = new self(); $model->mall_id = $params['mall_id']; $model->item_id = $params['item_id']; $model->loadDefaultValues(); } if(!$model->load($item,'') || !$model->save()){ throw new \Exception($model->getErrorMessage()); } // 插入配置详情 $detail = array_merge($detail_params, ['mall_id' => $params['mall_id'], 'short_video_commission_item_setting_id' => $model->id]); $res = ShortVideoCommissionItemSettingDetail::setData($detail); if ($res == false) { throw new \Exception(ShortVideoCommissionItemSettingDetail::getStaticError()); } } $transaction->commit(); return true; } catch (\Exception $e) { $transaction->rollBack(); self::$static_error = $e->getMessage(); return false; } } /** * @name: * @msg: 计算带货奖励 * @param {int} $mall_id * @param {int} $good_id * @param {int} $good_price 商品售价 * @return {bool | array} commission:带货奖励佣金;award_type:奖励类型 0:固定金额 1:百分比;ratio:奖励比例;is_alone:是否商品里独立设置带货奖励 0:否 1:是;is_reward:是否带货奖励商品,1:是,0:否 */ public static function calculateReward(int $mall_id, int $good_id, float $good_price) { $good = Goods::findOne(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED, 'id' => $good_id]); if (empty($good)) { self::$static_error = '商品不存在'; return false; } $item_stting = self::findOne(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED, 'item_id' => $good_id]); $commission = 0; $award_type = 1; $ratio = 0; $is_reward = 1; if (1 == $item_stting['is_alone']) { // 独立设置带货奖励 $setting_detail = $item_stting->detail; if (1 == $setting_detail['calculate_type']) { // 按照商品售价百分比计算 $commission = bcmul($good_price, $setting_detail['value'] / 100, 2); $ratio = $setting_detail['value']; } else { $award_type = 0; $commission = $setting_detail['value']; } } else { // 未独立设置 $configs = ShortVideoConfig::getConfig($mall_id); if (1 == $configs['award_status']) { if (1 == $configs['award_type']) { $commission = bcmul($good_price, $configs['award_percentage'] / 100, 2); $ratio = $configs['award_percentage']; } else { $commission = $configs['award_money']; $award_type = 0; } } else { $is_reward = 0; } } $rst = [ 'commission' => $commission, 'award_type' => $award_type, 'ratio' => $ratio, 'is_alone' => $item_stting['is_alone'] ?? 0, 'is_reward' => $is_reward, ]; return $rst; } }