
    BiZ                        d dl mZmZmZmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZmZ d dlmZ  ede          Ze                    dd	g
          d             Ze                    dd	g
          d             Ze                    ddg
          d             Ze                    dd	g
          d             Ze                    ddg
          d             Ze                    ddg
          d             Ze                    dd	g
          d             Ze                    dd	g
          d             ZdS )    )	Blueprintjsonifyrequestsession)Userdb)get_user_by_session_value"allocate_unique_user_id_from_email)CreditTransactionCreditBalance)get_or_create_credit_balancerenew_daily_creditsadd_signup_bonus)descuserz/api/auth/checkGET)methodsc                     	 t          j        d          } | sWt          j                            d          }|r$t	          d|                                d          S t	          ddd          S t          |           }|r$t	          d|                                d          S t	          ddd          S # t          $ r*}t	          ddt          |          d          cY d}~S d}~ww xY w)u   사용자 인증 상태 확인user_id   T)authenticatedr   FN)r   r   error)	r   getr   queryr   to_dictr	   	Exceptionstr)r   r   es      H/var/www/html/web/mlink/mlink_AI_Server/mlink-backend/src/routes/user.py
check_authr       sQ    +i(( 	:>>!$$D 	%) LLNN      
 %*       
 )11 		!%    
 !&        "VV
 
   	 	 	 	 	 	s0   AB6 B6 /4B6 $B6 6
C* C%C*%C*z/usersc                  p    t           j                                        } t          d | D                       S )Nc                 6    g | ]}|                                 S  )r   ).0r   s     r   
<listcomp>zget_users.<locals>.<listcomp>6   s     555tDLLNN555    )r   r   allr   )userss    r   	get_usersr)   3   s0    JNNE55u555666r&   POSTc                  h   t           j        } t          | d         |                     d                    }t	          || d         | d                   }t
          j                            |           t
          j                                         t          |
                                          dfS )Nemailusername)r   r-   r,      )r   jsonr
   r   r   r   r   addcommitr   r   )datauidr   s      r   create_userr4   8   s     <D
,T']DHHZ<P<P
Q
QCd:&6d7mLLLDJNN4J4<<>>""C''r&   z/users/<int:user_id>c                     t           j                            |           }t          |                                          S )N)r   r   
get_or_404r   r   r   r   s     r   get_userr8   B   s-    :  ))D4<<>>"""r&   PUTc                 V   t           j                            |           }t          j        }|                    d|j                  |_        |                    d|j                  |_        t          j	        
                                 t          |                                          S )Nr-   r,   )r   r   r6   r   r/   r   r-   r,   r   r   r1   r   r   )r   r   r2   s      r   update_userr;   G   sv    :  ))D<DHHZ77DM'4:..DJJ4<<>>"""r&   DELETEc                     t           j                            |           }t          j                            |           t          j                                         dS )N)    )r   r   r6   r   r   deleter1   r7   s     r   delete_userrA   P   sF    :  ))DJdJ7r&   z/api/user/creditsc                  ,   	 t          j        d          } | s@t          j                            d          }|r|j        nd} | st          ddd          dfS t          j                            ddt          	          }t          j                            d
dt          	          }t          |           }t          j                            |                                           }t          j                            |                               t          t          j                                                ||d          }g }|j        D ]H}|                    |j        pd|j        r|j                            d          nd|j        d           It          d|j        |j        |j        |j        |j        |j        ||j        ||j        d          dfS # t>          $ r+}t          dtA          |          d          dfcY d}~S d}~ww xY w)u3   사용자 크레딧 정보 및 거래 내역 조회r   r   NF   로그인이 필요합니다.successr     page)typeper_page
   r   )rG   rI   	error_outr>   z%Y-%m-%d %H:%M)detaildatecreditChangeT)rE   totalCredit
freeCreditaddOnCreditdailyRenewalCrediteventCreditsubscriptionCredithistory
totalPagescurrentPage
totalItems     )!r   r   r   r   r   r   r   argsintr   r   	filter_byfirstr   order_byr   
created_atpaginateitemsappenddescriptionstrftimeamounttotal_creditfree_creditadd_on_creditdaily_renewal_creditevent_creditsubscription_creditpagestotalr   r   )	r   u1rG   rI   credit_balance
paginationtransactionstransactionr   s	            r   get_user_creditsru   W   sc   5+i(( 	b""B$&0bjjDG b5;Z[[\\^aaa |44<##J#== 6g>> ',66w6GGMMOO ',66w6GGXd,78899X4(eXDD 	 %+ 	 	K%17RMXMck.778HIIIik + 2! !     )6(4)7"0"E)6"0"D#$*$*
 
    	    VV
 
    	 	 	 	 	 	s%   AG FG 
H( HHHz/api/user/credits/balancec            
         	 t          j        d          } | s@t          j                            d          }|r|j        nd} | st          ddd          dfS t          |           }t          j                            |           	                                }t          d	|j
        |j        |j        |j        |j        |j        d
          dfS # t           $ r+}t          dt#          |          d          dfcY d}~S d}~ww xY w)u7   사용자 크레딧 잔액만 조회 (간단한 정보)r   r   NFrC   rD   rF   rK   T)rE   rP   rQ   rR   rS   rT   rU   rZ   r[   )r   r   r   r   r   r   r   r   r^   r_   rh   ri   rj   rk   rl   rm   r   r   )r   rp   rq   r   s       r   get_user_credit_balancerw      sW    +i(( 	b""B$&0bjjDG b5;Z[[\\^aaa 6g>> ',66w6GGMMOO)6(4)7"0"E)6"0"D
 
    	    VV
 
    	 	 	 	 	 	s%   AC A7C 
D D :D DN)flaskr   r   r   r   src.models.userr   r   src.utils.user_refr	   r
   src.models.creditr   r   src.utils.credit_managerr   r   r   
sqlalchemyr   __name__user_bprouter    r)   r4   r8   r;   rA   ru   rw   r#   r&   r   <module>r      sH   6 6 6 6 6 6 6 6 6 6 6 6 $ $ $ $ $ $ $ $ \ \ \ \ \ \ \ \ > > > > > > > >         
      
)FH
%
% 5'22" " 32"H 	x%))7 7 *)7 	x&**( ( +*( 	%w77# # 87# 	%w77# # 87# 	%z::  ;: 	"UG447 7 547r 	*UG<<" " =<" " "r&   