Example #1
0
    def post(self, request):
        params = get_parameter_dic(request)
        name = params.get('name', None)
        app = get_app_config(name).id
        cod = params.get('cod', None)
        As_ds = params.get('As_ds', None)
        num = params.get('num', 100)

        try:
            if As_ds is None or As_ds == 'as':
                game_info = GameInfo.objects.filter(
                    game_id=app).order_by('-' + cod)[:num]
            else:
                game_info = GameInfo.objects.filter(
                    game_id=app).order_by(cod)[:num]
            status = 1
            mes = '排序数据'
            info = [{
                **(model_to_dict(info,
                                 fields=[
                                     'level', 'grade', 'score', 'property'
                                 ])),
                **(model_to_dict(info.user_id,
                                 fields=['nick_name', 'avatar_url']))
            } for info in game_info]
        except:
            status = 0
            mes = '不能依据此字段排序'
            info = None
        return Response({
            'status': status,
            'mes': mes,
            'info': info
        },
                        status=HTTP_200_OK)
Example #2
0
    def put(self, request):
        # to do 修改学习完成的时间
        """
            @api {PUT} /api/knowlage/ 更新知识状态 弃用
            @api {PUT} /api/knowlage/ 更新知识状态 弃用
            @apiVersion 0.0.1
            @apiDescription 更新知识学习完成时间,根据知识所需时间添加定时任务,在过程中,用户观看广告减少时间
            @apiName 更新知识学习完成时间
            @apiGroup Delete
            @apiHeader {string} Authorization jwt验证秘钥必须添加次内容请求

            @apiParam {String} name 游戏名字,参数必须
            @apiParam {string} time 所减少的时间,以分钟为单位来计算
            @apiSuccess {String} status 请求状态
            @apiSuccess {String} mes 提示信息
        """
        params = get_parameter_dic(request)
        user = request.user.id
        game_info = GameInfo.objects.get(
            user_id=int(user),
            game_id=int(get_app_config(params.get('name')).id))
        recoding = MengYou_recoding.objects.filter(
            game_info=game_info, knowlage_id=params.get('id'))
        # 分钟为单位
        shorten_time = params.get('time')
        recoding.send_time = recoding.send_time - datetime.timedelta(
            minutes=float(shorten_time))
        recoding.save()
        if game_info.is_subscription is True:
            pass
Example #3
0
    def post(self, request):
        """
              @api {POST} /api/dirayImage/ 日记加图片
              @apiVersion 0.0.1
              @apiName 日记加图片
              @apiGroup 萌上日记

              @apiHeader {string} Authorization jwt验证秘钥必须添加次内容请求
              @apiParam {String} id 日记id
              @apiParam {String} img 图片内容

              @apiError {String} message token 错误,或者没有携带
              @apiSuccessExample Success-Response:
              HTTP/1.1 200 OK
              HTTP/1.1 200 OK
              {
                "status": 1,
                "mes": "上传图片"
              }
              @apiErrorExample Error-Response:
              {
                  "detail": "Given token not valid for any token type",
                  "code": "token_not_valid",
                  "messages": [
                      {
                          "token_class": "AccessToken",
                          "token_type": "access",
                          "message": "Token is invalid or expired"
                      }
                  ]
              }
              '请求需要携带token '
        """
        params = get_parameter_dic(request)
        diray = Diray.objects.get(id=params.get('id'))
        img = params.get('img')
        diray_image = DirayImage.objects.create(diray=diray, img=img)
        diray_image.save()
        status = 1
        mes = '上传图片成功'
        return Response({'status': status, 'mes': mes}, status=HTTP_200_OK)
