Пример #1
0
def get_own_card_in_make_card():
    """
    拉取制作名片的相关信息
    :return:
    """
    obj = BusinessCardModel.get_name_card(g.open_id)

    if not obj:
        obj = {
            "avatar": session['user_data']['headimgurl'],
            "name": '',
            "company": '',
            "industry": u'互联网/软件',
            "role": u'产品',
            "resources_key": '',
            "invitation_code": '',
            "province": '',
            "city": '',
            "area": '',
        }
        obj['target_url'] = '/api/v1/generatedNameCard'
    else:
        obj['target_url'] = '/api/v1/updateNameCard'

    # 处理登录跳转接口
    if 'group_token' in session:
        obj['after_login_url'] = url_for('web_app.all_cards',
                                         group_token=session['group_token'])
    else:
        obj['after_login_url'] = url_for('web_app.contact_list')

    obj = BusinessCardModel.handle_data_use_in_json(obj)
    response = make_response(json.dumps(obj))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #2
0
def join_card_by_user_code():
    """
    扫描二维码跳转页面
    :return:
    """

    # 由于该页面是一个主入口,逻辑处理需要严谨

    # 必须参数,from_open_id: 来源用户,invitation_code:邀请码
    from_open_id = request.args.get('from_open_id', None)
    invitation_code = request.args.get('invitation_code', None)
    if from_open_id is None or invitation_code is None:
        return abort(404)

    # 检查来源用户是否存在
    if not BusinessCardModel.has_card(from_open_id):
        return abort(404)

    # 检查邀请码???(暂时忽略)
    pass

    # 如果是自己扫描自己的二维码,就什么都不处理,跳转到资源社区主页
    if g.open_id == from_open_id:
        return redirect(url_for('web_app.contact_list'))

    # 用户已经生成名片,发送申请资源请求,跳转到资源社区主页
    if BusinessCardModel.has_card(g.open_id):
        ApplyFriendsModel.apply_friend(g.open_id, from_open_id, u'通过扫描您的海报申请资源对接')
        return redirect(url_for('web_app.contact_list'))

    # 用户还没有生成名片,跳转到生成名片页面
    return redirect(url_for('web_app.build_card') + "?from_open_id=" + from_open_id + "&invitation_code=" + invitation_code)
Пример #3
0
def get_card_of_a_prople(open_id):
    """
    获取某位用户的信息
    :param open_id: 用户openid
    :return:
    """

    if not BusinessCardModel.has_card(open_id):
        return abort(404)

    card = BusinessCardModel.get_name_card(open_id)
    card = BusinessCardModel.handle_data_use_in_json(card)

    if card['redundancy_labels']:
        card['keys'] = card['redundancy_labels'].split('#')
    else:
        card['keys'] = []

    if FriendModel.is_friend(g.open_id, open_id) or open_id == g.open_id:
        card['is_friend'] = 0
    else:
        card['is_friend'] = 1

    # 判断是不是自己
    if open_id == g.open_id:
        card['is_me'] = 0
    else:
        card['is_me'] = 1

    response = make_response(json.dumps(card))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #4
