Browse Source

合并分支

dev
yujintao 6 years ago
parent
commit
6ebff747ab
  1. 1
      esua-epdc/doc/db/2019-10-25.sql
  2. 12
      esua-epdc/doc/db/dev_newRegister/esua_epdc_admin.sql
  3. 14
      esua-epdc/doc/db/dev_newRegister/esua_epdc_events.sql
  4. 70
      esua-epdc/doc/db/dev_newRegister/esua_epdc_user.sql
  5. 5
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptMaCodeDTO.java
  6. 268
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysMenuDTO.java
  7. 10
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java
  8. 25
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridForLeaderRegisterDTO.java
  9. 23
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridLeaderRegisterDTO.java
  10. 12
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/DeptMaCodeController.java
  11. 77
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
  12. 12
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java
  13. 26
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java
  14. 7
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/DeptMaCodeEntity.java
  15. 5
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysMenuEntity.java
  16. 69
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysRoleEntity.java
  17. 9
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/DeptMaCodeService.java
  18. 15
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java
  19. 32
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java
  20. 72
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/DeptMaCodeServiceImpl.java
  21. 6
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java
  22. 22
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java
  23. 72
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java
  24. 1
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/DeptMaCodeDao.xml
  25. 24
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml
  26. 30
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml
  27. 5
      esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/interceptor/DataFilterInterceptor.java
  28. 1
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java
  29. 4
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java
  30. 27
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/IdentityNoUtils.java
  31. 4
      esua-epdc/epdc-gateway/pom.xml
  32. 16
      esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java
  33. 76
      esua-epdc/epdc-gateway/src/main/resources/application.yml
  34. 71
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/ScanSwitchDTO.java
  35. 36
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java
  36. 31
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserRegisterFormDTO.java
  37. 54
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcCompleteUserInfoFormDTO.java
  38. 2
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppAuthorizationDTO.java
  39. 64
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcCompleteUserInfoDTO.java
  40. 1
      esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml
  41. 106
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java
  42. 96
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScanSwitchController.java
  43. 42
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java
  44. 33
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/dao/ScanSwitchDao.java
  45. 47
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/entity/ScanSwitchEntity.java
  46. 13
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  47. 114
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java
  48. 7
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java
  49. 55
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java
  50. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/resolver/LoginUserHandlerMethodArgumentResolver.java
  51. 88
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java
  52. 105
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ScanSwitchService.java
  53. 527
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java
  54. 1
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java
  55. 113
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ScanSwitchServiceImpl.java
  56. 17
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/mapper/ScanSwitchDao.xml
  57. 5
      esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml
  58. 32
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java
  59. 17
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcEventsDetailDTO.java
  60. 17
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcRejectEventDetailDTO.java
  61. 25
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueContentDetailDTO.java
  62. 15
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueDTO.java
  63. 5
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueJobFeedbackDTO.java
  64. 25
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java
  65. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssuesAndEventsOfMineFormDTO.java
  66. 68
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDTO.java
  67. 10
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDeptDTO.java
  68. 5
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemFormDTO.java
  69. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemOfMineFormDTO.java
  70. 21
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemContentForPCEndResultDTO.java
  71. 31
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemDetailForPCEndResultDTO.java
  72. 7
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleProgressResultDTO.java
  73. 4
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java
  74. 49
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java
  75. 15
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java
  76. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java
  77. 13
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/EpdcEventsEntity.java
  78. 22
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java
  79. 77
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
  80. 24
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java
  81. 30
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java
  82. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java
  83. 20
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java
  84. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java
  85. 14
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/entity/IssueEntity.java
  86. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java
  87. 21
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
  88. 33
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java
  89. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java
  90. 4
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDeptEntity.java
  91. 104
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java
  92. 13
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java
  93. 22
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java
  94. 8
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java
  95. 101
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
  96. 24
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml
  97. 50
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml
  98. 216
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml
  99. 4
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml
  100. 27
      esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java

1
esua-epdc/doc/db/2019-10-25.sql

@ -0,0 +1 @@
ALTER TABLE esd_admin.sys_menu ADD menu_code varchar(50) NULL COMMENT '菜单编码';

12
esua-epdc/doc/db/dev_newRegister/esua_epdc_admin.sql

