Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
        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
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)