BeiDouMS / BeiDou-Server

Global MapleStory Server BeiDou(冒险岛GMS服务端北斗)
GNU Affero General Public License v3.0
77 stars 58 forks source link

gm命令初始化移入Service层 #161

Closed cbwsnr closed 2 weeks ago

cbwsnr commented 3 weeks ago

Service层用于后续将gm命令的在数据库进行增删改查。

pwnhub1024 commented 3 weeks ago

CommandInfoService.java 里面的重复set代码是不是改成这样会简洁一些 CommandInfoDO.class加一个构造函数 public class CommandInfoDO { private String syntax; private int level; private String commandClassName;

public CommandInfoDO(String syntax, int level, String commandClassName) {
    this.syntax = syntax;
    this.level = level;
    this.commandClassName = commandClassName;
}

// 其他 getter 和 setter 方法

} 方法体调用 public List getLv0Commands() { return List.of(new CommandInfoDO("help", 0, "HelpCommand")); }

pwnhub1024 commented 3 weeks ago
public List<CommandInfoDO> getLv0Commands() {
    List<CommandInfoDO> results = new ArrayList<>();

    // 使用辅助方法添加命令
    addCommand(results, "help", 0, "HelpCommand");
    addCommand(results, "commands", 0, "HelpCommand");
    addCommand(results, "droplimit", 0, "DropLimitCommand");

    return results;
}

private void addCommand(List<CommandInfoDO> results, String syntax, int level, String commandClassName) {
    CommandInfoDO commandInfoDO = new CommandInfoDO();
    commandInfoDO.setSyntax(syntax);
    commandInfoDO.setLevel(level);
    commandInfoDO.setCommandClassName(commandClassName);
    results.add(commandInfoDO);
}

或者这样子,后续如果要扩展也不用复制重复的new CommandInfoDO()

cbwsnr commented 3 weeks ago

好的。defaultLevel这个字段要放到构造函数中。后续从数据库读取的话,这些重复代码都会删掉

pwnhub1024 commented 3 weeks ago

IntStream.rangeClosed(0, 6) .mapToObj(i -> "org.gms.client.command.commands.gm" + i) .forEach(packageName -> commandClassList.addAll(getPackageClasses(packageName))); 反正gm包是0-6有序的 不如这样子

cbwsnr commented 3 weeks ago

数据库指令表脚本源自heaven-ms-nap 2.x里的sql脚本,对表名和字段名进行了修改。原sql脚本里的指令在北斗项目里不存在。