CommissionLogic.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace addons\BossThree\common\logic;
  3. use addons\BossThree\common\enums\BossThreeEnum;
  4. use addons\BossThree\common\models\BossThree;
  5. use common\enums\StatusEnum;
  6. use common\models\common\Addons;
  7. use common\models\mall\MallAddons;
  8. use common\models\order\Order;
  9. use common\models\user\User;
  10. use common\traits\ErrorTrait;
  11. use Exception;
  12. use services\common\UserWalletService;
  13. use Yii;
  14. /**
  15. * 佣金逻辑
  16. * User: zmz
  17. * Date: 2022/7/11
  18. * Time: 23:14
  19. */
  20. class CommissionLogic
  21. {
  22. use ErrorTrait;
  23. /**
  24. * 结算佣金
  25. * @param $boss_id
  26. * @param $order_id
  27. * @param $order_detail_id
  28. * @param $commission
  29. * @throws
  30. * @return
  31. */
  32. public static function settleCommission($boss_id,$order_id,$commission)
  33. {
  34. try{
  35. $boss = BossThree::findOne(['id' => $boss_id,'status' => StatusEnum::ENABLED]);
  36. if(!$boss){
  37. throw new Exception('股东信息不存在');
  38. }
  39. $boss->commission = bcadd($boss->commission,$commission,2);
  40. $boss->total_commission = bcadd($boss->total_commission,$commission,2);
  41. if(!$boss->save()){
  42. throw new Exception($boss->getError());
  43. }
  44. $order = Order::findOne(['id' => $order_id])->toArray();
  45. $desc = '用户(' . $boss->user_id . '),获得订单(' . $order_id . ')奖励,奖励类型:股东分红3'.',金额:' . $commission;
  46. $insert_wallet [] = [
  47. 'mall_id' => $boss->mall_id,
  48. 'user_id' => $boss->user_id,
  49. 'is_frozen' => false,
  50. 'wallet_type' => UserWalletService::WALLET_TYPE_COMMISSION,
  51. 'money' => $commission,
  52. 'desc' => $desc,
  53. 'source_table' => 'order',
  54. 'source_table_id' => $order_id,
  55. 'from_type' => BossThreeEnum::ADDONS_NAME,
  56. 'capital_type' => BossThreeEnum::BOSS_PRIZE,
  57. 'contributor_name' => '',
  58. 'order_no' => $order['order_no']
  59. ];
  60. $res = UserWalletService::batchHandleByQueue($insert_wallet);
  61. if (empty($res)) throw new \Exception(UserWalletService::getStaticError());
  62. return true;
  63. }catch(Exception $e){
  64. Yii::error('settleCommission error:'.$e->getMessage().' ,File:'.$e->getFile().',Line:'.$e->getLine());
  65. return false;
  66. }
  67. }
  68. /**
  69. * @desc:推广中心-调用
  70. * @Author: hua
  71. * @Date: 2021/11/12
  72. * @Time: 9:30
  73. * @Copyright: copyright (c) 2021 广东七件事集团
  74. * @param $params ['user_id' => 1, 'mall_id' => 5, 'addons_name' => 'Agent']
  75. * @return array
  76. */
  77. public static function getIncomeInfo(array $params){
  78. $is_install = MallAddons::isInstall($params['mall_id'], $params['addons_name']);
  79. $data['total_commission'] = 0;
  80. $data['is_install'] = 0;
  81. $basic = \Yii::$app->services->setting->addons->get($params['mall_id'], $params['addons_name'], 'basic');
  82. $data['is_show_at_center'] = 1;
  83. if(isset($basic['is_show_at_center'])) $data['is_show_at_center'] = $basic['is_show_at_center'];
  84. if($is_install){
  85. //查询用户在插件内的佣金总额
  86. $user = User::findOne(['id' => $params['user_id']]);
  87. $boss = BossThree::findOne(['mall_id' => $params['mall_id'],'user_id' => $params['user_id'],'status' => StatusEnum::ENABLED]);
  88. $data['total_commission'] = $boss->total_commission ?? 0;
  89. $data['is_install'] = $is_install;
  90. }
  91. return $data;
  92. }
  93. public static function getAddons(array $params){
  94. $is_install = MallAddons::isInstall($params['mall_id'], $params['addons_name']);
  95. if($is_install){
  96. $detail = Addons::getOne([['name' => $params['addons_name']], ['is_online' => 1]], true,);
  97. return [
  98. 'addons_name'=>$params['addons_name'],
  99. 'title'=>$detail['title'],
  100. ];
  101. }
  102. return [];
  103. }
  104. }