正在显示
10 个修改的文件
包含
891 行增加
和
19 行删除
@@ -60,6 +60,27 @@ | @@ -60,6 +60,27 @@ | ||
60 | ] | 60 | ] |
61 | } | 61 | } |
62 | }, | 62 | }, |
63 | + "/config/employee-permissions": { | ||
64 | + "get": { | ||
65 | + "tags": [ | ||
66 | + "config" | ||
67 | + ], | ||
68 | + "summary": "返回员工权限字典列表(1任务管理,2素币管理,3成员管理)", | ||
69 | + "description": "返回员工权限字典列表(1任务管理,2素币管理,3成员管理)", | ||
70 | + "operationId": "config#listEmployeePermission", | ||
71 | + "responses": { | ||
72 | + "200": { | ||
73 | + "description": "OK response.", | ||
74 | + "schema": { | ||
75 | + "$ref": "#/definitions/ConfigListEmployeePermissionResponseBody" | ||
76 | + } | ||
77 | + } | ||
78 | + }, | ||
79 | + "schemes": [ | ||
80 | + "http" | ||
81 | + ] | ||
82 | + } | ||
83 | + }, | ||
63 | "/config/reference-resource-types": { | 84 | "/config/reference-resource-types": { |
64 | "get": { | 85 | "get": { |
65 | "tags": [ | 86 | "tags": [ |
@@ -154,6 +175,20 @@ | @@ -154,6 +175,20 @@ | ||
154 | "operationId": "employee#listEmployee", | 175 | "operationId": "employee#listEmployee", |
155 | "parameters": [ | 176 | "parameters": [ |
156 | { | 177 | { |
178 | + "name": "companyId", | ||
179 | + "in": "query", | ||
180 | + "description": "公司ID", | ||
181 | + "required": false, | ||
182 | + "type": "integer" | ||
183 | + }, | ||
184 | + { | ||
185 | + "name": "employeeNameMatch", | ||
186 | + "in": "query", | ||
187 | + "description": "员工姓名匹配", | ||
188 | + "required": false, | ||
189 | + "type": "string" | ||
190 | + }, | ||
191 | + { | ||
157 | "name": "offset", | 192 | "name": "offset", |
158 | "in": "query", | 193 | "in": "query", |
159 | "description": "查询偏离量", | 194 | "description": "查询偏离量", |
@@ -520,6 +555,67 @@ | @@ -520,6 +555,67 @@ | ||
520 | ] | 555 | ] |
521 | } | 556 | } |
522 | }, | 557 | }, |
558 | + "/su-money/su-money-transaction-record-statistics": { | ||
559 | + "post": { | ||
560 | + "tags": [ | ||
561 | + "suMoney" | ||
562 | + ], | ||
563 | + "summary": "素币事务记录统计", | ||
564 | + "description": "素币事务记录统计", | ||
565 | + "operationId": "suMoney#suMoneyTransactionRecordStatistics", | ||
566 | + "parameters": [ | ||
567 | + { | ||
568 | + "name": "SuMoneyTransactionRecordStatisticsRequestBody", | ||
569 | + "in": "body", | ||
570 | + "required": true, | ||
571 | + "schema": { | ||
572 | + "$ref": "#/definitions/SuMoneySuMoneyTransactionRecordStatisticsRequestBody" | ||
573 | + } | ||
574 | + } | ||
575 | + ], | ||
576 | + "responses": { | ||
577 | + "200": { | ||
578 | + "description": "OK response.", | ||
579 | + "schema": { | ||
580 | + "$ref": "#/definitions/SuMoneySuMoneyTransactionRecordStatisticsResponseBody" | ||
581 | + } | ||
582 | + } | ||
583 | + }, | ||
584 | + "schemes": [ | ||
585 | + "http" | ||
586 | + ] | ||
587 | + } | ||
588 | + }, | ||
589 | + "/su-money/su-money-transaction-records/{suMoneyTransactionRecordId}": { | ||
590 | + "get": { | ||
591 | + "tags": [ | ||
592 | + "suMoney" | ||
593 | + ], | ||
594 | + "summary": "返回素币事务记录", | ||
595 | + "description": "返回素币事务记录", | ||
596 | + "operationId": "suMoney#getSuMoneyTransactionRecord", | ||
597 | + "parameters": [ | ||
598 | + { | ||
599 | + "name": "suMoneyTransactionRecordId", | ||
600 | + "in": "path", | ||
601 | + "description": "素币事务记录ID", | ||
602 | + "required": true, | ||
603 | + "type": "integer" | ||
604 | + } | ||
605 | + ], | ||
606 | + "responses": { | ||
607 | + "200": { | ||
608 | + "description": "OK response.", | ||
609 | + "schema": { | ||
610 | + "$ref": "#/definitions/SuMoneyGetSuMoneyTransactionRecordResponseBody" | ||
611 | + } | ||
612 | + } | ||
613 | + }, | ||
614 | + "schemes": [ | ||
615 | + "http" | ||
616 | + ] | ||
617 | + } | ||
618 | + }, | ||
523 | "/tasks": { | 619 | "/tasks": { |
524 | "get": { | 620 | "get": { |
525 | "tags": [ | 621 | "tags": [ |
@@ -570,8 +666,12 @@ | @@ -570,8 +666,12 @@ | ||
570 | "in": "query", | 666 | "in": "query", |
571 | "description": "客户价值", | 667 | "description": "客户价值", |
572 | "required": false, | 668 | "required": false, |
669 | + "type": "array", | ||
670 | + "items": { | ||
573 | "type": "string" | 671 | "type": "string" |
574 | }, | 672 | }, |
673 | + "collectionFormat": "multi" | ||
674 | + }, | ||
575 | { | 675 | { |
576 | "name": "taskNature", | 676 | "name": "taskNature", |
577 | "in": "query", | 677 | "in": "query", |
@@ -1114,6 +1214,18 @@ | @@ -1114,6 +1214,18 @@ | ||
1114 | } | 1214 | } |
1115 | } | 1215 | } |
1116 | }, | 1216 | }, |
1217 | + "ConfigListEmployeePermissionResponseBody": { | ||
1218 | + "title": "Mediatype identifier: ConfigListEmployeePermissionResponseBody", | ||
1219 | + "type": "object", | ||
1220 | + "properties": { | ||
1221 | + "employeePermissions": { | ||
1222 | + "type": "array", | ||
1223 | + "items": { | ||
1224 | + "$ref": "#/definitions/configResponseBody" | ||
1225 | + } | ||
1226 | + } | ||
1227 | + } | ||
1228 | + }, | ||
1117 | "ConfigListReferenceResourceTypeResponseBody": { | 1229 | "ConfigListReferenceResourceTypeResponseBody": { |
1118 | "title": "Mediatype identifier: ConfigListReferenceResourceTypeResponseBody", | 1230 | "title": "Mediatype identifier: ConfigListReferenceResourceTypeResponseBody", |
1119 | "type": "object", | 1231 | "type": "object", |
@@ -1170,6 +1282,10 @@ | @@ -1170,6 +1282,10 @@ | ||
1170 | "type": "string", | 1282 | "type": "string", |
1171 | "description": "员工账号" | 1283 | "description": "员工账号" |
1172 | }, | 1284 | }, |
1285 | + "employeeAvatarUrl": { | ||
1286 | + "type": "string", | ||
1287 | + "description": "员工头像URL" | ||
1288 | + }, | ||
1173 | "employeeName": { | 1289 | "employeeName": { |
1174 | "type": "string", | 1290 | "type": "string", |
1175 | "description": "员工姓名" | 1291 | "description": "员工姓名" |
@@ -1235,9 +1351,21 @@ | @@ -1235,9 +1351,21 @@ | ||
1235 | "type": "string", | 1351 | "type": "string", |
1236 | "description": "员工账号" | 1352 | "description": "员工账号" |
1237 | }, | 1353 | }, |
1354 | + "employeeAvatarUrl": { | ||
1355 | + "type": "string", | ||
1356 | + "description": "员工头像URL" | ||
1357 | + }, | ||
1238 | "employeeName": { | 1358 | "employeeName": { |
1239 | "type": "string", | 1359 | "type": "string", |
1240 | "description": "员工姓名" | 1360 | "description": "员工姓名" |
1361 | + }, | ||
1362 | + "permissions": { | ||
1363 | + "type": "array", | ||
1364 | + "items": { | ||
1365 | + "type": "integer", | ||
1366 | + "format": "int64" | ||
1367 | + }, | ||
1368 | + "description": "员工权限集合" | ||
1241 | } | 1369 | } |
1242 | } | 1370 | } |
1243 | }, | 1371 | }, |
@@ -1271,7 +1399,10 @@ | @@ -1271,7 +1399,10 @@ | ||
1271 | ] | 1399 | ] |
1272 | }, | 1400 | }, |
1273 | "customerValue": { | 1401 | "customerValue": { |
1274 | - "type": "string", | 1402 | + "type": "array", |
1403 | + "items": { | ||
1404 | + "type": "string" | ||
1405 | + }, | ||
1275 | "description": "客户价值" | 1406 | "description": "客户价值" |
1276 | }, | 1407 | }, |
1277 | "limit": { | 1408 | "limit": { |
@@ -1433,6 +1564,15 @@ | @@ -1433,6 +1564,15 @@ | ||
1433 | } | 1564 | } |
1434 | } | 1565 | } |
1435 | }, | 1566 | }, |
1567 | + "SuMoneyGetSuMoneyTransactionRecordResponseBody": { | ||
1568 | + "title": "Mediatype identifier: SuMoneyGetSuMoneyTransactionRecordResponseBody", | ||
1569 | + "type": "object", | ||
1570 | + "properties": { | ||
1571 | + "suMoneyTransactionRecord": { | ||
1572 | + "$ref": "#/definitions/suMoneyTransactionRecordResponseBody" | ||
1573 | + } | ||
1574 | + } | ||
1575 | + }, | ||
1436 | "SuMoneySearchSuMoneyTransactionRecordRequestBody": { | 1576 | "SuMoneySearchSuMoneyTransactionRecordRequestBody": { |
1437 | "title": "SuMoneySearchSuMoneyTransactionRecordRequestBody", | 1577 | "title": "SuMoneySearchSuMoneyTransactionRecordRequestBody", |
1438 | "type": "object", | 1578 | "type": "object", |
@@ -1495,6 +1635,49 @@ | @@ -1495,6 +1635,49 @@ | ||
1495 | } | 1635 | } |
1496 | } | 1636 | } |
1497 | }, | 1637 | }, |
1638 | + "SuMoneySuMoneyTransactionRecordStatisticsRequestBody": { | ||
1639 | + "title": "SuMoneySuMoneyTransactionRecordStatisticsRequestBody", | ||
1640 | + "type": "object", | ||
1641 | + "properties": { | ||
1642 | + "transactionEndTime": { | ||
1643 | + "type": "string", | ||
1644 | + "description": "事务时间区间-截止时间", | ||
1645 | + "format": "datetime" | ||
1646 | + }, | ||
1647 | + "transactionStartTime": { | ||
1648 | + "type": "string", | ||
1649 | + "description": "事务时间区间-开始时间", | ||
1650 | + "format": "datetime" | ||
1651 | + }, | ||
1652 | + "uid": { | ||
1653 | + "type": "integer", | ||
1654 | + "description": "统一用户UID", | ||
1655 | + "required": [ | ||
1656 | + "uid" | ||
1657 | + ] | ||
1658 | + } | ||
1659 | + } | ||
1660 | + }, | ||
1661 | + "SuMoneySuMoneyTransactionRecordStatisticsResponseBody": { | ||
1662 | + "title": "Mediatype identifier: SuMoneySuMoneyTransactionRecordStatisticsResponseBody", | ||
1663 | + "type": "object", | ||
1664 | + "properties": { | ||
1665 | + "expendSuMoney": { | ||
1666 | + "type": "number", | ||
1667 | + "description": "支出素币", | ||
1668 | + "required": [ | ||
1669 | + "expendSuMoney" | ||
1670 | + ] | ||
1671 | + }, | ||
1672 | + "incomeSuMoney": { | ||
1673 | + "type": "number", | ||
1674 | + "description": "收入素币", | ||
1675 | + "required": [ | ||
1676 | + "incomeSuMoney" | ||
1677 | + ] | ||
1678 | + } | ||
1679 | + } | ||
1680 | + }, | ||
1498 | "TaskAcceptanceTaskRequestBody": { | 1681 | "TaskAcceptanceTaskRequestBody": { |
1499 | "title": "TaskAcceptanceTaskRequestBody", | 1682 | "title": "TaskAcceptanceTaskRequestBody", |
1500 | "type": "object", | 1683 | "type": "object", |
@@ -1514,6 +1697,13 @@ | @@ -1514,6 +1697,13 @@ | ||
1514 | }, | 1697 | }, |
1515 | "description": "任务参与者UID列表" | 1698 | "description": "任务参与者UID列表" |
1516 | }, | 1699 | }, |
1700 | + "referenceResourceScore": { | ||
1701 | + "type": "array", | ||
1702 | + "items": { | ||
1703 | + "$ref": "#/definitions/referenceResourceItemRequestBody" | ||
1704 | + }, | ||
1705 | + "description": "引用资源解决分" | ||
1706 | + }, | ||
1517 | "solvePictureUrls": { | 1707 | "solvePictureUrls": { |
1518 | "type": "array", | 1708 | "type": "array", |
1519 | "items": { | 1709 | "items": { |
@@ -1640,6 +1830,13 @@ | @@ -1640,6 +1830,13 @@ | ||
1640 | "description": "竞标开始时间", | 1830 | "description": "竞标开始时间", |
1641 | "format": "datetime" | 1831 | "format": "datetime" |
1642 | }, | 1832 | }, |
1833 | + "companyId": { | ||
1834 | + "type": "integer", | ||
1835 | + "description": "公司ID", | ||
1836 | + "required": [ | ||
1837 | + "companyId" | ||
1838 | + ] | ||
1839 | + }, | ||
1643 | "customerValue": { | 1840 | "customerValue": { |
1644 | "type": "array", | 1841 | "type": "array", |
1645 | "items": { | 1842 | "items": { |
@@ -1835,7 +2032,10 @@ | @@ -1835,7 +2032,10 @@ | ||
1835 | ] | 2032 | ] |
1836 | }, | 2033 | }, |
1837 | "customerValue": { | 2034 | "customerValue": { |
1838 | - "type": "string", | 2035 | + "type": "array", |
2036 | + "items": { | ||
2037 | + "type": "string" | ||
2038 | + }, | ||
1839 | "description": "客户价值" | 2039 | "description": "客户价值" |
1840 | }, | 2040 | }, |
1841 | "limit": { | 2041 | "limit": { |
@@ -1912,13 +2112,20 @@ | @@ -1912,13 +2112,20 @@ | ||
1912 | ] | 2112 | ] |
1913 | }, | 2113 | }, |
1914 | "customerValue": { | 2114 | "customerValue": { |
1915 | - "type": "string", | 2115 | + "type": "array", |
2116 | + "items": { | ||
2117 | + "type": "string" | ||
2118 | + }, | ||
1916 | "description": "客户价值" | 2119 | "description": "客户价值" |
1917 | }, | 2120 | }, |
1918 | "isFilterCloseStatus": { | 2121 | "isFilterCloseStatus": { |
1919 | "type": "boolean", | 2122 | "type": "boolean", |
1920 | "description": "是否过滤关闭状态任务" | 2123 | "description": "是否过滤关闭状态任务" |
1921 | }, | 2124 | }, |
2125 | + "isFilterUnReleasedStatus": { | ||
2126 | + "type": "boolean", | ||
2127 | + "description": "是否过滤待发布状态任务" | ||
2128 | + }, | ||
1922 | "isRewardTake": { | 2129 | "isRewardTake": { |
1923 | "type": "boolean", | 2130 | "type": "boolean", |
1924 | "description": "是否悬赏任务" | 2131 | "description": "是否悬赏任务" |
@@ -2136,6 +2343,10 @@ | @@ -2136,6 +2343,10 @@ | ||
2136 | "type": "string", | 2343 | "type": "string", |
2137 | "description": "员工账号" | 2344 | "description": "员工账号" |
2138 | }, | 2345 | }, |
2346 | + "employeeAvatarUrl": { | ||
2347 | + "type": "string", | ||
2348 | + "description": "员工头像URL" | ||
2349 | + }, | ||
2139 | "employeeName": { | 2350 | "employeeName": { |
2140 | "type": "string", | 2351 | "type": "string", |
2141 | "description": "员工姓名", | 2352 | "description": "员工姓名", |
@@ -2161,6 +2372,10 @@ | @@ -2161,6 +2372,10 @@ | ||
2161 | "type": "string", | 2372 | "type": "string", |
2162 | "description": "员工账号" | 2373 | "description": "员工账号" |
2163 | }, | 2374 | }, |
2375 | + "employeeAvatarUrl": { | ||
2376 | + "type": "string", | ||
2377 | + "description": "员工头像URL" | ||
2378 | + }, | ||
2164 | "employeeName": { | 2379 | "employeeName": { |
2165 | "type": "string", | 2380 | "type": "string", |
2166 | "description": "员工姓名", | 2381 | "description": "员工姓名", |
@@ -2199,6 +2414,17 @@ | @@ -2199,6 +2414,17 @@ | ||
2199 | "employeeInfo": { | 2414 | "employeeInfo": { |
2200 | "$ref": "#/definitions/employeeInfoResponseBody" | 2415 | "$ref": "#/definitions/employeeInfoResponseBody" |
2201 | }, | 2416 | }, |
2417 | + "permissions": { | ||
2418 | + "type": "array", | ||
2419 | + "items": { | ||
2420 | + "type": "integer", | ||
2421 | + "format": "int64" | ||
2422 | + }, | ||
2423 | + "description": "员工权限集合", | ||
2424 | + "required": [ | ||
2425 | + "permissions" | ||
2426 | + ] | ||
2427 | + }, | ||
2202 | "status": { | 2428 | "status": { |
2203 | "type": "integer", | 2429 | "type": "integer", |
2204 | "description": "员工状态(启用或者禁用)", | 2430 | "description": "员工状态(启用或者禁用)", |
@@ -2350,6 +2576,25 @@ | @@ -2350,6 +2576,25 @@ | ||
2350 | "title": "referenceResourceItemRequestBody", | 2576 | "title": "referenceResourceItemRequestBody", |
2351 | "type": "object", | 2577 | "type": "object", |
2352 | "properties": { | 2578 | "properties": { |
2579 | + "content": { | ||
2580 | + "type": "string", | ||
2581 | + "description": "内容", | ||
2582 | + "required": [ | ||
2583 | + "content" | ||
2584 | + ] | ||
2585 | + }, | ||
2586 | + "issueScore": { | ||
2587 | + "type": "number", | ||
2588 | + "description": "问题总分", | ||
2589 | + "format": "double" | ||
2590 | + }, | ||
2591 | + "referenceResourceId": { | ||
2592 | + "type": "integer", | ||
2593 | + "description": "引用资源ID", | ||
2594 | + "required": [ | ||
2595 | + "referenceResourceId" | ||
2596 | + ] | ||
2597 | + }, | ||
2353 | "serialNumber": { | 2598 | "serialNumber": { |
2354 | "type": "integer", | 2599 | "type": "integer", |
2355 | "description": "编号", | 2600 | "description": "编号", |
@@ -2357,6 +2602,13 @@ | @@ -2357,6 +2602,13 @@ | ||
2357 | "serialNumber" | 2602 | "serialNumber" |
2358 | ] | 2603 | ] |
2359 | }, | 2604 | }, |
2605 | + "solveScore": { | ||
2606 | + "type": "array", | ||
2607 | + "items": { | ||
2608 | + "$ref": "#/definitions/solveScoreItemRequestBody" | ||
2609 | + }, | ||
2610 | + "description": "解决评分明细" | ||
2611 | + }, | ||
2360 | "title": { | 2612 | "title": { |
2361 | "type": "string", | 2613 | "type": "string", |
2362 | "description": "标题", | 2614 | "description": "标题", |
@@ -2371,6 +2623,25 @@ | @@ -2371,6 +2623,25 @@ | ||
2371 | "title": "referenceResourceItemResponseBody", | 2623 | "title": "referenceResourceItemResponseBody", |
2372 | "type": "object", | 2624 | "type": "object", |
2373 | "properties": { | 2625 | "properties": { |
2626 | + "content": { | ||
2627 | + "type": "string", | ||
2628 | + "description": "内容", | ||
2629 | + "required": [ | ||
2630 | + "content" | ||
2631 | + ] | ||
2632 | + }, | ||
2633 | + "issueScore": { | ||
2634 | + "type": "number", | ||
2635 | + "description": "问题总分", | ||
2636 | + "format": "double" | ||
2637 | + }, | ||
2638 | + "referenceResourceId": { | ||
2639 | + "type": "integer", | ||
2640 | + "description": "引用资源ID", | ||
2641 | + "required": [ | ||
2642 | + "referenceResourceId" | ||
2643 | + ] | ||
2644 | + }, | ||
2374 | "serialNumber": { | 2645 | "serialNumber": { |
2375 | "type": "integer", | 2646 | "type": "integer", |
2376 | "description": "编号", | 2647 | "description": "编号", |
@@ -2378,6 +2649,13 @@ | @@ -2378,6 +2649,13 @@ | ||
2378 | "serialNumber" | 2649 | "serialNumber" |
2379 | ] | 2650 | ] |
2380 | }, | 2651 | }, |
2652 | + "solveScore": { | ||
2653 | + "type": "array", | ||
2654 | + "items": { | ||
2655 | + "$ref": "#/definitions/solveScoreItemResponseBody" | ||
2656 | + }, | ||
2657 | + "description": "解决评分明细" | ||
2658 | + }, | ||
2381 | "title": { | 2659 | "title": { |
2382 | "type": "string", | 2660 | "type": "string", |
2383 | "description": "标题", | 2661 | "description": "标题", |
@@ -2453,6 +2731,68 @@ | @@ -2453,6 +2731,68 @@ | ||
2453 | }, | 2731 | }, |
2454 | "description": "抢单任务信息" | 2732 | "description": "抢单任务信息" |
2455 | }, | 2733 | }, |
2734 | + "solveScoreItemRequestBody": { | ||
2735 | + "title": "solveScoreItemRequestBody", | ||
2736 | + "type": "object", | ||
2737 | + "properties": { | ||
2738 | + "contributor": { | ||
2739 | + "$ref": "#/definitions/employeeInfoRequestBody" | ||
2740 | + }, | ||
2741 | + "isReceiver": { | ||
2742 | + "type": "boolean", | ||
2743 | + "description": "是否领取人", | ||
2744 | + "required": [ | ||
2745 | + "isReceiver" | ||
2746 | + ] | ||
2747 | + }, | ||
2748 | + "percentage": { | ||
2749 | + "type": "integer", | ||
2750 | + "description": "解决占比", | ||
2751 | + "required": [ | ||
2752 | + "percentage" | ||
2753 | + ] | ||
2754 | + }, | ||
2755 | + "score": { | ||
2756 | + "type": "number", | ||
2757 | + "description": "解决评分", | ||
2758 | + "required": [ | ||
2759 | + "score" | ||
2760 | + ] | ||
2761 | + } | ||
2762 | + }, | ||
2763 | + "description": "解决评分项" | ||
2764 | + }, | ||
2765 | + "solveScoreItemResponseBody": { | ||
2766 | + "title": "solveScoreItemResponseBody", | ||
2767 | + "type": "object", | ||
2768 | + "properties": { | ||
2769 | + "contributor": { | ||
2770 | + "$ref": "#/definitions/employeeInfoResponseBody" | ||
2771 | + }, | ||
2772 | + "isReceiver": { | ||
2773 | + "type": "boolean", | ||
2774 | + "description": "是否领取人", | ||
2775 | + "required": [ | ||
2776 | + "isReceiver" | ||
2777 | + ] | ||
2778 | + }, | ||
2779 | + "percentage": { | ||
2780 | + "type": "integer", | ||
2781 | + "description": "解决占比", | ||
2782 | + "required": [ | ||
2783 | + "percentage" | ||
2784 | + ] | ||
2785 | + }, | ||
2786 | + "score": { | ||
2787 | + "type": "number", | ||
2788 | + "description": "解决评分", | ||
2789 | + "required": [ | ||
2790 | + "score" | ||
2791 | + ] | ||
2792 | + } | ||
2793 | + }, | ||
2794 | + "description": "解决评分项" | ||
2795 | + }, | ||
2456 | "suMoneyTransactionRecordResponseBody": { | 2796 | "suMoneyTransactionRecordResponseBody": { |
2457 | "title": "suMoneyTransactionRecordResponseBody", | 2797 | "title": "suMoneyTransactionRecordResponseBody", |
2458 | "type": "object", | 2798 | "type": "object", |
@@ -2539,10 +2879,12 @@ | @@ -2539,10 +2879,12 @@ | ||
2539 | "contributor": { | 2879 | "contributor": { |
2540 | "$ref": "#/definitions/employeeInfoRequestBody" | 2880 | "$ref": "#/definitions/employeeInfoRequestBody" |
2541 | }, | 2881 | }, |
2542 | - "issueScore": { | ||
2543 | - "type": "number", | ||
2544 | - "description": "引用问题的得分", | ||
2545 | - "format": "double" | 2882 | + "isReceiver": { |
2883 | + "type": "boolean", | ||
2884 | + "description": "是否领取人", | ||
2885 | + "required": [ | ||
2886 | + "isReceiver" | ||
2887 | + ] | ||
2546 | }, | 2888 | }, |
2547 | "percentage": { | 2889 | "percentage": { |
2548 | "type": "integer", | 2890 | "type": "integer", |
@@ -2568,10 +2910,12 @@ | @@ -2568,10 +2910,12 @@ | ||
2568 | "contributor": { | 2910 | "contributor": { |
2569 | "$ref": "#/definitions/employeeInfoResponseBody" | 2911 | "$ref": "#/definitions/employeeInfoResponseBody" |
2570 | }, | 2912 | }, |
2571 | - "issueScore": { | ||
2572 | - "type": "number", | ||
2573 | - "description": "引用问题的得分", | ||
2574 | - "format": "double" | 2913 | + "isReceiver": { |
2914 | + "type": "boolean", | ||
2915 | + "description": "是否领取人", | ||
2916 | + "required": [ | ||
2917 | + "isReceiver" | ||
2918 | + ] | ||
2575 | }, | 2919 | }, |
2576 | "percentage": { | 2920 | "percentage": { |
2577 | "type": "integer", | 2921 | "type": "integer", |
@@ -41,6 +41,20 @@ paths: | @@ -41,6 +41,20 @@ paths: | ||
41 | $ref: '#/definitions/ConfigListCustomerValueResponseBody' | 41 | $ref: '#/definitions/ConfigListCustomerValueResponseBody' |
42 | schemes: | 42 | schemes: |
43 | - http | 43 | - http |
44 | + /config/employee-permissions: | ||
45 | + get: | ||
46 | + tags: | ||
47 | + - config | ||
48 | + summary: 返回员工权限字典列表(1任务管理,2素币管理,3成员管理) | ||
49 | + description: 返回员工权限字典列表(1任务管理,2素币管理,3成员管理) | ||
50 | + operationId: config#listEmployeePermission | ||
51 | + responses: | ||
52 | + "200": | ||
53 | + description: OK response. | ||
54 | + schema: | ||
55 | + $ref: '#/definitions/ConfigListEmployeePermissionResponseBody' | ||
56 | + schemes: | ||
57 | + - http | ||
44 | /config/reference-resource-types: | 58 | /config/reference-resource-types: |
45 | get: | 59 | get: |
46 | tags: | 60 | tags: |
@@ -105,6 +119,16 @@ paths: | @@ -105,6 +119,16 @@ paths: | ||
105 | description: 返回员工列表 | 119 | description: 返回员工列表 |
106 | operationId: employee#listEmployee | 120 | operationId: employee#listEmployee |
107 | parameters: | 121 | parameters: |
122 | + - name: companyId | ||
123 | + in: query | ||
124 | + description: 公司ID | ||
125 | + required: false | ||
126 | + type: integer | ||
127 | + - name: employeeNameMatch | ||
128 | + in: query | ||
129 | + description: 员工姓名匹配 | ||
130 | + required: false | ||
131 | + type: string | ||
108 | - name: offset | 132 | - name: offset |
109 | in: query | 133 | in: query |
110 | description: 查询偏离量 | 134 | description: 查询偏离量 |
@@ -344,6 +368,46 @@ paths: | @@ -344,6 +368,46 @@ paths: | ||
344 | $ref: '#/definitions/SuMoneySearchSuMoneyTransactionRecordResponseBody' | 368 | $ref: '#/definitions/SuMoneySearchSuMoneyTransactionRecordResponseBody' |
345 | schemes: | 369 | schemes: |
346 | - http | 370 | - http |
371 | + /su-money/su-money-transaction-record-statistics: | ||
372 | + post: | ||
373 | + tags: | ||
374 | + - suMoney | ||
375 | + summary: 素币事务记录统计 | ||
376 | + description: 素币事务记录统计 | ||
377 | + operationId: suMoney#suMoneyTransactionRecordStatistics | ||
378 | + parameters: | ||
379 | + - name: SuMoneyTransactionRecordStatisticsRequestBody | ||
380 | + in: body | ||
381 | + required: true | ||
382 | + schema: | ||
383 | + $ref: '#/definitions/SuMoneySuMoneyTransactionRecordStatisticsRequestBody' | ||
384 | + responses: | ||
385 | + "200": | ||
386 | + description: OK response. | ||
387 | + schema: | ||
388 | + $ref: '#/definitions/SuMoneySuMoneyTransactionRecordStatisticsResponseBody' | ||
389 | + schemes: | ||
390 | + - http | ||
391 | + /su-money/su-money-transaction-records/{suMoneyTransactionRecordId}: | ||
392 | + get: | ||
393 | + tags: | ||
394 | + - suMoney | ||
395 | + summary: 返回素币事务记录 | ||
396 | + description: 返回素币事务记录 | ||
397 | + operationId: suMoney#getSuMoneyTransactionRecord | ||
398 | + parameters: | ||
399 | + - name: suMoneyTransactionRecordId | ||
400 | + in: path | ||
401 | + description: 素币事务记录ID | ||
402 | + required: true | ||
403 | + type: integer | ||
404 | + responses: | ||
405 | + "200": | ||
406 | + description: OK response. | ||
407 | + schema: | ||
408 | + $ref: '#/definitions/SuMoneyGetSuMoneyTransactionRecordResponseBody' | ||
409 | + schemes: | ||
410 | + - http | ||
347 | /tasks: | 411 | /tasks: |
348 | get: | 412 | get: |
349 | tags: | 413 | tags: |
@@ -382,7 +446,10 @@ paths: | @@ -382,7 +446,10 @@ paths: | ||
382 | in: query | 446 | in: query |
383 | description: 客户价值 | 447 | description: 客户价值 |
384 | required: false | 448 | required: false |
449 | + type: array | ||
450 | + items: | ||
385 | type: string | 451 | type: string |
452 | + collectionFormat: multi | ||
386 | - name: taskNature | 453 | - name: taskNature |
387 | in: query | 454 | in: query |
388 | description: 任务性质 | 455 | description: 任务性质 |
@@ -741,6 +808,14 @@ definitions: | @@ -741,6 +808,14 @@ definitions: | ||
741 | type: array | 808 | type: array |
742 | items: | 809 | items: |
743 | $ref: '#/definitions/configResponseBody' | 810 | $ref: '#/definitions/configResponseBody' |
811 | + ConfigListEmployeePermissionResponseBody: | ||
812 | + title: 'Mediatype identifier: ConfigListEmployeePermissionResponseBody' | ||
813 | + type: object | ||
814 | + properties: | ||
815 | + employeePermissions: | ||
816 | + type: array | ||
817 | + items: | ||
818 | + $ref: '#/definitions/configResponseBody' | ||
744 | ConfigListReferenceResourceTypeResponseBody: | 819 | ConfigListReferenceResourceTypeResponseBody: |
745 | title: 'Mediatype identifier: ConfigListReferenceResourceTypeResponseBody' | 820 | title: 'Mediatype identifier: ConfigListReferenceResourceTypeResponseBody' |
746 | type: object | 821 | type: object |
@@ -780,6 +855,9 @@ definitions: | @@ -780,6 +855,9 @@ definitions: | ||
780 | employeeAccount: | 855 | employeeAccount: |
781 | type: string | 856 | type: string |
782 | description: 员工账号 | 857 | description: 员工账号 |
858 | + employeeAvatarUrl: | ||
859 | + type: string | ||
860 | + description: 员工头像URL | ||
783 | employeeName: | 861 | employeeName: |
784 | type: string | 862 | type: string |
785 | description: 员工姓名 | 863 | description: 员工姓名 |
@@ -825,9 +903,18 @@ definitions: | @@ -825,9 +903,18 @@ definitions: | ||
825 | employeeAccount: | 903 | employeeAccount: |
826 | type: string | 904 | type: string |
827 | description: 员工账号 | 905 | description: 员工账号 |
906 | + employeeAvatarUrl: | ||
907 | + type: string | ||
908 | + description: 员工头像URL | ||
828 | employeeName: | 909 | employeeName: |
829 | type: string | 910 | type: string |
830 | description: 员工姓名 | 911 | description: 员工姓名 |
912 | + permissions: | ||
913 | + type: array | ||
914 | + items: | ||
915 | + type: integer | ||
916 | + format: int64 | ||
917 | + description: 员工权限集合 | ||
831 | EmployeeUpdateEmployeeResponseBody: | 918 | EmployeeUpdateEmployeeResponseBody: |
832 | title: 'Mediatype identifier: EmployeeUpdateEmployeeResponseBody' | 919 | title: 'Mediatype identifier: EmployeeUpdateEmployeeResponseBody' |
833 | type: object | 920 | type: object |
@@ -850,6 +937,8 @@ definitions: | @@ -850,6 +937,8 @@ definitions: | ||
850 | required: | 937 | required: |
851 | - companyId | 938 | - companyId |
852 | customerValue: | 939 | customerValue: |
940 | + type: array | ||
941 | + items: | ||
853 | type: string | 942 | type: string |
854 | description: 客户价值 | 943 | description: 客户价值 |
855 | limit: | 944 | limit: |
@@ -964,6 +1053,12 @@ definitions: | @@ -964,6 +1053,12 @@ definitions: | ||
964 | properties: | 1053 | properties: |
965 | suMoneyTransactionRecord: | 1054 | suMoneyTransactionRecord: |
966 | $ref: '#/definitions/suMoneyTransactionRecordResponseBody' | 1055 | $ref: '#/definitions/suMoneyTransactionRecordResponseBody' |
1056 | + SuMoneyGetSuMoneyTransactionRecordResponseBody: | ||
1057 | + title: 'Mediatype identifier: SuMoneyGetSuMoneyTransactionRecordResponseBody' | ||
1058 | + type: object | ||
1059 | + properties: | ||
1060 | + suMoneyTransactionRecord: | ||
1061 | + $ref: '#/definitions/suMoneyTransactionRecordResponseBody' | ||
967 | SuMoneySearchSuMoneyTransactionRecordRequestBody: | 1062 | SuMoneySearchSuMoneyTransactionRecordRequestBody: |
968 | title: SuMoneySearchSuMoneyTransactionRecordRequestBody | 1063 | title: SuMoneySearchSuMoneyTransactionRecordRequestBody |
969 | type: object | 1064 | type: object |
@@ -1010,6 +1105,37 @@ definitions: | @@ -1010,6 +1105,37 @@ definitions: | ||
1010 | type: array | 1105 | type: array |
1011 | items: | 1106 | items: |
1012 | $ref: '#/definitions/suMoneyTransactionRecordResponseBody' | 1107 | $ref: '#/definitions/suMoneyTransactionRecordResponseBody' |
1108 | + SuMoneySuMoneyTransactionRecordStatisticsRequestBody: | ||
1109 | + title: SuMoneySuMoneyTransactionRecordStatisticsRequestBody | ||
1110 | + type: object | ||
1111 | + properties: | ||
1112 | + transactionEndTime: | ||
1113 | + type: string | ||
1114 | + description: 事务时间区间-截止时间 | ||
1115 | + format: datetime | ||
1116 | + transactionStartTime: | ||
1117 | + type: string | ||
1118 | + description: 事务时间区间-开始时间 | ||
1119 | + format: datetime | ||
1120 | + uid: | ||
1121 | + type: integer | ||
1122 | + description: 统一用户UID | ||
1123 | + required: | ||
1124 | + - uid | ||
1125 | + SuMoneySuMoneyTransactionRecordStatisticsResponseBody: | ||
1126 | + title: 'Mediatype identifier: SuMoneySuMoneyTransactionRecordStatisticsResponseBody' | ||
1127 | + type: object | ||
1128 | + properties: | ||
1129 | + expendSuMoney: | ||
1130 | + type: number | ||
1131 | + description: 支出素币 | ||
1132 | + required: | ||
1133 | + - expendSuMoney | ||
1134 | + incomeSuMoney: | ||
1135 | + type: number | ||
1136 | + description: 收入素币 | ||
1137 | + required: | ||
1138 | + - incomeSuMoney | ||
1013 | TaskAcceptanceTaskRequestBody: | 1139 | TaskAcceptanceTaskRequestBody: |
1014 | title: TaskAcceptanceTaskRequestBody | 1140 | title: TaskAcceptanceTaskRequestBody |
1015 | type: object | 1141 | type: object |
@@ -1025,6 +1151,11 @@ definitions: | @@ -1025,6 +1151,11 @@ definitions: | ||
1025 | type: integer | 1151 | type: integer |
1026 | format: int64 | 1152 | format: int64 |
1027 | description: 任务参与者UID列表 | 1153 | description: 任务参与者UID列表 |
1154 | + referenceResourceScore: | ||
1155 | + type: array | ||
1156 | + items: | ||
1157 | + $ref: '#/definitions/referenceResourceItemRequestBody' | ||
1158 | + description: 引用资源解决分 | ||
1028 | solvePictureUrls: | 1159 | solvePictureUrls: |
1029 | type: array | 1160 | type: array |
1030 | items: | 1161 | items: |
@@ -1113,6 +1244,11 @@ definitions: | @@ -1113,6 +1244,11 @@ definitions: | ||
1113 | type: string | 1244 | type: string |
1114 | description: 竞标开始时间 | 1245 | description: 竞标开始时间 |
1115 | format: datetime | 1246 | format: datetime |
1247 | + companyId: | ||
1248 | + type: integer | ||
1249 | + description: 公司ID | ||
1250 | + required: | ||
1251 | + - companyId | ||
1116 | customerValue: | 1252 | customerValue: |
1117 | type: array | 1253 | type: array |
1118 | items: | 1254 | items: |
@@ -1249,6 +1385,8 @@ definitions: | @@ -1249,6 +1385,8 @@ definitions: | ||
1249 | required: | 1385 | required: |
1250 | - companyId | 1386 | - companyId |
1251 | customerValue: | 1387 | customerValue: |
1388 | + type: array | ||
1389 | + items: | ||
1252 | type: string | 1390 | type: string |
1253 | description: 客户价值 | 1391 | description: 客户价值 |
1254 | limit: | 1392 | limit: |
@@ -1307,11 +1445,16 @@ definitions: | @@ -1307,11 +1445,16 @@ definitions: | ||
1307 | required: | 1445 | required: |
1308 | - companyId | 1446 | - companyId |
1309 | customerValue: | 1447 | customerValue: |
1448 | + type: array | ||
1449 | + items: | ||
1310 | type: string | 1450 | type: string |
1311 | description: 客户价值 | 1451 | description: 客户价值 |
1312 | isFilterCloseStatus: | 1452 | isFilterCloseStatus: |
1313 | type: boolean | 1453 | type: boolean |
1314 | description: 是否过滤关闭状态任务 | 1454 | description: 是否过滤关闭状态任务 |
1455 | + isFilterUnReleasedStatus: | ||
1456 | + type: boolean | ||
1457 | + description: 是否过滤待发布状态任务 | ||
1315 | isRewardTake: | 1458 | isRewardTake: |
1316 | type: boolean | 1459 | type: boolean |
1317 | description: 是否悬赏任务 | 1460 | description: 是否悬赏任务 |
@@ -1471,6 +1614,9 @@ definitions: | @@ -1471,6 +1614,9 @@ definitions: | ||
1471 | employeeAccount: | 1614 | employeeAccount: |
1472 | type: string | 1615 | type: string |
1473 | description: 员工账号 | 1616 | description: 员工账号 |
1617 | + employeeAvatarUrl: | ||
1618 | + type: string | ||
1619 | + description: 员工头像URL | ||
1474 | employeeName: | 1620 | employeeName: |
1475 | type: string | 1621 | type: string |
1476 | description: 员工姓名 | 1622 | description: 员工姓名 |
@@ -1489,6 +1635,9 @@ definitions: | @@ -1489,6 +1635,9 @@ definitions: | ||
1489 | employeeAccount: | 1635 | employeeAccount: |
1490 | type: string | 1636 | type: string |
1491 | description: 员工账号 | 1637 | description: 员工账号 |
1638 | + employeeAvatarUrl: | ||
1639 | + type: string | ||
1640 | + description: 员工头像URL | ||
1492 | employeeName: | 1641 | employeeName: |
1493 | type: string | 1642 | type: string |
1494 | description: 员工姓名 | 1643 | description: 员工姓名 |
@@ -1516,6 +1665,14 @@ definitions: | @@ -1516,6 +1665,14 @@ definitions: | ||
1516 | - employeeId | 1665 | - employeeId |
1517 | employeeInfo: | 1666 | employeeInfo: |
1518 | $ref: '#/definitions/employeeInfoResponseBody' | 1667 | $ref: '#/definitions/employeeInfoResponseBody' |
1668 | + permissions: | ||
1669 | + type: array | ||
1670 | + items: | ||
1671 | + type: integer | ||
1672 | + format: int64 | ||
1673 | + description: 员工权限集合 | ||
1674 | + required: | ||
1675 | + - permissions | ||
1519 | status: | 1676 | status: |
1520 | type: integer | 1677 | type: integer |
1521 | description: 员工状态(启用或者禁用) | 1678 | description: 员工状态(启用或者禁用) |
@@ -1624,11 +1781,30 @@ definitions: | @@ -1624,11 +1781,30 @@ definitions: | ||
1624 | title: referenceResourceItemRequestBody | 1781 | title: referenceResourceItemRequestBody |
1625 | type: object | 1782 | type: object |
1626 | properties: | 1783 | properties: |
1784 | + content: | ||
1785 | + type: string | ||
1786 | + description: 内容 | ||
1787 | + required: | ||
1788 | + - content | ||
1789 | + issueScore: | ||
1790 | + type: number | ||
1791 | + description: 问题总分 | ||
1792 | + format: double | ||
1793 | + referenceResourceId: | ||
1794 | + type: integer | ||
1795 | + description: 引用资源ID | ||
1796 | + required: | ||
1797 | + - referenceResourceId | ||
1627 | serialNumber: | 1798 | serialNumber: |
1628 | type: integer | 1799 | type: integer |
1629 | description: 编号 | 1800 | description: 编号 |
1630 | required: | 1801 | required: |
1631 | - serialNumber | 1802 | - serialNumber |
1803 | + solveScore: | ||
1804 | + type: array | ||
1805 | + items: | ||
1806 | + $ref: '#/definitions/solveScoreItemRequestBody' | ||
1807 | + description: 解决评分明细 | ||
1632 | title: | 1808 | title: |
1633 | type: string | 1809 | type: string |
1634 | description: 标题 | 1810 | description: 标题 |
@@ -1639,11 +1815,30 @@ definitions: | @@ -1639,11 +1815,30 @@ definitions: | ||
1639 | title: referenceResourceItemResponseBody | 1815 | title: referenceResourceItemResponseBody |
1640 | type: object | 1816 | type: object |
1641 | properties: | 1817 | properties: |
1818 | + content: | ||
1819 | + type: string | ||
1820 | + description: 内容 | ||
1821 | + required: | ||
1822 | + - content | ||
1823 | + issueScore: | ||
1824 | + type: number | ||
1825 | + description: 问题总分 | ||
1826 | + format: double | ||
1827 | + referenceResourceId: | ||
1828 | + type: integer | ||
1829 | + description: 引用资源ID | ||
1830 | + required: | ||
1831 | + - referenceResourceId | ||
1642 | serialNumber: | 1832 | serialNumber: |
1643 | type: integer | 1833 | type: integer |
1644 | description: 编号 | 1834 | description: 编号 |
1645 | required: | 1835 | required: |
1646 | - serialNumber | 1836 | - serialNumber |
1837 | + solveScore: | ||
1838 | + type: array | ||
1839 | + items: | ||
1840 | + $ref: '#/definitions/solveScoreItemResponseBody' | ||
1841 | + description: 解决评分明细 | ||
1647 | title: | 1842 | title: |
1648 | type: string | 1843 | type: string |
1649 | description: 标题 | 1844 | description: 标题 |
@@ -1696,6 +1891,50 @@ definitions: | @@ -1696,6 +1891,50 @@ definitions: | ||
1696 | receiver: | 1891 | receiver: |
1697 | $ref: '#/definitions/employeeInfoResponseBody' | 1892 | $ref: '#/definitions/employeeInfoResponseBody' |
1698 | description: 抢单任务信息 | 1893 | description: 抢单任务信息 |
1894 | + solveScoreItemRequestBody: | ||
1895 | + title: solveScoreItemRequestBody | ||
1896 | + type: object | ||
1897 | + properties: | ||
1898 | + contributor: | ||
1899 | + $ref: '#/definitions/employeeInfoRequestBody' | ||
1900 | + isReceiver: | ||
1901 | + type: boolean | ||
1902 | + description: 是否领取人 | ||
1903 | + required: | ||
1904 | + - isReceiver | ||
1905 | + percentage: | ||
1906 | + type: integer | ||
1907 | + description: 解决占比 | ||
1908 | + required: | ||
1909 | + - percentage | ||
1910 | + score: | ||
1911 | + type: number | ||
1912 | + description: 解决评分 | ||
1913 | + required: | ||
1914 | + - score | ||
1915 | + description: 解决评分项 | ||
1916 | + solveScoreItemResponseBody: | ||
1917 | + title: solveScoreItemResponseBody | ||
1918 | + type: object | ||
1919 | + properties: | ||
1920 | + contributor: | ||
1921 | + $ref: '#/definitions/employeeInfoResponseBody' | ||
1922 | + isReceiver: | ||
1923 | + type: boolean | ||
1924 | + description: 是否领取人 | ||
1925 | + required: | ||
1926 | + - isReceiver | ||
1927 | + percentage: | ||
1928 | + type: integer | ||
1929 | + description: 解决占比 | ||
1930 | + required: | ||
1931 | + - percentage | ||
1932 | + score: | ||
1933 | + type: number | ||
1934 | + description: 解决评分 | ||
1935 | + required: | ||
1936 | + - score | ||
1937 | + description: 解决评分项 | ||
1699 | suMoneyTransactionRecordResponseBody: | 1938 | suMoneyTransactionRecordResponseBody: |
1700 | title: suMoneyTransactionRecordResponseBody | 1939 | title: suMoneyTransactionRecordResponseBody |
1701 | type: object | 1940 | type: object |
@@ -1759,10 +1998,11 @@ definitions: | @@ -1759,10 +1998,11 @@ definitions: | ||
1759 | properties: | 1998 | properties: |
1760 | contributor: | 1999 | contributor: |
1761 | $ref: '#/definitions/employeeInfoRequestBody' | 2000 | $ref: '#/definitions/employeeInfoRequestBody' |
1762 | - issueScore: | ||
1763 | - type: number | ||
1764 | - description: 引用问题的得分 | ||
1765 | - format: double | 2001 | + isReceiver: |
2002 | + type: boolean | ||
2003 | + description: 是否领取人 | ||
2004 | + required: | ||
2005 | + - isReceiver | ||
1766 | percentage: | 2006 | percentage: |
1767 | type: integer | 2007 | type: integer |
1768 | description: 任务贡献占比 | 2008 | description: 任务贡献占比 |
@@ -1780,10 +2020,11 @@ definitions: | @@ -1780,10 +2020,11 @@ definitions: | ||
1780 | properties: | 2020 | properties: |
1781 | contributor: | 2021 | contributor: |
1782 | $ref: '#/definitions/employeeInfoResponseBody' | 2022 | $ref: '#/definitions/employeeInfoResponseBody' |
1783 | - issueScore: | ||
1784 | - type: number | ||
1785 | - description: 引用问题的得分 | ||
1786 | - format: double | 2023 | + isReceiver: |
2024 | + type: boolean | ||
2025 | + description: 是否领取人 | ||
2026 | + required: | ||
2027 | + - isReceiver | ||
1787 | percentage: | 2028 | percentage: |
1788 | type: integer | 2029 | type: integer |
1789 | description: 任务贡献占比 | 2030 | description: 任务贡献占比 |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "time" | ||
6 | + | ||
7 | + "github.com/astaxie/beego/validation" | ||
8 | +) | ||
9 | + | ||
10 | +type SuMoneyTransactionRecordStatisticsCommand struct { | ||
11 | + // 统一用户UID | ||
12 | + Uid int64 `json:"uid" valid:"Required"` | ||
13 | + // 事务时间区间-开始时间 | ||
14 | + TransactionStartTime time.Time `json:"transactionStartTime,omitempty"` | ||
15 | + // 事务时间区间-截止时间 | ||
16 | + TransactionEndTime time.Time `json:"transactionEndTime,omitempty"` | ||
17 | +} | ||
18 | + | ||
19 | +func (suMoneyTransactionRecordStatisticsCommand *SuMoneyTransactionRecordStatisticsCommand) ValidateCommand() error { | ||
20 | + valid := validation.Validation{} | ||
21 | + b, err := valid.Valid(suMoneyTransactionRecordStatisticsCommand) | ||
22 | + if err != nil { | ||
23 | + return err | ||
24 | + } | ||
25 | + if !b { | ||
26 | + for _, validErr := range valid.Errors { | ||
27 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
28 | + } | ||
29 | + } | ||
30 | + return nil | ||
31 | +} |
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/astaxie/beego/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type GetSuMoneyTransactionRecordQuery struct { | ||
10 | + // 素币事务记录ID | ||
11 | + SuMoneyTransactionRecordId int64 `json:"suMoneyTransactionRecordId" valid:"Required"` | ||
12 | +} | ||
13 | + | ||
14 | +func (getSuMoneyTransactionRecordQuery *GetSuMoneyTransactionRecordQuery) ValidateQuery() error { | ||
15 | + valid := validation.Validation{} | ||
16 | + b, err := valid.Valid(getSuMoneyTransactionRecordQuery) | ||
17 | + if err != nil { | ||
18 | + return err | ||
19 | + } | ||
20 | + if !b { | ||
21 | + for _, validErr := range valid.Errors { | ||
22 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
23 | + } | ||
24 | + } | ||
25 | + return nil | ||
26 | +} |
@@ -5,14 +5,49 @@ import ( | @@ -5,14 +5,49 @@ import ( | ||
5 | "github.com/linmadan/egglib-go/utils/tool_funs" | 5 | "github.com/linmadan/egglib-go/utils/tool_funs" |
6 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" | 6 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" |
7 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/command" | 7 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/command" |
8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/query" | ||
8 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | 9 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" |
9 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" | 10 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" |
11 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" | ||
10 | ) | 12 | ) |
11 | 13 | ||
12 | // 素币服务 | 14 | // 素币服务 |
13 | type SuMoneyService struct { | 15 | type SuMoneyService struct { |
14 | } | 16 | } |
15 | 17 | ||
18 | +// 返回素币事务记录 | ||
19 | +func (suMoneyService *SuMoneyService) GetSuMoneyTransactionRecord(getSuMoneyTransactionRecordQuery *query.GetSuMoneyTransactionRecordQuery) (interface{}, error) { | ||
20 | + if err := getSuMoneyTransactionRecordQuery.ValidateQuery(); err != nil { | ||
21 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
22 | + } | ||
23 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
24 | + if err != nil { | ||
25 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
26 | + } | ||
27 | + if err := transactionContext.StartTransaction(); err != nil { | ||
28 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
29 | + } | ||
30 | + defer func() { | ||
31 | + transactionContext.RollbackTransaction() | ||
32 | + }() | ||
33 | + var suMoneyTransactionRecordRepository domain.SuMoneyTransactionRecordRepository | ||
34 | + if value, err := factory.CreateSuMoneyTransactionRecordRepository(map[string]interface{}{ | ||
35 | + "transactionContext": transactionContext, | ||
36 | + }); err != nil { | ||
37 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
38 | + } else { | ||
39 | + suMoneyTransactionRecordRepository = value | ||
40 | + } | ||
41 | + if suMoneyTransactionRecord, err := suMoneyTransactionRecordRepository.FindOne(map[string]interface{}{"suMoneyTransactionRecordId": getSuMoneyTransactionRecordQuery.SuMoneyTransactionRecordId}); err != nil { | ||
42 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
43 | + } else { | ||
44 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
45 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
46 | + } | ||
47 | + return suMoneyTransactionRecord, nil | ||
48 | + } | ||
49 | +} | ||
50 | + | ||
16 | // 素币兑换 | 51 | // 素币兑换 |
17 | func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *command.ExchangeSuMoneyCommand) (interface{}, error) { | 52 | func (suMoneyService *SuMoneyService) ExchangeSuMoney(exchangeSuMoneyCommand *command.ExchangeSuMoneyCommand) (interface{}, error) { |
18 | if err := exchangeSuMoneyCommand.ValidateCommand(); err != nil { | 53 | if err := exchangeSuMoneyCommand.ValidateCommand(); err != nil { |
@@ -82,6 +117,39 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon | @@ -82,6 +117,39 @@ func (suMoneyService *SuMoneyService) SearchSuMoneyTransactionRecord(searchSuMon | ||
82 | } | 117 | } |
83 | } | 118 | } |
84 | 119 | ||
120 | +// 素币事务记录统计 | ||
121 | +func (suMoneyService *SuMoneyService) SuMoneyTransactionRecordStatistics(suMoneyTransactionRecordStatisticsCommand *command.SuMoneyTransactionRecordStatisticsCommand) (interface{}, error) { | ||
122 | + if err := suMoneyTransactionRecordStatisticsCommand.ValidateCommand(); err != nil { | ||
123 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
124 | + } | ||
125 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
126 | + if err != nil { | ||
127 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
128 | + } | ||
129 | + if err := transactionContext.StartTransaction(); err != nil { | ||
130 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
131 | + } | ||
132 | + defer func() { | ||
133 | + transactionContext.RollbackTransaction() | ||
134 | + }() | ||
135 | + var employeeDao *dao.EmployeeDao | ||
136 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
137 | + "transactionContext": transactionContext, | ||
138 | + }); err != nil { | ||
139 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
140 | + } else { | ||
141 | + employeeDao = value | ||
142 | + } | ||
143 | + if calculateResult, err := employeeDao.CalculateSuMoneyTransactionRecord(suMoneyTransactionRecordStatisticsCommand.Uid, suMoneyTransactionRecordStatisticsCommand.TransactionStartTime, suMoneyTransactionRecordStatisticsCommand.TransactionEndTime); err != nil { | ||
144 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
145 | + } else { | ||
146 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
147 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
148 | + } | ||
149 | + return calculateResult, nil | ||
150 | + } | ||
151 | +} | ||
152 | + | ||
85 | func NewSuMoneyService(options map[string]interface{}) *SuMoneyService { | 153 | func NewSuMoneyService(options map[string]interface{}) *SuMoneyService { |
86 | newSuMoneyService := &SuMoneyService{} | 154 | newSuMoneyService := &SuMoneyService{} |
87 | return newSuMoneyService | 155 | return newSuMoneyService |
@@ -40,6 +40,35 @@ func (dao *EmployeeDao) CalculatePersonSuMoney(uid int64) (*domain.PersonSuMoney | @@ -40,6 +40,35 @@ func (dao *EmployeeDao) CalculatePersonSuMoney(uid int64) (*domain.PersonSuMoney | ||
40 | } | 40 | } |
41 | } | 41 | } |
42 | 42 | ||
43 | +func (dao *EmployeeDao) CalculateSuMoneyTransactionRecord(uid int64, transactionStartTime time.Time, transactionEndTime time.Time) (map[string]interface{}, error) { | ||
44 | + tx := dao.transactionContext.PgTx | ||
45 | + suMoneyTransactionRecordModel := new(models.SuMoneyTransactionRecord) | ||
46 | + var incomeSuMoney float64 | ||
47 | + var expendSuMoney float64 | ||
48 | + if err := tx.Model(suMoneyTransactionRecordModel). | ||
49 | + ColumnExpr("sum(su_money_transaction_record.su_money) AS income_su_money"). | ||
50 | + Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid). | ||
51 | + Where(`su_money_transaction_record.record_type = ?`, 2). | ||
52 | + Where(`su_money_transaction_record.create_time > ?`, transactionStartTime). | ||
53 | + Where(`su_money_transaction_record.create_time < ?`, transactionEndTime). | ||
54 | + Select(&incomeSuMoney); err != nil { | ||
55 | + return nil, err | ||
56 | + } | ||
57 | + if err := tx.Model(suMoneyTransactionRecordModel). | ||
58 | + ColumnExpr("sum(su_money_transaction_record.su_money) AS expend_su_money"). | ||
59 | + Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid). | ||
60 | + Where(`su_money_transaction_record.record_type = ?`, 1). | ||
61 | + Where(`su_money_transaction_record.create_time > ?`, transactionStartTime). | ||
62 | + Where(`su_money_transaction_record.create_time < ?`, transactionEndTime). | ||
63 | + Select(&expendSuMoney); err != nil { | ||
64 | + return nil, err | ||
65 | + } | ||
66 | + return map[string]interface{}{ | ||
67 | + "incomeSuMoney": incomeSuMoney, | ||
68 | + "expendSuMoney": expendSuMoney, | ||
69 | + }, nil | ||
70 | +} | ||
71 | + | ||
43 | func NewEmployeeDao(transactionContext *pgTransaction.TransactionContext) (*EmployeeDao, error) { | 72 | func NewEmployeeDao(transactionContext *pgTransaction.TransactionContext) (*EmployeeDao, error) { |
44 | if transactionContext == nil { | 73 | if transactionContext == nil { |
45 | return nil, fmt.Errorf("transactionContext参数不能为nil") | 74 | return nil, fmt.Errorf("transactionContext参数不能为nil") |
@@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
6 | "github.com/astaxie/beego" | 6 | "github.com/astaxie/beego" |
7 | "github.com/linmadan/egglib-go/web/beego/utils" | 7 | "github.com/linmadan/egglib-go/web/beego/utils" |
8 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/command" | 8 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/command" |
9 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/query" | ||
9 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/service" | 10 | "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/suMoney/service" |
10 | ) | 11 | ) |
11 | 12 | ||
@@ -13,6 +14,22 @@ type SuMoneyController struct { | @@ -13,6 +14,22 @@ type SuMoneyController struct { | ||
13 | beego.Controller | 14 | beego.Controller |
14 | } | 15 | } |
15 | 16 | ||
17 | +func (controller *SuMoneyController) GetSuMoneyTransactionRecord() { | ||
18 | + suMoneyService := service.NewSuMoneyService(nil) | ||
19 | + getSuMoneyTransactionRecordQuery := &query.GetSuMoneyTransactionRecordQuery{} | ||
20 | + suMoneyTransactionRecordId, _ := controller.GetInt64(":suMoneyTransactionRecordId") | ||
21 | + getSuMoneyTransactionRecordQuery.SuMoneyTransactionRecordId = suMoneyTransactionRecordId | ||
22 | + data, err := suMoneyService.GetSuMoneyTransactionRecord(getSuMoneyTransactionRecordQuery) | ||
23 | + var response utils.JsonResponse | ||
24 | + if err != nil { | ||
25 | + response = utils.ResponseError(controller.Ctx, err) | ||
26 | + } else { | ||
27 | + response = utils.ResponseData(controller.Ctx, data) | ||
28 | + } | ||
29 | + controller.Data["json"] = response | ||
30 | + controller.ServeJSON() | ||
31 | +} | ||
32 | + | ||
16 | func (controller *SuMoneyController) ExchangeSuMoney() { | 33 | func (controller *SuMoneyController) ExchangeSuMoney() { |
17 | suMoneyService := service.NewSuMoneyService(nil) | 34 | suMoneyService := service.NewSuMoneyService(nil) |
18 | exchangeSuMoneyCommand := &command.ExchangeSuMoneyCommand{} | 35 | exchangeSuMoneyCommand := &command.ExchangeSuMoneyCommand{} |
@@ -42,3 +59,18 @@ func (controller *SuMoneyController) SearchSuMoneyTransactionRecord() { | @@ -42,3 +59,18 @@ func (controller *SuMoneyController) SearchSuMoneyTransactionRecord() { | ||
42 | controller.Data["json"] = response | 59 | controller.Data["json"] = response |
43 | controller.ServeJSON() | 60 | controller.ServeJSON() |
44 | } | 61 | } |
62 | + | ||
63 | +func (controller *SuMoneyController) SuMoneyTransactionRecordStatistics() { | ||
64 | + suMoneyService := service.NewSuMoneyService(nil) | ||
65 | + suMoneyTransactionRecordStatisticsCommand := &command.SuMoneyTransactionRecordStatisticsCommand{} | ||
66 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), suMoneyTransactionRecordStatisticsCommand) | ||
67 | + data, err := suMoneyService.SuMoneyTransactionRecordStatistics(suMoneyTransactionRecordStatisticsCommand) | ||
68 | + var response utils.JsonResponse | ||
69 | + if err != nil { | ||
70 | + response = utils.ResponseError(controller.Ctx, err) | ||
71 | + } else { | ||
72 | + response = utils.ResponseData(controller.Ctx, data) | ||
73 | + } | ||
74 | + controller.Data["json"] = response | ||
75 | + controller.ServeJSON() | ||
76 | +} |
@@ -6,6 +6,8 @@ import ( | @@ -6,6 +6,8 @@ import ( | ||
6 | ) | 6 | ) |
7 | 7 | ||
8 | func init() { | 8 | func init() { |
9 | + beego.Router("/su-money/su-money-transaction-records/:suMoneyTransactionRecordId", &controllers.SuMoneyController{}, "Get:GetSuMoneyTransactionRecord") | ||
9 | beego.Router("/su-money/exchange", &controllers.SuMoneyController{}, "Post:ExchangeSuMoney") | 10 | beego.Router("/su-money/exchange", &controllers.SuMoneyController{}, "Post:ExchangeSuMoney") |
10 | beego.Router("/su-money/search-su-money-transaction-record", &controllers.SuMoneyController{}, "Post:SearchSuMoneyTransactionRecord") | 11 | beego.Router("/su-money/search-su-money-transaction-record", &controllers.SuMoneyController{}, "Post:SearchSuMoneyTransactionRecord") |
12 | + beego.Router("/su-money/su-money-transaction-record-statistics", &controllers.SuMoneyController{}, "Post:SuMoneyTransactionRecordStatistics") | ||
11 | } | 13 | } |
1 | +package su_money | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
5 | + "net/http" | ||
6 | + "time" | ||
7 | + | ||
8 | + "github.com/gavv/httpexpect" | ||
9 | + "github.com/go-pg/pg" | ||
10 | + . "github.com/onsi/ginkgo" | ||
11 | + . "github.com/onsi/gomega" | ||
12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
13 | +) | ||
14 | + | ||
15 | +var _ = Describe("返回素币事务记录", func() { | ||
16 | + BeforeEach(func() { | ||
17 | + _, err := pG.DB.QueryOne( | ||
18 | + pg.Scan(), | ||
19 | + "INSERT INTO su_money_transaction_records (id, record_type, employee, su_money, operator, record_description, create_time) VALUES (?, ?, ?, ?, ?, ?, ?)", | ||
20 | + 1, 1, &domain.EmployeeInfo{ | ||
21 | + Uid: 2499036607974745088, | ||
22 | + }, 100.00, &domain.EmployeeInfo{ | ||
23 | + Uid: 2499036607974745099, | ||
24 | + }, "testRecordDescription", time.Now()) | ||
25 | + Expect(err).NotTo(HaveOccurred()) | ||
26 | + }) | ||
27 | + Describe("返回素币事务记录", func() { | ||
28 | + Context("", func() { | ||
29 | + It("", func() { | ||
30 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
31 | + httpExpect.GET("/su-money/su-money-transaction-records/1"). | ||
32 | + Expect(). | ||
33 | + Status(http.StatusOK). | ||
34 | + JSON(). | ||
35 | + Object(). | ||
36 | + ContainsKey("code").ValueEqual("code", 0). | ||
37 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
38 | + ContainsKey("data").Value("data").Object() | ||
39 | + }) | ||
40 | + }) | ||
41 | + }) | ||
42 | + AfterEach(func() { | ||
43 | + _, err := pG.DB.Exec("DELETE FROM su_money_transaction_records WHERE true") | ||
44 | + Expect(err).NotTo(HaveOccurred()) | ||
45 | + }) | ||
46 | +}) |
1 | +package su_money | ||
2 | + | ||
3 | +import ( | ||
4 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
5 | + "net/http" | ||
6 | + "time" | ||
7 | + | ||
8 | + "github.com/gavv/httpexpect" | ||
9 | + "github.com/go-pg/pg" | ||
10 | + . "github.com/onsi/ginkgo" | ||
11 | + . "github.com/onsi/gomega" | ||
12 | + pG "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" | ||
13 | +) | ||
14 | + | ||
15 | +var _ = Describe("素币事务记录统计", func() { | ||
16 | + var suMoneyTransactionRecordId int64 | ||
17 | + BeforeEach(func() { | ||
18 | + _, err := pG.DB.QueryOne( | ||
19 | + pg.Scan(&suMoneyTransactionRecordId), | ||
20 | + "INSERT INTO su_money_transaction_records (id, record_type, employee, su_money, operator, record_description, create_time) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING id", | ||
21 | + 1, 1, &domain.EmployeeInfo{ | ||
22 | + Uid: 2499036607974745088, | ||
23 | + }, 100.00, &domain.EmployeeInfo{ | ||
24 | + Uid: 2499036607974745099, | ||
25 | + }, "testRecordDescription", time.Now()) | ||
26 | + Expect(err).NotTo(HaveOccurred()) | ||
27 | + }) | ||
28 | + Describe("素币事务记录统计", func() { | ||
29 | + Context("", func() { | ||
30 | + It("", func() { | ||
31 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
32 | + body := map[string]interface{}{ | ||
33 | + "uid": 2499036607974745088, | ||
34 | + "transactionStartTime": time.Date(2020, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), | ||
35 | + "transactionEndTime": time.Date(2030, time.Month(4), 5, 8, 0, 0, 0, time.Now().Location()), | ||
36 | + } | ||
37 | + httpExpect.POST("/su-money/su-money-transaction-record-statistics"). | ||
38 | + WithJSON(body). | ||
39 | + Expect(). | ||
40 | + Status(http.StatusOK). | ||
41 | + JSON(). | ||
42 | + Object(). | ||
43 | + ContainsKey("code").ValueEqual("code", 0). | ||
44 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
45 | + ContainsKey("data").Value("data").Object() | ||
46 | + }) | ||
47 | + }) | ||
48 | + }) | ||
49 | + AfterEach(func() { | ||
50 | + _, err := pG.DB.Exec("DELETE FROM su_money_transaction_records WHERE true") | ||
51 | + Expect(err).NotTo(HaveOccurred()) | ||
52 | + }) | ||
53 | +}) |
-
请 注册 或 登录 后发表评论