浏览代码

ADD:添加任务列表

cxyu 3 年之前
父节点
当前提交
2cc4843267
共有 2 个文件被更改,包括 136 次插入12 次删除
  1. 84 7
      web_module/tornado_api.py
  2. 52 5
      wechat_action/sql_tools.py

+ 84 - 7
web_module/tornado_api.py

@@ -90,7 +90,7 @@ class create_ad_plan(BaseHandler):
         request_dict = json.loads(self.request.body, encoding='utf-8')
         print(request_dict)
         user_id = request_dict['user_id']
-        #TODO:task_name设置全局唯一
+        # TODO:task_name设置全局唯一
         ad_plan_list = request_dict['plan_list']
 
         # 1.查看是否cookie可用
@@ -113,7 +113,7 @@ class create_ad_plan(BaseHandler):
             sql_session.execute(ad_plan_typesetting_inserte)
 
         # 2.2存行为历史记录
-        task_name='{user_id}_{time_sign}'.format(user_id=user_id,time_sign=time.time())
+        task_name = '{user_id}_{time_sign}'.format(user_id=user_id, time_sign=time.time())
         for _ in ad_plan_list:
             # 1.查看历史中有无对应落地页
 
@@ -267,6 +267,8 @@ class ad_human_info(BaseHandler):
 
     @staticmethod
     def refresh_wechat_cookies(tornado_web, user_id):
+        # TODO:添加互动接口,添加状态字段,打开selenium就变换
+
         # 1.返回二维码链接
         # ----1.查看cookie是否可用
         sql_session = db.DBSession()
@@ -418,27 +420,59 @@ class delete_ad_plan(BaseHandler):
 
 
 class get_ad_wechat_service_name(BaseHandler):
-    # TODO:得到服务商名
     def get(self):
-        pass
+        user_id = self.get_argument('user_id', None)
+        sql_session = db.DBSession()
+        if user_id is None:
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
+            return
+
+        result = sql_tools.get_wechat_info_service_name(sql_session=sql_session, user_id=user_id)
+        result_list = []
+        for _ in result:
+            service_name = _
+            result_list.append({'service_name': service_name})
+        print(result_list)
+        self.write({'status': {'msg': 'success', "RetCode": 200},
+                    'wechat_info': result_list})
 
 
 class get_ad_wechat_wechat_name(BaseHandler):
-    # TODO:得到公众号名
     def get(self):
-        pass
+        user_id = self.get_argument('user_id', None)
+        service_name = self.get_argument('service_name', None)
+        sql_session = db.DBSession()
+        if user_id is None or service_name is None:
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
+            return
+
+        result = sql_tools.get_wechat_info_wechat_name(sql_session=sql_session, user_id=user_id,
+                                                       service_name=service_name)
+        result_list = []
+        for _ in result:
+            service_name, wechat_name = _
+            result_list.append({'service_name': service_name, 'wechat_name': wechat_name})
+        print(result_list)
+        self.write({'status': {'msg': 'success', "RetCode": 200},
+                    'wechat_info': result_list})
 
 
 class get_plan_action_record(BaseHandler):
     def get(self):
         user_id = self.get_argument('user_id', None)
+        service_name = self.get_argument('service_name', None)
+        wechat_name = self.get_argument('wechat_name', None)
+        status = self.get_argument('status', None)
+        plan_name = self.get_argument('plan_name', None)
         sql_session = db.DBSession()
         if user_id is None:
             self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         # 落地页名字精确到毫秒,默认是全局唯一
 
-        result = sql_tools.get_plan_record(sql_session=sql_session, user_id=user_id)
+        result = sql_tools.get_plan_record(sql_session=sql_session, user_id=user_id,
+                                           service_name=service_name, wechat_name=wechat_name,
+                                           status=status, plan_name=plan_name)
         result_ = []
         for i in range(len(result)):
             print(result[i])
@@ -485,8 +519,51 @@ class get_task_list(BaseHandler):
                     'local_ad_plan_info': result_})
 
 