0
def generated_name_card():
    """
    生成名片接口
    @author: yubang
    :return: str
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)
    role = request.form.get('role', None)
    invitation_code = request.form.get('invitation_code', None)

    # 省市
    province = request.form.get('province', None)
    city = request.form.get('city', None)
    area = request.form.get('area', None)

    # 检测邀请码
    if not BusinessCardModel.check_invitation_code(invitation_code):
        response = make_response(json.dumps({"code": -5, "msg": u'邀请码不正确!'}))
        response.headers['Content-Type'] = 'application/json'
        return response

    r = BusinessCardModel.make_a_card(open_id, name, company, industry,
                                      resources_key, avatar, role,
                                      invitation_code, province, city, area)

    result = dict()

    if r:
        result['code'] = 0
        result['msg'] = 'ok'
    else:
        result['code'] = 0
        result['msg'] = u'请勿重复生成名片!'

    # 处理加入群情况
    if 'group_token' in session:
        try:
            GroupRecordModel.join_group(g.open_id, session['group_token'])
        except:
            pass

    # 特殊处理扫描海报二维码后生成名片的情况
    from_open_id = request.form.get('from_open_id', None)
    if from_open_id and BusinessCardModel.has_card(from_open_id):
        ApplyFriendsModel.apply_friend(g.open_id, from_open_id,
                                       u'通过扫描您的海报申请资源对接')

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #5
0
def apply_friend():
    """
    申请添加好友页面
    :return:
    """
    target_open_id = request.args.get('open_id', None)
    source_open_id = g.open_id
    if not BusinessCardModel.has_card(target_open_id) or not BusinessCardModel.has_card(source_open_id):
        return abort(404)

    return send_file('templates/v1/apply_friend.html', cache_timeout=0)
Пример #6
0
def update_card():
    """
    修改名片页面
    :return:
    """

    if not BusinessCardModel.has_card(g.open_id):
        return redirect(url_for('web_app.build_card'))

    card = BusinessCardModel.get_name_card(g.open_id)
    g.target_url = '/api/v1/updateNameCard'
    return send_file('templates/v1/build_card.html', cache_timeout=0)
Пример #7
0
def chat_html(friend_open_id):
    """
    聊天页面
    :param friend_open_id: 好友openid
    :return:
    """

    own_card = BusinessCardModel.get_name_card(g.open_id)
    friend_card = BusinessCardModel.get_name_card(friend_open_id)
    obj = {"own_card": own_card, "friend_card": friend_card}

    title = friend_card['name']

    return render_template("v1/chat.html", title=title, friend_open_id=friend_open_id, obj=obj)
Пример #8
0
    def add_friend(cls, source_open_id, target_open_id):
        """
        添加好友
        :param source_open_id: 用户1openid
        :param target_open_id: 用户2openid
        :return: boolean
        """

        if cls.is_friend(source_open_id, target_open_id):
            return False

        if not BusinessCardModel.has_card(target_open_id):
            return False

        if source_open_id == target_open_id:
            return False

        sql = "insert into " + cls.get_table_name() + "(source_open_id, target_open_id, status, create_time) " \
                                                      "values(%s, %s, 0, now());"
        db_lib = cls.get_db_lib()
        db_lib.insert(sql, [source_open_id, target_open_id])
        db_lib.insert(sql, [target_open_id, source_open_id])

        # 异步通知修改冗余标签
        get_update_card_redundancy_labels_dao().delay(source_open_id, target_open_id)

        return True
Пример #9
0
def generated_name_card():
    """
    生成名片接口
    @author: yubang
    :return: str
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources = request.form.get('resources', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)
    r = BusinessCardModel.make_a_card(open_id, name, company, industry, resources, resources_label, resources_key, avatar)

    result = dict()

    if r:
        result['code'] = 0
        result['msg'] = 'ok'
    else:
        result['code'] = -1
        result['msg'] = u'请勿重复生成名片!'

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #10
0
def get_cards():
    """
    获取名片列表
    :return:
    """
    page = request.form.get('page', None)
    search_nickname = request.form.get('search_nickname', None)
    status = request.form.get('status', None)

    page = int(page)

    if int(status) == 0:
        order_by_str = " order by id asc "
    else:
        order_by_str = " order by id desc "

    objs, nums = BusinessCardModel.get_a_page_of_cards(page, 10, search_nickname, order_by_str)

    max_page = nums / 10
    if nums % 10:
        max_page += 1

    r = make_response(json.dumps({"objs": objs, "max_page": max_page, "page": page}))
    r.headers['Content-Type'] = 'application/json'
    return r
Пример #11
0
def search_name_card(page, count_of_page):
    """
    搜索名片接口
    :param page: 页数
    :param count_of_page: 每页记录数
    @author: yubang
    :return:
    """
    industry = request.form.get('industry', None)
    role = request.form.get('role', None)
    search_key = request.form.get('search_key', None)

    if search_key is None or industry is None or role is None:
        return abort(404)

    objs, nums, max_page = BusinessCardModel.search_cards(
        g.open_id, industry.encode("UTF-8"), role.encode("UTF-8"),
        search_key.encode("UTF-8"), page, count_of_page)
    response = make_response(
        json.dumps({
            "objs": objs,
            "nums": nums,
            "max_page": max_page
        }))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #12
