diff --git a/app/Service/v3/Implementations/HelperService.php b/app/Service/v3/Implementations/HelperService.php index 72e138d..5458e86 100644 --- a/app/Service/v3/Implementations/HelperService.php +++ b/app/Service/v3/Implementations/HelperService.php @@ -53,4 +53,52 @@ class HelperService implements HelperServiceInterface return $str; } + + /* + * 版本号比较 by sam 20170412 + * @param $version1 版本A 如:5.3.2 + * @param $version2 版本B 如:5.3.0 + * @return int -1版本A小于版本B , 0版本A等于版本B, 1版本A大于版本B + * + * 版本号格式注意: + * 1.要求只包含:点和大于等于0小于等于2147483646的整数 的组合 + * 2.boole型 true置1,false置0 + * 3.不设位默认补0计算,如:版本号5等于版号5.0.0 + * 4.不包括数字 或 负数 的版本号 ,统一按0处理 + * + * @example: + * if (versionCompare('5.2.2','5.3.0')<0) { + * echo '版本1小于版本2'; + * } + */ + function versionCompare($versionA,$versionB) + { + if ($versionA > 2147483646 || $versionB > 2147483646) { + throw new Exception('版本号,位数太大暂不支持!', '101'); + } + $dm = '.'; + $verListA = explode($dm, (string)$versionA); + $verListB = explode($dm, (string)$versionB); + + $len = max(count($verListA), count($verListB)); + $i = -1; + while ($i++ < $len) { + $verListA[$i] = intval(@$verListA[$i]); + if ($verListA[$i] < 0) { + $verListA[$i] = 0; + } + $verListB[$i] = intval(@$verListB[$i]); + if ($verListB[$i] < 0) { + $verListB[$i] = 0; + } + + if ($verListA[$i] > $verListB[$i]) { + return 1; + } else if ($verListA[$i] < $verListB[$i]) { + return -1; + } else if ($i == ($len - 1)) { + return 0; + } + } + } } \ No newline at end of file diff --git a/app/Service/v3/Implementations/TabsService.php b/app/Service/v3/Implementations/TabsService.php index 2438937..c35e7ff 100644 --- a/app/Service/v3/Implementations/TabsService.php +++ b/app/Service/v3/Implementations/TabsService.php @@ -4,10 +4,14 @@ namespace App\Service\v3\Implementations; use App\Constants\v3\Tabs; use App\Service\v3\Interfaces\TabsServiceInterface; - +use Hyperf\Di\Annotation\Inject; class TabsService implements TabsServiceInterface { - + /** + * @Inject + * @var HelperService + */ + protected $helperService; public function do() { // TODO: Implement do() method. @@ -25,7 +29,8 @@ class TabsService implements TabsServiceInterface public function allForAppletIndex($version) { - if($version == '3.0.12'){ + $version = $this->helperService->versionCompare($version,'3.0.12'); + if($version >= 0){ return [ ['tab' => Tabs::APPLET_INDEX_STORE, 'title' => '推荐店铺', 'subtitle' => '物美价廉', 'badge' => '', 'bg_color' => '#FF0000', 'font_color' => '#FFFFFF'], ['tab' => Tabs::APPLET_INDEX_RECOMMEND, 'title' => '猜你喜欢', 'subtitle' => '我是你的菜', 'badge' => '', 'bg_color' => '#FF0000', 'font_color' => '#FFFFFF'],