AreaCommissionLog.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace addons\Area\common\models;
  3. use common\enums\StatusEnum;
  4. use common\models\goods\Goods;
  5. use common\models\order\Order;
  6. use common\models\user\User;
  7. use Yii;
  8. /**
  9. * This is the model class for table "qimall_addons_area_commission_log".
  10. *
  11. * @property int $id ID
  12. * @property int $mall_id 商城id
  13. * @property int $user_id 会员id
  14. * @property int $status 状态[-1:删除;0:禁用;1启用]
  15. * @property int $created_at 创建时间
  16. * @property int $updated_at 修改时间
  17. * @property int $goods_id 商品ID
  18. * @property int $order_id 订单ID
  19. * @property string $order_no 订单编号
  20. * @property float $commission_rate 佣金比例
  21. * @property int $commission 佣金
  22. * @property int $commission_status 佣金状态0未发放,1已发放
  23. * @property int $area_level 代理等级
  24. * @property string $type 代理等级
  25. * @property int $direction 代理等级
  26. * @property int $order_detail_id 代理等级
  27. * @property int $is_fixed 代理等级
  28. */
  29. class AreaCommissionLog extends \common\models\base\BaseActiveRecord
  30. {
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public static function tableName()
  35. {
  36. return 'qimall_addons_area_commission_log';
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. public function rules()
  42. {
  43. return [
  44. [['mall_id', 'user_id', 'status', 'created_at', 'updated_at', 'goods_id', 'order_id',
  45. 'commission', 'commission_status', 'area_level', 'direction', 'order_detail_id', 'is_fixed'], 'integer'],
  46. [['commission_rate'], 'number'],
  47. [['order_no'], 'string', 'max' => 26],
  48. [['type'], 'string', 'max' => 20],
  49. ];
  50. }
  51. /**
  52. * {@inheritdoc}
  53. */
  54. public function attributeLabels()
  55. {
  56. return [
  57. 'id' => 'ID',
  58. 'mall_id' => 'Mall ID',
  59. 'user_id' => 'User ID',
  60. 'status' => 'Status',
  61. 'created_at' => 'Created At',
  62. 'updated_at' => 'Updated At',
  63. 'goods_id' => 'Goods ID',
  64. 'order_id' => 'Order ID',
  65. 'order_no' => 'Order No',
  66. 'commission_rate' => 'Commission Rate',
  67. 'commission' => 'Commission',
  68. 'commission_status' => 'Commission Status',
  69. 'area_level' => 'Area Level',
  70. ];
  71. }
  72. public function getUser()
  73. {
  74. return $this->hasOne(User::class, ['id' => 'user_id'])->select('id, username, mobile, nickname, avatar_url');
  75. }
  76. public function getOrder()
  77. {
  78. return $this->hasOne(Order::class, ['id' => 'order_id']);
  79. }
  80. public function getGoods()
  81. {
  82. return $this->hasOne(Goods::class, ['id' => 'goods_id']);
  83. }
  84. /**
  85. * @param array $wallet
  86. * @param array $order_detail
  87. * @param int $is_fixed
  88. * @param $rate
  89. * @param int $level
  90. * @return mixed|string|true|null
  91. */
  92. public static function setData(array $wallet, array $order_detail, int $is_fixed, $rate, int $level)
  93. {
  94. $model = new AreaCommissionLog();
  95. $model->mall_id = $wallet['mall_id'];
  96. $model->user_id = $wallet['user_id'];
  97. $model->goods_id = $order_detail['goods_id'];
  98. $model->order_id = $order_detail['order_id'];
  99. $model->order_no = $order_detail['order_no'];
  100. $model->commission = bcmul($wallet['money'], 100);
  101. $model->commission_status = $wallet['is_frozen'] == StatusEnum::ENABLED ? StatusEnum::DISABLED : StatusEnum::ENABLED;
  102. $model->commission_rate = $rate; // 通过商品与等级获取
  103. $model->is_fixed = $is_fixed; // 通过商品与等级获取
  104. $model->area_level = $level;
  105. $model->type = $wallet['wallet_type'];
  106. $model->order_detail_id = $wallet['source_table_id'];
  107. $model->direction = StatusEnum::ENABLED;
  108. $model->loadDefaultValues();
  109. if (!$model->save()) return $model->getErrorMessage();
  110. return true;
  111. }
  112. /**
  113. * 解冻
  114. * @param array $ids
  115. * @return void
  116. */
  117. public static function unfrozon(array $ids)
  118. {
  119. AreaCommissionLog::updateAll(['commission_status' => StatusEnum::ENABLED],
  120. ['and', ['order_detail_id' => $ids],
  121. ['commission_status' => StatusEnum::DISABLED],
  122. ['status' => StatusEnum::ENABLED]]);
  123. }
  124. /**
  125. * @param int $order_detail_id
  126. * @return void
  127. */
  128. public static function close(int $order_detail_id)
  129. {
  130. AreaCommissionLog::updateAll(['status' => StatusEnum::DELETE, 'direction' => StatusEnum::DISABLED],
  131. ['and', ['order_detail_id' => $order_detail_id],
  132. ['direction' => StatusEnum::DISABLED],
  133. ['status' => StatusEnum::ENABLED]]);
  134. }
  135. /**
  136. * @param array $order_detail_id
  137. * @return void
  138. */
  139. public static function closeAll(array $order_detail_id)
  140. {
  141. AreaCommissionLog::updateAll(['status' => StatusEnum::DELETE, 'direction' => StatusEnum::DISABLED],
  142. ['and', ['order_detail_id' => $order_detail_id],
  143. ['direction' => StatusEnum::DISABLED],
  144. ['status' => StatusEnum::ENABLED]]);
  145. }
  146. }