| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace addons\SalesCompany\common\logic;
- use common\traits\ErrorTrait;
- use yii\db\Exception;
- use common\enums\StatusEnum;
- use common\models\order\Order;
- use common\models\user\User;
- use common\models\mall\MallAddons;
- use services\common\UserWalletService;
- use addons\SalesCompany\common\models\SalesCompany;
- use addons\SalesCompany\common\models\SalesCompanyAgent;
- use addons\SalesCompany\common\models\CommissionLog;
- use addons\SalesCompany\common\enums\SalesCompanyEnum;
- use common\models\order\OrderDetail;
- class RewardLogic
- {
- public static function toBeSettled($data){
- $log = CommissionLog::findOne(['source_table_id' => $data['source_table_id']]);
- if($log){
- throw new \Exception('已生成分佣记录');
- }
- //获取对应代理商所属销售公司
- $salesCompanyAgent = SalesCompanyAgent::findOne(['user_id' => $data['user_id'],'status'=>StatusEnum::ENABLED,'mall_id'=>$data['mall_id']]);
- if(!$salesCompanyAgent){
- throw new \Exception('该代理商未绑定销售公司,user_id:'.$data['user_id']);
- }
- $salesCompany = SalesCompany::findOne(['id' =>$salesCompanyAgent->company_id,'status'=>StatusEnum::ENABLED,'mall_id'=>$data['mall_id']]);
- if(!$salesCompany){
- throw new \Exception('销售公司不存在');
- }
- //平台抽佣
- $management_fee = 0;
- //获取配置
- $config = \Yii::$app->services->setting->addons->get($data['mall_id'], SalesCompanyEnum::ADDONS_NAME, 'basic');
- if($config && $config['management_fee']){
- $management_fee = $config['management_fee'];
- }
- $total_money = $data['price'] * $data['num'];
- $money = bcsub($total_money,$total_money * $management_fee / 100,2);
- //生成冻结日志
- $params = [
- 'mall_id' => $data['mall_id'],
- 'user_id' => $salesCompany->user_id,
- 'source_table' => $data['source_table'],
- 'source_table_id' => $data['source_table_id'],
- 'money' => $money,
- 'total_money' => $total_money,
- 'is_frozen' => $data['is_frozen'],
- 'rate' => $management_fee,
- 'agent_user_id' => $data['user_id'],
- 'desc' => $data['desc'],
- 'unit_goods_price' => $data['price'],
- 'num' => $data['num'],
- ];
- $res = CommissionLog::setData($params);
- if ($res === false){
- throw new \Exception('销售公司生成佣金记录失败'.CommissionLog::getStaticError());
- }
- if(!$data['is_frozen']){
- $insert_wallet[] = [
- 'mall_id' => $data['mall_id'],
- 'user_id' => $salesCompany->user_id,
- 'is_frozen' => false,
- 'wallet_type' => 'commission',
- 'money' => $money,
- 'desc' => '补货货款结算',
- 'source_table' => $data['source_table'],
- 'source_table_id' => $data['source_table_id'],
- 'from_type' => SalesCompanyEnum::ADDONS_NAME,
- 'capital_type' => 'sales_company',
- ];
- $res = UserWalletService::batchHandleByQueue($insert_wallet);
- if ($res === false){
- throw new \Exception('销售公司生成佣金记录失败'.CommissionLog::getStaticError());
- }
- }
- return true;
- }
- }
|