GIT 源码 TINKPHP
快速创建模型CRUD源码
import os
import tkinter as tk
from tkinter import messagebox
#转小写
def toLowerCase(str):
"""
:type str: str
:rtype: str
"""
return "".join(chr(ord(c) + 32) if 65 <= ord(c) <= 90 else c for c in str)
#转表格式
def castTable(table):
input_str = table
output_str = ""
for char in input_str:
if char.isupper():
output_str += "_" + char.lower()
else:
output_str += char
output_str = output_str.lstrip("_")
return output_str
#转换驼峰模式
def castHump(table):
input_str = table
output_str = "".join(word.capitalize() for word in input_str.split("_"))
return output_str
#模型修改
def createModel(name):
current_dir = os.getcwd()
model=current_dir+"\\"+"app\model\\"+name+"Model.php"
lines=[]
f = open(model,"r",encoding="utf-8")
n=0
for line in f.readlines():
lines.append(line)
if n==12:
table=" protected $name = '"+castTable(name)+"';"+"\n"
lines.append(table)
n+=1
s=''.join(lines)
f=open(model,'w+',encoding='utf-8')
f.write(s)
f.close()
#控制器修改
def createController(name):
current_dir = os.getcwd()
controller=current_dir+"\\"+"app\controller\\"+name+".php"
lines=[]
f = open(controller,"r",encoding="utf-8")
n=0
controllLine=0
for line in f.readlines():
lines.append(line)
if n==5:
table="use app\service\\"+name+"Service;"+"\n"
lines.append(table)
n+=1
if line.find("//")>0:
controllLine+=1
if line.find("//")>0 and controllLine==1:
#index方法
index=" return "+name+"Service::index($request->param());"+"\n"
lines.append(index)
if line.find("//")>0 and controllLine==2:
#create方法
create=" return "+name+"Service::create($request->param());"+"\n"
lines.append(create)
if line.find("//")>0 and controllLine==5:
#edit方法
edit=" return "+name+"Service::update($request->param());"+"\n"
lines.append(edit)
if line.find("//")>0 and controllLine==7:
#delete方法
delete=" return "+name+"Service::delete($id);"+"\n"
lines.append(delete)
s=''.join(lines)
s=s.replace("index()", "index(Request $request)")
s=s.replace("create()", "create(Request $request)")
s=s.replace("edit($id)", "edit(Request $request)")
f=open(controller,'w+',encoding='utf-8')
f.write(s)
f.close()
#服务修改
def createService(name):
current_dir = os.getcwd()
service=current_dir+"\\"+"app\service\\"+name+"Service.php"
lines=[]
f = open(service,"r",encoding="utf-8")
n=0
serviceLine=0
end=0
for line in f.readlines():
lines.append(line)
if n==3:
table="use app\model\\"+name+"Model;"+"\n"
lines.append(table)
baseService="use app\BaseService;"+"\n"
lines.append(baseService)
n+=1
if line.find("//")>0:
serviceLine+=1
if end==1:
lines.append(" public static function index($data){"+"\n")
lines.append(" return self::baseList(new "+name+"Model(),$data);"+"\n")
lines.append(" }"+"\n")
lines.append(" public static function create($data){"+"\n")
lines.append(" return self::baseCreate(new "+name+"Model(),$data);"+"\n")
lines.append(" }"+"\n")
lines.append(" public static function update($data){"+"\n")
lines.append(" return self::baseUpdate(new "+name+"Model(),$data);"+"\n")
lines.append(" }"+"\n")
lines.append(" public static function delete($data){"+"\n")
lines.append(" return self::baseDelete(new "+name+"Model(),$data);"+"\n")
lines.append(" }"+"\n")
end=2
if line.find("//")>0 and serviceLine==2:
end=1
s=''.join(lines)
s=s.replace("\\think\\Service", "BaseService")
f=open(service,'w+',encoding='utf-8')
f.write(s)
f.close()
#创建路由
def createRoute(name):
current_dir = os.getcwd()
route=current_dir+"\\"+"route\\app.php"
lines=[]
f = open(route,"r",encoding="utf-8")
name=name[0].lower() + name[1:]
for line in f.readlines():
if line.find("结尾符")>0:
lines.append("Route::post('"+name+"/list', '"+name+"/index');"+"\n")
lines.append("Route::post('"+name+"/create', '"+name+"/create');"+"\n")
lines.append("Route::post('"+name+"/edit', '"+name+"/edit');"+"\n")
lines.append("Route::post('"+name+"/delete', '"+name+"/delete');"+"\n")
lines.append("//结尾符用作快速创建路由"+"\n")
else:
lines.append(line)
s=''.join(lines)
f=open(route,'w+',encoding='utf-8')
f.write(s)
f.close()
def button_click():
input_text = entry.get()
#转驼峰
input_text =castHump(input_text)
current_dir = os.getcwd()
#进入根目录
os.system("cd "+ current_dir)
#表名
#table="Test"
#执行命令
commandController="php think make:controller app\controller\\"+input_text
status=os.system(commandController)
commandModel="php think make:model app\model\\"+input_text+"Model"
statusModel=os.system(commandModel)
commandService="php think make:service app\service\\"+input_text+"Service"
statusService=os.system(commandService)
createModel(input_text)
createController(input_text)
createService(input_text)
#路由接口
createRoute(input_text)
messagebox.showinfo("提示", "执行完成")
# 创建主窗口
root = tk.Tk()
root.geometry("423x131")
root.title("快速创建模型")
# 创建输入框
entry = tk.Entry(root)
entry.pack()
# 创建按钮
button = tk.Button(root, text="点击", command=button_click)
button.pack()
# 运行主循环
root.mainloop()