| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- <?php
- /**
- * @link:http://www.gdqijianshi.com/
- * @copyright: Copyright (c) 2020 广东七件事集团
- * Created by PhpStorm
- * Author: ganxiaohao
- * Date: 2020-05-08
- * Time: 17:53
- */
- namespace addons\Store\common\models;
- use common\models\mall\Mall;
- use Yii;
- use yii\helpers\Json;
- // use app\helpers\SerializeHelper;
- use addons\Store\common\models\StoreBossLevelCommon;
- use addons\Store\common\models\StoreBoss;
- use addons\Store\common\models\StoreBossLevel;
- // use addons\Store\common\models\BaseModel;
- class StoreBossLevelForm extends BaseModel
- {
- public $id;
- public $level;
- public $name;
- public $checked_condition_keys;
- public $checked_condition_values;
- public $equal_price;
- public $boss_price;
- public $equal_price_type;
- public $price_type;
- public $is_use;
- public $is_auto_upgrade;
- public $detail;
- public $condition_type;
- public $upgrade_type_goods;
- public $upgrade_type_condition;
- public $goods_type;
- public $goods_list;
- public $goods_warehouse_ids;
- public $buy_goods_type;
- public $over_boss_price;
- public $price;
- public $is_enable;
- public $extra_price;
- public $is_extra;
- public $extra_is_limit;
- public $extra_type;
- public $extra_limit_price;
- public $keyword;
- public $page;
- public $store_id = 0;
- public $mall_id = 0;
- public static function tableName()
- {
- return '{{%addons_store_boss_level}}';
- }
- public function rules()
- {
- return [
- [['level', 'name', 'is_enable'], 'required'],
- [['level', 'name', 'checked_condition_keys', 'checked_condition_values', 'equal_price_type', 'is_enable', 'detail', 'goods_warehouse_ids', 'goods_list'], 'trim'],
- [['level','is_extra','extra_type', 'is_enable', 'id', 'is_auto_upgrade', 'condition_type', 'upgrade_type_condition', 'upgrade_type_goods', 'goods_type', 'buy_goods_type','extra_is_limit'], 'integer'],
- [['name'], 'string'],
- [['price', 'extra_price','extra_limit_price'], 'number', 'min' => 0],
- [['is_enable'], 'default', 'value' => 0],
- [['detail'], 'string', 'max' => 80],
- [['id'], 'required'],
- [['id'], 'integer'],
- [['keyword'], 'string'],
- [['keyword'], 'trim'],
- [['page'], 'integer'],
- [['page'], 'default', 'value' => 1]
- ];
- }
- public function attributeLabels()
- {
- return [
- 'level' => '等级权重',
- 'name' => '等级名称',
- 'goods_list' => '商品列表',
- 'checked_condition_keys' => '选中的表达式key',
- 'goods_warehouse_ids' => '选中的商品goods_warehouse_ids',
- 'checked_condition_values' => '选中的表达式的值',
- 'upgrade_type_goods' => '购物升级',
- 'upgrade_type_condition' => '条件升级',
- 'condition_type' => '条件升级的方式',
- 'goods_type' => '购物方式',
- 'is_auto_upgrade' => '是否开启自动升级',
- 'buy_goods_type' => '订单结算方式',
- 'extra_limit_price' => '额外奖励上限金额',
- 'extra_is_limit' => '额外奖励是否上线',
- 'extra_type' => '额外存在的条件 1 购物 2 条件 3 任意',
- 'extra_price' => '额外奖励金额',
- 'is_extra' => '是否开启额外奖励',
- 'price' => '永久奖励金额',
- 'detail' => '等级说明',
- 'is_enable' => '是否启用',
- ];
- }
- public function getDetail()
- {
- $weights = (new StoreBossLevelCommon)->getLevelWeights();
- $level = StoreBossLevel::findOne(['id' => $this->id, 'is_delete' => 0]);
- if ($level) {
- if ($level->checked_condition_values) {
- $level->checked_condition_values = Json::decode($level->checked_condition_values);
- }
- if ($level->checked_condition_keys) {
- $level->checked_condition_keys = Json::decode($level->checked_condition_keys);
- }
- if ($level->goods_warehouse_ids) {
- $level->goods_warehouse_ids = Json::decode($level->goods_warehouse_ids);
- } else {
- $level->goods_warehouse_ids = [];
- }
- if ($level->goods_list) {
- $level->goods_list = Json::decode($level->goods_list);
- } else {
- $level->goods_list = [];
- }
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'detail' => $level,
- 'weights' => $weights['newList']
- ]
- ];
- }
- }
- public function save()
- {
- if (!$this->validate()) {
- return $this->responseErrorInfo();
- }
- $level = StoreBossLevel::findOne(['id' => $this->id, 'is_delete' => 0]);
- if (!$level) {
- return ['code' => 1, 'msg' => '所选择的分销商等级不存在或已删除,请刷新后重试'];
- }
- $store = \Yii::$app->session->get('o2o');
- $bossExists = StoreBoss::find()->where([
- 'mall_id' => $store['mall_id'], 'store_id' =>$store['id'], 'status' => 1, 'level' => $level->level
- ])->asArray()->one();
- if ($bossExists) {
- return ['code' => 1, 'msg' => '该分销商等级下还有分销商存在,暂时不能删除'];
- }
- $level->is_delete = 1;
- if (!$level->save()) {
- return $this->responseErrorMsg($level);
- }
- return ['code' => 0, 'msg' => '删除成功!'];
- }
- public function search()
- {
- if (!$this->validate()) {
- return $this->responseErrorInfo();
- }
- $store = \Yii::$app->session->get('o2o');
- $where[] = ['=', 'mall_id', $store['mall_id']];
- $where[] = ['=','store_id', $store['id']];
- $where[] = ['=','is_delete', 0];
- if($this->keyword){
- $where[]=['or', ['like', 'name',$this->keyword], ['like', 'level', $this->keyword]];
- }
- $params = [
- // 'select' => '*',
- 'where' => $where,
- 'order' => 'level asc',
- 'page' => $this->page,
- 'limit' => 20,
- ];
- $lists = StoreBossLevel::listPage($params, false, true);
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'list' => $lists['list'],
- 'pagination' => $lists['pagination']
- ]
- ];
- }
- public function setData()
- {
- $store = Yii::$app->session->get('o2o');
- if(!$store) $store = Store::findOne(['id' => $this->store_id]);
- try {
- if ($this->equal_price_type == 1) {
- if ($this->price > 100) {
- throw new \Exception('平级奖佣金百分比不能大于100%');
- }
- }
- $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'], 'store_id' => $store['id'], 'level' => $this->level]);
- if ($level) {
- if ($level->id != $this->id) {
- return [
- 'code' => 1,
- 'msg' => '选中的权重已经存在对应的记录'
- ];
- }
- }
- $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'],'store_id' => $store['id'], 'id' => $this->id]);
- if ($level) {
- if ($level->level != $this->level) {
- $boss = StoreBoss::find()->where(['status' => 1, 'mall_id' =>$store['mall_id'],'store_id' => $store['id'], 'level' => $level->level])->asArray()->one();
- if ($boss) {
- return [
- 'code' =>1,
- 'msg' => '当前等级下已存在股东,不可变更等级权重!'
- ];
- }
- }
- }
- if (!$level) {
- $level = new StoreBossLevel();
- $level->is_delete = 0;
- $level->store_id = $store['id'];
- $level->mall_id = $store['mall_id'];
- }
- $level->attributes=$this-> attributes;
- $level->checked_condition_keys = Json::encode($this->checked_condition_keys);
- $level->checked_condition_values = Json::encode($this->checked_condition_values);
- $level->goods_list = Json::encode($this->goods_list);
- $level->goods_warehouse_ids = Json::encode($this->goods_warehouse_ids);
- if (!$level->save()) {
- throw new \Exception($level->getErrorMessage());
- // throw new \Exception($this->responseErrorMsg($level));
- } else {
- return [
- 'code' => 0,
- 'msg' => '保存成功'
- ];
- }
- } catch (\Exception $exception) {
- // $this->error($exception->getMessage());
- return [
- 'code' => 1,
- 'msg' => $exception->getMessage()
- ];
- }
- }
- }
|