views.py 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. # coding=utf-8
  2. from __future__ import unicode_literals
  3. import requests
  4. import random,datetime,time
  5. import json
  6. import uuid
  7. from django.contrib import auth
  8. from django.core.cache import cache
  9. from django.conf import settings
  10. from django.http import FileResponse,HttpResponse
  11. from wsgiref.util import FileWrapper
  12. import common.error_info as ce
  13. from common import core_views as cv
  14. import common.common_control as ccc
  15. import common.common_functions as ccf
  16. import manage.control_auth as ca
  17. import manage.controls as ctl
  18. import common.models as cm
  19. class UploadFileView(cv.AdminView):
  20. def post(self, request):
  21. """
  22. #文件上传(平台管理后台)
  23. @file:"",文件对象
  24. @type:"",前端自定义参数
  25. """
  26. try:
  27. rst = ccc.upload_file(request)
  28. return cv.to_suc(rst)
  29. except Exception as e:
  30. cv.tracefail()
  31. return cv.to_fail(e)
  32. class UserInfoListView(cv.AdminView):
  33. def get(self, request):
  34. """#用户列表(平台管理后台)
  35. @username:"用户名"
  36. @usercode:"用户代码"
  37. @page:1
  38. @page_size:20
  39. """
  40. qdata = request.json
  41. try:
  42. total,rst = ctl.get_list_info(self,**qdata)
  43. return cv.to_suc({"total":total,"list":rst})
  44. except Exception as e:
  45. cv.tracefail()
  46. return cv.to_fail(e)
  47. class UserInfoView(cv.AdminView):
  48. def get(self, request):
  49. """#用户详情(平台管理后台)
  50. @id:1
  51. """
  52. qdata = request.json
  53. need_params = ["id"]
  54. mse = ccf.check_params(*need_params,**qdata)
  55. if mse:
  56. raise ce.TipException(mse)
  57. try:
  58. vals = ccf.get_need_params(*need_params,**qdata)
  59. rst = ctl.get_detail_info(self,**vals)
  60. return cv.to_suc(rst)
  61. except Exception as e:
  62. cv.tracefail()
  63. return cv.to_fail(e)
  64. def gen_code(self):
  65. """
  66. """
  67. code = ""
  68. while True:
  69. code = "".join([str(random.choice([0,1,2,3,5,6,7,8,9])) for x in range(0,6)])
  70. if cm.UserInfo.objects.filter(usercode=code).exists():
  71. time.sleep(0.1)
  72. continue
  73. break
  74. return code
  75. def post(self,request):
  76. """#新增用户(平台管理后台)
  77. @username:"用户名"
  78. @usercode:"用户代码(非必填限制6位数字)"
  79. """
  80. qdata = request.json
  81. need_params = ["username"]
  82. mse = ccf.check_params(*need_params,**qdata)
  83. if mse:
  84. raise ce.TipException(mse)
  85. try:
  86. need_params.extend(["usercode","badge","zq","cw","df"])
  87. vals = ccf.get_need_params(*need_params,**qdata)
  88. if not vals.get("usercode"):
  89. vals["usercode"] = self.gen_code()
  90. rst = ctl.add_model(self,**vals)
  91. return cv.to_suc(rst)
  92. except Exception as e:
  93. cv.tracefail()
  94. return cv.to_fail(e)
  95. def put(self,request):
  96. """#修改账号(平台管理后台)
  97. @id:"1"
  98. @username:"用户名"
  99. @usercode:"用户代码(非必填限制6位数字)"
  100. @is_bind:"是否绑定",0/1
  101. """
  102. qdata = request.json
  103. need_params = ["id","username","usercode"]
  104. mse = ccf.check_params(*need_params,**qdata)
  105. if mse:
  106. raise ce.TipException(mse)
  107. try:
  108. need_params.extend(["is_bind","badge","zq","cw","df"])
  109. vals = ccf.get_need_params(*need_params,**qdata)
  110. rst = ctl.update_model(self,**vals)
  111. return cv.to_suc(rst)
  112. except Exception as e:
  113. cv.tracefail()
  114. return cv.to_fail(e)
  115. def delete(self,request):
  116. """#删除用户(平台管理后台)
  117. @id:"1",多个逗号分隔
  118. """
  119. qdata = request.json
  120. need_params = ["id"]
  121. mse = ccf.check_params(*need_params,**qdata)
  122. if mse:
  123. raise ce.TipException(mse)
  124. try:
  125. vals = ccf.get_need_params(*need_params,**qdata)
  126. rst = ctl.delete_model(self,**vals)
  127. return cv.to_suc(rst)
  128. except Exception as e:
  129. cv.tracefail()
  130. return cv.to_fail(e)
  131. class PlayerListView(cv.AdminView):
  132. def get(self, request):
  133. """#选手列表(平台管理后台)
  134. @user_id:""
  135. @match_id:""
  136. @match_group:""
  137. @page:1
  138. @page_size:20
  139. """
  140. qdata = request.json
  141. try:
  142. total,rst = ctl.get_list_info(self,**qdata)
  143. return cv.to_suc({"total":total,"list":rst})
  144. except Exception as e:
  145. cv.tracefail()
  146. return cv.to_fail(e)
  147. class PlayerView(cv.AdminView):
  148. def get(self, request):
  149. """#选手详情(平台管理后台)
  150. @id:1
  151. """
  152. qdata = request.json
  153. need_params = ["id"]
  154. mse = ccf.check_params(*need_params,**qdata)
  155. if mse:
  156. raise ce.TipException(mse)
  157. try:
  158. vals = ccf.get_need_params(*need_params,**qdata)
  159. rst = ctl.get_detail_info(self,**vals)
  160. return cv.to_suc(rst)
  161. except Exception as e:
  162. cv.tracefail()
  163. return cv.to_fail(e)
  164. def post(self,request):
  165. """#新增选手(平台管理后台)
  166. @user_id:"用户id"
  167. @fund:"资金"
  168. @match_id:"比赛id"
  169. @match_group:"比赛分组"
  170. """
  171. qdata = request.json
  172. need_params = ["user_id","match_id","match_group"]
  173. mse = ccf.check_params(*need_params,**qdata)
  174. if mse:
  175. raise ce.TipException(mse)
  176. try:
  177. need_params.extend(["match_status","fund"])
  178. vals = ccf.get_need_params(*need_params,**qdata)
  179. vals["fund"] = round(float(vals.get("fund",0)),4)
  180. rst = ctl.add_model(self,**vals)
  181. return cv.to_suc(rst)
  182. except Exception as e:
  183. cv.tracefail()
  184. return cv.to_fail(e)
  185. def put(self,request):
  186. """#修改选手(平台管理后台)
  187. @id:"1"
  188. @fund:"资金"
  189. @match_id:"比赛id"
  190. @match_group:"比赛分组"
  191. """
  192. qdata = request.json
  193. need_params = ["id","user_id","match_id","match_group"]
  194. mse = ccf.check_params(*need_params,**qdata)
  195. if mse:
  196. raise ce.TipException(mse)
  197. try:
  198. need_params.extend(["match_status","fund"])
  199. vals = ccf.get_need_params(*need_params,**qdata)
  200. vals["fund"] = round(float(vals.get("fund",0)),4)
  201. rst = ctl.update_model(self,**vals)
  202. return cv.to_suc(rst)
  203. except Exception as e:
  204. cv.tracefail()
  205. return cv.to_fail(e)
  206. def delete(self,request):
  207. """#删除选手(平台管理后台)
  208. @id:"1",多个逗号分隔
  209. """
  210. qdata = request.json
  211. need_params = ["id"]
  212. mse = ccf.check_params(*need_params,**qdata)
  213. if mse:
  214. raise ce.TipException(mse)
  215. try:
  216. vals = ccf.get_need_params(*need_params,**qdata)
  217. rst = ctl.delete_model(self,**vals)
  218. return cv.to_suc(rst)
  219. except Exception as e:
  220. cv.tracefail()
  221. return cv.to_fail(e)
  222. class MatchListView(cv.AdminView):
  223. def get(self, request):
  224. """#赛事列表(平台管理后台)
  225. @name:""
  226. @page:1
  227. @page_size:20
  228. """
  229. qdata = request.json
  230. try:
  231. total,rst = ctl.get_list_info(self,**qdata)
  232. return cv.to_suc({"total":total,"list":rst})
  233. except Exception as e:
  234. cv.tracefail()
  235. return cv.to_fail(e)
  236. class MatchView(cv.AdminView):
  237. def get(self, request):
  238. """#赛事详情(平台管理后台)
  239. @id:1
  240. """
  241. qdata = request.json
  242. need_params = ["id"]
  243. mse = ccf.check_params(*need_params,**qdata)
  244. if mse:
  245. raise ce.TipException(mse)
  246. try:
  247. vals = ccf.get_need_params(*need_params,**qdata)
  248. rst = ctl.get_detail_info(self,**vals)
  249. return cv.to_suc(rst)
  250. except Exception as e:
  251. cv.tracefail()
  252. return cv.to_fail(e)
  253. def post(self,request):
  254. """#新增赛事(平台管理后台)
  255. @name:"赛事名称"
  256. @start_time:"开始时间"
  257. @end_time:"结束时间"
  258. """
  259. qdata = request.json
  260. need_params = ["name","start_time","end_time"]
  261. mse = ccf.check_params(*need_params,**qdata)
  262. if mse:
  263. raise ce.TipException(mse)
  264. try:
  265. need_params.extend(["calendar","valid_dates","player_price","viewer_price","match_status","signup_start_time","signup_end_time"])
  266. vals = ccf.get_need_params(*need_params,**qdata)
  267. vals["valid_dates"] = json.dumps(vals["valid_dates"])
  268. rst = ctl.add_model(self,**vals)
  269. return cv.to_suc(rst)
  270. except Exception as e:
  271. cv.tracefail()
  272. return cv.to_fail(e)
  273. def put(self,request):
  274. """#修改赛事(平台管理后台)
  275. @id:"1"
  276. @name:"赛事名称"
  277. @start_time:"开始时间"
  278. @end_time:"结束时间"
  279. """
  280. qdata = request.json
  281. need_params = ["id","name","start_time","end_time","player_price","viewer_price"]
  282. mse = ccf.check_params(*need_params,**qdata)
  283. if mse:
  284. raise ce.TipException(mse)
  285. try:
  286. need_params.extend(["calendar","valid_dates","signup_start_time","signup_end_time","match_status"])
  287. vals = ccf.get_need_params(*need_params,**qdata)
  288. vals["valid_dates"] = json.dumps(vals["valid_dates"])
  289. rst = ctl.update_model(self,**vals)
  290. return cv.to_suc(rst)
  291. except Exception as e:
  292. cv.tracefail()
  293. return cv.to_fail(e)
  294. def delete(self,request):
  295. """#删除赛事(平台管理后台)
  296. @id:"1",多个逗号分隔
  297. """
  298. qdata = request.json
  299. need_params = ["id"]
  300. mse = ccf.check_params(*need_params,**qdata)
  301. if mse:
  302. raise ce.TipException(mse)
  303. try:
  304. vals = ccf.get_need_params(*need_params,**qdata)
  305. rst = ctl.delete_model(self,**vals)
  306. return cv.to_suc(rst)
  307. except Exception as e:
  308. cv.tracefail()
  309. return cv.to_fail(e)
  310. class MatchGroupListView(cv.AdminView):
  311. def get(self, request):
  312. """#分组列表(平台管理后台)
  313. @name:""
  314. @page:1
  315. @page_size:20
  316. """
  317. qdata = request.json
  318. try:
  319. total,rst = ctl.get_list_info(self,**qdata)
  320. return cv.to_suc({"total":total,"list":rst})
  321. except Exception as e:
  322. cv.tracefail()
  323. return cv.to_fail(e)
  324. class MatchGroupView(cv.AdminView):
  325. def get(self, request):
  326. """#分组详情(平台管理后台)
  327. @id:1
  328. """
  329. qdata = request.json
  330. need_params = ["id"]
  331. mse = ccf.check_params(*need_params,**qdata)
  332. if mse:
  333. raise ce.TipException(mse)
  334. try:
  335. vals = ccf.get_need_params(*need_params,**qdata)
  336. rst = ctl.get_detail_info(self,**vals)
  337. return cv.to_suc(rst)
  338. except Exception as e:
  339. cv.tracefail()
  340. return cv.to_fail(e)
  341. def post(self,request):
  342. """#新增分组(平台管理后台)
  343. @match_id:"赛事id"
  344. @name:"分组名称"
  345. """
  346. qdata = request.json
  347. need_params = ["match_id","name"]
  348. mse = ccf.check_params(*need_params,**qdata)
  349. if mse:
  350. raise ce.TipException(mse)
  351. try:
  352. need_params.extend(["is_active"])
  353. vals = ccf.get_need_params(*need_params,**qdata)
  354. rst = ctl.add_model(self,**vals)
  355. return cv.to_suc(rst)
  356. except Exception as e:
  357. cv.tracefail()
  358. return cv.to_fail(e)
  359. def put(self,request):
  360. """#修改赛事(平台管理后台)
  361. @id:"1"
  362. @match_id:"赛事id"
  363. @name:"分组名称"
  364. """
  365. qdata = request.json
  366. need_params = ["id","match_id","name"]
  367. mse = ccf.check_params(*need_params,**qdata)
  368. if mse:
  369. raise ce.TipException(mse)
  370. try:
  371. need_params.extend(["is_active"])
  372. vals = ccf.get_need_params(*need_params,**qdata)
  373. rst = ctl.update_model(self,**vals)
  374. return cv.to_suc(rst)
  375. except Exception as e:
  376. cv.tracefail()
  377. return cv.to_fail(e)
  378. def delete(self,request):
  379. """#删除分组(平台管理后台)
  380. @id:"1",多个逗号分隔
  381. """
  382. qdata = request.json
  383. need_params = ["id"]
  384. mse = ccf.check_params(*need_params,**qdata)
  385. if mse:
  386. raise ce.TipException(mse)
  387. try:
  388. vals = ccf.get_need_params(*need_params,**qdata)
  389. rst = ctl.delete_model(self,**vals)
  390. return cv.to_suc(rst)
  391. except Exception as e:
  392. cv.tracefail()
  393. return cv.to_fail(e)
  394. class PlayerRecordListView(cv.AdminView):
  395. def get(self, request):
  396. """#数据列表(平台管理后台)
  397. @name:""
  398. @page:1
  399. @page_size:20
  400. """
  401. qdata = request.json
  402. try:
  403. total,rst = ctl.get_list_info(self,**qdata)
  404. return cv.to_suc({"total":total,"list":rst})
  405. except Exception as e:
  406. cv.tracefail()
  407. return cv.to_fail(e)
  408. class PlayerRecordView(cv.AdminView):
  409. def get(self, request):
  410. """#数据详情(平台管理后台)
  411. @id:1
  412. """
  413. qdata = request.json
  414. need_params = ["id"]
  415. mse = ccf.check_params(*need_params,**qdata)
  416. if mse:
  417. raise ce.TipException(mse)
  418. try:
  419. vals = ccf.get_need_params(*need_params,**qdata)
  420. rst = ctl.get_detail_info(self,**vals)
  421. return cv.to_suc(rst)
  422. except Exception as e:
  423. cv.tracefail()
  424. return cv.to_fail(e)
  425. def post(self,request):
  426. """#新增数据(平台管理后台)
  427. @player_id:"选手id"
  428. @match_id:"赛事id"
  429. @stock_date:"持股日期"
  430. @today_fund:"今日净资产"
  431. @today_stock:"今日持股"
  432. @today_stock_img:"今日持股截图"
  433. """
  434. qdata = request.json
  435. need_params = ["player_id","match_id","today_fund"]
  436. mse = ccf.check_params(*need_params,**qdata)
  437. if mse:
  438. raise ce.TipException(mse)
  439. try:
  440. need_params.extend(["stock_date","is_markt","today_stock","today_stock_img"])
  441. vals = ccf.get_need_params(*need_params,**qdata)
  442. vals["today_fund"] = round(float(vals["today_fund"]),4)
  443. rst = ctl.add_model(self,**vals)
  444. return cv.to_suc(rst)
  445. except Exception as e:
  446. cv.tracefail()
  447. return cv.to_fail(e)
  448. def put(self,request):
  449. """#修改数据(平台管理后台)
  450. @id:"1"
  451. @match_id:"赛事id"
  452. @name:"分组名称"
  453. """
  454. qdata = request.json
  455. need_params = ["id","player_id","match_id","today_fund"]
  456. mse = ccf.check_params(*need_params,**qdata)
  457. if mse:
  458. raise ce.TipException(mse)
  459. try:
  460. need_params.extend(["stock_date","is_markt","today_stock","today_stock_img","yesterday_fund","init_fund"])
  461. vals = ccf.get_need_params(*need_params,**qdata)
  462. vals["today_fund"] = round(float(vals["today_fund"]),4)
  463. vals["yesterday_fund"] = round(float(vals["yesterday_fund"]),4)
  464. vals["init_fund"] = round(float(vals["init_fund"]),4)
  465. rst = ctl.update_model(self,**vals)
  466. return cv.to_suc(rst)
  467. except Exception as e:
  468. cv.tracefail()
  469. return cv.to_fail(e)
  470. def delete(self,request):
  471. """#删除数据(平台管理后台)
  472. @id:"1",多个逗号分隔
  473. """
  474. qdata = request.json
  475. need_params = ["id"]
  476. mse = ccf.check_params(*need_params,**qdata)
  477. if mse:
  478. raise ce.TipException(mse)
  479. try:
  480. vals = ccf.get_need_params(*need_params,**qdata)
  481. rst = ctl.delete_model(self,**vals)
  482. return cv.to_suc(rst)
  483. except Exception as e:
  484. cv.tracefail()
  485. return cv.to_fail(e)
  486. class MatchSearchView(cv.AdminView):
  487. def get(self, request):
  488. """#比赛搜索列表(管理后台)
  489. @name:赛事名称
  490. """
  491. try:
  492. qdata = request.json
  493. rst = ctl.get_search_list(self,**qdata)
  494. return cv.to_suc(rst)
  495. except Exception as e:
  496. cv.tracefail()
  497. return cv.to_fail(e)
  498. class MatchGroupSearchView(cv.AdminView):
  499. def get(self, request):
  500. """#分组搜索列表(管理后台)
  501. @match_id:赛事id
  502. @name:分组名称
  503. """
  504. try:
  505. qdata = request.json
  506. rst = ctl.get_search_list(self,**qdata)
  507. return cv.to_suc(rst)
  508. except Exception as e:
  509. cv.tracefail()
  510. return cv.to_fail(e)
  511. class PlayerSearchView(cv.AdminView):
  512. def get(self, request):
  513. """#选手搜索列表(管理后台)
  514. @match_id:赛事id
  515. @username:选手名称
  516. """
  517. try:
  518. qdata = request.json
  519. rst = ctl.get_search_list(self,**qdata)
  520. return cv.to_suc(rst)
  521. except Exception as e:
  522. cv.tracefail()
  523. return cv.to_fail(e)
  524. class StockSearchView(cv.AdminView):
  525. def get(self, request):
  526. """#股票搜索列表(管理后台)
  527. @name:选手名称
  528. """
  529. try:
  530. qdata = request.json
  531. rst = ctl.get_search_list(self,**qdata)
  532. return cv.to_suc(rst)
  533. except Exception as e:
  534. cv.tracefail()
  535. return cv.to_fail(e)
  536. class UserInfoSearchView(cv.AdminView):
  537. def get(self, request):
  538. """#用户搜索列表(管理后台)
  539. @name:选手名称
  540. """
  541. try:
  542. qdata = request.json
  543. rst = ctl.get_search_list(self,**qdata)
  544. return cv.to_suc(rst)
  545. except Exception as e:
  546. cv.tracefail()
  547. return cv.to_fail(e)
  548. class PlayerRecordDownloadView(cv.AdminView):
  549. def get(self, request):
  550. """#数据详情(平台管理后台)
  551. @id:1
  552. """
  553. try:
  554. xlsdata = ctl.download_records(request)
  555. filename = u"%s参数数据.xls" % datetime.datetime.now().strftime("%Y-%m-%d")
  556. return cv.stream_file(xlsdata,"application/vnd.ms-excel",filename)
  557. except Exception as e:
  558. cv.tracefail()
  559. return cv.to_fail(e)
  560. class PlayerFastSaveView(cv.AdminView):
  561. def gen_code(self):
  562. """
  563. """
  564. code = ""
  565. while True:
  566. code = "".join([str(random.choice([0,1,2,3,5,6,7,8,9])) for x in range(0,6)])
  567. if cm.UserInfo.objects.filter(usercode=code).exists():
  568. time.sleep(0.1)
  569. continue
  570. break
  571. return code
  572. def post(self,request):
  573. """#快速创建用户与选手(平台管理后台)
  574. @username:"用户名"
  575. @usercode:"用户代码"
  576. @fund:"资金"
  577. @match_id:"比赛id"
  578. @match_group:"比赛分组"
  579. @match_status:"比赛状态"
  580. """
  581. qdata = request.json
  582. need_params = ["username","match_id","match_group"]
  583. mse = ccf.check_params(*need_params,**qdata)
  584. if mse:
  585. raise ce.TipException(mse)
  586. try:
  587. need_params.extend(["usercode","match_status","fund"])
  588. vals = ccf.get_need_params(*need_params,**qdata)
  589. if not vals.get("usercode"):
  590. vals["usercode"] = self.gen_code()
  591. if vals.get("fund"):
  592. vals["fund"] = round(float(vals["fund"]),4)
  593. rst = ctl.fast_save_player(**vals)
  594. return cv.to_suc(rst)
  595. except Exception as e:
  596. cv.tracefail()
  597. return cv.to_fail(e)
  598. class PlayerAutoRecordView(cv.AdminView):
  599. def post(self,request):
  600. """#自动补全数据(平台管理后台)
  601. """
  602. qdata = request.json
  603. stock_date = qdata.get("stock_date")
  604. from tools.autocomplete_record import auto_gen_record
  605. auto_gen_record(stock_date)
  606. return cv.to_suc()
  607. class ArticleView(cv.AdminView):
  608. def get(self, request):
  609. """#赛事详情(平台管理后台)
  610. @id:1
  611. """
  612. qdata = request.json
  613. need_params = ["id"]
  614. mse = ccf.check_params(*need_params,**qdata)
  615. if mse:
  616. raise ce.TipException(mse)
  617. try:
  618. vals = ccf.get_need_params(*need_params,**qdata)
  619. rst = ctl.get_detail_info(self,**vals)
  620. return cv.to_suc(rst)
  621. except Exception as e:
  622. cv.tracefail()
  623. return cv.to_fail(e)
  624. def post(self,request):
  625. """#新增赛事(平台管理后台)
  626. @name:"赛事名称"
  627. @content:"详情"
  628. """
  629. qdata = request.json
  630. need_params = ["name","content","status"]
  631. mse = ccf.check_params(*need_params,**qdata)
  632. if mse:
  633. raise ce.TipException(mse)
  634. try:
  635. need_params.extend(["type","img"])
  636. vals = ccf.get_need_params(*need_params,**qdata)
  637. rst = ctl.add_model(self,**vals)
  638. return cv.to_suc(rst)
  639. except Exception as e:
  640. cv.tracefail()
  641. return cv.to_fail(e)
  642. def put(self,request):
  643. """#修改赛事(平台管理后台)
  644. @id:"1"
  645. @name:"名称"
  646. @content:"详情"
  647. """
  648. qdata = request.json
  649. need_params = ["id","name","content","status"]
  650. mse = ccf.check_params(*need_params,**qdata)
  651. if mse:
  652. raise ce.TipException(mse)
  653. try:
  654. need_params.extend(["type","img"])
  655. vals = ccf.get_need_params(*need_params,**qdata)
  656. rst = ctl.update_model(self,**vals)
  657. return cv.to_suc(rst)
  658. except Exception as e:
  659. cv.tracefail()
  660. return cv.to_fail(e)
  661. def delete(self,request):
  662. """#删除赛事(平台管理后台)
  663. @id:"1",多个逗号分隔
  664. """
  665. qdata = request.json
  666. need_params = ["id"]
  667. mse = ccf.check_params(*need_params,**qdata)
  668. if mse:
  669. raise ce.TipException(mse)
  670. try:
  671. vals = ccf.get_need_params(*need_params,**qdata)
  672. rst = ctl.delete_model(self,**vals)
  673. return cv.to_suc(rst)
  674. except Exception as e:
  675. cv.tracefail()
  676. return cv.to_fail(e)
  677. class ArticleListView(cv.AdminView):
  678. def get(self, request):
  679. """#文章列表(平台管理后台)
  680. @name:""
  681. @page:1
  682. @page_size:20
  683. """
  684. qdata = request.json
  685. try:
  686. total,rst = ctl.get_list_info(self,**qdata)
  687. return cv.to_suc({"total":total,"list":rst})
  688. except Exception as e:
  689. cv.tracefail()
  690. return cv.to_fail(e)
  691. class FlushRankView(cv.AdminView):
  692. def get(self, request):
  693. """#更新排名(平台管理后台)
  694. @name:""
  695. @page:1
  696. @page_size:20
  697. """
  698. qdata = request.json
  699. need_params = ["stock_date","match_id","groupId"]
  700. mse = ccf.check_params(*need_params,**qdata)
  701. if mse:
  702. raise ce.TipException(mse)
  703. try:
  704. stock_date = qdata.get("stock_date")
  705. match_id = qdata.get("match_id")
  706. groupId = qdata.get("groupId")
  707. ctl.update_group_rank(stock_date,match_id,groupId)
  708. return cv.to_suc()
  709. except Exception as e:
  710. cv.tracefail()
  711. return cv.to_fail(e)
  712. class StockView(cv.AdminView):
  713. def get(self, request):
  714. """#赛事详情(平台管理后台)
  715. @id:1
  716. """
  717. qdata = request.json
  718. need_params = ["id"]
  719. mse = ccf.check_params(*need_params,**qdata)
  720. if mse:
  721. raise ce.TipException(mse)
  722. try:
  723. vals = ccf.get_need_params(*need_params,**qdata)
  724. rst = ctl.get_detail_info(self,**vals)
  725. return cv.to_suc(rst)
  726. except Exception as e:
  727. cv.tracefail()
  728. return cv.to_fail(e)
  729. def post(self,request):
  730. """#新增股票(平台管理后台)
  731. @name:"赛事名称"
  732. @content:"详情"
  733. """
  734. qdata = request.json
  735. need_params = ["name","code"]
  736. mse = ccf.check_params(*need_params,**qdata)
  737. if mse:
  738. raise ce.TipException(mse)
  739. try:
  740. need_params.extend(["desc","img"])
  741. vals = ccf.get_need_params(*need_params,**qdata)
  742. rst = ctl.add_model(self,**vals)
  743. return cv.to_suc(rst)
  744. except Exception as e:
  745. cv.tracefail()
  746. return cv.to_fail(e)
  747. def put(self,request):
  748. """#修改股票(平台管理后台)
  749. @id:"1"
  750. @name:"名称"
  751. @content:"详情"
  752. """
  753. qdata = request.json
  754. need_params = ["id","name","code"]
  755. mse = ccf.check_params(*need_params,**qdata)
  756. if mse:
  757. raise ce.TipException(mse)
  758. try:
  759. need_params.extend(["desc","img"])
  760. vals = ccf.get_need_params(*need_params,**qdata)
  761. rst = ctl.update_model(self,**vals)
  762. return cv.to_suc(rst)
  763. except Exception as e:
  764. cv.tracefail()
  765. return cv.to_fail(e)
  766. def delete(self,request):
  767. """#删除股票(平台管理后台)
  768. @id:"1",多个逗号分隔
  769. """
  770. qdata = request.json
  771. need_params = ["id"]
  772. mse = ccf.check_params(*need_params,**qdata)
  773. if mse:
  774. raise ce.TipException(mse)
  775. try:
  776. vals = ccf.get_need_params(*need_params,**qdata)
  777. rst = ctl.delete_model(self,**vals)
  778. return cv.to_suc(rst)
  779. except Exception as e:
  780. cv.tracefail()
  781. return cv.to_fail(e)
  782. class PlayerRecordCommentView(cv.AdminView):
  783. def put(self,request):
  784. """#顽主点评(平台管理后台)
  785. @id:"1"
  786. @wanzhu_comment:"顽主点评"
  787. """
  788. qdata = request.json
  789. need_params = ["id","wanzhu_comment"]
  790. mse = ccf.check_params(*need_params,**qdata)
  791. if mse:
  792. raise ce.TipException(mse)
  793. try:
  794. vals = ccf.get_need_params(*need_params,**qdata)
  795. rst = ctl.update_comment(**vals)
  796. return cv.to_suc(rst)
  797. except Exception as e:
  798. cv.tracefail()
  799. return cv.to_fail(e)
  800. class StockListView(cv.AdminView):
  801. def get(self, request):
  802. """#股票仓库列表(平台管理后台)
  803. @name:"用户名"
  804. @page:1
  805. @page_size:20
  806. """
  807. qdata = request.json
  808. try:
  809. total,rst = ctl.get_list_info(self,**qdata)
  810. return cv.to_suc({"total":total,"list":rst})
  811. except Exception as e:
  812. cv.tracefail()
  813. return cv.to_fail(e)
  814. class ResetInitFundView(cv.AdminView):
  815. def post(self,request):
  816. """#重置初始资金(平台管理后台)
  817. @match_id:"1"
  818. """
  819. qdata = request.json
  820. need_params = ["match_id"]
  821. mse = ccf.check_params(*need_params,**qdata)
  822. if mse:
  823. raise ce.TipException(mse)
  824. try:
  825. vals = ccf.get_need_params(*need_params,**qdata)
  826. rst = ctl.reset_initfund(**vals)
  827. return cv.to_suc(rst)
  828. except Exception as e:
  829. cv.tracefail()
  830. return cv.to_fail(e)
  831. class SignupOrderListView(cv.AdminView):
  832. def get(self, request):
  833. """#订单列表(平台管理后台)
  834. @name:"用户名"
  835. @page:1
  836. @page_size:20
  837. """
  838. qdata = request.json
  839. try:
  840. total,rst = ctl.get_list_info(self,**qdata)
  841. return cv.to_suc({"total":total,"list":rst})
  842. except Exception as e:
  843. cv.tracefail()
  844. return cv.to_fail(e)
  845. class StockCommentsListView(cv.AdminView):
  846. def get(self, request):
  847. """#股票评论列表(平台管理后台)
  848. @name:"股票名称"
  849. @page:1
  850. @page_size:20
  851. """
  852. qdata = request.json
  853. try:
  854. total,rst = ctl.get_stock_comments_list(**qdata)
  855. return cv.to_suc({"total":total,"list":rst})
  856. except Exception as e:
  857. cv.tracefail()
  858. return cv.to_fail(e)
  859. class RecordCommentsListView(cv.AdminView):
  860. def get(self, request):
  861. """#作业评论列表(平台管理后台)
  862. @name:"股票名称"
  863. @page:1
  864. @page_size:20
  865. """
  866. qdata = request.json
  867. try:
  868. total,rst = ctl.get_record_comments_list(**qdata)
  869. return cv.to_suc({"total":total,"list":rst})
  870. except Exception as e:
  871. cv.tracefail()
  872. return cv.to_fail(e)
  873. class ConsultListView(cv.AdminView):
  874. def get(self, request):
  875. """#顽主咨询列表(平台管理后台)
  876. @name:"股票名称"
  877. @page:1
  878. @page_size:20
  879. """
  880. qdata = request.json
  881. try:
  882. total,rst = ctl.get_wanzhu_consult_list(**qdata)
  883. return cv.to_suc({"total":total,"list":rst})
  884. except Exception as e:
  885. cv.tracefail()
  886. return cv.to_fail(e)
  887. class WanzhuConsultView(cv.AdminView):
  888. def get(self, request):
  889. """#顽主咨询详情(平台管理后台)
  890. @id:1
  891. """
  892. qdata = request.json
  893. need_params = ["id"]
  894. mse = ccf.check_params(*need_params,**qdata)
  895. if mse:
  896. raise ce.TipException(mse)
  897. try:
  898. vals = ccf.get_need_params(*need_params,**qdata)
  899. rst = ctl.get_detail_info(self,**vals)
  900. return cv.to_suc(rst)
  901. except Exception as e:
  902. cv.tracefail()
  903. return cv.to_fail(e)
  904. def delete(self,request):
  905. """#删除咨询(平台管理后台)
  906. @id:"1",多个逗号分隔
  907. """
  908. qdata = request.json
  909. need_params = ["id"]
  910. mse = ccf.check_params(*need_params,**qdata)
  911. if mse:
  912. raise ce.TipException(mse)
  913. try:
  914. vals = ccf.get_need_params(*need_params,**qdata)
  915. rst = ctl.delete_model(self,**vals)
  916. return cv.to_suc(rst)
  917. except Exception as e:
  918. cv.tracefail()
  919. return cv.to_fail(e)
  920. class WanzhuConsultReplyView(cv.AdminView):
  921. def post(self, request):
  922. """#顽主咨询回复(平台管理后台)
  923. @id:1
  924. """
  925. qdata = request.json
  926. need_params = ["pid","reply_content"]
  927. mse = ccf.check_params(*need_params,**qdata)
  928. if mse:
  929. raise ce.TipException(mse)
  930. try:
  931. vals = ccf.get_need_params(*need_params,**qdata)
  932. rst = ctl.reply_wanzhu_consult(**vals)
  933. return cv.to_suc(rst)
  934. except Exception as e:
  935. cv.tracefail()
  936. return cv.to_fail(e)
  937. class SignupOrderView(cv.AdminView):
  938. def get(self, request):
  939. """#订单详情(平台管理后台)
  940. @id:1
  941. """
  942. qdata = request.json
  943. need_params = ["id"]
  944. mse = ccf.check_params(*need_params,**qdata)
  945. if mse:
  946. raise ce.TipException(mse)
  947. try:
  948. vals = ccf.get_need_params(*need_params,**qdata)
  949. rst = ctl.get_detail_info(self,**vals)
  950. return cv.to_suc(rst)
  951. except Exception as e:
  952. cv.tracefail()
  953. return cv.to_fail(e)
  954. def delete(self,request):
  955. """#删除订单(平台管理后台)
  956. @id:"1",多个逗号分隔
  957. """
  958. qdata = request.json
  959. need_params = ["id"]
  960. mse = ccf.check_params(*need_params,**qdata)
  961. if mse:
  962. raise ce.TipException(mse)
  963. try:
  964. vals = ccf.get_need_params(*need_params,**qdata)
  965. rst = ctl.delete_model(self,**vals)
  966. return cv.to_suc(rst)
  967. except Exception as e:
  968. cv.tracefail()
  969. return cv.to_fail(e)
  970. def put(self,request):
  971. """#修改订单(平台管理后台)
  972. @id:"1"
  973. @order_status:0/1/-1
  974. @remark:""
  975. """
  976. qdata = request.json
  977. need_params = ["id"]
  978. mse = ccf.check_params(*need_params,**qdata)
  979. if mse:
  980. raise ce.TipException(mse)
  981. try:
  982. need_params.extend(["order_status","remark"])
  983. vals = ccf.get_need_params(*need_params,**qdata)
  984. rst = ctl.update_model(self,**vals)
  985. return cv.to_suc(rst)
  986. except Exception as e:
  987. cv.tracefail()
  988. return cv.to_fail(e)
  989. class PlayerTypeView(cv.AdminView):
  990. def put(self,request):
  991. """#修改选手类型(平台管理后台)
  992. @player_id:"1"
  993. @player_type:0/1/2/3
  994. @phone:"",手机号
  995. """
  996. qdata = request.json
  997. need_params = ["player_id"]
  998. mse = ccf.check_params(*need_params,**qdata)
  999. if mse:
  1000. raise ce.TipException(mse)
  1001. try:
  1002. need_params.extend(["player_type","phone","user_id"])
  1003. vals = ccf.get_need_params(*need_params,**qdata)
  1004. rst = ctl.update_player_type(**vals)
  1005. return cv.to_suc(rst)
  1006. except Exception as e:
  1007. cv.tracefail()
  1008. return cv.to_fail(e)