Exemple #1
0
 def synch_siteid(self):
     all_siteid_url = "https://bj-v4-n1-gateway.ntalker.com/usercenter/enterprise"
     resp = requests.get(url=all_siteid_url, timeout=10)
     siteids = resp.json()
     for key in list(siteids['data']):
         siteid = key['siteid']
         queryset = StationInfo.objects.filter(company_id=siteid)
         if queryset:
             continue
         print(siteid)
         name = key['name']
         siteid_url = "https://bj-v4-n1-gateway.ntalker.com/usercenter/usercenter/enterprise/productPoint?siteid=" + siteid
         resp = requests.get(url=siteid_url, timeout=10)
         functions = resp.json()
         dict_tmp = {}
         for k in list(functions['data']):
             func_code = k['productPointid']
             func_value = k['isSwitch']
             tmp = {func_code: func_value}
             dict_tmp.update(tmp)
         result = ObjDict(company_data=self.parse_company_data(
             siteid, name),
                          func_data=dict_tmp)
         site_manager = SiteManager(result)
         site_manager.start()
         print('end')
Exemple #2
0
    def parse_company_data(self, data):
        """将公司信息、站点信息、管理人员信息解析成为需要的结构"""
        open_station_time = timestamp_to_date(data.online_time_trial * 1000)
        close_station_time = timestamp_to_date(data.deadline * 1000)
        email = data.email if data.email else "0"
        service_area = data.province if data.province else "0"
        industry = data.classify if data.classify else "其他"
        sales = data.oa_sales if data.oa_sales else "0"
        pre_sales = data.oa_pre_sales if data.oa_pre_sales else "0"
        oper_cslt = data.oa_oper_cslt if data.oa_oper_cslt else "0"
        impl_cslt = data.oa_impl_cslt if data.oa_impl_cslt else "0"
        oper_supt = data.oa_oper_supt if data.oa_oper_supt else "0"
        province = data.oa_prov if data.oa_prov else data.province
        city = data.oa_city if data.oa_city else data.city
        address = data.oa_address if data.oa_address else data.addr
        return ObjDict(
            online_status=self.get_online_status(data.mode,
                                                 close_station_time),
            # company_info
            station_type=self.get_station_type(data.mode),  # 站点类型
            company_name=data.company_name,  # 公司名称
            company_email=email,  # 公司邮箱
            industry=self.get_classify(industry),  # 行业
            GSZZ=0,  # 营业执照
            customer_type=CUSTOM_OLD,  # 客户信息
            service_area=service_area,  # 服务地区

            # station_info
            company_id=data.siteid,  # 站点id
            deploy_way=self.grid.deploy_way,  # 部署信息
            validity_days=(close_station_time - open_station_time).days,  # 有效期
            grid_name=self.grid,  # 节点名称
            cli_version=self.get_cli_version(data.siteid),  # 客户版本 b2b b2c
            # pact_products=Product.objects.all(),  # 绑定产品
            open_station_time=open_station_time,  # 开站时间
            close_station_time=close_station_time,  # 到期时间
            sales=sales,  # 销售人员
            pre_sales=pre_sales,  # 售前人员
            oper_cslt=oper_cslt,  # 运营顾问
            impl_cslt=impl_cslt,  # 实施顾问
            oper_supt=oper_supt,  # 运营支持

            # contact_info
            link_man=data.linkman,
            link_phone=data.phone,
            link_email=data.email,
            link_qq="0",

            # company_address
            province=province,
            city=city,
            address=address,

            # company_url
            company_url=data.url,

            # account_conf
            user_name=data.username,
            set_pwd=data.password,
            real_grid_name=data.t2dmqttserver)
