xjc 2 år sedan
förälder
incheckning
24fa18f694

+ 2 - 0
src/common/models.py

@@ -479,6 +479,7 @@ class Comments(models.Model):
     stock_name = models.CharField(u"股票名称", max_length=255, blank=True,null=True)
     rank = models.IntegerField(u"排序",blank=True,null=True,default=1)
     istop = models.IntegerField(u"置顶",blank=True,null=True,default=0)
+    match_id = models.IntegerField(u"比赛id", blank=True,null=True)
 
     ctime = models.DateTimeField(u"创建时间", auto_now_add=True)
 
@@ -599,6 +600,7 @@ class BaikeDetail(models.Model):
     editor = models.CharField(u"editor", max_length=255, blank=True,null=True)  
     status = models.SmallIntegerField(u"0/待发布,1/已发布",default=0)
     img = models.TextField(u"咨询图片", max_length=255, blank=True,null=True)
+    istop = models.SmallIntegerField(u"1/置顶",default=0)
                                                                                    
     ctime = models.DateTimeField(u"创建时间",auto_now_add=True)                    
                                                                                    

+ 23 - 2
src/manage/controls.py

@@ -568,7 +568,7 @@ def download_records(request):
     """
     """
     kwargs = request.json
-    header = [u"排名",u"选手",u"初始资产(万)",u"昨日资产(万)",u"今日资产",u"今日盈亏",u"总盈亏",u"昨日持股",u"今日持股"]
+    header = [u"排名",u"选手",u"分组",u"初始资产(万)",u"昨日资产(万)",u"今日资产",u"今日盈亏",u"总盈亏",u"昨日持股",u"今日持股",u"图片"]
 
     match_id = kwargs.get("match_id") 
     qset = cm.PlayerRecord.get_db_model(match_id).objects.all()
@@ -595,6 +595,12 @@ def download_records(request):
             item["usercode"] = user.usercode
             item["today_income"] = "{}%".format(item["today_income"]*100)
             item["total_income"] = "{}%".format(item["total_income"]*100)
+            try:
+                match_group_name = cm.MatchGroup.objects.filter(id=item["match_group"]).first().name
+            except:
+                match_group_name = ""
+            item["match_group_name"] = match_group_name
+            item["today_stock_imgs"] = json.loads(item["today_stock_img"]) if item["today_stock_img"] else []
 
             today_stock = json.loads(item["today_stock"]) if item["today_stock"] else []
             today_stock = list(filter(lambda x:x["name"],today_stock if today_stock else []))
@@ -627,13 +633,15 @@ def download_records(request):
                     [
                         item["group_rank"],
                         item["username"],
+                        item["match_group_name"],
                         item["init_fund"],
                         item["yesterday_fund"],
                         item["today_fund"],
                         item["today_income"],
                         item["total_income"],
                         yesterday_stock,
-                        today_stock
+                        today_stock,
+                        item["today_stock_imgs"]
                     ])
         except Exception as e:
             print(e)
@@ -1171,3 +1179,16 @@ def caculate_inout(**kwargs):
             "init_fund":init_fund}
         
 
+def baike_detail_top(**kwargs):
+    """
+    """
+    _id = kwargs.get("id")
+    action = kwargs.get("action")
+
+    if action == "top":
+        cm.BaikeDetail.objects.filter(id=_id).update(istop=1)
+    else:
+        cm.BaikeDetail.objects.filter(id=_id).update(istop=0)
+
+
+

+ 1 - 0
src/manage/urls_backstage.py

@@ -67,6 +67,7 @@ urlpatterns = [
     url(r'^stock/nbcomments/list$', views.StockCommentsListView.as_view()),
     url(r'^user/famous$', views.UserArticleRelationView.as_view()),
     url(r'^user/famous/list$', views.UserArticleRelationListView.as_view()),
+    url(r'^baike/detail/top$', views.BaikeDetailTopView.as_view()),
 
 ]
 

+ 20 - 0
src/manage/views.py

@@ -1889,3 +1889,23 @@ class ArticleSearchView(cv.AdminView):
         except Exception as e:
             cv.tracefail()
             return cv.to_fail(e)
+
+
+class BaikeDetailTopView(cv.AdminView):
+    def put(self,request):
+        """#修改词条(平台管理后台)
+        @id:"1"
+        @action:"top/cancel",置顶/取消置顶
+        """
+        qdata = request.json
+        need_params = ["id","action"]
+        mse = ccf.check_params(*need_params,**qdata)
+        if mse:
+            raise ce.TipException(mse)
+        try:
+            vals = ccf.get_need_params(*need_params,**qdata)
+            rst = ctl.baike_detail_top(**vals)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)

