273 lines
12 KiB
Python
273 lines
12 KiB
Python
# -*- coding:utf-8 -*-
|
||
|
||
"""
|
||
Author: 罗志鹏
|
||
Email: luozhipeng@huohua.cn
|
||
Create Date: 2022/03/03 11:25 下午
|
||
"""
|
||
from base_framework.public_tools import log
|
||
from base_framework.public_tools.sqlhelper import MySqLHelper
|
||
from library.UBRD_interface import UBRDInterface
|
||
from base_framework.public_tools.edu_user_helper import EDUUserHelper
|
||
from base_framework.public_tools.redis_api import RedisApi
|
||
from base_framework.public_tools.read_config import ReadConfig
|
||
from base_framework.base_config.current_pth import env_choose_path
|
||
from redis import Redis
|
||
from base_framework.public_tools.runner import Runner
|
||
from base_framework.public_tools.utils import Tools
|
||
from base_framework.public_business.common.UBRD.UBRD_public_business import BaseLogic
|
||
from base_framework.public_business.common.UBRD.kw.user_keyword import UserKW
|
||
from Crypto.Cipher import AES
|
||
from Crypto.Util.Padding import pad
|
||
import base64
|
||
obj_runner = Runner()
|
||
obj_log = log.get_logger()
|
||
obj_my_sql_helper = MySqLHelper()
|
||
obj_edu_user_helper = EDUUserHelper()
|
||
obj_redis_api = RedisApi()
|
||
obj_tools = Tools()
|
||
obj_base_logic = BaseLogic()
|
||
user_kw_obj = UserKW()
|
||
|
||
|
||
class UserCommon(UBRDInterface):
|
||
|
||
def __init__(self):
|
||
super().__init__()
|
||
self.evn_cfg = ReadConfig(env_choose_path)
|
||
self.current_business = self.evn_cfg.get_value(sections="run_evn_name", options="current_business")
|
||
|
||
@staticmethod
|
||
def update_user_pwd_by_phone(phone):
|
||
"""
|
||
功能:初始化用户密码为A123456
|
||
| 输入参数: | phone string | 手机号 |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
sql_user_by_phone = "SELECT x.id FROM ucenter.user_profile x WHERE x.phone IN ('{0}')".format(phone)
|
||
user_by_phone = obj_my_sql_helper.select_all(sql_user_by_phone)
|
||
|
||
if isinstance(user_by_phone, tuple):
|
||
raise RuntimeError("未找到手机号为{0}的用户".format(phone))
|
||
sql_update_pwd = "update ucenter.user_profile set auth_hash = '2ad5381b6a2952287a95b9accb0bb51c'," \
|
||
"auth_salt='fFRzeLZGR5' WHERE phone IN ('{0}')".format(phone)
|
||
obj_my_sql_helper.update(sql_update_pwd)
|
||
obj_log.info('成功更新{0}用户密码为A123456'.format(phone))
|
||
|
||
def update_teacher_pwd_by_classroom(self, classroom_Code):
|
||
"""
|
||
功能:初始化教师账号密码为Huohua123456
|
||
| 输入参数: | classroom_Code string | 课堂code |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
teacher_info = self.get_teacher_info_by_classroom(classroom_Code)
|
||
sql_update_pwd = "update account.account set pwd = 'e1NTSEF9dzE4ZlFhRytVNzZWeFVKMFFIV2VUNy83U2hxOE5oNUhMT0doTnc9PQ==' WHERE id ={0}".format(
|
||
teacher_info["account_id"])
|
||
obj_my_sql_helper.update(sql_update_pwd)
|
||
obj_log.info('成功更新{0}课堂教师{1}密码为Mima@123'.format(classroom_Code, teacher_info["phone"]))
|
||
|
||
def update_teacher_pwd_by_classroom_2(self,classroom_Code):
|
||
"""
|
||
功能:初始化教师账号密码为MIma@123456
|
||
| 输入参数: | classroom_Code string | 课堂code |
|
||
| 作者: | lrq | 2024.06.12 |
|
||
"""
|
||
teacher_info = self.get_teacher_info_by_classroom(classroom_Code)
|
||
sql_update_pwd = "update account.account set pwd = 'e1NTSEF9dzE4ZlFhRytVNzZWeFVKMFFIV2VUNy83U2hxOE5oNUhMT0doTnc9PQ==' WHERE id ={0}".format(teacher_info["account_id"])
|
||
obj_my_sql_helper.update(sql_update_pwd)
|
||
obj_log.info('成功更新{0}课堂教师{1}密码为MIma@123456'.format(classroom_Code,teacher_info["phone"]))
|
||
|
||
def update_teacher_pwd_by_teacher_id(self, teacher_id):
|
||
"""
|
||
功能:初始化教师账号密码为Huohua123456
|
||
| 输入参数: | classroom_Code string | 课堂code |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
teacher_info = self.get_teacher_info_by_teacher_id(teacher_id)
|
||
sql_update_pwd = "update account.account set pwd = 'e1NTSEF9dzE4ZlFhRytVNzZWeFVKMFFIV2VUNy83U2hxOE5oNUhMT0doTnc9PQ==' WHERE id ={0}".format(
|
||
teacher_info["account_id"])
|
||
obj_my_sql_helper.update(sql_update_pwd)
|
||
obj_log.info('成功更新{0}教师{1}密码为Mima@123'.format(teacher_id, teacher_info["phone"]))
|
||
|
||
def get_chess_classroom_by_mcr_code(self, mcr_code):
|
||
"""
|
||
功能:获取课堂教师信息 仅支持emp教师
|
||
| 输入参数: | teacher_id int | 老师id |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
sql_chess_classroom = "SELECT x.relation_classroom_code FROM learning_plan.classroom_relation x WHERE x.classroom_code IN ('{0}') and status =1 and relation_type = 1".format(
|
||
mcr_code)
|
||
chess_classroom = obj_my_sql_helper.select_all(sql_chess_classroom)
|
||
return chess_classroom
|
||
|
||
def get_teacher_info_by_teacher_id(self, teacher_id):
|
||
"""
|
||
功能:获取课堂教师信息 仅支持emp教师
|
||
| 输入参数: | teacher_id int | 老师id |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
sql_phone_by_classroom_code = "select tp.id,e.phone,tp.account_id from emp.employee e inner join teach_teacher.teacher_profile tp on tp.employee_id = e.id inner join account.account a on a.id= tp.account_id where tp.id = {0}".format(
|
||
teacher_id)
|
||
teacher_info = obj_my_sql_helper.select_all(sql_phone_by_classroom_code)
|
||
return teacher_info[0]
|
||
|
||
def get_teacher_info_by_classroom(self, classroom_Code):
|
||
"""
|
||
功能:获取课堂教师信息 仅支持emp教师
|
||
| 输入参数: | classroom_Code string | 课堂code |
|
||
| 作者: | lzp | 2022.03.07 |
|
||
"""
|
||
sql_phone_by_classroom_code = "select c.teacher_id,e.phone,tp.account_id from emp.employee e inner join teach_teacher.teacher_profile tp on tp.employee_id = e.id inner join teach_classes.classroom c on c.teacher_id = tp.id inner join account.account a on a.id= tp.account_id where c.code = '{0}'".format(
|
||
classroom_Code)
|
||
teacher_info = obj_my_sql_helper.select_all(sql_phone_by_classroom_code)
|
||
return teacher_info[0]
|
||
|
||
def get_student_info_by_phone(self, phone):
|
||
"""
|
||
功能:根据手机号码获取学生基本信息
|
||
| 输入参数: | phone string | 手机号 |
|
||
"""
|
||
user_info = user_kw_obj.kw_ubrd_public_get_user_info_by_phone(phone)
|
||
sql = "SELECT id studentId FROM ucenter.student_profile where user_id ='{}'".format(user_info["user_id"])
|
||
return obj_my_sql_helper.select_one(sql)
|
||
|
||
def get_classroom_info_by_code(self, code):
|
||
"""
|
||
功能:根据课堂号获取课堂信息
|
||
| 输入参数: | phone string | 手机号 |
|
||
"""
|
||
sql = "SELECT id,code,classes_id,classes_code,course_id,course_name,lesson_id,lesson_name,teacher_id,open_time,close_time,is_closed,status FROM teach_classes.classroom where code = '{0}'".format(
|
||
code)
|
||
return obj_my_sql_helper.select_one(sql)
|
||
|
||
def register_by_code_phone(self, phone, countryCode=86):
|
||
auth_code_send_result = obj_base_logic.logic_public_send_auth_code(
|
||
{'h': {'accept-language': 'en'}, 'phone': phone, 'countryCode': '{}'.format(countryCode), 'authType': 2,
|
||
'verifyAppId': 2})
|
||
obj_log.info(auth_code_send_result)
|
||
sms_code = obj_edu_user_helper.get_sms_code_by_phone(phone)
|
||
obj_log.info(sms_code)
|
||
login_post_result = self.kw_in_ubrd_login_post(
|
||
**{'phone': phone, 'countryCode': '86', 'password': 'A123456', 'authCode': sms_code})
|
||
obj_log.info(login_post_result)
|
||
# 更新密码
|
||
obj_my_sql_helper.update(
|
||
"update ucenter.user_profile set auth_hash = 'e2a0c8ec7503d1bfea587d5ffa0efc2f',auth_salt='fTvsqofig7' WHERE phone='{}'".format(
|
||
phone))
|
||
|
||
def get_change_pwd_vcode_by_sms_code(self, phone):
|
||
""" 获取学生端修改密码验证码 """
|
||
sms_code = obj_edu_user_helper.get_sms_code_by_phone(phone)
|
||
return sms_code
|
||
|
||
def get_register_vccode_by_redis(self, phone):
|
||
"""
|
||
获取学生端注册验证码
|
||
"""
|
||
key = "api:AUTH_CODE:{0}_SIGN_IN".format(phone)
|
||
obj_log.info(key)
|
||
return self.get_student_key_value_by_redis(key, 9)
|
||
|
||
def delete_change_student_pwd_limit_redis(self, phone):
|
||
"""
|
||
功能:删除学生端修改密码次数限制缓存
|
||
| 作者: | lzp | 2021.08. 15 |
|
||
"""
|
||
key_1 = "GRANULARITY:PHONE_AUTH_RECEIVE_COUNT_CHANNEL_MOBILE_API{0}".format(phone)
|
||
key_2 = "GRANULARITY:PHONE_AUTH_RECEIVE_COUNT_CHANNEL_MOBILE_API{0}_1".format(phone)
|
||
self.delete_student_key_redis(key_1, 9)
|
||
self.delete_student_key_redis(key_2, 9)
|
||
|
||
def delete_student_key_redis(self, key: object, db: object):
|
||
"""
|
||
删除指定key
|
||
"""
|
||
if self.current_business == "hh":
|
||
host = 'redis.qa.huohua.cn'
|
||
password = 'AcUVeRb8lN'
|
||
port = 6379
|
||
elif self.current_business == "hhi":
|
||
host = 'redis.qa.visparklearning.com'
|
||
password = 'hxTjlWBYdK6UpAGF'
|
||
port = 6379
|
||
else:
|
||
raise RuntimeError("读取本地配置环境失败,未能正常连接redis")
|
||
pool = Redis(host=host, port=port, password=password, db=db)
|
||
pool.delete(key)
|
||
|
||
def get_student_key_value_by_redis(self, key, db):
|
||
"""
|
||
获取指定key的value
|
||
"""
|
||
if self.current_business == "hh":
|
||
host = 'redis.qa.huohua.cn'
|
||
password = 'AcUVeRb8lN'
|
||
port = 6379
|
||
elif self.current_business == "hhi":
|
||
host = 'redis.qa.visparklearning.com'
|
||
password = 'hxTjlWBYdK6UpAGF'
|
||
port = 6379
|
||
else:
|
||
raise RuntimeError("读取本地配置环境失败,未能正常连接redis")
|
||
pool = Redis(host=host, port=port, password=password, db=db, decode_responses=True)
|
||
value = pool.get(key)
|
||
return value
|
||
|
||
def check_data_in_list(self, array: list, item):
|
||
"""
|
||
判断某个数据是否在数组中
|
||
"""
|
||
if item in array:
|
||
return True
|
||
else:
|
||
return False
|
||
|
||
def update_classroom_data_to_join(self, classroom_id):
|
||
"""
|
||
更新学习服务课堂数据
|
||
"""
|
||
open_time_timestamp = obj_tools.get_format_date(r_type=12)
|
||
close_time_timestamp = obj_tools.get_format_date(r_type=12, add_hours=1)
|
||
|
||
open_time_standard_time = obj_tools.get_format_date(r_type=4)
|
||
close_time_standard_time = obj_tools.get_format_date(r_type=4, add_hours=1)
|
||
# 更新学员课表数据
|
||
sql_learning_schedule = "update learning_plan.learning_schedule set open_time ='{0}',close_time = '{1}' " \
|
||
"where classroom_id = {2}".format(open_time_standard_time, close_time_standard_time,
|
||
classroom_id)
|
||
obj_my_sql_helper.update(sql_learning_schedule)
|
||
|
||
# 更新教师课表数据
|
||
sql_teaching_schedule = "update learning_plan.teaching_schedule set open_time ='{0}',close_time = '{1}', class_status =0 " \
|
||
"where classroom_id = {2}".format(open_time_timestamp, close_time_timestamp,
|
||
classroom_id)
|
||
obj_my_sql_helper.update(sql_teaching_schedule)
|
||
|
||
def check_data_in_db(self, sql, retry_count):
|
||
"""
|
||
判断某个数据是否在数据库中
|
||
"""
|
||
obj_my_sql_helper.check_result_exist(sql, retry_count=retry_count)
|
||
|
||
def encryption_aes(self,data,key=None):
|
||
if not key:
|
||
key = b"y3wa93twda35eqer"
|
||
cipher = AES.new(key, AES.MODE_ECB)
|
||
padded_data = pad(data.encode(), AES.block_size) # PKCS5Padding
|
||
encrypted_data = cipher.encrypt(padded_data)
|
||
return base64.b64encode(encrypted_data).decode()
|
||
|
||
|
||
|
||
|
||
|
||
if __name__ == '__main__':
|
||
user_common_obj = UserCommon()
|
||
a = 138475
|
||
s=user_common_obj.update_teacher_pwd_by_teacher_id(teacher_id=183152 )
|
||
print(s)
|
||
# print(user_common_obj.get_user_info_by_phone('13458500234'))
|
||
# phone_dict ={'phone': '65-98760021'}
|
||
# user_common_obj.get_register_vccode_by_redis('65-98760021')
|
||
# user_common_obj.update_classroom_data_to_join(classroom_id=500852944)
|