Exemple #3
0
 def parse_func_data(data):
     """将数据库取出的功能列表信息构造成需要的数据类型"""
     return ObjDict(
         erpserver=data.erpserver,  # erp显示功能开通和关闭 关闭:0,开通:1
         iscommodity=data.iscommodity,  # 商品接口设置功能开通和关闭 关闭:0,开通:1
         isweixin=data.isweixin,  # 微信设置功能开通和关闭 关闭:0,开通:1
         autoconnect=data.autoconnect,  # 连接客服逻辑功能开通和关闭 直接连接:1,输入信息后连接:0
         iserp=data.iserp,  # 开启erp功能开通和关闭 关闭:0,开通:1
         ticket=data.ticket,  # 工单设置功能开通和关闭 关闭:0,开通:1
         smarteye=data.smarteye,  # 帮助中心设置功能开通和关闭 关闭:0,开通:1
         enable_artificialgreeting=data.
         enable_artificialgreeting,  # 默认欢迎语功能开通和关闭 关闭:0,开通:1
         changecsr=data.changecsr,  # 更换客服功能开通和关闭 关闭:0,开通:1
         xiaonengver=data.xiaonengver,  # 小能版权信息功能开通和关闭 关闭:0,开通:1
         watchqueue=data.watchqueue,  # 客户端查看排队信息功能开通和关闭 关闭:0,开通:1
         autoexpansion=data.autoexpansion,  # 是否展开侧边栏功能开通和关闭 关闭:0,开通:1
         # 更改IM连接级别功能开通和关闭
         # 进入网页就加载im服务,访客关闭聊窗,收到客服发送消息后,弹tip:0,
         # 关闭im服务,访客关闭聊窗,收不到客服发送的消息:1,
         # 打开聊窗后,再加载im服务,访客关闭聊窗,收到客服发送消息后,弹tip:2,
         # 进入网页就加载im服务,访客关闭聊窗,收到客服发送消息后,直接打开聊窗:3
         isnoim=data.isnoim,
         transferfiles=data.transferfiles,  # 访客端是否显示上传文件按钮功能开通和关闭 关闭:0,开通:1
         close_im_flash=data.close_im_flash,  # IM的flash连接功能开通和关闭 关闭:0,开通:1
         close_tchat_flash=data.
         close_tchat_flash,  # tchat的flash连接功能开通和关闭 关闭:0,开通:1
         resize_chat=data.resize_chat,  # 聊天窗口是否可变换大小功能开通和关闭 关闭:0,开通:1
         drag_chat=data.drag_chat,  # 聊天窗口是否可拖动功能开通和关闭 关闭:0,开通:1
         enable_robotgreeting=data.
         enable_robotgreeting,  # 是否启用机器人1.0欢迎语开通和关闭 关闭:0,开通:1
         notrail=data.
         notrail,  # 轨迹调用开通和关闭 进入网页就加载轨迹服务:0,关闭轨迹服务:1,打开聊窗后,再加载轨迹服务:2
         captureimage=data.captureimage,  # 访客端截图插件功能开通和关闭 关闭:0,开通:1
         sessioncarry=data.sessioncarry,  # 会话携带功能开通和关闭 关闭:0,开通:1
         viewchatrecord=data.viewchatrecord,  # 前端查看聊天记录功能开通和关闭 关闭:0,开通:1
         enable_entrance=data.enable_entrance,  # 新版邀请功能开通和关闭 关闭:0,开通:1
         androidtransf=data.androidtransf,  # WAP图片上传功能(安卓)功能开通和关闭 关闭:0,开通:1
         othertransf=data.othertransf,  # WAP图片上传功能(非安卓)功能开通和关闭 关闭:0,开通:1
         sessionmode=data.sessionmode,  # 是否开通公平模式功能开通和关闭 关闭:0,开通:1
         mode=data.mode,  # 小能使用模式 official 正式版 trial 试用版
         sessionhelp=data.sessionhelp,  # ??? 关闭:0,开通:1
         wap=data.wap,  # WAP聊窗功能开关功能开通和关闭 关闭:0,开通:1
         waphref=data.waphref,  # 打开链接方式功能开通和关闭 关闭:0,开通:1
         chatingrecord=data.chatingrecord,  # 聊天记录是否可导出功能开通和关闭 关闭:0,开通:1
         filter=data.filter,  # 敏感词开关功能开通和关闭 关闭:0,开通:1
         sessiontakeover=data.sessiontakeover,  # 会话接管功能开通和关闭 关闭:0,开通:1
         isrecep_time=data.isrecep_time,  # 接待时间功能开通和关闭 关闭:0,开通:1
         contime=data.contime,  # 会话断开时间功能 单位秒
         kfsum=data.kfsum,  # 客服坐席数功能 单位/人
         linechannel=data.linechannel,
         is_qq=data.is_qq,  # qq功能开通和关闭 关闭:0,开通:1
         is_weibo=data.is_weibo,  # 微博功能开通和关闭 关闭:0,开通:1
         reversechat=data.reversechat,  # (教育版)咨询接待-邀请会话功能开通和关闭 关闭:0,开通:1
         isyqhh=data.isyqhh,  # ((教育版)KPI-邀请会话功能开通和关闭 关闭:0,开通:1
         ishhlx=data.ishhlx  # (教育版)数据分析 - 运营报表功能开通和关闭 关闭:0,开通:1
     )
