| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- # -*- 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
|