问题描述
之前不同账号组织来源只可接各自账号类型的游戏任务,表中以任务类型type字段区分,现提出需求:不同账号组织可以接受相同的任务。
原因分析
若只有少量的组织类型,以type字段,十进制数来区别即可,但当组织类型多起来,且任务所属混杂时,定义枚举来区别就很麻烦,因此需要一个更为简洁的方式。
解决方案
1、给每个组织定义类型并转成二进制数存入数据库,例如UU账号类型1,则该组织app_id为1,网通账号类型2,则app_id为10,以此类推。
2、给每个角色定义组织ID(app_id),如果角色1只能接UU任务,则将UU的app_id转为十进制数,等于1,如果角色2可接UU和网通两种类型的任务,则其app_id等于(1+10)转换为十进制数3
3、代码中通过位运算来判断角色上线后,可接哪些任务类型,例如角色A的app_id = 3,与UU、网通类型进行位运算并用if来判断:
if(3|1){ //可接UU任务 } // = 3
if(3|2){ //可接网通任务 } // = 3