sys_compo_conf_mapper.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. # -*- coding: utf-8 -*-
  2. # @Author : YY
  3. # @FileName: sys_compo_conf_mapper.py
  4. # @Time : 2025-12-22 04:49:51
  5. from typing import List
  6. from datetime import datetime
  7. from flask import g, request
  8. from sqlalchemy import select, update, delete, func, or_
  9. from ruoyi_admin.ext import db
  10. from ruoyi_common.domain.entity import SysCompoConf
  11. from ruoyi_system.domain.po import SysCompoConfPo
  12. from ruoyi_common.utils.base import Seq
  13. class SysCompoInfoConfMapper:
  14. """套餐配置表Mapper"""
  15. @staticmethod
  16. def select_compoinfo_conf_list(sys: SysCompoConf) -> List[SysCompoConf]:
  17. """
  18. 查询套餐配置表列表
  19. Args:
  20. sys (sys_compo_info_conf): 套餐配置表对象
  21. Returns:
  22. List[sys_compo_info_conf]: 套餐配置表列表
  23. """
  24. try:
  25. # 构建查询条件
  26. stmt = select(SysCompoConfPo)
  27. # 获取关键词搜索参数(从请求参数中获取)
  28. keyword = None
  29. try:
  30. if request and hasattr(request, 'args'):
  31. keyword = request.args.get('keyword', None)
  32. # 如果keyword是空字符串,转换为None
  33. if keyword == '':
  34. keyword = None
  35. except:
  36. pass
  37. # 如果request中没有,尝试从g对象获取
  38. if keyword is None and "criterian_meta" in g and hasattr(g.criterian_meta, 'keyword'):
  39. keyword = getattr(g.criterian_meta, 'keyword', None)
  40. if keyword == '':
  41. keyword = None
  42. # 关键词模糊搜索(支持搜索分类索引、子类路径、属性列表)
  43. if keyword is not None and str(keyword).strip() != '':
  44. keyword_pattern = f"%{str(keyword).strip()}%"
  45. stmt = stmt.where(
  46. or_(
  47. SysCompoConfPo.module_index.like(keyword_pattern),
  48. SysCompoConfPo.category.like(keyword_pattern),
  49. SysCompoConfPo.attributes.like(keyword_pattern)
  50. )
  51. )
  52. if sys.conf_id is not None and sys.conf_id != '':
  53. stmt = stmt.where(SysCompoConfPo.conf_id == sys.conf_id)
  54. if sys.module_index is not None and sys.module_index != '':
  55. stmt = stmt.where(SysCompoConfPo.module_index == sys.module_index)
  56. if sys.category is not None and sys.category != '':
  57. stmt = stmt.where(SysCompoConfPo.category == sys.category)
  58. if sys.attributes is not None and sys.attributes != '':
  59. stmt = stmt.where(SysCompoConfPo.attributes == sys.attributes)
  60. if "criterian_meta" in g and g.criterian_meta.page:
  61. g.criterian_meta.page.stmt = stmt
  62. result = db.session.execute(stmt).scalars().all()
  63. return [SysCompoConf.model_validate(item) for item in result] if result else []
  64. except Exception as e:
  65. print(f"查询套餐配置表列表出错: {e}")
  66. return []
  67. @staticmethod
  68. def select_sys_compo_info_conf_by_id(conf_id: str) -> SysCompoConf:
  69. """
  70. 根据ID查询套餐配置表
  71. Args:
  72. conf_id (str): conf_id
  73. Returns:
  74. sys_compo_info_conf: 套餐配置表对象
  75. """
  76. try:
  77. result = db.session.get(SysCompoConfPo, conf_id)
  78. return SysCompoConf.model_validate(result) if result else None
  79. except Exception as e:
  80. print(f"根据ID查询套餐配置表出错: {e}")
  81. return None
  82. @staticmethod
  83. def insert_sys_compo_info_conf(sys: SysCompoConf) -> int:
  84. """
  85. 新增套餐配置表
  86. Args:
  87. sys (sys_compo_info_conf): 套餐配置表对象
  88. Returns:
  89. int: 插入的记录数
  90. """
  91. try:
  92. now = datetime.now()
  93. new_po = SysCompoConfPo()
  94. # 如果 conf_id 为空,需要生成新的主键值(varchar类型,使用序列号生成)
  95. if sys.conf_id is None or sys.conf_id == "":
  96. # 使用序列号生成器生成字符串ID
  97. new_po.conf_id = Seq.get_seq_id("common")
  98. else:
  99. new_po.conf_id = sys.conf_id
  100. new_po.module_index = sys.module_index
  101. new_po.category = sys.category
  102. new_po.attributes = sys.attributes
  103. new_po.version = sys.version
  104. new_po.delete_flag = sys.delete_flag
  105. new_po.status = sys.status
  106. db.session.add(new_po)
  107. db.session.commit()
  108. sys.conf_id = new_po.conf_id
  109. return 1
  110. except Exception as e:
  111. db.session.rollback()
  112. print(f"新增套餐配置表出错: {e}")
  113. return 0
  114. @staticmethod
  115. def update_sys_compo_info_conf(sys: SysCompoConf) -> int:
  116. """
  117. 修改套餐配置表
  118. Args:
  119. sys (sys_compo_info_conf): 套餐配置表对象
  120. Returns:
  121. int: 更新的记录数
  122. """
  123. try:
  124. existing = db.session.get(SysCompoConfPo, sys.conf_id)
  125. if not existing:
  126. return 0
  127. now = datetime.now()
  128. # 主键不参与更新
  129. existing.module_index = sys.module_index
  130. existing.category = sys.category
  131. existing.attributes = sys.attributes
  132. existing.version = sys.version
  133. existing.delete_flag = sys.delete_flag
  134. existing.status = sys.status
  135. db.session.commit()
  136. return 1
  137. except Exception as e:
  138. db.session.rollback()
  139. print(f"修改套餐配置表出错: {e}")
  140. return 0
  141. @staticmethod
  142. def delete_sys_compo_info_conf_by_ids(ids: List[str]) -> int:
  143. """
  144. 批量删除套餐配置表
  145. Args:
  146. ids (List[str]): ID列表
  147. Returns:
  148. int: 删除的记录数
  149. """
  150. try:
  151. stmt = delete(SysCompoConfPo).where(SysCompoConfPo.conf_id.in_(ids))
  152. result = db.session.execute(stmt)
  153. db.session.commit()
  154. return result.rowcount
  155. except Exception as e:
  156. db.session.rollback()
  157. print(f"批量删除套餐配置表出错: {e}")
  158. return 0