CheckUpdateDLL.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. /* * **************************************************
  3. * 此代码为员工在公司工作期间创作.
  4. * 使用权和所有权归属于公司和员工共有.
  5. * 收益的权利归属于公司.
  6. * ——石家庄龙游科技有限公司
  7. * ************************************************** */
  8. namespace loyalsoft;
  9. include_once __DIR__ . '/../../main.php';
  10. /**
  11. * 检查更新(基于和王解的update模块的约定)
  12. * @author gwang
  13. * @version 1.0.0 Created by wanggangzero at 2023年6月15日17:07:11
  14. */
  15. class CheckUpdateDLL {
  16. const Ver_file = "CodeVer.txt"; # dll版本信息文件名
  17. const DLL_file = "Assembly-CSharp.dll.bytes"; # dll文件名
  18. /**
  19. * 检查客户端版本是否需要强制更新
  20. * @return UpdateDLLRetInfo
  21. */
  22. public static function Check() {
  23. $clientVer = self::GetClientVersion(); # 客户端基带版本号
  24. $platform = self::GetClientPlatform(); # 客户端平台(安卓/IOS)
  25. $ret = ""; # 返回值
  26. if ($platform != PLAT) { # 防御客户端未正确设置plat,访问错误的服务器地址
  27. return "检查更新失败!(渠道不匹配 $platform - " . PLAT . ")";
  28. }
  29. $url = config::CDN_host() . "/dll/" . self::Ver_file . "?ts=" . now(); # dll版本
  30. list('result' => $ok, 'msg' => $newVer) = HttpUtil::makeRequest($url, array(), array(), array(), "get"); # 取CDN上版本信息
  31. if ($ok) {
  32. if ((intval($newVer) - $clientVer) > 0) { # # 修订版本号不一致, 提示更新
  33. $ret = config::CDN_host() . "/dll/" . self::DLL_file . "?ver=" . $newVer;
  34. } else {
  35. $ret = "平安无事";
  36. }
  37. } else { # 检查更新失败
  38. $ret = "检查更新失败!";
  39. }
  40. return $ret; # 返回
  41. }
  42. /**
  43. * 读取参数中的客户端dll版本
  44. * @return int
  45. */
  46. static function GetClientVersion() {
  47. $valueMap = query_paras(); // array
  48. // $valueMap = array('clientVer' => 2, 'plat' => 'dev_wg');
  49. if (!is_array($valueMap)) {
  50. exit("无参数");
  51. }
  52. $clientVer = "";
  53. if (isset($valueMap["clientVer"])) {
  54. $clientVer = urldecode($valueMap['clientVer']);
  55. } else {
  56. exit("缺少参数 'clientVer'!");
  57. }
  58. return intval($clientVer);
  59. }
  60. /**
  61. * 读取参数中的客户端平台(and/and_hw/and_yyb/dev/dev_wg)
  62. * @return string
  63. */
  64. static function GetClientPlatform() {
  65. $valueMap = query_paras(); // array
  66. // $valueMap = array('clientVer' => 22, 'plat' => 'dev_wg');
  67. if (!is_array($valueMap)) {
  68. exit("无参数");
  69. }
  70. $plat = "";
  71. if (isset($valueMap["plat"])) {
  72. $plat = urldecode($valueMap['plat']);
  73. } else {
  74. exit("缺少参数 'plat'!");
  75. }
  76. return $plat;
  77. }
  78. }
  79. echo(CheckUpdateDLL::Check()); # 打印json给客户端