QQBot/src/main/java/com/yutou/qqbot/QQNumberManager.java
2024-01-20 17:39:40 +08:00

163 lines
4.9 KiB
Java

package com.yutou.qqbot;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.yutou.qqbot.utlis.Log;
import com.yutou.qqbot.utlis.RedisTools;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class QQNumberManager {
private static QQNumberManager manager;
private QQNumberManager() {
}
public static QQNumberManager getManager() {
if (manager == null) {
manager = new QQNumberManager();
}
return manager;
}
public void addNumber(Long qq, boolean isGroup) {
if (RedisTools.exists(qq, null)) {
return;
}
JSONObject json = new JSONObject();
json.put("group", isGroup);
json.put("power", new JSONArray());
json.put("model", new JSONArray());
RedisTools.set(qq, json.toJSONString());
}
public List<Long> getNumber() {
List<Long> list = new ArrayList<>();
Jedis jedis = RedisTools.getRedis();
jedis.select(RedisTools.QQBOT_USER);
Set<String> set = jedis.keys("*");
for (String s : set) {
try {
list.add(Long.parseLong(s));
} catch (Exception ignored) {
}
}
jedis.close();
return list;
}
public boolean addPower(Long qq, String power) {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("power");
array.add(power);
json.put("power", array);
return RedisTools.set(qq, json.toJSONString());
}
return false;
}
public List<String> getPower(Long qq) {
List<String> list = new ArrayList<>();
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("power");
for (Object power : array) {
list.add((String) power);
}
return list;
}
return list;
}
public List<String> getUseModel(long qq) {
List<String> list = new ArrayList<>();
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("model");
for (Object power : array) {
list.add((String) power);
}
return list;
}
return list;
}
public boolean delPower(Long qq, String power) {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("power");
array.remove(power);
json.put("power", array);
return RedisTools.set(qq, json.toJSONString());
}
return false;
}
public boolean addUseModel(Long qq, Class<?> modelClass) {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("model");
array.add(modelClass.getName());
json.put("model", array);
return RedisTools.set(qq, json.toJSONString());
}
return false;
}
public boolean delUseModel(Long qq, Class<?> modelClass) {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("model");
array.remove(modelClass.getName());
json.put("model", array);
return RedisTools.set(qq, json.toJSONString());
}
return false;
}
public boolean isExistsPower(Long qq, String... power) {
//1
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("power");
for (String key : power) {
if (!array.contains(key)) {
return false;
}
}
return true;
}
return false;
}
public boolean isGroup(Long qq) {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
return json.getBooleanValue("group");
}
return false;
}
public boolean isUseModel(Long qq, Class<?> modelClass) {
try {
if (RedisTools.exists(qq, null)) {
JSONObject json = JSON.parseObject(RedisTools.get(qq));
JSONArray array = json.getJSONArray("model");
return array.contains(modelClass.getName());
}
} catch (Exception e) {
e.printStackTrace();
Log.i("isUseModel", qq + " " + modelClass.getName());
}
return false;
}
}