history.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. """
  2. 历史记录工具函数
  3. """
  4. from datetime import datetime
  5. from app.utils.timezone import beijing_now
  6. from sqlalchemy.orm import Session
  7. from app.models import (
  8. Admin, AdminHis,
  9. Announcement, AnnouncementHis,
  10. APIKey, APIKeyHis,
  11. APILog, APILogHis,
  12. Card, CardHis,
  13. KeyRotationConfig, KeyRotationConfigHis,
  14. OperationLog, OperationLogHis,
  15. RechargeRecord, RechargeRecordHis,
  16. Software, SoftwareHis,
  17. SteamAccount, SteamAccountHis,
  18. User, UserHis
  19. )
  20. def create_admin_history(db: Session, admin: Admin, operation: str):
  21. """创建管理员历史记录"""
  22. his_record = AdminHis(
  23. id=admin.id,
  24. username=admin.username,
  25. password=admin.password,
  26. real_name=admin.real_name,
  27. email=admin.email,
  28. role=admin.role,
  29. last_login_time=admin.last_login_time,
  30. last_login_ip=admin.last_login_ip,
  31. status=admin.status,
  32. is_deleted=admin.is_deleted,
  33. created_at=admin.created_at,
  34. updated_at=admin.updated_at,
  35. his_created_at=beijing_now(),
  36. his_operation=operation
  37. )
  38. db.add(his_record)
  39. def create_announcement_history(db: Session, announcement: Announcement, operation: str):
  40. """创建公告历史记录"""
  41. his_record = AnnouncementHis(
  42. id=announcement.id,
  43. title=announcement.title,
  44. content=announcement.content,
  45. priority=announcement.priority,
  46. is_active=announcement.is_active,
  47. publish_time=announcement.publish_time,
  48. is_deleted=announcement.is_deleted,
  49. created_at=announcement.created_at,
  50. updated_at=announcement.updated_at,
  51. his_created_at=beijing_now(),
  52. his_operation=operation
  53. )
  54. db.add(his_record)
  55. def create_api_key_history(db: Session, api_key: APIKey, operation: str):
  56. """创建API密钥历史记录"""
  57. his_record = APIKeyHis(
  58. id=api_key.id,
  59. public_key=api_key.public_key,
  60. private_key=api_key.private_key,
  61. key_version=api_key.key_version,
  62. is_active=api_key.is_active,
  63. is_deleted=api_key.is_deleted,
  64. created_at=api_key.created_at,
  65. expire_at=api_key.expire_at,
  66. his_created_at=beijing_now(),
  67. his_operation=operation
  68. )
  69. db.add(his_record)
  70. def create_api_log_history(db: Session, api_log: APILog, operation: str):
  71. """创建API日志历史记录"""
  72. his_record = APILogHis(
  73. id=api_log.id,
  74. user_id=api_log.user_id,
  75. endpoint=api_log.endpoint,
  76. method=api_log.method,
  77. request_data=api_log.request_data,
  78. response_data=api_log.response_data,
  79. ip_address=api_log.ip_address,
  80. user_agent=api_log.user_agent,
  81. response_code=api_log.response_code,
  82. execution_time=api_log.execution_time,
  83. is_deleted=api_log.is_deleted,
  84. created_at=api_log.created_at,
  85. his_created_at=beijing_now(),
  86. his_operation=operation
  87. )
  88. db.add(his_record)
  89. def create_card_history(db: Session, card: Card, operation: str):
  90. """创建卡密历史记录"""
  91. his_record = CardHis(
  92. id=card.id,
  93. card_code=card.card_code,
  94. software_code=card.software_code,
  95. days=card.days,
  96. discount=card.discount,
  97. user_id=card.user_id,
  98. activated_at=card.activated_at,
  99. expire_time=card.expire_time,
  100. status=card.status,
  101. is_deleted=card.is_deleted,
  102. created_at=card.created_at,
  103. updated_at=card.updated_at,
  104. his_created_at=beijing_now(),
  105. his_operation=operation
  106. )
  107. db.add(his_record)
  108. def create_key_rotation_config_history(db: Session, config: KeyRotationConfig, operation: str):
  109. """创建密钥轮换配置历史记录"""
  110. his_record = KeyRotationConfigHis(
  111. id=config.id,
  112. rotation_days=config.rotation_days,
  113. is_auto_rotate=config.is_auto_rotate,
  114. last_rotation_time=config.last_rotation_time,
  115. next_rotation_time=config.next_rotation_time,
  116. is_deleted=config.is_deleted,
  117. updated_at=config.updated_at,
  118. his_created_at=beijing_now(),
  119. his_operation=operation
  120. )
  121. db.add(his_record)
  122. def create_operation_log_history(db: Session, operation_log: OperationLog, operation: str):
  123. """创建操作日志历史记录"""
  124. his_record = OperationLogHis(
  125. id=operation_log.id,
  126. admin_id=operation_log.admin_id,
  127. module=operation_log.module,
  128. action=operation_log.action,
  129. description=operation_log.description,
  130. old_data=operation_log.old_data,
  131. new_data=operation_log.new_data,
  132. ip_address=operation_log.ip_address,
  133. is_deleted=operation_log.is_deleted,
  134. created_at=operation_log.created_at,
  135. his_created_at=beijing_now(),
  136. his_operation=operation
  137. )
  138. db.add(his_record)
  139. def create_recharge_record_history(db: Session, recharge_record: RechargeRecord, operation: str):
  140. """创建充值记录历史记录"""
  141. his_record = RechargeRecordHis(
  142. id=recharge_record.id,
  143. user_id=recharge_record.user_id,
  144. card_id=recharge_record.card_id,
  145. software_code=recharge_record.software_code,
  146. days=recharge_record.days,
  147. amount=recharge_record.amount,
  148. expire_time_before=recharge_record.expire_time_before,
  149. expire_time_after=recharge_record.expire_time_after,
  150. is_deleted=recharge_record.is_deleted,
  151. created_at=recharge_record.created_at,
  152. his_created_at=beijing_now(),
  153. his_operation=operation
  154. )
  155. db.add(his_record)
  156. def create_software_history(db: Session, software: Software, operation: str):
  157. """创建软件历史记录"""
  158. his_record = SoftwareHis(
  159. id=software.id,
  160. code=software.code,
  161. name=software.name,
  162. description=software.description,
  163. daily_price=software.daily_price,
  164. is_active=software.is_active,
  165. is_deleted=software.is_deleted,
  166. created_at=software.created_at,
  167. updated_at=software.updated_at,
  168. his_created_at=beijing_now(),
  169. his_operation=operation
  170. )
  171. db.add(his_record)
  172. def create_steam_account_history(db: Session, steam_account: SteamAccount, operation: str):
  173. """创建Steam账号历史记录"""
  174. his_record = SteamAccountHis(
  175. id=steam_account.id,
  176. user_id=steam_account.user_id,
  177. steam_username=steam_account.steam_username,
  178. steam_id=steam_account.steam_id,
  179. shared_secret=steam_account.shared_secret,
  180. identity_secret=steam_account.identity_secret,
  181. is_active=steam_account.is_active,
  182. last_used_time=steam_account.last_used_time,
  183. is_deleted=steam_account.is_deleted,
  184. created_at=steam_account.created_at,
  185. updated_at=steam_account.updated_at,
  186. his_created_at=beijing_now(),
  187. his_operation=operation
  188. )
  189. db.add(his_record)
  190. def create_user_history(db: Session, user: User, operation: str):
  191. """创建用户历史记录"""
  192. his_record = UserHis(
  193. id=user.id,
  194. username=user.username,
  195. password=user.password,
  196. email=user.email,
  197. machine_code=user.machine_code,
  198. card_id=user.card_id,
  199. expire_time=user.expire_time,
  200. last_login_time=user.last_login_time,
  201. last_login_ip=user.last_login_ip,
  202. status=user.status,
  203. is_deleted=user.is_deleted,
  204. created_at=user.created_at,
  205. updated_at=user.updated_at,
  206. his_created_at=beijing_now(),
  207. his_operation=operation
  208. )
  209. db.add(his_record)
  210. def create_operation_log(
  211. db: Session,
  212. admin_id: int,
  213. module: str,
  214. action: str,
  215. description: str,
  216. old_data: dict = None,
  217. new_data: dict = None,
  218. ip_address: str = None
  219. ):
  220. """创建操作日志记录"""
  221. import json
  222. from datetime import datetime
  223. # beijing_now already imported at module level
  224. operation_log = OperationLog(
  225. admin_id=admin_id,
  226. module=module,
  227. action=action,
  228. description=description,
  229. old_data=json.dumps(old_data, ensure_ascii=False) if old_data else None,
  230. new_data=json.dumps(new_data, ensure_ascii=False) if new_data else None,
  231. ip_address=ip_address,
  232. created_at=beijing_now()
  233. )
  234. db.add(operation_log)