EqualReward.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace addons\CloudStock\common\logic\reward;
  3. use addons\CloudStock\common\enums\CloudStockEnum;
  4. use addons\CloudStock\common\models\CloudStockAgent;
  5. use addons\CloudStock\common\models\CloudStockLevel;
  6. use addons\CloudStock\common\services\EqualAwardService;
  7. use common\enums\StatusEnum;
  8. use common\enums\UserWalletEnum;
  9. class EqualReward extends Reward
  10. {
  11. public $equal_level;//发放奖励代理商平级层级
  12. /**
  13. * 记录奖励
  14. */
  15. protected function addRewardLog()
  16. {
  17. $this->getRewardUnitPrice();
  18. //奖励金额,不记录
  19. if ($this->reward_unit_price == 0) return false;
  20. //扣库存数量为0;没有奖励
  21. if ($this->goods_num == 0) return false;
  22. if($this->is_job) return true;
  23. $insert_wallet = $this->getInsertWallet(UserWalletEnum::EQUAL);
  24. //投递到资产队列
  25. if ($insert_wallet) CloudStockAgent::sendUserWalletQueue($insert_wallet);
  26. if (!empty($insert_wallet)) {
  27. (new EqualAwardService(['mall_id' => $this->mall_id]))->setStatistics($insert_wallet, UserWalletEnum::EQUAL);
  28. }
  29. }
  30. /**
  31. * 获取对应等级商品奖励金额单价
  32. */
  33. public function getRewardUnitPrice()
  34. {
  35. switch ($this->equal_level){
  36. case 1:
  37. $config_key = CloudStockEnum::CONFIG_KEY_EQUAL_LEVEL_ONE;
  38. break;
  39. case 2:
  40. $config_key = CloudStockEnum::CONFIG_KEY_EQUAL_LEVEL_TWO;
  41. break;
  42. default:
  43. $this->reward_unit_price = 0;
  44. }
  45. $equal_level_list = json_decode($this->stock_goods['equal_level_list'], true);
  46. //校验该等级存不存
  47. $level = CloudStockLevel::findOne(['mall_id' => $this->mall_id, 'level' =>$this->bonus_agent['level'], 'status' => StatusEnum::ENABLED]);
  48. if(!empty($level)){
  49. foreach ($equal_level_list as $value) {
  50. if ($value['level'] == $this->bonus_agent['level']&&$value['config_key']==$config_key) {
  51. $this->reward_unit_price = !empty($value['config_value']) ? $value['config_value'] : 0;
  52. return ;
  53. }
  54. }
  55. }
  56. $this->reward_unit_price = 0;
  57. }
  58. }