Exemple #4
0
    def start(self):
        """主流程,构造SQL语句,从远程kf库中的t2d_enterpriseinfo、t2d_enterpriseinfo_extend、t2d_user三个表中取出开站所需的各种
        必要信息,以供后续SiteManager创建本地信息所需
        数据全部取出并解析后,创建一个SiteManager对象并将取到的该site的信息传入,开始下一步,创建本地表信息的"""
        for site_id in self.site_ids:
            enterprise_info_sql = "SELECT siteid, linkman, phone, url, name AS company_name, province, " \
                                  "city, addr, email, mode, deadline, classify, online_time_trial, version_id " \
                                  "FROM t2d_enterpriseinfo WHERE siteid = '%s'" % site_id
            user_sql = "SELECT name AS username, password FROM t2d_user WHERE siteid = '%s'" \
                       "AND name NOT IN ('ntalker_maliqun', 'ntalker_steven', 'ntalker_lizhipeng', 'ralf') " \
                       "ORDER BY id ASC LIMIT 1" % site_id
            func_sql = "SELECT erpserver, iscommodity, isweixin, autoconnect, iserp, ticket, smarteye, " \
                       "enable_artificialgreeting, changecsr, xiaonengver, watchqueue, autoexpansion, isnoim, " \
                       "transferfiles, close_im_flash, close_tchat_flash, resize_chat, drag_chat, " \
                       "enable_robotgreeting, notrail, captureimage, sessioncarry, viewchatrecord, enable_entrance, " \
                       "androidtransf, othertransf, sessionmode, mode, sessionhelp, wap, waphref, chatingrecord," \
                       "filter, sessiontakeover, isrecep_time, contime, kfsum " \
                       "FROM t2d_enterpriseinfo WHERE siteid = '%s'" % site_id
            extend_func_sql = "SELECT linechannel, is_qq, is_weibo,reversechat,isyqhh,ishhlx " \
                              "FROM t2d_enterpriseinfo_extend WHERE siteid = '%s'" % site_id
            grid_sql = "SELECT t2dmqttserver FROM t_wdk_sit WHERE sitid = '%s'" % site_id
            company_data = self.conn.get(enterprise_info_sql)
            user_data = self.conn.get(user_sql)
            if user_data:
                try:
                    company_data.update(user_data)
                except:
                    continue
            grid_data = self.conn.get(grid_sql)

            if not grid_data:
                logger.error(f"{site_id}在t_wdk_sit中未找到数据")
                continue
            try:
                company_data.update(grid_data)
            except:
                continue
            func_result = ObjDict()
            func_data = self.conn.query(func_sql)
            extend_func_data = self.conn.query(extend_func_sql)
            if func_data:
                func_result.update(func_data[0])
            if extend_func_data:
                func_result.update(extend_func_data[0])
            result = ObjDict(
                company_data=self.parse_company_data(company_data),
                func_data=self.parse_func_data(func_result))
            site_manager = SiteManager(result)
            site_manager.start()
            print('end')
