UpgradeController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Upgrade;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Carbon;
  6. use Illuminate\Support\Facades\Log;
  7. use Illuminate\Support\Facades\Storage;
  8. use Illuminate\Support\Facades\Validator;
  9. use Illuminate\Validation\Rule;
  10. class UpgradeController extends Controller
  11. {
  12. /**
  13. * 系统升级接口
  14. * @param Request $request
  15. * @return array
  16. */
  17. public function index(Request $request)
  18. {
  19. $validator = Validator::make($request->all(), [
  20. 'os' => ['required', Rule::in('ios', 'android')],
  21. 'version_code' => 'required',
  22. ]);
  23. if ($validator->fails()) {
  24. return jsonError($validator->errors()->first());
  25. }
  26. $upgradeInfo = json_decode(config('customer.app_upgrade_info'), true);
  27. $info = [];
  28. if ($upgradeInfo) {
  29. $version = isset($upgradeInfo[$request['os']]) ? $upgradeInfo[$request['os']]['version'] : '1.0.0';
  30. $versionCode = isset($upgradeInfo[$request['os']]) ? $upgradeInfo[$request['os']]['version_code'] : '1';
  31. $content = isset($upgradeInfo[$request['os']]) ? $upgradeInfo[$request['os']]['content'] : '系统升级';
  32. $title = isset($upgradeInfo[$request['os']]) ? $upgradeInfo[$request['os']]['title'] : '升级提示';
  33. $clientVersion = intval($request['version_code']);
  34. $url = isset($upgradeInfo[$request['os']]) ? $upgradeInfo[$request['os']]['url'] : '';
  35. if ($clientVersion < $versionCode) {
  36. $info['upgrade'] = 1;
  37. } else {
  38. $info['upgrade'] = 0;
  39. }
  40. $addDate = '2019-09-03 18:00:00';
  41. $now = Carbon::now()->toDateTimeString();
  42. if($request['os'] == 'android' && $clientVersion != $versionCode && $now < $addDate){
  43. $info['upgrade'] = 1;
  44. }
  45. $info['url'] = $url;
  46. $info['version'] = $version;
  47. $info['title'] = $title;
  48. $info['content'] = $content;
  49. } else {
  50. $info['upgrade'] = 0;
  51. $info['url'] = '';
  52. $info['version'] = '';
  53. $info['title'] = '';
  54. $info['content'] = '';
  55. Log::error('未设置升级配置信息');
  56. }
  57. return $this->jsonSuccess($info);
  58. }
  59. /**
  60. * 系统升级接口
  61. * @param Request $request
  62. * @return array
  63. */
  64. public function upgrade(Request $request)
  65. {
  66. Log::debug('系统升级接口'.json_encode($request->all()));
  67. $validator = Validator::make($request->all(), [
  68. 'os' => ['required', Rule::in('ios', 'android')],
  69. 'version_code' => 'required',
  70. ]);
  71. if ($validator->fails()) {
  72. return jsonError($validator->errors()->first());
  73. }
  74. $upgradeInfo = Upgrade::where(['os'=>$request['os']])->orderBy('id','desc')->first();
  75. $info = [];
  76. if ($upgradeInfo) {
  77. $version = isset($upgradeInfo->version) ? $upgradeInfo->version : '1.0.0';
  78. $versionCode = isset($upgradeInfo->version_code) ? $upgradeInfo->version_code : '1';
  79. $content = isset($upgradeInfo->content) ? $upgradeInfo->content : '系统升级';
  80. $title = isset($upgradeInfo->title) ? $upgradeInfo->title : '升级提示';
  81. $clientVersion = intval($request['version_code']);
  82. $url = isset($upgradeInfo->url) ? $upgradeInfo->url : '';
  83. if($upgradeInfo->is_forced_update == 1){
  84. $info['upgrade'] = 2;
  85. }else{
  86. if ($clientVersion < $versionCode) {
  87. $info['upgrade'] = 1;
  88. $upgradeForcedInfo = Upgrade::where(['os'=>$request['os'],'is_forced_update'=>1])
  89. ->where('version_code','>=',$clientVersion)
  90. ->where('version_code','<=',$versionCode)
  91. ->orderBy('id','desc')
  92. ->first();
  93. if($upgradeForcedInfo){
  94. $info['upgrade'] = 2;
  95. }
  96. } else {
  97. $info['upgrade'] = 0;
  98. }
  99. }
  100. $info['url'] = $url;
  101. $info['version'] = $version;
  102. $info['title'] = $title;
  103. $info['content'] = $content;
  104. } else {
  105. $info['upgrade'] = 0;
  106. $info['url'] = '';
  107. $info['version'] = '';
  108. $info['title'] = '';
  109. $info['content'] = '';
  110. Log::error('未设置升级配置信息');
  111. }
  112. return $this->jsonSuccess($info);
  113. }
  114. }