每个 company 可对应多个 shop 。 因为每个 company 可存在一个特殊店铺,早期历史代码设计的 shop_id=99 (应该是觉得不会有人会开通超过 99 家店吧),并且不记录在表中。 现在有一个客户的店铺超过了 99 家,导致代码中大量判断 shop_id=99 的逻辑执行异常。
不止后端代码,而且客户端代码中也存在这样的逻辑判断。

每个 company 可对应多个 shop 。 因为每个 company 可存在一个特殊店铺,早期历史代码设计的 shop_id=99 (应该是觉得不会有人会开通超过 99 家店吧),并且不记录在表中。 现在有一个客户的店铺超过了 99 家,导致代码中大量判断 shop_id=99 的逻辑执行异常。
不止后端代码,而且客户端代码中也存在这样的逻辑判断。
1 javalaw2010 Jan 30 先把店铺拆分到两个 company 中去,再想办法解决历史遗留问题 |
2 zhengfan2016 Jan 30 |
3 bootvue Jan 30 shop_id 如何生成的 baseline 从 100 开启 |
4 liyanggyang Jan 30 @zhengfan2016 我觉得这是最好的办法 |
5 shitcode OP @javalaw2010 变成两个 company 也会影响到业务,现在最低成本的方式确实是二楼的做法 |
6 shitcode OP @zhengfan2016 现在确实考虑这么干 |
7 zhhbstudio Jan 30 @zhengfan2016 这就是天才吗?哈哈哈 还是说以前遇到过 |
8 xiaowoli Jan 30 (应该是觉得不会有人会开通超过 99 家店吧) 你们公司怪励志的啊 |
10 Gilfoyle26 Jan 30 为啥一定要从代码的方向来解决呢?超过 99 给他开 2 个账号不就可以了 |
11 ghm2mail Jan 30 shop = -1 ,-2,-3..... |
12 justseemore Jan 30 |
13 justseemore Jan 30 @justseemore #12 就怕不光= 还有>= |
14 javalaw2010 Jan 30 @shitcode #5 考虑到如果有代码逻辑是 if(shop_id >= 99) 就危险了。 |
15 montaro2017 Jan 30 |
16 dcdlove Jan 30 shop 表的 种子升级到四位数 1000 ,然后历史所有 shop_id 加两个 00 |
17 shitcode OP @javalaw2010 这个确实是没有,都是判断 99 的,但是也说不好真存在在哪个角落 |
18 meteora0tkvo Jan 30 本来应该加多一个字段去标识判断是否是特殊店铺,而后端偷懒搞一个特殊 id 去判断 |
19 leecqan Jan 30 其实我没看懂,为啥会有异常,有大佬解释一下么 |
20 noahjsn Jan 30 @meteora0tkvo 《论屎山代码的形成》《论后期偿还技术债的痛苦》 |
21 konakona Jan 30 |
22 unused Jan 30 特殊店铺 ID 为什么不用 0 或者 1 呢 |
23 YTNET PRO 所有的 99 改成 999 呢 把这个问题留个下一个人 |
24 ragnaroks Jan 30 我靠,我也曾经遇到过这种问题,也是类商城系统,也是 99 是特殊值。是不是有哪个培训班的老师喜欢用 99 当特殊值啊,明明 Int32.MaxValue 或者 -1 之类的更合理 |
25 irockytan Jan 31 via iPhone @xiaowoli 我 15 年干那家公司,也是电商,接手的代码里面订单号的逻辑是按月加上一个 6 位数字,也是递增,后面业务量起来,一个月超过 100 万订单,于是大量订单号重复 |
26 gongym Jan 31 via Android @leecqan 店铺 id 是自增的,特殊店铺 id 是 99 ,特殊店铺有特殊逻辑,但是有一个公司创建了超过 99 家店,导致 id 为 99 的是正常店占了特殊店铺的 id ,特殊逻辑就有问题了(执行特殊逻辑的判断就是 id=99 ) |
28 skallz Jan 31 这种特殊逻辑蛮多的,包括 2099 年或者 3000 年被视为永久一样,只是一般我们写这种逻辑不敢把数字写的特别小,哈哈 |
29 syboy Feb 1 via Android @zhengfan2016 很显然他这个已经把 99 当成普通店铺了 |