def upload_video(header,conn): #print('------------上传视频----------') filename = header['filename'] filesize = header['len'] video_list=os.listdir(settings.Videos_path) re_header = { 'type': 'admin', 'action': 'upload_video', } if filename in video_list: re_data = { 'status': False, 'msg': '文件已存在' } else: re_data = { 'status': True, 'msg': '可上传' } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes) recv_size = 0 video_path1=os.path.join(settings.Videos_path,filename) with open(video_path1,'wb') as f: while recv_size < filesize: recv_data = conn.recv(1024) f.write(recv_data) recv_size += len(recv_data) f.flush() file_size1 = os.path.getsize(video_path1) md5_obj = hashlib.md5() md5_obj.update(str(file_size1).encode('utf-8')) if header['md5']==md5_obj.hexdigest(): try: res_db = cursor.execute('''insert into video(url,is_charge,cost,member_cost,is_delete) values(%s,%s,%s,%s,%s)''', (video_path1,header['is_charge'],header['cost'],header['member_cost'],0)) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = { 'status': True, 'msg': '上传成功' } else: re_data = { 'status': False, 'msg': '上传失败' } else: re_data = { 'status': False, 'msg': '文件上传不完整或被篡改' } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def register(header,conn): #print('------------注册----------') data_len=header['len'] data_bytes=conn.recv(data_len) data=struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute('''select id from `admin` where `name`=%s''',data['name']) admin_info=cursor.fetchone() re_header={ 'type':'admin', 'action':'register', } if admin_info: re_data = { 'status':False, 'msg':'管理员名已存在' } else: try: res_db = cursor.execute('''insert into admin(`name`,pwd) values(%s,%s)''', (data['name'],data['pwd'])) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = { 'status': True, 'msg': '注册成功' } else: re_data = { 'status': False, 'msg': '注册失败' } re_data_bytes=struct_tcp.pack_header(re_header,re_data) conn.send(re_data_bytes)
def check_dwn_records(header, conn): #print('------------查看观影(下载)记录----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) re_header = { 'type': 'user', 'action': 'check_dwn_records', } cursor.execute( '''select a.video_id,a.cost,c.url from `dwn_records` as a right join `user` as b on a.user_id=b.id and b.phone=%s left join video as c on c.id=a.video_id ''', data['phone']) dwn_records_info = cursor.fetchall() if dwn_records_info: re_data = { 'status': True, 'msg': '查询成功', 'data': dwn_records_info, 'video': dwn_records_info } else: re_data = {'status': True, 'msg': '暂无记录', 'data': ()} re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def register(header, conn): #print('------------注册----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute('''select id from `user` where `phone`=%s''', data['phone']) user_info = cursor.fetchone() re_header = { 'type': 'user', 'action': 'register', } if user_info: re_data = {'status': False, 'msg': '用户名已存在'} else: try: res_db = cursor.execute( '''insert into `user`(`phone`,pwd,money,is_member,is_delete) values(%s,%s,%s,%s,%s)''', (data['phone'], data['pwd'], 0, 0, 0)) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = {'status': True, 'msg': '注册成功'} else: re_data = {'status': False, 'msg': '注册失败'} re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def dwn_video(phone, id): conn = tcp_client.tcp_conn() header = {'type': 'user', 'action': 'dwn_video'} data = {'phone': phone, 'id': id} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) T_F = conn.recv(1).decode('utf-8') if T_F == '0': return False, '余额不足' re_header_len_bytes = conn.recv(4) re_header_len = struct_tcp.unpack_header_len(re_header_len_bytes) re_header_bytes = conn.recv(re_header_len) re_header = struct_tcp.decode_header_bytes_or_data_bytes(re_header_bytes) recv_size = 0 video_path1 = os.path.join(settings.Videos_path, re_header['filename']) with open(video_path1, 'wb') as f: while recv_size < re_header['filesize']: recv_data = conn.recv(1024) f.write(recv_data) recv_size += len(recv_data) common.schedule(re_header['filesize'], recv_size) f.flush() file_size1 = os.path.getsize(video_path1) md5_obj = hashlib.md5() md5_obj.update(str(file_size1).encode('utf-8')) if re_header['md5'] == md5_obj.hexdigest(): return True, '下载成功' else: return False, '文件不完整或被篡改'
def manage_user(header,conn): #print('------------管理用户----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) try: res_db = cursor.execute('''update `user` set is_delete=%s where phone=%s''', (data['is_lock'], data['phone'])) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = { 'status': True, 'msg': '修改成功' } else: re_data = { 'status': False, 'msg': '修改失败' } re_header = { 'type': 'admin', 'action': 'manage_user', } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def release_notice(header,conn): #print('------------发布公告----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) try: res_db = cursor.execute( '''insert into notice(content,is_delete) values(%s,%s)''',(data['content'],0)) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = { 'status': True, 'msg': '发布成功' } else: re_data = { 'status': False, 'msg': '发布失败' } re_header = { 'type': 'admin', 'action': 'release_notice', } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def delete_video(header,conn): #print('------------删除视频----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) video_list = common.db_query(settings.DB_video_path) video_list[data['id']]['is_delete']=1 common.db_save(settings.DB_video_path,video_list) re_header = { 'type': 'admin', 'action': 'delete_video', } try: res_db = cursor.execute( '''update video set is_delete=1 where id=%s''',(data['id'],)) db_conn.commit() except Exception as e: print(e) res_db = False if res_db: re_data = { 'status': True, 'msg': '删除成功' } else: re_data = { 'status': False, 'msg': '删除失败' } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def check_user(): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'check_user'} data = {'check_user': '******'} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'check_user') return res['data']
def get_video_list(): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'get_video_list'} data = {'get_video_list': 'get_video_list'} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'get_video_list') return res['data']
def release_notice(name, content): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'release_notice'} data = {'content': content} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'release_notice') if res: return True, res['msg'] else: return False, '通信错误了'
def delete_video(name, id): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'delete_video'} data = {'id': id} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'delete_video') if res: return True, res['msg'] else: return False, '通信错误了'
def chech_notice(phone): conn = tcp_client.tcp_conn() header = {'type': 'user', 'action': 'chech_notice'} data = {'phone': phone} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'user', 'chech_notice') if res: return res else: return '通信错误了'
def become_member(phone, money): conn = tcp_client.tcp_conn() header = {'type': 'user', 'action': 'become_member'} data = {'phone': phone, 'money': money} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'user', 'become_member') if res: return res['status'], res['msg'], res else: return False, '通信错误了'
def check_dwn_records(phone): conn = tcp_client.tcp_conn() header = {'type': 'user', 'action': 'check_dwn_records'} data = {'phone': phone} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'user', 'check_dwn_records') if res: return res else: print('通信错误了') return []
def manage_user(name, phone, is_lock): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'manage_user'} data = { 'phone': phone, 'is_lock': is_lock, } data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'manage_user') if res: return True, res['msg'] else: return False, '通信错误了'
def get_video_list(header,conn): data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute('''select * from `video`''') video_list = cursor.fetchall() re_header = { 'type': 'admin', 'action': 'get_video_list', } re_data={ 'data':video_list } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def login(name, pwd): conn = tcp_client.tcp_conn() header = {'type': 'admin', 'action': 'login'} # md5加密 md5_obj = hashlib.md5() md5_obj.update(pwd.encode('utf-8')) pwd = md5_obj.hexdigest() data = {'name': name, 'pwd': pwd} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'admin', 'login') if res: return res['status'], res['msg'] else: return False, '通信错误了'
def register(phone, pwd): conn = tcp_client.tcp_conn() header = {'type': 'user', 'action': 'register'} # md5加密 md5_obj = hashlib.md5() md5_obj.update(pwd.encode('utf-8')) pwd = md5_obj.hexdigest() data = {'phone': phone, 'pwd': pwd} data_bytes = struct_tcp.pack_header(header, data) conn.send(data_bytes) res = common.receive_data(conn, 'user', 'register') if res: return True, res['msg'] else: return False, '通信错误了'
def become_member(header, conn): #print('------------冲会员----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute( '''select id,is_delete,money,is_member from `user` where `phone`=%s''', data['phone']) user_info = list(cursor.fetchone()) re_header = { 'type': 'user', 'action': 'become_member', } user_info[2] += data['money'] if user_info[3] == 0: if user_info[2] >= 50: user_info[2] -= 50 user_info[3] = 1 re_data = { 'status': True, 'msg': '冲会员成功', 'money': user_info, } else: re_data = { 'status': True, 'msg': '充值成功,余额咋不足开启会员', 'money': user_info, } else: re_data = { 'status': True, 'msg': '充值成功', 'money': user_info, } try: cursor.execute( '''update `user` set money=%s,is_member=%s where phone=%s''', (user_info[2], user_info[3], data['phone'])) db_conn.commit() except Exception as e: print(e) re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def chech_capital(header,conn): #print('------------查看资金----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute('''select sum(cost) as c,(select count(id) from `user` where is_member=1) as d from dwn_records ''') data_list = cursor.fetchone() re_header = { 'type': 'admin', 'action': 'chech_capital', } re_data = { 'data': data_list } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def check_user(header,conn): #print('------------查看用户----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute('''select id,phone,money,is_member,is_delete from `user` ''') user_list = cursor.fetchall() re_header = { 'type': 'admin', 'action': 'check_user', } re_data = { 'data': user_list } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def chech_notice(header, conn): #print('------------查看公告----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) re_header = { 'type': 'user', 'action': 'chech_notice', } cursor.execute('''select id,content from notice where is_delete=0''') notice_list = cursor.fetchall() if not notice_list: re_data = {'status': True, 'msg': '暂无公告', 'data': notice_list} else: re_data = {'status': True, 'msg': '查询成功', 'data': notice_list} re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def login(header, conn): #print('------------登录----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) cursor.execute( '''select id,is_delete,money,is_member from `user` where `phone`=%s and pwd=%s''', (data['phone'], data['pwd'])) user_info = cursor.fetchone() re_header = { 'type': 'user', 'action': 'login', } if user_info: if user_info[1] == 1: re_data = {'status': False, 'msg': '账户已被锁定'} else: re_data = {'status': True, 'msg': '登录成功', 'data': user_info} else: re_data = {'status': False, 'msg': '用户名或密码错误'} re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)
def login(header,conn): # print('------------登录----------') data_len = header['len'] data_bytes = conn.recv(data_len) data = struct_tcp.decode_header_bytes_or_data_bytes(data_bytes) print(data) cursor.execute('''select id from `admin` where `name`=%s and pwd=%s''', (data['name'],data['pwd'])) admin_info = cursor.fetchone() re_header = { 'type': 'admin', 'action': 'login', } if admin_info: re_data = { 'status':True, 'msg':'登录成功' } else: re_data = { 'status': False, 'msg': '用户名或密码错误' } re_data_bytes = struct_tcp.pack_header(re_header, re_data) conn.send(re_data_bytes)