Exemple #5
0
 def parse_company_data(self, siteid, name):
     self.grid = Grid.objects.all().get(grid_name='cg-bj')
     return ObjDict(
         online_status=1,
         # company_info
         station_type=2,  # 站点类型
         company_name=name,  # 公司名称
         company_email=1,  # 公司邮
         industry=self.get_classify(''),  # 行业
         GSZZ='0',  # 营业执照
         customer_type=True,  # 客户信息
         service_area='0',  # 服务地区
         # station_info
         company_id=siteid,  # 站点id
         deploy_way=1,  # 部署信息
         validity_days=364,  # 有效期
         grid_name=self.grid,  # 节点名称
         cli_version=self.get_cli_version(siteid),  # 客户版本 b2b b2c
         # pact_products=Product.objects.all(),  # 绑定产品
         open_station_time=timestamp_to_date('1545706251000'),  # 开站时间
         close_station_time=timestamp_to_date('1577242251000'),  # 到期时间
         version_id=1,  # version_id : grid
         sales='0',  # 销售人员
         pre_sales='0',  # 售前人员
         oper_cslt='0',  # 运营顾问
         impl_cslt='0',  # 实施顾问
         oper_supt='0',  # 运营支持
         # contact_info 联系人信息 电话 邮箱 qq
         link_man='0',
         link_phone='0',
         link_email='0',
         link_qq='0',
         # company_address
         province='',
         city='',
         address='',
         oa_address='',
         # company_url 企业网址
         company_url='0',
         # account_conf 账户信息
         user_name='admin',
         set_pwd='111111',
         # 服务组
         real_grid_name='')
Exemple #6
0
    def parse_company_data(self, data):
        data = self.get_oa_company_data(data)
        # 开站时间
        open_station_time = timestamp_to_date(data.online_time_trial * 1000)
        # 关闭站点时间
        close_station_time = timestamp_to_date(data.deadline * 1000)
        print('======', open_station_time, close_station_time)
        # 企业邮箱
        email = data.email if data.email else "0"
        # 服客服务区域
        service_area = data.service_area if data.service_area else "0"
        # 企业所属行业
        industry = data.classify if data.classify else "其他"
        # 销售人员
        sales = data.oa_sales if data.oa_sales else "0"
        # 售前人员
        pre_sales = data.oa_pre_sales if data.oa_pre_sales else "0"
        # 运营顾问
        oper_cslt = data.oa_oper_cslt if data.oa_oper_cslt else "0"
        # 实施顾问
        impl_cslt = data.oa_impl_cslt if data.oa_impl_cslt else "0"
        # 运营支持
        oper_supt = data.oa_oper_supt if data.oa_oper_supt else "0"

        # 公司地址
        province = data.province if data.province else data.oa_province
        # 城市
        city = data.city if data.city else data.oa_city
        # 详细地址
        address = data.addr if data.addr else data.oa_address

        version_dict = dict(VERSION_ID)
        new_version_dict = dict(zip(version_dict.values(),
                                    version_dict.keys()))
        # 版本id
        version_id = new_version_dict.get(data.version_id) \
            if new_version_dict[data.version_id] else new_version_dict['grid']

        return ObjDict(
            online_status=self.get_online_status(data.mode,
                                                 close_station_time),
            # company_info
            station_type=self.get_station_type(data.mode),  # 站点类型
            company_name=data.company_name,  # 公司名称
            company_email=email,  # 公司邮箱
            industry=self.get_classify(industry),  # 行业
            GSZZ=data.gsgz,  # 营业执照
            customer_type=CUSTOM_OLD,  # 客户信息
            service_area=service_area,  # 服务地区

            # station_info
            company_id=data.siteid,  # 站点id
            deploy_way=1,  # 部署信息
            validity_days=364,  # 有效期
            grid_name=self.grid,  # 节点名称
            cli_version=self.get_cli_version(data.siteid),  # 客户版本 b2b b2c
            # pact_products=Product.objects.all(),  # 绑定产品
            open_station_time=open_station_time,  # 开站时间
            close_station_time=close_station_time,  # 到期时间
            version_id=version_id,  # version_id : grid
            sales=sales,  # 销售人员
            pre_sales=pre_sales,  # 售前人员
            oper_cslt=oper_cslt,  # 运营顾问
            impl_cslt=impl_cslt,  # 实施顾问
            oper_supt=oper_supt,  # 运营支持

            # contact_info 联系人信息 电话 邮箱 qq
            link_man=data.linkman,
            link_phone=data.phone,
            link_email=data.linkemail,
            link_qq=data.qq,

            # company_address
            province=province,
            city=city,
            address=address,
            oa_address=data.address,

            # company_url 企业网址
            company_url=data.url,

            # account_conf 账户信息
            user_name=data.username,
            set_pwd=data.password,
            # 服务组
            real_grid_name=data.t2dmqttserver)