123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712 |
- # coding=utf-8
- from __future__ import unicode_literals
- import requests
- import random,datetime
- import json
- import uuid
- from django.contrib import auth
- from django.core.cache import cache
- from django.conf import settings
- import common.error_info as ce
- from common import core_views as cv
- import common.common_control as ccc
- import common.common_functions as ccf
- import weixin.control_auth as ca
- import weixin.controls as ctl
- import weixin.wzhifuSDK as wzf
- class OpenidView(cv.BaseView):
- def get(self,request):
- """
- #获取openid(小程序)
- @code:1212
- """
- code = request.json.get("code")
- open_id = cache.get(code)
- if open_id:
- return cv.to_suc({"openid":open_id})
- else:
- get_token_url = 'https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code' .format(wzf.WxPayConf_pub.APPID,wzf.WxPayConf_pub.APPSECRET,code)
- res = requests.get(get_token_url).json()
- if res.has_key('openid'):
- open_id = res['openid']
- cache.set(code,open_id,24*3600)
- else:
- open_id = ''
- if open_id:
- return cv.to_suc({"openid":open_id})
- else:
- return cv.to_fail(u"获取用户信息出错!")
- class UploadFileView(cv.BaseView):
- def post(self, request):
- """
- #文件上传(小程序)
- @file:"",文件对象
- """
- import time
- upload_file = request.FILES['file']
- dest = settings.STATIC_ROOT + "/upload/"+str(int(time.time())) + upload_file.name
- with open(dest,"wb+") as f:
- for chunk in upload_file.chunks():
- f.write(chunk)
- f.close()
- url = dest.replace(settings.STATIC_ROOT,settings.HOST)
- print url
- return cv.to_suc({"url":url})
- class TopicUploadFileView(cv.BaseView):
- def post(self, request):
- """
- #文件上传(WEB端)
- @file:"",文件对象
- """
- import time
- upload_file = request.FILES['file']
- dest = settings.STATIC_ROOT + "/upload/"+str(int(time.time())) + upload_file.name
- with open(dest,"wb+") as f:
- for chunk in upload_file.chunks():
- f.write(chunk)
- f.close()
- url = dest.replace(settings.STATIC_ROOT,settings.HOST)
- return cv.to_suc({"url":url})
- class AuthView(cv.BaseView):
- def post(self, request):
- """#保存微信授权信息(小程序)
- @nickname:"新",昵称
- @avatar:"",头像
- @openid:"",openid
- """
- try:
- rst = ca.add_wxauth_info(request)
- return cv.to_suc({"uid":rst.id})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class AuthinfoView(cv.AuthView):
- def get(self,request):
- """#获取用户信息(小程序)
- """
- try:
- rst = ca.get_wxauth_info(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- def put(self, request):
- """#修改个人信息(小程序)
- """
- try:
- rst = ca.update_wxauth_info(request)
- return cv.to_suc()
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class LoginView(cv.BaseView):
- def post(self, request):
- """#小程序登录(小程序)
- @usercode:"用户代号"
- @nickanme:"微信昵称"
- @avatar:"微信头像"
- @openid:"openid"
- """
- try:
- rst = ca.login_user(request)
- return cv.to_suc(rst)
- except Exception as e:
- return cv.to_fail(e)
- class IndexView(cv.AuthView):
- def get(self, request):
- """#首页数据(小程序)
- """
- try:
- rst = ctl.get_index_data(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerRecordView(cv.AuthView):
- def get(self, request):
- """#每日数据详情(小程序)
- @id:1
- """
- qdata = request.json
- need_params = ["id"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- rcid = vals.get("id")
- #rst = ctl.get_detail_info(self,**vals)
- rst = ctl.get_record_info(rcid)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- def post(self, request):
- """#新增每日数据(小程序)
- @stock_date:"2021-07-30"
- @today_fund:100
- @today_stock:[{name:"江苏国泰",code:121221}]
- @today_stock_img:["http://test.png"]
- """
- #return cv.to_fail(u"系统升级维护请稍后再试....")
- qdata = request.json
- player = request.player
- now = datetime.datetime.now()
- #if not now.isoweekday() in [1,2,3,4,5] or not "09:30"<now.strftime("%H:%S")<"15:30":
- # raise ce.TipException(u"只有每周一至周五 9:30 - 15:30 之间才可以提交数据!")
- need_params = ["stock_date","today_fund"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["is_markt","today_stock","today_stock_img","experience"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["player_id"] = player.id
- vals["match_id"] = player.match_id
- vals["today_fund"] = round(float(vals["today_fund"]),4)
- rst = ctl.add_model(self,**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerMatchListView(cv.AuthView):
- def get(self, request):
- """#选手参赛列表(小程序)
- """
- try:
- rst = ctl.get_player_match_list(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerMatchView(cv.AuthView):
- def get(self, request):
- """#选手参赛详情(小程序)
- """
- try:
- rst = ctl.get_player_match_detail(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerMatchRecordListView(cv.AuthView):
- def get(self, request):
- """#选手参赛每日持股(小程序)
- @id:1,赛事id
- @page:1
- @page_size:20
- """
- try:
- total,rst = ctl.get_player_match_records(request)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class StockSearchView(cv.AuthView):
- def get(self, request):
- """#股票搜索列表(小程序)
- @name:名称
- """
- try:
- qdata = request.json
- rst = ctl.get_search_list(self,**qdata)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class GroupRankListView(cv.AuthView):
- def get(self, request):
- """#排名列表(小程序)
- """
- try:
- rst = ctl.get_rank_list(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class GroupRankView(cv.AuthView):
- def get(self, request):
- """#分组排名(小程序)
- """
- try:
- rst = ctl.get_group_rank_list(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerRecordSingleView(cv.BaseView):
- def post(self, request):
- """#新增每日数据(WEB端)
- @usercode:"选手code"
- @match_id:"赛事id"
- @stock_date:"持股日期"
- @today_fund:"今日净资产"
- @today_stock:"今日持股"
- @today_stock_img:"今日持股截图"
- """
- qdata = request.json
- now = datetime.datetime.now()
- #if not now.isoweekday() in [1,2,3,4,5] or not "09:30"<now.strftime("%H:%S")<"15:30":
- # raise ce.TipException(u"只有每周一至周五 9:30 - 15:30 之间才可以提交数据!")
- need_params = ["match_id","usercode","stock_date","today_fund","today_stock_img"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["is_markt","today_stock","experience"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["today_fund"] = round(float(vals["today_fund"]),4)
- rst = ctl.add_player_record_single(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerRecordSingleMatchView(cv.BaseView):
- def get(self, request):
- """#获取赛事数据(WEB端)
- @id:"赛事id"
- """
- qdata = request.json
- match_id = qdata.get("id")
- try:
- now_date,rst = ctl.get_single_match_info(match_id)
- return cv.to_suc({"stock_date":now_date,"match":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerCurRecordView(cv.AuthView):
- def get(self, request):
- """#当前数据(小程序)
- @id:1
- """
- qdata = request.json
- try:
- rst = ctl.get_cur_record(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class ArticleView(cv.AuthView):
- def get(self, request):
- """#公告详情(小程序)
- @id:1
- """
- qdata = request.json
- need_params = ["id"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- rst = ctl.get_detail_info(self,**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class FollowUserView(cv.AuthView):
- def post(self, request):
- """#关注选手(2.0小程序)
- @follow_id:1,被关注选手id
- @action:"cancel",取消关注
- """
- qdata = request.json
- need_params = ["follow_id"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["action"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["player_id"] = request.player.id
- rst = ctl.follow_player(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class FollowUserListView(cv.AuthView):
- def get(self, request):
- """#我的关注(2.0小程序)
- """
- try:
- total,rst = ctl.get_user_follows(request)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class HotStockListView(cv.AuthView):
- def get(self, request):
- """#热门股票(2.0小程序)
- @stock_date:"",持股日期
- """
- qdata = request.json
- need_params = ["stock_date"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["name"])
- vals = ccf.get_need_params(*need_params,**qdata)
- rst = ctl.get_hot_stock_rank(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class HotFollowListView(cv.AuthView):
- def get(self, request):
- """#热门关注(2.0小程序)
- @stock_date:"",持股日期
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["stock_date"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["name"])
- vals = ccf.get_need_params(*need_params,**qdata)
- total,rst = ctl.get_hot_follow(**vals)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class HotStockBuyListView(cv.AuthView):
- def get(self, request):
- """#热门持仓股票(2.0小程序)
- @stock_date:"",持股日期
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["stock_date"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["name"])
- vals = ccf.get_need_params(*need_params,**qdata)
- total,rst = ctl.get_hot_stock_buy(**vals)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class HotStockSellListView(cv.AuthView):
- def get(self, request):
- """#热门清仓股票(2.0小程序)
- @stock_date:"",持股日期
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["stock_date"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- total,rst = ctl.get_hot_stock_sell(**vals)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class HotStockSellPlayersListView(cv.AuthView):
- def get(self, request):
- """#获取股票清仓选手列表(2.0小程序)
- @id:"",股票id
- @stock_date:"",持股日期
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["stock_date","id"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- _id = vals["id"]
- total,rst = ctl.get_hot_stock_sell_players(**vals)
- data = {"total":total,"list":rst}
- stock = ctl.get_stock_info(_id)
- data.update(stock)
- return cv.to_suc(data)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class WinRateRankView(cv.AuthView):
- def get(self, request):
- """#胜率榜(2.0小程序)
- """
- try:
- total,rst = ctl.get_win_rate_rank(request)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class DefendRankView(cv.AuthView):
- def get(self, request):
- """#防守榜(2.0小程序)
- """
- try:
- total,rst = ctl.get_defend_rank(request)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class ChampionArticleListView(cv.AuthView):
- def get(self, request):
- """#冠军心得(2.0小程序)
- """
- try:
- total,rst = ctl.get_champion_articles_list(request)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class WanzhuCommentListView(cv.AuthView):
- def get(self, request):
- """#顽主点评(2.0小程序)
- @group_id:1,分组id
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["group_id","page","page_size"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["match_id"] = request.player.match_id
- total,rst = ctl.get_wanzhu_comment(**vals)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class EnumListView(cv.AuthView):
- def get(self, request):
- """#枚举值(2.0小程序)
- """
- try:
- rst = ctl.get_enum_list(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerListView(cv.AuthView):
- def get(self, request):
- """#选手列表搜索(2.0小程序)
- @name:"选手名"
- @zq:"短线",周期
- @cw:"分仓",仓位
- @df:"首板",打法
- @page:1
- @page_size:20
- """
- qdata = request.json
- need_params = ["page","page_size"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["name","zq","cw","df"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["match_id"] = request.player.match_id
- total,rst = ctl.get_player_list(**vals)
- return cv.to_suc({"total":total,"list":rst})
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class MineStyleView(cv.AuthView):
- def get(self, request):
- """#我的风格(2.0小程序)
- """
- try:
- rst = ctl.get_mine_style(request)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- def put(self, request):
- """#修改我的风格(小程序)
- @zq:"",周期
- @cw:"",仓位
- @df:"",打法
- @pz:"",品种
- @join_time:"",入市时间
- @init_fund:"",参数金额
- @account_img:"",账号截图
- """
- qdata = request.json
- need_params = ["zq","cw","df","pz","join_time","account_img"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["init_fund"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["user_id"] = request.user.id
- vals["player_id"] = request.player.id if request.player else None
- rst = ctl.update_user_style(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerFundView(cv.AuthView):
- def put(self, request):
- """#修改初始资金(小程序)
- @init_fund:"",参数金额
- """
- qdata = request.json
- need_params = ["init_fund"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["user_id"] = request.user.id
- vals["player_id"] = request.player.id if request.player else None
- rst = ctl.update_user_fund(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class StockView(cv.AuthView):
- def get(self, request):
- """#股票詳情(2.0小程序)
- @id:1
- @page:1
- @page_size:1
- """
- qdata = request.json
- need_params = ["id"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- need_params.extend(["page","page_size","stock_date"])
- vals = ccf.get_need_params(*need_params,**qdata)
- vals["user_id"] = request.user.id
- vals["player_id"] = request.player.id if request.player else None
- rst = ctl.get_detail_info(self,**vals)
- vals["stock_id"] = rst["id"]
- rst["list"] = ctl.get_stock_players(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class DefaultDateView(cv.AuthView):
- def get(self, request):
- """#默认日期(2.0小程序)
- @id:1
- """
- try:
- rst = ctl.get_today_date()
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class NoticesListView(cv.AuthView):
- def get(self, request):
- """#公告列表(2.0小程序)
- @id:1
- """
- try:
- rst = ctl.get_notices()
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
- class PlayerMatchCalendarView(cv.AuthView):
- def get(self, request):
- """#获取日历收益(2.0小程序)
- @match_id:1
- @player_id:1
- @month:2021-12
- """
- qdata = request.json
- need_params = ["player_id","match_id","month"]
- mse = ccf.check_params(*need_params,**qdata)
- if mse:
- raise ce.TipException(mse)
- try:
- vals = ccf.get_need_params(*need_params,**qdata)
- rst = ctl.get_player_match_calendar(**vals)
- return cv.to_suc(rst)
- except Exception as e:
- cv.tracefail()
- return cv.to_fail(e)
|