0
def update_name_card():
    """
    更新个人名片信息
    :return:
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources = request.form.get('resources', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)

    result = {"code": 0, "msg": 'ok'}

    r = BusinessCardModel.update_a_card(open_id, name, company, industry, resources, resources_label, resources_key, avatar)

    if not r:
        result['code'] = -1
        result['msg'] = u'修改失败!'

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #13
0
def update_name_card():
    """
    更新个人名片信息
    :return:
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources = request.form.get('resources', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)

    result = {"code": 0, "msg": 'ok'}

    r = BusinessCardModel.update_a_card(open_id, name, company, industry,
                                        resources, resources_label,
                                        resources_key, avatar)

    if not r:
        result['code'] = -1
        result['msg'] = u'修改失败!'

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #14
0
def get_cards():
    """
    获取名片列表
    :return:
    """
    page = request.form.get('page', None)
    search_nickname = request.form.get('search_nickname', None)
    status = request.form.get('status', None)

    page = int(page)

    if int(status) == 0:
        order_by_str = " order by id asc "
    else:
        order_by_str = " order by id desc "

    objs, nums = BusinessCardModel.get_a_page_of_cards(page, 10,
                                                       search_nickname,
                                                       order_by_str)

    max_page = nums / 10
    if nums % 10:
        max_page += 1

    r = make_response(
        json.dumps({
            "objs": objs,
            "max_page": max_page,
            "page": page
        }))
    r.headers['Content-Type'] = 'application/json'
    return r
