浏览代码

新增6个app接口

xjc 2 年之前
父节点
当前提交
65e633709a
共有 5 个文件被更改,包括 189 次插入3 次删除
  1. 3 0
      src/common/constant.py
  2. 33 0
      src/common/models.py
  3. 59 2
      src/weixin/controls.py
  4. 6 1
      src/weixin/urls_backstage.py
  5. 88 0
      src/weixin/views.py

+ 3 - 0
src/common/constant.py

@@ -0,0 +1,3 @@
+#coding=utf-8
+
+ARTICLE_TYPE_LIST = [u"腰斩专场",u"冠军交割",u"牛人专场",u"游资列传",u"妖股列传"]

+ 33 - 0
src/common/models.py

@@ -624,3 +624,36 @@ class APPVersion(models.Model):
         verbose_name = u"app版本管理"                                                 
         app_label = "common"     
 
+
+class StockComments(models.Model):
+    """股票评论
+    """
+    stock_id = models.IntegerField(u"股票id",blank=True,null=True)
+    stock_name = models.CharField(u"用户名", max_length=255, blank=True,null=True)
+    stock_code = models.CharField(u"用户名", max_length=255, blank=True,null=True)
+    img = models.TextField(u"咨询图片", max_length=255, blank=True,null=True)
+    content = models.TextField(u"咨询内容", max_length=255, blank=True,null=True)
+
+    ctime = models.DateTimeField(u"创建时间", auto_now_add=True)
+
+    class Meta:
+        db_table = "stock_comments"
+        verbose_name = u"股票点评"
+        app_label = "common"
+
+
+class UserArticleRelation(models.Model):
+    """用户文章关联
+    """
+    user_id = models.IntegerField(u"股票id",blank=True,null=True)
+    user_name = models.CharField(u"用户名", max_length=255, blank=True,null=True)
+    user_avatar = models.TextField(u"头像", max_length=255, blank=True,null=True)
+    content = models.TextField(u"用户简介", max_length=255, blank=True,null=True)
+    article_ids = models.TextField(u"文章id", max_length=255, blank=True,null=True)
+
+    ctime = models.DateTimeField(u"创建时间", auto_now_add=True)
+
+    class Meta:
+        db_table = "user_aritcle_relation"
+        verbose_name = u"用户文章关联表"
+        app_label = "common"

+ 59 - 2
src/weixin/controls.py

@@ -14,6 +14,7 @@ import common.models as cm
 import common.error_info as ce
 import common.common_functions as ccf
 import common.common_control as ccc
+import common.constant as const
 import account.password_handle as ph
 from utils.exceltool import ExcelTool
 from utils.jgpush import send_notification_by_registration_ids
@@ -916,6 +917,10 @@ def get_detail_info(cls,**kwargs):
     if model_name == "Stock":
         rst["choiced"] = ccc.cache.get("%s_choices" % id)
         rst["user_num"] = ccc.cache.get("%s_choices" % id)
+    if model_name == "UserArticleRelation":
+        article_ids = rst["article_ids"].split(",")
+        articles = list(cm.Article.objects.filter(id__in=article_ids).values())
+        rst["articles"] = articles
     return rst
 
 #@ccc.cache_data()
@@ -956,8 +961,14 @@ def get_list_info(cls,**kwargs):
             qset = qset.filter(username__icontains=kwargs.get("username"))
         if kwargs.get("usercode"):
             qset = qset.filter(usercode=kwargs.get("usercode"))
+    if model_name == "StockComments":
+        if kwargs.get("stock_id"):
+            qset = qset.filter(stock_id=kwargs.get("stock_id"))
+    if model_name == "UserArticleRelation":
+        data = list(qset.order_by("-id").values("id","user_id","user_name","user_avatar"))
+    else:
+        data = list(qset.order_by("-id").values())
 
-    data = list(qset.order_by("-id").values())
     page = int(kwargs.get("page",0))
     page_size = int(kwargs.get("page_size",20))
     if page and page_size:
