def bath_update_relative(self):
     message = ""
     student_id = convert.bs2utf8(self.get_argument('student_id', ''))
     relative_list = convert.bs2utf8(self.get_argument('relative_list', '[]'))
     relative_list = json.loads(relative_list)
     relative_op = RelativeLogic()
     relation_op = RelationLogic()
     for relative_info in relative_list:
         try:
             relative_id = relative_info.pop("id", "")
             relation = relative_info.pop("relation", "")
             if relative_id:
                 #update relative, relation
                 _ = relative_op.update(id=relative_id, **relative_info)
                 if not _:
                     message += "update relative error:%s" % relative_info.get("name", "")
                     continue
                 relation_info = relation_op.update(relative_id=relative_id, student_id=student_id, relation=relation)
                 if not relation_info:
                     message += "update relation error:%s, %s"%(relative_info.get("name", ""), relation)
                     continue
             else:
                 #add relative, relation
                 _ = relative_op.input(name=convert.bs2utf8(relative_info.get("name", "")),
                                       sex=relative_info.get("sex", 0),
                                       birthday=convert.bs2utf8(relative_info.get("birthday", "")),
                                       phone=convert.bs2utf8(relative_info.get("phone", "")))
                 if not _:
                     message += "add relative error:%s" % relative_info.get("name", "")
                     continue
                 relation_info = relation_op.input(relation, student_id=student_id, relative_id=_.get("id"))
                 if not relation_info:
                     message += "add relation error:%s, %s"%(relative_info.get("name", ""), relation)
                     continue
         except Exception as ex:
             LOG.error("update error: %s, %s"%(relative_info.get("name", ""), ex))
             message += "update error:%s" %relative_info.get("name", "")
     if not message:
         self.finish(json.dumps({'state': 0, 'message': 'update relative success'}))
     else:
         self.finish(json.dumps({'state': 1, 'message': message}))
Beispiel #2
0
    def update_user_phone(self):
        phone = convert.bs2utf8(self.get_argument('phone', ''))
        verify_code = convert.bs2utf8(self.get_argument('verify_code', ''))
        edu_session = convert.bs2utf8(self.get_argument('edu_session', ''))
        relative_op = RelativeLogic()
        teacher_op = TeacherLogic()
        verify_op = VerifyManageLogic()
        wx_op = WXUserLogic()

        # verify code
        _ = verify_op.verify_code_phone(phone=phone, code=verify_code)
        if not _:
            self.finish(
                json.dumps({
                    'state': 1,
                    'message': 'verify code error'
                }))
            return
        old_wx_info = wx_op.info(edu_session)
        if not old_wx_info:
            LOG.error("update user wx id not singn: phone:%s" % phone)
            self.finish(json.dumps({'state': 3, 'message': 'wx id not singn'}))
            return

        #验证待绑定手机号,是否被占用(微信号认证过,或者家属占用,或教师占用)
        verify_wx_info = wx_op.info_by_phone(phone, old_wx_info.get("wx_type"))
        if verify_wx_info:
            LOG.error("update user phone, new phone exit wx: phone:%s" % phone)
            self.finish(
                json.dumps({
                    'state': 3,
                    'message': 'new phone exit wx'
                }))
            return

        # 新号码已经被其他家属占用
        if old_wx_info.get("wx_type") == 1:
            verify_relative_list = relative_op.info_by_phone(phone=phone)
            if verify_relative_list:
                LOG.error(
                    "update user phone, new phone exit relative: phone:%s" %
                    phone)
                self.finish(
                    json.dumps({
                        'state': 3,
                        'message': 'new phone exit relative'
                    }))
                return

            # 待更新手机号码的亲属,通过旧手机号(可能存在多个)
            old_relative_list = relative_op.info_by_phone(
                phone=old_wx_info.get("phone"))
            for relative_info in old_relative_list:
                relative_op.update(relative_info.id, phone=phone)
            # 更新微信号的手机号码
            wx_op.update(edu_session, phone=phone)
            self.finish(
                json.dumps({
                    'state': 0,
                    'edu_session': edu_session,
                    'message': 'ok'
                }))

        #新号码已经被其他教师占用
        if old_wx_info.get("wx_type") == 2:
            verify_teacher_list = teacher_op.info_by_phone(phone=phone)
            if verify_teacher_list:
                LOG.error(
                    "update user phone, new phone exit teacher: phone:%s" %
                    phone)
                self.finish(
                    json.dumps({
                        'state': 3,
                        'message': 'new phone exit teacher'
                    }))
                return
            # 待更新手机号码的教师,通过旧手机号(可能存在多个)
            old_teacher_list = teacher_op.info_by_phone(
                phone=old_wx_info.get("phone"))
            for teacher_info in old_teacher_list:
                teacher_op.update(teacher_info.id, phone=phone)
            # 更新微信号的手机号码
            wx_op.update(edu_session, phone=phone)
            self.finish(
                json.dumps({
                    'state': 0,
                    'edu_session': edu_session,
                    'message': 'ok'
                }))