Exemplo n.º 1
0
class CheckHandler(BaseHandler):
    """
    检查用户是否是老用户: /passport/login/check
    """

    rule = {
        "mobile": Rule(mobile=True, allow_empty=False),
        "country": Rule(direct_type=int, allow_empty=True, default=86)
    }

    @filter_params(get=rule)
    def get(self, params):
        result = {
            "is_new": 0,            # 是否是老用户:1是0否
            "perfect_info_pwd": 0,  # 是否需要完善密码:1是0否
        }

        mobile = params["mobile"]
        user = UserAccountModel.query_account_by_mobile(mobile, params["country"], True)

        # 1.用户是否存在 2.用户是否设置了密码
        if user:
            if not user.password:
                result["perfect_info_pwd"] = 1
        else:
            result["is_new"] = 1

        return json_success_response(result)

    def post(self):
        return json_fail_response(501)
Exemplo n.º 2
0
class IndexHandler(BaseHandler):

    rule = {
        "share_id": Rule(direct_type=int),
        "last_id": Rule(direct_type=int, allow_empty=True, default=0)
    }

    @filter_params(get=rule)
    def get(self, params):
        query = LikeModel.query.filter_by(share_id=params["share_id"],
                                          status=1)
        if params["last_id"]:
            query = query.filter(LikeModel.like_id < params["last_id"])
        like_model_list = query.order_by(
            LikeModel.like_id.desc()).limit(20).all()

        result = list()

        for model in like_model_list:
            user_info = UserInfoModel.query_user_model_by_id(model.user_id)
            user_info = UserInfoModel.format_user_info(user_info)
            user_info["like_id"] = model.like_id
            result.append(user_info)

        return json_success_response(result)
Exemplo n.º 3
0
class ReportHandler(BaseHandler):

    rule = {
        "longitude": Rule(direct_type=float),
        "latitude": Rule(direct_type=float)
    }

    @filter_params(post=rule)
    def post(self, params):

        user_location = UserLocationModel()
        user_location.access_token = g.account.get("access_token")
        user_location.user_id = g.account.get("user_id")
        user_location.longitude = params["longitude"]
        user_location.latitude = params["latitude"]

        db.session.add(user_location)
        db.session.commit()

        # 更新用户信息
        if g.account["user_id"]:
            UserInfoModel.query.filter_by(user_id=g.account["user_id"]).update(
                {"location_id": user_location.id})

        return json_success_response("")
Exemplo n.º 4
0
class IndexHandler(BaseHandler):

    rule = {
        "username": Rule(mobile=True),
        "password": Rule(),
        "country": Rule(direct_type=int, allow_empty=True, default=86)
    }

    @filter_params(post=rule)
    def post(self, params):

        account = UserAccountModel.query_account_by_mobile(params["username"], params["country"])
        if not account:
            return json_fail_response(2101)

        if not check_password(account.id, params["password"], account.password):
            return json_fail_response(2104)

        # 当前token已经绑定了一个user_id,并且绑定的用户手机号,与当前手机号不同
        cache_account = g.account
        if cache_account["user_id"]:
            if cache_account["mobile"] != str(params["username"]):
                from .login_mobile import IndexHandler
                # 生成新的token
                new_access_token = IndexHandler.create_new_token_account(cache_account)
                # 禁用旧的token
                UserAccessTokenModel.forbid_by_token(cache_account["access_token"])
                # 更新内存中的数据
                cache_account["access_token"] = new_access_token.access_token
                cache_account["salt"] = new_access_token.salt

        # 执行token绑定
        UserAccessTokenModel.bind_user_id(cache_account["access_token"], account.id)
        # 刷新缓存
        result = AccountDataModel.query_request_account_by_token(cache_account["access_token"], refresh=True)
        result["perfect_info"] = 0
        result["perfect_info_pwd"] = 0

        relation = UserIdRelationModel.query_user_id_relation(account.id)
        result["huanxin_uid"] = ""
        if relation:
            result["huanxin_uid"] = relation.str_id

        if not result["gender"]:
            result["perfect_info"] = 1

        # 日活统计
        open_log = OpenLogModel()
        open_log.user_id = result.get("user_id", 0)
        open_log.udid = result.get("udid", "")
        open_log.access_token = result.get("access_token", "")
        open_log.device_type = result.get("device_type", "")
        open_log.version = result.get("version", "")
        open_log.type = 3

        db.session.add(open_log)
        db.session.commit()
        return json_success_response(result)