+ 30 - 1
src/utils/exceltool.py

@@ -2,6 +2,20 @@
 import StringIO
 import xlwt
 import xlrd
+import requests
+import time
+from PIL import Image
+
+def download_remote_img(url):
+    """
+    """
+    imgname = "/tmp/" + str(int(time.time()*1000))+".bmp"
+    with open(imgname,"wb+") as f:
+        res = requests.get(url)
+        if res.status_code == 200:
+            f.write(res.content)
+    return imgname
+
 
 class ExcelTool(object):
     """
@@ -24,12 +38,27 @@ class ExcelTool(object):
         style = xlwt.easyxf('align: wrap on')
         for i in range(0,len(data)):
             for j in range(0,len(data[i])): 
-                sheet.write(i+1,j,data[i][j],style)
+                if j < len(data[i])-1:
+                    sheet.write(i+1,j,data[i][j],style)
+                else:
+                    if i < 5:
+                        self.insert_imgs(sheet,data[i][j],(i,j))
+
         output = StringIO.StringIO()
         self.book.save(output)
         self.book.save("/tmp/demo.xls")
         return output.getvalue()
 
+    def insert_imgs(self,sheet,imgs,cell):
+        """
+        """
+        return 
+        i,j = cell
+        for index,img in enumerate(imgs):
+            j = j+index
+            #imgpath = download_remote_img(img)
+            #sheet.insert_bitmap(imgpath,i,j,scale_x=1, scale_y=1)
+
     def get_data(self):
         """
         """

+ 32 - 1
src/weixin/controls.py

@@ -2425,7 +2425,8 @@ def add_comments(request):
         pid = pid,
         ip = ip,
         location = location,
-        stock_id = stock_id
+        stock_id = stock_id,
+        match_id = match_id
     )
     if record_id:
         cm.PlayerRecord.get_db_model(match_id).objects.filter(id=record_id).update(comments_count=F("comments_count")+1)
@@ -2972,6 +2973,7 @@ def get_baike_list_by_category(**kwargs):
     category_id = kwargs.get("category_id")
     sub_catids = get_sub_catids(category_id,[])
     qset = cm.BaikeDetail.objects.filter(category_id__in=sub_catids)
+    qset = qset.order_by("-istop","-ctime")
     data = list(qset.values("id","img","intro","ctime","name","category_id"))
     
     page = int(kwargs.get("page",1))
@@ -3204,3 +3206,32 @@ def get_user_black_user_list(request):
         item['avatar']   = item["black_user__avatar"]
 
     return total,data
+
+
+def get_stock_nb_comments(request):
+    """
+    """
+    kwargs = request.json
+    comment_date = kwargs.get("date")
+
+    qset = cm.StockComments.objects.all()
+
+    if comment_date: 
+        st = comment_date + " 00:00:00"
+        et = comment_date + " 23:59:59"
+        qset = qset.filter(ctime__gte=st,ctime__lte=et)
+
+    page = int(kwargs.get("page",0))
+    page_size = int(kwargs.get("page_size",20))
+
+    if page and page_size:
+        total,qset = ccc.get_page_qset(qset,page,page_size)
+    else:
+        total = qset.count()
+
+    data = list(qset.values())
+    return total,data
+
+
+
+

+ 1 - 0
src/weixin/urls_backstage.py

@@ -100,5 +100,6 @@ urlpatterns = [
     url(r'^v3/ai/detect/txt$', views.AiDetectTxtView.as_view()),
     url(r'^v3/user/black$', views.UserBlacksView.as_view()),
     url(r'^v3/user/black/list$', views.UserBlacksListView.as_view()),
+    url(r'^v3/stock/nbcomments/list$', views.StockNbCommentsListView.as_view()),
 ]
 

+ 14 - 1
src/weixin/views.py

@@ -1266,7 +1266,7 @@ class BaikeCategoryListView(cv.AuthView):
             return cv.to_fail(e)
 
 
-class BaikeListView(cv.AuthView):
+class BaikeListView(cv.BaseView):
     def get(self, request):
         """#百科词条列表(平台管理后台)
         @category_id:1,分类id
@@ -1522,3 +1522,16 @@ class UserBlacksListView(cv.AuthView):
         except Exception as e:
             cv.tracefail()
             return cv.to_fail(e)
+
+
+class StockNbCommentsListView(cv.BaseView):
+    def get(self, request):
+        """#获取牛人v3(3.0小程序)
+        @date:"2023-07-16",评论时间
+        """
+        try:
+            total,rst = ctl.get_stock_nb_comments(request)
+            return cv.to_suc({"total":total,"list":rst})
+        except Exception as e: 
+            cv.tracefail()
+            return cv.to_fail(e)