def readMail(self, mailTime): findKey = -1 mailsCount = len(self.mails) state = Mails.Mail_State_read @util.dbDeco def updateSucCB(result, rownum, error): if findKey != -1: self.mails[findKey]["state"] = state self.client.onOperateSuc("readMail") for i in range(mailsCount): mail = self.mails[i] if mail["time"] == mailTime: if mail["state"] != Mails.Mail_State_Not_Open: return findKey = i if mail["attachment"] != "": state = Mails.Mail_State_Has_Open_Not_Get setValueMap = {"state": state} filterValueMap = {"to_dbid": self.databaseID, "time": mailTime} sql = util.getUpdateSql("tbl_Mails", setValueMap, filterValueMap) KBEngine.executeRawDatabaseCommand(sql, updateSucCB) break
def __updateGifts(self, configID, addCount): # 1、是否存在 isFind = False for item in self.giftContainer.values(): if item["itemID"] != configID: continue isFind = True curCount = item["amount"] setMap = {"amount": curCount + addCount} filterMap = {"roleID": self.databaseID, "UUID": item["UUID"]} sql = util.getUpdateSql("tbl_ItemGifts", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.giftContainer[ item["UUID"]]["amount"] = curCount + addCount self.noticeClientBagUpdate(item["UUID"], configID, curCount + addCount) return KBEngine.executeRawDatabaseCommand(sql, cb) break if isFind == True: return return self.__insertGift(configID, addCount)
def updateGiftDB(self, item): setMap = {"amount": item["amount"]} filterMap = {"roleID": self.databaseID, "UUID": item["UUID"]} item["state"] = DBState.NoAction sql = util.getUpdateSql("tbl_ItemGifts", setMap, filterMap) KBEngine.executeRawDatabaseCommand(sql, None, self.id)
def decEquip(self, uuid, count): if uuid not in self.equipsContainer: self.onEquipError(EquipModuleError.Equip_not_exist) return curCount = self.equipsContainer[uuid]["amount"] itemID = self.equipsContainer[uuid]["itemID"] if curCount < count: self.onEquipError(EquipModuleError.Equip_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemEquips", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.equipsContainer[uuid]["amount"] = curCount - count self.noticeClientBagUpdate(uuid,itemID , curCount - count) KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemEquips", filterMap) @util.dbDeco def cb(result, rownum, error): del self.equipsContainer[uuid] self.noticeClientBagUpdate(uuid, itemID, 0) return KBEngine.executeRawDatabaseCommand(sql, cb)
def __updateEquips(self, paramMap): # 1、是否存在 isFind = False for item in self.equipsContainer.values(): if item["itemID"] != paramMap["itemID"]: continue isFind = True curCount = item["amount"] setMap = {"amount": curCount + paramMap["amount"]} filterMap = {"roleID": self.databaseID, "UUID": item["UUID"]} sql = util.getUpdateSql("tbl_ItemEquips", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.equipsContainer[item["UUID"]]["amount"] = curCount + paramMap["amount"] self.noticeClientBagUpdate(item["UUID"], paramMap["itemID"], curCount + paramMap["amount"]) KBEngine.executeRawDatabaseCommand(sql, cb) break if isFind == True: return return self.__insertEquip(paramMap )
def updateEquipDB(self, item): setMap = {} setMap[EquipItemKeys.star] = item["star"] setMap[EquipItemKeys.strongLevel] = item["strongLevel"] setMap[EquipItemKeys.gem1] = item["gem1"] setMap[EquipItemKeys.gem2] = item["gem2"] setMap[EquipItemKeys.gem3] = item["gem3"] filterMap = {"roleID": self.databaseID, "UUID": item["UUID"]} item["state"] = DBState.NoAction sql = util.getUpdateSql("tbl_ItemEquips", setMap, filterMap) KBEngine.executeRawDatabaseCommand(sql, None, self.id)
def updateEquipProps(self,uuid,setMap): filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemEquips", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): item = self.equipsContainer[uuid] for k,v in setMap.items(): item[k] = v return True KBEngine.executeRawDatabaseCommand(sql,cb)
def decPieces(self, uuid, count): if uuid not in self.piecesContainer: self.client.onPieceError(PieceCombineError.Piece_not_exist) return curCount = self.piecesContainer[uuid]["amount"] itemID = self.piecesContainer[uuid]["itemID"] if curCount < count: self.client.onPieceError(PieceCombineError.Piece_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemPieces", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.piecesContainer[uuid]["amount"] = curCount - count self.writeToDB() self.noticeClientBagUpdate(uuid, itemID, curCount - count) return KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemPieces", filterMap) @util.dbDeco def cb(result, rownum, error): del self.piecesContainer[uuid] self.writeToDB() self.noticeClientBagUpdate(uuid, itemID, 0) return True KBEngine.executeRawDatabaseCommand(sql, cb)
def decDiamond(self, uuid, count): if uuid not in self.diamondsContainer: self.onDiamondError(DiamondModuleError.Diamond_not_exist) return ERROR_MSG("-----------decDiamond---------uuid-----------" + str(uuid)) curCount = self.diamondsContainer[uuid]["amount"] itemID = self.diamondsContainer[uuid]["itemID"] if curCount < count: self.onDiamondError(DiamondModuleError.Diamond_not_enough) return if curCount > count: setMap = {"amount": curCount - count} filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getUpdateSql("tbl_ItemDiamonds", setMap, filterMap) @util.dbDeco def cb(result, rownum, error): self.diamondsContainer[uuid]["amount"] = curCount - count self.noticeClientBagUpdate(uuid, itemID, curCount - count) self.writeToDB() return KBEngine.executeRawDatabaseCommand(sql, cb) elif curCount == count: filterMap = {"roleID": self.databaseID, "UUID": uuid} sql = util.getDelSql("tbl_ItemDiamonds", filterMap) @util.dbDeco def cb(result, rownum, error): del self.diamondsContainer[uuid] self.noticeClientBagUpdate(uuid, itemID, 0) return KBEngine.executeRawDatabaseCommand(sql, cb)