|
|
@@ -3,13 +3,18 @@
|
|
|
|
|
|
namespace app\api\command;
|
|
|
|
|
|
-use app\common\logic\ScanLogic;
|
|
|
+
|
|
|
use think\console\Command;
|
|
|
use think\console\Input;
|
|
|
use think\console\Output;
|
|
|
+use fast\Asset;
|
|
|
+use app\common\model\ProductPledges;
|
|
|
use app\common\model\ProductOrder;
|
|
|
-use app\common\model\UserModel;
|
|
|
-use think\Model;
|
|
|
+use app\common\model\LedgerTokenChangeModel;
|
|
|
+use app\common\model\LedgerFrozenChangeModel;
|
|
|
+use app\common\model\LedgerWalletModel;
|
|
|
+use app\common\model\Sharingfees as SharingFeesModel;
|
|
|
+use app\common\model\LedgerTeacChangeModel;
|
|
|
|
|
|
|
|
|
class SharingFees extends Command
|
|
|
@@ -29,10 +34,13 @@ class SharingFees extends Command
|
|
|
$output->writeln('定时任务开始执行:' . date('Y-m-d H:i:s', time()));
|
|
|
|
|
|
/*** 发放分红收益 ***/
|
|
|
- $output->writeln("开始发放空投:");
|
|
|
- $i = 0;
|
|
|
- $count = $this->reset_user_pledge($i);
|
|
|
- $output->writeln('定时任务执行结束,总执行:' . $count . '个');
|
|
|
+ $output->writeln("手续费分润:");
|
|
|
+
|
|
|
+ $feeCount = self::setSharingFees();
|
|
|
+
|
|
|
+ //存储服务费分润
|
|
|
+ $pledgeCount = self::setSharingPledge();
|
|
|
+ $output->writeln('定时任务执行结束,手续费执行:' . $feeCount . '个,服务费执行:' . $pledgeCount . '个');
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -43,20 +51,117 @@ class SharingFees extends Command
|
|
|
(茶宝:100/300=0.333 茶宝(手续费账户)200/300=0.666)
|
|
|
2)再算出持有A产品的用户,每人持有量;根据每人持有量*每份应发数量,计算出每人应发总额,发放到该用户的茶宝账户上。
|
|
|
3)按上述算法,以此计算持有B和持有CDE的用户
|
|
|
-
|
|
|
*/
|
|
|
+ public static function setSharingFees(){
|
|
|
|
|
|
-
|
|
|
- public function reset_user_pledge(){
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ $list = SharingFeesModel::where(['status'=> SharingFeesModel::Normal])->where('type_id', SharingFeesModel::TypeFees)->select();
|
|
|
+ if(empty($list)) return true;
|
|
|
+ $output = new Output();
|
|
|
+ $wallet = new LedgerWalletModel();
|
|
|
+ $productOrder = new ProductOrder();
|
|
|
+ $i = 0;
|
|
|
+ //茶宝手续费
|
|
|
+ $tokenFee = abs(LedgerTokenChangeModel::whereTime('create_time', 'today')->where('action', 'in', [LedgerTokenChangeModel::Giveaway, LedgerTokenChangeModel::Pledge, LedgerTokenChangeModel::TransferFee])->sum('change_amount'));
|
|
|
+ //冻结手续费
|
|
|
+ $frozenFee = abs(LedgerFrozenChangeModel::where('create_time', 'yesterday')->where('action', 'in', [LedgerFrozenChangeModel::Giveaway, LedgerFrozenChangeModel::Pledge, LedgerFrozenChangeModel::TransferFees])->sum('change_amount'));
|
|
|
+ foreach($list as $item){
|
|
|
+
|
|
|
+ //TOKEN产品的持有量
|
|
|
+ $productHold = $productOrder::getHoldProductNum($item->product_id);
|
|
|
+ //分润
|
|
|
+ $tokenFees = bcmul($tokenFee, bcdiv($item->fees, 100, 3), 3);
|
|
|
+
|
|
|
+ //统计产品总数量
|
|
|
+ $productNum = array_sum(array_column($productHold, 'num')) ;
|
|
|
+ //每份产品的分润
|
|
|
+ $tave = bcdiv($tokenFees, $productNum, 6);
|
|
|
+
|
|
|
+ //冻结分润
|
|
|
+ $frozenFees = bcmul($frozenFee, bcdiv($item->fees, 100, 3), 3);
|
|
|
+ //每份产品的分润
|
|
|
+ $fave = bcdiv($frozenFees, $productNum, 6);
|
|
|
+ //$output->writeln('产品:' . $item->product_id . '茶宝分润:' . $tave . ' 手续费账户分润:' . $fave );
|
|
|
+ foreach ($productHold as $vv) {
|
|
|
+ //茶宝
|
|
|
+ $tokenNum = bcmul($vv->num, $tave, 6);
|
|
|
+ if($tokenNum > 0) {
|
|
|
+ $wallet->changeWalletAccount($vv->user_id, Asset::TOKEN, $tokenNum , LedgerTokenChangeModel::SharingFees);
|
|
|
+ $output->writeln('用户:' . $vv->user_id . '茶宝分润:' . $tokenNum );
|
|
|
+ }
|
|
|
+ //手续费
|
|
|
+ $frozenNum = bcmul($vv->num, $fave, 6);
|
|
|
+ if($frozenNum > 0) {
|
|
|
+ $wallet->changeWalletAccount($vv->user_id, Asset::FROZEN, $frozenNum , LedgerFrozenChangeModel::SharingFees);
|
|
|
+ $output->writeln('用户:' . $vv->user_id. ' 手续费账户分润:' . $frozenNum );
|
|
|
+ }
|
|
|
+ $i +=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $i;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
+ //存储服务费分润
|
|
|
+ public static function setSharingPledge(){
|
|
|
|
|
|
+ $list = SharingFeesModel::where(['status'=> SharingFeesModel::Normal])->where('type_id', SharingFeesModel::TypeStorage)->select();
|
|
|
+ if(empty($list)) return true;
|
|
|
+
|
|
|
+ $teacFee = abs(LedgerTeacChangeModel::whereTime('create_time', 'today')->where('action', LedgerTeacChangeModel::PledgeFee)->sum('change_amount')); //TEAC const PledgeFee = 7; //存储服务费
|
|
|
+ $tokenFee = abs(LedgerTokenChangeModel::whereTime('create_time', 'today')->where('action', LedgerTokenChangeModel::Pledge)->sum('change_amount')); //TOKEN const PledgeFee = 7; //存储服务费
|
|
|
+ $frozenFee = abs(LedgerFrozenChangeModel::whereTime('create_time', 'today')->where('action', LedgerFrozenChangeModel::Pledge)->sum('change_amount')); //FROZEN const PledgeFee = 7; //存储服务费
|
|
|
+ $i = 0;
|
|
|
+ $output = new Output();
|
|
|
+ $wallet = new LedgerWalletModel();
|
|
|
+ $productOrder = new ProductOrder();
|
|
|
+ foreach($list as $item){
|
|
|
+
|
|
|
+ //TOKEN产品的持有量
|
|
|
+ $productHold = $productOrder::getHoldProductNum($item->product_id);
|
|
|
+ //统计产品总数量
|
|
|
+ $productNum = array_sum(array_column($productHold, 'num')) ;
|
|
|
+
|
|
|
+ //Teac分润
|
|
|
+ $teacFees = bcmul($teacFee, bcdiv($item->fees, 100, 3), 3);
|
|
|
+ //每份产品的分润
|
|
|
+ $tave = bcdiv($teacFees, $productNum, 6);
|
|
|
+
|
|
|
+ //TOKEN分润
|
|
|
+ $tokenFees = bcmul($tokenFee, bcdiv($item->fees, 100, 3), 3);
|
|
|
+ //每份产品的分润
|
|
|
+ $cave = bcdiv($tokenFees, $productNum, 6);
|
|
|
+
|
|
|
+ //冻结分润
|
|
|
+ $frozenFees = bcmul($frozenFee, bcdiv($item->fees, 100, 3), 3);
|
|
|
+ //每份产品的分润
|
|
|
+ $fave = bcdiv($frozenFees, $productNum, 6);
|
|
|
+ //$output->writeln('产品:' . $item->product_id . '茶宝分润:' . $tave . ' 手续费账户分润:' . $fave );
|
|
|
+ foreach ($productHold as $vv) {
|
|
|
+
|
|
|
+ //TEAC
|
|
|
+ $teacNum = bcmul($vv->num, $tave, 6);
|
|
|
+ if($teacNum > 0) {
|
|
|
+ $wallet->changeWalletAccount($vv->user_id, Asset::TEAC, $teacNum , LedgerTokenChangeModel::SharingFees);
|
|
|
+ $output->writeln('用户:' . $vv->user_id . 'TEAC分润:' . $teacNum );
|
|
|
+ }
|
|
|
+
|
|
|
+ //茶宝
|
|
|
+ $tokenNum = bcmul($vv->num, $cave, 6);
|
|
|
+ if($tokenNum > 0) {
|
|
|
+ $wallet->changeWalletAccount($vv->user_id, Asset::TOKEN, $tokenNum , LedgerTokenChangeModel::SharingFees);
|
|
|
+ $output->writeln('用户:' . $vv->user_id . '茶宝分润:' . $tokenNum );
|
|
|
+ }
|
|
|
+ //手续费
|
|
|
+ $frozenNum = bcmul($vv->num, $fave, 6);
|
|
|
+ if($frozenNum > 0) {
|
|
|
+ $wallet->changeWalletAccount($vv->user_id, Asset::FROZEN, $frozenNum , LedgerFrozenChangeModel::SharingFees);
|
|
|
+ $output->writeln('用户:' . $vv->user_id. ' 手续费账户分润:' . $frozenNum );
|
|
|
+ }
|
|
|
+ $i +=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $i;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
}
|