@@ -1965,7 +1976,6 @@ def send_phcode(request):
     """
     qdata = request.json
     phone = qdata.get("phone")
-    import random
     code = "%s%s%s%s" % (random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9))
     send_verify_code(phone,code)
     ccc.cache.set(phone,code,120)
@@ -2850,6 +2860,7 @@ def get_group_rank_list_v3(request):
 
 def get_article_type_list(**kwargs):
     rst = [u"腰斩专场",u"冠军交割",u"牛人专场",u"游资列传",u"妖股列传"]
+    rst = const.ARTICLE_TYPE_LIST
     return rst
 
 
@@ -3005,3 +3016,49 @@ def delete_user_info(request):
     cm.Player.objects.filter(user_id=uid).delete()
     #cm.PlayerRecord.objects.filter(user_id=uid).delete()
 
+def get_random_bake_list(**kwargs):
+    """
+    """
+    baikes = list(cm.BaikeDetail.objects.all().values())
+    randomi = []
+    while len(randomi) < 5:
+        num = random.randint(0,len(baikes))
+        if not num in randomi:
+            randomi.append(num)
+    rst = [baikes[x] for x in randomi]
+    return rst
+
+
+def articles_top5_by_type(**kwargs):
+    """
+    """
+    cats = const.ARTICLE_TYPE_LIST
+    data = []
+    for cat in cats:
+        articles = list(cm.Article.objects.filter(category=cat).order_by("-id").values()[:5])
+        data.append({"category":cat,"articles":articles})
+    return data
+
+def get_match_winlost_top5(**kwargs):
+    """
+    """
+    data = []
+    matchs = cm.Match.objects.filter(id__gte=8)
+    for match in matchs:
+        match_id = match.id
+        match_name = match.name
+        end_time = match.end_time
+        records = cm.PlayerRecord.get_db_model(match_id).objects.filter(stock_date=end_time)
+        if kwargs.get("order_by") == "total_income_ratio":
+            records = records.order_by("total_income")
+        if kwargs.get("order_by") == "-total_income_ratio":
+            records = records.order_by("-total_income")
+        records = list(records.values()[:5])
+        for item in records:
+            item["total_win"] = item["today_fund"] - item["init_fund"]
+        data.append({"match_id":match_id,"match_name":match_name,"top5records":records})
+    return data
+
+
+
+

+ 6 - 1
src/weixin/urls_backstage.py

@@ -89,6 +89,11 @@ urlpatterns = [
     url(r'^v3/app/version$', views.V3APPVersionView.as_view()),
     url(r'^v3/consult/reply$', views.WanzhuConsultReplyView.as_view()),
     url(r'^v3/user/delete$', views.UserDeleteView.as_view()),
-
+    url(r'^v3/stock/comments/list$', views.StockCommentsListView.as_view()),
+    url(r'^v3/user/famous/list$', views.UserArticleRelationListView.as_view()),
+    url(r'^v3/user/famous$', views.UserArticleRelationView.as_view()),
+    url(r'^v3/baike/random$', views.BaikeRandomListView.as_view()),
+    url(r'^v3/type/article/top5$', views.TypeArticleTop5ListView.as_view()),
+    url(r'^v3/match/winlost/top5$', views.MatchWinlostTop5ListView.as_view()),
 ]
 

+ 88 - 0
src/weixin/views.py

@@ -1358,3 +1358,91 @@ class UserDeleteView(cv.AuthView):
             return cv.to_suc(rst)
         except Exception as e: 
             return cv.to_fail(e)
+
+class StockCommentsListView(cv.AuthView):
+    def get(self, request):
+        """#股票评论列表(平台管理后台)
+        @stock_id:""
+        @page:1
+        @page_size:20
+        """
+        qdata = request.json
+        try:
+            total,rst = ctl.get_list_info(self,**qdata)
+            return cv.to_suc({"total":total,"list":rst})
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+
+class UserArticleRelationListView(cv.AuthView):
+    def get(self, request):
+        """#名人堂列表(平台管理后台)
+        @page:1
+        @page_size:20
+        """
+        qdata = request.json
+        try:
+            total,rst = ctl.get_list_info(self,**qdata)
+            return cv.to_suc({"total":total,"list":rst})
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+
+class UserArticleRelationView(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 BaikeRandomListView(cv.BaseView):
+    def get(self, request):                                                        
+        """#随机百科词条(小程序)
+        """                                                                        
+        qdata = request.json
+        try:
+            rst = ctl.get_random_bake_list(**qdata)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+
+class TypeArticleTop5ListView(cv.BaseView):
+    def get(self, request):                                                        
+        """#每个分类下最新5条数据(小程序)
+        """                                                                        
+        qdata = request.json
+        try:
+            rst = ctl.articles_top5_by_type(**qdata)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)
+
+
+class MatchWinlostTop5ListView(cv.BaseView):
+    def get(self, request):                                                        
+        """#每届比赛收益top5(小程序)
+        """                                                                        
+        qdata = request.json
+        try:
+            rst = ctl.get_match_winlost_top5(**qdata)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)