UpgradeController.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. $validator = Validator::make($request->all(), [
  67. 'os' => ['required', Rule::in('ios', 'android')],
  68. 'version_code' => 'required',
  69. ]);
  70. if ($validator->fails()) {
  71. return jsonError($validator->errors()->first());
  72. }
  73. $upgradeInfo = Upgrade::where(['os'=>$request['os']])->orderBy('id','desc')->first();
  74. $info = [];
  75. if ($upgradeInfo) {
  76. $version = isset($upgradeInfo->version) ? $upgradeInfo->version : '1.0.0';
  77. $versionCode = isset($upgradeInfo->version_code) ? $upgradeInfo->version_code : '1';
  78. $content = isset($upgradeInfo->content) ? $upgradeInfo->content : '系统升级';
  79. $title = isset($upgradeInfo->title) ? $upgradeInfo->title : '升级提示';
  80. $clientVersion = intval($request['version_code']);
  81. $url = isset($upgradeInfo->url) ? $upgradeInfo->url : '';
  82. if($upgradeInfo->is_forced_update == 1){
  83. $info['upgrade'] = 2;
  84. }else{
  85. if ($clientVersion < $versionCode) {
  86. $info['upgrade'] = 1;
  87. $upgradeForcedInfo = Upgrade::where(['os'=>$request['os'],'is_forced_update'=>1])
  88. ->where('version_code','>=',$clientVersion)
  89. ->where('version_code','<=',$versionCode)
  90. ->orderBy('id','desc')
  91. ->first();
  92. if($upgradeForcedInfo){
  93. $info['upgrade'] = 2;
  94. }
  95. } else {
  96. $info['upgrade'] = 0;
  97. }
  98. }
  99. $info['url'] = $url;
  100. $info['version'] = $version;
  101. $info['title'] = $title;
  102. $info['content'] = $content;
  103. } else {
  104. $info['upgrade'] = 0;
  105. $info['url'] = '';
  106. $info['version'] = '';
  107. $info['title'] = '';
  108. $info['content'] = '';
  109. Log::error('未设置升级配置信息');
  110. }
  111. return $this->jsonSuccess($info);
  112. }
  113. }