一个版本更新的需求,一个服务端开发与2个产品+1个android的对决

有人说“用人不疑,疑人不用”,但是马云说“用人也得疑”。

在这个需求上,这个道理,提现的确实有点淋漓尽致。

产品的需求是这样的,“用户一直不更新到新版本,导致应用的部分功能不能使用,所以要来个强制更新。但是要给用户1天的冗余时间,在发版日期的基础上给出1天的时间,如果再不更新,就不让使用了”。

咋一看,好简单啊。于是产品负责人就去问android的老大,这个大概需要多久。各位可以忽略这个细节,因为产品不懂开发,不懂工作量估算,所以觉得谁可信就去问谁。这位老大是这么回复的,“这个就是服务端做,这个简单”。处于他是老大,这里就不吐槽了。

然后我写了几个小时的代码,让产品测试一下。这时候产品和android的老大都过来了,和我说“只要版本对比一下就好了,对吧?”,我本来是坐着回复了一句“需要和当前操作时间对比”,这3位先生不约而同的说,“怎么还要和当前操作时间对比呢,不对啊”。我一下就站起来了,我很讨厌那种不懂的人,成天瞎XX。

我给这3位普及了一下,我为什么要用当前操作时间,因为产品有给出1天时间冗余的概念。

首先是设计思路,

1. 我有一个每次发版的时间,这个目前存到数据库了,每次发版都要去更新一下,有点小麻烦

2. 客户端的所有请求,带着发版日期过来的,

3. 服务端在拦截器里拦截请求,如果是更新到最新日期,那么直接返回true,跳到对应的接口。

4. 如果是false,就要比较当前的操作日期,最新版发版日期+1,过了最新版发版日期+1,返回false,告诉客户端版本未更新

其次具体代码:

public boolean checkUserRelease(User user) {
    try {
        UserPlatinfo platinfo = userService.findPlatinfo(user.getFuid());
        if(!Constants.PACKAGE_DRIVER.equals(platinfo.getPkgName())) {
            return true;
        }
        VersionConfig versionConfig = versionConfigService.getVersionConfig();
        if (null != platinfo && null != versionConfig) {
            int latestRelease = versionConfig.getRelease();
            if(platinfo.getRelease() >= latestRelease) {//如果已经版本更新,可以正常使用
                return true;
            } else {
                Calendar calendar = Calendar.getInstance();//操作时间

                String latestReleaseStr = String.valueOf(latestRelease);
                if(latestReleaseStr.length() >= 8) {
                    int year = Integer.parseInt(latestReleaseStr.substring(0,4));
                    int month = Integer.parseInt(latestReleaseStr.substring(4,6));
                    int day = Integer.parseInt(latestReleaseStr.substring(6,8));

                    Calendar latestCalendar = Calendar.getInstance();
                    latestCalendar.set(year, month-1, day);
                    latestCalendar.add(Calendar.DAY_OF_MONTH, 1);

                    if (calendar.compareTo(latestCalendar) > 0) {
                        return false;
                    }
                }
            }
        }
    }catch (Exception e) {
        logger.error("检查版本号异常",e);
    }
    return true;
}

 

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页