Пример #1
0
def play_mini_program():
    try:
        res = request.get_json()
        mini_program_id = res.get('mini_program_id')
        user_id = res.get('user_id')
        start_time = res.get('start_time')
        end_time = res.get('end_time')

        Logging.logger.info('request_args:{0}'.format(res))
        if not all([mini_program_id, user_id]):
            return jsonify(errno=-1, errmsg="参数不完整")

        try:
            mini_program_id = int(mini_program_id)
            user_id = int(user_id)
            start_time = int(start_time)
            end_time = int(end_time)
        except Exception as e:
            Logging.logger.error('errmsg:{0}'.format(e))
            return jsonify(errno=-1, errmsg='参数类型错误')

        mini_obj = ChangeAmount.query.get(mini_program_id)
        user_obj = User.query.get(user_id)
        if not mini_obj or not user_obj:
            return jsonify(errno=-1, errmsg="参数错误")

        dif_time = end_time - start_time
        if dif_time < 20:
            return jsonify(errno=-1, errmsg="试玩时间不足奖励标准")

        # 获取今天零点
        today = get_today()
        obj = ChangeAmountUser.query.filter(ChangeAmountUser.user_id == user_id,
                                            ChangeAmountUser.mini_program_id == mini_program_id,
                                            ChangeAmountUser.create_time >= today).first()
        if obj:
            return jsonify(errno=-1, errmsg="今天已经试玩过了")
        else:
            play = ChangeAmountUser()
            play.mini_program_id = mini_program_id
            play.user_id = user_id
            play.coin = mini_obj.coin
            play.start_time = date_time(start_time)
            play.end_time = date_time(end_time)

            user_obj.coins += mini_obj.coin
            db.session.add(user_obj)
            db.session.add(play)
            db.session.commit()
        return jsonify(errno=0, errmsg="OK", coin=mini_obj.coin)
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        db.session.rollback()
        return jsonify(errno=-1, errmsg='网络异常')
Пример #2
0
def play_for_coins():
    try:
        res = request.get_json()
        user_id = res.get('user_id')
        mini_program_id = res.get('mini_program_id')
        openGId = res.get('openGId')  # 用户分享的微信群的唯一标识

        Logging.logger.info('request_args:{0}'.format(res))
        if not all([user_id, mini_program_id, openGId]):
            return jsonify(errno=-1, errmsg='参数不完整')

        try:
            user_id = int(user_id)
            mini_program_id = int(mini_program_id)
        except Exception as e:
            Logging.logger.error('errmsg:{0}'.format(e))
            return jsonify(errno=-1, errmsg='参数类型错误')

        mini_obj = ChangeAmount.query.get(mini_program_id)
        user_obj = User.query.get(user_id)
        if not mini_obj or not user_obj:
            return jsonify(errno=-1, errmsg="参数错误")

        # 获取今天零点
        today = get_today()
        obj = AfterPlayShare.query.filter(AfterPlayShare.user_id == user_id,
                                          AfterPlayShare.mini_program_id == mini_program_id,
                                          AfterPlayShare.openGId == openGId,
                                          AfterPlayShare.create_time >= today).first()
        if obj:
            return jsonify(errno=-1, errmsg="请换个群来换取奖励")

        random_coins = float('%.2f' % random.uniform(1, 3))
        # random_coins = float('%.2f' % random.uniform(2, 6))
        user_obj.coins += random_coins

        play = AfterPlayShare()
        play.openGId = openGId
        play.mini_program_id = mini_program_id
        play.user_id = user_id
        play.random_coins = random_coins

        db.session.add(play)
        db.session.add(user_obj)
        db.session.commit()
        return jsonify(errno=0, errmsg="OK", coins=random_coins, total_coins=user_obj.coins)
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        db.session.rollback()
        return jsonify(errno=-1, errmsg='兑换失败')
Пример #3
0
def update_inform():
    try:
        today = get_today()  # 当天零点
        yesterday = today + datetime.timedelta(days=-1)  # 昨天零点

        # 筛选昨天点过的用户
        results = UserBTN.query.filter(UserBTN.btn_num == 6, UserBTN.create_time >= yesterday,
                                       UserBTN.create_time < today).all()
        # results = UserBTN.query.filter(UserBTN.btn_num == 6).all()
        # 用户有点击相应btn, 指定时间发通知
        if results:
            # now = datetime.datetime.now()
            for result in results:
                # 推送模板消息
                # 1天后/12点发小程序文章更新提醒
                # Logging.logger.info('用户点击时间:{0}'.format(str(result.create_time)))
                # first_time = result.create_time + datetime.timedelta(days=+1)
                # if first_time.day == now.day and now.hour == 12:
                # if first_time.day == now.day:
                # if now.hour == 18:
                # nohup 定时掉了接口
                response = new_article_update_inform(result)
                if response:
                    if response.get('errcode') != 0:
                        new_article_update_inform(result)

                # 1天后/20点发步数兑换提醒
                # elif first_time.day == now.day and now.hour == 20:
                # elif first_time.day == now.day:
                # elif now.hour == 20:
                #     response = wechat_steps_inform(result)
                #     if response:
                #         if response.get('errcode') != 0:
                #             wechat_steps_inform(result)
                # else:
                #     pass

        return jsonify(errno=0, errmsg="OK")
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        db.session.rollback()
        return jsonify(errno=-1, errmsg="网络异常")
