def register_interface(back_dic, conn): """ 用户注册接口 :param bacd_dic: :param conn: """ username = back_dic.get('username') user_pwd = back_dic.get('pwd') user_type = back_dic.get('user_type') user_obj = Models.UserInfo.sql_select(user_name=username) user_pwd = common.get_md5(user_pwd) # 判断用户是否存在 if not user_obj: user_reg = Models.UserInfo( user_name=username, user_pwd=user_pwd, is_vip=0, is_locked=0, user_type=user_type, register_time=datetime.datetime.now() ) user_reg.sql_save() send_dic = { 'flag': True, 'msg': '注册成功!' } else: send_dic = { 'flag': False, 'msg': '用户已经存在!' } common.send_msg(send_dic, conn)
def login(back_dic, conn): user_list = models.User.select(name=back_dic.get('name')) user_obj = user_list[0] if user_list: if back_dic.get('user_type') == user_obj.user_type: if back_dic.get('password') == user_obj.password: send_dic = {'flag': True, 'msg': '登录成功!'} session = common.get_session(back_dic.get('name')) user_data.mutex.acquire() user_data.alive_user[back_dic.get('addr')] = [ session, user_obj.id ] user_data.mutex.release() send_dic['session'] = session send_dic['is_vip'] = user_obj.is_vip # 普通用户加公告 if back_dic.get('user_type') == 'user': notice = user_interface.get_notice_list(1) send_dic['notice'] = notice else: send_dic = {'flag': False, 'msg': '密码错误,请确认!'} else: send_dic = {'flag': False, 'msg': '当前用户不是被许可登录的类型!'} else: send_dic = {'flag': False, 'msg': '当前用户不存在!'} common.send_msg(send_dic, conn)
def delete_movie(conn): send_dic = { "type": "get_movie_list", "session": user_info.get("cookies"), "is_free": 2 } back_dic = common.send_msg(send_dic, conn) if back_dic.get("flag"): movie_list = back_dic.get("msg") for index, movie in enumerate(movie_list): print(index, movie) choice = input("请输入电影编号") if choice.isdigit() and int(choice) in range(len(movie_list)): choice = int(choice) movie_info = movie_list[choice] movie_id = movie_info[0] send_dic = { "type": "delete_movie", "session": user_info.get("cookies"), "movie_id": movie_id, } back_dic = common.send_msg(send_dic, conn) print(back_dic.get("msg")) else: print(back_dic.get("msg"))
def download_nofree_movie_interface(back_dic, conn): movie_name = back_dic.get('movie_name') movie_path = os.path.join(settings.DOWNLOAD_PATH, movie_name) movie_size = os.path.getsize(movie_path) movie_path = os.path.join(settings.DOWNLOAD_PATH, movie_name) user_obj = models.User.select(user_id=back_dic.get('user_id'))[0] if not user_obj.is_vip: send_dic = {'flag': False, 'msg': '由于你不是vip用户,不能下载收费视频!'} print(send_dic) common.send_msg(send_dic, conn) else: send_dic = { 'flag': True, 'msg': '由于是vip用户,不需要等待广告时间', 'movie_size': movie_size } download_record_obj = models.DownLoadRecord( user_id=back_dic.get('user_id'), movie_id=back_dic.get('movie_id'), download_time=datetime.datetime.now()) download_record_obj.save() print(send_dic) common.send_msg(send_dic, conn, movie_path)
def check_notice(back_dic, conn): back_list = get_notice_list() if back_list: send_dic = {'flag': True, 'back_list': back_list} else: send_dic = {'flag': False, 'msg': '暂无公告'} common.send_msg(send_dic, conn)
def upload_movie(recv_dic,conn): # 电影是已经纯在的 直接上他 file_name = common.get_session() + recv_dic['movie_name'] file_size = recv_dic['file_size'] path = os.path.join(setttings.UPLOAD_MOVIE_PATH,file_name) movie_obj = models.Movie(name=file_name, path=path, is_free=recv_dic['is_free'], file_md5=recv_dic['file_md5'], is_delete=0, upload_time=common.get_time(), user_id=recv_dic['user_id']) # 写文键 recv_size= 0 with open(path,'wb')as f: while recv_size<file_size: data = conn.recv(1024) f.write(data) recv_size += len(data) print('下载成功') send_dic = {"flag":True,'msg':'上传成功'} movie_obj.save() common.send_msg(send_dic,conn)
def delete_movies_interface(back_dic, conn): """ 根据电影id删除电影 :param back_dic: :param conn: """ movie_id = back_dic.get('movie_id') movie_obj_list = Models.Movie.sql_select(movie_id=movie_id) if movie_obj_list: # 删除电影记录 movie_obj = movie_obj_list[0] movie_obj.is_delete = 1 movie_obj.sql_update() send_dic = { 'flag': True, 'msg': '电影删除成功!' } else: send_dic = { 'flag': False, 'msg': '删除的电影不存在' } common.send_msg(send_dic, conn)
def login(recvc_dic, conn): user_list = models.User.select(name=recvc_dic['name']) if user_list: user_obj = user_list[0] if user_obj.user_type == recvc_dic['user_type']: if user_obj.password == recvc_dic['password']: send_dic = {'flag': True, 'msg': '登陆成功'} # session session = common.get_session() send_dic['session'] = session mutex.acquire() user_date.alive_dic[recvc_dic['addr']] = [ session, user_obj.id ] # 保护数据 mutex.release() # 后期加公告 new_notice = user_interface.notice_by_count(1)[0] send_dic['new_notice'] = new_notice send_dic['is_vip'] = user_obj.is_vip else: send_dic = {'flag': False, 'msg': '两次密码不一致'} else: send_dic = {'flag': False, 'msg': '用户类型不一致'} else: send_dic = {'flag': False, 'msg': '用户不存在'} common.send_msg(send_dic, conn)
def get_movie_list(recv_dic, conn): # 获取所有的点电影 movie_list = models.Movie.select() back_movie_list = [] if movie_list: for movie in movie_list: if not movie.is_delete: # 电影名 是否免费 id if recv_dic['movie_type'] == 'all': back_movie_list.append([ movie.name, '免费' if movie.is_free else '收费', movie.id ]) elif recv_dic['movie_type'] == 'free': if movie.is_free: back_movie_list.append([movie.name, '免费', movie.id]) else: if not movie.is_free: back_movie_list.append([movie.name, '收费', movie.id]) if back_movie_list: send_dic = {'flag': True, 'movie_list': back_movie_list} else: send_dic = {'flag': False, 'msg': '暂无电影'} else: send_dic = {'flag': False, 'msg': '数据库暂无电影'} common.send_msg(send_dic, conn)
def register_interface(back_dic, conn): # 面条版: 业务逻辑 username = back_dic.get('username') user_obj = Models.User.select(user_name=username) # [obj] print(user_obj) # [] if not user_obj: password = back_dic.get('password') # 创建数据 user_obj = Models.User(user_name=username, pwd=common.get_md5(password), user_type=back_dic.get('user_type'), register_time=datetime.datetime.now(), is_vip=0, is_locked=0) user_obj.save() send_dic = {'flag': True, 'msg': '注册成功!'} else: send_dic = {'flag': False, 'msg': '用户已存在!'} print(1111) common.send_msg(send_dic, conn)
def upload_movie_interface(user_dic, conn): movie_name = user_dic.get("movie_name") movie_path = os.path.join(settings.DOWNLOAD_MOVIES_PATH, movie_name) movie_size = user_dic.get("movie_size") recv_len = 0 with open(movie_path, "wb") as f: while recv_len < movie_size: recv_data = conn.recv(1024) f.write(recv_data) recv_len += len(recv_data) movie_obj = models.Movie( movie_name=movie_name, is_free=user_dic.get("is_vip"), is_delete=0, file_md5=user_dic.get("movie_md5"), path=movie_path, upload_time=datetime.datetime.now(), user_id=user_dic.get("user_id"), ) movie_obj.instert_sql() send_dic = { "flag": True, "msg": "上传成功", } common.send_msg(send_dic, conn)
def login_interface(back_dic, conn): user_name = back_dic.get('name') user_pwd = common.get_pwd_md5(back_dic.get('pwd')) user_type = back_dic.get('user_type') user_obj_list = models.User.select(user_name=user_name) if user_obj_list: for user_obj in user_obj_list: if user_obj.user_type == user_type: if user_obj.pwd == user_pwd: session = common.get_session_md5(user_name) addr = back_dic.get('addr') user_data.metux.acquire() user_data.online_user[addr] = [session, user_obj.user_id] user_data.metux.release() send_dic = { 'flag': True, 'msg': '用户登录成功!', 'session': session } else: send_dic = {'flag': False, 'msg': '该用户密码错误!'} break else: send_dic = {'flag': False, 'msg': '该用户不存在!'} else: send_dic = {'flag': False, 'msg': '该用户不存在!'} print(send_dic) common.send_msg(send_dic, conn)
def download_movie_interface(back_dic, conn): # 获取电影路径 movie_path = os.path.join(settings.DOWNLOAD_MOVIES_PATH, back_dic.get('movie_name')) # 获取电影大小 movie_size = os.path.getsize(movie_path) # 若当前下载用户不是会员,设置40秒广告时间 wait_time = 0 is_vip = back_dic.get('is_vip') if not is_vip: wait_time = 40 send_dic = {'flag': True, 'movie_size': movie_size, 'wait_time': wait_time} common.send_msg(send_dic, conn, file=movie_path) # 3.下载电影记录保存 record_obj = Models.DownloadRecord(user_id=back_dic.get('user_id'), movie_id=back_dic.get('movie_id'), download_time=datetime.datetime.now()) record_obj.save()
def check_movie(back_dic, conn): movie_list = models.Movie.select(file_md5=back_dic.get('file_md5')) if movie_list: send_dic = {'flag': False, 'msg': '当前电影已存在'} else: send_dic = {'flag': True, 'msg': '可以上传'} common.send_msg(send_dic, conn)
def send_notice_interface(back_dic, conn): """ 管理员发布公告 :param back_dic: :param conn: """ # 获取公告标题和内容 title = back_dic.get("title") content = back_dic.get('content') notice_obj = Models.Notice( title=title, content=content, create_time=datetime.datetime.now(), user_id=back_dic.get('user_id') ) # 保存发布的公告 notice_obj.sql_save() send_dic = { 'flag': True, 'msg': '公告发布成功!', } common.send_msg(send_dic, conn)
def delete_movie(back_dic, conn): movie_list = models.Movie.select(id=back_dic.get('movie_id')) movie_obj = movie_list[0] movie_obj.is_delete = 1 movie_obj.update() send_dic = {'flag': True, 'msg': '删除成功'} common.send_msg(send_dic, conn)
def register_interface(back_dic, conn): user_name = back_dic.get('name') user_pwd = common.get_pwd_md5(back_dic.get('pwd')) user_type = back_dic.get('user_type') user_obj_list = models.User.select(user_name=user_name) if user_obj_list: for user_obj in user_obj_list: if user_obj.user_type == user_type: send_dic = {'flag': False, 'msg': '该用户已经存在了!'} break else: user_obj = models.User(user_name=user_name, pwd=user_pwd, is_vip=0, is_locked=0, user_type=user_type, register_time=datetime.datetime.now()) user_obj.save() send_dic = {'flag': True, 'msg': '用户注册成功'} else: user_obj = models.User(user_name=user_name, pwd=user_pwd, is_vip=0, is_locked=0, user_type=user_type, register_time=datetime.datetime.now()) user_obj.save() send_dic = {'flag': True, 'msg': '用户注册成功'} print(send_dic) common.send_msg(send_dic, conn)
def upload_movie_interface(back_dic, conn): # 1.服务端接收客户端传入的文件 # 获取电影大小,用于接收 movie_size = back_dic.get('movie_size') movie_name = back_dic.get('movie_name') # wagohawoighwioaghwoagjwa + 电影的名字.mp4 movie_new_name = common.get_session(movie_name) + movie_name movie_path = os.path.join(settings.DOWNLOAD_MOVIES_PATH, movie_new_name) recv_data = 0 with open(movie_path, 'wb') as f: while recv_data < movie_size: data = conn.recv(1024) f.write(data) recv_data += len(data) # 2.存储电影信息于电影表中 movie_obj = Models.Movie(movie_name=movie_new_name, is_free=back_dic.get('is_free'), is_delete=0, file_md5=back_dic.get('movie_md5'), path=movie_path, upload_time=datetime.datetime.now(), user_id=back_dic.get('user_id')) movie_obj.save() send_dic = {'flag': True, 'msg': '电影上传成功!'} common.send_msg(send_dic, conn)
def check_recore_interface(back_dic, conn): user_id = back_dic.get('user_id') down_record = Models.DownloadRecord.sql_select() movie_record_list = [] if down_record: for record in down_record: # 判断下载用户id是否与当前用户id相同 if record.user_id == user_id: # 获取当前记录下载的电影id,获取电影名称 movie_obj = Models.Movie.sql_select(movie_id=record.movie_id)[0] movie_record_list.append( movie_obj.movie_name ) if movie_record_list: send_dic = { 'flag': True, 'record_list': movie_record_list } else: send_dic = { 'flag': False, 'msg': '当前用户没有下载记录' } else: send_dic = { 'flag': False, 'msg': '没有下载记录!' } common.send_msg(send_dic, conn)
def upload_movie_interface(back_doc,conn): # 获取用户传过来的字典的相关信息 movie_md5 = back_doc.get('movie_md5') movie_size = back_doc.get('movie_size') is_free = back_doc.get('is_free') movie_name = back_doc.get('movie_name') # 先获取电影的名字,加密过后的 movie_new_name = common.get_session_md5(movie_name)+movie_name # 获取电影的存放地址 movie_path = os.path.join(settings.DOWNLOAD_PATH,movie_new_name) recv_data = 0 # 接收电影数据 with open(movie_path,'wb') as fw: while recv_data < movie_size: data = conn.recv(1024) fw.write(data) recv_data += len(data) # 持久化存储到数据库 movie_obj = models.Movie(movie_name = movie_new_name, is_free = 1 if is_free=='Y'or is_free =='y' else 0, is_delete = 0, file_md5 = movie_md5, path = movie_path, upload_time = datetime.datetime.now(), user_id = back_doc.get('user_id')) movie_obj.save() # 向客户端返回信息 send_dic = {'flag':True,'msg':'电影上传成功'} common.send_msg(send_dic,conn)
def download_free_movie(client): while True: # 先向服务端获取免费的电影 send_dic = { 'type': 'get_movie_list', 'session': user_info.get('cookies'), 'movie_type': 'free' } back_dic = common.send_msg(send_dic, client) # 判断是否有免费电影可以下载 if back_dic.get('flag'): movie_list = back_dic.get('movie_list') for i, movie in enumerate(movie_list): print(f'{i}--{movie}') choice = input('请选择需要下载的的电影编号:').strip() if choice == 'q': break if not choice.isdigit(): print('必须是数字!') continue choice = int(choice) if choice not in range(len(movie_list)): print('输入错误!') continue movie_name, movie_is_free, movie_id = movie_list[choice] # 用户选择为需要下载的电影编号,发送给服务端 send_dic = { 'type': 'download_free_movie', 'session': user_info.get('cookies'), 'movie_name': movie_name, 'movie_id': movie_id, 'movie_is_free': movie_is_free } back_dic = common.send_msg(send_dic, client) if back_dic.get('flag'): movie_path = os.path.join(settings.DOWNLOAD_PATH, movie_name) movie_size = back_dic.get('movie_size') print(back_dic.get('msg')) time.sleep(back_dic.get('wait')) print('电影开始下载。。。。。。') recv_data = 0 with open(movie_path, 'wb') as fw: while recv_data < movie_size: data = client.recv(1024) fw.write(data) recv_data += len(data) print('电影下载成功') break else: print(back_dic.get('msg')) break else: print(back_dic.get('msg')) break
def check_movie(recv_dic,conn): # 查看要上传的电影是否村咋i movie_list = models.Movie.select(file_md5=recv_dic['file_md5']) if not movie_list: send_dic = {'flag':True,'msg':'可以上传'} else: send_dic = {'flag':False,'msg':'电影已存在'} common.send_msg(send_dic,conn)
def release_notice(back_dic, conn): notice_obj = models.Notice(title=back_dic.get('title'), content=back_dic.get('content'), create_time=common.get_now_time(), user_id=back_dic.get('user_id')) notice_obj.insert() send_dic = {'flag': True, 'msg': '公告发布成功'} common.send_msg(send_dic, conn)
def login_interface(back_dic, conn): """ 用户登录接口 :param back_dic: :param conn: """ username = back_dic.get('username') pwd = back_dic.get('pwd') user_pwd = common.get_md5(pwd) user_obj = Models.UserInfo.sql_select(user_name=username) # 在服务器中保存session信息 addr = back_dic.get('addr') if user_obj: user_obj = user_obj[0] # 判断密码是否相同 if user_obj.user_pwd == user_pwd: send_dic = { 'flag': True, 'msg': '登录成功', 'is_vip': user_obj.is_vip, 'new_notice': None } session = common.get_session(username) send_dic['session'] = session # 将登录信息保存到online_info中 lock.acquire() user_data.online_info[addr] = [session, user_obj.user_id] # 保存,session 和用户id用户登录验证 lock.release() # 获取最新公告 new_notice = common_interface.get_new_notice_interface() send_dic['new_notice'] = new_notice else: send_dic = { 'flag': False, 'msg': '用户名或密码错误' } else: send_dic = { 'flag': False, 'msg': '用户不存在,还不去注册去' } # {"('127.0.0.1', 63696)": ['104207c87d76dba69375219c4909eb85', 1]} # print(user_data.online_info) # print(user_data.mutex) common.send_msg(send_dic, conn)
def delete_movie_interface(user_dic, conn): movie_obj = models.Movie.select_sql(movie_id=user_dic.get("movie_id"))[0] movie_obj.is_delete = 1 movie_obj.update_sql() send_dic = { "flag": True, "msg": "删除成功", } common.send_msg(send_dic, conn)
def check_movie_interface(back_dic, conn): movie_obj = models.Movie.select(file_md5=back_dic.get('movie_md5')) if movie_obj: send_dic = {'flag': False, 'msg': '电影已经存在了!'} else: send_dic = {'flag': True, 'msg': '电影可以上传'} print(send_dic) common.send_msg(send_dic, conn)
def delete_movie_interface(back_dic, conn): movie_id = back_dic.get('movie_id') movie_obj = Models.Movie.select(movie_id=movie_id)[0] print(movie_obj.is_delete) movie_obj.is_delete = 1 # 0 --> 1 movie_obj.sql_update() send_dic = {'flag': True, 'msg': '电影删除成功!'} common.send_msg(send_dic, conn)
def delete_movie_interface(back_dic,conn): movie_obj = models.Movie.select(movie_id = back_dic.get('movie_id'))[0] movie_obj.is_delete = 1 movie_obj.sql_update() send_dic = {'flag':True,'msg':'电影已经删除!'} print(send_dic) common.send_msg(send_dic,conn)
def func(back_dic, conn): if back_dic.get('type') not in func_dic: send_dic = {'flag': False, 'msg': '请求错误!'} common.send_msg(send_dic, conn) else: print('进入', back_dic.get('type')) func_dic[back_dic.get('type')](back_dic, conn) print('结束', back_dic.get('type'))
def pay_vip_interface(user_dic, conn): user_obj = models.User.select_sql(user_id=user_dic.get("user_id"))[0] user_obj.is_vip = 1 user_obj.update_sql() send_dic = { "flag": True, "msg": "会员充值成功", } common.send_msg(send_dic, conn)