RefreshToken.php 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace app\admin\command;
  3. use think\console\Command;
  4. use think\console\Input;
  5. use think\console\input\Option;
  6. use think\console\Output;
  7. use app\common\model\AdminConfig;
  8. use app\common\model\Ptoken;
  9. use app\common\model\Platform;
  10. use think\Log;
  11. use think\Request;
  12. class RefreshToken extends Command
  13. {
  14. protected function configure()
  15. {
  16. $this
  17. ->setName('RefreshToken')
  18. ->addOption('type', 't', Option::VALUE_OPTIONAL, '要处理的缓存类型,token:刷新微信Token', 'token')
  19. ->setDescription('多平台上线刷新Token数据');
  20. }
  21. protected function execute(Input $input, Output $output)
  22. {
  23. Request::instance()->module('admin'); //cli模式下无法获取到当前的项目模块,手动指定一下
  24. $type = $input->getOption('type');
  25. switch ($type) {
  26. case 'token':
  27. $output->writeln("Type: token 刷新Token");
  28. $this->token($input, $output);
  29. break;
  30. default:
  31. $output->writeln("Type: {$type} 无法识别的类型");
  32. }
  33. $output->writeln("处理完毕!");
  34. }
  35. /**
  36. * 刷新渠道商Token数据
  37. * @param $input
  38. * @param $output
  39. * @return bool
  40. */
  41. private function token(Input $input, Output $output){
  42. try{
  43. $adminConfigModel = new AdminConfig();
  44. $platformModel = new Platform();
  45. $ptokenModel = new Ptoken();
  46. //获取渠道信息
  47. if(!$adminConfig = $adminConfigModel->select()){
  48. $output->info('RefreshToken success msg:没有渠道商');
  49. return true;
  50. }
  51. //获取平台信息
  52. if(!$platform = $platformModel->where(['status'=>'1','isdefault'=>'1'])->find()){
  53. $output->error('RefreshToken fail msg:没有取到默认平台');
  54. return false;
  55. }
  56. //拼接SQL
  57. foreach($adminConfig as $channel){
  58. if($channel['refresh_token'] && $channel['is_auth']){
  59. $map = ['admin_id'=>$channel['admin_id'],'platform_id'=>$platform['id']];
  60. if($ptoken = $ptokenModel->where($map)->find()){
  61. if(false !== $ptoken->save(['refresh_token'=>$channel['refresh_token']])){
  62. $output->info('RefreshToken success update msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  63. Log::info('RefreshToken success update msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  64. }else{
  65. $output->error('RefreshToken fail update msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  66. Log::error('RefreshToken fail update msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  67. }
  68. }else{
  69. if($insert = $ptokenModel->insertGetId(array_merge($map,['refresh_token'=>$channel['refresh_token']]))){
  70. $output->info('RefreshToken success insert msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  71. Log::info('RefreshToken success insert msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  72. }else{
  73. $output->error('RefreshToken fail insert msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  74. Log::error('RefreshToken fail insert msg:'.var_export(array_merge($map,['refresh_token'=>$channel['refresh_token']]),true));
  75. }
  76. }
  77. }
  78. }
  79. }catch (\Exception $e){
  80. $output->error('RefreshToken fail msg:'.$e->getMessage());
  81. }
  82. }
  83. }