__init__.py 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
  4. from common.security import valid_access_token
  5. from fastapi.responses import JSONResponse
  6. from utils.riskManagement_uitl import *
  7. from utils.ry_system_util import *
  8. from sqlalchemy.orm import Session
  9. from sqlalchemy import and_, or_
  10. from pydantic import BaseModel
  11. from datetime import datetime
  12. from database import get_db
  13. from typing import List
  14. from models import *
  15. from utils import *
  16. import traceback
  17. import json
  18. router = APIRouter()
  19. @router.get('/company/list')
  20. async def get_company_list(
  21. area_code: str = Query(None, description='区域代码'),
  22. keyword :str = Query(None, description='企业名称或企业负责人'),
  23. page: int = Query(1, gt=0, description='页码'),
  24. pageSize: int = Query(10, gt=0, description='每页条目数量'),
  25. db: Session = Depends(get_db),
  26. user_id = Depends(valid_access_token)
  27. ):
  28. try:
  29. # 构建查询
  30. query = db.query(CompanyManagementBaseInfo)
  31. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  32. # 应用查询条件
  33. if area_code:
  34. query = query.filter(CompanyManagementBaseInfo.district_code == area_code)
  35. if keyword:
  36. query = query.filter(or_(CompanyManagementBaseInfo.company_name.like(f'%{keyword}%'),
  37. CompanyManagementBaseInfo.responsible_person.like(f'%{keyword}%')))
  38. # 计算总条目数
  39. total_items = query.count()
  40. # 排序
  41. query = query.order_by(CompanyManagementBaseInfo.create_time.desc())
  42. # 执行分页查询
  43. Companys = query.offset((page - 1) * pageSize).limit(pageSize).all()
  44. # 将查询结果转换为列表形式的字典
  45. Companys_list = []
  46. for company in Companys:
  47. company_info = {
  48. "id": company.id,
  49. "company_name": company.company_name,
  50. "province": company.province,
  51. "province_code": company.province_code,
  52. "city": company.province,
  53. "city_code": company.province_code,
  54. "district": company.province,
  55. "district_code": company.province_code,
  56. "company_address": company.company_address,
  57. "responsible_person": company.responsible_person,
  58. "company_type": company.company_type,
  59. "phone":company.phone,
  60. "create_time": company.create_time.strftime('%Y-%m-%d')
  61. }
  62. Companys_list.append(company_info)
  63. # 返回结果
  64. return {
  65. "code": 200,
  66. "msg": "成功",
  67. "data": Companys_list,
  68. "total": total_items,
  69. "page": page,
  70. "pageSize": pageSize,
  71. "totalPages": (total_items + pageSize - 1) // pageSize
  72. }
  73. except Exception as e:
  74. # 处理异常
  75. traceback.print_exc()
  76. raise HTTPException(status_code=500, detail=str(e))
  77. @router.get('/company/{id}')
  78. async def get_company(
  79. id: str ,
  80. db: Session = Depends(get_db),
  81. user_id = Depends(valid_access_token)
  82. ):
  83. try:
  84. # 构建查询
  85. query = db.query(CompanyManagementBaseInfo)
  86. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  87. # 应用查询条件
  88. if id:
  89. query = query.filter(CompanyManagementBaseInfo.id == id)
  90. # 执行查询
  91. company = query.first()
  92. if not company:
  93. detail = "数据不存在"
  94. return JSONResponse(status_code=404, content={"code":404,"msg":"数据不存在"})
  95. company_result = {
  96. "id": company.id,
  97. "company_name": company.company_name,
  98. "province": company.province,
  99. "province_code": company.province_code,
  100. "city": company.province,
  101. "city_code": company.province_code,
  102. "district": company.province,
  103. "district_code": company.province_code,
  104. "company_address": company.company_address,
  105. "responsible_person": company.responsible_person,
  106. "company_type": company.company_type,
  107. "phone":company.phone,
  108. "create_time": company.create_time.strftime('%Y-%m-%d')
  109. }
  110. # 返回结果
  111. return {
  112. "code": 200,
  113. "msg": "成功",
  114. "data": company_result
  115. }
  116. except Exception as e:
  117. # 处理异常
  118. traceback.print_exc()
  119. if str(e)=='':
  120. e = detail
  121. raise HTTPException(status_code=500, detail=str(e))
  122. @router.post('/company/create')
  123. async def create_company(
  124. db: Session = Depends(get_db),
  125. body = Depends(remove_xss_json),
  126. user_id = Depends(valid_access_token)
  127. ):
  128. try:
  129. new_company = CompanyManagementBaseInfo(
  130. id=new_guid(),
  131. company_name = body['company_name'],
  132. province = body['province'],
  133. province_code = body['province_code'],
  134. city = body['city'],
  135. city_code = body['city_code'],
  136. district = body['district'],
  137. district_code = body['district_code'],
  138. company_address = body['company_address'],
  139. responsible_person = body['responsible_person'],
  140. company_type =body['company_type'],
  141. phone = body['phone'],
  142. create_by = user_id
  143. )
  144. # 添加到数据库会话并提交
  145. db.add(new_company)
  146. db.commit()
  147. # 返回创建成功的响应
  148. return {
  149. "code": 200,
  150. "msg": "成功",
  151. "data": None
  152. }
  153. except Exception as e:
  154. # 处理异常
  155. traceback.print_exc()
  156. raise HTTPException(status_code=500, detail=str(e))
  157. @router.put('/company/update')
  158. async def update_company(
  159. db: Session = Depends(get_db),
  160. body = Depends(remove_xss_json),
  161. user_id = Depends(valid_access_token)
  162. ):
  163. try:
  164. # 提取请求数据
  165. query = db.query(CompanyManagementBaseInfo)
  166. query = query.filter(CompanyManagementBaseInfo.id == body['id'])
  167. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  168. company = query.first()
  169. if not company:
  170. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  171. if 'company_name' in body:
  172. company.company_name = body['company_name']
  173. if 'province' in body:
  174. company.province = body['province']
  175. if 'province_code' in body:
  176. company.province_code = body['province_code']
  177. if 'city' in body:
  178. company.city = body['city']
  179. if 'city_code' in body:
  180. company.city_code = body['city_code']
  181. if 'district' in body:
  182. company.district = body['district']
  183. if 'district_code' in body:
  184. company.district_code = body['district_code']
  185. if 'company_address' in body:
  186. company.company_address = body['company_address']
  187. if 'responsible_person' in body:
  188. company.responsible_person = body['responsible_person']
  189. if 'company_type' in body:
  190. company.company_type = body['company_type']
  191. if 'phone' in body:
  192. company.phone = body['phone']
  193. company.update_by = user_id
  194. # 更新到数据库会话并提交
  195. db.commit()
  196. db.refresh(company) # 可选,如果需要刷新实例状态
  197. # 返回创建成功的响应
  198. return {
  199. "code": 200,
  200. "msg": "成功",
  201. "data": None
  202. }
  203. except Exception as e:
  204. # 处理异常
  205. traceback.print_exc()
  206. raise HTTPException(status_code=500, detail=str(e))
  207. @router.delete('/company/delete')
  208. async def delete_companys(
  209. companyIds: list,
  210. db: Session = Depends(get_db),
  211. body = Depends(remove_xss_json),
  212. user_id = Depends(valid_access_token)
  213. ):
  214. try:
  215. # 提取请求数据
  216. query = db.query(CompanyManagementBaseInfo)
  217. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  218. query = query.filter(CompanyManagementBaseInfo.id.in_(companyIds))
  219. companys = query.all()
  220. if not companys:
  221. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  222. for company in companys:
  223. company.del_flag = '2'
  224. company.update_by=user_id
  225. # 更新到数据库会话并提交
  226. db.commit()
  227. # 返回创建成功的响应
  228. return {
  229. "code": 200,
  230. "msg": "删除成功",
  231. "data": None
  232. }
  233. except Exception as e:
  234. # 处理异常
  235. traceback.print_exc()
  236. raise HTTPException(status_code=500, detail=str(e))
  237. @router.delete('/company/delete/{companyId}')
  238. async def delete_company(
  239. companyId: str,
  240. db: Session = Depends(get_db),
  241. body = Depends(remove_xss_json),
  242. user_id = Depends(valid_access_token)
  243. ):
  244. try:
  245. # 提取请求数据
  246. query = db.query(CompanyManagementBaseInfo)
  247. query = query.filter(CompanyManagementBaseInfo.del_flag != '2')
  248. query = query.filter(CompanyManagementBaseInfo.id==companyId)
  249. company = query.first()
  250. if not company:
  251. return JSONResponse(status_code=404, content={"code": 404, "msg": "数据不存在"})
  252. company.del_flag = '2'
  253. company.update_by = user_id
  254. # 更新到数据库会话并提交
  255. db.commit()
  256. db.refresh(company) # 可选,如果需要刷新实例状态
  257. # 返回创建成功的响应
  258. return {
  259. "code": 200,
  260. "msg": "删除成功",
  261. "data": None
  262. }
  263. except Exception as e:
  264. # 处理异常
  265. traceback.print_exc()
  266. raise HTTPException(status_code=500, detail=str(e))