MovedChannelsReback.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Modules\Channel\Models\Channel;
  4. use App\Modules\Finance\Models\CommissionRate;
  5. use App\Modules\Trade\Services\OrderService;
  6. use DB;
  7. use GuzzleHttp\Client;
  8. use Illuminate\Console\Command;
  9. class MovedChannelsReback extends Command
  10. {
  11. /**
  12. * The name and signature of the console command.
  13. *
  14. * @var string
  15. */
  16. protected $signature = 'compensateForChannels';
  17. /**
  18. * The console command description.
  19. *
  20. * @var string
  21. */
  22. protected $description = '云栖迁移渠道补偿';
  23. public function handle()
  24. {
  25. /* Channel::where([
  26. ['created_at','>=',date('Y-m-d H:i:s',strtotime('-1 month'))],
  27. ['is_yq_move','=',1]
  28. ])->chunk(1000,function($res){
  29. foreach ($res as $item){
  30. $commission = CommissionRate::where('distribution_channel_id',$item->id)->first();
  31. if($commission) {
  32. $commission->rate = 1;
  33. $commission->save();
  34. }else{
  35. \Log::error('CompensateForMoveChannelFailed:'.$item->id);
  36. }
  37. }
  38. });*/
  39. $distribution_channels = DB::select("SELECT * FROM distribution_channels WHERE distribution_channels.is_yq_move=1 AND NOT EXISTS(SELECT * FROM yq_move_channels WHERE yq_move_channels.distribution_channel_id=distribution_channels.id)");
  40. foreach ($distribution_channels as $distribution_channel){
  41. //$moved = DB::table('yq_move_channels')->where('distribution_channel_id',$distribution_channel->id)->first();
  42. DB::table('yq_move_channels')->insert(['distribution_channel_id'=>$distribution_channel->id,'created_at'=>date('Y-m-d H:i:s')]);
  43. }
  44. $to_modifys = DB::table('yq_move_channels')->where('created_at','>=',date('Y-m-d H:i:s',strtotime('-1 month')))->get();
  45. foreach ($to_modifys as $to_modify) {
  46. $commission = CommissionRate::where('distribution_channel_id',$to_modify->distribution_channel_id)->first();
  47. if($commission) {
  48. $commission->rate = 1;
  49. $commission->save();
  50. }else{
  51. \Log::error('CompensateForMoveChannelFailed:'.$to_modify->id);
  52. }
  53. }
  54. $to_withDraws = DB::table('yq_move_channels')->where('created_at','<',date('Y-m-d H:i:s',strtotime('-3 month')))->get();
  55. foreach ($to_withDraws as $to_withDraw) {
  56. $commission = CommissionRate::where('distribution_channel_id',$to_withDraw->distribution_channel_id)->first();
  57. if($commission) {
  58. $commission->rate = 0.9;
  59. $commission->save();
  60. }else{
  61. \Log::error('CompensateForMoveChannelFailed:'.$to_withDraw->id);
  62. }
  63. }
  64. $senven_days_ago = date('Y-m-d H:i:s',strtotime('-7 day'));
  65. $senven_days_later = DB::select("SELECT * FROM yq_move_channels WHERE created_at < '".$senven_days_ago."' AND distribution_channel_id NOT IN (4217) AND EXISTS (SELECT * FROM distribution_channels WHERE is_yq_move = 1 AND distribution_channels.id=yq_move_channels.distribution_channel_id)");//DB::table('yq_move_channels')->where('created_at','<',date('Y-m-d H:i:s',strtotime('-7 day')))->get();
  66. \Log::info('distribution_channels_to_modify:'.json_encode($senven_days_later));
  67. self::update_distribution($senven_days_later);
  68. $month_ago = date('Y-m-d H:i:s',strtotime('-1 month'));
  69. $res = DB::select("SELECT * FROM yq_move_channels WHERE created_at < '".$month_ago."' AND distribution_channel_id IN (4217) AND EXISTS (SELECT * FROM distribution_channels WHERE is_yq_move = 1 AND distribution_channels.id=yq_move_channels.distribution_channel_id)");
  70. self::update_distribution($res);
  71. }
  72. static public function getUserClient()
  73. {
  74. return new Client(['base_uri' => env('AUTH_API_BASE_URI')]);
  75. }
  76. private function update_distribution($data){
  77. foreach ($data as $item) {
  78. //DB::beginTransaction();
  79. //if(!in_array($item->distribution_channel_id,[4217])){
  80. $distribution_channel = Channel::where('id',$item->distribution_channel_id)->first();
  81. $distribution_channel->is_yq_move = 0;
  82. $distribution_channel->save();
  83. $res = DB::table('official_accounts')
  84. ->where('distribution_channel_id',$item->distribution_channel_id)
  85. ->get();
  86. foreach ($res as $officail_account) {
  87. $gzh_app_id = isset($officail_account->appid)?$officail_account->appid:env('WECHAT_AUTH_APPID');
  88. try {
  89. $timestamp = time();
  90. $params = array('authorizer_appid' => $officail_account->appid,'set_type'=>'menu', "timestamp" => $timestamp);
  91. $sign = get_sign($params);
  92. $resJson = self::getUserClient()->request("GET", "auto_set_menu_and_template_test",
  93. ['query' => ['set_type' => 'menu','authorizer_appid'=>$officail_account->appid, 'timestamp' => $timestamp, 'sign' => $sign]]
  94. )->getBody()->getContents();
  95. //\Log::info('authorize_menu_done:'.json_encode($resJson));
  96. //if($resJson){
  97. //}
  98. } catch (\Exception $e) {
  99. \Log::error('menu_authorized_fail:'.$e->getMessage());
  100. DB::rollback();
  101. continue;
  102. }
  103. DB::commit();
  104. \Log::info('authorized_accounts:'.json_encode($officail_account));
  105. }
  106. }
  107. }
  108. //}
  109. }