Пример #4
0
def get_user_coins():
    try:
        res = request.get_json()
        user_id = res.get('user_id')

        Logging.logger.info('request_args:{0}'.format(res))
        user = User.query.get(user_id)
        if not user:
            return jsonify(errno="-1", errmsg='用户不存在')

        user_info = dict()
        user_info['is_sign'] = user.is_sign
        user_info['sign_coin'] = user.sign_coin
        user_info['coins'] = user.coins
        today = get_today()
        user_steps = UserSteps.query.filter(UserSteps.user_id == user_id, UserSteps.change_step_date >= today).all()
        change_step = 0
        if user_steps:
            for user_step in user_steps:
                change_step += user_step.change_step
        available_step = user.wechat_step + user.steal_step - change_step
        user_info['available_step'] = available_step
        # 判断用户观看小视频成功上限  暂定10次
        movie_nums = LookVideoRecord.query.filter(LookVideoRecord.user_id == user_id,
                                                  LookVideoRecord.create_time >= today).count()
        if movie_nums >= 10:
            user_info['is_movie'] = -1
        else:
            user_info['is_movie'] = 0
        # 判断当日首次登陆
        login_day = RedOpneDay.query.filter(RedOpneDay.user_id == user_id, RedOpneDay.create_time >= today).count()
        if login_day:
            user_info['login_day'] = -1
        else:
            user_info['login_day'] = 0
        return jsonify(errno=0, errmsg="OK", user_info=user_info)
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        db.session.rollback()
        return jsonify(errno="-1", errmsg='网络异常')
Пример #5
0
def mini_program():
    try:
        res = request.get_json()
        user_id = res.get('user_id')

        Logging.logger.info('request_args:{0}'.format(res))
        user = User.query.get(user_id)
        if not user:
            return jsonify(errno=-1, errmsg='用户不存在')

        # 获取今天零点
        today = get_today()
        results = ChangeAmountUser.query.filter(ChangeAmountUser.user_id == user_id,
                                                ChangeAmountUser.create_time >= today).all()
        data_dict = dict()
        if results:
            # 用户今日已获得奖励的换量小程序ID
            mini_program_id_ls = [x.mini_program_id for x in results]
            result = ChangeAmount.query.filter(ChangeAmount.id.notin_(mini_program_id_ls),
                                               ChangeAmount.is_show == 1).order_by(ChangeAmount.sort_num.asc()).first()
        else:
            result = ChangeAmount.query.filter(ChangeAmount.is_show == 1).order_by(ChangeAmount.sort_num.asc()).first()

        if result:
            data_dict['mini_program_id'] = result.id
            data_dict['name'] = result.name
            data_dict['img_url'] = result.img_url
            data_dict['sort_num'] = result.sort_num
            data_dict['coin'] = result.coin
            data_dict['app_id'] = result.app_id
            data_dict['words'] = result.words
            data_dict['path'] = result.path
        else:
            data_dict['coin'] = -1

        return jsonify(errno=0, errmsg="OK", data=data_dict)
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        return jsonify(errno=-1, errmsg='网络异常')
Пример #6
0
def save_btn():
    try:
        res = request.get_json()
        user_id = res.get('user_id')
        btn_num = res.get('btn_num')

        if not all([user_id, btn_num]):
            return jsonify(errno=-1, errmsg='参数不完整')

        Logging.logger.info('request_args:{0}'.format(res))
        try:
            user_id = int(user_id)
            btn_num = int(btn_num)
        except Exception as e:
            Logging.logger.error('errmsg:{0}'.format(e))
            return jsonify(errno=-1, errmsg='参数错误')

        user_obj = User.query.filter(User.id == user_id).first()
        if not user_obj:
            return jsonify(errno=-1, errmsg='用户不存在')

        today = get_today()
        res = UserBTN.query.filter(UserBTN.user_id == user_id, UserBTN.btn_num == btn_num,
                                   UserBTN.create_time >= today).first()
        if not res:
            obj = UserBTN()
            obj.user_id = user_id
            obj.btn_num = btn_num

            db.session.add(obj)
        db.session.commit()

        return jsonify(errno=0, errmsg="OK")
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        return jsonify(errno=-1, errmsg="网络异常")
Пример #7
0
def amount_click_num():
    try:
        # 获取今天零点
        today = get_today()
        res = request.get_json()
        amount_id = res.get('amount_id')
        type = res.get('type')
        if not all([amount_id, type]):
            return jsonify(errno=-1, errmsg='参数不完整')
        try:
            # 判断点击成功还是失败 1点击 2 成功
            type = int(type)
            amount_id = int(amount_id)
        except Exception as e:
            print(e)
            return jsonify(errno=-1, errmsg='参数错误')
        sales = ChangeClickStatistics.query.filter(
            ChangeClickStatistics.create_time > today,
            ChangeClickStatistics.amount_id == amount_id).first()
        if sales:
            sales.btn_nums += 1 if type == 1 else 0
            sales.btn_successful_nums += 1 if type == 2 else 0
            db.session.add(sales)
        else:
            obj = ChangeClickStatistics()
            obj.amount_id = amount_id
            obj.btn_nums = 1 if type == 1 else 0
            obj.btn_successful_nums = 1 if type == 2 else 0
            db.session.add(obj)
        db.session.commit()
        Logging.logger.info('换量新点击数据'.format(amount_id))
        return jsonify(errno=0, errmsg='追加成功')

    except Exception as e:
        print(e)
        return jsonify(errno=-1, errmsg='参数错误')
