# -*- coding: utf-8 -*- # @Author : YY # @FileName: sys_compo_conf_mapper.py # @Time : 2025-12-22 04:49:51 from typing import List from datetime import datetime from flask import g, request from sqlalchemy import select, update, delete, func, or_ from ruoyi_admin.ext import db from ruoyi_common.domain.entity import SysCompoConf from ruoyi_system.domain.po import SysCompoConfPo from ruoyi_common.utils.base import Seq class SysCompoInfoConfMapper: """套餐配置表Mapper""" @staticmethod def select_compoinfo_conf_list(sys: SysCompoConf) -> List[SysCompoConf]: """ 查询套餐配置表列表 Args: sys (sys_compo_info_conf): 套餐配置表对象 Returns: List[sys_compo_info_conf]: 套餐配置表列表 """ try: # 构建查询条件 stmt = select(SysCompoConfPo) # 获取关键词搜索参数(从请求参数中获取) keyword = None try: if request and hasattr(request, 'args'): keyword = request.args.get('keyword', None) # 如果keyword是空字符串,转换为None if keyword == '': keyword = None except: pass # 如果request中没有,尝试从g对象获取 if keyword is None and "criterian_meta" in g and hasattr(g.criterian_meta, 'keyword'): keyword = getattr(g.criterian_meta, 'keyword', None) if keyword == '': keyword = None # 关键词模糊搜索(支持搜索分类索引、子类路径、属性列表) if keyword is not None and str(keyword).strip() != '': keyword_pattern = f"%{str(keyword).strip()}%" stmt = stmt.where( or_( SysCompoConfPo.module_index.like(keyword_pattern), SysCompoConfPo.category.like(keyword_pattern), SysCompoConfPo.attributes.like(keyword_pattern) ) ) if sys.conf_id is not None and sys.conf_id != '': stmt = stmt.where(SysCompoConfPo.conf_id == sys.conf_id) if sys.module_index is not None and sys.module_index != '': stmt = stmt.where(SysCompoConfPo.module_index == sys.module_index) if sys.category is not None and sys.category != '': stmt = stmt.where(SysCompoConfPo.category == sys.category) if sys.attributes is not None and sys.attributes != '': stmt = stmt.where(SysCompoConfPo.attributes == sys.attributes) if "criterian_meta" in g and g.criterian_meta.page: g.criterian_meta.page.stmt = stmt result = db.session.execute(stmt).scalars().all() return [SysCompoConf.model_validate(item) for item in result] if result else [] except Exception as e: print(f"查询套餐配置表列表出错: {e}") return [] @staticmethod def select_sys_compo_info_conf_by_id(conf_id: str) -> SysCompoConf: """ 根据ID查询套餐配置表 Args: conf_id (str): conf_id Returns: sys_compo_info_conf: 套餐配置表对象 """ try: result = db.session.get(SysCompoConfPo, conf_id) return SysCompoConf.model_validate(result) if result else None except Exception as e: print(f"根据ID查询套餐配置表出错: {e}") return None @staticmethod def insert_sys_compo_info_conf(sys: SysCompoConf) -> int: """ 新增套餐配置表 Args: sys (sys_compo_info_conf): 套餐配置表对象 Returns: int: 插入的记录数 """ try: now = datetime.now() new_po = SysCompoConfPo() # 如果 conf_id 为空,需要生成新的主键值(varchar类型,使用序列号生成) if sys.conf_id is None or sys.conf_id == "": # 使用序列号生成器生成字符串ID new_po.conf_id = Seq.get_seq_id("common") else: new_po.conf_id = sys.conf_id new_po.module_index = sys.module_index new_po.category = sys.category new_po.attributes = sys.attributes new_po.version = sys.version new_po.delete_flag = sys.delete_flag new_po.status = sys.status db.session.add(new_po) db.session.commit() sys.conf_id = new_po.conf_id return 1 except Exception as e: db.session.rollback() print(f"新增套餐配置表出错: {e}") return 0 @staticmethod def update_sys_compo_info_conf(sys: SysCompoConf) -> int: """ 修改套餐配置表 Args: sys (sys_compo_info_conf): 套餐配置表对象 Returns: int: 更新的记录数 """ try: existing = db.session.get(SysCompoConfPo, sys.conf_id) if not existing: return 0 now = datetime.now() # 主键不参与更新 existing.module_index = sys.module_index existing.category = sys.category existing.attributes = sys.attributes existing.version = sys.version existing.delete_flag = sys.delete_flag existing.status = sys.status db.session.commit() return 1 except Exception as e: db.session.rollback() print(f"修改套餐配置表出错: {e}") return 0 @staticmethod def delete_sys_compo_info_conf_by_ids(ids: List[str]) -> int: """ 批量删除套餐配置表 Args: ids (List[str]): ID列表 Returns: int: 删除的记录数 """ try: stmt = delete(SysCompoConfPo).where(SysCompoConfPo.conf_id.in_(ids)) result = db.session.execute(stmt) db.session.commit() return result.rowcount except Exception as e: db.session.rollback() print(f"批量删除套餐配置表出错: {e}") return 0