StoreBossLevel.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. namespace addons\Store\common\models;
  3. use yii\helpers\Json;
  4. // use app\helpers\SerializeHelper;
  5. // use app\models\BaseActiveRecord;
  6. use common\models\order\CommonOrder;
  7. use common\models\order\CommonOrderDetail;
  8. use common\models\goods\Goods;
  9. use common\models\user\UserChildren;
  10. use common\models\user\UserGrowth;
  11. use Yii;
  12. /**
  13. * This is the model class for table "{{%plugin_store_boss_level}}".
  14. *
  15. * @property int $id
  16. * @property int $mall_id
  17. * @property int $store_id
  18. * @property int $level
  19. * @property string $name
  20. * @property int $is_auto_upgrade
  21. * @property string|null $detail
  22. * @property float $price 平级奖
  23. * @property float $extra_price 渠道奖
  24. * @property int $created_at
  25. * @property int $updated_at
  26. * @property int $is_delete
  27. * @property string|null $checked_condition_values 升级条件
  28. * @property int $is_enable 是否启用
  29. * @property string|null $checked_condition_keys 升级条件选中的key集合
  30. * @property int $condition_type 0 未选择、1满足其一 2、满足所有
  31. * @property int $upgrade_type_goods
  32. * @property int $upgrade_type_condition
  33. * @property string|null $goods_warehouse_ids 商品仓库的ID
  34. * @property string|null $goods_list 商品列表
  35. * @property int $goods_type 商品升级类型
  36. * @property int $buy_goods_type 0订单完成 1下单 完成
  37. * @property float $extra_limit_price 额外奖励上限金额
  38. * @property int $extra_type 存在额外奖励的条件 1 购物 2 条件 3 任意
  39. * @property int $is_extra 是否存在额外奖励
  40. * @property int $extra_is_limit 额外奖励是否存在上限
  41. */
  42. class StoreBossLevel extends \common\models\base\BaseActiveRecord
  43. {
  44. /**
  45. * {@inheritdoc}
  46. */
  47. public static function tableName()
  48. {
  49. return '{{%addons_store_boss_level}}';
  50. }
  51. /**
  52. * {@inheritdoc}
  53. */
  54. public function rules()
  55. {
  56. return [
  57. [['mall_id', 'name'], 'required'],
  58. [['mall_id', 'level', 'is_auto_upgrade', 'created_at', 'updated_at', 'is_delete', 'is_enable', 'condition_type', 'upgrade_type_goods', 'upgrade_type_condition', 'goods_type', 'buy_goods_type', 'extra_type', 'is_extra', 'extra_is_limit', 'store_id'], 'integer'],
  59. [['detail', 'checked_condition_values', 'checked_condition_keys', 'goods_warehouse_ids', 'goods_list'], 'string'],
  60. [['price', 'extra_price', 'extra_limit_price'], 'number'],
  61. [['name'], 'string', 'max' => 45],
  62. ];
  63. }
  64. /**
  65. * {@inheritdoc}
  66. */
  67. public function attributeLabels()
  68. {
  69. return [
  70. 'id' => 'ID',
  71. 'mall_id' => 'Mall ID',
  72. 'store_id' => 'store_id',
  73. 'level' => 'Level',
  74. 'name' => 'Name',
  75. 'is_auto_upgrade' => 'Is Auto Upgrade',
  76. 'detail' => 'Detail',
  77. 'price' => '平级奖',
  78. 'extra_price' => '渠道奖',
  79. 'created_at' => 'Created At',
  80. 'updated_at' => 'Updated At',
  81. 'is_delete' => 'Is Delete',
  82. 'checked_condition_values' => '升级条件',
  83. 'is_enable' => '是否启用',
  84. 'checked_condition_keys' => '升级条件选中的key集合',
  85. 'condition_type' => '0 未选择、1满足其一 2、满足所有',
  86. 'upgrade_type_goods' => 'Upgrade Type Goods',
  87. 'upgrade_type_condition' => 'Upgrade Type Condition',
  88. 'goods_warehouse_ids' => '商品仓库的ID',
  89. 'goods_list' => '商品列表',
  90. 'goods_type' => '商品升级类型',
  91. 'buy_goods_type' => '0订单完成 1下单 完成',
  92. 'extra_limit_price' => '额外奖励上限金额',
  93. 'extra_type' => '存在额外奖励的条件 1 购物 2 条件 3 任意',
  94. 'is_extra' => '是否存在额外奖励',
  95. 'extra_is_limit' => '额外奖励是否存在上限',
  96. ];
  97. }
  98. /**
  99. * 获取可升级的等级列表
  100. * @Author bing
  101. * @DateTime 2020-11-07 09:59:33
  102. * @copyright: Copyright (c) 2020 广东七件事集团
  103. * @param integer $level
  104. * @param integer $mall_id
  105. * @param integer $store_id
  106. * @param string $order
  107. * @return void|mixed
  108. */
  109. public static function getCanLevelList($level,$mall_id = 0,$store_id = 0,$order = 'desc'){
  110. $mall_id = Yii::$app->mall->id ?? $mall_id;
  111. return self::find()
  112. ->where(['mall_id' => $mall_id,'store_id' => $store_id, 'is_enable' => 1, 'is_delete' => 0])
  113. ->andWhere(['>', 'level', $level])
  114. ->orderBy("level $order")
  115. ->all();
  116. }
  117. public function getList($mall_id,$store_id)
  118. {
  119. $levelList = StoreBossLevel::find()->where([
  120. 'mall_id' => $mall_id,'store_id' => $store_id, 'is_delete' => 0, 'is_enable' => 1,
  121. ])->select(['id', 'level', 'name'])->orderBy(['level' => SORT_ASC])->asArray()->all();
  122. // array_unshift($levelList, [
  123. //// 'id' => 0,
  124. //// 'level' => 0,
  125. //// 'name' => '默认等级'
  126. //// ]);
  127. return $levelList;
  128. }
  129. public function setData()
  130. {
  131. $store = Yii::$app->session->get('o2o');
  132. try {
  133. if ($this->equal_price_type == 1) {
  134. if ($this->price > 100) {
  135. throw new \Exception('平级奖佣金百分比不能大于100%');
  136. }
  137. }
  138. $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'], 'store_id' => $store['id'], 'level' => $this->level]);
  139. if ($level) {
  140. if ($level->id != $this->id) {
  141. return [
  142. 'code' => 1,
  143. 'msg' => '选中的权重已经存在对应的记录'
  144. ];
  145. }
  146. }
  147. $level = StoreBossLevel::findOne(['is_delete' => 0, 'mall_id' => $store['mall_id'],'store_id' => $store['id'], 'id' => $this->id]);
  148. if ($level) {
  149. if ($level->level != $this->level) {
  150. $boss = StoreBoss::find()->where(['status' => 1, 'mall_id' =>$store['mall_id'],'store_id' => $store['id'], 'level' => $level->level])->asArray()->one();
  151. if ($boss) {
  152. return [
  153. 'code' =>1,
  154. 'msg' => '当前等级下已存在股东,不可变更等级权重!'
  155. ];
  156. }
  157. }
  158. }
  159. if (!$level) {
  160. $level = new StoreBossLevel();
  161. $level->is_delete = 0;
  162. $level->store_id = $store['id'];
  163. $level->mall_id = $store['mall_id'];
  164. }
  165. $level->attributes=$this-> attributes;
  166. $level->checked_condition_keys = Json::encode($this->checked_condition_keys);
  167. $level->checked_condition_values = Json::encode($this->checked_condition_values);
  168. $level->goods_list = Json::encode($this->goods_list);
  169. $level->goods_warehouse_ids = Json::encode($this->goods_warehouse_ids);
  170. if (!$level->save()) {
  171. throw new \Exception($level->getErrorMessage());
  172. // throw new \Exception($this->responseErrorMsg($level));
  173. } else {
  174. return [
  175. 'code' => 0,
  176. 'msg' => '保存成功'
  177. ];
  178. }
  179. } catch (\Exception $exception) {
  180. // $this->error($exception->getMessage());
  181. return [
  182. 'code' => 1,
  183. 'msg' => $exception->getMessage()
  184. ];
  185. }
  186. }
  187. public function getDetail()
  188. {
  189. $weights = (new StoreBossLevelCommon)->getLevelWeights();
  190. $level = self::findOne(['id' => $this->id, 'is_delete' => 0]);
  191. if ($level) {
  192. if ($level->checked_condition_values) {
  193. $level->checked_condition_values = Json::decode($level->checked_condition_values);
  194. }
  195. if ($level->checked_condition_keys) {
  196. $level->checked_condition_keys = Json::decode($level->checked_condition_keys);
  197. }
  198. if ($level->goods_warehouse_ids) {
  199. $level->goods_warehouse_ids = Json::decode($level->goods_warehouse_ids);
  200. } else {
  201. $level->goods_warehouse_ids = [];
  202. }
  203. if ($level->goods_list) {
  204. $level->goods_list = Json::decode($level->goods_list);
  205. } else {
  206. $level->goods_list = [];
  207. }
  208. return [
  209. 'code' => 0,
  210. 'msg' => '',
  211. 'data' => [
  212. 'detail' => $level,
  213. 'weights' => $weights['newList']
  214. ]
  215. ];
  216. }
  217. }
  218. }