+
    j                     H    ^ RI HtHt ^ RIHtHt ^ RIHt ^ RIH	t	H
t
 R tR# )    )requestjsonify)get_dbdb_transaction)get_user_id_from_token)error_responsebuild_search_conditionsc                     V P                  R R.R7      R 4       pV P                  RR.R7      R 4       pV P                  RR.R7      R 4       pR	# )
z/api/admin/ratingsGET)methodsc            
      d   \         P                  P                  R 4      p \        \         P                  P                  R^4      4      p\        \         P                  P                  R^
4      4      pV^,
          V,          p\	        4       pVP                  4       p RpRp. p. p	V '       dC   . R	Op
\        W4      w  rV'       d*   Wk,          pVRV,           ,          pV	P                  V4       VP                  Wy4       VP                  4       ^ ,          pVR,           pVP                  W#.4       VP                  W4       VP                  4       p. pV F  p\        V4      pVP                  V4       K!  	  \        RVRVRVRV/4      VP                  4        #   TP                  4        i ; i)
searchpagelimita  
                SELECT r.*, t.title as task_title, u.nickname as acceptor_name, u.phone as acceptor_phone,
                       p.nickname as publisher_name, p.phone as publisher_phone
                FROM task_ratings r
                LEFT JOIN tasks t ON r.task_id = t.id
                LEFT JOIN users u ON r.acceptor_id = u.id
                LEFT JOIN users p ON r.publisher_id = p.id
            z#SELECT COUNT(*) FROM task_ratings rz{ LEFT JOIN tasks t ON r.task_id = t.id LEFT JOIN users u ON r.acceptor_id = u.id LEFT JOIN users p ON r.publisher_id = p.idz, ORDER BY r.created_at DESC LIMIT ? OFFSET ?itemstotal)zt.titlez
u.nicknamezu.phonez
p.nicknamezp.phonez	r.comment)r   argsgetintr   cursorr	   extendexecutefetchonefetchalldictappendr   close)r   r   r   offsetconnr   
query_basecount_queryparamscount_paramssearch_fieldssearch_condsearch_paramsr   queryrowsr   rowratings                      *E:\Work\BangBang\backend\routes\ratings.pyget_admin_ratings1register_rating_routes.<locals>.get_admin_ratings   sw   !!(+7<<##FA./GLL$$Wb12(e#x&	J @KFL j-D]-[*-J  $a  do  $o  oK ''6NN;5OO%a(E!OOEMM5/*NN5)??$DEcV$  GUGUFD'SXYZJJLDJJLs   C/F F/z"/api/admin/ratings/<int:rating_id>c                 6   \        4       pVP                  4       p VP                  R V 34       VP                  4       pV'       g   \	        R4      VP                  4        # \        \        V4      4      VP                  4        #   TP                  4        i ; i)a  
                SELECT r.*, t.title as task_title, u.nickname as acceptor_name, u.phone as acceptor_phone,
                       p.nickname as publisher_name, p.phone as publisher_phone
                FROM task_ratings r
                LEFT JOIN tasks t ON r.task_id = t.id
                LEFT JOIN users u ON r.acceptor_id = u.id
                LEFT JOIN users p ON r.publisher_id = p.id
                WHERE r.id = ?
            u   评价不存在)r   r   r   r   r   r   r   r   )	rating_idr   r   r)   s   &   r+   get_admin_rating0register_rating_routes.<locals>.get_admin_rating8   sw    x	NN   //#C%&78 JJL 49%JJLDJJLs   5B "B Bz/api/tasks/<int:task_id>/ratingPOSTc           
      
   \         P                  P                  R 4      pV'       d   VP                  R4      '       g   \	        RR4      # VP                  R4      ^,          p\        V4      pV'       g   \	        RR4      # \         P                  p\        4       pVP                  4       p VP                  RV 34       VP                  4       pV'       g   \	        R4      VP                  4        # VR,          R	8w  d   \	        R
4      VP                  4        # Rp^ p	VR,          V8X  d   RpVR,          p	M6VR,          V8X  d   RpVR,          p	M\	        RR4      VP                  4        # V	'       g   \	        R4      VP                  4        # VP                  RW34       VP                  4       p
V
'       d   \	        R4      VP                  4        # VP                  RWR,          VR,          VP                  R4      VP                  R4      V34       VP                  4        \        RRRR/4      VP                  4        #   \         d   pTP!                  4        ThRp?ii ; i  TP                  4        i ; i)AuthorizationzBearer u	   未登录i   u   登录已过期z SELECT * FROM tasks WHERE id = ?u   任务不存在status	completedu   任务未完成，无法评价 publisher_idpublisher_to_acceptoracceptor_idacceptor_to_publisheru!   只能评价自己参与的任务i  u   对方用户不存在z@SELECT * FROM task_ratings WHERE task_id = ? AND rating_type = ?u   已评价过该任务z
                INSERT INTO task_ratings (task_id, publisher_id, acceptor_id, rating, comment, rating_type)
                VALUES (?, ?, ?, ?, ?, ?)
            r*   commentsuccessTmessageu   评价成功N)r   headersr   
startswithr   splitr   jsonr   r   r   r   r   commitr   	Exceptionrollback)task_idauth_headertokenuser_iddatar   r   taskrating_typerated_user_idexisting_ratinges   &           r+   create_rating-register_rating_routes.<locals>.create_ratingO   s#   oo))/:+"8"8"C"C!+s33!!#&q)(/!"3S99||x+	NN=zJ??$D%&78L JJLI H~,%&FGF JJLC KMN#w.5 $] 3m$/5 $^ 4%&I3O. JJL+ !%&=>( JJL% NN]`g_uv$oo/O%&=> JJL NN  /m1DdhhxFXZ^ZbZbclZmoz{}
 KKMItYGH
 JJL	  	MMOG	 JJLsJ   -5I 3I AI 0I 8
I 5I A!I I-I((I--I0 0JN)route)appr,   r0   rQ   s   &   r+   register_rating_routesrU      so    YY#eWY5. 6.` 	YY3eWYE F, 	YY06(YC: D:    N)flaskr   r   utils.databaser   r   
utils.authr   utils.helpersr   r	   rU    rV   r+   <module>r\      s    " 1 - ADrV   