Пример #8
0
def spread_data_detail():
    try:
        res = request.get_json()
        spread_id = res.get('spread_id')

        Logging.logger.info('request_args:{0}'.format(res))
        try:
            spread_id = int(spread_id)
        except Exception as e:
            Logging.logger.error('errmsg:{0}'.format(e))
            return jsonify(errno=-1, errmsg='参数错误')

        spread_obj = SpreadName.query.get(spread_id)
        if not spread_obj:
            return jsonify(errno=-1, errmsg='参数错误')

        today = get_today()
        yesterday = today + datetime.timedelta(days=-1)  # 昨天零点
        seven_day = today + datetime.timedelta(days=-7)  # 7天前
        thirty_day = today + datetime.timedelta(days=-30)  # 30天前
        is_auth = [1, -1, 0]
        data_list = list()
        for auth in is_auth:
            data_dict = dict()
            if auth != 0:
                today_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                      SpreadRecord.is_del == 1,
                                                      SpreadRecord.is_auth == auth,
                                                      SpreadRecord.create_time >= today).count()
                yesterday_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                          SpreadRecord.is_del == 1,
                                                          SpreadRecord.is_auth == auth,
                                                          SpreadRecord.create_time < today,
                                                          SpreadRecord.create_time >= yesterday).count()
                seven_day_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                          SpreadRecord.is_del == 1,
                                                          SpreadRecord.is_auth == auth,
                                                          SpreadRecord.create_time < today,
                                                          SpreadRecord.create_time >= seven_day).count()
                thirty_day_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                           SpreadRecord.is_del == 1,
                                                           SpreadRecord.is_auth == auth,
                                                           SpreadRecord.create_time < today,
                                                           SpreadRecord.create_time >= thirty_day).count()
            else:
                today_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                      SpreadRecord.is_del == 1,
                                                      SpreadRecord.create_time >= today).count()
                yesterday_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                          SpreadRecord.is_del == 1,
                                                          SpreadRecord.create_time < today,
                                                          SpreadRecord.create_time >= yesterday).count()
                seven_day_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                          SpreadRecord.is_del == 1,
                                                          SpreadRecord.create_time < today,
                                                          SpreadRecord.create_time >= seven_day).count()
                thirty_day_num = SpreadRecord.query.filter(SpreadRecord.spread_id == spread_id,
                                                           SpreadRecord.is_del == 1,
                                                           SpreadRecord.create_time < today,
                                                           SpreadRecord.create_time >= thirty_day).count()
            data_dict['spread_name'] = spread_obj.name
            data_dict['is_auth'] = auth
            if spread_id == 20:
                data_dict['today_num'] = int(today_num * 0.55)
            else:
                data_dict['today_num'] = int(today_num * 0.75)
            if spread_id == 20:
                data_dict['yesterday_num'] = int(yesterday_num * 0.55)
            else:
                data_dict['yesterday_num'] = int(yesterday_num * 0.75)
            if spread_id == 20:
                data_dict['seven_day_num'] = int(seven_day_num * 0.55)
            else:
                data_dict['seven_day_num'] = int(seven_day_num * 0.75)
            if spread_id == 20:
                data_dict['thirty_day_num'] = int(thirty_day_num * 0.55)
            else:
                data_dict['thirty_day_num'] = int(thirty_day_num * 0.75)
            data_list.append(data_dict)

        return jsonify(errno=0, errmsg="OK", data=data_list)
    except Exception as e:
        Logging.logger.error('errmsg:{0}'.format(e))
        return jsonify(errno=-1, errmsg='网络异常')