| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- <?php
- namespace addons\Agent\common\models;
- use common\enums\StatusEnum;
- use common\models\base\BaseActiveRecord;
- use addons\Agent\common\enums\AgentEnum;
- use yii\helpers\Json;
- /**
- * This is the model class for table "qimall_addons_agent_commission_item_setting".
- *
- * @property int $id
- * @property int $mall_id 商城ID
- * @property int $is_participate 商品是否参与渠道分红[0=不参与,1=参与]
- * @property int $is_enable 是否独立设置:0:否;1是
- * @property int $item_id 项目id
- * @property string $item_type 项目类型:商品goods
- * @property string $commission_type 分佣类型:积分score;佣金:commission
- * @property int $is_percent_team 渠道奖类型 0百分比 1 固定金额
- * @property int $is_percent_equal 平级奖类型 0百分比 1 固定金额
- * @property int $is_percent_over 越级奖类型 0百分比 1 固定金额
- * @property int $is_percent_extra 额外奖类型 0百分比 1 固定金额
- * @property int $is_percent_drainage_subsidy 额外分红奖励:引流补贴类型 0百分比 1 固定金额
- * @property int $is_percent_team_subsidy 额外分红奖励:渠道补贴类型 0百分比 1 固定金额
- * @property int $is_percent_recommend 推荐奖类型: 0百分比 1 固定金额
- * @property int $is_enable_recommend 是否启用推荐奖: 0: 否,1:是
- * @property int $status 状态[-1:删除;0:禁用;1启用]
- * @property int $created_at
- * @property int $updated_at
- * @property int $is_enable_regular_bonus 是否启用返佣设置[0: 否,1:是]
- * @property string $extra 额外信息
- */
- class AgentCommissionItemSetting extends BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_agent_commission_item_setting}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id'], 'required'],
- [['mall_id', 'is_participate', 'is_enable', 'item_id', 'is_percent_team', 'is_percent_equal', 'is_percent_over',
- 'is_percent_extra', 'status', 'created_at', 'updated_at','is_percent_drainage_subsidy','is_percent_team_subsidy','is_percent_recommend', 'is_enable_recommend','is_alone_agent_equal_prize','alone_agent_equal_prize_type','is_equal_by_upgrade','is_self_buy_alone','is_self_buy','enable_goods_deduct','is_enable_regular_bonus'], 'integer'],
- [['item_type', 'commission_type'], 'string', 'max' => 255],
- [['extra'], 'string']
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'mall_id' => '商城ID',
- 'is_participate' => '商品是否参与渠道分红[0=不参与,1=参与]',
- 'is_enable' => '是否独立设置:0:否;1是',
- 'item_id' => '项目id',
- 'item_type' => '项目类型:商品goods',
- 'commission_type' => '分佣类型:积分score;佣金:commission',
- 'is_percent_team' => '渠道奖类型 0百分比 1 固定金额',
- 'is_percent_equal' => '平级奖类型 0百分比 1 固定金额',
- 'is_percent_over' => '越级奖类型 0百分比 1 固定金额',
- 'is_percent_extra' => '额外奖类型 0百分比 1 固定金额',
- 'is_percent_drainage_subsidy' => '额外分红奖励:引流补贴类型 0百分比 1 固定金额',
- 'is_percent_team_subsidy' => '额外分红奖励:渠道补贴类型 0百分比 1 固定金额',
- 'is_percent_recommend' => '推荐奖类型: 0:百分比,1:固定金额',
- 'is_enable_recommend' => '是否启用推荐奖: 0:否,1:是',
- 'status' => '状态[-1:删除;0:禁用;1启用]',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- 'is_enable_regular_bonus' => '是否启用返佣设置[0: 否,1:是]',
- 'extra' => '额外信息'
- ];
- }
- public function getDetail()
- {
- return $this->hasMany(AgentCommissionItemSettingDetail::class, ['agent_commission_item_setting_id' => 'id'])->indexBy('level');
- }
- public static function setData($params, $data)
- {
- try{
- foreach ($data as $key => $item) {
- // 层级分销
- if ($key == 'distribution_setting') {
- // 这里是独立设置
- $model = AgentDistributionSetting::findOne([
- 'mall_id' => $params['mall_id'],
- 'key' => 'distribution_setting',
- 'item_id' => $params['item_id'],
- 'status' => StatusEnum::ENABLED
- ]);
- if (empty($model)) {
- $model = new AgentDistributionSetting();
- $model->mall_id = $params['mall_id'];
- $model->key = 'distribution_setting';
- $model->item_id = $params['item_id'];
- }
- $model->value = $item;
- if (!$model->save()) throw new \Exception($model->getErrorMessage());
- continue;
- }
- if ($key == 'distribution_setting_score') {
- // 这里是独立设置
- $model = AgentDistributionSetting::findOne([
- 'mall_id' => $params['mall_id'],
- 'key' => 'distribution_setting_score',
- 'item_id' => $params['item_id'],
- 'status' => StatusEnum::ENABLED
- ]);
- if (empty($model)) {
- $model = new AgentDistributionSetting();
- $model->mall_id = $params['mall_id'];
- $model->key = 'distribution_setting_score';
- $model->item_id = $params['item_id'];
- }
- $model->value = $item;
- if (!$model->save()) throw new \Exception($model->getErrorMessage());
- continue;
- }
- // 报单等于复购
- if ($key == 'distribution_is_alone') {
- $model = AgentGoodsRepurchase::findOne([
- 'mall_id' => $params['mall_id'],
- 'item_id' => $params['item_id'],
- 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]
- ]);
- if (empty($model)) {
- $model = new AgentGoodsRepurchase();
- $model->mall_id = $params['mall_id'];
- $model->item_id = $params['item_id'];
- }
- $model->status = $item ? StatusEnum::ENABLED : StatusEnum::DISABLED;
- if (!$model->save()) throw new \Exception($model->getErrorMessage());
- continue;
- }
- is_array($item['extra']) && $item['extra'] = json_encode($item['extra']);
- $model = self::findOne([
- 'mall_id' => $params['mall_id'],
- 'item_type' => $item['item_type'],
- 'commission_type' => $item['commission_type'],
- 'item_id' => $params['item_id'],
- '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 = ['mall_id' => $params['mall_id'], 'agent_commission_item_setting_id' => $model->id];
- if(isset($item['detail']['alone_agent_equal_prize_info'])){
- $item['detail']['alone_agent_equal_prize_info'] = json_encode($item['detail']['alone_agent_equal_prize_info']);
- }
- foreach($item['detail'] as &$param){
- if(isset($param['alone_agent_equal_prize_info'])){
- $param['alone_agent_equal_prize_info'] = json_encode($param['alone_agent_equal_prize_info']);
- }
- }
- $res = AgentCommissionItemSettingDetail::setData($detail, $item['detail']);
- if ($res == false) throw new \Exception(AgentCommissionItemSettingDetail::getStaticError());
- }
- return true;
- }catch(\Exception $e){
- self::$static_error = $e->getMessage();
- return false;
- }
- }
- /**
- * @param array $params
- * @param bool $is_array
- * @return array|false|mixed
- */
- public function globalLists(array $params = [], bool $is_array = true)
- {
- $mall_id = 0;
- foreach($params['where'] as $param){
- if(in_array('mall_id',$param)){
- $mall_id = $param[2];
- }
- }
- $lists = self::lists($params, $is_array);
- if (empty($lists)) $lists = [];
- $setting = AgentDistributionSetting::lists([
- 'where' => $params['where'],
- 'select' => 'key, value',
- 'order' => 'id asc'
- ]);
- if (!empty($setting)) {
- $values = [];
- foreach ($setting as $item) {
- $values[$item['key']] = Json::decode($item['value']);
- }
- $lists = array_merge($lists, $values);
- }
- if(empty($lists)){
- $level_params = ['where' => [['=', 'mall_id', $mall_id], ['=', 'status', StatusEnum::ENABLED]], 'select' => 'level,name', 'order' => 'level asc'];
- $levels = AgentLevel::lists($level_params);
- if(!empty($levels)){
- foreach($levels as $level){
- $lists['commission']['detail'][$level['level']]['alone_agent_equal_prize_info'] = '';
- $lists['score']['detail'][$level['level']]['alone_agent_equal_prize_info'] = '';
- }
- }
- }
- foreach($lists as &$list){
- if(!empty($list['extra'])){
- $list['extra'] = json_decode($list['extra'], true);
- }
- if(!empty($list['detail'])){
- foreach($list['detail'] as &$item){
- if(isset($item['alone_agent_equal_prize_info'])){
- $item['alone_agent_equal_prize_info'] = $item['alone_agent_equal_prize_info'] ? json_decode($item['alone_agent_equal_prize_info'],true) : [];
- $setting = \Yii::$app->services->setting->addons->get($mall_id, AgentEnum::ADDONS_NAME, 'basic');
- $equal_prize_deep = $setting['equal_prize_deep'] ?? 0;
- if($equal_prize_deep > AgentEnum::ALONE_EQUAL_DEEP) $equal_prize_deep = AgentEnum::ALONE_EQUAL_DEEP;
- $count = count($item['alone_agent_equal_prize_info']);
- $diff = $equal_prize_deep - $count;
- if($diff > 0){
- if($equal_prize_deep > 0){
- $deep = $count;
- for($i=0;$i<$diff;$i++){
- $deep++;
- $item['alone_agent_equal_prize_info'][] = [
- 'deep' => $deep,
- 'prize' => 0,
- ];
- }
- }
- }else{
- $item['alone_agent_equal_prize_info'] = array_slice($item['alone_agent_equal_prize_info'],0,$equal_prize_deep);
- }
- }
- }
- unset($item);
- }
- }
- unset($list);
- // 报单等于复购
- $distribution_is_alone = AgentGoodsRepurchase::lists([
- 'where' => $params['where']
- ], $is_array);
- return array_merge($lists, ['distribution_is_alone' => !empty($distribution_is_alone) ? StatusEnum::ENABLED : StatusEnum::DISABLED]);
- }
- }
|