12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace app\admin\command;
- use app\common\library\Redis;
- use app\common\service\CampaignService;
- use app\main\constants\CampaignConstants;
- use ReflectionClass;
- use ReflectionMethod;
- use think\Cache;
- use think\Config;
- use think\console\Command;
- use think\console\Input;
- use think\console\input\Argument;
- use think\console\input\Option;
- use think\console\Output;
- use think\Exception;
- use think\Request;
- class CampaignAward extends Command
- {
- /**
- * 配置指令
- */
- protected function configure()
- {
- $this->setName('CampaignAward')
- ->addArgument('date', Argument::REQUIRED, "时间");
- }
- protected function execute(Input $input, Output $output)
- {
- $date = $input->getArgument('date');
- //cli模式下无法获取到当前的项目模块,手动指定一下
- Request::instance()->module('admin');
- if ( !$date ){
- $date = date( 'Ymd', time()-3600*24*8 );
- }
- $data = model('CampaignMatch')->where([
- 'match_date' => $date,
- ])->select();
- if ( !empty($data) ){
- $activeId = $data[0]->campaign_id;
- $active = $this->getActivityById($activeId);
- //每个场次的基数
- $baseNum =$active['elementary_num']*$active['elementary_need']+$active['intermediate_num']*$active['intermediate_need']+$active['advanced_num']*$active['advanced_need'];
- echo '基数'.$baseNum;
- //实际报名和成功的人数
- $signNum = 0;
- $successNum = 0;
- foreach ($data as $k =>$v){
- $signNum += $v['kandian']*$v['participator_num'];
- $successNum += $v['kandian']*$v['success_num'];
- }
- echo '实际打卡'.$signNum;
- echo '实际成功'.$successNum;
- //官方补贴+基数+实际报名人数
- $signNum += $baseNum+$active['subsidy_need'];
- echo '报名:'.$signNum;
- //基数+实际成功的人数
- $successNum += $baseNum;
- echo '成功:'.$successNum;
- //升值倍数
- $awardPercent = !empty($successNum) ?round($signNum/$successNum,2) : 1;
- echo '系数'.$awardPercent;
- foreach ($data as $k=>$v) {
- $update[$k]['id'] = $v['id'];
- $update[$k]['award'] = intval($v['kandian']*$awardPercent);
- }
- model('CampaignMatch')->isUpdate()->saveAll($update);
- Redis::instance()->del(CampaignConstants::getLastAwardMatch());
- Redis::instance()->del(CampaignConstants::getCampaignMatchRedisKey($date,$active['elementary_need']));
- Redis::instance()->del(CampaignConstants::getCampaignMatchRedisKey($date,$active['intermediate_need']));
- Redis::instance()->del(CampaignConstants::getCampaignMatchRedisKey($date,$active['advanced_need']));
- echo '计算成功';exit;
- }
- echo '数据为空';
- }
- protected function getActivityById($activeId){
- $activiy = model('CampaignRead')
- ->where([
- 'id'=>$activeId
- ])
- ->find();
- $activiy = is_array($activiy) ? $activiy : $activiy->toArray();
- return $activiy;
- }
- }
|