
    Xi                     8   S r SSKJrJrJrJr  SSKJr  SSKJ	r	J
r
  SSKJr  \" S\SS9r\R                  S	S
/S9\S 5       5       r\R                  SS
/S9\S 5       5       r\R                  SS/S9\S 5       5       r\R                  SS/S9\S 5       5       rg)u1   
通知API路由

提供通知相关的API接口
    )	Blueprintjsonifyrequestg)login_required)dbNotification)get_beijing_nownotification_apiz/api/notifications)
url_prefixz/listGET)methodsc                  l    [         R                  R                  SS[        S9n [         R                  R                  SS[        S9n[         R                  R                  SS5      R	                  5       S:H  n[
        R                  R                  [        R                  R                  S	9nU(       a  UR                  S
S9nUR                  [
        R                  R                  5       5      nUR                  XS
S9nUR                   Vs/ s H  oUR!                  5       PM     nn[#        SUUR$                  UR&                  UR(                  UR*                  UR,                  UR.                  S.S.S.5      $ s  snf ! [0         a&  n[#        S
S[3        U5       3S.5      S4s SnA$ SnAff = f)u   获取通知列表page   )typeper_page   unread_onlyfalsetrue)user_idF)is_read)r   r   	error_outT)r   pagesr   totalhas_nexthas_prev)notifications
paginationsuccessdatau   获取通知列表失败: r"   message  N)r   argsgetintlowerr	   query	filter_byr   useridorder_by
created_atdescpaginateitemsto_dictr   r   r   r   r   r   r   	Exceptionstr)r   r   r   r+   r    nr   es           E   /Users/yu22x/Desktop/ddd_副本130/ctf/app/routes/api/notification.pyget_notificationsr:      s   "||4<<##J#=ll&&}g>DDF&P"",,QVVYY,?OOEO2E|66;;=>^^E^R
.8.>.>?.>.>?!.&OO'-- * 3 3'-- * 3 3 * 3 3

  	 @   3CF8<
   	s1   DF E>(AF >F 
F3F.(F3.F3z/unread-countc                      [         R                  R                  [        R                  R
                  SS9R                  5       n [        SSU 0S.5      $ ! [         a&  n[        SS[        U5       3S.5      S4s S	nA$ S	nAff = f)
u   获取未读通知数量Fr   r   Tcountr!   u   获取未读数量失败: r$   r&   N)
r	   r+   r,   r   r-   r.   r=   r   r5   r6   )r=   r8   s     r9   get_unread_countr>   9   s    "",,FFII - 
 %' 	
 
  	  3CF8<
   	s   AA 
B B;BBz
/mark-readPOSTc                      [         R                  " 5       n U R                  S5      nU(       ay  [        R                  R                  U[        R                  R                  S9R                  5       nU(       a  UR                  5         [        SSS.5      $ [        SSS.5      S4$ [        R                  R                  [        R                  R                  SS	9R                  S[        5       S
.5        [        R                  R!                  5         [        SSS.5      $ ! ["         aD  n[        R                  R%                  5         [        SS['        U5       3S.5      S4s SnA$ SnAff = f)u   标记通知为已读r.   r.   r   Tu   通知已标记为已读r$   F   通知不存在  r<   )r   read_atu   所有通知已标记为已读u   标记已读失败: r&   N)r   get_jsonr(   r	   r+   r,   r   r-   r.   firstmark_as_readr   updater
   r   sessioncommitr5   rollbackr6   r#   notification_idnotificationr8   s       r9   rG   rG   P   s[   '!((4.'--77"		 8  eg 
 ))+#9   
 $0     ((		 )  f/2CDEJJ;    


-c!fX6
   	s+   BD$ D$ (A;D$ $
E2.9E-'E2-E2z/deletec                  l    [         R                  " 5       n U R                  S5      nU(       d  [        SSS.5      S4$ [        R
                  R                  U[        R                  R                  S9R                  5       nU(       aK  [        R                  R                  U5        [        R                  R                  5         [        SSS.5      $ [        SS	S.5      S
4$ ! [         aD  n[        R                  R!                  5         [        SS[#        U5       3S.5      S4s SnA$ SnAff = f)u   删除通知r.   Fu   缺少通知IDr$   i  rA   Tu   通知已删除rB   rC   u   删除通知失败: r&   N)r   rE   r(   r   r	   r+   r,   r   r-   r.   rF   r   rI   deleterJ   r5   rK   r6   rL   s       r9   delete_notificationrQ   ~   s0    !((4. +   
 $))33FFII 4 
 %' 	
 JJl+JJ,  
  ,     


-c!fX6
   	s)   <C% BC% C% %
D3/9D.(D3.D3N)__doc__flaskr   r   r   r   app.services.auth.decoratorsr   
app.modelsr   r	   app.models.database.baser
   __name__notification_bprouter:   r>   rG   rQ        r9   <module>r\      s    1 0 7 ' 4.EYZ w0$  1$N 8  9* |fX6)  7)X y6(3"  4"r[   