diff --git a/api/api_v1/endpoints/forms.py b/api/api_v1/endpoints/forms.py index cf0a20f..d96412e 100644 --- a/api/api_v1/endpoints/forms.py +++ b/api/api_v1/endpoints/forms.py @@ -30,9 +30,174 @@ async def interview_find( await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - # data = await db.execute(sql) - df = await db.query_dataframe(sql) - if df.empty: + data = await db.execute(sql) + school_985 = ['清华大学', '北京大学', '中国人民大学', '北京理工大学', '北京航空航天大学', '中央民族大学', '北京师范大学', + '中国农业大学', '天津大学', '南开大学', '复旦大学', '上海交通大学', '同济大学', '华东师范大学', '重庆大学', '四川大学', + '电子科技大学', '湖南大学', '国防科技大学', '中南大学', '厦门大学'] + + school_211 = ['上海外国语大学', '东华大学', '上海财经大学', '华东理工大学', '上海大学', '天津医科大学', '吉林大学', '东北师范大学', + '延边大学', '哈尔滨工业大学', '哈尔滨工程大学', '东北农业大学', '东北林业大学', '南京大学', '东南大学', '苏州大学', + '中国矿业大学', '中国药科大学', '河海大学', '南京航空航天大学', '江南大学', '南京农业大学', '南京理工大学', '浙江大学', + '中国科技大学', '安徽大学', '合肥工业大学', '福州大学', '南昌大学', '山东大学', '中国海洋大学', '石油大学', + '湖南师范大学', '广西大学', '中山大学', '暨南大学', '华南理工大学', '华南师范大学', '广州中医药大学', '武汉大学', + '华中科技大学', '中国地质大学', '武汉理工大学', '华中师范大学', '华中农业大学', '中南财经政法大学'] + # 性别 + gander = { + '男': [], + '女': [] + } + # 年龄 + age = { + '20-29': [], + '30-39': [], + '40-49': [], + '50-59': [], + '60-100': [], + } + # 学历 + education = { + '大专': [], + '本科': [], + '研究生': [], + '博士': [], + '硕士': [] + } + # 工作经验 + work_exp = { + '0-2': [], + '3-6': [], + '6-10': [], + '10-20': [], + '20-40': [] + } + # 所在地 + account = { + } + # 毕业院校 + school = { + } + # 就职公司 + work_for = { + } + # 渠道 + owner_name = { + '前程无忧': [], + '人才库': [], + '智联招聘': [], + 'Boss直聘': [], + '58同城': [] + } + # 职位 + job_name = { + } + # 学校类型 + school_type = { + '985': [], + '211': [], + '其他': [], + } + if not data: return schemas.Msg(code=-9, msg='无数据', data=None) - # return schemas.Msg(code=200, msg='ok', data=data) + # 处理数据 + for interview_data in data.values(): + i_name = interview_data.get('name', '默认名字') + + i_gander = interview_data.get('gander', '男') + if i_gander == '男': + gander['男'].append(i_name) + else: + gander['女'].append(i_name) + + i_age = interview_data.get('age', 20) + if i_age <= 29: + age['20-29'].append(i_name) + elif 30 <= i_age <= 39: + age['30-39'].append(i_name) + elif 40 <= i_age <= 49: + age['40-49'].append(i_name) + elif 50 <= i_age <= 59: + age['50-59'].append(i_name) + else: + age['60-100'].append(i_name) + + i_education = interview_data.get('education', 1) + if i_education == 1: + education['大专'].append(i_name) + elif i_education == 2: + education['本科'].append(i_name) + elif i_education == 3: + education['研究生'].append(i_name) + elif i_education == 4: + education['博士'].append(i_name) + else: + education['硕士'].append(i_name) + + i_owner_name = interview_data.get('owner_name', 2) + if i_owner_name == 1: + owner_name['前程无忧'].append(i_name) + elif i_owner_name == 2: + owner_name['人才库'].append(i_name) + elif i_owner_name == 3: + owner_name['智联招聘'].append(i_name) + elif i_owner_name == 4: + owner_name['Boss直聘'].append(i_name) + else: + owner_name['58同城'].append(i_name) + + i_school = interview_data.get('school', '') + if i_school: + if i_school in school: + school[i_school].append(i_name) + else: + school[i_school] = [i_name] + if i_school in school_985: + school_type['985'].append(i_name) + school_type['211'].append(i_name) + elif i_school in school_211: + school_type['211'].append(i_name) + else: + school_type['其他'].append(i_name) + + i_work_exp = interview_data.get('work_exp', 1) + if i_work_exp <= 2: + work_exp['0-2'].append(i_name) + elif 3 <= i_work_exp < 6: + work_exp['3-6'].append(i_name) + elif 6 <= i_work_exp < 10: + work_exp['6-10'].append(i_name) + elif 10 <= i_work_exp < 20: + work_exp['10-20'].append(i_name) + else: + work_exp['20-40'].append(i_name) + + i_job_name = interview_data.get('job_name', '') + if i_job_name: + if i_job_name in account: + job_name[i_job_name].append(i_name) + else: + job_name[i_job_name] = [i_name] + + i_account = interview_data.get('account', '') + if i_account: + if i_account in account: + account[i_account].append(i_name) + else: + account[i_account] = [i_name] + + i_work_list = interview_data.get('work_list', '') + res_msg = { + 'gander': gander, + 'age': age, + 'education': education, + 'work_exp': work_exp, + 'account': account, + 'school': school, + 'work_for': work_for, + 'owner_name': owner_name, + 'job_name': job_name, + 'school_type': school_type + } + + return schemas.Msg(code=200, msg='ok', data=res_msg) + diff --git a/init_db.py b/init_db.py index 17d5754..5cecf2c 100644 --- a/init_db.py +++ b/init_db.py @@ -2,7 +2,7 @@ import crud import schemas from core.config import settings -# 创建一个超级用户、、 +# 创建一个超级用户,, from db import connect_to_mongo, get_database import asyncio diff --git a/models/interview_zsgc.py b/models/interview_zsgc.py index 384a0f7..f61add1 100644 --- a/models/interview_zsgc.py +++ b/models/interview_zsgc.py @@ -390,8 +390,8 @@ class InterviewDo: whereStr = '' findStr = '' # 查询字段 - self.find_column = ["uid", "age", "gender", "name", "education", "owner_name", "school", "specialty", - "work_exp", "job_name", "account"] + self.find_column = ["uid", "age", "gender", "name", "education", "owner_name", "school", "work_exp", "job_name", + "account", "work_list"] for fstr in self.find_column: findStr += fstr + ', ' is_date = 0 diff --git a/update_api_list.py b/update_api_list.py index 40832b5..cc70f36 100644 --- a/update_api_list.py +++ b/update_api_list.py @@ -385,7 +385,7 @@ import crud import schemas from core.config import settings -# 创建一个超级用户、、 +# 创建一个超级用户,, from db import connect_to_mongo, get_database import asyncio diff --git a/utils/func.py b/utils/func.py index e17ddc2..24b172b 100644 --- a/utils/func.py +++ b/utils/func.py @@ -225,14 +225,14 @@ def send_str_mail(str_msg, my_user): :return: bool """ msg = MIMEText(str_msg, 'plain', 'utf-8') - msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 - msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 + msg['From'] = formataddr(["乐谷游戏人事", Email.my_sender]) # 括号里的对应发件人邮箱昵称,发件人邮箱账号 + msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称,收件人邮箱账号 msg['Subject'] = Email.subject # 邮件的主题,也可以说是标题 server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25 - server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 - # server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 - server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 + server.login(Email.my_sender, Email.my_pass) # 括号中对应的是发件人邮箱账号,邮箱密码 + # server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号,收件人邮箱账号,发送邮件 + server.sendmail(Email.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号,收件人邮箱账号,发送邮件 server.quit() # 关闭连接 diff --git a/接口文档/候选人质量模板接口文档.txt b/接口文档/候选人质量模板接口文档.txt new file mode 100644 index 0000000..b84225d --- /dev/null +++ b/接口文档/候选人质量模板接口文档.txt @@ -0,0 +1,96 @@ +·: /api/v1/forms/man_mass_form + +: +{ + "data_in": "string", + "interview_query": {"hr_name":""}, + "find_column": [ + "string" + ] +} + +ֵ: +{ + "code": 200, + "msg": "ok", + "data": { + "gander": { # Ա + "": [ + "³", + "" + ], + "Ů": [] + }, + "age": { # + "20-29": [ + "³", + "" + ], + "30-39": [], + "40-49": [], + "50-59": [], + "60-100": [] + }, + "education": { # ѧ + "ר": [], + "": [ + "³", + "" + ], + "о": [], + "ʿ": [], + "˶ʿ": [] + }, + "work_exp": { # + "0-2": [ + "³" + ], + "3-6": [], + "6-10": [ + "" + ], + "10-20": [], + "20-40": [] + }, + "account": { # ˲ŵֲ + "Ƹ": [ + "³" + ] + }, + "school": { # ҵԺУ + "ѧ": [ + "³" + ], + "人֯ѧ": [ + "" + ] + }, + "work_for": {}, # ְ˾ + "owner_name": { # + "ǰ": [], + "˲ſ": [ + "³", + "" + ], + "Ƹ": [], + "BossֱƸ": [], + "58ͬ": [] + }, + "job_name": { # ְλ + "androidʦ": [ + "³" + ], + "Androidʦ": [ + "" + ] + }, + "school_type": { ѧУ + "211": [], + "985": [], + "": [ + "³", + "" + ] + } + } +} \ No newline at end of file