github.com/jincm/wesharechain@v0.0.0-20210122032815-1537409ce26a/server/block/api/account/user.py (about)

     1  
     2  #coding:utf-8
     3  
     4  from tornado.web import RequestHandler
     5  from util.exception import ParamExist
     6  from util.convert import is_user_name, is_mobile, bs2utf8
     7  import logging
     8  import json
     9  from operation import user
    10  from operation import verify_manage
    11  from util import common_util
    12  import time
    13  
    14  
    15  LOG = logging.getLogger(__name__)
    16  
    17  
    18  class UserHandler(RequestHandler):
    19  
    20      def initialize(self, **kwds):
    21          pass
    22  
    23      def get(self):
    24          pass
    25  
    26      def post(self):
    27          try:
    28              phone = bs2utf8(self.get_argument('phone', ''))
    29              verify_code = self.get_argument('verify_code', '')
    30              invitation = self.get_argument('invitation', '')
    31  
    32              if not is_mobile(phone):
    33                  self.finish(json.dumps({'state': 2, "message": "User phone format error"}))
    34                  return
    35  
    36              user_op = user.UserOp()
    37  
    38              # 验证手机是否已经被注册
    39              filters = {
    40                  "phone": phone
    41              }
    42              # user_list = user_op.exist(filters)
    43              if user_op.exist(filters):
    44                  self.finish(json.dumps({'state': 3, "message": "User phone registered"}))
    45                  return
    46  
    47              # 验证验证码
    48              code_op = verify_manage.VerifyOp()
    49              # code_list = code_op.lists(**filters)
    50              # if code_list:
    51              #     code_info = code_op.views(code_list[0])
    52              #
    53              # if verify_code != code_info.get('verify_code', ''):
    54              #     self.finish(json.dumps({'state': 1, "message": "Verify code not equl"}))
    55              #     return
    56              verify_re = code_op.verify_code_phone(phone=phone, code=verify_code)
    57              if not verify_re:
    58                  self.finish(json.dumps({'state': 1, "message": "Verify code failed"}))
    59                  return
    60  
    61              # 验证邀请码,并通过邀请码获取邀请用户
    62              filters = {
    63                  "invitation": invitation
    64              }
    65              user_list = user_op.lists(**filters)
    66              if not user_list:
    67                  self.finish(json.dumps({'state': 4, "message": "Not found invated user"}))
    68                  return
    69  
    70              user_info = user_op.views(user_list[0])
    71              referrer_id = user_info.get('id', '')  # 邀请人用户id
    72  
    73              user_op.create(phone=phone, referrer_id=referrer_id)
    74  
    75              self.finish(json.dumps({'state': 0, "message": "sing in succes"}))
    76          except ParamExist as ex:
    77              LOG.error("Sign error:%s" % ex)
    78              self.finish(json.dumps({'state': 9, 'message': 'params exit'}))
    79          except Exception as ex:
    80              LOG.error("Sign error:%s" % ex)
    81              self.finish(json.dumps({'state': 10, 'message': 'account sign error'}))
    82  
    83      def put(self, *args, **kwargs):
    84          try:
    85              id = self.get_argument('id', '')
    86              nick_name = self.get_argument('nick_name', None)
    87              sex = self.get_argument('sex', None)
    88              birthday = self.get_argument('birthday', None)
    89              phone = bs2utf8(self.get_argument('phone', None))
    90              token = self.get_argument('token', None)
    91  
    92              user_op = user.UserOp()
    93  
    94              if not id:
    95                  LOG.error("Cannot update user info")
    96                  self.finish(json.dumps({'state': 1, "message": "Cannot update user info"}))
    97                  return
    98  
    99              update_dict = {}
   100              # _ = user_op.login(phone)
   101              # ser_token = common_util.gen_token(_.get("id"), int(time.time()))
   102              # if ser_token != token:
   103              #     self.finish(json.dumps({'state': 10, 'message': 'account sign error'}))
   104              if phone is not None:
   105                  if not is_mobile(phone):
   106                      self.finish(json.dumps({'state': 1, "message": "User phone format error"}))
   107                      return
   108  
   109                  filters = {
   110                      "phone": phone
   111                  }
   112                  if user_op.exist(filters):
   113                      self.finish(json.dumps({'state': 2, "message": "User phone registered"}))
   114                      return
   115  
   116                  update_dict['phone'] = phone
   117  
   118              if nick_name is not None:
   119                  if not is_user_name(nick_name):
   120                      self.finish(json.dumps({'state': 3, "message": "User name format error"}))
   121                      return
   122                  update_dict['nick_name'] = nick_name
   123  
   124              if sex is not None:
   125                  update_dict['sex'] = sex
   126  
   127              if birthday is not None:
   128                  update_dict['birthday'] = birthday
   129  
   130              if user_op.update(id=id, **update_dict):
   131                  self.finish(json.dumps({'state': 0, "message": "update success"}))
   132              else:
   133                  self.finish(json.dumps({'state': 1, "message": "update into failed"}))
   134  
   135          except ParamExist as ex:
   136              LOG.error("Update error:%s" % ex)
   137              self.finish(json.dumps({'state': 9, 'message': 'params exit'}))
   138  
   139          except Exception as ex:
   140              LOG.error("Update error:%s" % ex)
   141              self.finish(json.dumps({'state': 10, 'message': 'Update error'}))