def tickets_detail(): """券 详情页面""" openid = session.get("openid") user_agent = request.headers.get('User-Agent') print user_agent # 如果操作是在微信网页端进行,要获取openid if 'MicroMessenger' in user_agent: if not openid: code = request.args.get("code") if not code: print "not code" return redirect(WeixinHelper.oauth2(request.url)) else: wechat_login_fun(code) tickets_id = request.args.get('tid', 0, type=int) print "ticket_id", tickets_id ticket = GetTicketRecord.query.get(tickets_id) now = datetime.date(datetime.now()) if ticket: expire_date = datetime.date(ticket.create_at) + timedelta(days=ticket.discount.usable) isexpire = (now - expire_date).days print '-' * 10, isexpire else: expire_date = "" isexpire = True shops = ticket.discount.shops return render_template('mobile/my_tickets_detail.html', nav=2, ticket=ticket, discount=ticket.discount, shops=shops, expire_date=expire_date, isexpire=isexpire)
def get_wechat_info(request, openid): if not openid: code = request.args.get("code") if not code: return redirect(WeixinHelper.oauth3(request.url)) else: wechat_login_fun(code)
def tickets(): """券包""" openid = session.get("openid") if not openid: code = request.args.get("code") if not code: print "not code" return redirect(WeixinHelper.oauth3(request.url)) else: wechat_login_fun(code) type = request.args.get("type", "not_use") user = g.user nav = 2 if user: user_id = user.id else: user_id = '' records = GetTicketRecord.query.filter(GetTicketRecord.user_id == user_id) if type == 'not_use': from sqlalchemy import or_ records = records.filter(or_(GetTicketRecord.status == 'normal', GetTicketRecord.status == 'verify')) new_records = [] for record in records: if record.is_expire: new_records.append(record) elif type == 'expire': new_records = [] for record in records: if not record.is_expire: new_records.append(record) return render_template('mobile/my_tickets.html', type=type, nav=2, records=new_records)
def check_saler_info(): """确认收银员信息""" brand_id = int(request.args.get("bid", 0)) openid = session.get("openid") do = request.args.get("do") form = SalerInfoForm() if not openid: code = request.args.get("code") if not code: print "not code" # print "/check_saler_info" return redirect(WeixinHelper.oauth3(request.url)) else: wechat_login_fun(code) if do == 'check': # 绑定店员 mobile = request.args.get("mobile") exist_saler = Saler.query.filter(Saler.user_id == g.user.id, Saler.brand_id == brand_id).first() if not exist_saler: g.user.mobile = mobile saler = Saler(user_id=g.user.id, brand_id=brand_id) db.session.add(saler) db.session.commit() wechat = WechatBasic(appid=appid, appsecret=appsecret) wechat.send_text_message(openid, "您已成功绑定门店") return json.dumps({"message": "提交成功", "type": "success"}) else: return json.dumps({"message": "您已绑定门店,不用再次绑定", "type": "error"}) return render_template('mobile/check_saler_info.html', brand_id=brand_id, form=form)
def wechat_login_fun(code): data = json.loads(WeixinHelper.getAccessTokenByCode(code)) access_token, openid, refresh_token = data.get("access_token"), data.get("openid"), data.get("refresh_token") userinfo = json.loads(WeixinHelper.getSnsapiUserInfo(access_token, openid)) print "user_info,", userinfo # print openid if not g.user: # 检查用户是否存在 user = User.query.filter(User.profile.any(Profile.openid == openid)).first() if user is not None: signin_user(user) session['openid'] = openid session['access_token'] = openid print u'与微信用户关联的user(%s) 已开始登陆网站...' % user.name else: add_wechat_user_to_db(openid)
def inner(*args, **kwargs): openid = session.get("openid") userinfo = None if not openid: code = request.args.get("code") if not code: return redirect(WeixinHelper.oauth3(request.url)) else: data = json.loads(WeixinHelper.getAccessTokenByCode(code)) access_token, openid, refresh_token = data["access_token"], data["openid"], data["refresh_token"] # WeixinHelper.refreshAccessToken(refresh_token) userinfo = json.loads(WeixinHelper.getSnsapiUserInfo(access_token, openid)) print userinfo print openid # else: # if session.get('openid') != openid: # return redirect("/") session['openid'] = openid if callable(callback): g.user = User.query.filter(User.profile.any(Profile.openid == openid)).first() response = func() return response
def user_home(): """我的个人中心""" type = request.args.get("type") tickets = GetTicketRecord.query.all() nav = 4 openid = session.get("openid") if not openid: code = request.args.get("code") if not code: print "not code" return redirect(WeixinHelper.oauth3(request.url)) else: wechat_login_fun(code) return render_template('mobile/user_home.html', type=type, nav=nav, tickets=tickets)
def favorite_brands(): openid = session.get("openid") if not openid: code = request.args.get("code") if not code: print "not code" return redirect(WeixinHelper.oauth3(request.url)) else: wechat_login_fun(code) user = g.user type = request.args.get('type', 'new') act = request.args.get('act') brand_id = request.args.get('bid', type=int) if act == "add": exist = MyFavoriteBrand.query.filter(MyFavoriteBrand.user_id == user.id, MyFavoriteBrand.brand_id == brand_id).all() if not exist: favorite = MyFavoriteBrand() favorite.user_id = user.id favorite.brand_id = brand_id db.session.add(favorite) db.session.commit() if type == 'hot': # TODO records = MyFavoriteBrand.query.filter(MyFavoriteBrand.user_id == user.id).order_by( MyFavoriteBrand.create_at.desc()) else: records = MyFavoriteBrand.query.filter(MyFavoriteBrand.user_id == user.id).order_by( MyFavoriteBrand.create_at.desc()) if records.first(): brand = records.first().brand else: brand = {} nav = 1 return render_template('mobile/my_favorite_brand.html', type=type, nav=nav, brand=brand, records=records)
def find(): openid = session.get("openid") access_token = session.get('access_token') user_agent = request.headers.get('User-Agent') print user_agent # 如果操作是在微信网页端进行,要获取openid if 'MicroMessenger' in user_agent: if not openid: code = request.args.get("code") if not code: print "not code" return redirect(WeixinHelper.oauth2(request.url)) else: wechat_login_fun(code) industry1 = request.args.get("industry1", None) industry2 = request.args.get('industry2', None) district1 = request.args.get('district1', None) sortrank1 = request.args.get('sortrank1', None) page = request.args.get('page', 0, type=int) query = request.args.get("query", "") if query: discounts = Discount.query.join(Brand).filter(Brand.name.like('%{0}%'.format(query))) return render_template('mobile/search_result.html', discounts=discounts) # 拼装查询条件 discounts = Discount.query.filter(Discount.is_re == 1) if industry1 != u'全部分类': if industry1: # 品牌大类1 discounts = discounts.filter(Discount.brand.has(Brand.industry_1 == industry1)) if industry2: # 品牌大类2 discounts = discounts.filter(Discount.brand.has(Brand.industry_2 == industry2)) curr_user_point = (session.get('longitude', ''), session.get('latitude', '')) # shop_list = [] discount_list = [] if district1 and session.get('longitude', ''): # 地区 if district1 == u'200米内': for discount in discounts.all(): for shop in discount.shops.all(): if shop.get_distinct(curr_user_point) <= 0.2: # shop_list.append(shop) discount.append(shop.get_distinct(curr_user_point)) discount_list.append(discount) elif district1 == u'1千米内': for discount in discounts.all(): for shop in discount.shops.all(): if shop.get_distinct(curr_user_point) <= 1: # shop_list.append(shop) discount_list.append(discount) elif district1 == u'5千米内': for discount in discounts.all(): for shop in discount.shops.all(): if shop.get_distinct(curr_user_point) <= 5: # shop_list.append(shop) discount_list.append(discount) else: # 全城范围 pass else: discount_list = discounts.all() if sortrank1: # 排序方式 if sortrank1 == u'领取量': discount_list.sort(key=lambda x: x.count, reverse=True) elif sortrank1 == u'使用量': discount_list.sort(key=lambda x: x.back, reverse=True) else: # 默认排序 discount_list.sort(key=lambda x: x.create_at, reverse=True) discounts = discount_list EVENY_PAGE_NUM = current_app.config['FLASKY_PER_PAGE'] if page: # 加载页数 discounts = discounts[page * EVENY_PAGE_NUM: (page + 1) * EVENY_PAGE_NUM] if industry1 or district1 or sortrank1: return render_template('mobile/search_result.html', discounts=discounts, industry1=industry1) return render_template('mobile/home.html', discounts=discounts, industry1=industry1)