@@ -10,7 +10,7 @@ def get_config():
1010
1111class BattleMaster (object ):
1212 '''
13- Different bits represent different damage kind:
13+ Different bits represent different damage kind:
1414 '''
1515 NORM = BattleDao .NORM # 0
1616 LAST = BattleDao .LAST # 1<<0
@@ -41,7 +41,7 @@ def damage_kind_to_string(src):
4141 SERVER_JP_NAME = ('jp' , 'JP' , 'Jp' , '日' , '日服' , str (SERVER_JP ))
4242 SERVER_TW_NAME = ('tw' , 'TW' , 'Tw' , '台' , '台服' , str (SERVER_TW ))
4343 SERVER_CN_NAME = ('cn' , 'CN' , 'Cn' , '国' , '国服' , 'B' , 'B服' , str (SERVER_CN ))
44-
44+
4545 def __init__ (self , group ):
4646 super ().__init__ ()
4747 self .group = group
@@ -54,7 +54,7 @@ def __init__(self, group):
5454 def get_timezone_num (server ):
5555 return 9 if BattleMaster .SERVER_JP == server else 8
5656
57-
57+
5858 @staticmethod
5959 def get_yyyymmdd (time , zone_num :int = 8 ):
6060 '''
@@ -133,171 +133,181 @@ def get_server_code(server_name):
133133 return - 1
134134
135135
136- def get_battledao (self , cid , time ):
137- clan = self .get_clan (cid )
136+ def get_battledao (self , time ):
137+ clan = self .get_clan ()
138138 zone_num = self .get_timezone_num (clan ['server' ])
139139 yyyy , mm , _ = self .get_yyyymmdd (time , zone_num )
140- return BattleDao (self .group , cid , yyyy , mm )
141-
142-
143- def add_clan (self , cid , name , server ):
144- return self .clandao .add ({'gid' : self .group , 'cid' : cid , 'name' : name , 'server' : server })
145- def del_clan (self , cid ):
146- return self .clandao .delete (self .group , cid )
147- def mod_clan (self , cid , name , server ):
148- return self .clandao .modify ({'gid' : self .group , 'cid' : cid , 'name' : name , 'server' : server })
149- def has_clan (self , cid ):
150- return True if self .clandao .find_one (self .group , cid ) else False
151- def get_clan (self , cid ):
152- return self .clandao .find_one (self .group , cid )
140+ return BattleDao (self .group , yyyy , mm )
141+
142+
143+ def add_clan (self , name , server ):
144+ return self .clandao .add ({'gid' : self .group , 'name' : name , 'server' : server })
145+ def get_clan (self ):
146+ return self .clandao .find_one (self .group )
147+ def has_clan (self ):
148+ return True if self .clandao .find_one (self .group ) else False
153149 def list_clan (self ):
154- return self .clandao .find_by_gid (self .group )
155-
156-
157- def add_member (self , uid , alt , name , cid ):
158- return self .memberdao . add ({'uid ' : uid , 'alt' : alt , ' name' : name , 'gid ' : self . group , 'cid' : cid })
159- def del_member (self , uid , alt ):
160- return self .memberdao .delete (uid , alt )
161- def clear_member ( self , cid = None ):
162- return self . memberdao . delete_by ( gid = self . group , cid = cid )
163- def mod_member (self , uid , alt , new_name , new_cid ):
164- return self .memberdao .modify ({'uid' : uid , 'alt' : alt , 'name' : new_name , ' gid' : self .group , 'cid ' : new_cid })
165- def has_member (self , uid , alt ):
166- mem = self .memberdao .find_one (uid , alt )
167- return True if mem and mem [ 'gid' ] == self . group else False
168- def get_member (self , uid , alt ):
169- mem = self .memberdao .find_one (uid , alt )
170- return mem if mem and mem [ 'gid' ] == self . group else None
171- def list_member (self , cid = None ):
172- return self .memberdao .find_by (gid = self .group , cid = cid )
150+ return [ self .clandao .find_one (self .group )]
151+ def list_clan_by_uid ( self , uid ):
152+ return self . clandao . find_by_uid ( uid )
153+ def mod_clan (self , name , server ):
154+ return self .clandao . modify ({'gid ' : self . group , 'name' : name , 'server ' : server })
155+ def del_clan (self ):
156+ return self .clandao .delete (self . group )
157+
158+
159+ def add_member (self , uid , name ):
160+ return self .memberdao .add ({'uid' : uid , 'gid' : self .group , 'name ' : name })
161+ def get_member (self , uid ):
162+ mem = self .memberdao .find_one (uid , self . group )
163+ return mem if mem else None
164+ def has_member (self , uid ):
165+ mem = self .memberdao .find_one (uid , self . group )
166+ return True if mem else False
167+ def list_member (self ):
168+ return self .memberdao .find_by (gid = self .group )
173169 def list_account (self , uid ):
174170 return self .memberdao .find_by (gid = self .group , uid = uid )
175-
176-
177- def add_challenge (self , uid , alt , round_ , boss , dmg , flag , time ):
178- mem = self .get_member (uid , alt )
171+ def mod_member (self , uid , new_name , new_sl , new_auth ):
172+ return self .memberdao .modify (
173+ {
174+ 'uid' : uid ,
175+ 'gid' : self .group ,
176+ 'name' : new_name ,
177+ 'last_sl' : new_sl ,
178+ 'authority_group' : new_auth
179+ }
180+ )
181+ def del_member (self , uid ):
182+ return self .memberdao .delete (uid , self .group )
183+ def clear_member (self ):
184+ return self .memberdao .delete_by (gid = self .group )
185+
186+
187+ def add_challenge (self , uid , round_ , boss , dmg , remain , flag , time ):
188+ mem = self .get_member (uid )
179189 if not mem or mem ['gid' ] != self .group :
180190 raise NotFoundError ('未找到成员' )
181191 challenge = {
182- 'uid' : uid ,
183- 'alt ' : alt ,
184- 'time ' : time ,
185- 'round ' : round_ ,
186- 'boss ' : boss ,
187- 'dmg ' : dmg ,
188- 'flag' : flag
192+ 'uid' : uid ,
193+ 'time ' : time ,
194+ 'round ' : round_ ,
195+ 'boss ' : boss ,
196+ 'dmg ' : dmg ,
197+ 'remain ' : remain ,
198+ 'flag' : flag
189199 }
190- dao = self .get_battledao (mem [ 'cid' ], time )
200+ dao = self .get_battledao (time )
191201 return dao .add (challenge )
192202
193- def mod_challenge (self , eid , uid , alt , round_ , boss , dmg , flag , time ):
194- mem = self .get_member (uid , alt )
203+ def get_challenge (self , eid , time ):
204+ dao = self .get_battledao (time )
205+ return dao .find_one (eid )
206+
207+ def list_challenge (self , time ):
208+ dao = self .get_battledao (time )
209+ return dao .find_all ()
210+
211+ def list_challenge_of_user (self , uid , time ):
212+ mem = self .memberdao .find_one (uid , self .group )
213+ if not mem or mem ['gid' ] != self .group :
214+ return []
215+ dao = self .get_battledao (time )
216+ return dao .find_by (uid = uid )
217+
218+ def mod_challenge (self , eid , uid , round_ , boss , dmg , remain , flag , time ):
219+ mem = self .get_member (uid )
195220 if not mem or mem ['gid' ] != self .group :
196221 raise NotFoundError ('未找到成员' )
197222 challenge = {
198- 'eid' : eid ,
199- 'uid' : uid ,
200- 'alt ' : alt ,
201- 'time ' : time ,
202- 'round ' : round_ ,
203- 'boss ' : boss ,
204- 'dmg ' : dmg ,
205- 'flag' : flag
223+ 'eid' : eid ,
224+ 'uid' : uid ,
225+ 'time ' : time ,
226+ 'round ' : round_ ,
227+ 'boss ' : boss ,
228+ 'dmg ' : dmg ,
229+ 'remain ' : remain ,
230+ 'flag' : flag
206231 }
207- dao = self .get_battledao (mem [ 'cid' ], time )
232+ dao = self .get_battledao (time )
208233 return dao .modify (challenge )
209234
210- def del_challenge (self , eid , cid , time ):
211- dao = self .get_battledao (cid , time )
235+ def del_challenge (self , eid , time ):
236+ dao = self .get_battledao (time )
212237 return dao .delete (eid )
213238
214- def get_challenge (self , eid , cid , time ):
215- dao = self .get_battledao (cid , time )
216- return dao .find_one (eid )
217-
218- def list_challenge (self , cid , time ):
219- dao = self .get_battledao (cid , time )
220- return dao .find_all ()
221-
222- def list_challenge_of_user (self , uid , alt , time ):
223- mem = self .memberdao .find_one (uid , alt )
224- if not mem or mem ['gid' ] != self .group :
225- return []
226- dao = self .get_battledao (mem ['cid' ], time )
227- return dao .find_by (uid = uid , alt = alt )
228-
229239
230240 @staticmethod
231241 def filt_challenge_of_day (challenge_list , time , zone_num :int = 8 ):
232242 _ , _ , day = BattleMaster .get_yyyymmdd (time , zone_num )
233243 return list (filter (lambda challen : day == BattleMaster .get_yyyymmdd (challen ['time' ], zone_num )[2 ], challenge_list ))
234244
235245
236- def list_challenge_of_day (self , cid , time , zone_num :int = 8 ):
237- return self .filt_challenge_of_day (self .list_challenge (cid , time ), time , zone_num )
246+ def list_challenge_of_day (self , time , zone_num :int = 8 ):
247+ return self .filt_challenge_of_day (self .list_challenge (time ), time , zone_num )
238248
239249
240- def list_challenge_of_user_of_day (self , uid , alt , time , zone_num :int = 8 ):
241- return self .filt_challenge_of_day (self .list_challenge_of_user (uid , alt , time ), time , zone_num )
250+ def list_challenge_of_user_of_day (self , uid , time , zone_num :int = 8 ):
251+ return self .filt_challenge_of_day (self .list_challenge_of_user (uid , time ), time , zone_num )
242252
243253
244- def stat_challenge (self , cid , time , only_one_day = True , zone_num :int = 8 ):
254+ def stat_challenge (self , time , only_one_day = True , zone_num :int = 8 ):
245255 '''
246256 统计每个成员的出刀
247257 return [(member, [challenge])]
248258 '''
249259 ret = []
250- mem = self .list_member (cid )
251- dao = self .get_battledao (cid , time )
260+ mem = self .list_member ()
261+ dao = self .get_battledao (time )
252262 for m in mem :
253- challens = dao .find_by (uid = m ['uid' ], alt = m [ 'alt' ] )
263+ challens = dao .find_by (uid = m ['uid' ])
254264 if only_one_day :
255265 challens = self .filt_challenge_of_day (challens , time , zone_num )
256266 ret .append ((m , challens ))
257267 return ret
258268
259-
260- def stat_damage (self , cid , time ):
269+
270+ def stat_damage (self , time ):
261271 '''
262- 统计cid会各成员的本月各Boss伤害总量
263- :return: [(uid, alt, name, [total_dmg, dmg1, ..., dmg5])]
272+ 统计各成员的本月各Boss伤害总量
273+ :return: [(uid, name, [total_dmg, dmg1, ..., dmg5])]
264274 '''
265- clan = self .get_clan (cid )
275+ clan = self .get_clan ()
266276 if not clan :
267- raise NotFoundError (f'未找到公会{ cid } ' )
277+ raise NotFoundError (f'未找到公会' )
268278 server = clan ['server' ]
269- stat = self .stat_challenge (cid , time , only_one_day = False , zone_num = self .get_timezone_num (server ))
279+ stat = self .stat_challenge (time , only_one_day = False , zone_num = self .get_timezone_num (server ))
270280 ret = []
271281 for mem , challens in stat :
272282 dmgs = [0 ] * 6
273283 for ch in challens :
274284 d = ch ['dmg' ]
275285 dmgs [0 ] += d
276286 dmgs [ch ['boss' ]] += d
277- ret .append ((mem ['uid' ], mem ['alt' ], mem [ ' name' ], dmgs ))
287+ ret .append ((mem ['uid' ], mem ['name' ], dmgs ))
278288 return ret
279289
280290
281- def stat_score (self , cid , time ):
291+ def stat_score (self , time ):
282292 '''
283- 统计cid会各成员的本月总分数
284- :return: [(uid,alt, name,score)]
293+ 统计各成员的本月总分数
294+ :return: [(uid,name,score)]
285295 '''
286- clan = self .get_clan (cid )
296+ clan = self .get_clan ()
287297 if not clan :
288- raise NotFoundError (f'未找到公会{ cid } ' )
298+ raise NotFoundError (f'未找到公会' )
289299 server = clan ['server' ]
290- stat = self .stat_challenge (cid , time , only_one_day = False , zone_num = self .get_timezone_num (server ))
300+ stat = self .stat_challenge (time , only_one_day = False , zone_num = self .get_timezone_num (server ))
291301 ret = [
292- (mem ['uid' ], mem ['alt' ], mem [ ' name' ], sum (map (lambda ch : round (self .get_score_rate (ch ['round' ], ch ['boss' ], server ) * ch ['dmg' ]), challens )))
302+ (mem ['uid' ], mem ['name' ], sum (map (lambda ch : round (self .get_score_rate (ch ['round' ], ch ['boss' ], server ) * ch ['dmg' ]), challens )))
293303 for mem , challens in stat
294304 ]
295305 return ret
296306
297307
298- def list_challenge_remain (self , cid , time ):
308+ def list_challenge_remain (self , time ):
299309 '''
300- return [(uid,alt, name,remain_n,remain_e)]
310+ return [(uid,name,remain_n,remain_e)]
301311
302312 norm + timeout + last == 3 - remain_n // 正常出刀数 == 3 - 余刀数
303313 last - ext == remain_e // 尾刀数 - 补时刀数 == 补时余刀
@@ -323,31 +333,32 @@ def count(challens):
323333 norm = norm + 1
324334 return norm , last , ext , timeout
325335
326- clan = self .get_clan (cid )
336+ clan = self .get_clan ()
327337 if not clan :
328- raise NotFoundError (f'未找到公会{ cid } ' )
338+ raise NotFoundError (f'未找到公会' )
329339 ret = []
330- stat = self .stat_challenge (cid , time , only_one_day = True , zone_num = self .get_timezone_num (clan ['server' ]))
340+ stat = self .stat_challenge (time , only_one_day = True , zone_num = self .get_timezone_num (clan ['server' ]))
331341 for mem , challens in stat :
332342 norm , last , ext , timeout = count (challens )
333343 r = (
334- mem ['uid' ], mem ['alt' ], mem ['name' ],
344+ mem ['uid' ],
345+ mem ['name' ],
335346 3 - (norm + timeout + last ),
336347 last - ext ,
337348 )
338349 ret .append (r )
339350 return ret
340351
341352
342- def get_challenge_progress (self , cid , time ):
353+ def get_challenge_progress (self , time ):
343354 '''
344355 return (round, boss, remain_hp)
345356 '''
346- clan = self .get_clan (cid )
357+ clan = self .get_clan ()
347358 if not clan :
348359 return None
349360 server = clan ['server' ]
350- dao = self .get_battledao (cid , time )
361+ dao = self .get_battledao (time )
351362 challens = dao .find_all ()
352363 if not len (challens ):
353364 return ( 1 , 1 , self .get_boss_hp (1 , 1 , server ) )
0 commit comments