+class create_ad_task(BaseHandler):
+    def get(self):
+        user_id = self.get_argument('user_id', None)
+        sql_session = db.DBSession()
+        if user_id is None:
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
+            return
+        # 落地页名字精确到毫秒,默认是全局唯一
+
+        result = sql_tools.get_ad_task(sql_session=sql_session, user_id=user_id)
+        task_dict = {}
+
+        for _ in result:
+            task_name, status, task_status_num, create_time = _
+            create_time = create_time.strftime("%Y-%m-%d %H:%M:%S")
+            if task_name not in task_dict.keys():
+                task_dict[task_name] = {}
+            task_dict[task_name][status] = (task_status_num, create_time)
+
+        result_ = []
+        num = 0
+        for k, v in task_dict.items():
+            # TODO:修改为dict的sort
+            sum_num = 0
+            print(k, v)
+            new_dict = {}
+            create_time = None
+            for k_, v_ in v.items():
+                task_status_num, create_time = v_
+                sum_num = sum_num + task_status_num
+                new_dict[k_] = task_status_num
+
+            task_dict[k]['sum_num'] = sum_num
+            new_dict['sum_num'] = sum_num
+            result_.append({'task_name': k, 'task_info': new_dict, 'create_time': create_time, 'id': num})
+            num = num + 1
+        print(json.dumps(task_dict))
+
+        self.write({'statu': {'msg': 'success', "RetCode": 200},
+                    'local_ad_plan_info': result_})
+
+
 def make_app():
     return tornado.web.Application([
+        ("/create_ad_task", create_ad_task),
         ("/create_ad_plan", create_ad_plan),
         # ("/create_ad_plan_local", create_ad_plan_local),
         # ("/create_ad_layout_local", create_ad_layout_local),

+ 52 - 5
wechat_action/sql_tools.py

@@ -166,23 +166,36 @@ def delete_ad_plan_typesetting_vir(sql_session, user_id, typesetting_name):
     sql_session.commit()
 
 
-def get_plan_record(sql_session, user_id):
-    pass
+def get_plan_record(sql_session, user_id, service_name, wechat_name,
+                    status, plan_name):
+    other_info = ''
+    if service_name:
+        other_info = other_info + '\n and service_name="{}" \n'.format(service_name)
+    if wechat_name:
+        other_info = other_info + '\n and wechat_name="{}" \n'.format(wechat_name)
+    if status:
+        other_info = other_info + '\n and status="{}" \n'.format(status)
+    if plan_name:
+        other_info = other_info + '\n and typesetting_list.name="{}" \n'.format(plan_name)
+
     sql = '''
         select foo.*,wechat_info.wechat_id_info from (select typesetting_list.user_id , typesetting_list.name,
         record_list.service_name ,record_list.wechat_name,
         typesetting_list.create_time,record_list.status,
         typesetting_list.typesetting 
         from 
-        ad_plan_typesetting as typesetting_list left join
+        ad_plan_typesetting as typesetting_list 
+        left join
         action_record as record_list
         on object_name=name
         where typesetting_list.user_id ='{user_id}'
+        and typesetting_list.is_delete = 0
         and record_list.status in ('done','error')
+        {other_info}
         ) as foo left join wechat_info 
         on foo.service_name =wechat_info.service_name and foo.wechat_name = wechat_info.wechat_name ;
-
-    '''.format(user_id=user_id)
+    '''.format(user_id=user_id, other_info=other_info)
+    print(sql)
     cursor = sql_session.execute(sql)
     lines = cursor.fetchall()
     result = [line for line in lines]
@@ -202,6 +215,18 @@ def get_undo_action(sql_session, user_id):
     return result_list
 
 
+def get_ad_task(sql_session, user_id):
+    sql = '''
+    select task_name,status,count(*),min(create_time) from action_record ar
+        where user_id='{}'
+        group by task_name ,status ; 
+    '''.format(user_id)
+    cursor = sql_session.execute(sql)
+    lines = cursor.fetchall()
+    result_list = [line for line in lines]
+    return result_list
+
+
 def get_ad_status(sql_session, user_id):
     sql = '''
        select  action_type ,wechat_name ,service_name,max(update_time ),max(create_time),status from action_record  
@@ -287,6 +312,28 @@ def get_wechat_info(sql_session, user_id):
     return result_list
 
 
+def get_wechat_info_service_name(sql_session, user_id):
+    sql = '''
+        select service_name from wechat_info
+        where user_id ='{}' ;
+    '''.format(user_id)
+    cursor = sql_session.execute(sql)
+    lines = cursor.fetchall()
+    result_list = [line for line in lines]
+    return result_list
+
+
+def get_wechat_info_wechat_name(sql_session, user_id, service_name):
+    sql = '''
+        select service_name ,wechat_name from wechat_info
+        where user_id ='{}' and service_name='{}';
+    '''.format(user_id, service_name)
+    cursor = sql_session.execute(sql)
+    lines = cursor.fetchall()
+    result_list = [line for line in lines]
+    return result_list
+
+
 def get_wechat_cookies(sql_session, user_id):
     sql = '''
     select cookies from wechat_cookies where user_id='{}'