예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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"))
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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()
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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)
예제 #20
0
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)
예제 #21
0
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
예제 #22
0
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)
예제 #23
0
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)
예제 #24
0
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)
예제 #25
0
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)
예제 #26
0
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)
예제 #27
0
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)
예제 #28
0
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)
예제 #29
0
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'))
예제 #30
0
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)