xjconline преди 2 години
родител
ревизия
9d8172b08d
променени са 1 файла, в които са добавени 136 реда и са изтрити 27 реда
  1. 136 27
      src/manage/controls.py

+ 136 - 27
src/manage/controls.py

@@ -27,11 +27,13 @@ from threading import Thread
 #from django.core.cache import cache
 from django.db import connection
 from utils.wxSubscribeMessage import send_consult_reply_message
+from utils.aliyunpush import aliyunpush
 
 import xlrd
 import xlwt
 from xlutils.copy import copy
 from xltpl.writer import BookWriter
+from weixin.wzhifuSDK_V3 import refund_order
 
 @ccc.cache_data()
 def get_user_info(uid):
@@ -280,6 +282,8 @@ def delete_model(cls,**kwargs):
         if model_name == "MatchGroup":
             cm.PlayerRecord.objects.filter(match_group__in=ids).delete()
             cm.Player.objects.filter(match_group__in=ids).delete()
+        if model_name == "BaikeCategory":
+            cm.BaikeDetail.objects.filter(category_id__in=ids).delete()
 
     return ids
 
@@ -292,7 +296,7 @@ def get_search_list(cls,**kwargs):
     qset = model.objects.all().order_by("-id")
     if model_name == "Player":
         if kwargs.get("usercode"):
-            qset = qset.filter(usercode__icontains=kwargs.get("usercode"))
+            qset = qset.filter(Q(usercode__icontains=kwargs.get("usercode"))|Q(username__icontains=kwargs.get("usercode"))|Q(phone__icontains=kwargs.get("usercode")))
             data = list(qset.values("id","user_id","username","usercode"))
             for item in data:
                 item["label"] = "%s(%s)" % (item["username"],item["usercode"])
@@ -401,7 +405,6 @@ def get_list_info(cls,**kwargs):
         if kwargs.get("match_id"):
             qset = qset.filter(match_id=kwargs.get("match_id"))
         if kwargs.get("username"):
-            #qset = qset.filter(Q(user_name__icontains=kwargs.get("username"))|Q(phone__icontains=kwargs.get("username"))|Q(transaction_id__icontains=kwargs.get("username")))
             qset = qset.filter(Q(user_name__icontains=kwargs.get("username"))|Q(phone__icontains=kwargs.get("username")))
         if kwargs.get("signup_type"):
             qset = qset.filter(signup_type=kwargs.get("signup_type"))
@@ -413,15 +416,22 @@ def get_list_info(cls,**kwargs):
     if model_name == "Article":
         if kwargs.get("type"):
             qset = qset.filter(type=kwargs.get("type"))
+        if kwargs.get("category"):
+            qset = qset.filter(category=kwargs.get("category"))
     if model_name == "Stock":
         if kwargs.get("username"):
             qset = qset.filter(name__icontains=kwargs.get("username"))
 
+    if model_name == "BaikeDetail":
+        if kwargs.get("name"):
+            qset = qset.filter(name__icontains=kwargs.get("name"))
+        if kwargs.get("status"):
+            qset = qset.filter(status=kwargs.get("status"))
+        if kwargs.get("category_id"):
+            qset = qset.filter(category_id=kwargs.get("category_id"))
+
     if model_name == "PlayerRecord":
-    	if kwargs.get("username"):
-    		data = list(qset.order_by("-stock_date").values())
-    	else:
-        	data = list(qset.order_by("-total_income").values())
+        data = list(qset.order_by("-total_income").values())
     else:
         data = list(qset.order_by("-id").values())
     page = int(kwargs.get("page",1))
@@ -438,12 +448,6 @@ def get_list_info(cls,**kwargs):
                     item["openid"] = user["openid"]
                     item["player_type"] = user["player_type"]
                     item["phone"] = user["phone"]
-                    #try:
-                    #    item["match_group"] = int(item["match_group"])
-                    #    item["match_group_name"] = cm.MatchGroup.objects.filter(id=int(item["match_group"])).first().name
-                    #except:
-                    #    pass
-                #cm.Player.objects.filter(id=item["id"]).update(username=user.username,usercode=user.usercode)
         if model_name == "PlayerRecord":
             for item in data:
                 user = cm.UserInfo.objects.filter(id=item["user_id"]).first()
@@ -507,11 +511,7 @@ def get_list_info(cls,**kwargs):
                 item["usercode"] = user.usercode
 
             if kwargs.get("username"):
-                print(111111111111111111)
-                print(data)
-                print(kwargs.get("username"))
                 data = filter(lambda x:x["username"] == str(kwargs.get("username")) or kwargs.get("username") ==x["usercode"],data)
-                print(data,22222222222222)
 
         return (total,data)
     else:
