示例#1
0
def orderCallback(oId, userId, status, order):
    logger.debug('oId:%s, userId:%s, status:%d, order:%s', oId, userId, status,
                 order)
    '''
    根据支付结果更新订单的状态
    :param oId:RechargeFlow Id
    :param userId:用户Id
    :param status: 支付是否成功,1为成功,0为失败
    :param order:第三方平台返回订单信息,包括错误码
    :return: 
    '''
    item = {"$set": {"status": status, "order": order}}
    ###更新充值流水记录
    orderHelper = ClassHelper("RechargeFlow")
    rechargeFlow = orderHelper.update(oId, item)
    if rechargeFlow and status == 1:
        ###更新钱包
        walletHelper = ClassHelper("Wallet")
        walletInfo = walletHelper.find_one({"user": userId})
        if walletInfo:
            wallet = {"$inc": {'balance': rechargeFlow['amount']}}
            wallet = walletHelper.update(walletInfo['_id'], wallet)
        else:
            wallet = {"user": userId, 'balance': rechargeFlow['amount']}
            walletHelper.create(wallet)
        if wallet:
            return wallet.update(rechargeFlow)
        else:
            return None
    else:
        return None
示例#2
0
def addFeedRecord(userId, feedType, actionId, extraInfo=None):
    """
    给用户添加feed记录
    :param userId: 发出动作的用户
    :param feedType: 行为,包括认领,关注.分享,购买
    :param actionId: 关联的事件id,目前只有认领,actionId为faceid
    :param extraInfo:
    :return:
    """
    faceHelper = ClassHelper('Face')
    face = faceHelper.get(actionId)
    if not face:
        return
    assign = face.get('assign')
    if assign and assign.get('status') == 1:
        assigner = assign.get('assigner')
    else:
        assigner = None
    fansHelper = ClassHelper('Followee')
    feedHelper = ClassHelper('InBox')
    fans = fansHelper.find({'followee': userId, 'effect': {'$gt': 0}})
    feedUserIds = []
    for fan in fans:
        feedInfo = {
            'user': fan['user'],
            'type': feedType,
            'actionId': actionId,
            'read': False
        }
        if extraInfo:
            feedInfo['extraInfo'] = extraInfo
        feedHelper.create(feedInfo)
        feedUserIds.append(fan['user'])
    rc = Redis.get_connection()
    for user in feedUserIds:
        count = Redis.incrby('user_unread_feed_count_%s' % user, 1)
        message_json = {
            'to_id': user,
            'count': count,
            't': 'feed',
            'uri': 'honey://newFeed/$' + userId
        }
        publish_result = rc.publish(
            'push_channel', json.dumps(message_json, ensure_ascii=False))
        log.debug('public_result: %s', publish_result)
        # 发推送
        if not assigner == user:
            message = {'userid': user, 'action': 'newFeed', 'otherid': userId}
            requests.post(BaseConfig.pushUrl,
                          data=json.dumps(message),
                          headers={'X-MeCloud-Debug': '1'})
示例#3
0
def create_face_db(face_info):
    """
    创建数据库face记录
    :param face_info:
    :return:
    """
    face_helper = ClassHelper('Face')
    now = datetime.datetime.now()
    face_info['createAt'] = face_info['updateAt'] = now
    face_info['acl'] = {'*': {"read": True, "write": True}}
    return face_helper.create(face_info)
示例#4
0
    def orderCallback(self, oId, userId, status, order):
        '''
        根据支付结果更新订单的状态
        :param oId:RechargeFlow Id
        :param userId:用户Id
        :param status: 支付是否成功,1为成功,3为等待验证
        :param order:第三方平台返回订单信息,包括错误码
        :return: 
        '''

        ###更新充值流水记录
        orderHelper = ClassHelper("RechargeFlow")
        rechargeFlow = orderHelper.get(oId)
        walletHelper = ClassHelper("Wallet")
        walletInfo = walletHelper.find_one({"user": userId})
        if status == 1:  # 充值成功,更新钱包
            rechargeFlow_action = {
                'destClass': 'RechargeFlow',
                'query': {
                    "_id": oId
                },
                'action': {
                    "@set": {
                        "status": status,
                        "order": order
                    }
                }
            }
            if not walletInfo:  # 未找到钱包直接创建
                wallet = {"user": userId, 'balance': rechargeFlow['amount']}
                walletInfo = walletHelper.create(
                    wallet, transaction=[rechargeFlow_action])
            else:
                wallet = {"$inc": {'balance': rechargeFlow['amount']}}
                walletInfo = walletHelper.update(
                    walletInfo['_id'],
                    wallet,
                    transaction=[rechargeFlow_action])
                return walletInfo
        else:
            rechargeFlow = orderHelper.update(
                oId, {"$set": {
                    "status": status,
                    "order": order
                }})
            return rechargeFlow
示例#5
0
    def save(self):
        from mecloud.helper.ClassHelper import ClassHelper
        classHelper = ClassHelper(self.className)
        if self.objectId == None:
            if self.dirty.has_key('_sid'):
                self.dirty['_id'] = ObjectId(self.dirty['_sid'])
                del (self.dirty['_sid'])
            obj = classHelper.create(self.dirty)
            if obj == None:
                return False

            self.objectId = obj['_id']
        else:
            obj = classHelper.updateWithId(self.objectId, self.dirty)
            if obj == None:
                return False

        for k in obj:
            dict.__setitem__(self, k, obj[k])

        self.dirty.clear()
        return True
