Gogs 3 rokov pred
rodič
commit
5eb71f84a0

+ 20 - 0
src/common/models.py

@@ -389,6 +389,26 @@ class SignupOrder(models.Model):
         app_label = "common"
 
 
+class Consult(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)
+    reply_content = models.TextField(u"回复内容", max_length=255, blank=True,null=True)
+    reply_status = models.SmallIntegerField(u"0/未回复,1/已回复",blank=True,null=True,default=0)
+    view_status = models.SmallIntegerField(u"0/未读,1/已读",blank=True,null=True,default=0)
+
+    ctime = models.DateTimeField(u"创建时间", auto_now_add=True)
+
+
+    class Meta:
+        db_table = "consult"
+        verbose_name = u"顽主咨询"
+        app_label = "common"
+
+
 class WanzhuConsult(models.Model):
     """顽主咨询
     """

+ 15 - 27
src/manage/controls.py

@@ -725,34 +725,11 @@ def get_record_comments_list(**kwargs):
 def get_wanzhu_consult_list(**kwargs):
     """
     """
-    qset = cm.WanzhuConsult.objects.filter(user_id__gt=0).order_by("-ctime")
+    qset = cm.Consult.objects.all().order_by("ctime")
     if kwargs.get("username"):
         qset = qset.filter(user_name__icontains=kwargs.get("username"))
-    rows = list(qset.values())
-    data = []
-    dct = {}
-
-    for item in rows:
-        key = "{}_{}_{}".format(item["user_id"],item["user_name"],item["user_avatar"])
-        key = item["user_id"]
-        if not dct.get(key):
-            dct[key] = list(cm.WanzhuConsult.objects.filter(Q(user_id=item["user_id"])|Q(pid=item["id"])|Q(reply_user_id=item["user_id"])).order_by("ctime").values())
-
-    for k,v in dct.items():
-        consult_list = filter(lambda x:x["user_id"]>0,v)
-        user = get_user_info(k)
-        data.append({
-            "user_id":k,     
-            "user_name":user.get("username") if user else "",
-            "user_avatar":user.get("avatar") if user else "",     
-            "consult_list":consult_list,
-            "unreply":calc_reply(v),
-            "all_consult_list":v,
-            "ctime":consult_list[-1]["ctime"],
-            "last_content":consult_list[-1]["content"],
-            "last_reply_content":v[-1]["reply_content"]
-        })
-    data = sorted(data,key=lambda x:x["ctime"],reverse=True)
+    data = list(qset.values())
+
     #分页
     page = int(kwargs.get("page",1))
     page_size = int(kwargs.get("page_size",20))
@@ -788,7 +765,7 @@ def reply_wanzhu_consult(**kwargs):
         player_id = 0,
         reply_user_id = user_id
     )
-    cm.WanzhuConsult.objects.filter(id=pid).update(reply_status=1)
+    cm.Consult.objects.filter(user_id=user_id).update(reply_status=1,reply_content=content)
     #发送消息提醒
     if cm.UserInfo.objects.filter(id=user_id).exists():
         user = cm.UserInfo.objects.filter(id=user_id).first()
@@ -898,5 +875,16 @@ def signup_old_user(**kwargs):
         player.save()
 
 
+def get_consult_detail(**kwargs):
+    """
+    """
+    rst = {}
+    user_id = kwargs.get("user_id")
+    qset = cm.WanzhuConsult.objects.filter(Q(user_id=user_id)|Q(reply_user_id=user_id))
+    rst["consult_list"] = list(qset.filter(user_id__gt=0).order_by("ctime").values())
+    rst["all_consult_list"] = list(qset.order_by("ctime").values())
+    rst["user_id"] = user_id
+    cm.Consult.objects.filter(user_id=user_id).update(view_status=1)
+    return rst
 
 

+ 1 - 0
src/manage/urls_backstage.py

@@ -51,6 +51,7 @@ urlpatterns = [
     url(r'^signup/olduser$', views.SignupOldUserView.as_view()),
     url(r'^user/fundinout$', views.FundInOutView.as_view()),
     url(r'^user/fundinout/list$', views.FundInOutListView.as_view()),
+    url(r'^user/consult/detail$', views.UserConsultDetailView.as_view()),
 
 ]
 

+ 13 - 0
src/manage/views.py

@@ -1328,3 +1328,16 @@ class FundInOutListView(cv.AdminView):
             cv.tracefail()
             return cv.to_fail(e)
 
+
+class UserConsultDetailView(cv.AdminView):
+    def get(self, request):
+        """#咨询详情(平台管理后台)
+        @user_id:1
+        """
+        qdata = request.json
+        try:
+            rst = ctl.get_consult_detail(**qdata)
+            return cv.to_suc(rst)
+        except Exception as e:
+            cv.tracefail()
+            return cv.to_fail(e)

+ 10 - 0
src/weixin/controls.py

@@ -2169,6 +2169,16 @@ def add_wanzhu_consult(request):
         content = content,
         pid = pid
     )
+    obj,flag = cm.Consult.objects.get_or_create(
+        user_id = user_id, 
+    )
+    obj.user_name = user_name
+    obj.user_avatar = user_avatar
+    obj.content = content
+    obj.view_status = 0
+    obj.reply_status = 0
+    obj.save()
+
 
 
 def add_comments(request):