238 lines
7.0 KiB
Python
238 lines
7.0 KiB
Python
import sqlite3
|
||
import datetime
|
||
import os
|
||
|
||
#添加用户
|
||
def add():
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
adminx=input("用户名:")
|
||
#用户名重复验证
|
||
while search(adminx,0)=="":
|
||
print("该用户已存在,请重新输入")
|
||
adminx=input("用户名:")
|
||
numberx=input("手机号码:")
|
||
dayx=int(input("代理天数:"))
|
||
gamex=input("关卡号:")
|
||
passwordx=input("密码:")
|
||
#应用更新
|
||
cur.execute("INSERT INTO adminx(admin,number,day,status,last,game,password) VALUES('%s','%s',%d,'y','2000-01-01','%s','%s')" %(adminx,numberx,dayx,gamex,passwordx))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
return "操作成功"
|
||
|
||
#删除用户信息
|
||
def delete(id):
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
#检查用户是否存在
|
||
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
||
data=cur.fetchall()
|
||
if len(data)==0:
|
||
return "未找到"+id
|
||
#应用更新
|
||
cur.execute("DELETE FROM adminx WHERE admin='%s'" %(id))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
return "成功删除"+id
|
||
|
||
#检索用户信息与配置
|
||
def search(id,book):
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
#处理MAA路径查询
|
||
if id=="maa":
|
||
cur.execute("SELECT * FROM setting WHERE True")
|
||
pathx=cur.fetchall()
|
||
if len(pathx)>0:
|
||
return pathx[0][0]
|
||
else:
|
||
return "MAA路径未设置"
|
||
#处理用户查询与全部信息查询
|
||
if id=="all":
|
||
cur.execute("SELECT * FROM adminx WHERE True")
|
||
else:
|
||
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
||
data=cur.fetchall()
|
||
if id=="all":
|
||
cur.execute("SELECT * FROM setting WHERE True")
|
||
pathx=cur.fetchall()
|
||
if len(pathx)>0:
|
||
print("\nMAA路径:"+pathx[0][0])
|
||
else:
|
||
print("\nMAA路径未设置")
|
||
cur.close()
|
||
db.close()
|
||
data=[list(row) for row in data]
|
||
if len(data)>0:
|
||
#转译执行情况、用户状态,对全部信息查询隐去密码
|
||
curdate=datetime.date.today()
|
||
curdate=curdate.strftime('%Y-%m-%d')
|
||
for i in range(len(data)):
|
||
if data[i][4]==curdate:
|
||
data[i][4]="今日已执行"
|
||
else:
|
||
data[i][4]="今日未执行"
|
||
if data[i][3]=='y':
|
||
data[i][3]="启用"
|
||
else:
|
||
data[i][3]="禁用"
|
||
if id=="all":
|
||
data[i][6]="******"
|
||
#制表输出
|
||
if book==1:
|
||
print('')
|
||
print(unit("用户名",15),unit("手机号码",12),unit("代理天数",8),unit("状态",4),unit("执行情况",10),unit("关卡",10),unit("密码",25))
|
||
for i in range(len(data)):
|
||
print(unit(data[i][0],15),unit(data[i][1],12),unit(data[i][2],8),unit(data[i][3],4),unit(data[i][4],10),unit(data[i][5],10),unit(data[i][6],25))
|
||
return ""
|
||
elif id=="all":
|
||
return "当前没有用户记录"
|
||
else:
|
||
return "未找到"+id
|
||
|
||
#续期
|
||
def renewal(readxx):
|
||
#提取用户名与续期时间
|
||
for i in range(len(readxx)):
|
||
if readxx[i]==' ':
|
||
id=readxx[:i]
|
||
dayp=int(readxx[i+1:])
|
||
break
|
||
#检查用户是否存在
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
||
data=cur.fetchall()
|
||
if len(data)==0:
|
||
return "未找到"+id
|
||
#应用更新
|
||
cur.execute("UPDATE adminx SET day=%d WHERE admin='%s'" %(data[0][2]+dayp,id))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
return '成功更新'+id+'的代理天数至'+str(data[0][2]+dayp)+'天'
|
||
|
||
#用户状态配置
|
||
def turn(id,t):
|
||
#检查用户是否存在
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
||
data=cur.fetchall()
|
||
if len(data)==0:
|
||
return "未找到"+id
|
||
#应用更新
|
||
if t=='y' or t=='n':
|
||
cur.execute("UPDATE adminx SET status='%s' WHERE admin='%s'" %(t,id))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
if t=='y':
|
||
return '已启用'+id
|
||
else:
|
||
return '已禁用'+id
|
||
|
||
#修改刷取关卡
|
||
def gameid(readxx):
|
||
#提取用户名与修改值
|
||
for i in range(len(readxx)):
|
||
if readxx[i]==' ':
|
||
id=readxx[:i]
|
||
gamep=readxx[i+1:]
|
||
break
|
||
#检查用户是否存在
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
cur.execute("SELECT * FROM adminx WHERE admin='%s'" %(id))
|
||
data=cur.fetchall()
|
||
if len(data)==0:
|
||
return "未找到"+id
|
||
#导入与应用特殊关卡规则
|
||
games={}
|
||
with open('data/gameid.txt',encoding='utf-8') as f:
|
||
gameids=f.readlines()
|
||
for i in range(len(gameids)):
|
||
for j in range(len(gameids[i])):
|
||
if gameids[i][j]==':':
|
||
gamein=gameids[i][:j]
|
||
gameout=gameids[i][j+1:]
|
||
break
|
||
games[gamein]=gameout.strip()
|
||
if gamep in games:
|
||
gamep=games[gamep]
|
||
#应用更新
|
||
cur.execute("UPDATE adminx SET game='%s' WHERE admin='%s'" %(gamep,id))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
return '成功更新'+id+'的关卡为'+gamep
|
||
|
||
#设置MAA路径
|
||
def setpath(pathx):
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
cur.execute("SELECT * FROM setting WHERE True")
|
||
pathold=cur.fetchall()
|
||
if len(pathold)>0:
|
||
cur.execute("UPDATE setting SET path='%s' WHERE True" %(pathx))
|
||
else:
|
||
cur.execute("INSERT INTO setting(path) VALUES('%s')" %(pathx))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
return "MAA路径已设置为"+pathx
|
||
|
||
#统一制表单元
|
||
def unit(x,m):
|
||
#字母与连接符占1位,中文占2位
|
||
x=str(x)
|
||
n=0
|
||
for i in x:
|
||
if 'a'<=i<='z' or 'A'<=i<='Z' or '0'<=i<='9' or i=='_' or i=='-':
|
||
n+=1
|
||
return ' '+x+' '*(m-2*len(x)+n)
|
||
|
||
#初期检查
|
||
DATABASE="data/data.db"
|
||
if not os.path.exists(DATABASE):
|
||
db=sqlite3.connect(DATABASE)
|
||
cur=db.cursor()
|
||
db.execute("CREATE TABLE adminx(admin text,number text,day int,status text,last date,game text,password text)")
|
||
db.execute("CREATE TABLE setting(path text)")
|
||
readx=input("首次启动,请设置MAA路径:")
|
||
cur.execute("INSERT INTO setting(path) VALUES('%s')" %(readx))
|
||
db.commit()
|
||
cur.close()
|
||
db.close()
|
||
|
||
#初始界面
|
||
print("Good evening!")
|
||
print(search("all",1))
|
||
|
||
#主程序
|
||
while True:
|
||
read=input()
|
||
if len(read)==0:
|
||
print("无法识别的输入")
|
||
elif read[0]=='+':
|
||
print(add())
|
||
elif read[0]=='-':
|
||
exit()
|
||
elif read[0]=='/':
|
||
print(setpath(read[1:]))
|
||
else:
|
||
if read[-1]=='?':
|
||
print(search(read[:-2],1))
|
||
elif read[-1]=='+':
|
||
print(renewal(read[:-2]))
|
||
elif read[-1]=='-':
|
||
print(delete(read[:-2]))
|
||
elif read[-1]=='~':
|
||
print(gameid(read[:-2]))
|
||
elif read[-1]=='y' or read[-1]=='n':
|
||
print(turn(read[:-2],read[-1]))
|
||
else:
|
||
print("无法识别的输入") |