Example #4
0
    def post(self, request):
        """"
        :return 随机返回未学习过的知识
        @api {POST} /api/knowlage/ 获取知识-更新版
        @apiVersion 0.0.1
        @apiDescription 获取学习知识,随机返回一条,获取已学习知识,分页,20条为一页
        @apiName 获取知识-或者获取已经学习的知识
        @apiGroup 萌游知知

        @apiHeader {string} Authorization jwt验证秘钥必须添加次内容请求

        @apiParam {String} name 游戏名字,参数必须
        @apiParam {String} over 已经学习过的数据,参数可选,不携带就是随机获取一条数据,携带就是获取学习过数据
        @apiParam {String} page 获取已经学习过的数据页数,参数可选,不携带默认第一页


        @apiSuccess {String} status 请求状态
        @apiSuccess {String} mes 提示信息
        @apiSuccess {json} knowlage 返回的知识数据
        @apiSuccess {json} knowlage 学习过的知识

        @apiSuccessExample Success-Response:
        HTTP/1.1 200 OK
        未携带over 随机返回,但数据库已经没有
        {
        "status": 0,
        "mes": "没有知识",
        "knowlage": null
        }
        携带over, 返回已经学习过的
        {
            "status": 1,
            "mes": "已经学习的知识",
            "page":"1",
            "knowlage": [
                {
                    "id": 12,
                    "title": "第2课",
                    "voice": "/static/voice/第2课.mp3",
                    "text": "说话内容",
                    "level": "1",
                    "status": false
                }
            ]


        }
        """
        params = get_parameter_dic(request)
        user = request.user.id
        game_info = GameInfo.objects.get(
            user_id=int(user),
            game_id=int(get_app_config(params.get('name')).id))
        # knowlage_ing = None
        if params.get('over', None) is None:
            knowlage = MengYou_knowlage.objects.exclude(id__in=[
                i.knowlage.id
                for i in MengYou_recoding.objects.filter(game_info=game_info)
            ]).filter(is_check=True, status=True).order_by('?').first()
            if knowlage:
                status = 1
                mes = '随机返回的学习知识'
                knowlage = model_to_dict(knowlage,
                                         fields=[
                                             'id', 'title', 'voice', 'text',
                                             'img.url', 'level', 'status',
                                             'need'
                                         ])
            else:
                status = 0
                mes = '没有知识'
                knowlage = None
            return Response(
                {
                    'status': status,
                    'mes': mes,
                    'knowlage': knowlage,
                },
                status=HTTP_200_OK)
        else:
            knowlage = MengYou_knowlage.objects.filter(id__in=[
                i.knowlage.id
                for i in MengYou_recoding.objects.filter(game_info=game_info,
                                                         is_over=True)
            ],
                                                       status=True)
            status = 1
            mes = '已经学习过知识'
            knowlage = [
                model_to_dict(know,
                              fields=[
                                  'id', 'title', 'voice', 'text', 'img.url',
                                  'level', 'status'
                              ]) for know in knowlage
            ]
            # knowlage_ing = MengYou_knowlage.objects.filter(
            #     id__in=[i.knowlage.id for i in MengYou_recoding.objects.filter(game_info=game_info, is_over=False)],
            #     status=True)
            # knowlage_ing = [
            #     {**(model_to_dict(know, fields=['id', 'title', 'voice', 'text', 'img.url', 'level', 'status'])),
            #      **(model_to_dict(know.knowlage_recod, fields=['send_time']))}
            #     for
            #     know in
            #     knowlage_ing]
            if params.get('page', None) is None:
                if len(knowlage) > 20:
                    knowlage = knowlage[:20]
                page = 1
            else:
                page = params.get('page')
                if int(len(knowlage) / 20) - params.get('page') > 1:
                    knowlage = knowlage[20 * params.get('page'):20 +
                                        20 * params.get('page')]
                else:
                    knowlage = knowlage[20 * params.get('page'):]
            return Response(
                {
                    'status': status,
                    'mes': mes,
                    'page': page,
                    'knowlage': knowlage,
                    # 'knowlage_ing': knowlage_ing,
                },
                status=HTTP_200_OK)
Example #5
0
    def get(self, request):
        """
            @api {GET} /api/knowlage/ 知识学习状态
            @apiVersion 0.0.1
            @apiDescription  调用此接口会提示用户已经学习此知识,可以去获取新的
            @apiName 知识学习状态
            @apiGroup 萌游知知
            @apiHeader {string} Authorization jwt验证秘钥必须添加次内容请求

            @apiParam {String} name 游戏名字,参数必须
            @apiParam {String} id 知识唯一标识id

            @apiSuccess {String} status 请求状态
            @apiSuccess {String} mes 提示信息
            @apiSuccessExample Success-Response:
            HTTP/1.1 200 OK
            # 确定开始学习
            {
                'status': 1,
                'mes': '用户已经学习此知识'
             }
            #  已经开始学习了,等待学习完才能开始新的
            # {
            #     "status": 0,
            #     "mes": "知识学习开始学习"
            # }
        """
        params = get_parameter_dic(request)
        user = request.user.id
        game_info = GameInfo.objects.get(
            user_id=int(user),
            game_id=int(get_app_config(params.get('name')).id))
        recoding = MengYou_recoding(game_info=game_info,
                                    knowlage_id=params.get('id'))
        recoding.is_over = True
        recoding.save()
        # if len(recoding) == 0:
        #     recoding = MengYou_recoding.objects.create(game_info=game_info, knowlage_id=params.get('id'))
        # 用户接受订阅
        # if game_info.is_subscription is True:
        # pass
        # to do : add job send_mes
        # data = {
        #     'touser': game_info.user_id.openid,
        #     'template_id': 'xi8fGRkUN5SldKRNzfvfay9GJwuDEvE8q6yFqH53fgw',
        #     'data': {
        #         "character_string1": {"value": '20'},
        #         "thing2": {"value": '很抱歉'},
        #         "thing4": {'value': 'ok'},
        #         "character_string5": {"value": '100'},
        #         "thing3": {"value": '体力回满了'}
        #     }
        # }
        # scheduler.add_job(send_mes, 'date',
        #                   id='MY' + str(recoding.id),
        #                   run_date=recoding.send_time,
        #                   args=[game_info.game_id.app_id, game_info.game_id.secret, data])
        # scheduler.start()
        # time.strftime("%Y-%b-%d %H:%M:%S", recoding.send_time))
        # scheduler.resume_job('MY'+str(recoding.id))
        # 一次订阅
        # game_info.is_subscription = False
        # game_info.save()
        # scheduler.add_job(change_status, 'date', id='MYCH' + str(recoding.id), run_date=recoding.send_time,
        #                   args=[recoding])
        return Response({'status': 1, 'mes': '用户已经学习此知识'}, status=HTTP_200_OK)