ServeBonusCloudStockPeriod.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace addons\ServeBonus\common\models;
  3. use common\models\user\User;
  4. use common\enums\StatusEnum;
  5. use Yii;
  6. use yii\db\Exception;
  7. /**
  8. * This is the model class for table "{{%addons_servebonus_cloud_stock_period}}".
  9. *
  10. * @property int $id
  11. * @property int $mall_id 商城ID
  12. * @property int $period_num 第N期
  13. * @property float $amounts 出单奖励奖金池,单位:元
  14. * @property int $amounts_num 出单奖励奖金人数
  15. * @property float $extra_amounts 加权分红奖金池,单位:元
  16. * @property int $total_amounts_num 总分红人数
  17. * @property int $compute_period 结算周期:1天,2周,3月
  18. * @property int $start_time 结算开始日期
  19. * @property int $end_time 结算结束日期
  20. * @property int|null $status 状态[-1:删除;0:禁用;1启用]
  21. * @property int $created_at
  22. * @property int $updated_at
  23. */
  24. class ServeBonusCloudStockPeriod extends \common\models\base\BaseActiveRecord
  25. {
  26. /**
  27. * {@inheritdoc}
  28. */
  29. public static function tableName()
  30. {
  31. return '{{%addons_servebonus_cloud_stock_period}}';
  32. }
  33. /**
  34. * {@inheritdoc}
  35. */
  36. public function rules()
  37. {
  38. return [
  39. [['mall_id', 'period_num','compute_period', 'start_time', 'end_time', 'status', 'created_at', 'updated_at','user_id','is_settlement','period_id'], 'integer'],
  40. [['amounts','amounts_num','total_amounts_num','commission'], 'number'],
  41. ];
  42. }
  43. /**
  44. * {@inheritdoc}
  45. */
  46. public function attributeLabels()
  47. {
  48. return [
  49. 'id' => 'ID',
  50. 'mall_id' => '商城ID',
  51. 'period_num' => '第N期',
  52. 'amounts' => '个人补货业绩,单位:元',
  53. 'amounts_num' => '等级补货业绩',
  54. 'total_amounts_num' => '结算金额',
  55. 'compute_period' => '结算周期:1天,2周,3月',
  56. 'start_time' => '结算开始日期',
  57. 'end_time' => '结算结束日期',
  58. 'status' => '状态[-1:删除;0:禁用;1启用]',
  59. 'created_at' => 'Created At',
  60. 'updated_at' => 'Updated At',
  61. ];
  62. }
  63. /**
  64. * 获取上一期期数
  65. * @Author: lun
  66. * @DateTime: 2022/1/26 0026 10:28
  67. * @Copyright: copyright (c) 2021 广东七件事集团
  68. * @param $mall_id
  69. * @return false|int|string
  70. */
  71. public static function getPrevPeriodNum($mall_id,$user_id)
  72. {
  73. $period_num = self::find()->select("period_num")->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED,'user_id'=>$user_id])->orderBy('period_num desc')->asArray()->scalar();
  74. $num = empty($period_num) ? 1 : $period_num + 1;
  75. return $num;
  76. }
  77. /**
  78. * 获取当前期数指定等级业绩
  79. */
  80. public static function getAmountsNum($mall_id,$level,$start_day,$end_day){
  81. if(empty($level)) return 0;
  82. $servebonus_ids = ServeBonus::find()
  83. ->where(['mall_id' => $mall_id, 'status' => StatusEnum::ENABLED,'level'=>$level])
  84. ->select('user_id')
  85. ->column();
  86. return self::find()->select('amounts')
  87. ->where(['mall_id' => $mall_id,'user_id'=>$servebonus_ids])
  88. ->andWhere(['=', 'start_time', $start_day])
  89. ->andWhere(['=', 'end_time', $end_day])
  90. ->sum('amounts');
  91. }
  92. /**
  93. * 关联用户表
  94. * @Author: lun
  95. * @DateTime: 2022/1/26 0026 15:57
  96. * @Copyright: copyright (c) 2021 广东七件事集团
  97. * @return \yii\db\ActiveQuery
  98. */
  99. public function getUser()
  100. {
  101. return $this->hasOne(User::class, ['id' => 'user_id']);
  102. }
  103. }