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='网络异常')
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='兑换失败')
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="网络异常")
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='网络异常')
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='网络异常')
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="网络异常")
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='参数错误')
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='网络异常')