176 lines
7.1 KiB
MySQL
176 lines
7.1 KiB
MySQL
|
|
-- =============================================
|
|||
|
|
-- 钉钉智能薪酬平台初始化数据
|
|||
|
|
--
|
|||
|
|
-- 认证方式:app-id + signature 头部
|
|||
|
|
-- 签名算法:MD5(request_body_string + app_secret).toUpperCase()
|
|||
|
|
--
|
|||
|
|
-- 执行后需在 auth_config 中配置 app_id 和 app_secret:
|
|||
|
|
-- UPDATE api_datasource_platform SET auth_config = jsonb_set(
|
|||
|
|
-- jsonb_set(auth_config, '{app_id}', '"你的app-id"'),
|
|||
|
|
-- '{app_secret}', '"你的app-secret"'
|
|||
|
|
-- ) WHERE platform_code = 'dingtalk_salary';
|
|||
|
|
-- =============================================
|
|||
|
|
|
|||
|
|
-- 1. 创建钉钉智能薪酬平台
|
|||
|
|
INSERT INTO api_datasource_platform (
|
|||
|
|
tenant_id, creator, created_at, updater, updated_at,
|
|||
|
|
platform_code, platform_name, description, status,
|
|||
|
|
api_base_url, auth_type,
|
|||
|
|
auth_config,
|
|||
|
|
rate_limit_per_minute, rate_limit_per_hour,
|
|||
|
|
concurrency_limit, request_timeout_ms, max_retries, retry_delay_ms
|
|||
|
|
) VALUES (
|
|||
|
|
1, 'admin', NOW(), 'admin', NOW(),
|
|||
|
|
'dingtalk_salary', '钉钉智能薪酬', '钉钉智能薪酬数据同步(app-id + signature 头部认证)', 'ACTIVE',
|
|||
|
|
'https://salary.eapps.dingtalkcloud.com', 'APP_SIGNATURE',
|
|||
|
|
'{
|
|||
|
|
"app_id": "",
|
|||
|
|
"app_secret": "",
|
|||
|
|
"sign_algorithm": "md5_upper_body",
|
|||
|
|
"app_id_header": "app-id",
|
|||
|
|
"sign_header": "signature"
|
|||
|
|
}'::jsonb,
|
|||
|
|
60, 3600, 3, 30000, 3, 1000
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 2. 部门列表(无分页,单次请求返回全部部门)
|
|||
|
|
-- 无请求入参,直接 POST 即可
|
|||
|
|
-- 响应:{"code":"200","success":true,"data":[{"name":"研发部","value":"93639012","ext":"-1"},...]}
|
|||
|
|
INSERT INTO api_interface (
|
|||
|
|
tenant_id, creator, created_at, updater, updated_at,
|
|||
|
|
platform_id, name, code, url, method, status, auth_type,
|
|||
|
|
request_config, response_config, table_definition
|
|||
|
|
) VALUES (
|
|||
|
|
1, 'admin', NOW(), 'admin', NOW(),
|
|||
|
|
(SELECT id FROM api_datasource_platform WHERE platform_code = 'dingtalk_salary'),
|
|||
|
|
'公司部门列表', 'salary_dept_list',
|
|||
|
|
'/oapi/salary/dept/list', 'POST', 'active', 'inherit',
|
|||
|
|
'{}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"success_field": "code",
|
|||
|
|
"success_value": 200,
|
|||
|
|
"message_field": "msg",
|
|||
|
|
"list_path": "data"
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"table_name": "dingtalk_salary_dept",
|
|||
|
|
"columns": [
|
|||
|
|
{"name": "name", "type": "VARCHAR(300)", "comment": "部门名称"},
|
|||
|
|
{"name": "value", "type": "VARCHAR(100)", "comment": "部门ID"},
|
|||
|
|
{"name": "ext", "type": "VARCHAR(100)", "comment": "父部门ID,-1为根部门"}
|
|||
|
|
],
|
|||
|
|
"conflict_keys": ["value"]
|
|||
|
|
}'::jsonb
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 3. 按部门导出当月薪资报表(prefetch→salary_dept_list)
|
|||
|
|
-- 先通过 dept/list 获取全量部门列表,再对每个部门调用此接口
|
|||
|
|
-- deptId 通过 prefetch 注入,statisticsMonth 通过 row_inject 注入到每行
|
|||
|
|
-- 使用前请将 statisticsMonth 更新为目标月份,如 "2026-06"
|
|||
|
|
INSERT INTO api_interface (
|
|||
|
|
tenant_id, creator, created_at, updater, updated_at,
|
|||
|
|
platform_id, name, code, url, method, status, auth_type,
|
|||
|
|
request_config, response_config, table_definition
|
|||
|
|
) VALUES (
|
|||
|
|
1, 'admin', NOW(), 'admin', NOW(),
|
|||
|
|
(SELECT id FROM api_datasource_platform WHERE platform_code = 'dingtalk_salary'),
|
|||
|
|
'按部门薪资报表', 'salary_statistics',
|
|||
|
|
'/oapi/salary/statistics/dept', 'POST', 'active', 'inherit',
|
|||
|
|
'{
|
|||
|
|
"statisticsMonth": "2026-06",
|
|||
|
|
"row_inject": ["statisticsMonth"],
|
|||
|
|
"prefetch": {
|
|||
|
|
"url": "/oapi/salary/dept/list",
|
|||
|
|
"method": "POST",
|
|||
|
|
"response_path": "data",
|
|||
|
|
"target_param": "deptId",
|
|||
|
|
"value_field": "value"
|
|||
|
|
}
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"success_field": "code",
|
|||
|
|
"success_value": 200,
|
|||
|
|
"message_field": "msg",
|
|||
|
|
"list_path": "data"
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"table_name": "dingtalk_salary_statistics",
|
|||
|
|
"columns": [
|
|||
|
|
{"name": "deptId", "type": "BIGINT", "comment": "部门ID"},
|
|||
|
|
{"name": "statisticsMonth", "type": "VARCHAR(7)", "comment": "薪资月(yyyy-MM)"},
|
|||
|
|
{"name": "name", "type": "VARCHAR(200)", "comment": "报表项名称"},
|
|||
|
|
{"name": "value", "type": "VARCHAR(100)", "comment": "报表项数据"}
|
|||
|
|
],
|
|||
|
|
"conflict_keys": ["deptId", "statisticsMonth", "name"]
|
|||
|
|
}'::jsonb
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 4. 人力成本报表(无分页,单次请求返回指定月份的人力成本汇总)
|
|||
|
|
-- calBizId 为空时默认为当前月份,格式为 yyyyMM + "M",如 "202606M"
|
|||
|
|
-- 使用前可将 calBizId 更新为目标月份
|
|||
|
|
-- 响应:data.sumStatisticsData 包含各成本项(itemId/itemName/itemDesc/sValue/value)
|
|||
|
|
INSERT INTO api_interface (
|
|||
|
|
tenant_id, creator, created_at, updater, updated_at,
|
|||
|
|
platform_id, name, code, url, method, status, auth_type,
|
|||
|
|
request_config, response_config, table_definition
|
|||
|
|
) VALUES (
|
|||
|
|
1, 'admin', NOW(), 'admin', NOW(),
|
|||
|
|
(SELECT id FROM api_datasource_platform WHERE platform_code = 'dingtalk_salary'),
|
|||
|
|
'人力成本报表', 'salary_statistic_report',
|
|||
|
|
'/oapi/salary/statistic/report/data', 'POST', 'active', 'inherit',
|
|||
|
|
'{
|
|||
|
|
"calBizId": "202606M"
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"success_field": "code",
|
|||
|
|
"success_value": 200,
|
|||
|
|
"message_field": "msg",
|
|||
|
|
"list_path": "data",
|
|||
|
|
"single_record": true
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"table_name": "dingtalk_salary_statistic_report",
|
|||
|
|
"columns": [
|
|||
|
|
{"name": "calBizId", "type": "VARCHAR(20)", "comment": "薪资月份"},
|
|||
|
|
{"name": "sumStatisticsData", "type": "JSONB", "comment": "人力成本报表数据"}
|
|||
|
|
],
|
|||
|
|
"conflict_keys": ["calBizId"]
|
|||
|
|
}'::jsonb
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- 5. 按薪资组获取人力成本报表(无分页,单次请求返回指定薪资组的人力成本汇总)
|
|||
|
|
-- salaryGroupName 为必填,使用前需更新为实际的薪资组名称
|
|||
|
|
-- calBizId 为空时默认为当前月份,格式为 yyyyMM + "M"
|
|||
|
|
-- row_inject 会将请求中的 salaryGroupName 注入到每行,便于区分不同薪资组的报表
|
|||
|
|
INSERT INTO api_interface (
|
|||
|
|
tenant_id, creator, created_at, updater, updated_at,
|
|||
|
|
platform_id, name, code, url, method, status, auth_type,
|
|||
|
|
request_config, response_config, table_definition
|
|||
|
|
) VALUES (
|
|||
|
|
1, 'admin', NOW(), 'admin', NOW(),
|
|||
|
|
(SELECT id FROM api_datasource_platform WHERE platform_code = 'dingtalk_salary'),
|
|||
|
|
'按薪资组人力成本报表', 'salary_statistic_report_group',
|
|||
|
|
'/oapi/salary/statistic/report/groupData', 'POST', 'active', 'inherit',
|
|||
|
|
'{
|
|||
|
|
"calBizId": "202606M",
|
|||
|
|
"salaryGroupName": "",
|
|||
|
|
"row_inject": ["salaryGroupName"]
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"success_field": "code",
|
|||
|
|
"success_value": 200,
|
|||
|
|
"message_field": "msg",
|
|||
|
|
"list_path": "data",
|
|||
|
|
"single_record": true
|
|||
|
|
}'::jsonb,
|
|||
|
|
'{
|
|||
|
|
"table_name": "dingtalk_salary_statistic_report_group",
|
|||
|
|
"columns": [
|
|||
|
|
{"name": "calBizId", "type": "VARCHAR(20)", "comment": "薪资月份"},
|
|||
|
|
{"name": "salaryGroupName", "type": "VARCHAR(200)", "comment": "薪资组名称"},
|
|||
|
|
{"name": "sumStatisticsData", "type": "JSONB", "comment": "人力成本报表数据"}0
|
|||
|
|
],
|
|||
|
|
"conflict_keys": ["calBizId", "salaryGroupName"]
|
|||
|
|
}'::jsonb
|
|||
|
|
);
|