示例#6
0
    def post(self, action=None, blackee=None, isuser=1):
        userId = self.get_current_user()
        if not userId:
            log.err("black error,user not exist!")
            self.write(ERR_USER_NOTFOUND.message)
            return

        if not blackee:
            log.err("request param error")
            self.write(ERR_NOPARA.message)
            return

        is_user = True
        if int(isuser) == 0:
            is_user = False

        # 查找用户是否存在
        if is_user == True:
            userHelper = ClassHelper("User")
        else:
            userHelper = ClassHelper("BackupUser")
        findUser = userHelper.find_one({'_sid': blackee})
        if not findUser:
            log.err("%s error,blackee not exist!", action)
            self.write(ERR_USER_NOTFOUND.message)
            return

        blackHelper = ClassHelper("Blacklist")
        followHelper = ClassHelper("Followee")

        try:
            if action == 'block':  # 拉黑
                # 判断是否已经拉黑过
                blacked = blackHelper.find_one({
                    'user': userId,
                    'blacker': blackee
                })
                if blacked:
                    self.write(ERR_SUCCESS.message)
                    return
                blackHelper.create({'user': userId, 'blacker': blackee})

                if is_user:
                    fieldname = "followee"
                else:
                    fieldname = "backupFollowee"
                unfollowed = followHelper.find_one({
                    'user': userId,
                    fieldname: blackee,
                    'effect': {
                        '$gte': 1
                    }
                })
                if unfollowed:
                    FollowHelper.unfollow(userId, blackee, is_user)
                br = blackHelper.find_one({'user': userId, 'blacker': blackee})
                successInfo = deepcopy(ERR_SUCCESS)
                successInfo.message["data"] = br
                self.write(json.dumps(successInfo.message, cls=MeEncoder))
            elif action == 'unblock':  # 取消拉黑
                unblacked = blackHelper.find_one({
                    'user': userId,
                    'blacker': blackee
                })
                if not unblacked:
                    self.write(ERR_SUCCESS.message)
                    return
                blackHelper.delete(unblacked['_id'])
                self.write(ERR_SUCCESS.message)
            else:
                print "action error: " + action
                self.write(ERR_PATH_PERMISSION.message)
                return
        except Exception, e:
            log.err("BlacklistHandler-->action:%s in post() error, %s", action,
                    e)
            self.write(ERR_DB_OPERATION.message)
示例#7
0
        elif action == "qrcode":  #返回二维码需要的url
            if not self.request.arguments.has_key(
                    'shareTargetId') or not self.request.arguments.has_key(
                        'shareType'):
                self.write(ERR_PATH_PERMISSION.message)
                return
            shareType = int(self.get_argument("shareType"))
            shareTargetId = self.get_argument("shareTargetId")
            # 记录图片分享
            try:
                shareRecordHelper = ClassHelper("ShareRecords")
                shareInfo = shareRecordHelper.create({
                    "from":
                    self.user['_id'],
                    "shareTargetId":
                    shareTargetId,
                    "shareType":
                    shareType,
                    "compareFaceId":
                    self.get_argument("compareFaceId")
                })
                shareInfo[
                    'url'] = "http://heyhoney.blinnnk.com/" + "?compareId=" + shareInfo[
                        '_id']
                self.write(json.dumps(shareInfo, cls=MeEncoder))
            except Exception, ex:
                # print ex
                self.write(ERR_PATH_PERMISSION.message)
        else:
            self.write(ERR_PATH_PERMISSION.message)

    def getFile(self, fileId):
            return
        classHelper = ClassHelper("CoinSetting")
        coinSetting = classHelper.get(obj['id'])
        try:
            if coinSetting and coinSetting['status'] == 1:
                item = {}
                item['user'] = self.user['_id']
                item['recharge'] = coinSetting['amount'] * coinSetting['price']
                item['amount'] = coinSetting['amount']
                item['os'] = coinSetting['os']
                item['platform'] = coinSetting['platform']
                item['channel'] = obj['channel']
                item['version'] = obj['version']
                item['orderId'] = createOrderNo()
                classHelper = ClassHelper("RechargeFlow")
                reObj = classHelper.create(item)
                reObj['appleId'] = coinSetting['appleId']
                self.write(json.dumps(reObj, cls=MeEncoder))
            else:
                log.err("user %s appleRecharge error", self.user['_id'])
                self.write(ERR_PARA.message)
        except Exception, ex:
            log.err("user %s appleRecharge error", self.user['_id'])
            self.write(ERR_PARA.message)

    def payComplete(self):
        try:
            obj = json.loads(self.request.body)
        except Exception, e:
            log.err("JSON Error:[%d/%s] , error:%s", len(self.request.body),
                    self.request.body, str(e))
示例#9
0
        classHelper = ClassHelper("CoinSetting")
        coinSetting = classHelper.get(obj['id'])
        try:
            if coinSetting and coinSetting['status'] == 1:
                item = {}
                item['user'] = self.user['_id']
                item['recharge'] = coinSetting['price']
                item['amount'] = coinSetting['amount'] + coinSetting['free']
                item['os'] = coinSetting['os']
                item['platform'] = coinSetting['platform']
                item['channel'] = obj.get('channel', "APPLE")
                item['version'] = obj.get('version', "")
                item['orderNo'] = self.createOrderNo()
                item['status'] = 0
                classHelper = ClassHelper("RechargeFlow")
                reObj = classHelper.create(item)
                self.write(
                    json.dumps(
                        {
                            '_id': reObj['_id'],
                            'appleId': coinSetting['appleId']
                        },
                        cls=MeEncoder))
            else:
                log.err("user %s appleRecharge error", self.user['_id'])
                self.write(ERR_PARA.message)
        except Exception, ex:
            log.err("user %s appleRecharge error:%s", self.user['_id'], ex)
            self.write(ERR_PARA.message)

    # 苹果支付状态上传服务器