Пример #15
0
def generated_name_card():
    """
    生成名片接口
    @author: yubang
    :return: str
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources = request.form.get('resources', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)
    r = BusinessCardModel.make_a_card(open_id, name, company, industry,
                                      resources, resources_label,
                                      resources_key, avatar)

    result = dict()

    if r:
        result['code'] = 0
        result['msg'] = 'ok'
    else:
        result['code'] = -1
        result['msg'] = u'请勿重复生成名片!'

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #16
0
def chat_html(friend_open_id):
    """
    聊天页面
    :param friend_open_id: 好友openid
    :return:
    """

    own_card = BusinessCardModel.get_name_card(g.open_id)
    friend_card = BusinessCardModel.get_name_card(friend_open_id)
    obj = {"own_card": own_card, "friend_card": friend_card}

    title = friend_card['name']

    return render_template("v1/chat.html",
                           title=title,
                           friend_open_id=friend_open_id,
                           obj=obj)
Пример #17
0
def apply_friend():
    """
    申请添加好友
    :return:
    """
    source_open_id = g.open_id
    target_open_id = request.form.get('target_open_id', None)
    remarks = request.form.get('remarks', None)

    if not BusinessCardModel.has_card(
            target_open_id) or not BusinessCardModel.has_card(source_open_id):
        return abort(404)

    r = ApplyFriendsModel.apply_friend(source_open_id, target_open_id, remarks)
    response = make_response(json.dumps({"r": r}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #18
0
def people(open_id):
    """
    联系人列表
    :param open_id: 用户openid
    :return:
    """
    if not BusinessCardModel.has_card(open_id):
        return abort(404)

    return send_file('templates/v1/people.html', cache_timeout=0)
Пример #19
0
def delete_card(card_id):
    """
    删除一张名片
    :param card_id: 名片id
    :return:
    """
    r = BusinessCardModel.delete_card(card_id)
    response = make_response(json.dumps({"code": r}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #20
0
def get_recommended_for_you(page, count_of_page):
    """
    获取为你推荐接口
    @author: yubang
    :return:
    """
    objs, nums, max_page = BusinessCardModel.get_own_recommend_cards(g.open_id, page, count_of_page)
    response = make_response(json.dumps({"objs": objs, "nums": nums, "max_page": max_page}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #21
0
def delete_card(card_id):
    """
    删除一张名片
    :param card_id: 名片id
    :return:
    """
    r = BusinessCardModel.delete_card(card_id)
    response = make_response(json.dumps({"code": r}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #22
0
def get_contacts():
    """
    获取联系人接口
    @author: yubang
    :return: str
    """
    open_id = g.open_id

    objs = FriendModel.get_all_friends(open_id)

    # 处理搜索条件
    search_key = request.form.get('search_key', None).encode("UTF-8")
    industry = request.form.get('industry', None).encode("UTF-8")
    role = request.form.get('role', None).encode("UTF-8")
    output_objs = []
    for obj in objs:

        if obj['name'].encode('UTF-8').find(
                search_key) == -1 and obj['company'].encode('UTF-8').find(
                    search_key) == -1 and obj['redundancy_labels'].encode(
                        'UTF-8').find(search_key) == -1:
            continue

        if obj['industry'].encode('UTF-8').find(industry) == -1:
            continue

        if obj['role'].encode('UTF-8').find(role) == -1:
            continue

        output_objs.append(obj)
    objs = output_objs

    # 添加自己的信息
    card = BusinessCardModel.get_name_card(g.open_id)
    card['name_pinyin'] = ''
    card = BusinessCardModel.handle_data_use_in_json(card)
    objs.insert(0, card)

    result = {"code": 0, "msg": 'ok', "content": objs}
    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #23
0
def build_card():
    """
    生成名片页面
    :return:
    """

    if BusinessCardModel.has_card(g.open_id):
        return redirect(url_for('web_app.update_card'))

    g.target_url = '/api/v1/generatedNameCard'
    return send_file('templates/v1/build_card.html', cache_timeout=0)
Пример #24
0
def recommend_card(card_id, status):
    """
    处理小编推荐接口
    :param card_id: 名片ID
    :param status:  名片推荐状态
    :return:
    """
    r = BusinessCardModel.recommend_card(card_id, status)
    response = make_response(json.dumps({"code": r}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #25
0
 def get_all_friends(cls, open_id):
     """
     获取用户所有好友
     :param open_id: 用户id
     :return:
     """
     t = " %s as A, %s as B " % (cls.get_table_name(), BusinessCardModel.get_table_name())
     sql = "select B.name, B.company, B.open_id, B.avatar, B.industry, B.name_pinyin, B.role, B.redundancy_labels from " + t + " where A.source_open_id = %s AND A.status = 0 AND A.target_open_id = B.open_id order by B.name_pinyin asc;"
     db_lib = cls.get_db_lib()
     objs = db_lib.query_for_list(sql, [open_id])
     return objs
Пример #26
0
def recommend_card(card_id, status):
    """
    处理小编推荐接口
    :param card_id: 名片ID
    :param status:  名片推荐状态
    :return:
    """
    r = BusinessCardModel.recommend_card(card_id, status)
    response = make_response(json.dumps({"code": r}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #27
0
 def get_all_friends(cls, open_id):
     """
     获取用户所有好友
     :param open_id: 用户id
     :return:
     """
     t = " %s as A, %s as B " % (cls.get_table_name(),
                                 BusinessCardModel.get_table_name())
     sql = "select B.name, B.company, B.open_id, B.avatar, B.industry, B.name_pinyin from " + t + " where A.source_open_id = %s AND A.status = 0 AND A.target_open_id = B.open_id order by B.name asc;"
     db_lib = cls.get_db_lib()
     objs = db_lib.query_for_list(sql, [open_id])
     return objs
Пример #28
0
def get_chat_need_message():
    """
    获取聊天页面初始化信息
    :return:
    """

    friend_open_id = request.form.get('friend_open_id', None)

    own_card = BusinessCardModel.get_name_card(g.open_id)
    own_card = BusinessCardModel.handle_data_use_in_json(own_card)
    friend_card = BusinessCardModel.get_name_card(friend_open_id)
    friend_card = BusinessCardModel.handle_data_use_in_json(friend_card)
    obj = {"own_card": own_card, "friend_card": friend_card}

    title = friend_card['name']

    r = {'own_card': own_card, 'title': title, 'obj': obj}

    response = make_response(json.dumps(r))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #29
0
def get_editor_recommend(page, count_of_page):
    """
    获取小编推荐接口
    :param page: 页数
    :param count_of_page: 每页记录数
    @author: yubang
    :return:
    """
    objs, nums, max_page = BusinessCardModel.get_recommend_cards(g.open_id, page, count_of_page)
    response = make_response(json.dumps({"objs": objs, "nums": nums, "max_page": max_page}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #30
0
def update_name_card():
    """
    更新个人名片信息
    :return:
    """
    open_id = g.open_id
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    industry = request.form.get('industry', None)
    resources_key = request.form.get('resources_key', None)
    avatar = request.form.get('avatar', None)
    role = request.form.get('role', None)
    result = {"code": 0, "msg": 'ok'}

    invitation_code = request.form.get('invitation_code', None)

    # 省市
    province = request.form.get('province', None)
    city = request.form.get('city', None)
    area = request.form.get('area', None)

    # 检测邀请码
    if not BusinessCardModel.check_invitation_code(invitation_code):
        response = make_response(json.dumps({"code": -5, "msg": u'邀请码不正确!'}))
        response.headers['Content-Type'] = 'application/json'
        return response

    r = BusinessCardModel.update_a_card(open_id, name, company, industry,
                                        resources_key, avatar, role,
                                        invitation_code, province, city, area)

    if not r:
        # 防止什么都没修改
        result['code'] = 0
        result['msg'] = u'修改失败!'

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #31
0
def poster(open_id):
    """
    用户海报页面
    (注意,该页面不需要登录校验~~~~)
    :return:
    """
    if not BusinessCardModel.has_card(open_id):
        return abort(404)

    card = BusinessCardModel.get_name_card(open_id)

    if card['redundancy_labels']:
        card['keys'] = card['redundancy_labels'].split('#')
        # 只取前5个
        if len(card['keys']) > 5:
            card['keys'] = card['keys'][:5]
    else:
        card['keys'] = []

    # 生成二维码地址
    url = url_for('web_app.join_card_by_user_code', _external=True)+ "?from_open_id=" + card['open_id'] + "&invitation_code=" + card['invitation_code']
    card['url'] = urllib.quote(url)

    return render_template('v1/poster.html', card=card)
Пример #32
0
def get_recommended_for_you(page, count_of_page):
    """
    获取为你推荐接口
    @author: yubang
    :return:
    """
    objs, nums, max_page = BusinessCardModel.get_own_recommend_cards(
        g.open_id, page, count_of_page)
    response = make_response(
        json.dumps({
            "objs": objs,
            "nums": nums,
            "max_page": max_page
        }))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #33
0
def search_name_card(page, count_of_page):
    """
    搜索名片接口
    :param page: 页数
    :param count_of_page: 每页记录数
    @author: yubang
    :return:
    """
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)

    objs, nums, max_page = BusinessCardModel.search_cards(g.open_id, name, company, resources_label, resources_key, page, count_of_page)
    response = make_response(json.dumps({"objs": objs, "nums": nums, "max_page": max_page}))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #34
0
def get_editor_recommend(page, count_of_page):
    """
    获取小编推荐接口
    :param page: 页数
    :param count_of_page: 每页记录数
    @author: yubang
    :return:
    """
    objs, nums, max_page = BusinessCardModel.get_recommend_cards(
        g.open_id, page, count_of_page)
    response = make_response(
        json.dumps({
            "objs": objs,
            "nums": nums,
            "max_page": max_page
        }))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #35
0
    def send_message(cls, from_open_id, to_open_id, message, message_type):
        """
        发送一条消息
        :param from_open_id: 发送方openid
        :param to_open_id: 接收方openid
        :param message: 消息内容
        :param message_type: 消息类型,0为文字
        :return:
        """

        # 判断目标用户是否存在
        if not BusinessCardModel.has_card(to_open_id):
            return 0

        sql = "insert into " + cls.table_name + "(from_open_id, to_open_id, message_content, message_type, status, " \
                                                "create_time) values(%s, %s, %s, %s, 0, now());"
        r = cls.db_lib.insert(sql, [from_open_id, to_open_id, message, message_type])
        return r
Пример #36
0
def card(open_id):
    """
    获取个人名片
    :param open_id: 名片openid
    :return:
    """
    card = BusinessCardModel.get_name_card(open_id)

    if not card:
        return abort(404)

    url = url_for("api.add_friend", _external=True, friend_open_id=open_id)
    url = urllib.quote(url)

    if card['redundancy_labels']:
        card['keys'] = card['redundancy_labels'].split('#')
    else:
        card['keys'] = []
    return render_template('v1/card.html', card=card, url=url)
Пример #37
0
def to_wechat_link(group_token):
    """
    微信群的链接
    :return:
    """
    if not GroupLinksModel.has_link(group_token):
        return abort(404)

    session['group_token'] = group_token

    if BusinessCardModel.has_card(g.open_id):

        # 判断是否要添加入群
        if not GroupRecordModel.has_join_group(g.open_id, group_token):
            GroupRecordModel.join_group(g.open_id, group_token)
            log.info(u'%s执行了记录加入群的数据库操作' % g.open_id)
        log.info(u'%s点击了群链接' % g.open_id)
        return redirect(url_for('web_app.all_cards', group_token=group_token))
    else:
        return redirect(url_for('web_app.build_card') + "?group_token="+group_token)
Пример #38
0
def get_name_card():
    """
    拉取个人名片信息
    @author: yubang
    :return:
    """
    open_id = g.open_id
    obj = BusinessCardModel.get_name_card(open_id)

    result = {"code": 0, "msg": 'ok'}

    if not obj:
        result['code'] = -1
        result['msg'] = u'还没生成名片'
    else:
        obj['create_time'] = obj['create_time'].strftime("%Y-%m-%d %H:%M:%S")
        obj['update_time'] = obj['update_time'].strftime("%Y-%m-%d %H:%M:%S")
        result['content'] = obj

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'

    return response
Пример #39
0
def get_name_card():
    """
    拉取个人名片信息
    @author: yubang
    :return:
    """
    open_id = g.open_id
    obj = BusinessCardModel.get_name_card(open_id)

    result = {"code": 0, "msg": 'ok'}

    if not obj:
        result['code'] = -1
        result['msg'] = u'还没生成名片'
    else:
        obj['create_time'] = obj['create_time'].strftime("%Y-%m-%d %H:%M:%S")
        obj['update_time'] = obj['update_time'].strftime("%Y-%m-%d %H:%M:%S")
        result['content'] = obj

    response = make_response(json.dumps(result))
    response.headers['Content-Type'] = 'application/json'

    return response
Пример #40
0
    def add_friend(cls, source_open_id, target_open_id):
        """
        添加好友
        :param source_open_id: 用户1openid
        :param target_open_id: 用户2openid
        :return: boolean
        """

        if cls.is_friend(source_open_id, target_open_id):
            return False

        if not BusinessCardModel.has_card(target_open_id):
            return False

        if source_open_id == target_open_id:
            return False

        sql = "insert into " + cls.get_table_name() + "(source_open_id, target_open_id, status, create_time) " \
                                                      "values(%s, %s, 0, now());"
        db_lib = cls.get_db_lib()
        db_lib.insert(sql, [source_open_id, target_open_id])
        db_lib.insert(sql, [target_open_id, source_open_id])
        return True
Пример #41
0
def search_name_card(page, count_of_page):
    """
    搜索名片接口
    :param page: 页数
    :param count_of_page: 每页记录数
    @author: yubang
    :return:
    """
    name = request.form.get('name', None)
    company = request.form.get('company', None)
    resources_label = request.form.get('resources_label', None)
    resources_key = request.form.get('resources_key', None)

    objs, nums, max_page = BusinessCardModel.search_cards(
        g.open_id, name, company, resources_label, resources_key, page,
        count_of_page)
    response = make_response(
        json.dumps({
            "objs": objs,
            "nums": nums,
            "max_page": max_page
        }))
    response.headers['Content-Type'] = 'application/json'
    return response
Пример #42
0
 def handle(*k, **v):
     if not BusinessCardModel.has_card(g.open_id):
         return redirect(url_for('web_app.build_card'))
     return fn(*k, **v)
Пример #43
0
    def get_last_chat_message(cls, open_id):
        """
        获取最后一条联系人信息
        :param open_id:
        :return:
        """
        temp_str = "(select * from %s order by create_time desc) temp_table" % cls.table_name
        sql = "select * from " + temp_str + " where to_open_id = %s group by from_open_id order by create_time desc"
        objs = cls.get_db_lib().query_for_list(sql, [open_id])

        r = list()
        for obj in objs:
            r.append(obj)

        sql = "select * from " + temp_str + " where from_open_id = %s group by to_open_id"
        objs = cls.get_db_lib().query_for_list(sql, [open_id])
        new_objs = []

        for obj in objs:
            index = 0
            exist_sign = False
            while index < len(r):
                if obj['to_open_id'] == r[index]['from_open_id']:
                    if obj['create_time'].now() > r[index]['create_time'].now():
                        r[index] = obj
                    exist_sign = True
                    break
                index += 1
            if not exist_sign:
                new_objs.append(obj)

        r.extend(new_objs)

        # 填充联系人信息
        index = 0
        while index < len(r):

            if r[index]['to_open_id'] != open_id:
                r[index]['user'] = BusinessCardModel.get_name_card(r[index]['to_open_id'])
            else:
                r[index]['user'] = BusinessCardModel.get_name_card(r[index]['from_open_id'])

            r[index]['user'] = BusinessCardModel.handle_data_use_in_json(r[index]['user'])
            r[index]['message_nums'] = cls.get_message_number(open_id, r[index]['user']['open_id'])

            index += 1

        # 特殊处理资源小助手
        reource_obj = model_manager['ResourceHelperMessageModel'].get_last_message(open_id)
        if reource_obj:
            reource_obj['user'] = {'name': u'资源小助手', "avatar": '/static/v1/img/webwxgetmsgimg.jpg', 'open_id': ''}
            reource_obj['message_nums'] = (model_manager['ResourceHelperMessageModel'].get_not_read_message_number(open_id), 0)

            r.append(reource_obj)

        # 按时间排序
        i = 0
        while i < len(r):
            j = i + 1
            while j < len(r):
                if r[i]['create_time'] < r[j]['create_time']:
                    temp_obj = r[i]
                    r[i] = r[j]
                    r[j] = temp_obj
                j += 1
            i += 1

        r = map(cls.handle_data_use_in_json, r)

        return r