|
@@ -472,40 +472,40 @@ class SysMuneCreateForm(BaseModel):
|
|
visible:str
|
|
visible:str
|
|
layer_template:str
|
|
layer_template:str
|
|
|
|
|
|
|
|
+
|
|
@router.post('/create')
|
|
@router.post('/create')
|
|
async def create(
|
|
async def create(
|
|
- form_data: SysMuneCreateForm,
|
|
|
|
- db: Session = Depends(get_db),
|
|
|
|
- body = Depends(remove_xss_json),
|
|
|
|
- user_id = Depends(valid_access_token)
|
|
|
|
|
|
+ form_data: SysMuneCreateForm,
|
|
|
|
+ db: Session = Depends(get_db),
|
|
|
|
+ body=Depends(remove_xss_json),
|
|
|
|
+ user_id=Depends(valid_access_token)
|
|
):
|
|
):
|
|
-
|
|
|
|
try:
|
|
try:
|
|
|
|
+ # 开始事务
|
|
|
|
+ db.begin()
|
|
|
|
+
|
|
|
|
+ # 创建新的菜单项
|
|
new_menu = SysMenu(
|
|
new_menu = SysMenu(
|
|
- menu_name = form_data.menuName,
|
|
|
|
- parent_id = form_data.parentId,
|
|
|
|
- order_num = form_data.orderNum,
|
|
|
|
- path = form_data.path,
|
|
|
|
- is_frame = int(form_data.isFrame),
|
|
|
|
- is_cache = int(form_data.isCache),
|
|
|
|
- menu_type = form_data.menuType,
|
|
|
|
- visible = form_data.visible,
|
|
|
|
- status = form_data.status,
|
|
|
|
- icon = form_data.icon,
|
|
|
|
- component= form_data.component,
|
|
|
|
- perms=form_data.perms,
|
|
|
|
- query_param=form_data.queryParam,
|
|
|
|
- create_by = user_id
|
|
|
|
- )
|
|
|
|
|
|
+ menu_name=form_data.menuName,
|
|
|
|
+ parent_id=form_data.parentId,
|
|
|
|
+ order_num=form_data.orderNum,
|
|
|
|
+ path=form_data.path,
|
|
|
|
+ is_frame=int(form_data.isFrame),
|
|
|
|
+ is_cache=int(form_data.isCache),
|
|
|
|
+ menu_type=form_data.menuType,
|
|
|
|
+ visible=form_data.visible,
|
|
|
|
+ status=form_data.status,
|
|
|
|
+ icon=form_data.icon,
|
|
|
|
+ component=form_data.component,
|
|
|
|
+ perms=form_data.perms,
|
|
|
|
+ query_param=form_data.queryParam,
|
|
|
|
+ create_by=user_id
|
|
|
|
+ )
|
|
db.add(new_menu)
|
|
db.add(new_menu)
|
|
- db.commit()
|
|
|
|
- db.refresh(new_menu)
|
|
|
|
-
|
|
|
|
- layer_id = new_menu.menu_id
|
|
|
|
- print(layer_id)
|
|
|
|
|
|
|
|
- new_menu1 = SysMenuLayer(
|
|
|
|
- menu_id = layer_id,
|
|
|
|
|
|
+ # 创建新的菜单层,此时还不能使用new_menu.menu_id,因为它还没有被赋值
|
|
|
|
+ new_menu_layer = SysMenuLayer(
|
|
|
|
+ menu_id=None, # 先设置为None,稍后更新
|
|
menu_name=form_data.menuName,
|
|
menu_name=form_data.menuName,
|
|
parent_id=form_data.parentId,
|
|
parent_id=form_data.parentId,
|
|
order_num=form_data.orderNum,
|
|
order_num=form_data.orderNum,
|
|
@@ -522,16 +522,26 @@ async def create(
|
|
create_by=user_id,
|
|
create_by=user_id,
|
|
layer_template=form_data.layer_template
|
|
layer_template=form_data.layer_template
|
|
)
|
|
)
|
|
- db.add(new_menu)
|
|
|
|
- db.add(new_menu1)
|
|
|
|
|
|
+ db.add(new_menu_layer)
|
|
|
|
+
|
|
|
|
+ # 提交事务之前刷新new_menu以确保menu_id被数据库生成
|
|
|
|
+ db.flush() # 使用flush而不是commit,这样可以保存数据但不结束事务
|
|
|
|
+ db.refresh(new_menu) # 刷新new_menu对象以获取数据库生成的menu_id
|
|
|
|
+ new_menu_layer.menu_id = new_menu.menu_id # 现在可以设置new_menu_layer的menu_id了
|
|
|
|
+
|
|
|
|
+ # 如果需要,可以在这里再次刷新new_menu_layer,但通常不是必需的
|
|
|
|
+ # db.refresh(new_menu_layer)
|
|
|
|
+
|
|
|
|
+ # 提交事务
|
|
db.commit()
|
|
db.commit()
|
|
- db.refresh(new_menu)
|
|
|
|
|
|
+
|
|
return {
|
|
return {
|
|
"code": 200,
|
|
"code": 200,
|
|
- "data": None,
|
|
|
|
|
|
+ "data": new_menu_layer.menu_id, # 返回新创建的SysMenuLayer的ID
|
|
"msg": "操作成功"
|
|
"msg": "操作成功"
|
|
}
|
|
}
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
|
+ # 如果发生异常,回滚事务
|
|
db.rollback()
|
|
db.rollback()
|
|
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e))
|
|
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e))
|
|
|
|
|
|
@@ -562,6 +572,7 @@ async def update(
|
|
):
|
|
):
|
|
|
|
|
|
try:
|
|
try:
|
|
|
|
+ db.begin()
|
|
query = db.query(SysMenu)
|
|
query = db.query(SysMenu)
|
|
query = query.filter(SysMenu.menu_id == body['menuId'])
|
|
query = query.filter(SysMenu.menu_id == body['menuId'])
|
|
query = query.filter(SysMenu.del_flag != '2')
|
|
query = query.filter(SysMenu.del_flag != '2')
|
|
@@ -604,7 +615,7 @@ async def update(
|
|
# setattr(menu_to_update, field, value)
|
|
# setattr(menu_to_update, field, value)
|
|
#
|
|
#
|
|
# db.add(menu_to_update)
|
|
# db.add(menu_to_update)
|
|
- db.commit()
|
|
|
|
|
|
+ # db.commit()
|
|
|
|
|
|
|
|
|
|
queryLayer = db.query(SysMenuLayer)
|
|
queryLayer = db.query(SysMenuLayer)
|
|
@@ -667,6 +678,7 @@ async def delete(
|
|
user_id = Depends(valid_access_token)
|
|
user_id = Depends(valid_access_token)
|
|
):
|
|
):
|
|
try:
|
|
try:
|
|
|
|
+ db.begin()
|
|
query = db.query(SysMenu)
|
|
query = db.query(SysMenu)
|
|
query = query.filter(SysMenu.menu_id == menu_id)
|
|
query = query.filter(SysMenu.menu_id == menu_id)
|
|
query = query.filter(SysMenu.del_flag != '2')
|
|
query = query.filter(SysMenu.del_flag != '2')
|
|
@@ -678,7 +690,7 @@ async def delete(
|
|
menu_to_delete.create_by = user_id
|
|
menu_to_delete.create_by = user_id
|
|
menu_to_delete.del_flag='2'
|
|
menu_to_delete.del_flag='2'
|
|
# db.delete(menu_to_delete)
|
|
# db.delete(menu_to_delete)
|
|
- db.commit()
|
|
|
|
|
|
+ # db.commit()
|
|
|
|
|
|
|
|
|
|
queryLayer = db.query(SysMenuLayer)
|
|
queryLayer = db.query(SysMenuLayer)
|