Exemplo n.º 5
0
class IndexHandler(BaseHandler):

    rule = {
        "share_id": Rule(direct_type=int),
        "last_id": Rule(direct_type=int, allow_empty=True, default=0),
    }

    @filter_params(get=rule)
    def get(self, params):
        result = CommentModel.query_share_comment_list(params["share_id"],
                                                       g.account["user_id"],
                                                       params["last_id"])
        return json_success_response(result)
Exemplo n.º 6
0
class GetListHandler(BaseHandler):

    rule = {"last_id": Rule(direct_type=int, allow_empty=True, default=0)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        login_user_id = g.account["user_id"]

        RedisModel.reset_new_message(login_user_id, RedisModel.new_visitor)

        visitor_list = list()
        while not visitor_list:
            visitor_list = VisitorRecordModel.query_visitor_list_by_day(
                login_user_id, 20, params["last_id"])
            params["last_id"] += 1

            # 最多查询30天
            if params["last_id"] > 30:
                break

        visitor_dict_list = list()
        for visitor in visitor_list:
            item = dict()
            user_info = UserInfoModel.query_user_model_by_id(
                visitor.visitor_user_id)
            item["user_info"] = UserInfoModel.format_user_info(
                user_info) if user_info else {}
            item["time"] = visitor.created_time
            visitor_dict_list.append(item)

        return json_success_response({
            "last_id": params["last_id"],
            "list": visitor_dict_list
        })
Exemplo n.º 7
0
class GeneratePasswordHandler(BaseHandler):

    rule = {'password': Rule()}

    def get(self):
        return json_fail_response(501)

    @filter_params(post=rule)
    def post(self, params):
        account = g.account
        if not account:
            return json_fail_response(503)

        password = params["password"]

        if len(password) != 6:
            return json_fail_response(2017)

        if not re.match(r"[a-zA-Z0-9]{6}", password):
            return json_fail_response(2018)

        password = generate_password(account["user_id"], password)
        UserAccountModel.update_account_password(account["user_id"],
                                                 account["mobile"],
                                                 account["country"], password)
        return json_success_response()
Exemplo n.º 8
0
class EaseMobHandler(BaseHandler):

    rule = {"huanxin_uid": Rule()}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        user_id_relation = UserIdRelationModel.query_user_by_ease_mob_id(
            params["huanxin_uid"])
        if not user_id_relation:
            return json_fail_response(2109)

        result = EaseMobHandler.format_ease_mob_user(g.account["user_id"],
                                                     user_id_relation.user_id)
        return json_success_response(result)

    @staticmethod
    def format_ease_mob_user(login_user_id, user_id):
        user_info = UserInfoModel.query_user_model_by_id(user_id)
        has_trade = UserConsumerModel.query_trade_relationship(
            user_id, login_user_id)
        follow_status = FollowModel.query_relation_to_user(
            login_user_id, user_id)
        remark_name = RemarkNameModel.query_remark_name(login_user_id, user_id)

        result = {
            "user_info": UserInfoModel.format_user_info(user_info),
            "had_trade": has_trade,
            "follow_status": follow_status,
            "black_status": 0,
            "remark_name": remark_name.remark_nickname if remark_name else ""
        }
        return result
Exemplo n.º 9
0
class IndexHandler(BaseHandler):

    per_page = 20

    rule = {"limit": Rule(direct_type=int, allow_empty=True, default=1)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        offset = IndexHandler.per_page * params["limit"]
        user_black_list = UserBlackModel.query_user_black_list(
            g.account["user_id"], 1, offset, IndexHandler.per_page)

        user_id_list = array_column(user_black_list, "black_user_id")

        result = list()

        for user_id in user_id_list:

            user_info = UserInfoModel.query_user_model_by_id(user_id)
            if not user_info:
                continue
            item = dict()
            item["user_id"] = user_info.user_id
            item["nickname"] = user_info.nickname

            item["avatar"] = UserInfoModel.format_user_avatar(user_info)
            user_id_relation = UserIdRelationModel.query_user_id_relation(
                user_info.user_id)
            item[
                "huanxin_uid"] = user_id_relation.str_id if user_id_relation else ""
            result.append(item)

        return json_success_response(result)
Exemplo n.º 10
0
class GetListHandler(BaseHandler):

    per_page = 20

    rule = {
        "user_id": Rule(direct_type=int),
        "last_id": Rule(direct_type=int, allow_empty=True, default=0),
        "type": Rule(direct_type=int, allow_empty=True, enum=(2, 3, 4))   # 2关注 3粉丝 4好友
    }

    @filter_params(get=rule)
    def get(self, params):
        params["limit"] = self.per_page

        user_list = []
        field = ""
        # 关注
        if params["type"] == 2:
            user_list = FollowModel.query_follow_list(params)
            field = "follow_id"
        # 粉丝
        elif params["type"] == 3:
            user_list = FollowModel.query_fans_list(params)
            field = "user_id"
        # 好友
        elif params["type"] == 4:
            user_list = FollowModel.query_friends_list(params)
            field = "follow_id"
        if not user_list:
            return json_success_response(user_list)

        other_user_id_list = array_column(user_list, field)
        user_relations_dict = FollowModel.query_relation_to_user_list(g.account["user_id"], other_user_id_list)

        result = list()
        for follow_model in user_list:
            item = dict()
            item["id"] = follow_model.id
            user_id = getattr(follow_model, field)
            item["relation_type"] = user_relations_dict.get(user_id, 0)
            user_model = UserInfoModel.query_user_model_by_id(user_id)
            item["user_info"] = UserInfoModel.format_user_info(user_model)
            result.append(item)

        return json_success_response(result)
Exemplo n.º 11
0
class IndexHandler(BaseHandler):

    rule = {
        "user_id": Rule(direct_type=int),
        "last_id": Rule(direct_type=int, allow_empty=True, default=0)
    }

    @filter_params(get=rule)
    def get(self, params):
        login_user_id = g.account["user_id"]

        is_self = params["user_id"] == login_user_id

        share_model_list = ShareModel.query_user_share_list(
            params["user_id"] if not is_self else None,
            login_user_id if is_self else 0, 20, params["last_id"])
        result = ShareModel.format_share_model(share_model_list, login_user_id)
        return json_success_response(result)
Exemplo n.º 12
0
class SpendForMeHandler(BaseHandler):

    rule = {"user_id": Rule(direct_type=int), "last_id": Rule(direct_type=int)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        result = {
            "list": list(),
            "sum_cash": 0,
        }
        money = UserConsumerModel.query_relation_consumer_money(
            g.account["user_id"], params["user_id"])

        order_list = OrderMetaModel.query_order_with_others(
            g.account["user_id"], params["user_id"], last_id=params["last_id"])
        # 没有订单数据
        if not order_list:
            return json_success_response(result)

        order_id_list = array_column(order_list, "order_id")
        user_income_model_list = UserIncomeModel.query_order_income_list(
            g.account["user_id"], order_id_list)
        if not user_income_model_list:
            return json_success_response(result)

        item_list = list()
        for model in user_income_model_list:
            item = dict()
            item["id"] = model.order_id
            item["cash_amount"] = model.cash_amount / 100

            item["time"] = model.created_time
            item["type"] = model.type
            item["message"] = order_type_message.get(model.type, "未知类型")
            item["type_img"] = order_type_image_url.get(model.type, "")

            item_list.append(item)
        result["sum_cash"] = money / 100
        result["list"] = item_list

        return json_success_response(result)
Exemplo n.º 13
0
class FriendStatusHandler(BaseHandler):

    rule = {
        "user_id": Rule(direct_type=int)
    }

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        relation = FollowModel.query_relation_to_user(g.account["user_id"], params["user_id"])
        return json_success_response({"data": relation})
Exemplo n.º 14
0
class IndexHandler(BaseHandler):

    rule = {
        "position": Rule(direct_type=int, allow_empty=True, default=0),
        "share_id": Rule(direct_type=int, allow_empty=True, default=0)
    }

    @filter_params(get=rule)
    def get(self, params):
        # 查询到被推荐动态的id
        share_id_list = ShareRecommendModel.query_share_recommend_id_list(
            params["position"], g.account.get("user_id", 0),
            params["share_id"])
        # 根据动态id查询动态详细信息
        share_list = ShareModel.query_share_info_list(share_id_list)
        # 格式化动态
        result = ShareModel.format_share_model(share_list,
                                               account=g.account["user_id"])
        # 返回结果
        return json_success_response(result)
Exemplo n.º 15
0
class IndexHandler(BaseHandler):

    rule = {
        "black_user_id": Rule(direct_type=int),
        "status": Rule(direct_type=int)
    }

    @login_required
    @filter_params(post=rule)
    def post(self, params):

        result = UserBlackModel.update_black_status(g.account["user_id"],
                                                    params["black_user_id"],
                                                    params["status"])

        if not result:
            return json_fail_response(2110)

        UserBlackModel.query_black_people(g.account["user_id"], True)

        return json_success_response(result)
Exemplo n.º 16
0
class AddHandler(BaseHandler):

    max_upload_image_count = 6

    rule = {
        "content": Rule(),
        "system": Rule(),
        "version": Rule(),
        "type": Rule(direct_type=int, allow_empty=True, default=0),
        "mobile_model": Rule(),
        "user_id": Rule(direct_type=int, allow_empty=True, default=0)
    }

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        img_uploader = UploadImage()
        img_id_list = list()
        if img_uploader.images:
            if len(img_uploader.images) > AddHandler.max_upload_image_count:
                return json_fail_response(2407)

            img_uploader.save_images()
            for image_info in img_uploader.images:
                img_model = image_info["image"]
                img_model.user_id = g.account["user_id"]
                img_model.type = 13
                img_id_list.append(img_model.image_id)
            db.session.commit()

        json_data = {"image_id": img_id_list}
        if params["type"] == 1:
            json_data["user_id"] = params["user_id"]

        user_feed_back = UserFeedBackModel()
        user_feed_back.user_id = g.account["user_id"]
        user_feed_back.type = params["type"]
        user_feed_back.content = params["content"]
        user_feed_back.system = params["system"]
        user_feed_back.version = params["version"]
        user_feed_back.mobile_model = params["mobile_model"]
        user_feed_back.json_data = json.dumps(json_data)

        db.session.add(user_feed_back)

        result = {"data": 1, "message": "感谢您的反馈"}

        if params["type"] == 1:
            result["message"] = "投诉成功,我们会尽快处理!"

        try:
            db.session.commit()
        except:
            result["data"] = 0
            if params["type"] == 1:
                result["message"] = "投诉失败,请稍后重试!"
            else:
                result["message"] = "留言未受理"

        return json_success_response(result)
Exemplo n.º 17
0
class RemindAddHandler(BaseHandler):

    rule = {
        "user_id": Rule(direct_type=int),
        "type": Rule(direct_type=int, enum=[11, 31])
    }

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        if params["user_id"] == g.account["user_id"]:
            return json_fail_response(2411)

        result = dict()

        RedisModel.add_new_message(
            params["user_id"], RedisModel.private_image_want
            if params["type"] == 11 else RedisModel.private_video_want)

        result["data"] = 1
        result["message"] = "邀请成功"

        return json_success_response(result)
Exemplo n.º 18
0
class AddHandler(BaseHandler):

    max_upload_image_count = 6

    rule = {
        "wechat": Rule(reg=r"^[_a-zA-Z0-9]{5,20}$"),
        "price": Rule(direct_type=float, range=Range(99, 1314))
    }

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        permit = UserPermitModel.query_user_permit_model(g.account["user_id"])
        if permit and permit.allow_post_wechat == 0:
            return json_fail_response(2408)

        wechat = UserWeChatModel()
        wechat.user_id = g.account["user_id"]
        wechat.wechat = params["wechat"]
        wechat.price = params["price"] * 100
        wechat.status = 1

        db.session.add(wechat)

        try:
            db.session.commit()
            UserInfoModel.query_user_model_by_id(g.account["user_id"], True)
            return json_success_response({
                "data": 1,
                "message": "设置成功",
            })
        except:
            return json_success_response({
                "data": 0,
                "message": "设置失败",
            })
Exemplo n.º 19
0
class IndexHandler(BaseHandler):

    rule = {"last_id": Rule(direct_type=int, allow_empty=True, default=0)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):

        user_id = g.account["user_id"]

        follow_user_id_list = FollowModel.query_follow_user_list(user_id)
        follow_user_id_list = list(set(follow_user_id_list))
        share_model_list = ShareModel.query_user_share_list(
            follow_user_id_list, user_id, 20, params["last_id"], 0)
        share_info_list = ShareModel.format_share_model(
            share_model_list, user_id)
        return json_success_response(share_info_list)
Exemplo n.º 20
0
class BlackStatusHandler(BaseHandler):

    rule = {"black_user_id": Rule(direct_type=int)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        code = UserBlackModel.check_black_status(g.account["user_id"],
                                                 params["black_user_id"])
        result = {"data": code, "message": "无拉黑关系"}

        if code == 1:
            result["message"] = "我把它拉黑"
        elif code == 2:
            result["message"] = "他把我拉黑"
        elif code == 3:
            result["message"] = "已互相拉黑"

        return json_success_response(result)
Exemplo n.º 21
0
class PrivateInfoHandler(BaseHandler):

    rule = {"user_id": Rule(direct_type=int)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        pri_img_model = ImageModel.query.filter_by(user_id=params["user_id"],
                                                   type=11,
                                                   status=1).first()
        pri_video_model = None

        result = dict()
        result["pri_image_status"] = 1 if pri_img_model else 0
        result["pri_video_status"] = 1 if pri_video_model else 0
        result["wechat_info"] = UserWeChatModel.full_wechat_info(
            params["user_id"], g.account["user_id"])

        return json_success_response(result)
Exemplo n.º 22
0
class SoldListHandler(BaseHandler):

    rule = {"last_id": Rule(direct_type=int, allow_empty=True, default=0)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        query = OrderMetaModel.query.filter_by(seller_id=g.account["user_id"],
                                               product_type=80)
        query = query.filter(OrderMetaModel.order_status.in_([2, 3, 5, 6]),
                             OrderMetaModel.ship_status.in_([0, 2, 3]))
        if params["last_id"]:
            query = query.filter(OrderMetaModel.id < params["last_id"])
        order_meta_list = query.order_by(
            OrderMetaModel.id.desc()).limit(20).all()
        result = UserWeChatModel.format_user_wechat_data(
            order_meta_list, {"user_id", g.account["user_id"]}, "seller_id",
            "buyer_id")
        return json_success_response(result)
Exemplo n.º 23
0
class TradeHandler(BaseHandler):

    rule = {"user_id": Rule(direct_type=int)}

    @login_required
    @filter_params(get=rule)
    def get(self, params):
        from collections import OrderedDict
        query_params = OrderedDict()
        query_params["pay_status"] = 1
        query_params["seller_id"] = params["user_id"]
        query_params["buyer_id"] = g.account["user_id"]

        order_meta = OrderMetaModel.query_order_meta(query_params)

        result = {
            "data": 1 if order_meta else 0,
            "message": "已有消费" if order_meta else "尚未消费"
        }
        return json_success_response(result)
Exemplo n.º 24
0
class ChangeHandler(BaseHandler):

    rule = {"aha_id": Rule(length=Length(5, 20))}

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        check_result = AhaAccountModel.check(params["aha_id"])
        if not check_result["success"]:
            return json_fail_response(2107, check_result["message"])

        account = AhaAccountModel.query_aha_account_by_aha_id(params["aha_id"])
        if account and account.changeable_aha == 0:
            return json_fail_response(2108)

        result = AhaAccountModel.update_aha_id(g.account["user_id"],
                                               params["aha_id"])
        if result:
            return json_success_response({"data": 1, "message": "设置成功"})
        else:
            return json_success_response({"data": 0, "message": "设置失败"})
Exemplo n.º 25
0
class AlbumHandler(BaseHandler):

    rule = {
        "user_id": Rule(direct_type=int)
    }

    @filter_params(get=rule)
    def get(self, params):

        social_page_info = SocialPageModel.query_social_page_model(params["user_id"])
        result = dict()

        result["user_banner"] = social_page_info.get("cover", "")
        result["user_banner_type"] = social_page_info.get("cover_type", 0)

        if result["user_banner_type"] == 2:
            result["orientation"] = social_page_info.get("orientation", "")
            result["user_banner_cover"] = social_page_info.get("video_img", "")

        result["album"] = UserInfoModel.query_user_album(params["user_id"])

        return result
Exemplo n.º 26
0
class IndexHandler(BaseHandler):

    rule = {
        "share_id": Rule(direct_type=int),
    }

    @filter_params(get=rule)
    def get(self, params):
        share_model = ShareModel.query_share_model(params["share_id"],
                                                   status=status_private)
        if not share_model:
            return json_fail_response(2405)

        share_info = ShareModel.format_share_model([share_model],
                                                   g.account["user_id"])[0]
        like_list = LikeModel.query_like_list(params["share_id"], 0)
        share_info["like_list"] = like_list

        del share_info["price"]
        del share_info["product_id"]

        return json_success_response(share_info)
Exemplo n.º 27
0
class IndexHandler(BaseHandler):

    rule = {"user_id": Rule(direct_type=int, allow_empty=True, default=0)}

    @filter_params(get=rule)
    def get(self, params):

        if params["user_id"] == 0:
            return json_fail_response(2101)

        user_info = UserInfoModel.query_user_model_by_id(params["user_id"])
        result = UserInfoModel.format_user_info(user_info)

        social_meta_info = SocialMetaModel.query_social_meta_info(
            params["user_id"])
        result["share_num"] = social_meta_info.share if social_meta_info else 0
        result[
            "follow_num"] = social_meta_info.following if social_meta_info else 0
        result[
            "fans_num"] = social_meta_info.follower if social_meta_info else 0
        result["follow_status"] = FollowModel.query_relation_to_user(
            g.account["user_id"], params["user_id"])
        result["album"] = UserInfoModel.query_user_album(params["user_id"])

        social_page_info = SocialPageModel.query_social_page_model(
            params["user_id"])
        result["user_banner"] = social_page_info.get("cover", "")
        result["user_banner_type"] = social_page_info.get("cover_type", 1)

        if result["user_banner_type"] == 2:
            result["orientation"] = ""
            result["user_banner_cover"] = ""

        if params["user_id"] == g.account["user_id"]:
            result["profit"] = IndexHandler.query_user_profit(
                params["user_id"])

        if result["identified"] == 1:
            result["identify_title"] = "官方认证:" + result["identify_title"]

        result["wechat_info"] = MeHandler.format_wechat_info(
            params["user_id"],
            social_meta_info.wechat_want if social_meta_info else 0)

        user_location = UserLocationModel.query.filter(
            UserLocationModel.id == user_info.location_id).first()
        result["latitude"] = user_location.latitude if user_location else 0
        result["longitude"] = user_location.longitude if user_location else 0

        result["changeable_aha"] = 1
        result["aha_id"] = ''

        aha_info = AhaAccountModel.query_aha_account_by_id(params['user_id'],
                                                           auto_formated=False)
        if aha_info:
            result["changeable_aha"] = aha_info.changeable_aha
            if aha_info.changeable_aha == 0:
                result["aha_id"] = aha_info.aha_id

        # 最近的动态
        result["share_info"] = ShareModel.query_recent_share_photo(
            params['user_id'], g.account["user_id"])
        # 是否有交易记录
        result["had_trade"] = 1
        # 备注昵称
        result["remark_name"] = ""

        last_login = OpenLogModel.query_last_login(params["user_id"])
        result["last_login"] = 0
        if last_login:
            result["last_login"] = time.time() - time.mktime(
                last_login.created_time.timetuple())

        # 插入访客记录
        if g.account["user_id"] != 0 and g.account["user_id"] != params[
                "user_id"]:
            RedisModel.add_new_message(params["user_id"],
                                       RedisModel.new_visitor)
            VisitorRecordModel(user_id=params["user_id"],
                               visitor_user_id=g.account["user_id"])

        return json_success_response(result)

    @staticmethod
    def query_user_profit(user_id):
        user_profit = UserProfitModel.query_user_profit(user_id)

        result = {
            "all_money": user_profit.money if user_profit else 0,
            "today_money": user_profit.today_money if user_profit else 0,
        }
        return result
Exemplo n.º 28
0
class IndexHandler(BaseHandler):

    rule = {
        "content": Rule(allow_empty=True, default=""),
        "type": Rule(direct_type=int,
                     enum=(10, 11, 20, 21, 30, 31, 70, 80, 90)),
        "position": Rule(allow_empty=True, default=""),
        "at_info": Rule(allow_empty=True, default=""),
        "price": Rule(direct_type=float, allow_empty=True, default=0)
    }

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        img_upload = UploadImage()
        video_upload = UploadVideo()

        if params["type"] == 10:
            if not img_upload.images:
                return json_fail_response(2201)
            img_upload.save_images()
        elif params["type"] == 30:
            if not video_upload.videos:
                return json_fail_response(2202)
            if not img_upload.images:
                return json_fail_response(2203)
            img_upload.save_images()
            video_upload.save_videos()

        share = ShareModel()
        share.content = params["content"]
        share.user_id = g.account["user_id"]
        share.type_id = params["type"]
        share.price = params["price"] * 100
        share.position = params["position"]
        # 默认需要进入审核状态
        share.status = 3
        share.data = params["at_info"]

        db.session.add(share)
        db.session.commit()

        # 更新图片数据
        if params["type"] == 10:
            self.update_image(img_upload.images, share)

        # 更新视频动态数据
        elif params["type"] == 30:
            img_model = img_upload.images[0]["image"]
            video_model = video_upload.videos[0]["video"]
            self.update_video(video_model, share, img_model)

        # 更新social_meta
        SocialMetaModel.update_social_meta_model(share.user_id, ["share"],
                                                 meta_add=True)

        # 更新share_meta
        ShareMetaModel.update_share_meta_model(share.share_id, share.user_id)

        # 创建首页推荐数据
        ShareRecommendModel(share.share_id,
                            share.user_id,
                            position=0,
                            status=3)

        share_info = ShareModel.format_share_model([share])

        return json_success_response(share_info)

    def update_image(self, images, share, img_type=10):
        for img in images:
            img_model = img["image"]
            img_model.share_id = share.share_id
            img_model.user_id = share.user_id
            img_model.type = img_type

        db.session.commit()

    def update_video(self, video_model, share_model, image_model):
        # 更新video表
        video_model.share_id = share_model.share_id
        video_model.user_id = share_model.user_id

        video_model.cover_id = image_model.image_id
        video_model.screenshot_a = image_model.image_a
        video_model.screenshot_b = image_model.image_b
        video_model.screenshot_c = image_model.image_c

        image_model.share_id = share_model.share_id
        image_model.user_id = share_model.user_id

        db.session.commit()
Exemplo n.º 29
0
from app.modules.vendor.pre_request.flask import filter_params
from app.modules.vendor.pre_request.filter_rules import Rule

from app.modules.core import core
from app.modules.base.base_handler import BaseHandler

from app.models.core.app_version import AppVersionModel

from app.helper.response import *
"""
core/appversion/isopen
core/appversion/getversion
通用规则
"""
rule = {
    "version": Rule(allow_empty=False),
    "device_type": Rule(allow_empty=False)
}


class OpenHandler(BaseHandler):
    """
    APP审核开关:/core/appversion/isopen
    """
    ios_version = [
        "1.0.1",
    ]

    android_version = [
        'baidu2.0.1',
    ]
Exemplo n.º 30
0
class ChangeCoverHandler(BaseHandler):

    rule = {"cover_type": Rule(direct_type=int)}

    @login_required
    @filter_params(post=rule)
    def post(self, params):
        img_upload = UploadImage()
        print(params)
        if params["cover_type"] == 1:
            if not img_upload.images:
                return json_fail_response(2402)

            img_upload.save_images()
            image_model = img_upload.images[0]["image"]
            ChangeCoverHandler.change_cover_image(image_model)
        else:
            pass

        cover_info = SocialPageModel.query_social_page_model(
            g.account["user_id"])
        result = {
            "user_banner": cover_info.get("cover", ""),
            "user_banner_type": cover_info.get("cover_type", 0)
        }
        if result.get("user_banner_type", 0) == 2:
            result["orientation"] = cover_info.get("orientation")
            result["user_banner_cover"] = cover_info.get("video_img", "")

        UserInfoModel.query_user_model_by_id(g.account["user_id"], True)
        return json_success_response(result)

    @staticmethod
    def change_cover_image(image_model):
        """
        修改封面图片
        """
        image_model.user_id = g.account["user_id"]

        UserInfoModel.query.filter_by(user_id=g.account["user_id"],
                                      status=1).update({
                                          "cover": image_model.image_id,
                                          "cover_type": 1,
                                      })

        social_page = SocialPageModel.query_social_page_model(
            g.account["user_id"], auto_format=False)
        if not social_page:
            social_page = SocialPageModel()
            social_page.user_id = g.account["user_id"]
            social_page.cover = image_model.image_id
            social_page.cover_type = 1

            db.session.add(social_page)
        else:
            social_page.cover = image_model.image_id
            social_page.cover_type = 1

        db.session.commit()

    @staticmethod
    def change_cover_video(params):
        pass