import json import requests from db.redisdb import get_redis_pool redisdb=get_redis_pool() def get_token(): """ 获取钉钉token :return: """ corpid = 'dingd10b2fc689700431' corpsecret = 'eL2gsI4Hgqx__FC8T5Bjmue_zQoyG5sm-SJqEDdS4NmKPTzFLQ2G93CX24VP2_n3' url = f"https://oapi.dingtalk.com/gettoken" # 请求头 headers = {'Content-type': 'text/html;charset=utf-8', 'Access-Control-Allow-Origin': '*'} # query查询参数 query = { 'corpid': corpid, 'corpsecret': corpsecret } r = requests.get(url=url, params=query, headers=headers) date = r.json() tokens = date['access_token'] # print(tokens) return tokens def get_uid(dept_id): """ 获取钉钉部门的成员名和uid :return: """ url = "https://oapi.dingtalk.com/topapi/user/listsimple" query = { 'access_token': get_redistoken() } data = { 'dept_id': dept_id, 'cursor': 0, 'size': 100 } r = requests.post(url=url, params=query, data=data) datas = r.json() return datas['result']['list'] def get_zi(): """ 获取钉钉的所有部门列表 :return: """ url = "https://oapi.dingtalk.com/department/list" query = { 'access_token': get_redistoken() } r = requests.get(url=url, params=query) datas = r.json() return datas['department'] def send_date(name, job, times, hr, interview_name, userid_list): """ 发送消息至钉钉 :param name: 面试者姓名 :param job: 面试岗位 :param times: 面试时间 :param hr: hr名字 :param interview_name: 面试官 :param userid_list: 要发送的人的uid,列表 :return: """ userid_list = ','.join(userid_list) url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2" query = { 'access_token': get_redistoken() } data = { 'agent_id': 792756727, "to_all_user": "false", 'userid_list': userid_list, "msg": { "msgtype": "text", "text": { "content": f"【面试通知】\n面试者:{name}\n面试岗位:{job}\n面试时间:{times}\nHR:{hr}\n面试官:{interview_name}" } } } json_data = json.dumps(data) # 发送消息到钉钉 requests.post(url=url, params=query, data=json_data) def get_redistoken(): """ 获取redis中存的token,如没有重新获取再存数据库中,再获取 :return: str """ redistoken = redisdb.get('token') if redistoken == None: # token = '16524325693811559' token = get_token() redisdb.set(name='token', value=token, ex=3600) # 1小时 3600 redistoken = redisdb.get('token') return redistoken.decode() def qujian_time(start_time, end_time): """ 把两个时间变成区间 :param start_time: '2022-07-01 10:00:00' :param end_time: '2022-07-01 10:30:00' :return: '2022-07-01 10:00:00~10:30:00' """ timess = str(end_time).split(' ')[-1] return str(start_time) + '~' + timess