@@ -675,7 +675,7 @@ def update_group_rank(stock_date=None,match_id=None,group_id=None):
             ccc.pl.execute()
 
             winset = cm.PlayerRecord.get_db_model(match_id).objects.filter(
-                match_id=match_id,match_group=match_group)\
+                match_id=match_id,match_group=match_group,today_income__gte=0)\
                 .values("user_id").annotate(wincnt=Count("user_id")).values("user_id","match_id","match_group","wincnt")
 
             totalset = cm.PlayerRecord.get_db_model(match_id).objects.filter(
@@ -782,7 +782,6 @@ def get_wanzhu_consult_list(**kwargs):
         userinfo = get_user_info(user_id)
         if userinfo:
             item["user_code"] = userinfo.get("usercode")
-            item["phone"] = userinfo.get("phone")
 
     #分页
     page = int(kwargs.get("page",1))
@@ -812,20 +811,63 @@ def reply_wanzhu_consult(**kwargs):
     pid = kwargs.get("pid")
     content = kwargs.get("reply_content")
     user_id = kwargs.get("user_id")
-    cm.WanzhuConsult.objects.create(
-        pid = pid, 
-        reply_content = content,
-        user_id = 0,
-        player_id = 0,
-        reply_user_id = user_id
-    )
-    cm.Consult.objects.filter(user_id=user_id).update(reply_status=1,reply_content=content,ctime=datetime.datetime.now())
+    action = kwargs.get("action")
+    if action == "send":
+        user = cm.UserInfo.objects.filter(id=user_id).first()
+        user_name = user.username
+        user_avatar = user.avatar
+
+        obj,flag = cm.Consult.objects.get_or_create(
+            user_id = user_id, 
+        )
+        obj.user_name = user_name
+        obj.user_avatar = user_avatar
+        #obj.reply_content = content
+        obj.view_status = 1
+        obj.reply_status = 0
+        obj.ctime = datetime.datetime.now()
+        obj.save()
+
+        wanzhu_obj = cm.WanzhuConsult.objects.create(
+            user_id = user_id, 
+            user_name = user_name, 
+            user_avatar = user_avatar
+        )
+
+        wanzhu_obj_1 = cm.WanzhuConsult.objects.create(
+            reply_content = content,
+            user_id = 0,
+            player_id = 0,
+            reply_user_id = user_id,
+            pid = wanzhu_obj.id
+        )
+        cm.Consult.objects.filter(user_id=user_id).update(reply_status=1,reply_content=content,ctime=datetime.datetime.now())
+
+
+    else:
+        cm.WanzhuConsult.objects.create(
+            pid = pid, 
+            reply_content = content,
+            user_id = 0,
+            player_id = 0,
+            reply_user_id = user_id
+        )
+        cm.Consult.objects.filter(user_id=user_id).update(reply_status=1,reply_content=content,ctime=datetime.datetime.now())
     #发送消息提醒
     if cm.UserInfo.objects.filter(id=user_id).exists():
         user = cm.UserInfo.objects.filter(id=user_id).first()
         openid = user.openid
         username = user.username
-        send_consult_reply_message(openid,username)
+        try:
+            send_consult_reply_message(openid,username)
+        except Exception as e:
+            print(e)
+        #发送app推送消息
+        title = u"顽主杯"
+        body = u"你收到一条顽主的消息"
+        params = {"type":"message","id":str(user_id)}
+        aliyunpush.push_notice_by_userid(user_id,title,body,params,"ios")
+        aliyunpush.push_notice_by_userid(user_id,title,body,params,"android")
 
 def update_player_type(**kwargs):
     """
@@ -972,3 +1014,70 @@ def batch_update_player_latest(record):
         #win_rate = wincnt/float(total) if total else 0.0
         #win_rate = round(win_rate,3)
         #ccc.cache.hset(key,"win_rate",win_rate)
+
+def get_sub_category(pid):
+    """
+    """
+    qset = cm.BaikeCategory.objects.filter(parent_id=pid)
+    qdata = list(qset.values())
+    if qdata:
+        for subitem in qdata:
+            subitem["type"] = "ent"
+            subitem["label"] = subitem["name"]
+            subitem["children"] = get_sub_category(subitem["id"])                                                                    
+    return qdata
+
+def get_baike_category_tree(**kwargs):
+    parents = list(cm.BaikeCategory.objects.filter(parent_id__isnull=True).values())
+    for item in parents:
+        item["label"] = item["name"]
+        item["children"] = get_sub_category(item["id"])
+    return parents
+
+
+def get_baike_list_by_category(**kwargs):
+    category_id = kwargs.get("category_id")
+    qset = cm.BaikeDetail.objects.filter(category_id=category_id)
+    data = list(qset.values("id","name"))
+    return data
+
+def push_article(**kwargs):
+    _id = kwargs.get("id")
+    article = cm.Article.objects.filter(id=_id).first()
+    #发送app推送消息
+    title = u"顽主杯"
+    body = article.name
+    user_id = "ALL"
+    params = {"type":"article","id":_id}
+    aliyunpush.push_notice_by_userid(user_id,title,body,params,"ios")
+    aliyunpush.push_notice_by_userid(user_id,title,body,params,"android")
+
+
+def import_article(**kwargs):
+    """
+    """
+    obj = cm.Article.objects.create(**kwargs)
+
+
+def refund_out_trade_order(**kwargs):
+    """
+    """
+    _id = kwargs.get("id")
+    signup_order = cm.SignupOrder.objects.filter(id=_id).first()
+    if signup_order:
+        out_trade_no = signup_order.out_trade_no
+        transaction_id = signup_order.transaction_id
+        total_fee = signup_order.total_fee
+        amount = str(int(total_fee*100))
+        print(amount)
+        result = refund_order(transaction_id,out_trade_no,out_trade_no,amount)
+        if result.get("result_code") == "SUCCESS":
+            signup_order.order_status = -1
+            signup_order.save()
+            return "success"
+        else:
+            raise ce.TipException(result.get("err_code_des"))
+    else:
+        raise ce.TipException(u"该订单不存在退款失败!")
+
+