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')
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)
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 )
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')
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='')
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)