StoreBossLevelForm.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <?php
  2. /**
  3. * @link:http://www.gdqijianshi.com/
  4. * @copyright: Copyright (c) 2020 广东七件事集团
  5. * Created by PhpStorm
  6. * Author: ganxiaohao
  7. * Date: 2020-05-08
  8. * Time: 17:53
  9. */
  10. namespace addons\Store\common\models;
  11. use common\models\mall\Mall;
  12. use Yii;
  13. use yii\helpers\Json;
  14. // use app\helpers\SerializeHelper;
  15. use addons\Store\common\models\StoreBossLevelCommon;
  16. use addons\Store\common\models\StoreBoss;
  17. use addons\Store\common\models\StoreBossLevel;
  18. // use addons\Store\common\models\BaseModel;
  19. class StoreBossLevelForm extends BaseModel
  20. {
  21. public $id;
  22. public $level;
  23. public $name;
  24. public $checked_condition_keys;
  25. public $checked_condition_values;
  26. public $equal_price;
  27. public $boss_price;
  28. public $equal_price_type;
  29. public $price_type;
  30. public $is_use;
  31. public $is_auto_upgrade;
  32. public $detail;
  33. public $condition_type;
  34. public $upgrade_type_goods;
  35. public $upgrade_type_condition;
  36. public $goods_type;
  37. public $goods_list;
  38. public $goods_warehouse_ids;
  39. public $buy_goods_type;
  40. public $over_boss_price;
  41. public $price;
  42. public $is_enable;
  43. public $extra_price;
  44. public $is_extra;
  45. public $extra_is_limit;
  46. public $extra_type;
  47. public $extra_limit_price;
  48. public $keyword;
  49. public $page;
  50. public $store_id = 0;
  51. public $mall_id = 0;
  52. public static function tableName()
  53. {
  54. return '{{%addons_store_boss_level}}';
  55. }
  56. public function rules()
  57. {
  58. return [
  59. [['level', 'name', 'is_enable'], 'required'],
  60. [['level', 'name', 'checked_condition_keys', 'checked_condition_values', 'equal_price_type', 'is_enable', 'detail', 'goods_warehouse_ids', 'goods_list'], 'trim'],
  61. [['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'],
  62. [['name'], 'string'],
  63. [['price', 'extra_price','extra_limit_price'], 'number', 'min' => 0],
  64. [['is_enable'], 'default', 'value' => 0],
  65. [['detail'], 'string', 'max' => 80],
  66. [['id'], 'required'],
  67. [['id'], 'integer'],
  68. [['keyword'], 'string'],
  69. [['keyword'], 'trim'],
  70. [['page'], 'integer'],
  71. [['page'], 'default', 'value' => 1]
  72. ];
  73. }
  74. public function attributeLabels()
  75. {
  76. return [
  77. 'level' => '等级权重',
  78. 'name' => '等级名称',
  79. 'goods_list' => '商品列表',
  80. 'checked_condition_keys' => '选中的表达式key',
  81. 'goods_warehouse_ids' => '选中的商品goods_warehouse_ids',
  82. 'checked_condition_values' => '选中的表达式的值',
  83. 'upgrade_type_goods' => '购物升级',
  84. 'upgrade_type_condition' => '条件升级',
  85. 'condition_type' => '条件升级的方式',
  86. 'goods_type' => '购物方式',
  87. 'is_auto_upgrade' => '是否开启自动升级',
  88. 'buy_goods_type' => '订单结算方式',
  89. 'extra_limit_price' => '额外奖励上限金额',
  90. 'extra_is_limit' => '额外奖励是否上线',
  91. 'extra_type' => '额外存在的条件 1 购物 2 条件 3 任意',
  92. 'extra_price' => '额外奖励金额',
  93. 'is_extra' => '是否开启额外奖励',
  94. 'price' => '永久奖励金额',
  95. 'detail' => '等级说明',
  96. 'is_enable' => '是否启用',
  97. ];
  98. }
  99. public function getDetail()
  100. {
  101. $weights = (new StoreBossLevelCommon)->getLevelWeights();
  102. $level = StoreBossLevel::findOne(['id' => $this->id, 'is_delete' => 0]);
  103. if ($level) {
  104. if ($level->checked_condition_values) {
  105. $level->checked_condition_values = Json::decode($level->checked_condition_values);
  106. }
  107. if ($level->checked_condition_keys) {
  108. $level->checked_condition_keys = Json::decode($level->checked_condition_keys);
  109. }
  110. if ($level->goods_warehouse_ids) {
  111. $level->goods_warehouse_ids = Json::decode($level->goods_warehouse_ids);
  112. } else {
  113. $level->goods_warehouse_ids = [];
  114. }
  115. if ($level->goods_list) {
  116. $level->goods_list = Json::decode($level->goods_list);
  117. } else {
  118. $level->goods_list = [];
  119. }
  120. return [
  121. 'code' => 0,
  122. 'msg' => '',
  123. 'data' => [
  124. 'detail' => $level,
  125. 'weights' => $weights['newList']
  126. ]
  127. ];
  128. }
  129. }
  130. public function save()
  131. {
  132. if (!$this->validate()) {
  133. return $this->responseErrorInfo();
  134. }
  135. $level = StoreBossLevel::findOne(['id' => $this->id, 'is_delete' => 0]);
  136. if (!$level) {
  137. return ['code' => 1, 'msg' => '所选择的分销商等级不存在或已删除,请刷新后重试'];
  138. }
  139. $store = \Yii::$app->session->get('o2o');
  140. $bossExists = StoreBoss::find()->where([
  141. 'mall_id' => $store['mall_id'], 'store_id' =>$store['id'], 'status' => 1, 'level' => $level->level
  142. ])->asArray()->one();
  143. if ($bossExists) {
  144. return ['code' => 1, 'msg' => '该分销商等级下还有分销商存在,暂时不能删除'];
  145. }
  146. $level->is_delete = 1;
  147. if (!$level->save()) {
  148. return $this->responseErrorMsg($level);
  149. }
  150. return ['code' => 0, 'msg' => '删除成功!'];
  151. }
  152. public function search()
  153. {
  154. if (!$this->validate()) {
  155. return $this->responseErrorInfo();
  156. }
  157. $store = \Yii::$app->session->get('o2o');
  158. $where[] = ['=', 'mall_id', $store['mall_id']];
  159. $where[] = ['=','store_id', $store['id']];
  160. $where[] = ['=','is_delete', 0];
  161. if($this->keyword){
  162. $where[]=['or', ['like', 'name',$this->keyword], ['like', 'level', $this->keyword]];
  163. }
  164. $params = [
  165. // 'select' => '*',
  166. 'where' => $where,
  167. 'order' => 'level asc',
  168. 'page' => $this->page,
  169. 'limit' => 20,
  170. ];
  171. $lists = StoreBossLevel::listPage($params, false, true);
  172. return [
  173. 'code' => 0,
  174. 'msg' => '',
  175. 'data' => [
  176. 'list' => $lists['list'],
  177. 'pagination' => $lists['pagination']
  178. ]
  179. ];
  180. }
  181. public function setData()
  182. {
  183. $store = Yii::$app->session->get('o2o');
  184. if(!$store) $store = Store::findOne(['id' => $this->store_id]);
  185. try {
  186. if ($this->equal_price_type == 1) {
  187. if ($this->price > 100) {
  188. throw new \Exception('平级奖佣金百分比不能大于100%');
  189. }
  190. }
  191. $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'], 'store_id' => $store['id'], 'level' => $this->level]);
  192. if ($level) {
  193. if ($level->id != $this->id) {
  194. return [
  195. 'code' => 1,
  196. 'msg' => '选中的权重已经存在对应的记录'
  197. ];
  198. }
  199. }
  200. $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'],'store_id' => $store['id'], 'id' => $this->id]);
  201. if ($level) {
  202. if ($level->level != $this->level) {
  203. $boss = StoreBoss::find()->where(['status' => 1, 'mall_id' =>$store['mall_id'],'store_id' => $store['id'], 'level' => $level->level])->asArray()->one();
  204. if ($boss) {
  205. return [
  206. 'code' =>1,
  207. 'msg' => '当前等级下已存在股东,不可变更等级权重!'
  208. ];
  209. }
  210. }
  211. }
  212. if (!$level) {
  213. $level = new StoreBossLevel();
  214. $level->is_delete = 0;
  215. $level->store_id = $store['id'];
  216. $level->mall_id = $store['mall_id'];
  217. }
  218. $level->attributes=$this-> attributes;
  219. $level->checked_condition_keys = Json::encode($this->checked_condition_keys);
  220. $level->checked_condition_values = Json::encode($this->checked_condition_values);
  221. $level->goods_list = Json::encode($this->goods_list);
  222. $level->goods_warehouse_ids = Json::encode($this->goods_warehouse_ids);
  223. if (!$level->save()) {
  224. throw new \Exception($level->getErrorMessage());
  225. // throw new \Exception($this->responseErrorMsg($level));
  226. } else {
  227. return [
  228. 'code' => 0,
  229. 'msg' => '保存成功'
  230. ];
  231. }
  232. } catch (\Exception $exception) {
  233. // $this->error($exception->getMessage());
  234. return [
  235. 'code' => 1,
  236. 'msg' => $exception->getMessage()
  237. ];
  238. }
  239. }
  240. }