@ -0,0 +1,12 @@
-- 区分小程序码是否是网格长码
ALTER TABLE epdc_dept_ma_code ADD COLUMN `LEADER_FLAG` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '是否是网格长码,0否 1是';
alter table sys_role add column `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色编码';
INSERT INTO `esua_epdc_admin`.`sys_dict`(`id`, `pid`, `dict_type`, `dict_name`, `dict_value`, `remark`, `sort`, `del_flag`, `creator`, `create_date`, `updater`, `update_date`) VALUES (1187259178133622786, 1187259101235253249, 'sysRoleType', '网格长', 'gridLeader', '', 0, 0, 1067246875800000001, '2019-10-24 14:47:01', 1067246875800000001, '2019-10-24 14:47:01');
INSERT INTO `esua_epdc_admin`.`sys_dict`(`id`, `pid`, `dict_type`, `dict_name`, `dict_value`, `remark`, `sort`, `del_flag`, `creator`, `create_date`, `updater`, `update_date`) VALUES (1187259247259947009, 1187259101235253249, 'sysRoleType', '普通用户', 'normal', '', 0, 0, 1067246875800000001, '2019-10-24 14:47:17', 1067246875800000001, '2019-10-24 14:47:17');
INSERT INTO `esua_epdc_admin`.`sys_dict`(`id`, `pid`, `dict_type`, `dict_name`, `dict_value`, `remark`, `sort`, `del_flag`, `creator`, `create_date`, `updater`, `update_date`) VALUES (1187540245004566530, 1187259101235253249, 'sysRoleType', '其他', 'others', '', 1, 0, 1067246875800000001, '2019-10-25 09:23:53', 1067246875800000001, '2019-10-25 09:23:59');
UPDATE `esua_epdc_admin`.`sys_dict` SET `pid` = 1067246875800000068, `dict_type` = 'gender', `dict_name` = '', `dict_value` = '1', `remark` = '', `sort` = 0, `del_flag` = 0 WHERE `id` = 1067246875800000069;
UPDATE `esua_epdc_admin`.`sys_dict` SET `pid` = 1067246875800000068, `dict_type` = 'gender', `dict_name` = '', `dict_value` = '0', `remark` = '', `sort` = 1, `del_flag` = 0 WHERE `id` = 1067246875800000070;
UPDATE `esua_epdc_admin`.`sys_dict` SET `pid` = 1067246875800000068, `dict_type` = 'gender', `dict_name` = '保密', `dict_value` = '2', `remark` = '', `sort` = 2, `del_flag` = 1 WHERE `id` = 1067246875800000071;

14
esua-epdc/doc/db/dev_newRegister/esua_epdc_events.sql

@ -0,0 +1,14 @@
-- 2019-10-27 项目表增加最近一次处理时间
ALTER TABLE epdc_item ADD LAST_HANDLE_TIME datetime NULL COMMENT '最近一次处理时间';
-- 2019-10-27 项目部门关联表表增加项目处理表ID
ALTER TABLE epdc_item_dept ADD ITEM_HANDLE_ID VARCHAR(32) NULL COMMENT '项目处理表ID';
-- 2019-10-29 事件表增加手机号
ALTER TABLE epdc_events ADD MOBILE VARCHAR(20) NULL COMMENT '手机号';
-- 2019-10-29 议题表增加手机号
ALTER TABLE epdc_issue ADD MOBILE VARCHAR(20) NULL COMMENT '手机号';
-- 2019-10-29 项目表增加手机号
ALTER TABLE epdc_item ADD MOBILE VARCHAR(20) NULL COMMENT '手机号';

70
esua-epdc/doc/db/dev_newRegister/esua_epdc_user.sql

@ -0,0 +1,70 @@
CREATE TABLE `epdc_user_grid_relation` (
`ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`USER_ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户ID',
`DISTRICT` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区县',
`DISTRICT_ID` bigint(20) NULL DEFAULT NULL COMMENT '区县ID',
`STREET_ID` bigint(20) NULL DEFAULT NULL COMMENT '街道ID',
`STREET` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '街道',
`COMMUNITY` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '社区',
`COMMUNITY_ID` bigint(20) NULL DEFAULT NULL COMMENT '社区ID',
`GRID` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属网格',
`GRID_ID` bigint(20) NOT NULL COMMENT '网格ID',
`SWITCHED_TIME` datetime(0) NOT NULL COMMENT '最后切换此网格的时间',
`REVISION` int(11) NULL DEFAULT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime(0) NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime(0) NOT NULL COMMENT '更新时间',
`DEL_FLAG` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除标记',
`LEADER_FLAG` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否是网格长 0-否,1-是',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网格长与网格关系表' ROW_FORMAT = Compact;
-- 上版本审核不通过的用户,直接删除
DELETE FROM epdc_user WHERE STATE = '2';
-- 上版本审核通过的用户,状态改为3(已完善信息且审核通过)
UPDATE epdc_user SET STATE = '3' WHERE STATE = '1';
-- 上版本待审核用户,状态改为1(已完善信息,待审核)
UPDATE epdc_user SET STATE = '1' WHERE STATE = '0';
INSERT INTO `esua_epdc_user`.`epdc_user_grid_relation` (
`ID`,
`USER_ID`,
`DISTRICT`,
`DISTRICT_ID`,
`STREET_ID`,
`STREET`,
`COMMUNITY`,
`COMMUNITY_ID`,
`GRID`,
`GRID_ID`,
`SWITCHED_TIME`,
`REVISION`,
`CREATED_BY`,
`CREATED_TIME`,
`UPDATED_BY`,
`UPDATED_TIME`,
`DEL_FLAG`,
`LEADER_FLAG`
) SELECT
u.ID,
u.ID,
u.DISTRICT,
u.DISTRICT_ID,
u.STREET_ID,
u.STREET,
u.COMMUNITY,
u.COMMUNITY_ID,
u.GRID,
u.GRID_ID,
u.CREATED_TIME,
u.REVISION,
u.CREATED_BY,
u.CREATED_TIME,
u.UPDATED_BY,
u.UPDATED_TIME,
'0',
'0'
FROM
epdc_user u

5
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptMaCodeDTO.java

@ -49,6 +49,11 @@ public class DeptMaCodeDTO implements Serializable {
*/
private String codeUrl;
/**
* 是否是网格长码0否 1是
*/
private String leaderFlag;
/**
* 乐观锁
*/

268
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysMenuDTO.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -35,124 +35,148 @@ import java.util.List;
public class SysMenuDTO extends TreeNode<SysMenuDTO> implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@Null(message="{id.null}", groups = AddGroup.class)
@NotNull(message="{id.require}", groups = UpdateGroup.class)
private Long id;
@ApiModelProperty(value = "上级ID")
@NotNull(message="{sysmenu.pid.require}", groups = DefaultGroup.class)
private Long pid;
@ApiModelProperty(value = "菜单名称")
@NotBlank(message="{sysmenu.name.require}", groups = DefaultGroup.class)
private String name;
@ApiModelProperty(value = "菜单URL")
private String url;
@ApiModelProperty(value = "类型 0:菜单 1:按钮")
@Range(min=0, max=1, message = "{sysmenu.type.range}", groups = DefaultGroup.class)
private Integer type;
@ApiModelProperty(value = "菜单图标")
private String icon;
@ApiModelProperty(value = "权限标识,如:sys:menu:save")
private String permissions;
@ApiModelProperty(value = "排序")
@Min(value = 0, message = "{sort.number}", groups = DefaultGroup.class)
private Integer sort;
@ApiModelProperty(value = "创建时间")
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private Date createDate;
@ApiModelProperty(value = "菜单资源")
private List<MenuResourceDTO> resourceList;
@ApiModelProperty(value = "上级菜单名称")
private String parentName;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getType() {
return type;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIcon() {
return icon;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Integer getSort() {
return sort;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getCreateDate() {
return createDate;
}
public String getPermissions() {
return permissions;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
}
public List<MenuResourceDTO> getResourceList() {
return resourceList;
}
public void setResourceList(List<MenuResourceDTO> resourceList) {
this.resourceList = resourceList;
}
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
@Override
public Long getPid() {
return pid;
}
@Override
public void setPid(Long pid) {
this.pid = pid;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
@ApiModelProperty(value = "id")
@Null(message = "{id.null}", groups = AddGroup.class)
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
private Long id;
@ApiModelProperty(value = "上级ID")
@NotNull(message = "{sysmenu.pid.require}", groups = DefaultGroup.class)
private Long pid;
@ApiModelProperty(value = "菜单名称")
@NotBlank(message = "{sysmenu.name.require}", groups = DefaultGroup.class)
private String name;
@ApiModelProperty(value = "菜单URL")
private String url;
@ApiModelProperty(value = "类型 0:菜单 1:按钮")
@Range(min = 0, max = 1, message = "{sysmenu.type.range}", groups = DefaultGroup.class)
private Integer type;
@ApiModelProperty(value = "菜单图标")
private String icon;
@ApiModelProperty(value = "权限标识,如:sys:menu:save")
private String permissions;
@ApiModelProperty(value = "排序")
@Min(value = 0, message = "{sort.number}", groups = DefaultGroup.class)
private Integer sort;
@ApiModelProperty(value = "创建时间")
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private Date createDate;
@ApiModelProperty(value = "菜单资源")
private List<MenuResourceDTO> resourceList;
@ApiModelProperty(value = "上级菜单名称")
private String parentName;
/**
* 菜单编码
*/
private String menuCode;
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getType() {
return type;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIcon() {
return icon;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Integer getSort() {
return sort;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getCreateDate() {
return createDate;
}
public String getPermissions() {
return permissions;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
}
public List<MenuResourceDTO> getResourceList() {
return resourceList;
}
public void setResourceList(List<MenuResourceDTO> resourceList) {
this.resourceList = resourceList;
}
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
@Override
public Long getPid() {
return pid;
}
@Override
public void setPid(Long pid) {
this.pid = pid;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
}

10
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java

@ -12,8 +12,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@ -31,7 +29,8 @@ import java.util.List;
*/
@Data
public class SysRoleDTO implements Serializable {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 9051888766753172223L;
@Null(message = "{id.null}", groups = AddGroup.class)
@NotNull(message = "{id.require}", groups = UpdateGroup.class)
@ -43,6 +42,11 @@ public class SysRoleDTO implements Serializable {
@NotBlank(message = "{sysrole.name.require}", groups = DefaultGroup.class)
private String name;
/**
* 角色类型键值(数据字典sysRoleType)
*/
private String typeKey;
/**
* 备注
*/

25
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridForLeaderRegisterDTO.java

@ -0,0 +1,25 @@
package com.elink.esua.epdc.dto.epdc;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 网格长注册时获取管理的所有网格
*
* @author work@yujt.net.cn
* @date 2019/10/22 16:09
*/
@Data
public class GridForLeaderRegisterDTO extends CompleteDeptDTO implements Serializable {
private static final long serialVersionUID = -8416239971314737504L;
/**
* 网格创建时间第一次查询后作为'最后切换此网格的时间'插入到esua_epdc_user.epdc_user_grid_relation
*/
private Date switchedTime;
}

23
esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridLeaderRegisterDTO.java

@ -0,0 +1,23 @@
package com.elink.esua.epdc.dto.epdc;
import com.elink.esua.epdc.dto.SysUserDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 网格长注册用
*
* @author work@yujt.net.cn
* @date 2019/10/22 16:09
*/
@Data
public class GridLeaderRegisterDTO implements Serializable {
private static final long serialVersionUID = -7487636988320783324L;
private SysUserDTO sysUser;
private List<GridForLeaderRegisterDTO> leaderGridList;
}

12
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/DeptMaCodeController.java

@ -118,5 +118,17 @@ public class DeptMaCodeController {
return deptMaCodeService.createDeptMaCode(gridId);
}
/**
* 创建网格长注册小程序码
*
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author work@yujt.net.cn
* @date 2019/10/22 09:59
*/
@PostMapping("gridLeader")
public Result createGridLeaderMaCode() {
return deptMaCodeService.createGridLeaderMaCode();
}
}

77
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -24,9 +24,8 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.PasswordDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.SysUserDTO;
import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.excel.SysUserExcel;
import com.elink.esua.epdc.service.*;
import io.swagger.annotations.Api;
@ -49,7 +48,7 @@ import java.util.Map;
*/
@RestController
@RequestMapping("user")
@Api(tags="用户管理")
@Api(tags = "用户管理")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@ -65,13 +64,13 @@ public class SysUserController {
@GetMapping("page")
@ApiOperation("分页")
@ApiImplicitParams({
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String") ,
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType="String")
@ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType = "int"),
@ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query", required = true, dataType = "int"),
@ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType = "String")
})
public Result<PageData<SysUserDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params){
public Result<PageData<SysUserDTO>> page(@ApiIgnore @RequestParam Map<String, Object> params) {
PageData<SysUserDTO> page = sysUserService.page(params);
return new Result<PageData<SysUserDTO>>().ok(page);
@ -79,7 +78,7 @@ public class SysUserController {
@GetMapping("{id}")
@ApiOperation("信息")
public Result<SysUserDTO> get(@PathVariable("id") Long id){
public Result<SysUserDTO> get(@PathVariable("id") Long id) {
SysUserDTO data = sysUserService.get(id);
//用户角色列表
@ -91,7 +90,7 @@ public class SysUserController {
@GetMapping("info")
@ApiOperation("登录用户信息")
public Result<SysUserDTO> info(@ApiIgnore UserDetail user){
public Result<SysUserDTO> info(@ApiIgnore UserDetail user) {
SysUserDTO data = ConvertUtils.sourceToTarget(user, SysUserDTO.class);
return new Result<SysUserDTO>().ok(data);
}
@ -99,7 +98,7 @@ public class SysUserController {
@PostMapping
@ApiOperation("保存")
@LogOperation("Save User")
public Result save(@RequestBody SysUserDTO dto){
public Result save(@RequestBody SysUserDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
@ -111,7 +110,7 @@ public class SysUserController {
@PutMapping
@ApiOperation("修改")
@LogOperation("Update User")
public Result update(@RequestBody SysUserDTO dto){
public Result update(@RequestBody SysUserDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
@ -123,14 +122,14 @@ public class SysUserController {
@PutMapping("password")
@ApiOperation("修改密码")
@LogOperation("Password User")
public Result password(@RequestBody PasswordDTO dto){
public Result password(@RequestBody PasswordDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto);
UserDetail user = SecurityUser.getUser();
//原密码不正确
if(!PasswordUtils.matches(dto.getPassword(), user.getPassword())){
if (!PasswordUtils.matches(dto.getPassword(), user.getPassword())) {
return new Result().error(ErrorCode.PASSWORD_ERROR);
}
@ -142,7 +141,7 @@ public class SysUserController {
@DeleteMapping
@ApiOperation("删除")
@LogOperation("Delete User")
public Result delete(@RequestBody Long[] ids){
public Result delete(@RequestBody Long[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
@ -154,7 +153,7 @@ public class SysUserController {
@GetMapping("export")
@ApiOperation("导出")
@LogOperation("Export User")
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType="String")
@ApiImplicitParam(name = "username", value = "用户名", paramType = "query", dataType = "String")
public void export(@ApiIgnore @RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SysUserDTO> list = sysUserService.list(params);
@ -165,7 +164,7 @@ public class SysUserController {
* 根据用户名获取用户信息
*/
@GetMapping("getByUsername")
public Result<UserDetail> getByUsername(String username){
public Result<UserDetail> getByUsername(String username) {
SysUserDTO user = sysUserService.getByUsername(username);
UserDetail userDetail = ConvertUtils.sourceToTarget(user, UserDetail.class);
@ -179,7 +178,7 @@ public class SysUserController {
* 根据用户ID获取用户信息
*/
@GetMapping("getById")
public Result<UserDetail> getById(Long id){
public Result<UserDetail> getById(Long id) {
SysUserDTO user = sysUserService.get(id);
UserDetail userDetail = ConvertUtils.sourceToTarget(user, UserDetail.class);
@ -192,14 +191,14 @@ public class SysUserController {
/**
* 初始化用户数据
*/
private void initUserData(UserDetail userDetail){
if(userDetail == null){
private void initUserData(UserDetail userDetail) {
if (userDetail == null) {
return;
}
//用户机构类型键值
SysDeptDTO deptDto = sysDeptService.get(userDetail.getDeptId());
if(null != deptDto){
if (null != deptDto) {
userDetail.setTypeKey(deptDto.getTypeKey());
}
@ -212,4 +211,32 @@ public class SysUserController {
userDetail.setResourceList(resourceList);
}
/**
* 网格长注册时根据手机号查询网格长管理的所有网格
*
* @param mobile
* @return java.util.List<com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 16:18
*/
@GetMapping("/listGridForLeader/{mobile}")
public Result<GridLeaderRegisterDTO> listGridWhileLeaderRegister(@PathVariable("mobile") String mobile) {
return sysUserService.listGridWhileLeaderRegister(mobile);
}
/**
*
* 获取部门下的所有用户ID
*
* @params [deptId]
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.Long>>
* @author liuchuang
* @since 2019/10/29 17:31
*/
@GetMapping("ids/{deptId}")
public Result<List<Long>> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId) {
List<Long> data = sysUserService.listOfUserIdsByDeptId(deptId);
return new Result<List<Long>>().ok(data);
}
}

12
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java

@ -11,6 +11,7 @@ package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.SysSimpleDeptDTO;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.entity.SysDeptEntity;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import org.apache.ibatis.annotations.Mapper;
@ -76,10 +77,21 @@ public interface SysDeptDao extends BaseDao<SysDeptEntity> {
/**
* 通过街道ID获取项目可流转部门
*
* @Params: [deptId]
* @Return: java.util.List<com.elink.esua.epdc.dto.SysDeptDTO>
* @Author: liuchuang
* @Date: 2019/9/16 16:54
*/
List<SysDeptDTO> selectListOfItemCirculationDept(@Param("deptId") Long deptId);
/**
* 通过网格id集合获取网格长管理的所有网格
*
* @param gridIdList
* @return java.util.List<com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/24 15:27
*/
List<GridForLeaderRegisterDTO> selectListGridForLeader(@Param("gridIdList") List<String> gridIdList);
}

26
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java

@ -1,16 +1,16 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.entity.SysUserEntity;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.entity.SysUserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -39,4 +39,24 @@ public interface SysUserDao extends BaseDao<SysUserEntity> {
*/
int getCountByDeptId(Long deptId);
/**
* 网格长注册时根据手机号查询网格长管理的所有网格
*
* @param mobile
* @return java.util.List<com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 16:27
*/
List<String> selectListLeaderGridId(@Param("mobile") String mobile);
/**
*
* 获取部门下的所有用户ID
*
* @params [deptId]
* @return java.util.List<java.lang.Long>
* @author liuchuang
* @since 2019/10/29 16:18
*/
List<Long> selectListOfUserIdsByDeptId(@Param("deptId") Long deptId);
}

7
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/DeptMaCodeEntity.java

@ -23,8 +23,6 @@ import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 网格小程序码
*
@ -48,4 +46,9 @@ public class DeptMaCodeEntity extends BaseEpdcEntity {
*/
private String codeUrl;
/**
* 是否是网格长码0否 1是
*/
private String leaderFlag;
}

5
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysMenuEntity.java

@ -80,4 +80,9 @@ public class SysMenuEntity extends BaseEntity {
@TableField(exist = false)
private String parentName;
/**
* 菜单编码
*/
private String menuCode;
}

69
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysRoleEntity.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -24,38 +24,43 @@ import java.util.Date;
* @since 1.0.0
*/
@Data
@EqualsAndHashCode(callSuper=false)
@EqualsAndHashCode(callSuper = false)
@TableName("sys_role")
public class SysRoleEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 角色名称
*/
private String name;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0未删除 1删除
*/
@TableField(fill = FieldFill.INSERT)
private Integer delFlag;
/**
* 部门ID
*/
@TableField(fill = FieldFill.INSERT)
private Long deptId;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updater;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateDate;
private static final long serialVersionUID = -5938313610523405964L;
/**
* 角色名称
*/
private String name;
/**
* 角色类型键值(数据字典sysRoleType)
*/
private String typeKey;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0未删除 1删除
*/
@TableField(fill = FieldFill.INSERT)
private Integer delFlag;
/**
* 部门ID
*/
@TableField(fill = FieldFill.INSERT)
private Long deptId;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updater;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateDate;
}

9
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/DeptMaCodeService.java

@ -112,4 +112,13 @@ public interface DeptMaCodeService extends BaseService<DeptMaCodeEntity> {
* @date 2019/9/19 11:05
*/
Result createDeptMaCode(String gridId);
/**
* 创建网格长注册小程序码
*
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author work@yujt.net.cn
* @date 2019/10/22 09:59
*/
Result createGridLeaderMaCode();
}

15
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java

@ -11,6 +11,7 @@ package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.SysSimpleDeptDTO;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.entity.SysDeptEntity;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.dto.SysDeptDTO;
@ -57,7 +58,7 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
* 获取所有下属网格ID集合
*
* @param pid 部门ID
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < java.lang.Long>>
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < java.lang.Long>>
* @author yujintao
* @date 2019/9/5 13:45
*/
@ -87,7 +88,7 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
/***
* 通过编码得到党委编码
* @param partyCode
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.Map < java.lang.String , java.lang.String>>
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.Map < java.lang.String, java.lang.String>>
* @author qushutong
* @date 2019/9/20 19:57
*/
@ -101,4 +102,14 @@ public interface SysDeptService extends BaseService<SysDeptEntity> {
* @date 2019/9/21 14:14
*/
Integer getCodeCount(SysDeptDTO dto);
/**
* 通过网格id集合获取网格长管理的所有网格
*
* @param gridIdList
* @return java.util.List<com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/24 15:26
*/
List<GridForLeaderRegisterDTO> selectListGridForLeader(List<String> gridIdList);
}

32
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -10,6 +10,8 @@ package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.dto.SysUserDTO;
import com.elink.esua.epdc.entity.SysUserEntity;
@ -40,8 +42,9 @@ public interface SysUserService extends BaseService<SysUserEntity> {
/**
* 修改密码
* @param id 用户ID
* @param newPassword 新密码
*
* @param id 用户ID
* @param newPassword 新密码
*/
void updatePassword(Long id, String newPassword);
@ -49,4 +52,25 @@ public interface SysUserService extends BaseService<SysUserEntity> {
* 根据部门ID查询用户数
*/
int getCountByDeptId(Long deptId);
/**
* 网格长注册时根据手机号查询网格长管理的所有网格
*
* @param mobile
* @return java.util.List<com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 16:19
*/
Result<GridLeaderRegisterDTO> listGridWhileLeaderRegister(String mobile);
/**
*
* 获取部门下的所有用户ID
*
* @params [deptId]
* @return java.util.List<java.lang.Long>
* @author liuchuang
* @since 2019/10/29 16:14
*/
List<Long> listOfUserIdsByDeptId(Long deptId);
}

72
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/DeptMaCodeServiceImpl.java

@ -24,6 +24,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
@ -64,6 +66,26 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl<DeptMaCodeDao, DeptMa
@Override
public PageData<DeptMaCodeDTO> page(Map<String, Object> params) {
String leaderFlag = (String) params.get("leaderFlag");
if (StringUtils.isNotBlank(leaderFlag) && leaderFlag.equals(YesOrNoEnum.YES.value())) {
QueryWrapper<DeptMaCodeEntity> wrapper = new QueryWrapper<>();
wrapper.eq("LEADER_FLAG", leaderFlag);
IPage<DeptMaCodeEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
wrapper
);
PageData<DeptMaCodeDTO> pageData = getPageData(page, DeptMaCodeDTO.class);
List<DeptMaCodeDTO> pageDataList = pageData.getList();
for (DeptMaCodeDTO dto : pageDataList) {
dto.setStreet("全部街道通用");
dto.setCommunity("全部社区通用");
dto.setGrid("全部网格通用");
}
return pageData;
}
IPage<DeptMaCodeDTO> page = this.getPage(params);
List<DeptMaCodeDTO> dtoList = this.baseDao.selectListDeptMaCode(params);
@ -121,8 +143,7 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl<DeptMaCodeDao, DeptMa
if (CollUtil.isEmpty(gridIdList)) {
return new Result();
}
String scenePrefix = "gid=";
String page = "pages/register/register";
String page = "pages/index/index";
Result<String> ossResult;
File wxaCodeUnlimit;
@ -132,7 +153,7 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl<DeptMaCodeDao, DeptMa
WxMaQrcodeService qrcodeService = wxMaService.getQrcodeService();
for (Long gridId : gridIdList) {
try {
wxaCodeUnlimit = qrcodeService.createWxaCodeUnlimit(scenePrefix + gridId, page);
wxaCodeUnlimit = qrcodeService.createWxaCodeUnlimit(String.valueOf(gridId), page);
} catch (WxErrorException e) {
log.error("->initDeptMaCode::createWxaCodeUnlimit error::deptId={}", gridId);
continue;
@ -155,11 +176,44 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl<DeptMaCodeDao, DeptMa
@Override
public Result createDeptMaCode(String gridId) {
DeptMaCodeEntity entity = new DeptMaCodeEntity();
entity.setCodeUrl(this.createMaCode(gridId, "pages/index/index"));
entity.setGridId(Long.parseLong(gridId));
entity.setLeaderFlag(YesOrNoEnum.NO.value());
this.baseDao.insert(entity);
return new Result();
}
@Override
public Result createGridLeaderMaCode() {
QueryWrapper<DeptMaCodeEntity> wrapper = new QueryWrapper<>();
wrapper.eq("leader_flag", YesOrNoEnum.YES.value());
Integer selectCount = this.baseDao.selectCount(wrapper);
if (selectCount > NumConstant.ZERO) {
return new Result();
}
DeptMaCodeEntity entity = new DeptMaCodeEntity();
entity.setCodeUrl(this.createMaCode("gridLeader", "pages/index/index"));
entity.setLeaderFlag(YesOrNoEnum.YES.value());
this.baseDao.insert(entity);
return new Result();
}
/**
* 创建微信小程序码并上传到oss
*
* @param param 小程序码的参数
* @param pageUrl 小程序码的跳转链接
* @return java.lang.String 小程序码的下载抵制
* @author work@yujt.net.cn
* @date 2019/10/22 10:14
*/
private String createMaCode(String param, String pageUrl) {
File wxaCodeUnlimit;
try {
wxaCodeUnlimit = wxMaService.getQrcodeService().createWxaCodeUnlimit("gid=" + gridId, "pages/register/register");
wxaCodeUnlimit = wxMaService.getQrcodeService().createWxaCodeUnlimit(param, pageUrl);
} catch (WxErrorException e) {
return new Result().error("请求微信接口失败");
throw new RenException("请求微信接口失败");
}
UploadToOssDTO dto = new UploadToOssDTO();
@ -168,13 +222,9 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl<DeptMaCodeDao, DeptMa
Result<String> ossResult = ossFeignClient.uploadFile(dto);
if (null == ossResult || !ossResult.success() || null == ossResult.getData()) {
return new Result().error("小程序码上传失败");
throw new RenException("小程序码上传失败");
}
DeptMaCodeEntity entity = new DeptMaCodeEntity();
entity.setCodeUrl(ossResult.getData());
entity.setGridId(Long.parseLong(gridId));
this.baseDao.insert(entity);
return new Result();
return ossResult.getData();
}
/**

6
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java

@ -24,6 +24,7 @@ import com.elink.esua.epdc.dao.SysDeptDao;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.SysSimpleDeptDTO;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.entity.SysDeptEntity;
import com.elink.esua.epdc.service.SysDeptService;
import com.elink.esua.epdc.service.SysUserService;
@ -214,6 +215,11 @@ public class SysDeptServiceImpl extends BaseServiceImpl<SysDeptDao, SysDeptEntit
return new Result().ok(completeDept);
}
@Override
public List<GridForLeaderRegisterDTO> selectListGridForLeader(List<String> gridIdList) {
return this.baseDao.selectListGridForLeader(gridIdList);
}
@Override
public List<SysDeptDTO> listOfItemCirculationDept(Long deptId) {
return baseDao.selectListOfItemCirculationDept(deptId);

22
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -50,8 +50,8 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
@Override
public PageData<SysRoleDTO> page(Map<String, Object> params) {
IPage<SysRoleEntity> page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false),
getWrapper(params)
getPage(params, Constant.CREATE_DATE, false),
getWrapper(params)
);
return getPageData(page, SysRoleDTO.class);
@ -64,16 +64,18 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
return ConvertUtils.sourceToTarget(entityList, SysRoleDTO.class);
}
private QueryWrapper<SysRoleEntity> getWrapper(Map<String, Object> params){
String name = (String)params.get("name");
private QueryWrapper<SysRoleEntity> getWrapper(Map<String, Object> params) {
String name = (String) params.get("name");
String code = (String) params.get("code");
QueryWrapper<SysRoleEntity> wrapper = new QueryWrapper<>();
wrapper.eq(Constant.DEL_FLAG, DelFlagEnum.NORMAL.value());
wrapper.like(StringUtils.isNotBlank(name), "name", name);
wrapper.eq(Constant.DEL_FLAG, DelFlagEnum.NORMAL.value())
.eq(StringUtils.isNotBlank(code), "code", code)
.like(StringUtils.isNotBlank(name), "name", name);
//普通管理员,只能查询所属部门及子部门的数据
// 普通管理员,只能查询所属部门及子部门的数据
UserDetail user = SecurityUser.getUser();
if(user.getSuperAdmin() == SuperAdminEnum.NO.value()) {
if (user.getSuperAdmin() == SuperAdminEnum.NO.value()) {
List<Long> deptIdList = sysDeptService.getSubDeptIdList(user.getDeptId());
wrapper.in(deptIdList != null, "dept_id", deptIdList);
}

72
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java

@ -8,6 +8,7 @@
package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.enums.DelFlagEnum;
@ -16,14 +17,16 @@ import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum;
import com.elink.esua.epdc.commons.tools.exception.ErrorCode;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.password.PasswordUtils;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dao.SysUserDao;
import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.dto.SysUserDTO;
import com.elink.esua.epdc.entity.SysUserEntity;
import com.elink.esua.epdc.service.SysDeptService;
@ -99,14 +102,8 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SysUserDTO dto) {
// 保存用户之前,用户名判重
QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
wrapper.eq("username", dto.getUsername())
.eq(FieldConstant.DEL_FLAG, DelFlagEnum.NORMAL.value());
Integer selectCount = this.baseDao.selectCount(wrapper);
if (selectCount > NumConstant.ZERO) {
throw new RenException(ErrorCode.DB_RECORD_EXISTS);
}
this.verifyUsernameAndMobile(dto);
SysUserEntity entity = ConvertUtils.sourceToTarget(dto, SysUserEntity.class);
@ -125,6 +122,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SysUserDTO dto) {
this.verifyUsernameAndMobile(dto);
SysUserEntity entity = ConvertUtils.sourceToTarget(dto, SysUserEntity.class);
//密码加密
@ -142,6 +142,27 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
sysRoleUserService.saveOrUpdate(entity.getId(), dto.getRoleIdList());
}
/**
* 用户名与手机号查重
*
* @param dto 用户新增或修改时的提交数据
* @return void
* @author work@yujt.net.cn
* @date 2019/11/4 14:01
*/
private void verifyUsernameAndMobile(SysUserDTO dto) {
QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.DEL_FLAG, DelFlagEnum.NORMAL.value())
.ne(null != dto.getId(), "id", dto.getId())
.and(i -> i.eq(StringUtils.isNotBlank(dto.getMobile()), "mobile", dto.getMobile())
.or()
.eq("username", dto.getUsername()));
Integer selectCount = this.baseDao.selectCount(wrapper);
if (selectCount > NumConstant.ZERO) {
throw new RenException("保存失败,用户名或手机号重复");
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long[] ids) {
@ -163,4 +184,37 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
public int getCountByDeptId(Long deptId) {
return baseDao.getCountByDeptId(deptId);
}
@Override
public Result<GridLeaderRegisterDTO> listGridWhileLeaderRegister(String mobile) {
QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.MOBILE, mobile)
.eq(FieldConstant.DEL_FLAG, DelFlagEnum.NORMAL.value());
Integer selectCount = baseDao.selectCount(wrapper);
if (selectCount == NumConstant.ZERO) {
return new Result().error("匹配网格长手机号失败");
}
SysUserEntity sysUserEntity = baseDao.selectOne(wrapper);
SysUserDTO dto = ConvertUtils.sourceToTarget(sysUserEntity, SysUserDTO.class);
List<String> gridIdList = this.baseDao.selectListLeaderGridId(mobile);
if (CollUtil.isEmpty(gridIdList)) {
return new Result().error("匹配网格长数据权限失败");
}
List<GridForLeaderRegisterDTO> gridForLeaderList = sysDeptService.selectListGridForLeader(gridIdList);
GridLeaderRegisterDTO result = new GridLeaderRegisterDTO();
result.setSysUser(dto);
result.setLeaderGridList(gridForLeaderList);
return new Result<GridLeaderRegisterDTO>().ok(result);
}
@Override
public List<Long> listOfUserIdsByDeptId(Long deptId) {
return baseDao.selectListOfUserIdsByDeptId(deptId);
}
}

1
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/DeptMaCodeDao.xml

@ -11,6 +11,7 @@
dg.id AS GRID_ID,
ed.CREATED_TIME,
ed.ID,
ed.leader_flag,
ed.CODE_URL
FROM
sys_dept dg

24
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml

@ -88,4 +88,28 @@
AND type_key = 'district_dept'
</select>
<select id="selectListGridForLeader" resultType="com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO">
SELECT
dis.`name` district,
dis.id districtId,
str.`name` street,
str.id streetId,
com.`name` community,
com.id communityId,
gri.`name` grid,
gri.id gridId,
gri.create_date switchedTime
FROM
sys_dept gri
LEFT JOIN sys_dept com ON gri.pid = com.id
LEFT JOIN sys_dept str ON com.pid = str.id
LEFT JOIN sys_dept dis ON str.pid = dis.id
WHERE
gri.ID in
<foreach collection="gridIdList" item="gridId" open="(" separator="," close=")">#{gridId}</foreach>
AND gri.del_flag = '0'
AND dis.id IS NOT NULL
</select>
</mapper>

30
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml

@ -58,4 +58,34 @@
select count(*) from sys_user where dept_id = #{value} and del_flag = 0
</select>
<select id="selectListLeaderGridId" resultType="java.lang.String">
SELECT
d.id gridId
FROM
sys_user u
LEFT JOIN sys_role_user ru ON u.id = ru.user_id
LEFT JOIN sys_role r ON ru.role_id = r.id
LEFT JOIN sys_role_data_scope rds ON rds.role_id = r.id
LEFT JOIN sys_dept d ON d.id = rds.dept_id
WHERE
d.type_key = 'grid_party'
AND r.type_key = 'gridLeader'
AND u.mobile = #{mobile}
AND u.del_flag = 0
ORDER BY
d.create_date DESC
</select>
<select id="selectListOfUserIdsByDeptId" resultType="long">
SELECT
ID
FROM
sys_user
WHERE
del_flag = '0'
AND `status` = 1
AND dept_id = #{deptId}
</select>
</mapper>

5
esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/interceptor/DataFilterInterceptor.java

@ -73,7 +73,10 @@ public class DataFilterInterceptor extends AbstractSqlParserHandler implements I
// 拼接新SQL
String orderBy = "ORDER BY";
if (originalSql.indexOf(orderBy) > -1) {
String groupBy = "GROUP BY";
if (originalSql.indexOf(groupBy) > -1) {
originalSql = originalSql.replace(groupBy, scope.getSqlFilter() + groupBy);
} else if (originalSql.indexOf(orderBy) > -1) {
originalSql = originalSql.replace(orderBy, scope.getSqlFilter() + orderBy);
} else {
originalSql = originalSql + scope.getSqlFilter();

1
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java

@ -38,5 +38,6 @@ public interface NumConstant {
String TWO_STR = "2";
String THREE_STR = "3";
String FOUR_STR = "4";
String FIVE_STR = "5";
}

4
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java

@ -71,4 +71,8 @@ public interface ServiceConstant {
* DEMO服务
*/
String EPDC_DEMO_SERVER = "epdc-demo-server";
/**
* websocket服务
*/
String EPDC_WEBSOCKET_SERVER = "epdc-websocket-server";
}

27
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/IdentityNoUtils.java

@ -6,9 +6,7 @@ import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Hashtable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -48,11 +46,12 @@ public class IdentityNoUtils implements Serializable {
private final static int[] VERIFY_CODE_WEIGHT = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
/**
* 根据身份证号获取性别
* 0女1男
* 根据身份证号获取性别 0女1男
*
* @param IDCard
* @return
* @param IDCard 完整身份证号码
* @return java.lang.String
* @author work@yujt.net.cn
* @date 2019/9/20 14:26
*/
public static String getSex(String IDCard) {
if (StringUtils.isNotBlank(IDCard)) {
@ -76,8 +75,10 @@ public class IdentityNoUtils implements Serializable {
/**
* 根据身份证号获取年龄
*
* @param IDCard
* @return
* @param IDCard 完整身份证号码
* @return java.lang.Integer
* @author work@yujt.net.cn
* @date 2019/9/20 14:26
*/
public static Integer getAge(String IDCard) {
int age;
@ -114,10 +115,12 @@ public class IdentityNoUtils implements Serializable {
}
/**
* 获取出生日期 yyyy-MM-dd
* 根据身份证号获取出生日期
*
* @param IDCard
* @return
* @param IDCard 完整身份证号码
* @return java.lang.String
* @author work@yujt.net.cn
* @date 2019/9/20 14:26
*/
public static String getBirthday(String IDCard) {
String year = "";
@ -190,7 +193,7 @@ public class IdentityNoUtils implements Serializable {
/**
* 验证身份证号码验证通过返回null
*
* @param idStr
* @param idStr 完整身份证号码
* @return java.lang.String
* @author work@yujt.net.cn
* @date 2019/9/20 14:26

4
esua-epdc/epdc-gateway/pom.xml

@ -119,6 +119,7 @@
<gateway.routes.epdc-demo-server.uri>lb://epdc-demo-server</gateway.routes.epdc-demo-server.uri>
<gateway.routes.epdc-group-server.uri>http://127.0.0.1:9064</gateway.routes.epdc-group-server.uri>
<!--<gateway.routes.epdc-group-server.uri>lb://epdc-group-server</gateway.routes.epdc-group-server.uri>-->
<gateway.routes.epdc-websocket-server.uri>lb://epdc-websocket-server</gateway.routes.epdc-websocket-server.uri>
<!-- nacos -->
<nacos.register-enabled>false</nacos.register-enabled>
<nacos.server-addr>47.104.224.45:8848</nacos.server-addr>
@ -156,6 +157,7 @@
<gateway.routes.epdc-user-server.uri>lb://epdc-user-server</gateway.routes.epdc-user-server.uri>
<gateway.routes.epdc-demo-server.uri>lb://epdc-demo-server</gateway.routes.epdc-demo-server.uri>
<gateway.routes.epdc-group-server.uri>lb://epdc-group-server</gateway.routes.epdc-group-server.uri>
<gateway.routes.epdc-websocket-server.uri>lb://epdc-websocket-server</gateway.routes.epdc-websocket-server.uri>
<!-- nacos -->
<nacos.register-enabled>true</nacos.register-enabled>
@ -188,6 +190,8 @@
<gateway.routes.epdc-user-server.uri>lb://epdc-user-server</gateway.routes.epdc-user-server.uri>
<gateway.routes.epdc-demo-server.uri>lb://epdc-demo-server</gateway.routes.epdc-demo-server.uri>
<gateway.routes.epdc-group-server.uri>lb://epdc-group-server</gateway.routes.epdc-group-server.uri>
<gateway.routes.epdc-websocket-server.uri>lb://epdc-websocket-server</gateway.routes.epdc-websocket-server.uri>
<!-- redis配置 -->
<spring.redis.index>8</spring.redis.index>
<spring.redis.host>121.42.149.50</spring.redis.host>

16
esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java

@ -1,13 +1,15 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
package com.elink.esua.epdc.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
@ -29,8 +31,12 @@ import reactor.core.publisher.Mono;
*/
@Configuration
public class CorsConfig {
private static final String MAX_AGE = "18000L";
@Autowired
private ServerProperties serverProperties;
@Bean
public WebFilter corsFilter() {
return (ServerWebExchange ctx, WebFilterChain chain) -> {
@ -42,12 +48,14 @@ public class CorsConfig {
ServerHttpResponse response = ctx.getResponse();
HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
HttpHeaders headers = response.getHeaders();
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
if (!request.getURI().getPath().startsWith(serverProperties.getServlet().getContextPath().concat("/ws"))) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
}
headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders.getAccessControlRequestHeaders());
if (requestMethod != null) {
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
}
headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
if (request.getMethod() == HttpMethod.OPTIONS) {

76
esua-epdc/epdc-gateway/src/main/resources/application.yml

@ -1,5 +1,7 @@
server:
port: @server.port@
servlet:
context-path: /epdc-api
spring:
application:
@ -20,114 +22,123 @@ spring:
uri: @gateway.routes.epdc-auth-server.uri@
order: 1
predicates:
- Path=/auth/**
- Path=${server.servlet.context-path}/auth/**
filters:
- StripPrefix=0
- StripPrefix=1
#Admin服务
- id: epdc-admin-server
uri: @gateway.routes.epdc-admin-server.uri@
order: 2
predicates:
- Path=/sys/**
- Path=${server.servlet.context-path}/sys/**
filters:
- StripPrefix=0
- StripPrefix=1
#OSS服务
- id: epdc-oss-server
uri: @gateway.routes.epdc-oss-server.uri@
order: 3
predicates:
- Path=/oss/**
- Path=${server.servlet.context-path}/oss/**
filters:
- StripPrefix=0
- StripPrefix=1
#消息服务
- id: epdc-message-server
uri: @gateway.routes.epdc-message-server.uri@
order: 4
predicates:
- Path=/message/**
- Path=${server.servlet.context-path}/message/**
filters:
- StripPrefix=0
- StripPrefix=1
#工作流服务
- id: epdc-activiti-server
uri: @gateway.routes.epdc-activiti-server.uri@
order: 5
predicates:
- Path=/activiti/**
- Path=${server.servlet.context-path}/activiti/**
filters:
- StripPrefix=0
- StripPrefix=1
#定时任务服务
- id: epdc-job-server
uri: @gateway.routes.epdc-job-server.uri@
order: 6
predicates:
- Path=/job/**
- Path=${server.servlet.context-path}/job/**
filters:
- StripPrefix=0
- StripPrefix=1
#APP流服务
- id: epdc-api-server
uri: @gateway.routes.epdc-api-server.uri@
order: 7
predicates:
- Path=/api/**
- Path=${server.servlet.context-path}/api/**
filters:
- StripPrefix=0
- StripPrefix=1
- CpAuth=true
#爱心互助模块
- id: epdc-heart-server
uri: @gateway.routes.epdc-heart-server.uri@
order: 8
predicates:
- Path=/heart/**
- Path=${server.servlet.context-path}/heart/**
filters:
- StripPrefix=0
- StripPrefix=1
#友邻社群模块
- id: epdc-group-server
uri: @gateway.routes.epdc-group-server.uri@
order: 9
predicates:
- Path=/group/**
- Path=${server.servlet.context-path}/group/**
filters:
- StripPrefix=0
- StripPrefix=1
#新闻公告模块
- id: epdc-news-server
uri: @gateway.routes.epdc-news-server.uri@
order: 10
predicates:
- Path=/news/**
- Path=${server.servlet.context-path}/news/**
filters:
- StripPrefix=0
- StripPrefix=1
#党群议事模块
- id: epdc-events-server
uri: @gateway.routes.epdc-events-server.uri@
order: 11
predicates:
- Path=/events/**
- Path=${server.servlet.context-path}/events/**
filters:
- StripPrefix=0
- StripPrefix=1
#生活服务模块
- id: epdc-services-server
uri: @gateway.routes.epdc-services-server.uri@
order: 12
predicates:
- Path=/services/**
- Path=${server.servlet.context-path}/services/**
filters:
- StripPrefix=0
- StripPrefix=1
#APP用户模块
- id: epdc-user-server
uri: @gateway.routes.epdc-user-server.uri@
order: 14
order: 13
predicates:
- Path=/app-user/**
- Path=${server.servlet.context-path}/app-user/**
filters:
- StripPrefix=0
- StripPrefix=1
#DEMO服务
- id: epdc-demo-server
uri: @gateway.routes.epdc-demo-server.uri@
order: 14
predicates:
- Path=${server.servlet.context-path}/demo/**
filters:
- StripPrefix=1
#websocket服务
- id: epdc-websocket-server
uri: @gateway.routes.epdc-websocket-server.uri@
order: 15
predicates:
- Path=/demo/**
- Path=${server.servlet.context-path}/ws/**
filters:
- StripPrefix=0
- StripPrefix=1
nacos:
discovery:
server-addr: @nacos.server-addr@
@ -181,8 +192,8 @@ renren:
- /activiti/editor-app/**
- /message/sms/sendCode #发送验证码
- /heart/**
- /oss/file/download
- /ws/**
epdc:
@ -197,4 +208,7 @@ epdc:
- /api/message/sms/registerResult # 发送用户注册审核结果
- /api/events/issue/upload # 上传图片
- /api/app-user/user/mp/regist # 公众号用户注册
- /api/app-user/user/ma/regist # 小程序用户注册
- /api/app-user/user/ma/getToken # 小程序用户 登录
- /api/app-user/user/ma/regist # 小程序用户 注册
- /api/app-user/user/ma/gridLeaderRegister # 小程序用户 网格长注册
- /api/app-user/user/ma/v2/getToken # 小程序用户 注册或登录(版本v2)

71
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/ScanSwitchDTO.java

@ -0,0 +1,71 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
@Data
public class ScanSwitchDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 扫码开关 0关1开
*/
private String scanSwitch;
/**
* 删除标识 0未删除 1删除
*/
private String delFlag;
/**
* 创建者
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新者
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

36
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java

@ -0,0 +1,36 @@
package com.elink.esua.epdc.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
*
* 更新用户微信信息Form DTO
*
* @Authorliuchuang
* @Date2019/10/25 15:55
*/
@Data
public class EpdcAppUserMaInfoFormDTO implements Serializable {
private static final long serialVersionUID = 201029992792275120L;
/**
* 微信code
*/
@NotBlank(message = "微信code不能为空")
private String wxCode;
/**
* 用户信息
*/
@NotBlank(message = "用户信息不能为空")
private String encryptedData;
/**
* 加密算法的初始向量
*/
@NotBlank(message = "初始向量不能为空")
private String iv;
}

31
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserRegisterFormDTO.java

@ -0,0 +1,31 @@
package com.elink.esua.epdc.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
*
* 用户注册获取Token
*
* @Authorliuchuang
* @Date2019/10/24 16:25
*/
@Data
public class EpdcAppUserRegisterFormDTO implements Serializable {
private static final long serialVersionUID = -5518237917951689101L;
/**
* 微信code
*/
@NotBlank(message = "微信code不能为空")
private String wxCode;
/**
* 网格ID
*/
@NotNull(message = "网格ID不能为空")
private Long gridId;
}

54
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcCompleteUserInfoFormDTO.java

@ -0,0 +1,54 @@
package com.elink.esua.epdc.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 移动端完善用户信息
*
* @author work@yujt.net.cn
* @date 2019/10/26 10:56
*/
@Data
public class EpdcCompleteUserInfoFormDTO implements Serializable {
private static final long serialVersionUID = 7848126935041704928L;
@NotBlank(message = "党员标识不能为空")
private String partyFlag;
/**
* 身份证号码
*/
private String identityNo;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
private String mobile;
/**
* 短信验证码
*/
@NotBlank(message = "短信验证码不能为空")
private String smsCode;
/**
* 真实姓名
*/
@NotBlank(message = "真实姓名不能为空")
private String realName;
/**
* 所在道路
*/
@NotBlank(message = "所在道路不能为空")
private String road;
/**
* 小区名
*/
private String villageName;
/**
* 住处楼栋-单元-房间
*/
private String dwellingPlace;
}

2
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppAuthorizationDTO.java

@ -36,7 +36,7 @@ public class EpdcAppAuthorizationDTO implements Serializable {
*/
private String userId;
/**
* 用户状态[AppUserStateEnum]
* 用户状态[AppUserStatesEnum]
*/
private String userState;
/**

64
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcCompleteUserInfoDTO.java

@ -0,0 +1,64 @@
package com.elink.esua.epdc.dto.result;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author work@yujt.net.cn
* @date 1 1
*/
@Data
public class EpdcCompleteUserInfoDTO implements Serializable {
private static final long serialVersionUID = -7780650232814344762L;
/**
* 是否是党员 0否 1是
*/
@NotBlank(message = "党员标识不能为空")
private String partyFlag;
/**
* 身份证号码
*/
private String identityNo;
/**
* 手机号
*/
private String mobile;
/**
* 真实姓名
*/
private String realName;
/**
* 网格Id
*/
private Long gridId;
/**
* 所在道路
*/
private String road;
/**
* 小区名
*/
private String villageName;
/**
* 住处楼栋-单元-房间
*/
private String dwellingPlace;
/**
* 状态(0-已注册1-已完善信息待审核2-信息审核不通过3-信息审核通过)
*/
private String state;
/**
* 审核备注
*/
private String remark;
}

1
esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml

@ -80,7 +80,6 @@
<artifactId>feign-httpclient</artifactId>
<version>10.3.0</version>
</dependency>
</dependencies>
<build>

106
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java

@ -4,20 +4,19 @@ import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.annotation.LoginUser;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateAvatarFromDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateMobileFromDTO;
import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserMaTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.form.EpdcCheckRegisterFormDTO;
import com.elink.esua.epdc.dto.form.*;
import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO;
import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO;
import com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO;
import com.elink.esua.epdc.service.AppUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 用户模块
*
@ -47,13 +46,15 @@ public class ApiAppUserController {
}
/**
* 用户注册
* 小程序端用户注册已废弃新的注册接口使用
* <p>{@link com.elink.esua.epdc.controller.v2.ApiAppUserV2Controller#getMaV2Token(EpdcAppUserRegisterFormDTO)}</p>
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author yujintao
* @date 2019/9/9 10:41
*/
@Deprecated
@PostMapping("user/mp/regist")
public Result<EpdcAppRegisterCallbackDTO> mpUserRegister(@RequestBody EpdcUserRegistFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
@ -61,19 +62,35 @@ public class ApiAppUserController {
}
/**
* 小程序端用户注册
* 小程序端用户注册已废弃新的注册接口使用
* <p>{@link com.elink.esua.epdc.controller.v2.ApiAppUserV2Controller#getMaV2Token(EpdcAppUserRegisterFormDTO)}</p>
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author yujintao
* @date 2019/9/9 10:41
*/
@Deprecated
@PostMapping("user/ma/regist")
public Result<EpdcAppRegisterCallbackDTO> maUserRegister(@RequestBody EpdcUserRegistFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.maUserRegister(formDto);
}
/**
* 网格长小程序端注册
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 15:28
*/
@PostMapping("user/ma/gridLeaderRegister")
public Result<EpdcAppAuthorizationDTO> maGridLeaderRegister(@RequestBody EpdcGridLeaderRegisterSubmitFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.maGridLeaderRegister(formDto);
}
/**
* 用户查询注册结果
*
@ -82,6 +99,7 @@ public class ApiAppUserController {
* @author work@yujt.net.cn
* @date 2019/9/26 09:14
*/
@Deprecated
@GetMapping("user/checkRegister")
public Result<EpdcAppAuthorizationDTO> checkRegister(EpdcCheckRegisterFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
@ -110,6 +128,7 @@ public class ApiAppUserController {
* @author yujintao
* @date 2019/9/10 20:47
*/
@Deprecated
@GetMapping("user/ma/getToken")
public Result<EpdcAppAuthorizationDTO> getMaToken(EpdcAppUserMaTokenFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
@ -141,4 +160,73 @@ public class ApiAppUserController {
ValidatorUtils.validateEntity(fromDTO);
return appUserService.updateMobile(userDetail, fromDTO);
}
/**
* 用户小程序切换网格
*
* @param userDetail
* @param gridId
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author work@yujt.net.cn
* @date 2019/10/23 10:38
*/
@GetMapping("user/switchGrid/{gridId}")
public Result<EpdcAppAuthorizationDTO> userSwitchGrid(@LoginUser TokenDto userDetail, @PathVariable("gridId") String gridId) {
return appUserService.userSwitchGrid(userDetail, gridId);
}
/**
* 获取用户的所有网格列表
*
* @param userDetail
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO>>
* @author work@yujt.net.cn
* @date 2019/10/23 15:58
*/
@GetMapping("user/listGrid")
public Result<List<EpdcUserGridResultDTO>> listUserGrid(@LoginUser TokenDto userDetail) {
return appUserService.listUserGrid(userDetail.getUserId());
}
/**
* 更新用户微信信息
*
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @params [tokenDto, formDto]
* @author liuchuang
* @since 2019/10/28 9:58
*/
@PostMapping("user/ma/updateWxInfo")
public Result updateWxInfo(@LoginUser TokenDto tokenDto, @RequestBody EpdcAppUserMaInfoFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.updateWxInfo(tokenDto, formDto);
}
/**
* 用户完善个人信息-保存
*
* @param tokenDto
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 13:41
*/
@PostMapping("user/completeInfo")
public Result<EpdcAppAuthorizationDTO> completeUserInfo(@LoginUser TokenDto tokenDto, @RequestBody EpdcCompleteUserInfoFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.completeUserInfo(tokenDto, formDto);
}
/**
* 用于用户完善个人信息页面获取个人信息
*
* @param tokenDto 令牌
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 15:07
*/
@GetMapping("user/prepareComplete")
public Result<EpdcCompleteUserInfoDTO> prepareCompleteUserInfo(@LoginUser TokenDto tokenDto) {
return appUserService.prepareCompleteUserInfo(tokenDto);
}
}

96
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScanSwitchController.java

@ -0,0 +1,96 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.dto.ScanSwitchDTO;
import com.elink.esua.epdc.service.ScanSwitchService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
@RestController
@RequestMapping("ma")
public class ApiScanSwitchController {
@Autowired
private ScanSwitchService scanSwitchService;
@GetMapping("page")
public Result<PageData<ScanSwitchDTO>> page(@RequestParam Map<String, Object> params){
PageData<ScanSwitchDTO> page = scanSwitchService.page(params);
return new Result<PageData<ScanSwitchDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<ScanSwitchDTO> get(@PathVariable("id") String id){
ScanSwitchDTO data = scanSwitchService.get(id);
return new Result<ScanSwitchDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody ScanSwitchDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
scanSwitchService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody ScanSwitchDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
scanSwitchService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
scanSwitchService.delete(ids);
return new Result();
}
/***
* 前端接口开关
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.ScanSwitchDTO>
* @author qushutong
* @date 2019/10/10 11:58
*/
@GetMapping("scanSwitch")
public Result<Map<String,String>> get(){
Map<String,String> data = scanSwitchService.getOne();
return new Result<Map<String,String>>().ok(data);
}
}

42
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java

@ -0,0 +1,42 @@
package com.elink.esua.epdc.controller.v2;
import com.elink.esua.epdc.commons.api.version.ApiVersion;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.dto.form.EpdcAppUserRegisterFormDTO;
import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO;
import com.elink.esua.epdc.service.AppUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用户模块迭代接口 v2
*
* @author work@yujt.net.cn
* @date 2019/10/26 10:40
*/
@ApiVersion(2)
@RestController("ApiAppUserV2Controller")
@RequestMapping("app-user")
public class ApiAppUserV2Controller {
@Autowired
private AppUserService appUserService;
/**
* 用户注册获取Token
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 10:48
*/
@GetMapping("user/ma" + Constant.VERSION_CONTROL + "/getToken")
public Result<EpdcAppAuthorizationDTO> getMaV2Token(EpdcAppUserRegisterFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return appUserService.getMaV2Token(formDto);
}
}

33
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/dao/ScanSwitchDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.entity.ScanSwitchEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
@Mapper
public interface ScanSwitchDao extends BaseDao<ScanSwitchEntity> {
}

47
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/entity/ScanSwitchEntity.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("epdc_scan_switch")
public class ScanSwitchEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 扫码开关 0关1开
*/
private String scanSwitch;
}

13
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java

@ -3,11 +3,13 @@ package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.feign.fallback.AdminFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* 管理端接口
*
@ -28,4 +30,15 @@ public interface AdminFeignClient {
*/
@GetMapping("sys/dept/getCompleteDept/{gridId}")
Result<CompleteDeptDTO> getCompleteDept(@PathVariable("gridId") Long gridId);
/**
* 网格长注册时根据手机号查询网格长管理的所有网格
*
* @param mobile
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 16:54
*/
@GetMapping("sys/user/listGridForLeader/{mobile}")
Result<GridLeaderRegisterDTO> listGridWhileLeaderRegister(@PathVariable("mobile") String mobile);
}

114
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java

@ -3,12 +3,10 @@ package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.UserGridRelationDTO;
import com.elink.esua.epdc.dto.UserWxFormIdDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO;
import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
@ -17,6 +15,8 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* appuser端接口
*
@ -38,6 +38,17 @@ public interface UserFeignClient {
@GetMapping("app-user/epdc-app/user/getByOpenId/{openId}")
Result<UserDTO> getUserInfoByOpenId(@PathVariable("openId") String openId);
/**
* 查询用户基础信息
*
* @param userId
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UserDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 15:16
*/
@GetMapping("app-user/epdc-app/user/getById/{userId}")
Result<UserDTO> getUserInfoById(@PathVariable("userId") String userId);
/**
* 获取用户信息登录用
*
@ -69,7 +80,7 @@ public interface UserFeignClient {
* @date 2019/9/7 14:26
*/
@PostMapping(value = "app-user/epdc-app/user/regist", consumes = MediaType.APPLICATION_JSON_VALUE)
Result userRegist(@RequestBody UserDTO userDto);
Result userRegist(UserDTO userDto);
/**
* 验证用户提交的注册信息
@ -82,6 +93,28 @@ public interface UserFeignClient {
@GetMapping(value = "app-user/epdc-app/user/verify", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result verifyUserRegisterData(EpdcUserRegistFormDTO formDto);
/**
* 验证用户完善个人信息时提交的数据返回用户当前状态
*
* @param userDto
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author work@yujt.net.cn
* @date 2019/10/26 11:31
*/
@GetMapping(value = "app-user/epdc-app/user/verifyComplete", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result<String> verifyUserCompleteData(UserDTO userDto);
/**
* 用户完善个人信息-保存
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author work@yujt.net.cn
* @date 2019/10/26 13:41
*/
@PostMapping(value = "app-user/epdc-app/user/completeInfo", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result<UserDTO> completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto);
/**
* 移动端获取用户信息
*
@ -149,4 +182,73 @@ public interface UserFeignClient {
*/
@GetMapping("app-user/epdc-app/wxformid/getByOpenId/{openId}")
Result<UserWxFormIdDTO> getWxFormId(@PathVariable("openId") String openId);
/**
* 网格长注册
*
* @param registerDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UserDTO>
* @author work@yujt.net.cn
* @date 2019/10/23 09:44
*/
@PostMapping(value = "app-user/epdc-app/user/gridLeaderRegister", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<UserDTO> gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto);
/**
* 网格长小程序端切换网格
*
* @param switchGridDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UserGridRelationDTO>
* @author work@yujt.net.cn
* @date 2019/10/23 13:33
*/
@GetMapping(value = "app-user/epdc-app/usergrid/userSwitchGrid", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<UserGridRelationDTO> userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto);
/**
* 获取网格长管理的网格列表
*
* @param userId
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO>>
* @author work@yujt.net.cn
* @date 2019/10/23 13:34
*/
@GetMapping("app-user/epdc-app/usergrid/listUserGrid/{userId}")
Result<List<EpdcUserGridResultDTO>> listUserGrid(@PathVariable("userId") String userId);
/**
* 查询用户注册状态
*
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.epdc.result.EpdcCheckUserRegisterResultDTO>
* @params [fromDto]
* @author liuchuang
* @since 2019/10/25 10:50
*/
@GetMapping("app-user/epdc-app/user/checkUserRegister")
Result<EpdcUserRegisterInfoResultDTO> getUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto);
/**
* 用户注册或绑定网格
*
* @return com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO
* @params [formDto]
* @author liuchuang
* @since 2019/10/25 14:25
*/
@PostMapping("app-user/epdc-app/user/registerOrBindGrid")
Result<EpdcUserRegisterInfoResultDTO> registerOrBindGrid(EpdcUserRegisterBindGridFormDTO formDto);
/**
*
* 更新用户微信信息
*
* @params [userDTO]
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author liuchuang
* @since 2019/10/25 17:07
*/
@PostMapping("app-user/epdc-app/user/updateWxInfo")
Result updateWxInfo(UserDTO userDTO);
}

7
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java

@ -4,9 +4,11 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.feign.AdminFeignClient;
import org.springframework.stereotype.Component;
/**
* @author yujintao
* @email yujintao@elink-cn.com
@ -19,4 +21,9 @@ public class AdminFeignClientFallback implements AdminFeignClient {
public Result<CompleteDeptDTO> getCompleteDept(Long gridId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getCompleteDept", gridId);
}
@Override
public Result<GridLeaderRegisterDTO> listGridWhileLeaderRegister(String mobile) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listGridWhileLeaderRegister", mobile);
}
}

55
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java

@ -4,15 +4,15 @@ import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.UserGridRelationDTO;
import com.elink.esua.epdc.dto.UserWxFormIdDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcDeleteWxFormIdFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterAuditMsgResultDTO;
import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.*;
import com.elink.esua.epdc.feign.UserFeignClient;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author yujintao
* @email yujintao@elink-cn.com
@ -26,6 +26,11 @@ public class UserFeignClientFallback implements UserFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserInfoByOpenId", openId);
}
@Override
public Result<UserDTO> getUserInfoById(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserInfoById", userId);
}
@Override
public Result<UserDTO> getUserForLoginByOpenId(String openId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserForLoginByOpenId", openId);
@ -46,6 +51,16 @@ public class UserFeignClientFallback implements UserFeignClient {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "verifyUserRegisterData", formDto);
}
@Override
public Result<String> verifyUserCompleteData(UserDTO userDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "verifyUserCompleteData", userDto);
}
@Override
public Result<UserDTO> completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "completeUserInfo", formDto);
}
@Override
public Result<EpdcUserInfoResultDTO> getInfoById(String id) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getInfoById", id);
@ -75,4 +90,34 @@ public class UserFeignClientFallback implements UserFeignClient {
public Result<UserWxFormIdDTO> getWxFormId(String openId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getWxFormId", openId);
}
@Override
public Result<UserDTO> gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "gridLeaderRegister", registerDto);
}
@Override
public Result<UserGridRelationDTO> userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "userSwitchGrid", switchGridDto);
}
@Override
public Result<List<EpdcUserGridResultDTO>> listUserGrid(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "listUserGrid", userId);
}
@Override
public Result<EpdcUserRegisterInfoResultDTO> getUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserRegisterState", fromDto);
}
@Override
public Result<EpdcUserRegisterInfoResultDTO> registerOrBindGrid(EpdcUserRegisterBindGridFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "registerOrBindGrid", formDto);
}
@Override
public Result updateWxInfo(UserDTO userDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "updateWxInfo", userDTO);
}
}

5
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/resolver/LoginUserHandlerMethodArgumentResolver.java

@ -12,7 +12,8 @@ import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.common.token.util.CpUserDetailRedis;
import com.elink.esua.epdc.commons.tools.annotation.LoginUser;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.security.user.CpUserDetail;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
@ -45,7 +46,7 @@ public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgu
//获取用户ID
String userId = request.getHeader(Constant.APP_USER_KEY);
if (StringUtils.isEmpty(userId)) {
return null;
throw new RenException(ModuleErrorCode.TOKEN_INVALID);
}
TokenDto user = cpUserDetailRedis.get(userId);
return user;

88
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java

@ -2,16 +2,15 @@ package com.elink.esua.epdc.service;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateAvatarFromDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateMobileFromDTO;
import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserMaTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.form.EpdcCheckRegisterFormDTO;
import com.elink.esua.epdc.dto.form.*;
import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO;
import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO;
import com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO;
import java.util.List;
/**
* @author yujintao
@ -28,6 +27,7 @@ public interface AppUserService {
* @author yujintao
* @date 2019/9/7 09:54
*/
@Deprecated
Result<EpdcAppRegisterCallbackDTO> mpUserRegister(EpdcUserRegistFormDTO formDto);
/**
@ -92,6 +92,7 @@ public interface AppUserService {
* @author yujintao
* @date 2019/9/10 20:48
*/
@Deprecated
Result<EpdcAppRegisterCallbackDTO> maUserRegister(EpdcUserRegistFormDTO formDto);
/**
@ -113,4 +114,77 @@ public interface AppUserService {
* @date 2019/9/26 15:03
*/
Result saveUserWxFormId(EpdcAppSaveWxFormIdFormDTO formDto);
/**
* 网格长在移动端注册
*
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/22 15:30
*/
Result<EpdcAppAuthorizationDTO> maGridLeaderRegister(EpdcGridLeaderRegisterSubmitFormDTO formDto);
/**
* 用户小程序切换网格
*
* @param userDetail
* @param gridId
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/23 10:40
*/
Result<EpdcAppAuthorizationDTO> userSwitchGrid(TokenDto userDetail, String gridId);
/**
* 获取用户的所有网格列表
*
* @param userId
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO>>
* @author work@yujt.net.cn
* @date 2019/10/23 15:58
*/
Result<List<EpdcUserGridResultDTO>> listUserGrid(String userId);
/**
* 用户注册获取Token
*
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @params [formDto]
* @author liuchuang
* @since 2019/10/24 16:33
*/
Result<EpdcAppAuthorizationDTO> getMaV2Token(EpdcAppUserRegisterFormDTO formDto);
/**
*
* 更新用户微信信息
*
* @params [userDetail, formDto]
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author liuchuang
* @since 2019/10/25 16:26
*/
Result updateWxInfo(TokenDto userDetail, EpdcAppUserMaInfoFormDTO formDto);
/**
* 用户完善个人信息-保存
*
* @param tokenDto
* @param formDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 11:05
*/
Result<EpdcAppAuthorizationDTO> completeUserInfo(TokenDto tokenDto, EpdcCompleteUserInfoFormDTO formDto);
/**
* 用于用户完善个人信息页面获取个人信息
*
* @param tokenDto
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO>
* @author work@yujt.net.cn
* @date 2019/10/26 15:08
*/
Result<EpdcCompleteUserInfoDTO> prepareCompleteUserInfo(TokenDto tokenDto);
}

105
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ScanSwitchService.java

@ -0,0 +1,105 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.dto.ScanSwitchDTO;
import com.elink.esua.epdc.entity.ScanSwitchEntity;
import java.util.List;
import java.util.Map;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
public interface ScanSwitchService extends BaseService<ScanSwitchEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<ScanSwitchDTO>
* @author generator
* @date 2019-10-10
*/
PageData<ScanSwitchDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<ScanSwitchDTO>
* @author generator
* @date 2019-10-10
*/
List<ScanSwitchDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return ScanSwitchDTO
* @author generator
* @date 2019-10-10
*/
ScanSwitchDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2019-10-10
*/
void save(ScanSwitchDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2019-10-10
*/
void update(ScanSwitchDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2019-10-10
*/
void delete(String[] ids);
/***
* 前端获取开关
* @param
* @return com.elink.esua.epdc.dto.ScanSwitchDTO
* @author qushutong
* @date 2019/10/10 12:01
*/
Map<String,String> getOne();
}

527
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java

@ -2,31 +2,28 @@ package com.elink.esua.epdc.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.common.token.util.CpUserDetailRedis;
import com.elink.esua.epdc.common.token.util.TokenUtil;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import com.elink.esua.epdc.commons.tools.utils.*;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateAvatarFromDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserUpdateMobileFromDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.*;
import com.elink.esua.epdc.dto.epdc.EpdcCompleteAppUserDTO;
import com.elink.esua.epdc.dto.epdc.EpdcGridLeaderRegisterDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcGridLeaderRegisterFormDTO;
import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO;
import com.elink.esua.epdc.dto.epdc.form.*;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserInfoResultDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserMaTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppUserTokenFormDTO;
import com.elink.esua.epdc.dto.form.EpdcAppSaveWxFormIdFormDTO;
import com.elink.esua.epdc.dto.form.EpdcCheckRegisterFormDTO;
import com.elink.esua.epdc.dto.form.*;
import com.elink.esua.epdc.dto.result.EpdcAppRegisterCallbackDTO;
import com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO;
import com.elink.esua.epdc.enums.AppUserAuditStateEnum;
import com.elink.esua.epdc.enums.AppUserRegisterSourceEnum;
import com.elink.esua.epdc.enums.AppUserRegisterWayEnum;
import com.elink.esua.epdc.enums.AppUserStateEnum;
import com.elink.esua.epdc.dto.result.EpdcCompleteUserInfoDTO;
import com.elink.esua.epdc.enums.*;
import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.feign.UserFeignClient;
import com.elink.esua.epdc.jwt.JwtTokenProperties;
@ -44,6 +41,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
@ -73,9 +71,6 @@ public class AppUserServiceImpl implements AppUserService {
@Autowired
private UserFeignClient userFeignClient;
@Autowired
private TokenUtil tokenUtil;
@Autowired
private JwtTokenProperties jwtTokenProperties;
@ -86,6 +81,9 @@ public class AppUserServiceImpl implements AppUserService {
private RedisUtils redisUtils;
private static String USER_FACE = "https://epdc.elinkchina.com.cn/esua-epdc/static/default/default_user_face.png";
@Override
public Result<EpdcAppAuthorizationDTO> getMpToken(EpdcAppUserTokenFormDTO formDto) {
return this.getTokenByOpenId(this.getWxMpUser(formDto.getWxCode()).getOpenId());
@ -111,23 +109,6 @@ public class AppUserServiceImpl implements AppUserService {
return this.userFeignClient.saveWxFormId(saveFormId);
}
/**
* 根据unionId登录
*
* @param unionId
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @author work@yujt.net.cn
* @date 2019/9/19 19:16
*/
private Result<EpdcAppAuthorizationDTO> getTokenByUnionId(String unionId) {
// 查询当前微信是否已注册用户
Result<UserDTO> userInfoResult = userFeignClient.getUserForLoginByOpenId(unionId);
if (!userInfoResult.success()) {
return new Result().error(userInfoResult.getMsg());
}
return this.getTokenByUserDto(userInfoResult.getData());
}
/**
* 根据openId登录
*
@ -158,51 +139,21 @@ public class AppUserServiceImpl implements AppUserService {
EpdcAppAuthorizationDTO authorization = new EpdcAppAuthorizationDTO();
// 用户未注册
if (null == userDto) {
authorization.setUserState(AppUserStateEnum.UNREGISTERED.value());
authorization.setUserState(AppUserStatesEnum.STATE_NOT_REGISTERED.value());
return new Result().ok(authorization);
}
TokenDto tokenDto = ConvertUtils.sourceToTarget(userDto, TokenDto.class);
tokenDto.setUserId(userDto.getId());
String state = userDto.getState();
// 用户注册审核失败
if (AppUserAuditStateEnum.AUDIT_FAILURE.value().equals(state)) {
authorization.setUserState(AppUserStateEnum.AUDIT_FAILURE.value());
Result result = new Result().ok(authorization);
authorization = this.packageEpdcAppAuthorization(tokenDto, userDto.getGrid(), userDto.getState());
Result result = new Result().ok(authorization);
// 已注册,未完善信息
if (AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value().equals(state)) {
result.setMsg(userDto.getRemark());
return result;
}
// 用户提交注册、正在等待审核
else if (AppUserAuditStateEnum.UNDER_AUDIT.value().equals(state)) {
authorization.setUserState(AppUserStateEnum.UNDER_AUDIT.value());
return new Result().ok(authorization);
}
// 用户已注册且审核通过,正常登录系统
else if (AppUserAuditStateEnum.AUDIT_SUCCESS.value().equals(state)) {
String userId = userDto.getId();
TokenDto tokenInfo = tokenUtil.getTokenInfo(userId);
// 生成token
String token = jwtTokenUtils.generateToken(userId);
Long expire;
// 用户已登录过,且用户缓存信息未超时
if (null != tokenInfo) {
tokenUtil.delayToken(userId);
expire = tokenUtil.getExpire(userId);
} else {
expire = (long) jwtTokenProperties.getExpire();
}
TokenDto tokenDto = ConvertUtils.sourceToTarget(userDto, TokenDto.class);
tokenDto.setUserId(userId);
cpUserDetailRedis.set(tokenDto, expire);
// 暂用,部署生产环境时删除
redisUtils.set("epdc:sys:security:cpuser:token:" + userId, token);
authorization.setUserState(AppUserStateEnum.REGISTERED.value());
authorization.setToken(token);
authorization.setUserId(userId);
authorization.setExpire(expire);
authorization.setGrid(userDto.getGrid());
return new Result().ok(authorization);
} else {
return new Result().error("Login failed");
}
return result;
}
@Override
@ -219,6 +170,93 @@ public class AppUserServiceImpl implements AppUserService {
return getRegisterResult(userDto);
}
@Override
public Result<EpdcAppAuthorizationDTO> maGridLeaderRegister(EpdcGridLeaderRegisterSubmitFormDTO formDto) {
String mobile = formDto.getMobile();
// 校验手机号是否已被注册为小程序用户
EpdcUserRegistFormDTO verifyAppUser = new EpdcUserRegistFormDTO();
verifyAppUser.setMobile(mobile);
// 在获取信息时就进行校验,不消耗wxCode,用户可以重复提交
Result verifyUserRegisterData = userFeignClient.verifyUserRegisterData(verifyAppUser);
if (!verifyUserRegisterData.success()) {
return new Result().error(verifyUserRegisterData.getMsg());
}
// 校验手机验证码
this.checkSmsCode(mobile, formDto.getSmsCode());
Result<GridLeaderRegisterDTO> adminResult = adminFeignClient.listGridWhileLeaderRegister(mobile);
if (!adminResult.success()) {
return new Result().error(adminResult.getMsg());
}
GridLeaderRegisterDTO leaderRegisterDto = adminResult.getData();
// 组装用户注册信息
EpdcGridLeaderRegisterDTO gridLeaderRegister = this.packageGridLeaderWhileRegister(leaderRegisterDto.getSysUser(), formDto.getWxCode());
List<UserGridRelationDTO> userGridList = ConvertUtils.sourceToTarget(leaderRegisterDto.getLeaderGridList(), UserGridRelationDTO.class);
EpdcGridLeaderRegisterFormDTO registerDto = new EpdcGridLeaderRegisterFormDTO();
registerDto.setGridLeader(gridLeaderRegister);
registerDto.setUserGridList(userGridList);
Result<UserDTO> appUserResult = userFeignClient.gridLeaderRegister(registerDto);
if (!appUserResult.success()) {
return new Result().error(adminResult.getMsg());
}
UserDTO newAppUser = appUserResult.getData();
// 用户已注册且审核通过,正常登录系统
TokenDto tokenDto = ConvertUtils.sourceToTarget(newAppUser, TokenDto.class);
tokenDto.setUserId(newAppUser.getId());
EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, newAppUser.getGrid(), AppUserStatesEnum.STATE_REGISTERED.value());
return new Result().ok(authorization);
}
/**
* 组装网格长注册的用户信息
*
* @param sysUser 后台管理端管理员账号
* @param wxCode
* @return com.elink.esua.epdc.dto.UserDTO
* @author work@yujt.net.cn
* @date 2019/10/23 10:01
*/
private EpdcGridLeaderRegisterDTO packageGridLeaderWhileRegister(SysUserDTO sysUser, String wxCode) {
WxMaJscode2SessionResult wxMaUser = this.getWxMaUser(wxCode);
Date now = new Date();
String mobile = sysUser.getMobile();
EpdcGridLeaderRegisterDTO gridLeaderRegister = new EpdcGridLeaderRegisterDTO();
gridLeaderRegister.setFaceImg(USER_FACE);
gridLeaderRegister.setWxUnionId(wxMaUser.getUnionid());
gridLeaderRegister.setWxOpenId(wxMaUser.getOpenid());
gridLeaderRegister.setRegisterTime(now);
gridLeaderRegister.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value());
gridLeaderRegister.setRegisterSource(AppUserRegisterSourceEnum.MA.value());
gridLeaderRegister.setRegisterWay(AppUserRegisterWayEnum.WX.value());
gridLeaderRegister.setMobile(mobile);
gridLeaderRegister.setNickname("网格长-"
+ sysUser.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)
+ (sysUser.getGender() == NumConstant.ZERO ? "女士" : "先生"));
gridLeaderRegister.setSex(String.valueOf(sysUser.getGender()));
gridLeaderRegister.setRealName(sysUser.getRealName());
gridLeaderRegister.setEmail(sysUser.getEmail());
gridLeaderRegister.setPartyFlag(YesOrNoEnum.NO.value());
PhoneDto phoneDto = PhoneUtil.getPhoneDto(mobile);
if (phoneDto != null) {
gridLeaderRegister.setMobileProvince(phoneDto.getProvinceName());
gridLeaderRegister.setMobileCity(phoneDto.getCityName());
gridLeaderRegister.setMobileCarrier(phoneDto.getCarrier());
}
return gridLeaderRegister;
}
@Override
public Result<EpdcAppRegisterCallbackDTO> mpUserRegister(EpdcUserRegistFormDTO formDto) {
@ -242,6 +280,7 @@ public class AppUserServiceImpl implements AppUserService {
* @author work@yujt.net.cn
* @date 2019/9/25 17:26
*/
@Deprecated
private Result<EpdcAppRegisterCallbackDTO> getRegisterResult(UserDTO userDto) {
Result result = userFeignClient.userRegist(userDto);
EpdcAppRegisterCallbackDTO dto = new EpdcAppRegisterCallbackDTO();
@ -258,6 +297,7 @@ public class AppUserServiceImpl implements AppUserService {
* @author work@yujt.net.cn
* @date 2019/9/20 14:40
*/
@Deprecated
private void verifyUserRegisterData(EpdcUserRegistFormDTO formDto) {
// 校验身份证号码格式
String verification = IdentityNoUtils.IdentityNoVerification(formDto.getIdentityNo());
@ -299,6 +339,7 @@ public class AppUserServiceImpl implements AppUserService {
* @author yujintao
* @date 2019/9/10 21:09
*/
@Deprecated
private UserDTO packageUserDto(EpdcUserRegistFormDTO formDto, WxMpUser wxMpUser, WxMaJscode2SessionResult wxMaUser) {
String unionId = null;
String openId = null;
@ -383,7 +424,7 @@ public class AppUserServiceImpl implements AppUserService {
user.setPartyFlag(YesOrNoEnum.NO.value());
user.setRegisterWay(AppUserRegisterWayEnum.WX.value());
user.setRegisterSource(AppUserRegisterSourceEnum.WP.value());
user.setFaceImg("https://epdc.elinkchina.com.cn/esua-epdc/static/default/default_user_face.png");
user.setFaceImg(USER_FACE);
return user;
}
@ -464,4 +505,338 @@ public class AppUserServiceImpl implements AppUserService {
}
return userFeignClient.updateMobileOrAvatar(userDto);
}
@Override
public Result<EpdcAppAuthorizationDTO> userSwitchGrid(TokenDto userDetail, String gridId) {
String userId = userDetail.getUserId();
EpdcLeaderSwitchGridFormDTO switchGrid = new EpdcLeaderSwitchGridFormDTO();
switchGrid.setAppUserId(userId);
switchGrid.setGridId(gridId);
// 更新用户-网格关系表,更新将要切换的网格的 SWITCHED_TIME 字段
Result<UserGridRelationDTO> appUserResult = userFeignClient.userSwitchGrid(switchGrid);
if (!appUserResult.success()) {
return new Result().error(appUserResult.getMsg());
}
UserGridRelationDTO userGridRelation = appUserResult.getData();
userDetail.setGridId(Long.parseLong(gridId));
EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(userDetail, userGridRelation.getGrid(), AppUserStatesEnum.STATE_REGISTERED.value());
return new Result().ok(authorization);
}
@Override
public Result<List<EpdcUserGridResultDTO>> listUserGrid(String userId) {
return userFeignClient.listUserGrid(userId);
}
/**
* 组装成功登录的数据
*
* @param tokenDto 缓存的用户数据
* @param grid 网格名称
* @param userState AppUserStatesEnum
* @return com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO
* @author work@yujt.net.cn
* @date 2019/10/23 13:57
*/
private EpdcAppAuthorizationDTO packageEpdcAppAuthorization(TokenDto tokenDto, String grid, String userState) {
String userId = tokenDto.getUserId();
// 生成token
String token = jwtTokenUtils.generateToken(userId);
int expire = jwtTokenProperties.getExpire();
cpUserDetailRedis.set(tokenDto, expire);
EpdcAppAuthorizationDTO authorization = new EpdcAppAuthorizationDTO();
authorization.setUserState(userState);
authorization.setToken(token);
authorization.setUserId(userId);
authorization.setExpire((long) expire);
authorization.setGrid(grid);
// 暂用,部署生产环境时删除
redisUtils.set("epdc:sys:security:cpuser:token:" + userId, token);
return authorization;
}
@Override
public Result<EpdcAppAuthorizationDTO> getMaV2Token(EpdcAppUserRegisterFormDTO formDto) {
WxMaJscode2SessionResult wxMaResult = this.getWxMaUser(formDto.getWxCode());
String openId = wxMaResult.getOpenid();
String unionId = wxMaResult.getUnionid();
// 查询当前微信注册状态
EpdcCheckUserRegisterFromDTO checkFromDto = new EpdcCheckUserRegisterFromDTO();
checkFromDto.setOpenId(openId);
checkFromDto.setGridId(formDto.getGridId());
Result<EpdcUserRegisterInfoResultDTO> userResult = userFeignClient.getUserRegisterState(checkFromDto);
if (!userResult.success()) {
return new Result<EpdcAppAuthorizationDTO>().error(userResult.getMsg());
}
// IP地址
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
return this.dealWithUserRegisterState(userResult.getData(), openId, unionId, IpUtils.getIpAddr(request));
}
/**
* 针对不同用户注册状态进行处理
*
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.result.EpdcAppAuthorizationDTO>
* @params [checkUserResult, unionId]
* @author liuchuang
* @since 2019/10/25 12:49
*/
private Result<EpdcAppAuthorizationDTO> dealWithUserRegisterState(EpdcUserRegisterInfoResultDTO userResult, String openId, String unionId, String ipAddress) {
EpdcUserRegisterBindGridFormDTO registerBindGridFormDto = new EpdcUserRegisterBindGridFormDTO();
// 用户注册状态 0-未注册未绑定网格,1-已注册未绑定当前网格,2-已注册已绑定当前网格
Integer registerState = userResult.getRegisterState();
UserDTO registeredUser = userResult.getUserDTO();
Long gridId = userResult.getGridId();
// 未注册
if (NumConstant.ZERO == registerState) {
// 组装用户注册信息
registerBindGridFormDto.setRegisterState(NumConstant.ZERO);
registeredUser = this.packageUserInfo(openId, unionId, ipAddress);
registerBindGridFormDto.setUserDTO(registeredUser);
}
// 已注册未绑定当前网格
else if (NumConstant.ONE == registerState) {
registerBindGridFormDto.setRegisterState(NumConstant.ONE);
registerBindGridFormDto.setUserDTO(registeredUser);
}
// 用户注册或绑定网格
if (NumConstant.TWO != registerState) {
// 组装用户关联网格信息
registerBindGridFormDto.setGridRelationDTO(this.packageUserGridRelationInfo(gridId));
// 用户并绑定网格
Result<EpdcUserRegisterInfoResultDTO> registerBindGridResultDto = userFeignClient.registerOrBindGrid(registerBindGridFormDto);
if (!registerBindGridResultDto.success()) {
return new Result<EpdcAppAuthorizationDTO>().error(registerBindGridResultDto.getMsg());
}
userResult = registerBindGridResultDto.getData();
registeredUser = userResult.getUserDTO();
}
// 已注册已绑定当前网格
TokenDto tokenDto = ConvertUtils.sourceToTarget(registeredUser, TokenDto.class);
tokenDto.setUserId(registeredUser.getId());
tokenDto.setGridId(gridId);
EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, userResult.getGrid(), registeredUser.getState());
return new Result<EpdcAppAuthorizationDTO>().ok(authorization);
}
/**
* 组装用户注册信息
*
* @return com.elink.esua.epdc.dto.UserDTO
* @params [openId, unionId, completeDept]
* @author liuchuang
* @since 2019/10/24 18:16
*/
private UserDTO packageUserInfo(String openId, String unionId, String ipAddress) {
UserDTO userDto = new UserDTO();
userDto.setWxOpenId(openId);
userDto.setWxUnionId(unionId);
userDto.setNickname("用户" + RandomUtil.getNewRandomCode(4));
userDto.setFaceImg(USER_FACE);
userDto.setState(AppUserStatesEnum.STATE_REGISTERED.value());
userDto.setPartyFlag(YesOrNoEnum.NO.value());
userDto.setLastLoginIp(ipAddress);
Date now = new Date();
userDto.setRegisterTime(now);
userDto.setLastLoginTime(now);
userDto.setRegisterWay(AppUserRegisterWayEnum.WX.value());
userDto.setRegisterSource(AppUserRegisterSourceEnum.MA.value());
return userDto;
}
@Override
public Result<EpdcAppAuthorizationDTO> completeUserInfo(TokenDto tokenDto, EpdcCompleteUserInfoFormDTO infoDto) {
UserDTO userDto = ConvertUtils.sourceToTarget(infoDto, UserDTO.class);
userDto.setId(tokenDto.getUserId());
// 党员提交,验证身份证号
if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) {
String identityNo = userDto.getIdentityNo();
if (StringUtils.isBlank(identityNo)) {
return new Result().error("身份证号不能为空");
} else {
String verification = IdentityNoUtils.IdentityNoVerification(identityNo);
if (StringUtils.isNotBlank(verification)) {
return new Result().error(verification);
}
}
}
// 验证手机号
this.checkSmsCode(userDto.getMobile(), infoDto.getSmsCode());
// 验证用户提交的信息
Result<String> verifyResult = userFeignClient.verifyUserCompleteData(userDto);
if (!verifyResult.success()) {
return new Result().error(verifyResult.getMsg());
}
String userState = verifyResult.getData();
UserGridRelationDTO userGrid = this.packageUserGridRelationInfo(tokenDto.getGridId());
EpdcCompleteAppUserDTO completeAppUserDto = ConvertUtils.sourceToTarget(userDto, EpdcCompleteAppUserDTO.class);
completeAppUserDto = this.packageUserCompleteInfo(completeAppUserDto, userState);
// 组装对象,准备保存用户信息
EpdcAppUserCompleteInfoFormDTO dto = new EpdcAppUserCompleteInfoFormDTO();
dto.setCompleteAppUser(completeAppUserDto);
dto.setUserGridRelation(userGrid);
Result<UserDTO> completeResult = userFeignClient.completeUserInfo(dto);
if (!completeResult.success()) {
return new Result().error(completeResult.getMsg());
}
UserDTO user = completeResult.getData();
tokenDto.setRealName(user.getRealName());
tokenDto.setNickname(user.getNickname());
tokenDto.setMobile(user.getMobile());
tokenDto.setPartyFlag(user.getPartyFlag());
EpdcAppAuthorizationDTO authorizationDto = this.packageEpdcAppAuthorization(tokenDto, userGrid.getGrid(), userDto.getState());
return new Result().ok(authorizationDto);
}
@Override
public Result<EpdcCompleteUserInfoDTO> prepareCompleteUserInfo(TokenDto tokenDto) {
Result<UserDTO> result = userFeignClient.getUserInfoById(tokenDto.getUserId());
if (result.success() && null != result.getData()) {
EpdcCompleteUserInfoDTO dto = ConvertUtils.sourceToTarget(result.getData(), EpdcCompleteUserInfoDTO.class);
dto.setGridId(tokenDto.getGridId());
return new Result<EpdcCompleteUserInfoDTO>().ok(dto);
}
return new Result().error("获取用户信息失败");
}
/**
* 组装个人完善信息对象
*
* @param dto 已知数据
* @param userState 用户当前状态用户状态不为0时表明用户操作为二次修改
* @return com.elink.esua.epdc.dto.epdc.EpdcCompleteAppUserDTO
* @author work@yujt.net.cn
* @date 2019/10/29 17:54
*/
private EpdcCompleteAppUserDTO packageUserCompleteInfo(EpdcCompleteAppUserDTO dto, String userState) {
String road = dto.getRoad();
String villageName = dto.getVillageName();
String dwellingPlace = dto.getDwellingPlace();
String identityNo = dto.getIdentityNo();
if (YesOrNoEnum.YES.value().equals(dto.getPartyFlag())) {
dto.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value());
dto.setSex(IdentityNoUtils.getSex(identityNo));
dto.setNickname(
road.concat("-").concat(dto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE))
.concat(NumConstant.ZERO_STR.equals(dto.getSex()) ? "女士" : "先生"));
dto.setBirthday(DateUtils.parse(IdentityNoUtils.getBirthday(identityNo), DateUtils.DATE_PATTERN));
} else {
dto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value());
}
// 用户不是第一次完善信息,保持现在的用户状态不变
if (!AppUserStatesEnum.STATE_REGISTERED.value().equals(userState)) {
dto.setState(userState);
}
String address = road
.concat(StringUtils.isNotBlank(villageName) ? villageName : "")
.concat(StringUtils.isNotBlank(dwellingPlace) ? dwellingPlace : "");
dto.setAddress(address);
PhoneDto phoneDto = PhoneUtil.getPhoneDto(dto.getMobile());
if (phoneDto != null) {
dto.setMobileCarrier(phoneDto.getCarrier());
dto.setMobileCity(phoneDto.getCityName());
dto.setMobileProvince(phoneDto.getProvinceName());
}
return dto;
}
/**
* 组装用户关联网格信息
*
* @return com.elink.esua.epdc.dto.UserGridRelationDTO
* @params [gridId]
* @author liuchuang
* @since 2019/10/25 13:53
*/
private UserGridRelationDTO packageUserGridRelationInfo(Long gridId) {
// 获取网格机构详情
Result<CompleteDeptDTO> adminDeptResult = adminFeignClient.getCompleteDept(gridId);
if (!adminDeptResult.success() || null == adminDeptResult.getData()) {
throw new RenException("查询网格信息失败");
}
CompleteDeptDTO completeDept = adminDeptResult.getData();
UserGridRelationDTO gridRelation = ConvertUtils.sourceToTarget(completeDept, UserGridRelationDTO.class);
gridRelation.setSwitchedTime(new Date());
gridRelation.setLeaderFlag(YesOrNoEnum.NO.value());
return gridRelation;
}
@Override
public Result updateWxInfo(TokenDto userDetail, EpdcAppUserMaInfoFormDTO formDto) {
if (null == userDetail || StringUtils.isEmpty(userDetail.getUserId())) {
return new Result().error("获取用户信息失败");
}
String sessionKey = this.getUserSessionKey(formDto.getWxCode());
WxMaUserInfo wxMaUserInfo = wxMaService.getUserService().getUserInfo(sessionKey, formDto.getEncryptedData(), formDto.getIv());
UserDTO userDTO = new UserDTO();
userDTO.setId(userDetail.getUserId());
userDTO.setNickname(wxMaUserInfo.getNickName());
userDTO.setFaceImg(wxMaUserInfo.getAvatarUrl());
userDTO.setSex(wxMaUserInfo.getGender());
Result updateWxInfoResult = userFeignClient.updateWxInfo(userDTO);
if (!updateWxInfoResult.success()) {
return new Result().error("更新用户信息失败");
}
// 更新用户缓存信息
TokenDto tokenDto = ConvertUtils.sourceToTarget(userDTO, TokenDto.class);
tokenDto.setUserId(userDetail.getUserId());
tokenDto.setGridId(userDetail.getGridId());
tokenDto.setMobile(userDetail.getMobile());
tokenDto.setPartyFlag(userDetail.getPartyFlag());
tokenDto.setRealName(userDetail.getRealName());
long expire = cpUserDetailRedis.getExpire(userDetail.getUserId());
cpUserDetailRedis.logout(userDetail.getUserId());
cpUserDetailRedis.set(tokenDto, expire);
return new Result();
}
/**
* 根据微信code获取session_key
*
* @return java.lang.String
* @params [code]
* @author liuchuang
* @since 2019/10/25 16:31
*/
private String getUserSessionKey(String code) {
try {
WxMaJscode2SessionResult wxMaJscode2SessionResult = wxMaService.jsCode2SessionInfo(code);
if (wxMaJscode2SessionResult != null) {
return wxMaJscode2SessionResult.getSessionKey();
}
} catch (WxErrorException e) {
e.printStackTrace();
throw new RenException(e.getError().getErrorMsg());
}
return null;
}
}

1
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java

@ -74,6 +74,7 @@ public class IssueServiceImpl implements IssueService {
formDto.setNickName(userDetail.getNickname());
formDto.setUserFace(userDetail.getFaceImg());
formDto.setIsPartyMember(userDetail.getPartyFlag());
formDto.setMobile(userDetail.getMobile());
return issueFeignClient.submitEvent(formDto);
}

113
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ScanSwitchServiceImpl.java

@ -0,0 +1,113 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.dao.ScanSwitchDao;
import com.elink.esua.epdc.dto.ScanSwitchDTO;
import com.elink.esua.epdc.entity.ScanSwitchEntity;
import com.elink.esua.epdc.service.ScanSwitchService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 扫码开关
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-10-10
*/
@Service
public class ScanSwitchServiceImpl extends BaseServiceImpl<ScanSwitchDao, ScanSwitchEntity> implements ScanSwitchService {
@Autowired
@Override
public PageData<ScanSwitchDTO> page(Map<String, Object> params) {
IPage<ScanSwitchEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, ScanSwitchDTO.class);
}
@Override
public List<ScanSwitchDTO> list(Map<String, Object> params) {
List<ScanSwitchEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, ScanSwitchDTO.class);
}
private QueryWrapper<ScanSwitchEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<ScanSwitchEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public ScanSwitchDTO get(String id) {
ScanSwitchEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, ScanSwitchDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ScanSwitchDTO dto) {
ScanSwitchEntity entity = ConvertUtils.sourceToTarget(dto, ScanSwitchEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ScanSwitchDTO dto) {
ScanSwitchEntity entity = ConvertUtils.sourceToTarget(dto, ScanSwitchEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public Map<String,String> getOne() {
QueryWrapper<ScanSwitchEntity> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("updated_time");
ScanSwitchEntity scanSwitchEntity = baseDao.selectOne(wrapper);
Map<String,String> map=new HashMap<>();
map.put("switch",scanSwitchEntity.getScanSwitch());
return map;
}
}

17
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/mapper/ScanSwitchDao.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.dao.ScanSwitchDao">
<resultMap type="com.elink.esua.epdc.entity.ScanSwitchEntity" id="scanSwitchMap">
<result property="id" column="id"/>
<result property="scan_switch" column="scanSwitch"/>
<result property="delFlag" column="del_flag"/>
<result property="creatdeBy" column="creatde_by"/>
<result property="createDate" column="create_time"/>
<result property="updatedBy" column="updater_by"/>
<result property="updateDate" column="update_time"/>
</resultMap>
</mapper>

5
esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml

@ -28,6 +28,11 @@
<artifactId>epdc-news-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-websocket-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

32
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java

@ -0,0 +1,32 @@
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.io.Serializable;
/**
*
* 菜单通知DTO
*
* @Authorliuchuang
* @Date2019/10/29 17:03
*/
@Data
public class MenuNoticeDTO implements Serializable {
private static final long serialVersionUID = -9183650682608160248L;
/**
* 菜单编码
*/
private String menuCode;
/**
* 通知部门
*/
private Long deptId;
/**
* 消息数量
*/
private Integer num;
}

17
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcEventsDetailDTO.java

@ -3,6 +3,7 @@ package com.elink.esua.epdc.dto.events;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -22,6 +23,10 @@ public class EpdcEventsDetailDTO implements Serializable {
* 用户昵称
*/
private String nickName;
/**
* 手机号
*/
private String mobile;
/**
* 事件内容
*/
@ -38,4 +43,16 @@ public class EpdcEventsDetailDTO implements Serializable {
* 事件地址
*/
private String address;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属网格详细信息
*/
private String ownGrid;
}

17
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcRejectEventDetailDTO.java

@ -3,6 +3,7 @@ package com.elink.esua.epdc.dto.events;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -30,6 +31,10 @@ public class EpdcRejectEventDetailDTO implements Serializable {
* 提交时间
*/
private Date createdTime;
/**
* 手机号
*/
private String mobile;
/**
* 事件地址
*/
@ -46,4 +51,16 @@ public class EpdcRejectEventDetailDTO implements Serializable {
* 事件图片
*/
private List<String> images;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属网格详细信息
*/
private String ownGrid;
}

25
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueContentDetailDTO.java

@ -4,6 +4,7 @@ import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -23,6 +24,10 @@ public class IssueContentDetailDTO implements Serializable {
* 发布时间
*/
private Date distributeTime;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
@ -47,4 +52,24 @@ public class IssueContentDetailDTO implements Serializable {
* 工作反馈或处理进度
*/
private List<IssueJobFeedbackDTO> feedbackDTOList;
/**
* 事件地址
*/
private String address;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属网格详细信息
*/
private String ownGrid;
/**
* 所属类别
*/
private String categoryName;
}

15
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueDTO.java

@ -21,7 +21,6 @@ import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import java.math.BigDecimal;
/**
* 议题表 议题表
@ -59,6 +58,11 @@ public class IssueDTO implements Serializable {
*/
private String userFace;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
@ -117,12 +121,12 @@ public class IssueDTO implements Serializable {
/**
* 议题位置纬度
*/
private BigDecimal issueLatitude;
private Double issueLatitude;
/**
* 议题位置经度
*/
private BigDecimal issueLongitude;
private Double issueLongitude;
/**
* 议题状态 0-审核通过2-已关闭4-已转项目
@ -159,11 +163,6 @@ public class IssueDTO implements Serializable {
*/
private Date updatedTime;
/**
* 手机号
*/
private String mobile;
/**
* 社群ID
*/

5
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueJobFeedbackDTO.java

@ -25,4 +25,9 @@ public class IssueJobFeedbackDTO implements Serializable {
* 意见
*/
private String advice;
/**
* 处理部门
*/
private String handlerDept;
}

25
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java

@ -3,6 +3,7 @@ package com.elink.esua.epdc.dto.issue;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -27,6 +28,10 @@ public class IssueWaitHandleDetailDTO implements Serializable {
* 发布时间
*/
private Date distributeTime;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
@ -39,4 +44,24 @@ public class IssueWaitHandleDetailDTO implements Serializable {
* 工作反馈
*/
List<IssueJobFeedbackDTO> jobFeedbackDTOS;
/**
* 事件地址
*/
private String address;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属网格详细信息
*/
private String ownGrid;
/**
* 类别
*/
private String categoryName;
}

1
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssuesAndEventsOfMineFormDTO.java

@ -22,6 +22,5 @@ public class IssuesAndEventsOfMineFormDTO implements Serializable {
/**
* 网格ID
*/
@NotNull(message = "用户网格ID不能为空")
private Long gridId;
}

68
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDTO.java

@ -19,6 +19,7 @@ package com.elink.esua.epdc.dto.item;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import java.math.BigDecimal;
@ -37,142 +38,142 @@ public class ItemDTO implements Serializable {
/**
* ID
*/
private String id;
private String id;
/**
* 事件ID
*/
private String eventId;
private String eventId;
/**
* 议题ID
*/
private String issueId;
private String issueId;
/**
* 用户ID
*/
private String userId;
private String userId;
/**
* 用户昵称
*/
private String nickName;
private String nickName;
/**
* 用户头像
*/
private String userFace;
private String userFace;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
private String issueContent;
private String issueContent;
/**
*
*/
private String area;
private String area;
/**
* 区ID
*/
private Long areaId;
private Long areaId;
/**
* 街道
*/
private String street;
private String street;
/**
* 街道ID
*/
private Long streetId;
private Long streetId;
/**
* 社区
*/
private String community;
private String community;
/**
* 社区ID
*/
private Long communityId;
private Long communityId;
/**
* 网格
*/
private String grid;
private String grid;
/**
* 网格ID
*/
private Long gridId;
private Long gridId;
/**
* 议题位置地址
*/
private String issueAddress;
private String issueAddress;
/**
* 议题分类ID
*/
private String issueCategoryId;
private String issueCategoryId;
/**
* 议题位置纬度
*/
private BigDecimal issusLatitude;
private Double issusLatitude;
/**
* 议题位置经度
*/
private BigDecimal issueLongitude;
private Double issueLongitude;
/**
* 评价打分
*/
private Integer issueScore;
private Integer issueScore;
/**
* 项目状态 0-待网格长处理5-待社区处理10-待街道党建办处理15-待街道处理20-待区直部门党建办处理25-待区直部门处理30-处理35-关闭40-结束议题
*/
private Integer itemState;
private Integer itemState;
/**
* 删除标识 0未删除1已删除
*/
private String delFlag;
private String delFlag;
/**
* 乐观锁
*/
private Integer revision;
private Integer revision;
/**
* 创建人
*/
private String createdBy;
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
private Date updatedTime;
/**
* 手机号
*/
private String mobile;
/**
* 社群ID
@ -184,4 +185,9 @@ public class ItemDTO implements Serializable {
*/
private String groupName;
/**
* 最后一次处理时间
*/
private Date lastHandleTime;
}

10
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDeptDTO.java

@ -48,6 +48,11 @@ public class ItemDeptDTO implements Serializable {
*/
private Long deptId;
/**
* 部门名称
*/
private String deptName;
/**
* 操作人部门ID
*/
@ -83,4 +88,9 @@ public class ItemDeptDTO implements Serializable {
*/
private String delFlag;
/**
* 项目处理表ID
*/
private String itemHandleId;
}

5
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemFormDTO.java

@ -52,4 +52,9 @@ public class ItemFormDTO implements Serializable {
* 用户ID
*/
private String userId;
/**
* 排序方式 0-创建时间倒叙1-最后一次处理时间倒叙
*/
private String orderType;
}

1
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemOfMineFormDTO.java

@ -19,7 +19,6 @@ public class ItemOfMineFormDTO implements Serializable {
/**
* 用户所属网格ID
*/
@NotNull(message = "用户网格ID不能为空")
private Long deptId;
/**
* 用户ID

21
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemContentForPCEndResultDTO.java

@ -3,6 +3,7 @@ package com.elink.esua.epdc.dto.item.result;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -23,6 +24,10 @@ public class ItemContentForPCEndResultDTO implements Serializable {
* 发布人
*/
private String nickName;
/**
* 手机号
*/
private String mobile;
/**
* 发布时间
*/
@ -63,4 +68,20 @@ public class ItemContentForPCEndResultDTO implements Serializable {
* 部门满意度评价
*/
private List<ItemDeptEvaluateResultDTO> deptEvaluateResultDTOS;
/**
* 地址
*/
private String issueAddress;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属类别
*/
private String categoryName;
}

31
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemDetailForPCEndResultDTO.java

@ -4,6 +4,7 @@ import com.elink.esua.epdc.dto.item.ItemEvaluateDeptDTO;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -28,6 +29,10 @@ public class ItemDetailForPCEndResultDTO implements Serializable {
* 发布时间
*/
private Date distributeTime;
/**
* 手机号
*/
private String mobile;
/**
* 项目内容
*/
@ -56,4 +61,30 @@ public class ItemDetailForPCEndResultDTO implements Serializable {
* 满意度评价部门
*/
private List<ItemEvaluateDeptDTO> evaluateDeptDTOS;
/**
* 纬度
*/
private Double issueLatitude;
/**
* 经度
*/
private Double issueLongitude;
/**
* 所属类别
*/
private String categoryName;
/**
* 支持数
*/
private Integer approveNum;
/**
* 反对数
*/
private Integer opposeNum;
/**
* 评论数
*/
private Integer commentNum;
}

7
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleProgressResultDTO.java

@ -1,8 +1,10 @@
package com.elink.esua.epdc.dto.item.result;
import com.elink.esua.epdc.dto.item.ItemDeptDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 项目处理进展列表DTO
@ -29,4 +31,9 @@ public class ItemHandleProgressResultDTO implements Serializable {
* 操作人部门
*/
private String handlerDept;
/**
* 吹哨部门
*/
private List<ItemDeptDTO> itemDeptDTOS;
}

4
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java

@ -12,8 +12,8 @@ import java.util.List;
*/
public enum ItemHandleCategoryEnum {
HANDLE_I_HANDLE(0, "处理"),
HANDLE_CIRCULATION_ASSISTANCE(1, "流转协助"),
HANDLE_I_HANDLE(0, "回应"),
HANDLE_CIRCULATION_ASSISTANCE(1, "吹哨"),
HANDLE_CLOSE(5, "关闭"),
HANDLE_CLOSING_CASE(10, "结案");

49
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java

@ -1,11 +1,19 @@
package com.elink.esua.epdc.modules.async;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.EventMenuNoticeDto;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.feign.NewsFeignClient;
import com.elink.esua.epdc.modules.feign.WebsocketFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
/**
* 新闻通知消息模块 线程任务
*
@ -18,6 +26,12 @@ public class NewsTask {
@Autowired
private NewsFeignClient newsFeignClient;
@Autowired
private WebsocketFeignClient websocketFeignClient;
@Autowired
private AdminFeignClient adminFeignClient;
/**
* 给用户发送消息
*
@ -30,4 +44,39 @@ public class NewsTask {
public void insertUserInformation(EpdcInformationFormDTO informationDto) {
newsFeignClient.saveInformation(informationDto);
}
/**
*
* 党群议事-菜单消息
*
* @params [dto]
* @return void
* @author liuchuang
* @since 2019/10/29 15:26
*/
@Async
public void eventMenuNotice(MenuNoticeDTO menuNoticeDTO, Long userId) {
List<Long> userIds = null;
if (null != userId) {
userIds = Collections.singletonList(userId);
} else {
// 获取部门下所有用户ID
Result<List<Long>> listResult = adminFeignClient.getUserIdsByDeptIds(menuNoticeDTO.getDeptId());
if (listResult.success()) {
userIds = listResult.getData();
}
}
if (null != userIds) {
EventMenuNoticeDto eventMenuNoticeDto = new EventMenuNoticeDto();
eventMenuNoticeDto.setMenuCode(menuNoticeDTO.getMenuCode());
eventMenuNoticeDto.setNum(menuNoticeDTO.getNum());
for (Long user:
userIds) {
eventMenuNoticeDto.setUserId(user.toString());
// 给用户发送菜单消息
websocketFeignClient.eventMenuNotice(eventMenuNoticeDto);
}
}
}
}

15
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java

@ -145,4 +145,19 @@ public class EpdcEventsController {
return new Result<EpdcRejectEventDetailDTO>().ok(data);
}
/**
*
* 初始化党群议事菜单消息
*
* @params []
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author liuchuang
* @since 2019/10/30 13:43
*/
@GetMapping("initMenuNotice")
public Result initMenuNotice() {
epdcEventsService.initMenuNotice();
return new Result();
}
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java

@ -113,4 +113,15 @@ public interface EpdcEventsDao extends BaseDao<EpdcEventsEntity> {
* @Date: 2019/9/17 17:44
*/
EventAppDetailResultDTO selectOneOfEventDetail(String eventId);
/**
*
* 根据网格ID 状态获取事件数量
*
* @params [deptId, state]
* @return int
* @author liuchuang
* @since 2019/10/30 12:36
*/
int selectCountOfDeptNotice(Long deptId, int state);
}

13
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/EpdcEventsEntity.java

@ -58,6 +58,10 @@ public class EpdcEventsEntity extends BaseEpdcEntity {
* 党员标识 01
*/
private String isPartyMember;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
@ -105,11 +109,11 @@ public class EpdcEventsEntity extends BaseEpdcEntity {
/**
* 议题位置纬度
*/
private double issueLatitude;
private Double issueLatitude;
/**
* 议题位置经度
*/
private double issueLongitude;
private Double issueLongitude;
/**
* 事件状态 0-待审核2-驳回4-审核通过
*/
@ -135,11 +139,6 @@ public class EpdcEventsEntity extends BaseEpdcEntity {
*/
private Integer browseNum;
/**
* 手机号
*/
private String mobile;
/**
* 社群ID
*/

22
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java

@ -156,4 +156,26 @@ public interface EpdcEventsService extends BaseService<EpdcEventsEntity> {
* @Date: 2019/9/17 17:36
*/
Result<EventAppDetailResultDTO> getEventDetail(String eventId);
/**
*
* 菜单消息-议题待回应
*
* @params [deptId]
* @return void
* @author liuchuang
* @since 2019/10/30 17:23
*/
void sendMenuNoticeOfEventRespond(Long deptId, Long userId);
/**
*
* 初始化党群议事菜单消息
*
* @params []
* @return void
* @author liuchuang
* @since 2019/10/30 13:43
*/
void initMenuNotice();
}

77
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java

@ -20,8 +20,8 @@ package com.elink.esua.epdc.modules.events.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
@ -30,35 +30,35 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constant.ImageConstant;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.*;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventsReviewFormDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
import com.elink.esua.epdc.dto.log.DeptRespondLogDTO;
import com.elink.esua.epdc.enums.DeptRespondTypeEnum;
import com.elink.esua.epdc.modules.async.DeptRespondTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.events.dao.EpdcEventsDao;
import com.elink.esua.epdc.modules.events.entity.EpdcEventsEntity;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
import com.elink.esua.epdc.modules.events.service.ImgService;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity;
import com.elink.esua.epdc.modules.issue.service.IssueHandleService;
import com.elink.esua.epdc.modules.issue.service.IssueService;
import com.elink.esua.epdc.modules.log.entity.DeptRespondLogEntity;
import com.elink.esua.epdc.modules.log.service.DeptRespondLogService;
import com.elink.esua.epdc.modules.item.service.ItemService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 事件表 事件表
@ -84,6 +84,12 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
@Autowired
private DeptRespondTask deptRespondTask;
@Autowired
private AdminFeignClient adminFeignClient;
@Autowired
private ItemService itemService;
@Override
public PageData<EpdcEventsDTO> listOfPendingReviewEvents(Map<String, Object> params) {
IPage<EpdcEventsDTO> page = getPage(params);
@ -129,6 +135,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
// 保存图片
imgService.saveImages(dto.getImages(), entity.getId(), ImageConstant.TYPE_IMAGE_BIZ_EVENTS);
// 发送菜单消息-议题待回应
this.sendMenuNoticeOfEventRespond(entity.getGridId(), null);
}
@Override
@ -189,11 +198,17 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
informationFormDTO.setBusinessId(issueEntity.getId());
informationFormDTO.setTitle(EventsNoticeConstant.NOTICE_EVENT_PASSED);
informationFormDTO.setBusinessType(EventsNoticeConstant.NOTICE_BUSINESS_TYPE_ISSUE);
// 发送菜单消息-议题待处理
issueService.sendIssueHandleMenuNotice(issueEntity.getGridId(), null);
}
//插入部门响应记录
deptRespondTask.saveEventDeptRespond(dto);
// 发送消息
newsTask.insertUserInformation(informationFormDTO);
// 发送菜单消息-议题待回应
this.sendMenuNoticeOfEventRespond(eventsEntity.getGridId(), null);
return new Result();
}
@ -237,6 +252,32 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
return new Result<EventAppDetailResultDTO>().ok(data);
}
@Override
public void initMenuNotice() {
Long deptId = SecurityUser.getDeptId();
Long userId = SecurityUser.getUserId();
// 获取部门信息
Result<SysDeptDTO> dtoResult = adminFeignClient.getSysDeptInfo(deptId);
if (dtoResult.success() && null != dtoResult.getData()) {
// 网格用户
if (OrganizationTypeConstant.ORG_TYPE_GRID_PARTY.equals(dtoResult.getData().getTypeKey())) {
// 议题-待回应
this.sendMenuNoticeOfEventRespond(deptId, userId);
// 议题-待处理
issueService.sendIssueHandleMenuNotice(deptId, userId);
// 项目-待处理项目-网格用户
itemService.sendItemHandleMenuNotice(deptId, userId);
} else if (OrganizationTypeConstant.ORG_TYPE_DISTRICT_PARTY.equals(dtoResult.getData().getTypeKey())
|| OrganizationTypeConstant.ORG_TYPE_DISTRICT_DEPT.equals(dtoResult.getData().getTypeKey())
|| OrganizationTypeConstant.ORG_TYPE_STREET_PARTY.equals(dtoResult.getData().getTypeKey())
|| OrganizationTypeConstant.ORG_TYPE_STREET_DEPT.equals(dtoResult.getData().getTypeKey())
|| OrganizationTypeConstant.ORG_TYPE_COMMUNITY_PARTY.equals(dtoResult.getData().getTypeKey())){
// 项目-待处理项目-吹哨部门用户
itemService.sendWhistlingDeptItemHandleMenuNotice(Collections.singletonList(deptId), userId);
}
}
}
/**
* 初始化议题
*
@ -252,6 +293,7 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
issueEntity.setNickName(entity.getNickName());
issueEntity.setUserFace(entity.getUserFace());
issueEntity.setIsPartyMember(entity.getIsPartyMember());
issueEntity.setMobile(entity.getMobile());
issueEntity.setIssueContent(entity.getEventContent());
issueEntity.setDistributeTime(entity.getCreatedTime());
issueEntity.setArea(entity.getArea());
@ -298,4 +340,25 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
public void updateOpposeNumSubtract(String eventId) {
baseDao.updateOpposeNumSubtract(eventId);
}
/**
*
* 菜单消息-议题待回应
*
* @params [deptId]
* @return void
* @author liuchuang
* @since 2019/10/29 18:05
*/
@Override
public void sendMenuNoticeOfEventRespond(Long deptId, Long userId) {
// 获取部门待审核事件数量
int num = baseDao.selectCountOfDeptNotice(deptId, EventIssueItemState.EVENT_PENDING_REVIEW);
MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO();
menuNoticeDTO.setDeptId(deptId);
menuNoticeDTO.setNum(num);
menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_EVENT_RESPOND);
// 发送菜单消息通知
newsTask.eventMenuNotice(menuNoticeDTO, userId);
}
}

24
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java

@ -41,4 +41,28 @@ public interface AdminFeignClient {
*/
@GetMapping("sys/dept/getCirculationDept/{deptId}")
Result<List<SysDeptDTO>> listOfItemCirculationDept(@PathVariable("deptId") Long deptId);
/**
*
* 获取部门下的所有用户ID
*
* @params [deptIds]
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.Long>>
* @author liuchuang
* @since 2019/10/29 16:22
*/
@GetMapping("sys/user/ids/{deptId}")
Result<List<Long>> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId);
/**
*
* 获取部门信息
*
* @params [id]
* @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.SysDeptDTO>
* @author liuchuang
* @since 2019/10/30 14:11
*/
@GetMapping("sys/dept/{id}")
Result<SysDeptDTO> getSysDeptInfo(@PathVariable("id") Long id);
}

30
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java

@ -0,0 +1,30 @@
package com.elink.esua.epdc.modules.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.dto.EventMenuNoticeDto;
import com.elink.esua.epdc.modules.feign.fallback.WebsocketFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
*
* websocket模块调用
*
* @Authorliuchuang
* @Date2019/10/29 15:02
*/
@FeignClient(name = ServiceConstant.EPDC_WEBSOCKET_SERVER, fallback = WebsocketFeignClientFallback.class)
public interface WebsocketFeignClient {
/**
*
* 党群议事模块-消息通知
*
* @params [message]
* @return java.lang.String
* @author liuchuang
* @since 2019/10/29 15:17
*/
@GetMapping("ws/eventMenu/notice")
String eventMenuNotice(EventMenuNoticeDto dto);
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java

@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
@ -27,4 +28,14 @@ public class AdminFeignClientFallback implements AdminFeignClient {
public Result<List<SysDeptDTO>> listOfItemCirculationDept(Long deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listOfItemCirculationDept", deptId);
}
@Override
public Result<List<Long>> getUserIdsByDeptIds(Long deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserIdsByDeptIds", deptId);
}
@Override
public Result<SysDeptDTO> getSysDeptInfo(@PathVariable("id") Long id) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getSysDeptInfo", id);
}
}

20
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java

@ -0,0 +1,20 @@
package com.elink.esua.epdc.modules.feign.fallback;
import com.alibaba.fastjson.JSON;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.dto.EventMenuNoticeDto;
import com.elink.esua.epdc.modules.feign.WebsocketFeignClient;
import org.springframework.stereotype.Component;
/**
* @Authorliuchuang
* @Date2019/10/29 15:02
*/
@Component
public class WebsocketFeignClientFallback implements WebsocketFeignClient {
@Override
public String eventMenuNotice(EventMenuNoticeDto dto) {
return "系统内部异常:{name="+ServiceConstant.EPDC_WEBSOCKET_SERVER+",method=eventMenuNotice,formDto="+ JSON.toJSONString(dto)+"}";
}
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java

@ -130,4 +130,15 @@ public interface IssueDao extends BaseDao<IssueEntity> {
*/
List<IssuesAndEventsOfMineResultDTO> selectListOfIssuesAndEventsOfMine(IssuesAndEventsOfMineFormDTO formDTO);
/**
*
* 根据网格ID 状态获取议题
*
* @params [deptId, state]
* @return int
* @author liuchuang
* @since 2019/10/30 12:42
*/
int selectCountOfDeptNotice(Long deptId, int state);
}

14
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/entity/IssueEntity.java

@ -64,6 +64,11 @@ public class IssueEntity extends BaseEpdcEntity {
*/
private String isPartyMember;
/**
* 手机号
*/
private String mobile;
/**
* 议题内容
*/
@ -127,23 +132,18 @@ public class IssueEntity extends BaseEpdcEntity {
/**
* 议题位置纬度
*/
private double issueLatitude;
private Double issueLatitude;
/**
* 议题位置经度
*/
private double issueLongitude;
private Double issueLongitude;
/**
* 议题状态 0-审核通过2-已关闭4-已转项目
*/
private Integer issueState;
/**
* 手机号
*/
private String mobile;
/**
* 社群ID
*/

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java

@ -201,4 +201,15 @@ public interface IssueService extends BaseService<IssueEntity> {
* @Date: 2019/9/17 17:36
*/
Result<EventAppDetailResultDTO> getEventDetail(String eventId);
/**
*
* 发送菜单消息-议题待处理
*
* @params [deptId]
* @return void
* @author liuchuang
* @since 2019/10/29 18:13
*/
void sendIssueHandleMenuNotice(Long deptId, Long userId);
}

21
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java

@ -31,6 +31,8 @@ import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
@ -210,12 +212,17 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
itemDeptService.insert(itemDeptEntity);
informationFormDTO.setBusinessId(itemEntity.getId());
// 发送菜单消息-待处理项目
itemService.sendItemHandleMenuNotice(itemEntity.getGridId(), null);
}
}
//插入绩效部门响应日志表
deptRespondTask.saveIssueDeptRespond(dto);
// 发送消息
newsTask.insertUserInformation(informationFormDTO);
// 发送菜单消息-议题待处理
this.sendIssueHandleMenuNotice(entity.getGridId(), null);
return new Result();
}
@ -310,6 +317,18 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return epdcEventsService.getEventDetail(eventId);
}
@Override
public void sendIssueHandleMenuNotice(Long deptId, Long userId) {
// 获取部门待处理事件数量
int num = baseDao.selectCountOfDeptNotice(deptId, EventIssueItemState.ISSUE_REVIEW_PASS);
MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO();
menuNoticeDTO.setDeptId(deptId);
menuNoticeDTO.setNum(num);
menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ISSUE_HANDLE);
// 发送菜单消息通知
newsTask.eventMenuNotice(menuNoticeDTO, userId);
}
/**
* 初始化项目
*
@ -326,6 +345,7 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
itemEntity.setNickName(issueEntity.getNickName());
itemEntity.setUserFace(issueEntity.getUserFace());
itemEntity.setIsPartyMember(issueEntity.getIsPartyMember());
itemEntity.setMobile(issueEntity.getMobile());
itemEntity.setItemContent(issueEntity.getIssueContent());
itemEntity.setDistributeTime(issueEntity.getDistributeTime());
itemEntity.setArea(issueEntity.getArea());
@ -343,6 +363,7 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
itemEntity.setGroupId(issueEntity.getGroupId());
itemEntity.setGroupName(issueEntity.getGroupName());
itemEntity.setItemState(EventIssueItemState.ITEM_HANDLING);
itemEntity.setLastHandleTime(new Date());
return itemEntity;
}

33
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java

@ -58,6 +58,17 @@ public interface ItemDao extends BaseDao<ItemEntity> {
*/
List<ItemResultDTO> selectListOfItems(ItemFormDTO formDto, int[] states);
/**
*
* 移动端-我的项目列表
*
* @params [formDto, states]
* @return java.util.List<com.elink.esua.epdc.dto.item.result.ItemResultDTO>
* @author liuchuang
* @since 2019/10/31 16:28
*/
List<ItemResultDTO> selectListItemsOfMine(ItemFormDTO formDto, int[] states);
/**
* 移动端-项目详情
* @Params: [formDto]
@ -112,4 +123,26 @@ public interface ItemDao extends BaseDao<ItemEntity> {
*/
ItemContentForPCEndResultDTO selectItemContentForPCEnd(String itemId);
/**
*
* 项目处理发送菜单消息
*
* @params [deptId, state]
* @return int
* @author liuchuang
* @since 2019/10/30 13:28
*/
int selectCountOfItemDeptNotice(Long deptId, int state);
/**
*
* 根据吹哨部门ID统计吹哨部门待处理项目数量
*
* @params [deptId]
* @return int
* @author liuchuang
* @since 2019/10/30 13:33
*/
int selectCountOfItemWhistlingDeptNotice(Long deptId);
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java

@ -42,6 +42,17 @@ public interface ItemDeptDao extends BaseDao<ItemDeptEntity> {
*/
List<ItemDeptDTO> getItemDept(String itemId, Long createdDeptId);
/**
*
* 获取已流转部门ID
*
* @params [itemId, createdDeptId]
* @return java.util.List<java.lang.Long>
* @author liuchuang
* @since 2019/10/30 11:17
*/
List<Long> selectListWhistlingDeptIds(String itemId, Long createdDeptId);
/**
* 删除已流转协助部门
* @Params: [createdDeptId]

4
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDeptEntity.java

@ -53,5 +53,9 @@ public class ItemDeptEntity extends BaseEpdcEntity {
* 操作人部门ID
*/
private Long createdDeptId;
/**
* 项目处理表ID
*/
private String itemHandleId;
}

104
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java

@ -33,143 +33,147 @@ import java.util.Date;
* @since v1.0.0 2019-09-04
*/
@Data
@EqualsAndHashCode(callSuper=false)
@EqualsAndHashCode(callSuper = false)
@TableName("epdc_item")
public class ItemEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 1L;
/**
* 事件ID
*/
private String eventId;
private String eventId;
/**
* 议题ID
*/
private String issueId;
private String issueId;
/**
* 用户ID
*/
private String userId;
private String userId;
/**
* 用户昵称
*/
private String nickName;
private String nickName;
/**
* 用户头像
*/
private String userFace;
private String userFace;
/**
* 党员标识 01
*/
private String isPartyMember;
/**
* 党员标识 01
*/
private String isPartyMember;
/**
* 议题内容
*/
private String itemContent;
private String itemContent;
/**
* 发布时间
*/
private Date distributeTime;
/**
* 发布时间
*/
private Date distributeTime;
/**
*
*/
private String area;
private String area;
/**
* 区ID
*/
private Long areaId;
private Long areaId;
/**
* 街道
*/
private String street;
private String street;
/**
* 街道ID
*/
private Long streetId;
private Long streetId;
/**
* 社区
*/
private String community;
private String community;
/**
* 社区ID
*/
private Long communityId;
private Long communityId;
/**
* 网格
*/
private String grid;
private String grid;
/**
* 网格ID
*/
private Long gridId;
private Long gridId;
/**
* 议题位置地址
*/
private String issueAddress;
private String issueAddress;
/**
* 议题分类ID
*/
private String issueCategoryId;
private String issueCategoryId;
/**
* 议题位置纬度
*/
private double issueLatitude;
private Double issueLatitude;
/**
* 议题位置经度
*/
private double issueLongitude;
private Double issueLongitude;
/**
* 满意度评价得分
*/
private Integer evaluationScore;
/**
* 满意度评价内容
*/
private String evaluationContent;
/**
* 满意度评价时间
*/
private Date evaluationTime;
private Integer evaluationScore;
/**
* 满意度评价内容
*/
private String evaluationContent;
/**
* 满意度评价时间
*/
private Date evaluationTime;
/**
* 项目状态 0-处理中5-已关闭10-已结案
*/
private Integer itemState;
private Integer itemState;
/**
* 手机号
*/
private String mobile;
/**
* 手机号
*/
private String mobile;
/**
* 社群ID
*/
private String groupId;
/**
* 社群ID
*/
private String groupId;
/**
* 社群名称
*/
private String groupName;
/**
* 社群名称
*/
private String groupName;
/**
* 最后一次处理时间
*/
private Date lastHandleTime;
}

13
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java

@ -52,6 +52,17 @@ public interface ItemDeptService extends BaseService<ItemDeptEntity> {
*/
List<ItemDeptDTO> listOfItemDept(String itemId, Long createdDeptId);
/**
*
* 获取已流转部门ID
*
* @params [itemId, createdDeptId]
* @return java.util.List<java.lang.Long>
* @author liuchuang
* @since 2019/10/30 11:16
*/
List<Long> listOfWhistlingDeptIds(String itemId, Long createdDeptId);
/**
* 删除已流转协助部门
* @Params: [createdDeptId]
@ -68,7 +79,7 @@ public interface ItemDeptService extends BaseService<ItemDeptEntity> {
* @Author: liuchuang
* @Date: 2019/9/16 20:08
*/
void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO);
void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO, String itemHandleId);
/**
* 获取参与项目流转部门

22
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java

@ -208,4 +208,26 @@ public interface ItemService extends BaseService<ItemEntity> {
* @Date: 2019/9/17 13:37
*/
Result<List<ItemResultDTO>> listItemsOfMine(ItemOfMineFormDTO formDTO);
/**
*
* 项目处理发送菜单消息
*
* @params [deptId]
* @return void
* @author liuchuang
* @since 2019/10/30 9:12
*/
void sendItemHandleMenuNotice(Long deptId, Long userId);
/**
*
* 项目处理发送菜单消息-吹哨部门
*
* @params [deptIds]
* @return void
* @author liuchuang
* @since 2019/10/30 12:26
*/
void sendWhistlingDeptItemHandleMenuNotice(List<Long> deptIds, Long userId);
}

8
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java

@ -53,6 +53,11 @@ public class ItemDeptServiceImpl extends BaseServiceImpl<ItemDeptDao, ItemDeptEn
return baseDao.getItemDept(itemId, createdDeptId);
}
@Override
public List<Long> listOfWhistlingDeptIds(String itemId, Long createdDeptId) {
return baseDao.selectListWhistlingDeptIds(itemId, createdDeptId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void modifyItemDepts(Long createdDeptId, String itemId) {
@ -61,7 +66,7 @@ public class ItemDeptServiceImpl extends BaseServiceImpl<ItemDeptDao, ItemDeptEn
@Override
@Transactional(rollbackFor = Exception.class)
public void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO) {
public void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO, String itemHandleId) {
List<ItemDeptEntity> deptEntities = new ArrayList<>();
for (ItemCirculationDeptResultDTO dto:
formDTO.getDeptResultDTOS()) {
@ -70,6 +75,7 @@ public class ItemDeptServiceImpl extends BaseServiceImpl<ItemDeptDao, ItemDeptEn
entity.setDeptId(dto.getDeptId());
entity.setDeptName(dto.getDeptName());
entity.setCreatedDeptId(createdDeptId);
entity.setItemHandleId(itemHandleId);
deptEntities.add(entity);
}
this.insertBatch(deptEntities);

101
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java

@ -32,7 +32,9 @@ import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
@ -134,8 +136,8 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
return ConvertUtils.sourceToTarget(entityList, ItemDTO.class);
}
private QueryWrapper<ItemEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
private QueryWrapper<ItemEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<ItemEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
@ -201,7 +203,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
@Override
public Result evaluation(EvaluationFormDTO evaluationFormDTO) {
ItemEntity itemEntityResult = baseDao.selectById(evaluationFormDTO.getItemId());
if (itemEntityResult.getUserId().equals(evaluationFormDTO.getUserId()) && itemEntityResult.getEvaluationScore() == null){
if (itemEntityResult.getUserId().equals(evaluationFormDTO.getUserId()) && itemEntityResult.getEvaluationScore() == null) {
ItemEntity itemEntity = new ItemEntity();
itemEntity.setId(evaluationFormDTO.getItemId());
itemEntity.setEvaluationScore(evaluationFormDTO.getEvaluationScore());
@ -209,7 +211,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
itemEntity.setEvaluationTime(new Date());
baseDao.updateById(itemEntity);
return new Result();
}else {
} else {
return new Result().error("您无法评价");
}
}
@ -249,6 +251,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
/**
* 项目详情-网格-可做操作和可流转部门
*
* @Params: [resultDTO, itemDeptDTOS]
* @Return: com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO
* @Author: liuchuang
@ -270,7 +273,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
if (null != itemDeptDTOS && itemDeptDTOS.size() > 0) {
selected = true;
// 判断已流转部门
for (ItemDeptDTO dto:
for (ItemDeptDTO dto :
itemDeptDTOS) {
if (dto.getDeptId().equals(completeDeptDTO.getCommunityId())) {
communitySelected = true;
@ -316,6 +319,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
/**
* 项目详情-社区街道部门区直部门-可做操作
*
* @Params: [resultDTO]
* @Return: com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO
* @Author: liuchuang
@ -336,13 +340,14 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
/**
* 项目详情-街道党工委-可做操作和可流转部门
*
* @Params: [resultDTO, itemDeptDTOS]
* @Return: com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO
* @Author: liuchuang
* @Date: 2019/9/16 16:17
*/
private ItemDetailForPCEndResultDTO getHandleCategoryAndCirculationDeptOfStreet(ItemDetailForPCEndResultDTO resultDTO,
List<ItemDeptDTO> itemDeptDTOS) {
List<ItemDeptDTO> itemDeptDTOS) {
// 可流转部门
Result<List<SysDeptDTO>> listResult = adminFeignClient.listOfItemCirculationDept(SecurityUser.getDeptId());
if (!listResult.success()) {
@ -351,14 +356,14 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
List<SysDeptDTO> deptDTOS = listResult.getData();
// 初始化可流转部门-街道党工委:街道部门、区直部门
List<ItemCirculationDeptResultDTO> deptResultDTOS = new ArrayList<>();
for (SysDeptDTO dto:
for (SysDeptDTO dto :
deptDTOS) {
ItemCirculationDeptResultDTO circulationDeptResultDTO = new ItemCirculationDeptResultDTO();
circulationDeptResultDTO.setDeptId(dto.getId());
circulationDeptResultDTO.setDeptName(dto.getName());
circulationDeptResultDTO.setTypeKey(dto.getTypeKey());
circulationDeptResultDTO.setSelected(false);
for (ItemDeptDTO dto1:
for (ItemDeptDTO dto1 :
itemDeptDTOS) {
if (dto.getId().equals(dto1.getDeptId())) {
circulationDeptResultDTO.setSelected(true);
@ -410,7 +415,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
informationFormDTO.setBusinessType(EventsNoticeConstant.NOTICE_BUSINESS_TYPE_ITEM);
informationFormDTO.setBusinessId(entity.getId());
informationFormDTO.setTitle(EventsNoticeConstant.NOTICE_ITEM_HANDLE);
informationFormDTO.setRelBusinessContent("项目:"+entity.getItemContent());
informationFormDTO.setRelBusinessContent("项目:" + entity.getItemContent());
ItemHandleProcessEntity handleProcessEntity = new ItemHandleProcessEntity();
handleProcessEntity.setHandlerDeptId(user.getDeptId());
@ -423,10 +428,30 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
}
handleProcessEntity.setState(EventIssueItemState.ITEM_HANDLING);
// 获取已流转部门信息
List<Long> oldDeptIds = itemDeptService.listOfWhistlingDeptIds(dto.getId(), SecurityUser.getDeptId());
// 删除已流转协助部门
itemDeptService.modifyItemDepts(SecurityUser.getDeptId(), dto.getId());
// 记录处理记录
handleProcessEntity.setItemId(dto.getId());
handleProcessEntity.setHandleAdvice(dto.getHandleAdvice());
handleProcessEntity.setOutHandleAdvice(dto.getOutHandleAdvice());
handleProcessEntity.setHandlerDeptId(user.getDeptId());
itemHandleProcessService.insert(handleProcessEntity);
// 新增流转协助部门
itemDeptService.saveItemDepts(SecurityUser.getDeptId(), dto);
itemDeptService.saveItemDepts(SecurityUser.getDeptId(), dto, handleProcessEntity.getId());
List<ItemCirculationDeptResultDTO> circulationDeptResultDTOS = dto.getDeptResultDTOS();
List<Long> newDeptIds = new ArrayList<>();
for (ItemCirculationDeptResultDTO circulationDto :
circulationDeptResultDTOS) {
newDeptIds.add(circulationDto.getDeptId());
}
TreeSet<Long> longTreeSet = new TreeSet<>();
longTreeSet.addAll(oldDeptIds);
longTreeSet.addAll(newDeptIds);
List<Long> deptIds = new ArrayList<>(longTreeSet);
// 发送菜单消息-待处理项目-吹哨部门
this.sendWhistlingDeptItemHandleMenuNotice(deptIds, null);
} else {
handleProcessEntity.setState(dto.getHandleCategory());
// 更新项目状态
@ -444,6 +469,12 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
itemEvaluateDeptService.saveEvaluateDepts(dto.getEvaluateDeptDTOS(), dto.getId(), SecurityUser.getDeptId());
}
}
// 记录处理记录
handleProcessEntity.setItemId(dto.getId());
handleProcessEntity.setHandleAdvice(dto.getHandleAdvice());
handleProcessEntity.setOutHandleAdvice(dto.getOutHandleAdvice());
handleProcessEntity.setHandlerDeptId(user.getDeptId());
itemHandleProcessService.insert(handleProcessEntity);
}
// 记录处理记录
handleProcessEntity.setItemId(dto.getId());
@ -453,8 +484,24 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
itemHandleProcessService.insert(handleProcessEntity);
//插入部门响应表
deptRespondTask.saveItemDeptRespond(dto);
// 更新项目最后一次处理时间
ItemEntity itemEntity = new ItemEntity();
itemEntity.setId(dto.getId());
itemEntity.setLastHandleTime(new Date());
baseDao.updateById(itemEntity);
// 发送消息
newsTask.insertUserInformation(informationFormDTO);
// 发送菜单消息-待处理项目
if (entity.getGridId().equals(user.getDeptId())) {
// 网格长操作-发送菜单消息
this.sendItemHandleMenuNotice(entity.getGridId(), null);
} else {
// 吹哨部门操作-发送菜单消息
this.sendWhistlingDeptItemHandleMenuNotice(Collections.singletonList(user.getDeptId()), null);
}
} catch (Exception e) {
e.printStackTrace();
}
@ -464,6 +511,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
/**
* 项目流转校验
*
* @Params: [dto]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result
* @Author: liuchuang
@ -476,7 +524,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
}
// 校验是否跨级流转
String typeKey = "";
for (ItemCirculationDeptResultDTO circulationDeptResultDTO:
for (ItemCirculationDeptResultDTO circulationDeptResultDTO :
dto.getDeptResultDTOS()) {
if (!"".equals(typeKey) && !typeKey.equals(circulationDeptResultDTO.getTypeKey())) {
return new Result().error("不可跨级流转协助,请重新选择流转协助部门");
@ -494,7 +542,7 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
// 获取街道党工委已流转协助部门
List<ItemDeptDTO> itemDeptDTOS = itemDeptService.listOfItemDept(dto.getId(), completeDept.getData().getStreetId());
if (null != itemDeptDTOS && itemDeptDTOS.size() > 0) {
return new Result().error(completeDept.getData().getStreet()+"已将该项目流转协助到其他部门,不能重新流转协助");
return new Result().error(completeDept.getData().getStreet() + "已将该项目流转协助到其他部门,不能重新流转协助");
}
}
@ -540,7 +588,34 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
formDto.setUserId(formDTO.getUserId());
// 查询数据状态
int[] states = {EventIssueItemState.ITEM_HANDLING, EventIssueItemState.ITEM_CLOSED, EventIssueItemState.ITEM_CLOSEING_CASE};
List<ItemResultDTO> data = baseDao.selectListOfItems(formDto, states);
List<ItemResultDTO> data = baseDao.selectListItemsOfMine(formDto, states);
return new Result<List<ItemResultDTO>>().ok(data);
}
@Override
public void sendItemHandleMenuNotice(Long deptId, Long userId) {
// 获取部门待处理项目数量
int num = baseDao.selectCountOfItemDeptNotice(deptId, EventIssueItemState.ITEM_HANDLING);
MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO();
menuNoticeDTO.setDeptId(deptId);
menuNoticeDTO.setNum(num);
menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ITEM_HANDLE);
// 发送菜单消息通知
newsTask.eventMenuNotice(menuNoticeDTO, userId);
}
@Override
public void sendWhistlingDeptItemHandleMenuNotice(List<Long> deptIds, Long userId) {
MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO();
menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ITEM_HANDLE);
for (Long deptId :
deptIds) {
// 获取吹哨部门待处理项目数量
int num = baseDao.selectCountOfItemWhistlingDeptNotice(deptId);
menuNoticeDTO.setDeptId(deptId);
menuNoticeDTO.setNum(num);
// 发送菜单消息通知
newsTask.eventMenuNotice(menuNoticeDTO, userId);
}
}
}

24
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml

@ -6,8 +6,12 @@
<result property="id" column="ID"/>
<result property="eventContent" column="EVENT_CONTENT"/>
<result property="nickName" column="NICK_NAME"/>
<result property="mobile" column="MOBILE"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="address" column="ISSUE_ADDRESS"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="ownGrid" column="ownGrid"/>
<collection property="imageArray" ofType="java.lang.String">
<result property="image" column="IMG_URL"/>
</collection>
@ -18,8 +22,12 @@
e.EVENT_CONTENT,
i.IMG_URL,
e.NICK_NAME,
e.MOBILE,
e.CREATED_TIME,
e.ISSUE_ADDRESS
e.ISSUE_ADDRESS,
e.ISSUE_LATITUDE,
e.ISSUE_LONGITUDE,
CONCAT(e.AREA,e.STREET,e.COMMUNITY,e.GRID) AS ownGrid
FROM
epdc_events e
LEFT JOIN epdc_img i ON e.ID = i.REFERENCE_ID
@ -88,10 +96,14 @@
<result property="id" column="ID"/>
<result property="eventContent" column="EVENT_CONTENT"/>
<result property="nickName" column="NICK_NAME"/>
<result property="mobile" column="MOBILE"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="address" column="ISSUE_ADDRESS"/>
<result property="stateName" column="STATE_NAME"/>
<result property="advice" column="ADVICE"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="ownGrid" column="ownGrid"/>
<collection property="images" ofType="java.lang.String">
<result property="image" column="IMG_URL"/>
</collection>
@ -101,11 +113,15 @@
temp.ID,
temp.NICK_NAME,
temp.CREATED_TIME,
temp.MOBILE,
temp.EVENT_CONTENT,
temp.ISSUE_ADDRESS,
'已驳回' AS STATE_NAME,
temp.ADVICE,
img.IMG_URL
img.IMG_URL,
temp.ISSUE_LATITUDE,
temp.ISSUE_LONGITUDE,
CONCAT(temp.AREA,temp.STREET,temp.COMMUNITY,temp.GRID) AS ownGrid
FROM
epdc_events temp
LEFT JOIN epdc_img img ON temp.ID = img.REFERENCE_ID
@ -229,4 +245,8 @@
AND eve.ID = #{eventId}
</select>
<select id="selectCountOfDeptNotice" resultType="int">
SELECT COUNT(ID) AS num FROM epdc_events WHERE DEL_FLAG = '0' AND grid_id = #{deptId} AND EVENT_STATE = #{state}
</select>
</mapper>

50
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml

@ -40,7 +40,13 @@
<result property="id" column="id"/>
<result property="nickName" column="NICK_NAME"/>
<result property="distributeTime" column="DISTRIBUTE_TIME"/>
<result property="mobile" column="MOBILE"/>
<result property="issueContent" column="ISSUE_CONTENT"/>
<result property="address" column="ISSUE_ADDRESS"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="ownGrid" column="ownGrid"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<collection property="images" ofType="java.lang.String">
<result property="image" column="IMG_URL"/>
</collection>
@ -48,6 +54,7 @@
<result property="stateName" column="stateName"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="advice" column="ADVICE"/>
<result property="handlerDept" column="HANDLER_DEPT"/>
</collection>
</resultMap>
@ -56,9 +63,16 @@
i.id,
i.NICK_NAME,
i.DISTRIBUTE_TIME,
i.MOBILE,
i.ISSUE_CONTENT,
i.ISSUE_ADDRESS,
i.ISSUE_LATITUDE,
i.ISSUE_LONGITUDE,
cate.CATEGORY_NAME,
CONCAT(i.AREA,i.STREET,i.COMMUNITY,i.GRID) AS ownGrid,
h.ADVICE,
h.CREATED_TIME,
h.HANDLER_DEPT,
(CASE
h.STATE
WHEN 0 THEN
@ -75,6 +89,8 @@
AND h.DEL_FLAG = '0'
LEFT JOIN epdc_img img ON i.EVENT_ID = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON i.ISSUE_CATEGORY_ID = cate.ID
AND cate.DEL_FLAG = '0'
WHERE
i.DEL_FLAG = '0'
AND i.ID = #{id}
@ -84,7 +100,13 @@
<resultMap id="issueContentDetailMap" type="com.elink.esua.epdc.dto.issue.IssueContentDetailDTO">
<result property="nickName" column="NICK_NAME"/>
<result property="distributeTime" column="DISTRIBUTE_TIME"/>
<result property="mobile" column="MOBILE"/>
<result property="issueContent" column="ISSUE_CONTENT"/>
<result property="address" column="ISSUE_ADDRESS"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="ownGrid" column="ownGrid"/>
<result property="approveNum" column="APPROVE_NUM"/>
<result property="opposeNum" column="OPPOSE_NUM"/>
<result property="commentNum" column="COMMENT_NUM"/>
@ -96,17 +118,25 @@
SELECT
i.NICK_NAME,
i.DISTRIBUTE_TIME,
i.MOBILE,
i.ISSUE_CONTENT,
e.APPROVE_NUM,
e.OPPOSE_NUM,
e.COMMENT_NUM,
img.IMG_URL
img.IMG_URL,
i.ISSUE_ADDRESS,
i.ISSUE_LATITUDE,
i.ISSUE_LONGITUDE,
cate.CATEGORY_NAME,
CONCAT(i.AREA,i.STREET,i.COMMUNITY,i.GRID) AS ownGrid
FROM
epdc_issue i
LEFT JOIN epdc_events e ON i.EVENT_ID = e.ID
AND e.DEL_FLAG = '0'
LEFT JOIN epdc_img img ON i.EVENT_ID = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON i.ISSUE_CATEGORY_ID = cate.ID
AND cate.DEL_FLAG = '0'
WHERE
i.DEL_FLAG = '0'
AND i.ID = #{issueId}
@ -117,6 +147,7 @@
SELECT
CREATED_TIME AS createdTime,
advice,
HANDLER_DEPT AS handlerDept,
( CASE STATE WHEN 0 THEN '【审核通过】' WHEN 1 THEN '【反馈】' WHEN 2 THEN '【已关闭】' ELSE '' END ) AS stateName
FROM
epdc_issue_handle
@ -126,6 +157,7 @@
SELECT
CREATED_TIME AS createdTime,
HANDLE_ADVICE AS advice,
HANDLER_DEPT AS handlerDept,
(
CASE
@ -377,8 +409,7 @@
WHERE
eve.DEL_FLAG = '0'
AND eve.EVENT_STATE IN ( 0, 2 )
AND eve.USER_ID = #{userId}
AND eve.GRID_ID = #{gridId} UNION ALL
AND eve.USER_ID = #{userId} UNION ALL
SELECT
issue.ID,
issue.EVENT_ID,
@ -403,9 +434,20 @@
issue.DEL_FLAG = '0'
AND issue.ISSUE_STATE IN ( 0, 2 )
AND issue.USER_ID = #{userId}
AND issue.GRID_ID = #{gridId}
ORDER BY
distributeTime DESC
</select>
<select id="selectCountOfDeptNotice" resultType="int">
SELECT
COUNT( ID ) AS num
FROM
epdc_issue
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{deptId}
AND ISSUE_STATE = #{state}
AND ID NOT IN ( SELECT ISSUE_ID FROM epdc_issue_handle WHERE DEL_FLAG = '0' AND HANDLER_DEPT_ID = #{deptId} AND STATE <![CDATA[ <> ]]> 0 )
</select>
</mapper>

216
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml

@ -99,13 +99,104 @@
AND t1.USER_ID = #{formDto.userId}
</if>
ORDER BY
<if test='formDto.orderType != null and formDto.orderType != "" and formDto.orderType == "1"'>
t1.LAST_HANDLE_TIME DESC
</if>
t1.CREATED_TIME DESC
LIMIT #{formDto.pageIndex},#{formDto.pageSize}
) temp
)
ORDER BY
<if test='formDto.orderType != null and formDto.orderType != "" and formDto.orderType == "1"'>
item.LAST_HANDLE_TIME DESC
</if>
item.CREATED_TIME DESC,
img.CREATED_TIME
img.IMG_URL
</select>
<select id="selectListItemsOfMine" resultMap="itemsMap">
SELECT
item.ID,
item.EVENT_ID,
item.ITEM_CONTENT,
item.NICK_NAME,
item.USER_FACE,
item.IS_PARTY_MEMBER,
item.CREATED_TIME,
item.ISSUE_ADDRESS,
eve.APPROVE_NUM,
eve.OPPOSE_NUM,
eve.COMMENT_NUM,
( eve.APPROVE_NUM + eve.OPPOSE_NUM + eve.COMMENT_NUM + eve.BROWSE_NUM ) AS statementNum,
cate.CATEGORY_NAME,
img.IMG_URL,
hp.CREATED_TIME AS handleTime,
hp.OUT_HANDLE_ADVICE,
CASE
item.ITEM_STATE
WHEN 0 THEN
'处理中'
WHEN 5 THEN
'已关闭'
WHEN 10 THEN
'已结案' ELSE ''
END AS stateName
FROM
epdc_item item
LEFT JOIN epdc_events eve ON item.EVENT_ID = eve.ID
AND eve.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON item.ISSUE_CATEGORY_ID = cate.ID
AND cate.DEL_FLAG = '0'
LEFT JOIN epdc_img img ON item.EVENT_ID = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_item_handle_process hp ON item.ID = hp.ITEM_ID
AND hp.DEL_FLAG = '0'
AND hp.CREATED_TIME = ( SELECT MAX( a.CREATED_TIME ) FROM epdc_item_handle_process a WHERE a.DEL_FLAG = '0' AND a.ITEM_ID = hp.ITEM_ID )
WHERE
item.ID IN (
SELECT temp.ID FROM (
SELECT
t1.id
FROM
epdc_item t1
LEFT JOIN epdc_events t2
ON t1.EVENT_ID = t2.ID
AND t2.DEL_FLAG = '0'
WHERE t1.DEL_FLAG = '0'
AND t1.ITEM_STATE IN
<foreach collection="states" item="state" index="no" open="("
separator="," close=")">
#{state}
</foreach>
<if test="formDto.someMonthsAgo != null">
<![CDATA[ AND DATE_FORMAT(t1.CREATED_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> #{formDto.someMonthsAgo}
</if>
<if test="formDto.timestamp != null">
<![CDATA[ AND DATE_FORMAT(t1.CREATED_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> #{formDto.timestamp}
</if>
<if test='formDto.searchContent != null and formDto.searchContent != ""'>
AND t1.ITEM_CONTENT LIKE CONCAT('%',#{formDto.searchContent},'%')
</if>
<if test='formDto.categoryId != null and formDto.categoryId != ""'>
AND t1.ISSUE_CATEGORY_ID = #{formDto.categoryId}
</if>
<if test='formDto.userId != null and formDto.userId != ""'>
AND t1.USER_ID = #{formDto.userId}
</if>
ORDER BY
<if test='formDto.orderType != null and formDto.orderType != "" and formDto.orderType == "1"'>
t1.LAST_HANDLE_TIME DESC
</if>
t1.CREATED_TIME DESC
LIMIT #{formDto.pageIndex},#{formDto.pageSize}
) temp
)
ORDER BY
<if test='formDto.orderType != null and formDto.orderType != "" and formDto.orderType == "1"'>
item.LAST_HANDLE_TIME DESC
</if>
item.CREATED_TIME DESC,
img.IMG_URL
</select>
<resultMap id="itemDetailMap" type="com.elink.esua.epdc.dto.item.result.ItemDetailResultDTO">
@ -268,8 +359,15 @@
<result property="id" column="ID"/>
<result property="nickName" column="NICK_NAME"/>
<result property="distributeTime" column="DISTRIBUTE_TIME"/>
<result property="mobile" column="MOBILE"/>
<result property="itemContent" column="ITEM_CONTENT"/>
<result property="issueAddress" column="ISSUE_ADDRESS"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="approveNum" column="APPROVE_NUM"/>
<result property="opposeNum" column="OPPOSE_NUM"/>
<result property="commentNum" column="COMMENT_NUM"/>
<collection property="images" ofType="java.lang.String">
<result property="image" column="IMG_URL"/>
</collection>
@ -279,44 +377,67 @@
item.ID,
item.NICK_NAME,
item.DISTRIBUTE_TIME,
item.MOBILE,
item.ITEM_CONTENT,
item.ISSUE_ADDRESS,
item.ISSUE_LATITUDE,
item.ISSUE_LONGITUDE,
eve.APPROVE_NUM,
eve.OPPOSE_NUM,
eve.COMMENT_NUM,
cate.CATEGORY_NAME,
img.IMG_URL
FROM
epdc_item item
LEFT JOIN epdc_img img ON item.EVENT_ID = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON item.ISSUE_CATEGORY_ID = cate.ID
AND cate.DEL_FLAG = '0'
LEFT JOIN epdc_events eve ON item.EVENT_ID = eve.ID
AND eve.DEL_FLAG = '0'
WHERE
item.DEL_FLAG = '0'
AND item.ID = #{itemId}
</select>
<select id="selectListOfItemHandleProgress" resultType="com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO">
<resultMap id="itemHandleMap" type="com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO">
<result property="createdTime" column="createdTime"/>
<result property="advice" column="advice"/>
<result property="handlerDept" column="handlerDept"/>
<result property="progressName" column="progressName"/>
<collection property="itemDeptDTOS" ofType="com.elink.esua.epdc.dto.item.ItemDeptDTO">
<result property="deptName" column="DEPT_NAME"/>
</collection>
</resultMap>
<select id="selectListOfItemHandleProgress" resultMap="itemHandleMap">
SELECT
CREATED_TIME AS createdTime,
advice,
HANDLER_DEPT AS handlerDept,
CASE STATE WHEN 0 THEN '【审核通过】' WHEN 1 THEN '【反馈】' WHEN 2 THEN '【已关闭】' ELSE '' END AS progressName
CASE STATE WHEN 0 THEN '【审核通过】' WHEN 1 THEN '【反馈】' WHEN 2 THEN '【已关闭】' ELSE '' END AS progressName,
null AS DEPT_NAME
FROM
epdc_issue_handle
WHERE
DEL_FLAG = '0'
AND ISSUE_ID = #{issueId} UNION ALL
SELECT
CREATED_TIME AS createdTime,
hp.CREATED_TIME AS createdTime,
<if test="outOrInside == 0">
HANDLE_ADVICE AS advice,
hp.HANDLE_ADVICE AS advice,
</if>
<if test="outOrInside == 1">
OUT_HANDLE_ADVICE AS advice,
hp.OUT_HANDLE_ADVICE AS advice,
</if>
HANDLER_DEPT AS handlerDept,
CASE WHEN STATE = 0 THEN '【处理中】' WHEN STATE = 5 THEN '【已关闭】' WHEN STATE = 10 THEN '【已结案】' ELSE '' END AS progressName
hp.HANDLER_DEPT AS handlerDept,
CASE WHEN hp.STATE = 0 THEN '【处理中】' WHEN hp.STATE = 5 THEN '【已关闭】' WHEN hp.STATE = 10 THEN '【已结案】' ELSE '' END AS progressName,
itemDept.DEPT_NAME
FROM
epdc_item_handle_process
epdc_item_handle_process hp
LEFT JOIN epdc_item_dept itemDept ON hp.ID = itemDept.ITEM_HANDLE_ID
WHERE
DEL_FLAG = '0'
AND ITEM_ID = #{itemId} UNION ALL
hp.DEL_FLAG = '0'
AND hp.ITEM_ID = #{itemId} UNION ALL
SELECT
EVALUATION_TIME AS createdTime,
EVALUATION_CONTENT AS advice,
@ -329,7 +450,8 @@
'【满意度评价】基本满意'
WHEN 2 THEN
'【满意度评价】非常满意' ELSE ''
END AS progressName
END AS progressName,
null AS DEPT_NAME
FROM
epdc_item
WHERE
@ -344,8 +466,13 @@
<result property="id" column="ID"/>
<result property="nickName" column="NICK_NAME"/>
<result property="distributeTime" column="DISTRIBUTE_TIME"/>
<result property="mobile" column="MOBILE"/>
<result property="itemContent" column="ITEM_CONTENT"/>
<result property="itemState" column="ITEM_STATE"/>
<result property="issueAddress" column="ISSUE_ADDRESS"/>
<result property="issueLatitude" column="ISSUE_LATITUDE"/>
<result property="issueLongitude" column="ISSUE_LONGITUDE"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="approveNum" column="APPROVE_NUM"/>
<result property="opposeNum" column="OPPOSE_NUM"/>
<result property="commentNum" column="COMMENT_NUM"/>
@ -359,8 +486,13 @@
item.ID,
item.NICK_NAME,
item.DISTRIBUTE_TIME,
item.MOBILE,
item.ITEM_CONTENT,
item.ITEM_STATE,
item.ISSUE_ADDRESS,
item.ISSUE_LATITUDE,
item.ISSUE_LONGITUDE,
cate.CATEGORY_NAME,
eve.APPROVE_NUM,
eve.OPPOSE_NUM,
eve.COMMENT_NUM,
@ -377,9 +509,69 @@
AND eve.DEL_FLAG = '0'
LEFT JOIN epdc_img img ON item.EVENT_ID = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON item.ISSUE_CATEGORY_ID = cate.ID
AND cate.DEL_FLAG = '0'
WHERE
item.DEL_FLAG = '0'
AND item.ID = #{itemId}
ORDER BY img.CREATED_TIME
</select>
<select id="selectCountOfItemDeptNotice" resultType="int">
SELECT
COUNT( ID ) AS num
FROM
epdc_item
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{deptId}
AND ITEM_STATE = #{state}
AND ID NOT IN (
SELECT
ITEM_ID
FROM
epdc_item_handle_process
WHERE
DEL_FLAG = '0'
AND HANDLER_DEPT_ID = #{deptId}
AND STATE = 0
GROUP BY
ITEM_ID
HAVING
COUNT( ID ) > 1
)
</select>
<select id="selectCountOfItemWhistlingDeptNotice" resultType="int">
SELECT
COUNT( ID ) AS num
FROM
epdc_item
WHERE
DEL_FLAG = '0'
AND ITEM_STATE = 0
AND ID IN (
SELECT
ITEM_ID
FROM
epdc_item_dept
WHERE
DEL_FLAG = '0'
AND DEPT_ID = #{deptId}
AND ITEM_ID NOT IN (
SELECT
ITEM_ID
FROM
epdc_item_handle_process
WHERE
DEL_FLAG = '0'
AND HANDLER_DEPT_ID = #{deptId}
AND STATE = 0
GROUP BY
ITEM_ID
HAVING
COUNT( ID ) > 0
)
)
</select>
</mapper>

4
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml

@ -7,6 +7,10 @@
SELECT * FROM epdc_item_dept WHERE DEL_FLAG = '0' AND ITEM_ID = #{itemId} AND CREATED_DEPT_ID = #{createdDeptId} AND DEPT_ID != #{createdDeptId}
</select>
<select id="selectListWhistlingDeptIds" resultType="long">
SELECT DEPT_ID FROM epdc_item_dept WHERE DEL_FLAG = '0' AND ITEM_ID = #{itemId} AND CREATED_DEPT_ID = #{createdDeptId} AND DEPT_ID != #{createdDeptId}
</select>
<update id="updateItemDepts">
UPDATE epdc_item_dept SET DEL_FLAG = '1' WHERE CREATED_DEPT_ID = #{createdDeptId} AND ITEM_ID = #{itemId} AND DEPT_ID != #{createdDeptId}
</update>

27
esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java

@ -207,7 +207,6 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
UserDetail user = SecurityUser.getUser();
//是不是草稿箱
entity.setNewsReleaseState(newsReleaseState);
boolean isSave = true;
if (StringUtils.isBlank(newsDto.getId())) {
// 新增操作时,保存创建人,创建人部门信息。
@ -223,8 +222,14 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
} else {
isSave = false;
}
// 通知所属部门id
Long newsDeptId = entity.getStreetId();
Long streetId = entity.getStreetId();
// 区党委,新增新闻时选择全部街道
if (NumConstant.ONE_L == streetId && "district_party".equals(user.getTypeKey())) {
streetId = user.getDeptId();
entity.setStreet(user.getDeptName());
}
// 新闻所属部门id
Long newsDeptId = streetId;
// 能接收通知的所有网格的ID
List<Long> newsGridList = Lists.newArrayList();
if (null != entity.getCommunityId()) {
@ -234,12 +239,14 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
newsDeptId = entity.getGridId();
newsGridList.add(newsDeptId);
}
if (!user.getDeptIdList().contains(newsDeptId)) {
// 新闻发布方不是区党委,也没有该部门数据权限
if (!"district_party".equals(user.getTypeKey()) && !user.getDeptIdList().contains(newsDeptId)) {
throw new RenException("您没有操作此部门的数据权限");
}
//草稿箱操作
if (YesOrNoEnum.YES.value().equals(newsReleaseState)) {
if (isSave) {
setNull(newsDto, entity);
insert(entity);
} else {
entity.setUpdatedBy(user.getRealName());
@ -255,6 +262,7 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
newsGridList = adminResult.getData();
}
if (isSave) {
setNull(newsDto, entity);
insert(entity);
} else {
entity.setUpdatedBy(user.getRealName());
@ -269,6 +277,17 @@ public class NewsServiceImpl extends BaseServiceImpl<NewsDao, NewsEntity> implem
}
}
private void setNull(NewsDTO newsDto, NewsEntity entity) {
if (newsDto.getCommunityId() == null || StringUtils.isBlank(newsDto.getCommunity()) || newsDto.getCommunityId() == 0) {
entity.setCommunity(null);
entity.setCommunityId(null);
}
if (newsDto.getGridId() == null || newsDto.getGridId() == 0 || StringUtils.isBlank(newsDto.getGrid())) {
entity.setGridId(null);
entity.setGrid(null);
}
}
@Override
public Result<List<EpdcNewsListResultDTO>> listNews(EpdcNewsListFromDTO formDto) {

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save