diff --git a/esua-epdc/doc/db/2019-10-25.sql b/esua-epdc/doc/db/2019-10-25.sql new file mode 100644 index 000000000..ba1495f76 --- /dev/null +++ b/esua-epdc/doc/db/2019-10-25.sql @@ -0,0 +1 @@ +ALTER TABLE esd_admin.sys_menu ADD menu_code varchar(50) NULL COMMENT '菜单编码'; diff --git a/esua-epdc/doc/db/dev_newRegister/esua_epdc_admin.sql b/esua-epdc/doc/db/dev_newRegister/esua_epdc_admin.sql new file mode 100644 index 000000000..148aa1e57 --- /dev/null +++ b/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; diff --git a/esua-epdc/doc/db/dev_newRegister/esua_epdc_events.sql b/esua-epdc/doc/db/dev_newRegister/esua_epdc_events.sql new file mode 100644 index 000000000..cdb286a52 --- /dev/null +++ b/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 '手机号'; \ No newline at end of file diff --git a/esua-epdc/doc/db/dev_newRegister/esua_epdc_user.sql b/esua-epdc/doc/db/dev_newRegister/esua_epdc_user.sql new file mode 100644 index 000000000..f1491df75 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptMaCodeDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptMaCodeDTO.java index b4087c925..60c74d048 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptMaCodeDTO.java +++ b/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; + /** * 乐观锁 */ diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysMenuDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysMenuDTO.java index 2ecacdc85..aac92fef5 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysMenuDTO.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -35,124 +35,148 @@ import java.util.List; public class SysMenuDTO extends TreeNode 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 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 getResourceList() { - return resourceList; - } - - public void setResourceList(List 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 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 getResourceList() { + return resourceList; + } + + public void setResourceList(List 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; + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java index da8fc6a07..ec29b3a51 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java +++ b/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; + /** * 备注 */ diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridForLeaderRegisterDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridForLeaderRegisterDTO.java new file mode 100644 index 000000000..c1d6f5525 --- /dev/null +++ b/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; + +} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridLeaderRegisterDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/epdc/GridLeaderRegisterDTO.java new file mode 100644 index 000000000..6fd8d48ef --- /dev/null +++ b/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 leaderGridList; +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/DeptMaCodeController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/DeptMaCodeController.java index 2d1bdb336..74b83f08b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/DeptMaCodeController.java +++ b/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(); + } + } \ No newline at end of file diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index 757432614..78dc1448c 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -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> page(@ApiIgnore @RequestParam Map params){ + public Result> page(@ApiIgnore @RequestParam Map params) { PageData page = sysUserService.page(params); return new Result>().ok(page); @@ -79,7 +78,7 @@ public class SysUserController { @GetMapping("{id}") @ApiOperation("信息") - public Result get(@PathVariable("id") Long id){ + public Result get(@PathVariable("id") Long id) { SysUserDTO data = sysUserService.get(id); //用户角色列表 @@ -91,7 +90,7 @@ public class SysUserController { @GetMapping("info") @ApiOperation("登录用户信息") - public Result info(@ApiIgnore UserDetail user){ + public Result info(@ApiIgnore UserDetail user) { SysUserDTO data = ConvertUtils.sourceToTarget(user, SysUserDTO.class); return new Result().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 params, HttpServletResponse response) throws Exception { List list = sysUserService.list(params); @@ -165,7 +164,7 @@ public class SysUserController { * 根据用户名,获取用户信息 */ @GetMapping("getByUsername") - public Result getByUsername(String username){ + public Result 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 getById(Long id){ + public Result 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 + * @author work@yujt.net.cn + * @date 2019/10/22 16:18 + */ + @GetMapping("/listGridForLeader/{mobile}") + public Result listGridWhileLeaderRegister(@PathVariable("mobile") String mobile) { + return sysUserService.listGridWhileLeaderRegister(mobile); + } + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author liuchuang + * @since 2019/10/29 17:31 + */ + @GetMapping("ids/{deptId}") + public Result> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId) { + List data = sysUserService.listOfUserIdsByDeptId(deptId); + return new Result>().ok(data); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java index 580cc6fb9..bd7e3c979 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysDeptDao.java +++ b/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 { /** * 通过街道ID获取项目可流转部门 + * * @Params: [deptId] * @Return: java.util.List * @Author: liuchuang * @Date: 2019/9/16 16:54 */ List selectListOfItemCirculationDept(@Param("deptId") Long deptId); + + /** + * 通过网格id集合,获取网格长管理的所有网格 + * + * @param gridIdList + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/24 15:27 + */ + List selectListGridForLeader(@Param("gridIdList") List gridIdList); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java index aee32cf88..b889a1032 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ 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 { */ int getCountByDeptId(Long deptId); + /** + * 网格长注册时,根据手机号,查询网格长管理的所有网格 + * + * @param mobile + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/22 16:27 + */ + List selectListLeaderGridId(@Param("mobile") String mobile); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/29 16:18 + */ + List selectListOfUserIdsByDeptId(@Param("deptId") Long deptId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/DeptMaCodeEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/DeptMaCodeEntity.java index ee301c719..18a963683 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/DeptMaCodeEntity.java +++ b/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; + } \ No newline at end of file diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysMenuEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysMenuEntity.java index 5c010225a..18a3a8774 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysMenuEntity.java +++ b/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; + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysRoleEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysRoleEntity.java index a0166945b..20523d9ce 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/SysRoleEntity.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -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; } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/DeptMaCodeService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/DeptMaCodeService.java index 90ae915f4..c82db655e 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/DeptMaCodeService.java +++ b/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 { * @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(); } \ No newline at end of file diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java index 4d0572dc1..700e5d1b9 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysDeptService.java +++ b/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 { * 获取所有下属网格ID集合 * * @param pid 部门ID - * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @return com.elink.esua.epdc.commons.tools.utils.Result> * @author yujintao * @date 2019/9/5 13:45 */ @@ -87,7 +88,7 @@ public interface SysDeptService extends BaseService { /*** * 通过编码得到党委编码 * @param partyCode - * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @return com.elink.esua.epdc.commons.tools.utils.Result> * @author qushutong * @date 2019/9/20 19:57 */ @@ -101,4 +102,14 @@ public interface SysDeptService extends BaseService { * @date 2019/9/21 14:14 */ Integer getCodeCount(SysDeptDTO dto); + + /** + * 通过网格id集合,获取网格长管理的所有网格 + * + * @param gridIdList + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/24 15:26 + */ + List selectListGridForLeader(List gridIdList); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index 08a39c8c9..55cf6ca13 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -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 { /** * 修改密码 - * @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 { * 根据部门ID,查询用户数 */ int getCountByDeptId(Long deptId); + + /** + * 网格长注册时,根据手机号,查询网格长管理的所有网格 + * + * @param mobile + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/22 16:19 + */ + Result listGridWhileLeaderRegister(String mobile); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/29 16:14 + */ + List listOfUserIdsByDeptId(Long deptId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/DeptMaCodeServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/DeptMaCodeServiceImpl.java index 1e79364f7..7af43fe8c 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/DeptMaCodeServiceImpl.java +++ b/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 page(Map params) { + String leaderFlag = (String) params.get("leaderFlag"); + if (StringUtils.isNotBlank(leaderFlag) && leaderFlag.equals(YesOrNoEnum.YES.value())) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("LEADER_FLAG", leaderFlag); + + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + wrapper + ); + + PageData pageData = getPageData(page, DeptMaCodeDTO.class); + List pageDataList = pageData.getList(); + for (DeptMaCodeDTO dto : pageDataList) { + dto.setStreet("全部街道通用"); + dto.setCommunity("全部社区通用"); + dto.setGrid("全部网格通用"); + } + + return pageData; + } IPage page = this.getPage(params); List dtoList = this.baseDao.selectListDeptMaCode(params); @@ -121,8 +143,7 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl ossResult; File wxaCodeUnlimit; @@ -132,7 +153,7 @@ public class DeptMaCodeServiceImpl extends BaseServiceImplinitDeptMaCode::createWxaCodeUnlimit error::deptId={}", gridId); continue; @@ -155,11 +176,44 @@ public class DeptMaCodeServiceImpl extends BaseServiceImpl 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 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(); } /** diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index 68d888d0e..5234ad883 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/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 selectListGridForLeader(List gridIdList) { + return this.baseDao.selectListGridForLeader(gridIdList); + } + @Override public List listOfItemCirculationDept(Long deptId) { return baseDao.selectListOfItemCirculationDept(deptId); diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java index abf4e6456..0d2263c76 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java +++ b/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. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ @@ -50,8 +50,8 @@ public class SysRoleServiceImpl extends BaseServiceImpl page(Map params) { IPage 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 getWrapper(Map params){ - String name = (String)params.get("name"); + private QueryWrapper getWrapper(Map params) { + String name = (String) params.get("name"); + String code = (String) params.get("code"); QueryWrapper 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 deptIdList = sysDeptService.getSubDeptIdList(user.getDeptId()); wrapper.in(deptIdList != null, "dept_id", deptIdList); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index a2e41101c..4d3972143 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/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 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 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 listGridWhileLeaderRegister(String mobile) { + + QueryWrapper 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 gridIdList = this.baseDao.selectListLeaderGridId(mobile); + if (CollUtil.isEmpty(gridIdList)) { + return new Result().error("匹配网格长数据权限失败"); + } + + List gridForLeaderList = sysDeptService.selectListGridForLeader(gridIdList); + + GridLeaderRegisterDTO result = new GridLeaderRegisterDTO(); + result.setSysUser(dto); + result.setLeaderGridList(gridForLeaderList); + return new Result().ok(result); + } + + @Override + public List listOfUserIdsByDeptId(Long deptId) { + return baseDao.selectListOfUserIdsByDeptId(deptId); + } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/DeptMaCodeDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/DeptMaCodeDao.xml index e46654979..2889a5e88 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/DeptMaCodeDao.xml +++ b/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 diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml index 5353844f2..f3ed6ebbe 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysDeptDao.xml @@ -88,4 +88,28 @@ AND type_key = 'district_dept' + + + diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index e1dd9aaaf..8a3d50bff 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/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 + + + + + diff --git a/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/interceptor/DataFilterInterceptor.java b/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/interceptor/DataFilterInterceptor.java index e8879fca1..eca792214 100644 --- a/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/interceptor/DataFilterInterceptor.java +++ b/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(); diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java index 4c4865263..dc987077c 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java +++ b/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"; } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java index 2937b5573..d56c9fb99 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java +++ b/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"; } diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/IdentityNoUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/IdentityNoUtils.java index c03eb060d..0d48190cc 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/IdentityNoUtils.java +++ b/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 diff --git a/esua-epdc/epdc-gateway/pom.xml b/esua-epdc/epdc-gateway/pom.xml index 7b1adf95f..f84a048b6 100644 --- a/esua-epdc/epdc-gateway/pom.xml +++ b/esua-epdc/epdc-gateway/pom.xml @@ -119,6 +119,7 @@ lb://epdc-demo-server http://127.0.0.1:9064 + lb://epdc-websocket-server false 47.104.224.45:8848 @@ -156,6 +157,7 @@ lb://epdc-user-server lb://epdc-demo-server lb://epdc-group-server + lb://epdc-websocket-server true @@ -188,6 +190,8 @@ lb://epdc-user-server lb://epdc-demo-server lb://epdc-group-server + lb://epdc-websocket-server + 8 121.42.149.50 diff --git a/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java index 4f9b8229a..5f0515c53 100644 --- a/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java +++ b/esua-epdc/epdc-gateway/src/main/java/com/elink/esua/epdc/config/CorsConfig.java @@ -1,13 +1,15 @@ /** * Copyright (c) 2018 人人开源 All rights reserved. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ 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) { diff --git a/esua-epdc/epdc-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index 44f0fc0aa..53946043b 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/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) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/ScanSwitchDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/ScanSwitchDTO.java new file mode 100644 index 000000000..b6b5e92c9 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserMaInfoFormDTO.java new file mode 100644 index 000000000..47ecf25c3 --- /dev/null +++ b/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 + * + * @Author:liuchuang + * @Date:2019/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; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserRegisterFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcAppUserRegisterFormDTO.java new file mode 100644 index 000000000..42bd6cf74 --- /dev/null +++ b/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 + * + * @Author:liuchuang + * @Date:2019/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; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcCompleteUserInfoFormDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/EpdcCompleteUserInfoFormDTO.java new file mode 100644 index 000000000..ab9640135 --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppAuthorizationDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppAuthorizationDTO.java index 368adae3b..718c39ed8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcAppAuthorizationDTO.java +++ b/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; /** diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcCompleteUserInfoDTO.java b/esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/result/EpdcCompleteUserInfoDTO.java new file mode 100644 index 000000000..1842fb2a9 --- /dev/null +++ b/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; +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index be5432ae7..22846cd75 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -80,7 +80,6 @@ feign-httpclient 10.3.0 - diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java index 74b53f31f..6a39a043b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAppUserController.java +++ b/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 { } /** - * 用户注册 + * 小程序端,用户注册。已废弃,新的注册接口使用: + *

{@link com.elink.esua.epdc.controller.v2.ApiAppUserV2Controller#getMaV2Token(EpdcAppUserRegisterFormDTO)}

* * @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 mpUserRegister(@RequestBody EpdcUserRegistFormDTO formDto) { ValidatorUtils.validateEntity(formDto); @@ -61,19 +62,35 @@ public class ApiAppUserController { } /** - * 小程序端,用户注册 + * 小程序端,用户注册。已废弃,新的注册接口使用: + *

{@link com.elink.esua.epdc.controller.v2.ApiAppUserV2Controller#getMaV2Token(EpdcAppUserRegisterFormDTO)}

* * @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 maUserRegister(@RequestBody EpdcUserRegistFormDTO formDto) { ValidatorUtils.validateEntity(formDto); return appUserService.maUserRegister(formDto); } + /** + * 网格长小程序端注册 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/22 15:28 + */ + @PostMapping("user/ma/gridLeaderRegister") + public Result 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 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 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 userSwitchGrid(@LoginUser TokenDto userDetail, @PathVariable("gridId") String gridId) { + return appUserService.userSwitchGrid(userDetail, gridId); + } + + /** + * 获取用户的所有网格列表 + * + * @param userDetail + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2019/10/23 15:58 + */ + @GetMapping("user/listGrid") + public Result> 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 + * @author work@yujt.net.cn + * @date 2019/10/26 13:41 + */ + @PostMapping("user/completeInfo") + public Result 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 + * @author work@yujt.net.cn + * @date 2019/10/26 15:07 + */ + @GetMapping("user/prepareComplete") + public Result prepareCompleteUserInfo(@LoginUser TokenDto tokenDto) { + return appUserService.prepareCompleteUserInfo(tokenDto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScanSwitchController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiScanSwitchController.java new file mode 100644 index 000000000..343e73b6a --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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> page(@RequestParam Map params){ + PageData page = scanSwitchService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + ScanSwitchDTO data = scanSwitchService.get(id); + return new Result().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 + * @author qushutong + * @date 2019/10/10 11:58 + */ + @GetMapping("scanSwitch") + public Result> get(){ + Map data = scanSwitchService.getOne(); + return new Result>().ok(data); + } +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/v2/ApiAppUserV2Controller.java new file mode 100644 index 000000000..c06725cd9 --- /dev/null +++ b/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 + * @author work@yujt.net.cn + * @date 2019/10/26 10:48 + */ + @GetMapping("user/ma" + Constant.VERSION_CONTROL + "/getToken") + public Result getMaV2Token(EpdcAppUserRegisterFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return appUserService.getMaV2Token(formDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/dao/ScanSwitchDao.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/dao/ScanSwitchDao.java new file mode 100644 index 000000000..5cc8adbfa --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/entity/ScanSwitchEntity.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/entity/ScanSwitchEntity.java new file mode 100644 index 000000000..bb0e65661 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 019d9d706..1adefe60b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/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 getCompleteDept(@PathVariable("gridId") Long gridId); + + /** + * 网格长注册时,根据手机号,查询网格长管理的所有网格 + * + * @param mobile + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/22 16:54 + */ + @GetMapping("sys/user/listGridForLeader/{mobile}") + Result listGridWhileLeaderRegister(@PathVariable("mobile") String mobile); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 1bfd22d3b..151519066 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/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 getUserInfoByOpenId(@PathVariable("openId") String openId); + /** + * 查询用户基础信息 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 15:16 + */ + @GetMapping("app-user/epdc-app/user/getById/{userId}") + Result 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 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 completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto); + /** * 移动端获取用户信息 * @@ -149,4 +182,73 @@ public interface UserFeignClient { */ @GetMapping("app-user/epdc-app/wxformid/getByOpenId/{openId}") Result getWxFormId(@PathVariable("openId") String openId); + + /** + * 网格长注册 + * + * @param registerDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @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 gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto); + + + /** + * 网格长小程序端切换网格 + * + * @param switchGridDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @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 userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto); + + /** + * 获取网格长管理的网格列表 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2019/10/23 13:34 + */ + @GetMapping("app-user/epdc-app/usergrid/listUserGrid/{userId}") + Result> listUserGrid(@PathVariable("userId") String userId); + + + /** + * 查询用户注册状态 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [fromDto] + * @author liuchuang + * @since 2019/10/25 10:50 + */ + @GetMapping("app-user/epdc-app/user/checkUserRegister") + Result 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 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); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index bba5a42f0..227c3b1f8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/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 getCompleteDept(Long gridId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getCompleteDept", gridId); } + + @Override + public Result listGridWhileLeaderRegister(String mobile) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listGridWhileLeaderRegister", mobile); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index 9f94134fb..b798496aa 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/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 getUserInfoById(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserInfoById", userId); + } + @Override public Result 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 verifyUserCompleteData(UserDTO userDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "verifyUserCompleteData", userDto); + } + + @Override + public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "completeUserInfo", formDto); + } + @Override public Result getInfoById(String id) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getInfoById", id); @@ -75,4 +90,34 @@ public class UserFeignClientFallback implements UserFeignClient { public Result getWxFormId(String openId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getWxFormId", openId); } + + @Override + public Result gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "gridLeaderRegister", registerDto); + } + + @Override + public Result userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "userSwitchGrid", switchGridDto); + } + + @Override + public Result> listUserGrid(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "listUserGrid", userId); + } + + @Override + public Result getUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "getUserRegisterState", fromDto); + } + + @Override + public Result 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); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/resolver/LoginUserHandlerMethodArgumentResolver.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/resolver/LoginUserHandlerMethodArgumentResolver.java index 9c898240c..3a497815e 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/resolver/LoginUserHandlerMethodArgumentResolver.java +++ b/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; diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index ac10d6988..c31c1214b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java +++ b/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 mpUserRegister(EpdcUserRegistFormDTO formDto); /** @@ -92,6 +92,7 @@ public interface AppUserService { * @author yujintao * @date 2019/9/10 20:48 */ + @Deprecated Result 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 + * @author work@yujt.net.cn + * @date 2019/10/22 15:30 + */ + Result maGridLeaderRegister(EpdcGridLeaderRegisterSubmitFormDTO formDto); + + /** + * 用户小程序切换网格 + * + * @param userDetail + * @param gridId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/23 10:40 + */ + Result userSwitchGrid(TokenDto userDetail, String gridId); + + /** + * 获取用户的所有网格列表 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2019/10/23 15:58 + */ + Result> listUserGrid(String userId); + + /** + * 用户注册、获取Token + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [formDto] + * @author liuchuang + * @since 2019/10/24 16:33 + */ + Result 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 + * @author work@yujt.net.cn + * @date 2019/10/26 11:05 + */ + Result completeUserInfo(TokenDto tokenDto, EpdcCompleteUserInfoFormDTO formDto); + + /** + * 用于用户完善个人信息页面,获取个人信息 + * + * @param tokenDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 15:08 + */ + Result prepareCompleteUserInfo(TokenDto tokenDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ScanSwitchService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ScanSwitchService.java new file mode 100644 index 000000000..57c524118 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2019-10-10 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2019-10-10 + */ + List list(Map 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 getOne(); +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java index 9fe2363f8..59defbbbf 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AppUserServiceImpl.java +++ b/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 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 - * @author work@yujt.net.cn - * @date 2019/9/19 19:16 - */ - private Result getTokenByUnionId(String unionId) { - // 查询当前微信是否已注册用户 - Result 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 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 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 userGridList = ConvertUtils.sourceToTarget(leaderRegisterDto.getLeaderGridList(), UserGridRelationDTO.class); + + EpdcGridLeaderRegisterFormDTO registerDto = new EpdcGridLeaderRegisterFormDTO(); + registerDto.setGridLeader(gridLeaderRegister); + registerDto.setUserGridList(userGridList); + + Result 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 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 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 userSwitchGrid(TokenDto userDetail, String gridId) { + + String userId = userDetail.getUserId(); + + EpdcLeaderSwitchGridFormDTO switchGrid = new EpdcLeaderSwitchGridFormDTO(); + switchGrid.setAppUserId(userId); + switchGrid.setGridId(gridId); + // 更新用户-网格关系表,更新将要切换的网格的 SWITCHED_TIME 字段 + Result 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> 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 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 userResult = userFeignClient.getUserRegisterState(checkFromDto); + if (!userResult.success()) { + return new Result().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 + * @params [checkUserResult, unionId] + * @author liuchuang + * @since 2019/10/25 12:49 + */ + private Result 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 registerBindGridResultDto = userFeignClient.registerOrBindGrid(registerBindGridFormDto); + if (!registerBindGridResultDto.success()) { + return new Result().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().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 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 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 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 prepareCompleteUserInfo(TokenDto tokenDto) { + + Result 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().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 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; + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java index 66fedfe53..146c72c36 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java +++ b/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); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ScanSwitchServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ScanSwitchServiceImpl.java new file mode 100644 index 000000000..0083f3744 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 implements ScanSwitchService { + + @Autowired + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ScanSwitchDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ScanSwitchDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper 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 getOne() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.orderByDesc("updated_time"); + ScanSwitchEntity scanSwitchEntity = baseDao.selectOne(wrapper); + Map map=new HashMap<>(); + map.put("switch",scanSwitchEntity.getScanSwitch()); + return map; + } + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/mapper/ScanSwitchDao.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/mapper/ScanSwitchDao.xml new file mode 100644 index 000000000..e16e6f975 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/mapper/ScanSwitchDao.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml index 1edcaa275..0fee0b718 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml @@ -28,6 +28,11 @@ epdc-news-client 1.0.0 + + com.esua.epdc + epdc-websocket-client + 1.0.0 + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java new file mode 100644 index 000000000..12afd25c8 --- /dev/null +++ b/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 + * + * @Author:liuchuang + * @Date:2019/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; +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcEventsDetailDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcEventsDetailDTO.java index e196c4d6e..050d8e539 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcEventsDetailDTO.java +++ b/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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcRejectEventDetailDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcRejectEventDetailDTO.java index 90956bb3d..edc82e604 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/events/EpdcRejectEventDetailDTO.java +++ b/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 images; + /** + * 纬度 + */ + private Double issueLatitude; + /** + * 经度 + */ + private Double issueLongitude; + /** + * 所属网格详细信息 + */ + private String ownGrid; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueContentDetailDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueContentDetailDTO.java index 2cd99c51d..dfb3804c9 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueContentDetailDTO.java +++ b/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 feedbackDTOList; + /** + * 事件地址 + */ + private String address; + /** + * 纬度 + */ + private Double issueLatitude; + /** + * 经度 + */ + private Double issueLongitude; + /** + * 所属网格详细信息 + */ + private String ownGrid; + /** + * 所属类别 + */ + private String categoryName; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueDTO.java index fad6289e5..839f141b3 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueDTO.java +++ b/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 */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueJobFeedbackDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueJobFeedbackDTO.java index efba350f8..ab1ec7846 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueJobFeedbackDTO.java +++ b/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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java index cfbf08d7e..36e24bc8f 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/IssueWaitHandleDetailDTO.java +++ b/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 jobFeedbackDTOS; + /** + * 事件地址 + */ + private String address; + /** + * 纬度 + */ + private Double issueLatitude; + /** + * 经度 + */ + private Double issueLongitude; + /** + * 所属网格详细信息 + */ + private String ownGrid; + /** + * 类别 + */ + private String categoryName; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssuesAndEventsOfMineFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssuesAndEventsOfMineFormDTO.java index 71f0784a4..817bac971 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssuesAndEventsOfMineFormDTO.java +++ b/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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDTO.java index 8d3d0e5a0..01dd12909 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDTO.java +++ b/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; + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDeptDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDeptDTO.java index 085978bb3..dc92629b3 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/ItemDeptDTO.java +++ b/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; + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemFormDTO.java index 67d16e396..fb6ff2020 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemFormDTO.java +++ b/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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemOfMineFormDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemOfMineFormDTO.java index b928a3072..fab0ff268 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/form/ItemOfMineFormDTO.java +++ b/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 diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemContentForPCEndResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemContentForPCEndResultDTO.java index d024fc2fa..424003916 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemContentForPCEndResultDTO.java +++ b/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 deptEvaluateResultDTOS; + /** + * 地址 + */ + private String issueAddress; + /** + * 纬度 + */ + private Double issueLatitude; + /** + * 经度 + */ + private Double issueLongitude; + /** + * 所属类别 + */ + private String categoryName; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemDetailForPCEndResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemDetailForPCEndResultDTO.java index b7f440492..05d475f7c 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemDetailForPCEndResultDTO.java +++ b/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 evaluateDeptDTOS; + + /** + * 纬度 + */ + private Double issueLatitude; + /** + * 经度 + */ + private Double issueLongitude; + /** + * 所属类别 + */ + private String categoryName; + + /** + * 支持数 + */ + private Integer approveNum; + /** + * 反对数 + */ + private Integer opposeNum; + /** + * 评论数 + */ + private Integer commentNum; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleProgressResultDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleProgressResultDTO.java index 7c08ba731..55bfc6162 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/item/result/ItemHandleProgressResultDTO.java +++ b/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 itemDeptDTOS; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java index f70c075dc..4a455c0fc 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/enums/ItemHandleCategoryEnum.java +++ b/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, "结案"); diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java index 8a43096a0..82fe374ec 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java +++ b/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 userIds = null; + if (null != userId) { + userIds = Collections.singletonList(userId); + } else { + // 获取部门下所有用户ID + Result> 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); + } + } + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java index eb1681cd1..602383c9a 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java +++ b/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().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(); + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java index 054d166c5..baeed4a1b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java +++ b/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 { * @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); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/EpdcEventsEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/EpdcEventsEntity.java index b887847e9..94dd4c87d 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/entity/EpdcEventsEntity.java +++ b/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 { * 党员标识 0:否,1:是 */ 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 */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java index f1b28c38a..58fd5bb72 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java +++ b/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 { * @Date: 2019/9/17 17:36 */ Result 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(); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java index 9d4d87f9b..37f2600a6 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java +++ b/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 listOfPendingReviewEvents(Map params) { IPage page = getPage(params); @@ -129,6 +135,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl().ok(data); } + @Override + public void initMenuNotice() { + Long deptId = SecurityUser.getDeptId(); + Long userId = SecurityUser.getUserId(); + // 获取部门信息 + Result 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> listOfItemCirculationDept(@PathVariable("deptId") Long deptId); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptIds] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author liuchuang + * @since 2019/10/29 16:22 + */ + @GetMapping("sys/user/ids/{deptId}") + Result> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId); + + /** + * + * 获取部门信息 + * + * @params [id] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/30 14:11 + */ + @GetMapping("sys/dept/{id}") + Result getSysDeptInfo(@PathVariable("id") Long id); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java new file mode 100644 index 000000000..a469b66e4 --- /dev/null +++ b/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模块调用 + * + * @Author:liuchuang + * @Date:2019/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); +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java index 5cf20f510..c18e3da90 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java +++ b/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> listOfItemCirculationDept(Long deptId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listOfItemCirculationDept", deptId); } + + @Override + public Result> getUserIdsByDeptIds(Long deptId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserIdsByDeptIds", deptId); + } + + @Override + public Result getSysDeptInfo(@PathVariable("id") Long id) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getSysDeptInfo", id); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java new file mode 100644 index 000000000..b1ef241b3 --- /dev/null +++ b/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; + +/** + * @Author:liuchuang + * @Date:2019/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)+"}"; + } +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java index be01bf519..8ea7d5b0b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java +++ b/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 { */ List selectListOfIssuesAndEventsOfMine(IssuesAndEventsOfMineFormDTO formDTO); + /** + * + * 根据网格ID 状态获取议题 + * + * @params [deptId, state] + * @return int + * @author liuchuang + * @since 2019/10/30 12:42 + */ + int selectCountOfDeptNotice(Long deptId, int state); + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/entity/IssueEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/entity/IssueEntity.java index 76e4d3430..2ac9471a7 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/entity/IssueEntity.java +++ b/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 */ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java index f6c3de858..ef70d6f12 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java +++ b/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 { * @Date: 2019/9/17 17:36 */ Result getEventDetail(String eventId); + + /** + * + * 发送菜单消息-议题待处理 + * + * @params [deptId] + * @return void + * @author liuchuang + * @since 2019/10/29 18:13 + */ + void sendIssueHandleMenuNotice(Long deptId, Long userId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java index 3bc9fe0d4..38aa80822 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java +++ b/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 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 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 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 imp itemEntity.setGroupId(issueEntity.getGroupId()); itemEntity.setGroupName(issueEntity.getGroupName()); itemEntity.setItemState(EventIssueItemState.ITEM_HANDLING); + itemEntity.setLastHandleTime(new Date()); return itemEntity; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java index dd543da0f..6f96bfa31 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java +++ b/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 { */ List selectListOfItems(ItemFormDTO formDto, int[] states); + /** + * + * 移动端-我的项目列表 + * + * @params [formDto, states] + * @return java.util.List + * @author liuchuang + * @since 2019/10/31 16:28 + */ + List selectListItemsOfMine(ItemFormDTO formDto, int[] states); + /** * 移动端-项目详情 * @Params: [formDto] @@ -112,4 +123,26 @@ public interface ItemDao extends BaseDao { */ 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); + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java index 2c11f9c10..f06d93adf 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java +++ b/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 { */ List getItemDept(String itemId, Long createdDeptId); + /** + * + * 获取已流转部门ID + * + * @params [itemId, createdDeptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/30 11:17 + */ + List selectListWhistlingDeptIds(String itemId, Long createdDeptId); + /** * 删除已流转协助部门 * @Params: [createdDeptId] diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDeptEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDeptEntity.java index 396003b8b..0dc7210fb 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDeptEntity.java +++ b/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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java index 3ca0decdd..7da97889a 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java +++ b/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; - /** - * 党员标识 0:否,1:是 - */ - private String isPartyMember; + /** + * 党员标识 0:否,1:是 + */ + 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; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java index 96d25c01d..c3cee906b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java +++ b/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 { */ List listOfItemDept(String itemId, Long createdDeptId); + /** + * + * 获取已流转部门ID + * + * @params [itemId, createdDeptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/30 11:16 + */ + List listOfWhistlingDeptIds(String itemId, Long createdDeptId); + /** * 删除已流转协助部门 * @Params: [createdDeptId] @@ -68,7 +79,7 @@ public interface ItemDeptService extends BaseService { * @Author: liuchuang * @Date: 2019/9/16 20:08 */ - void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO); + void saveItemDepts(Long createdDeptId, ItemHandleSubmitFormDTO formDTO, String itemHandleId); /** * 获取参与项目流转部门 diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java index a0cef6373..0aac60bbf 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java +++ b/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 { * @Date: 2019/9/17 13:37 */ Result> 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 deptIds, Long userId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java index f3c5617da..930e0a17e 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java +++ b/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 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 deptEntities = new ArrayList<>(); for (ItemCirculationDeptResultDTO dto: formDTO.getDeptResultDTOS()) { @@ -70,6 +75,7 @@ public class ItemDeptServiceImpl extends BaseServiceImpl implem return ConvertUtils.sourceToTarget(entityList, ItemDTO.class); } - private QueryWrapper getWrapper(Map params){ - String id = (String)params.get(FieldConstant.ID_HUMP); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); @@ -201,7 +203,7 @@ public class ItemServiceImpl extends BaseServiceImpl 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 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 implem /** * 项目详情-网格-可做操作和可流转部门 + * * @Params: [resultDTO, itemDeptDTOS] * @Return: com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO * @Author: liuchuang @@ -270,7 +273,7 @@ public class ItemServiceImpl extends BaseServiceImpl 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 implem /** * 项目详情-社区、街道部门、区直部门-可做操作 + * * @Params: [resultDTO] * @Return: com.elink.esua.epdc.dto.item.result.ItemDetailForPCEndResultDTO * @Author: liuchuang @@ -336,13 +340,14 @@ public class ItemServiceImpl extends BaseServiceImpl 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 itemDeptDTOS) { + List itemDeptDTOS) { // 可流转部门 Result> listResult = adminFeignClient.listOfItemCirculationDept(SecurityUser.getDeptId()); if (!listResult.success()) { @@ -351,14 +356,14 @@ public class ItemServiceImpl extends BaseServiceImpl implem List deptDTOS = listResult.getData(); // 初始化可流转部门-街道党工委:街道部门、区直部门 List 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 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 implem } handleProcessEntity.setState(EventIssueItemState.ITEM_HANDLING); + // 获取已流转部门信息 + List 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 circulationDeptResultDTOS = dto.getDeptResultDTOS(); + List newDeptIds = new ArrayList<>(); + for (ItemCirculationDeptResultDTO circulationDto : + circulationDeptResultDTOS) { + newDeptIds.add(circulationDto.getDeptId()); + } + TreeSet longTreeSet = new TreeSet<>(); + longTreeSet.addAll(oldDeptIds); + longTreeSet.addAll(newDeptIds); + List deptIds = new ArrayList<>(longTreeSet); + // 发送菜单消息-待处理项目-吹哨部门 + this.sendWhistlingDeptItemHandleMenuNotice(deptIds, null); } else { handleProcessEntity.setState(dto.getHandleCategory()); // 更新项目状态 @@ -444,6 +469,12 @@ public class ItemServiceImpl extends BaseServiceImpl 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 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 implem /** * 项目流转校验 + * * @Params: [dto] * @Return: com.elink.esua.epdc.commons.tools.utils.Result * @Author: liuchuang @@ -476,7 +524,7 @@ public class ItemServiceImpl extends BaseServiceImpl 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 implem // 获取街道党工委已流转协助部门 List 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 implem formDto.setUserId(formDTO.getUserId()); // 查询数据状态 int[] states = {EventIssueItemState.ITEM_HANDLING, EventIssueItemState.ITEM_CLOSED, EventIssueItemState.ITEM_CLOSEING_CASE}; - List data = baseDao.selectListOfItems(formDto, states); + List data = baseDao.selectListItemsOfMine(formDto, states); return new Result>().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 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); + } + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml index 1c6ad43d2..bbe12d26b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml @@ -6,8 +6,12 @@ + + + + @@ -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 @@ + + + + @@ -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} + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml index 7714b5319..47a641a18 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml @@ -40,7 +40,13 @@ + + + + + + @@ -48,6 +54,7 @@ + @@ -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 @@ + + + + + + @@ -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 + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml index 557cf148e..12b42067f 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml +++ b/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} ORDER BY + + t1.LAST_HANDLE_TIME DESC + t1.CREATED_TIME DESC LIMIT #{formDto.pageIndex},#{formDto.pageSize} ) temp ) ORDER BY + + item.LAST_HANDLE_TIME DESC + item.CREATED_TIME DESC, - img.CREATED_TIME + img.IMG_URL + + + @@ -268,8 +359,15 @@ + + + + + + + @@ -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 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, - HANDLE_ADVICE AS advice, + hp.HANDLE_ADVICE AS advice, - OUT_HANDLE_ADVICE AS advice, + hp.OUT_HANDLE_ADVICE AS advice, - 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 @@ + + + + + @@ -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 + + + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml index 5eee2ec33..97938a5b7 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml +++ b/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} + + UPDATE epdc_item_dept SET DEL_FLAG = '1' WHERE CREATED_DEPT_ID = #{createdDeptId} AND ITEM_ID = #{itemId} AND DEPT_ID != #{createdDeptId} diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java index 4a590b804..d8c9711f9 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java +++ b/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 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 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 newsGridList = Lists.newArrayList(); if (null != entity.getCommunityId()) { @@ -234,12 +239,14 @@ public class NewsServiceImpl extends BaseServiceImpl 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 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 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> listNews(EpdcNewsListFromDTO formDto) { diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml index 8bfcd5b93..d1c5e0c34 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/pom.xml @@ -14,7 +14,7 @@ [7.2.0, 7.2.99] - 2.8.3 + 3.5.0 3.2.2 5.4.4 1.26.2 diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java index eb7b9a92e..dc4682e7d 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/cloud/AliyunCloudStorageService.java @@ -1,21 +1,23 @@ /** * Copyright (c) 2018 人人开源 All rights reserved. - * + *

* https://www.renren.io - * + *

* 版权所有,侵权必究! */ package com.elink.esua.epdc.cloud; +import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClient; -import com.elink.esua.epdc.commons.tools.exception.RenException; -import com.elink.esua.epdc.exception.ModuleErrorCode; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.OSSObject; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.exception.ModuleErrorCode; -import java.io.ByteArrayInputStream; -import java.io.InputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.URLEncoder; /** * 阿里云存储 @@ -24,7 +26,7 @@ import java.io.InputStream; */ public class AliyunCloudStorageService extends AbstractCloudStorageService { - public AliyunCloudStorageService(CloudStorageConfig config){ + public AliyunCloudStorageService(CloudStorageConfig config) { this.config = config; } @@ -40,7 +42,7 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService { try { client.putObject(config.getAliyunBucketName(), path, inputStream); client.shutdown(); - } catch (Exception e){ + } catch (Exception e) { throw new RenException(ModuleErrorCode.OSS_UPLOAD_FILE_ERROR, e, ""); } @@ -56,4 +58,46 @@ public class AliyunCloudStorageService extends AbstractCloudStorageService { public String uploadSuffix(InputStream inputStream, String suffix) { return upload(inputStream, getPath(config.getAliyunPrefix(), suffix)); } + + /** + * 下载阿里云oss服务器上的文件 + * + * @param url 完整的访问连击 + * @param response + * @return void + * @author work@yujt.net.cn + * @date 2019/10/24 14:43 + */ + public void download(String url, HttpServletResponse response) throws IOException { + + OSS ossClient = new OSSClientBuilder().build(config.getAliyunEndPoint(), config.getAliyunAccessKeyId(), config.getAliyunAccessKeySecret()); + + String objectName = url.replace(config.getAliyunDomain().concat("/"), ""); + String filename = objectName.substring(objectName.lastIndexOf("/") + 1); + // 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。 + OSSObject ossObject = ossClient.getObject(config.getAliyunBucketName(), objectName); + // 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。 + InputStream content = ossObject.getObjectContent(); + if (null != content) { + response.setCharacterEncoding("UTF-8"); + response.setHeader("Pragma", "No-Cache"); + response.setHeader("Cache-Control", "No-Cache"); + response.setDateHeader("Expires", 0); + response.setContentType("application/msexcel; charset=UTF-8"); + // 设定输出文件头 + response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8")); + + OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); + byte[] buf = new byte[1024]; + + int L; + while ((L = content.read(buf)) != -1) { + toClient.write(buf, 0, L); + } + content.close(); + toClient.flush(); + toClient.close(); + ossClient.shutdown(); + } + } } diff --git a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java index c248c3a61..b0012a429 100644 --- a/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java +++ b/esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java @@ -8,6 +8,8 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.cloud.AbstractCloudStorageService; +import com.elink.esua.epdc.cloud.AliyunCloudStorageService; import com.elink.esua.epdc.commons.tools.annotation.LogOperation; import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.page.PageData; @@ -33,11 +35,17 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import sun.misc.BASE64Decoder; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Arrays; import java.util.Map; @@ -112,6 +120,25 @@ public class OssController { return ossService.afterUpload(url, file.getSize()); } + /** + * 下载阿里云oss服务器上的文件 + * + * @param url 完整的访问链接 + * @param response 浏览器返回 + * @return void + * @author work@yujt.net.cn + * @date 2019/10/24 14:43 + */ + @GetMapping("download") + public void download(String fileUrl, HttpServletResponse response) throws Exception { + AbstractCloudStorageService build = OssFactory.build(); + if (build instanceof AliyunCloudStorageService) { + AliyunCloudStorageService aliyunCloudStorageService = (AliyunCloudStorageService) build; + aliyunCloudStorageService.download(fileUrl, response); + } + } + + @DeleteMapping @ApiOperation(value = "删除") @LogOperation("删除") diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/constant/UserFieldConsant.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/constant/UserFieldConsant.java index 36bf2f875..4fb7d7b44 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/constant/UserFieldConsant.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/constant/UserFieldConsant.java @@ -18,4 +18,7 @@ public interface UserFieldConsant { String WX_UNION_ID = "WX_UNION_ID"; String IDENTITY_NO = "IDENTITY_NO"; String REGISTER_TIME = "REGISTER_TIME"; + String USER_ID = "USER_ID"; + String SWITCHED_TIME = "SWITCHED_TIME"; + String STATE = "STATE"; } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserDTO.java index 98c08fd56..00d6c2a51 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserDTO.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserDTO.java @@ -211,7 +211,7 @@ public class UserDTO implements Serializable { private String inviteUserId; /** - * 状态(0-未审核,1-审核通过,2-审核未通过) + * 状态,参考枚举类:{@link com.elink.esua.epdc.enums.AppUserStatesEnum} */ private String state; @@ -298,10 +298,6 @@ public class UserDTO implements Serializable { * 干部下沉 0不 */ private String cadreFlag; - /** - * 是否通过 0不 - */ - private String pass; /** * 党员标签 */ diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserGridRelationDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserGridRelationDTO.java new file mode 100644 index 000000000..61e7cfb1a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserGridRelationDTO.java @@ -0,0 +1,126 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@Data +public class UserGridRelationDTO implements Serializable { + + private static final long serialVersionUID = 3528030593209505024L; + + /** + * 主键 + */ + private String id; + + /** + * 用户ID + */ + private String userId; + + /** + * 区县 + */ + private String district; + + /** + * 区县ID + */ + private Long districtId; + + /** + * 街道 + */ + private String street; + + /** + * 街道ID + */ + private Long streetId; + + /** + * 社区 + */ + private String community; + + /** + * 社区ID + */ + private Long communityId; + + /** + * 所属网格 + */ + private String grid; + + /** + * 网格ID + */ + private Long gridId; + + /** + * 最后切换此网格的时间 + */ + private Date switchedTime; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 是否是网格长 0否1是 + */ + private String leaderFlag; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java new file mode 100644 index 000000000..fa7b52f85 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcCompleteAppUserDTO.java @@ -0,0 +1,97 @@ +package com.elink.esua.epdc.dto.epdc; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 完善个人信息,传送数据到user模块 + * + * @author work@yujt.net.cn + * @date 2019/10/29 09:15 + */ +@Data +public class EpdcCompleteAppUserDTO implements Serializable { + + + private static final long serialVersionUID = -8356026348661169354L; + + /** + * 主键 + */ + private String id; + + /** + * 昵称 + */ + private String nickname; + + /** + * 手机号 + */ + private String mobile; + + /** + * 性别(女性-0,男性-1) + */ + private String sex; + + /** + * 生日 + */ + private Date birthday; + + /** + * 真实姓名 + */ + private String realName; + + /** + * 身份证号 + */ + private String identityNo; + + /** + * 所在道路(如山东路168号) + */ + private String road; + + private String address; + + /** + * 小区名称 + */ + private String villageName; + + /** + * 住处(楼栋-单元-房间) + */ + private String dwellingPlace; + + /** + * 是否是党员(0-否,1-是) + */ + private String partyFlag; + + /** + * 手机号所属省份 + */ + private String mobileProvince; + + /** + * 手机号所属城市 + */ + private String mobileCity; + + /** + * 手机号所属运营商 + */ + private String mobileCarrier; + + /** + * 状态(0-未审核,1-审核通过,2-审核未通过) + */ + private String state; + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcGridLeaderRegisterDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcGridLeaderRegisterDTO.java new file mode 100644 index 000000000..842d73995 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/EpdcGridLeaderRegisterDTO.java @@ -0,0 +1,109 @@ +package com.elink.esua.epdc.dto.epdc; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 网格长注册用 + * + * @author work@yujt.net.cn + * @date 2019/10/30 17:41 + */ +@Data +public class EpdcGridLeaderRegisterDTO implements Serializable { + + private static final long serialVersionUID = -637346365680474316L; + + /** + * 主键 + */ + private String id; + + /** + * 昵称 + */ + private String nickname; + + /** + * 手机号 + */ + private String mobile; + + /** + * 注册时间 + */ + private Date registerTime; + + /** + * 头像 + */ + private String faceImg; + + /** + * 性别(女性-female,男性-male) + */ + private String sex; + + /** + * 邮箱 + */ + private String email; + + /** + * 最近登录IP + */ + private String lastLoginIp; + + /** + * 真实姓名 + */ + private String realName; + + /** + * 微信OPENID + */ + private String wxOpenId; + + /** + * 微信unionId + */ + private String wxUnionId; + + /** + * 是否是党员(0-否,1-是) + */ + private String partyFlag; + + /** + * 注册方式(wx:微信注册) + */ + private String registerWay; + + /** + * 用户来源(wp:公众号) + */ + private String registerSource; + + /** + * 手机号所属省份 + */ + private String mobileProvince; + + /** + * 手机号所属城市 + */ + private String mobileCity; + + /** + * 手机号所属运营商 + */ + private String mobileCarrier; + + /** + * 状态,参考枚举类:{@link com.elink.esua.epdc.enums.AppUserStatesEnum} + */ + private String state; + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserCompleteInfoFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserCompleteInfoFormDTO.java new file mode 100644 index 000000000..b48d7e95c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcAppUserCompleteInfoFormDTO.java @@ -0,0 +1,23 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.EpdcCompleteAppUserDTO; +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户完善个人信息 + * + * @author work@yujt.net.cn + * @date 2019/10/26 11:50 + */ +@Data +public class EpdcAppUserCompleteInfoFormDTO implements Serializable { + + private static final long serialVersionUID = 6891651684067520384L; + + private EpdcCompleteAppUserDTO completeAppUser; + + private UserGridRelationDTO userGridRelation; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcCheckUserRegisterFromDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcCheckUserRegisterFromDTO.java new file mode 100644 index 000000000..41efa78fe --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcCheckUserRegisterFromDTO.java @@ -0,0 +1,24 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author:liuchuang + * @Date:2019/10/25 10:44 + */ +@Data +public class EpdcCheckUserRegisterFromDTO implements Serializable { + private static final long serialVersionUID = 5007833389572469304L; + + /** + * 微信openid + */ + private String openId; + + /** + * 网格ID + */ + private Long gridId; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterFormDTO.java new file mode 100644 index 000000000..e90f0e9d1 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterFormDTO.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.EpdcGridLeaderRegisterDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 网格长注册(来自api模块数据组装) + * + * @author work@yujt.net.cn + * @date 2019/10/23 09:28 + */ +@Data +public class EpdcGridLeaderRegisterFormDTO implements Serializable { + + private static final long serialVersionUID = -3300063484743833705L; + + private EpdcGridLeaderRegisterDTO gridLeader; + + private List userGridList; + +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterSubmitFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterSubmitFormDTO.java new file mode 100644 index 000000000..5dee1d708 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcGridLeaderRegisterSubmitFormDTO.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 网格长在移动端注册(来自用户移动端表单提交) + * + * @author work@yujt.net.cn + * @date 2019/10/22 15:30 + */ +@Data +public class EpdcGridLeaderRegisterSubmitFormDTO implements Serializable { + + private static final long serialVersionUID = 7057504211898721084L; + + /** + * 手机号 + */ + @NotBlank(message = "手机号不能为空") + private String mobile; + + /** + * 短信验证码 + */ + @NotBlank(message = "短信验证码不能为空") + private String smsCode; + + /** + * 微信code + */ + @NotBlank(message = "微信code不能为空") + private String wxCode; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcLeaderSwitchGridFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcLeaderSwitchGridFormDTO.java new file mode 100644 index 000000000..417c30d0a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcLeaderSwitchGridFormDTO.java @@ -0,0 +1,27 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 网格长小程序端切换网格 + * + * @author work@yujt.net.cn + * @date 2019/10/23 11:02 + */ +@Data +public class EpdcLeaderSwitchGridFormDTO implements Serializable { + + private static final long serialVersionUID = 7057504211898721084L; + + /** + * 用户id + */ + private String appUserId; + + /** + * 网格id + */ + private String gridId; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserRegisterBindGridFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserRegisterBindGridFormDTO.java new file mode 100644 index 000000000..f82f15154 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcUserRegisterBindGridFormDTO.java @@ -0,0 +1,31 @@ +package com.elink.esua.epdc.dto.epdc.form; + +import com.elink.esua.epdc.dto.UserDTO; +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author:liuchuang + * @Date:2019/10/25 13:42 + */ +@Data +public class EpdcUserRegisterBindGridFormDTO implements Serializable { + private static final long serialVersionUID = -1727679108959262842L; + + /** + * 注册状态 0-注册并绑定网格,1-绑定网格 + */ + private Integer registerState; + + /** + * 用户信息 + */ + private UserDTO userDTO; + + /** + * 关联网格信息 + */ + private UserGridRelationDTO gridRelationDTO; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java new file mode 100644 index 000000000..5957f88ab --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcPartyErroyResultDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author: qushutong + * @Date: 2019/11/4 17:06 + * @Description: 批量导入党员错误反馈 + */ +@Data +public class EpdcPartyErroyResultDTO implements Serializable { + + private static final long serialVersionUID = 5643743407138967806L; + + /** + * 错误数据行数 + */ + private String erroLine; + + /** + * 错误数据信息 + */ + private String errorInfo; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserGridResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserGridResultDTO.java new file mode 100644 index 000000000..46d8497de --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserGridResultDTO.java @@ -0,0 +1,21 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户扫码关联的网格 + * + * @author work@yujt.net.cn + * @date 2019/10/23 11:19 + */ +@Data +public class EpdcUserGridResultDTO implements Serializable { + + private static final long serialVersionUID = -2330556079892327467L; + + private String grid; + + private Long gridId; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserRegisterInfoResultDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserRegisterInfoResultDTO.java new file mode 100644 index 000000000..2930b0ecc --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/epdc/result/EpdcUserRegisterInfoResultDTO.java @@ -0,0 +1,35 @@ +package com.elink.esua.epdc.dto.epdc.result; + +import com.elink.esua.epdc.dto.UserDTO; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author:liuchuang + * @Date:2019/10/25 10:36 + */ +@Data +public class EpdcUserRegisterInfoResultDTO implements Serializable { + private static final long serialVersionUID = -3864608925023310419L; + + /** + * 注册状态 0-未注册未绑定网格,1-已注册未绑定当前网格,2-已注册已绑定当前网格 + */ + private Integer registerState; + + /** + * 网格 + */ + private String grid; + + /** + * 网格ID + */ + private Long gridId; + + /** + * 用户信息 + */ + private UserDTO userDTO; +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserAuditStateEnum.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserAuditStateEnum.java index d1a2f04b4..ac2ae1e6c 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserAuditStateEnum.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserAuditStateEnum.java @@ -4,11 +4,13 @@ import com.elink.esua.epdc.commons.tools.constant.NumConstant; /** * 用户审核状态枚举 + * 项目二期,所有的审核状态统一使用枚举类{@link AppUserStatesEnum}的枚举项 * * @author yujintao * @email yujintao@elink-cn.com * @date 2019/9/7 10:50 */ +@Deprecated public enum AppUserAuditStateEnum { /** diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserRegisterSourceEnum.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserRegisterSourceEnum.java index 88727ed9f..647c2f962 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserRegisterSourceEnum.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserRegisterSourceEnum.java @@ -12,7 +12,12 @@ public enum AppUserRegisterSourceEnum { /** * 微信公众号 */ - WP("wp"); + WP("wp"), + + /** + * 微信小程序 + */ + MA("ma"); private String value; diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStateEnum.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStateEnum.java deleted file mode 100644 index a6404e0d1..000000000 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStateEnum.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.elink.esua.epdc.enums; - -import com.elink.esua.epdc.commons.tools.constant.NumConstant; - -/** - * 用户状态枚举 - * - * @author yujintao - * @email yujintao@elink-cn.com - * @date 2019/9/7 10:50 - */ -public enum AppUserStateEnum { - - /** - * 0已注册 - */ - REGISTERED(NumConstant.ZERO_STR), - /** - * 1未注册需扫码 - */ - UNREGISTERED(NumConstant.ONE_STR), - /** - * 2注册审核中 - */ - UNDER_AUDIT(NumConstant.TWO_STR), - /** - * 3注册审核失败 - */ - AUDIT_FAILURE(NumConstant.THREE_STR); - - private String value; - - AppUserStateEnum(String value) { - this.value = value; - } - - public String value() { - return value; - } - -} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStatesEnum.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStatesEnum.java new file mode 100644 index 000000000..5272a76bd --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStatesEnum.java @@ -0,0 +1,47 @@ +package com.elink.esua.epdc.enums; + +import com.elink.esua.epdc.commons.tools.constant.NumConstant; + +/** + * 移动端用户状态枚举 + * + * @Author:liuchuang + * @Date:2019/10/25 9:32 + */ +public enum AppUserStatesEnum { + + /** + * 已注册 + */ + STATE_REGISTERED(NumConstant.ZERO_STR), + + /** + * 已完善信息待审核 + */ + STATE_COMPLETED_INFORMATION_PENDING_REVIEW(NumConstant.ONE_STR), + + /** + * 信息审核不通过 + */ + STATE_INFORMATION_NOT_PASSED(NumConstant.TWO_STR), + + /** + * 信息审核通过 + */ + STATE_INFORMATION_PASSED(NumConstant.THREE_STR), + + /** + * 用户未注册 + */ + STATE_NOT_REGISTERED(NumConstant.FOUR_STR); + + private String value; + + AppUserStatesEnum(String value) { + this.value = value; + } + + public String value() { + return value; + } +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java new file mode 100644 index 000000000..16b096756 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/async/PartyTask.java @@ -0,0 +1,54 @@ +package com.elink.esua.epdc.async; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import com.alibaba.fastjson.JSON; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.config.StreamUtils; +import com.elink.esua.epdc.dto.PartyMembersDTO; +import com.elink.esua.epdc.entity.PartyMembersEntity; +import com.elink.esua.epdc.excel.PartyMembersExcel; +import com.elink.esua.epdc.service.PartyMembersService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.List; + + +/** + * @author: qushutong + * @Date: 2019/10/24 16:00 + * @Description: 党员导入异步 + */ +@Component +public class PartyTask { + + @Autowired + private PartyMembersService partyMembersService; + + /*** + * 批量插入党员 + * @param file + * @return void + * @author qushutong + * @date 2019/10/24 16:02 + */ +// @Async +// public void insertPartyList(MultipartFile file) { +// File f = StreamUtils.conversionFile(file); +// ImportParams importParams = new ImportParams(); +// try { +// List partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); +// partyMembersService.saveList(partyList); +// for (PartyMembersExcel partyMembers : partyList) { +// System.out.println("从Excel导入数据到数据库的详细为 :{}" + JSON.toJSONString(partyMembers)); +// } +// System.out.println("从Excel导入数据一共 {} 行 " + partyList.size()); +// } catch (Exception e1) { +// throw new RuntimeException("导入失败:{}" + e1.getMessage()); +// } +// } +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java new file mode 100644 index 000000000..1caef31ae --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/config/StreamUtils.java @@ -0,0 +1,56 @@ +package com.elink.esua.epdc.config; + +import com.elink.esua.epdc.commons.tools.exception.RenException; +import org.springframework.web.multipart.MultipartFile; + +import java.io.*; + +/** + * 接收文件转化File + * Created by liuhongwei on 2019/6/21. + */ +public class StreamUtils { + + + + public static File conversionFile(MultipartFile file){ + + File toFile =null; + InputStream ins = null; + try { + // 转化字节流 + ins = file.getInputStream(); + // 获取文件名字 + toFile = new File(file.getOriginalFilename()); + // 字节转化文件 + inputStreamToFile(ins, toFile); + ins.close(); + } catch (IOException e) { + new RenException(500,"文件转化失败"); + } + return toFile; + } + + + /** + * 流转化 + * @param ins file + * @return + * @author liuhongwei + * @date 2019/6/14 14:07 + */ + public static void inputStreamToFile(InputStream ins, File file) { + try { + OutputStream os = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + ins.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java index 16c2c58bc..b74748c98 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java @@ -5,6 +5,8 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO; +import com.elink.esua.epdc.dto.epdc.form.*; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO; 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.result.EpdcUserGroupInviteResultDTO; @@ -41,6 +43,20 @@ public class EpdcAppUserController { return userService.getUserInfoByOpenId(openId); } + /** + * 查询用户基础信息 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 15:13 + */ + @GetMapping("getById/{userId}") + public Result getUserInfoById(@PathVariable("userId") String userId) { + UserDTO dto = userService.get(userId); + return new Result().ok(dto); + } + /** * 登录前,获取用户信息 * @@ -80,6 +96,19 @@ public class EpdcAppUserController { return userService.userRegister(userDto); } + /** + * 网格长注册 + * + * @param registerDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/23 09:34 + */ + @PostMapping("gridLeaderRegister") + public Result gridLeaderRegister(@RequestBody EpdcGridLeaderRegisterFormDTO registerDto) { + return userService.gridLeaderRegister(registerDto); + } + /*** * @Description 移动端获取用户信息 * @Author qushutong @@ -136,11 +165,10 @@ public class EpdcAppUserController { } /** - * * 社群添加好友列表 * + * @return com.elink.esua.epdc.commons.tools.utils.Result> * @params [formDto] - * @return com.elink.esua.epdc.commons.tools.utils.Result> * @author liuchuang * @since 2019/10/23 16:22 */ @@ -149,4 +177,75 @@ public class EpdcAppUserController { List data = userService.listOfInviteUsers(formDto); return new Result>().ok(data); } + + /** + * 检查用户注册状态 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [fromDto] + * @author liuchuang + * @since 2019/10/25 11:11 + */ + @GetMapping("checkUserRegister") + public Result getUserRegisterState(@RequestBody EpdcCheckUserRegisterFromDTO fromDto) { + return userService.checkUserRegisterState(fromDto); + } + + /** + * 用户注册或绑定网格 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [fromDto] + * @author liuchuang + * @since 2019/10/25 14:30 + */ + @PostMapping("registerOrBindGrid") + public Result registerOrBindGrid(@RequestBody EpdcUserRegisterBindGridFormDTO fromDto) { + return userService.saveUserOrBindGrid(fromDto); + } + + /** + * 更新用户微信信息 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [userDTO] + * @author liuchuang + * @since 2019/10/25 17:10 + */ + @PostMapping("updateWxInfo") + public Result updateWxInfo(@RequestBody UserDTO userDto) { + UserDTO user = new UserDTO(); + user.setId(userDto.getId()); + user.setNickname(userDto.getNickname()); + user.setFaceImg(userDto.getFaceImg()); + user.setSex(userDto.getSex()); + userService.update(user); + return new Result(); + } + + /** + * 验证用户完善个人信息时提交的数据,校验成功,返回用户当前状态 + * + * @param userDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/9/21 11:03 + */ + @GetMapping("verifyComplete") + public Result verifyUserCompleteData(@RequestBody UserDTO userDto) { + return userService.verifyUserCompleteData(userDto); + } + + /** + * 用户完善个人信息-保存 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 11:53 + */ + @PostMapping("completeInfo") + public Result completeUserInfo(@RequestBody EpdcAppUserCompleteInfoFormDTO formDto) { + return userService.completeUserInfo(formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcUserGridRelationController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcUserGridRelationController.java new file mode 100644 index 000000000..371f48718 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcUserGridRelationController.java @@ -0,0 +1,70 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcLeaderSwitchGridFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO; +import com.elink.esua.epdc.service.UserGridRelationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@RestController +@RequestMapping(Constant.EPDC_APP + "usergrid") +public class EpdcUserGridRelationController { + + @Autowired + private UserGridRelationService userGridRelationService; + + /** + * 网格长小程序端切换网格 + * + * @param switchGridDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/23 11:04 + */ + @GetMapping("userSwitchGrid") + public Result userSwitchGrid(@RequestBody EpdcLeaderSwitchGridFormDTO switchGridDto) { + return userGridRelationService.userSwitchGrid(switchGridDto); + } + + /** + * 获取网格长管理的网格列表 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2019/10/23 13:26 + */ + @GetMapping("listUserGrid/{userId}") + public Result> listGridForLeader(@PathVariable("userId") String userId) { + return userGridRelationService.listUserGridForApi(userId); + } +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java index cfb9cd7b0..5a511e7bf 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java @@ -17,6 +17,11 @@ package com.elink.esua.epdc.controller; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import com.alibaba.fastjson.JSON; +import com.elink.esua.epdc.async.PartyTask; import com.elink.esua.epdc.commons.mybatis.annotation.DataFilter; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; @@ -27,15 +32,22 @@ 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.config.StreamUtils; import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.excel.PartyMembersExcel; import com.elink.esua.epdc.service.PartyMembersService; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.SystemUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -53,33 +65,36 @@ public class PartyMembersController { @Autowired private PartyMembersService partyMembersService; +// @Autowired +// private PartyTask partyTask; + @GetMapping("page") @DataFilter(tableAlias = "pm", deptId = "grid_id", prefix = "AND", isPendingCreator = false) - public Result> page(@RequestParam Map params){ - String realName = (String)params.get("realName"); - String mobile = (String)params.get("mobile"); - String identityNo = (String)params.get("identityNo"); - if (StringUtils.isNotBlank(realName)){ - params.put("realName",realName.trim()); + public Result> page(@RequestParam Map params) { + String realName = (String) params.get("realName"); + String mobile = (String) params.get("mobile"); + String identityNo = (String) params.get("identityNo"); + if (StringUtils.isNotBlank(realName)) { + params.put("realName", realName.trim()); } - if (StringUtils.isNotBlank(mobile)){ - params.put("mobile",mobile.trim()); + if (StringUtils.isNotBlank(mobile)) { + params.put("mobile", mobile.trim()); } - if (StringUtils.isNotBlank(identityNo)){ - params.put("identityNo",identityNo.trim()); + if (StringUtils.isNotBlank(identityNo)) { + params.put("identityNo", identityNo.trim()); } return partyMembersService.pageDIY(params); } @GetMapping("{id}") - public Result get(@PathVariable("id") String id){ + public Result get(@PathVariable("id") String id) { PartyMembersDTO data = partyMembersService.get(id); data.setTagIdsNew(data.getTagIds().split(",")); return new Result().ok(data); } @PostMapping - public Result save(@RequestBody PartyMembersDTO dto){ + public Result save(@RequestBody PartyMembersDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); dto.setDeptId(SecurityUser.getDeptId()); @@ -89,7 +104,7 @@ public class PartyMembersController { } @PutMapping - public Result update(@RequestBody PartyMembersDTO dto){ + public Result update(@RequestBody PartyMembersDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); @@ -99,7 +114,7 @@ public class PartyMembersController { } @DeleteMapping - public Result delete(@RequestBody String[] ids){ + public Result delete(@RequestBody String[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); @@ -116,4 +131,30 @@ public class PartyMembersController { ExcelUtils.exportExcelToTarget(response, "党员管理", list, PartyMembersExcel.class); } + /*** + * 批量导入 + * @param file + * @return java.lang.String + * @author qushutong + * @date 2019/10/24 14:55 + */ + @PostMapping("importExcel") + public Result importExcel(@RequestParam("file") MultipartFile file) { + return partyMembersService.insertPartyList(file); + } + + /*** + * 导出模板 + * @param params + * @param response + * @return void + * @author qushutong + * @date 2019/11/1 17:14 + */ + @GetMapping("exportMoudle") + public void exportMoudle(@RequestParam Map params, HttpServletResponse response) throws Exception { + List list = partyMembersService.exportMoudle(); + ExcelUtils.exportExcelToTarget(response, "党员模板", list, PartyMembersExcel.class); + } + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java index d170b8d68..2c7cce5b9 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserController.java @@ -17,7 +17,7 @@ package com.elink.esua.epdc.controller; -import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.mybatis.annotation.DataFilter; 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; @@ -27,10 +27,12 @@ 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.UserDTO; +import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.excel.UserExcel; import com.elink.esua.epdc.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; @@ -49,21 +51,21 @@ public class UserController { private UserService userService; @GetMapping("page") - public Result> page( @RequestParam Map params){ + @DataFilter(tableAlias = "ug", isPendingCreator = false, deptId = "GRID_ID", prefix = "AND") + public Result> page(@RequestParam Map params) { PageData page = userService.page(params); - return new Result>().ok(page); } @GetMapping("{id}") - public Result get(@PathVariable("id") String id){ + public Result get(@PathVariable("id") String id) { UserDTO data = userService.get(id); return new Result().ok(data); } @PostMapping - public Result save(@RequestBody UserDTO dto){ + public Result save(@RequestBody UserDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); @@ -73,7 +75,7 @@ public class UserController { } @PutMapping - public Result update(@RequestBody UserDTO dto){ + public Result update(@RequestBody UserDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); @@ -84,11 +86,12 @@ public class UserController { /** * 审核 + * * @param dto * @return */ @PostMapping("audit") - public Result audit(@RequestBody UserDTO dto){ + public Result audit(@RequestBody UserDTO dto) { //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); @@ -96,8 +99,9 @@ public class UserController { return new Result(); } + @DeleteMapping - public Result delete(@RequestBody String[] ids){ + public Result delete(@RequestBody String[] ids) { //效验数据 AssertUtils.isArrayEmpty(ids, "id"); @@ -107,17 +111,18 @@ public class UserController { } @GetMapping("export") - public void export( @RequestParam Map params, HttpServletResponse response) throws Exception { + @DataFilter(tableAlias = "ug", isPendingCreator = false, deptId = "GRID_ID", prefix = "AND") + public void export(@RequestParam Map params, HttpServletResponse response) throws Exception { List list = userService.list(params); - String auditState = (String) params.get("auditState"); + String auditState = (String) params.get("state"); // 状态(0-未审核,1-审核通过,2-审核未通过) String fileName = null; - if(NumConstant.ZERO_STR.equals(auditState)){ - fileName="未审核"; - }else if(NumConstant.ONE_STR.equals(auditState)){ - fileName="审核通过"; - }else if(NumConstant.TWO_STR.equals(auditState)){ - fileName="审核未通过"; + if (AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.equals(auditState)) { + fileName = "未审核"; + } else if (AppUserStatesEnum.STATE_INFORMATION_PASSED.equals(auditState)) { + fileName = "审核通过"; + } else if (AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.equals(auditState)) { + fileName = "审核未通过"; } ExcelUtils.exportExcelToTarget(response, fileName, list, UserExcel.class); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserGridRelationController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserGridRelationController.java new file mode 100644 index 000000000..9b11331ae --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/UserGridRelationController.java @@ -0,0 +1,92 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.commons.tools.page.PageData; +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.UserGridRelationDTO; +import com.elink.esua.epdc.service.UserGridRelationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@RestController +@RequestMapping("usergrid") +public class UserGridRelationController { + + @Autowired + private UserGridRelationService userGridRelationService; + + @GetMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = userGridRelationService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + UserGridRelationDTO data = userGridRelationService.get(id); + return new Result().ok(data); + } + + @PostMapping + public Result save(@RequestBody UserGridRelationDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + userGridRelationService.save(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody UserGridRelationDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + userGridRelationService.update(dto); + return new Result(); + } + + @DeleteMapping + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + userGridRelationService.delete(ids); + return new Result(); + } + + + @GetMapping("listUserGrid/{userId}") + public Result> listUserGrid(@PathVariable("userId") String userId){ + List data = userGridRelationService.listUserGrid(userId); + return new Result>().ok(data); + } + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java index bd93a6410..5e5c3fa09 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserDao.java @@ -19,6 +19,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; +import com.elink.esua.epdc.dto.UserDTO; 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.result.EpdcUserGroupInviteResultDTO; @@ -27,6 +28,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 用户信息表 @@ -77,13 +79,22 @@ public interface UserDao extends BaseDao { int deleteAuditFailureByOpenId(@Param("wxOpenId") String wxOpenId); /** - * * 移动端-社群添加好友列表 * - * @params [formDto] * @return java.util.List + * @params [formDto] * @author liuchuang * @since 2019/10/23 16:25 */ List selectListOfInviteUsers(EpdcUserGroupInviteFormDTO formDto); + + /** + * 查询用户列表 + * + * @param params + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/25 16:13 + */ + List selectListUserDto(Map params); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java new file mode 100644 index 000000000..8b98ad56e --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserGridRelationDao.java @@ -0,0 +1,33 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.dao; + +import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +import com.elink.esua.epdc.entity.UserGridRelationEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@Mapper +public interface UserGridRelationDao extends BaseDao { + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java index 3ceefb8b9..24c1a946b 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java @@ -268,5 +268,4 @@ public class UserEntity extends BaseEpdcEntity { */ private String remark; - } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserGridRelationEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserGridRelationEntity.java new file mode 100644 index 000000000..4da14f1ee --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserGridRelationEntity.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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 work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("epdc_user_grid_relation") +public class UserGridRelationEntity extends BaseEpdcEntity { + + private static final long serialVersionUID = 8308463158510832072L; + + /** + * 用户ID + */ + private String userId; + + /** + * 区县 + */ + private String district; + + /** + * 区县ID + */ + private Long districtId; + + /** + * 街道 + */ + private String street; + + /** + * 街道ID + */ + private Long streetId; + + /** + * 社区 + */ + private String community; + + /** + * 社区ID + */ + private Long communityId; + + /** + * 所属网格 + */ + private String grid; + + /** + * 网格ID + */ + private Long gridId; + + /** + * 最后切换此网格的时间 + */ + private Date switchedTime; + + /** + * 是否是网格长 0否1是 + */ + private String leaderFlag; + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserGridRelationRedis.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserGridRelationRedis.java new file mode 100644 index 000000000..a4487f0e4 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/redis/UserGridRelationRedis.java @@ -0,0 +1,47 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.redis; + +import com.elink.esua.epdc.commons.tools.redis.RedisUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@Component +public class UserGridRelationRedis { + @Autowired + private RedisUtils redisUtils; + + public void delete(Object[] ids) { + + } + + public void set(){ + + } + + public String get(String id){ + return null; + } + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java index 58097743c..7a1b6d9b3 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/PartyMembersService.java @@ -22,6 +22,8 @@ import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.entity.PartyMembersEntity; +import com.elink.esua.epdc.excel.PartyMembersExcel; +import org.springframework.web.multipart.MultipartFile; import java.util.List; import java.util.Map; @@ -47,4 +49,22 @@ public interface PartyMembersService extends BaseService { void update(PartyMembersDTO dto); void delete(String[] ids); + + + /*** + * + * @return + * @author qushutong + * @date 2019/11/1 17:17 + */ + List exportMoudle(); + + /*** + * 导入党员 + * @param file + * @return void + * @author qushutong + * @date 2019/11/4 10:08 + */ + Result insertPartyList(MultipartFile file); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java new file mode 100644 index 000000000..63dde19eb --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserGridRelationService.java @@ -0,0 +1,149 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcLeaderSwitchGridFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO; +import com.elink.esua.epdc.entity.UserGridRelationEntity; + +import java.util.List; +import java.util.Map; + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +public interface UserGridRelationService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2019-10-23 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2019-10-23 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return UserGridRelationDTO + * @author generator + * @date 2019-10-23 + */ + UserGridRelationDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2019-10-23 + */ + void save(UserGridRelationDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2019-10-23 + */ + void update(UserGridRelationDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2019-10-23 + */ + void delete(String[] ids); + + /** + * 网格长小程序端切换网格 + * + * @param switchGridDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/23 11:05 + */ + Result userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto); + + /** + * 获取网格长管理的网格列表 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author work@yujt.net.cn + * @date 2019/10/23 13:28 + */ + Result> listUserGridForApi(String userId); + + /** + * 获取用户绑定网格信息 + * + * @return com.elink.esua.epdc.dto.UserGridRelationDTO + * @params [userId, gridId] + * @author liuchuang + * @since 2019/10/25 11:21 + */ + UserGridRelationDTO getUserRelationInfo(String userId, Long gridId); + + /** + * 获取用户所有网格 + * + * @param userId + * @return java.util.List + * @author work@yujt.net.cn + * @date 2019/10/25 18:20 + */ + List listUserGrid(String userId); + + /** + * 按用户id和网格id删除用户网格关系 + * + * @param userId 用户id + * @param gridId 网格id + * @return int + * @author work@yujt.net.cn + * @date 2019/10/30 17:55 + */ + int delete(String userId, Long gridId); +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java index 4c2c44de4..1971efa6f 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java @@ -23,6 +23,8 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO; +import com.elink.esua.epdc.dto.epdc.form.*; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO; 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.result.EpdcUserGroupInviteResultDTO; @@ -137,13 +139,62 @@ public interface UserService extends BaseService { Result getUserRegisterAuditResult(String userId); /** - * * 移动端-社群添加好友列表 * - * @params [formDto] * @return java.util.List + * @params [formDto] * @author liuchuang * @since 2019/10/23 16:24 */ List listOfInviteUsers(EpdcUserGroupInviteFormDTO formDto); + + /** + * 网格长注册 + * + * @param registerDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/23 09:35 + */ + Result gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto); + + /** + * 检查用户注册状态 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [fromDto] + * @author liuchuang + * @since 2019/10/25 11:13 + */ + Result checkUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto); + + /** + * 保存用户信息或关联网格信息 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params [fromDto] + * @author liuchuang + * @since 2019/10/25 14:35 + */ + Result saveUserOrBindGrid(EpdcUserRegisterBindGridFormDTO fromDto); + + /** + * 验证用户完善个人信息时提交的数据 + * + * @param userDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 11:18 + */ + Result verifyUserCompleteData(UserDTO userDto); + + /** + * 用户完善个人信息 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/10/26 11:53 + */ + Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java index bba267d05..bafb55126 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/PartyMembersServiceImpl.java @@ -17,10 +17,13 @@ package com.elink.esua.epdc.service.impl; +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.elink.esua.epdc.async.PartyTask; 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; @@ -28,10 +31,13 @@ import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; 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.utils.Result; +import com.elink.esua.epdc.config.StreamUtils; import com.elink.esua.epdc.dao.PartyMembersDao; import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.dto.PartyTagRelationDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcPartyErroyResultDTO; import com.elink.esua.epdc.entity.PartyMembersEntity; +import com.elink.esua.epdc.excel.PartyMembersExcel; import com.elink.esua.epdc.redis.PartyMembersRedis; import com.elink.esua.epdc.service.PartyMembersService; import com.elink.esua.epdc.service.PartyTagRelationService; @@ -39,11 +45,10 @@ 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 org.springframework.web.multipart.MultipartFile; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.util.*; /** * 党员表 @@ -59,6 +64,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -73,7 +79,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl> pageDIY(Map params) { IPage page = getPage(params); List list = baseDao.pageDIY(params); - return new Result>().ok(new PageData<>(list,page.getTotal())); + return new Result>().ok(new PageData<>(list, page.getTotal())); } @Override @@ -81,8 +87,8 @@ public class PartyMembersServiceImpl extends BaseServiceImpl getWrapper(Map params){ - String id = (String)params.get("id"); + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get("id"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(id), "id", id); @@ -101,9 +107,9 @@ public class PartyMembersServiceImpl extends BaseServiceImpl partyList) { + List partyMembersEntityList = ConvertUtils.sourceToTarget(partyList, PartyMembersEntity.class); + for (int i=0;i partyMembersEntityList = baseDao.selectList(new QueryWrapper()); + List partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); + // 校验数据 + List epdcPartyErroyResultDtos = this.checkExcel(partyList, partyMembersEntityList); + if(epdcPartyErroyResultDtos.size()>0){ + return new Result().ok(epdcPartyErroyResultDtos); + } + saveList(partyList); + for (PartyMembersExcel partyMembers : partyList) { + System.out.println("从Excel导入数据到数据库的详细为 :{}" + JSON.toJSONString(partyMembers)); + } + System.out.println("从Excel导入数据一共 {} 行 " + partyList.size()); + } catch (Exception e1) { + throw new RuntimeException("导入失败:{}" + e1.getMessage()); + } + return new Result(); + } + + /*** + * 校验excel表格数据 + * @param partyList + * @param partyMembersEntityList + * @return java.lang.String + * @author qushutong + * @date 2019/11/4 10:25 + */ + private List checkExcel(List partyList, List partyMembersEntityList) { + // 不匹配信息 + List errorLineinfoList=new ArrayList<>(); + for (int i = 0; i < partyList.size(); i++) { + PartyMembersExcel partyMembersExcel = partyList.get(i); + String realName = partyMembersExcel.getRealName(); + String mobile = partyMembersExcel.getMobile(); + String identityNo=partyMembersExcel.getIdentityNo(); + if (StringUtils.isBlank(realName)) { + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("姓名为空"); + errorLineinfoList.add(errorLineinfoDto); + } + if (StringUtils.isBlank(identityNo)) { + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("身份证号为空"); + errorLineinfoList.add(errorLineinfoDto); + } + for (PartyMembersEntity item:partyMembersEntityList) { + if(item.getRealName().equals(realName)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("姓名已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + if(StringUtils.isNotBlank(item.getMobile())&&item.getMobile().equals(mobile)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("手机号已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + if(item.getIdentityNo().equals(identityNo)){ + EpdcPartyErroyResultDTO errorLineinfoDto=new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto.setErrorInfo("身份证号已存在"); + errorLineinfoList.add(errorLineinfoDto); + } + } + } + return errorLineinfoList; + } + + @Override + public List exportMoudle() { + List partyMembersDTOList = new ArrayList<>(); + PartyMembersDTO partyMembersDto = new PartyMembersDTO(); + partyMembersDto.setRealName("王小花"); + partyMembersDto.setMobile("13000000000"); + partyMembersDto.setIdentityNo("370681199903038473"); + partyMembersDto.setPost(""); + partyMembersDto.setCadreFlag("下沉"); + partyMembersDto.setRegistFlag("是"); + partyMembersDto.setRegistTime(new Date()); + partyMembersDto.setStreetName("水清沟街道党工委"); + partyMembersDto.setCommunityName("九江社区党委"); + partyMembersDto.setGridName("第一网格支部"); + PartyMembersDTO partyMembersDtoTwo = new PartyMembersDTO(); + partyMembersDtoTwo.setRealName("徐小明"); + partyMembersDtoTwo.setMobile("13000000001"); + partyMembersDtoTwo.setIdentityNo("37068119499030542"); + partyMembersDtoTwo.setPost(""); + partyMembersDtoTwo.setCadreFlag("不下沉"); + partyMembersDtoTwo.setRegistFlag("否"); + partyMembersDtoTwo.setRegistTime(new Date()); + partyMembersDtoTwo.setStreetName("水清沟街道党工委"); + partyMembersDtoTwo.setCommunityName("九江社区党委"); + partyMembersDtoTwo.setGridName("第一网格支部"); + PartyMembersDTO partyMembersDtoThrid = new PartyMembersDTO(); + partyMembersDtoThrid.setRealName("王红"); + partyMembersDtoThrid.setMobile(""); + partyMembersDtoThrid.setIdentityNo("37068119499032541"); + partyMembersDtoThrid.setPost(""); + partyMembersDtoThrid.setCadreFlag(""); + partyMembersDtoThrid.setRegistFlag(""); + partyMembersDtoThrid.setRegistTime(null); + partyMembersDtoThrid.setStreetName(""); + partyMembersDtoThrid.setCommunityName(""); + partyMembersDtoThrid.setGridName(""); + partyMembersDTOList.add(partyMembersDto); + partyMembersDTOList.add(partyMembersDtoTwo); + partyMembersDTOList.add(partyMembersDtoThrid); + return partyMembersDTOList; + } + } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java new file mode 100644 index 000000000..bd62422cf --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserGridRelationServiceImpl.java @@ -0,0 +1,164 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +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.commons.tools.utils.Result; +import com.elink.esua.epdc.constant.UserFieldConsant; +import com.elink.esua.epdc.dao.UserGridRelationDao; +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcLeaderSwitchGridFormDTO; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserGridResultDTO; +import com.elink.esua.epdc.entity.UserGridRelationEntity; +import com.elink.esua.epdc.service.UserGridRelationService; +import org.apache.commons.lang3.StringUtils; +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; + +/** + * 网格长与网格关系表 + * + * @author work@yujt.net.cn + * @since v1.0.0 2019-10-23 + */ +@Service +public class UserGridRelationServiceImpl extends BaseServiceImpl implements UserGridRelationService { + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, UserGridRelationDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, UserGridRelationDTO.class); + } + + private QueryWrapper getWrapper(Map params) { + String id = (String) params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public UserGridRelationDTO get(String id) { + UserGridRelationEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, UserGridRelationDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(UserGridRelationDTO dto) { + UserGridRelationEntity entity = ConvertUtils.sourceToTarget(dto, UserGridRelationEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(UserGridRelationDTO dto) { + UserGridRelationEntity entity = ConvertUtils.sourceToTarget(dto, UserGridRelationEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public Result userSwitchGrid(EpdcLeaderSwitchGridFormDTO switchGridDto) { + + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq(UserFieldConsant.USER_ID, switchGridDto.getAppUserId()) + .eq(FieldConstant.GRID_ID, switchGridDto.getGridId()); + + UserGridRelationEntity entity = new UserGridRelationEntity(); + entity.setSwitchedTime(new Date()); + boolean update = this.update(entity, wrapper); + + if (!update) { + return new Result().error("匹配用户网格失败"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(UserFieldConsant.USER_ID, switchGridDto.getAppUserId()) + .eq(FieldConstant.GRID_ID, switchGridDto.getGridId()); + UserGridRelationEntity gridRelationEntity = this.baseDao.selectOne(queryWrapper); + + UserGridRelationDTO gridRelationDto = ConvertUtils.sourceToTarget(gridRelationEntity, UserGridRelationDTO.class); + return new Result().ok(gridRelationDto); + } + + @Override + public Result> listUserGridForApi(String userId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(UserFieldConsant.USER_ID, userId) + .orderByDesc(UserFieldConsant.SWITCHED_TIME); + List entityList = this.baseDao.selectList(queryWrapper); + List dtoList = ConvertUtils.sourceToTarget(entityList, EpdcUserGridResultDTO.class); + return new Result>().ok(dtoList); + } + + @Override + public UserGridRelationDTO getUserRelationInfo(String userId, Long gridId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(UserFieldConsant.USER_ID, userId) + .eq(FieldConstant.GRID_ID, gridId); + UserGridRelationEntity gridRelationEntity = this.baseDao.selectOne(queryWrapper); + return ConvertUtils.sourceToTarget(gridRelationEntity, UserGridRelationDTO.class); + } + + @Override + public List listUserGrid(String userId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.USER_ID, userId) + .orderByDesc(UserFieldConsant.SWITCHED_TIME); + List gridRelationEntities = this.baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(gridRelationEntities, UserGridRelationDTO.class); + } + + @Override + public int delete(String userId, Long gridId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.USER_ID, userId) + .eq(FieldConstant.GRID_ID, gridId); + return this.baseDao.delete(wrapper); + } +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java index 8cf1e98b8..441c36db3 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserServiceImpl.java @@ -18,35 +18,38 @@ package com.elink.esua.epdc.service.impl; import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.FieldConstant; 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.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.constant.UserFieldConsant; +import com.elink.esua.epdc.dao.PartyMembersDao; import com.elink.esua.epdc.dao.UserDao; -import com.elink.esua.epdc.dto.PartyMembersDTO; import com.elink.esua.epdc.dto.UserDTO; -import com.elink.esua.epdc.dto.UserTagRelationDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserRegistFormDTO; 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.result.EpdcUserGroupInviteResultDTO; +import com.elink.esua.epdc.dto.UserGridRelationDTO; +import com.elink.esua.epdc.dto.epdc.EpdcCompleteAppUserDTO; +import com.elink.esua.epdc.dto.epdc.EpdcGridLeaderRegisterDTO; +import com.elink.esua.epdc.dto.epdc.form.*; +import com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO; +import com.elink.esua.epdc.entity.PartyMembersEntity; import com.elink.esua.epdc.entity.UserEntity; +import com.elink.esua.epdc.entity.UserGridRelationEntity; import com.elink.esua.epdc.enums.AppUserAuditStateEnum; -import com.elink.esua.epdc.redis.UserRedis; -import com.elink.esua.epdc.service.PartyMembersService; +import com.elink.esua.epdc.enums.AppUserStatesEnum; +import com.elink.esua.epdc.service.UserGridRelationService; import com.elink.esua.epdc.service.UserService; -import com.elink.esua.epdc.service.UserTagRelationService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -67,70 +70,40 @@ import java.util.Map; public class UserServiceImpl extends BaseServiceImpl implements UserService { @Autowired - private UserRedis userRedis; + private PartyMembersDao partyMembersDao; @Autowired - private PartyMembersService partyMembersService; - - @Autowired - private UserTagRelationService userTagRelationService; + private UserGridRelationService userGridRelationService; @Override public PageData page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - - return getPageData(page, UserDTO.class); + this.verifyParams(params); + IPage iPage = this.getPage(params); + List userDtoList = this.baseDao.selectListUserDto(params); + return new PageData<>(userDtoList, iPage.getTotal()); } @Override public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - return ConvertUtils.sourceToTarget(entityList, UserDTO.class); + this.verifyParams(params); + return this.baseDao.selectListUserDto(params); } - private QueryWrapper getWrapper(Map params) { - UserDetail user = SecurityUser.getUser(); - //部门ID列表 - List deptIdList = user.getDeptIdList(); - String auditState = (String) params.get("auditState"); - String id = (String) params.get(FieldConstant.ID_HUMP); - String streetId = (String) params.get(FieldConstant.STREET_ID_HUMP); - String communityId = (String) params.get(FieldConstant.COMMUNITY_ID_HUMP); - String gridId = (String) params.get(FieldConstant.GRID_ID_HUMP); - String realName = (String) params.get("realName"); - if(StringUtils.isNotBlank(realName)){ - realName.trim(); + private Map verifyParams(Map params) { + String param = (String) params.get("realName"); + if (StringUtils.isNotBlank(param)) { + params.put("realName", param.trim()); } - String mobile = (String) params.get(FieldConstant.MOBILE_HUMP); - if(StringUtils.isNotBlank(mobile)){ - mobile.trim(); + param = (String) params.get(FieldConstant.MOBILE_HUMP); + if (StringUtils.isNotBlank(param)) { + params.put(FieldConstant.MOBILE_HUMP, param.trim()); } - String identityNo = (String) params.get("identityNo"); - if(StringUtils.isNotBlank(identityNo)){ - identityNo.trim(); + param = (String) params.get("identityNo"); + if (StringUtils.isNotBlank(param)) { + params.put("identityNo", param.trim()); } - String startTime = (String) params.get("startTime"); - String endTime = (String) params.get("endTime"); - String isParty = (String) params.get("isParty"); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - wrapper.eq(StringUtils.isNotBlank(streetId), FieldConstant.STREET_ID, streetId); - wrapper.eq(StringUtils.isNotBlank(communityId), FieldConstant.COMMUNITY_ID, communityId); - wrapper.eq(StringUtils.isNotBlank(gridId), FieldConstant.GRID_ID, gridId); - wrapper.eq(StringUtils.isNotBlank(realName), UserFieldConsant.REAL_NAME, realName); - wrapper.eq(StringUtils.isNotBlank(mobile), FieldConstant.MOBILE, mobile); - wrapper.eq(StringUtils.isNotBlank(identityNo), UserFieldConsant.IDENTITY_NO, identityNo); - wrapper.ge(StringUtils.isNotBlank(startTime), UserFieldConsant.REGISTER_TIME, startTime); - wrapper.lt(StringUtils.isNotBlank(endTime), UserFieldConsant.REGISTER_TIME, endTime); - wrapper.eq(StringUtils.isNotBlank(auditState), FieldConstant.STATE, auditState); - wrapper.in(CollUtil.isNotEmpty(deptIdList), FieldConstant.GRID_ID, deptIdList); - wrapper.eq(StringUtils.isNotBlank(isParty), UserFieldConsant.PARTY_FLAG, isParty); - return wrapper; + return params; } @Override @@ -166,37 +139,18 @@ public class UserServiceImpl extends BaseServiceImpl implem @Transactional(rollbackFor = Exception.class) public void audit(UserDTO dto) { //先删除以前审核未通过的那条数据 - this.baseDao.deleteAuditFailureByOpenId(dto.getWxOpenId()); UserEntity entity = ConvertUtils.sourceToTarget(dto, UserEntity.class); - //是否通过审核 - if (AppUserAuditStateEnum.AUDIT_SUCCESS.value().equals(dto.getPass())) { - entity.setState(AppUserAuditStateEnum.AUDIT_SUCCESS.value()); - } else if (AppUserAuditStateEnum.AUDIT_FAILURE.value().equals(dto.getPass())) { - entity.setState(AppUserAuditStateEnum.AUDIT_FAILURE.value()); - } // createdTime作为提交注册时间,registerTime作为注册审核时间(即注册时间) entity.setRegisterTime(new Date()); updateById(entity); - //判断是否是党员 - if (YesOrNoEnum.YES.value().equals(dto.getPartyFlag()) && YesOrNoEnum.YES.value().equals(dto.getPass())) { - PartyMembersDTO partyMembersDTO = ConvertUtils.sourceToTarget(dto, PartyMembersDTO.class); - partyMembersDTO.setStreetName(dto.getStreet()); - partyMembersDTO.setCommunityName(dto.getCommunity()); - partyMembersDTO.setRegistTime(dto.getRegisterTime()); - partyMembersDTO.setGridName(dto.getGrid()); - partyMembersDTO.setTagIds(dto.getTagIds()); - partyMembersService.save(partyMembersDTO); - }else { - //不是党员的话 插入用户标签关系表 - JSONArray jsonArray = JSON.parseArray(dto.getTagIds()); - for (int i = 0; i implem QueryWrapper wrapper = new QueryWrapper<>(); // 根据openId获取已提交注册的用户信息 wrapper.eq(UserFieldConsant.WX_OPEN_ID, openId) - .select(FieldConstant.ID, UserFieldConsant.NICKNAME, UserFieldConsant.FACE_IMG, - FieldConstant.MOBILE, UserFieldConsant.REAL_NAME, - FieldConstant.STATE, UserFieldConsant.GRID, FieldConstant.GRID_ID, - UserFieldConsant.PARTY_FLAG, UserFieldConsant.REMARK) .orderByDesc(FieldConstant.CREATED_TIME); - List userEntityList = this.baseDao.selectList(wrapper); - if (CollUtil.isNotEmpty(userEntityList)) { - UserEntity userEntity = userEntityList.get(NumConstant.ZERO); - return new Result().ok(ConvertUtils.sourceToTarget(userEntity, UserDTO.class)); + UserEntity userEntity = this.baseDao.selectOne(wrapper); + if (null != userEntity) { + QueryWrapper ugWrapper = new QueryWrapper<>(); + ugWrapper.eq(UserFieldConsant.USER_ID, userEntity.getId()) + .orderByDesc(UserFieldConsant.SWITCHED_TIME); + List gridRelations = userGridRelationService.listUserGrid(userEntity.getId()); + if (CollUtil.isNotEmpty(gridRelations)) { + UserDTO dto = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); + dto.setGridId(gridRelations.get(NumConstant.ZERO).getGridId()); + dto.setGrid(gridRelations.get(NumConstant.ZERO).getGrid()); + return new Result().ok(dto); + } } return new Result(); } @@ -275,21 +233,27 @@ public class UserServiceImpl extends BaseServiceImpl implem @Override public Result verifyUserRegisterData(EpdcUserRegistFormDTO formDto) { // 手机号查重 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(FieldConstant.MOBILE, formDto.getMobile()) - .ne(FieldConstant.STATE, AppUserAuditStateEnum.AUDIT_FAILURE.value()); - Integer count = this.baseDao.selectCount(wrapper); - if (count > NumConstant.ZERO) { - return new Result().error("手机号已被注册"); + String mobile = formDto.getMobile(); + if (StringUtils.isNotBlank(mobile)) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(FieldConstant.MOBILE, mobile); + Integer count = this.baseDao.selectCount(wrapper); + if (count > NumConstant.ZERO) { + return new Result().error("手机号已被注册"); + } } + // 身份证号查重 - wrapper = new QueryWrapper<>(); - wrapper.eq("IDENTITY_NO", formDto.getIdentityNo()) - .ne(FieldConstant.STATE, AppUserAuditStateEnum.AUDIT_FAILURE.value()); - count = this.baseDao.selectCount(wrapper); - if (count > NumConstant.ZERO) { - return new Result().error("身份证号已被注册"); + String identityNo = formDto.getIdentityNo(); + if (StringUtils.isNotBlank(identityNo)) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo); + Integer count = this.baseDao.selectCount(wrapper); + if (count > NumConstant.ZERO) { + return new Result().error("身份证号已被注册"); + } } + return new Result(); } @@ -303,4 +267,225 @@ public class UserServiceImpl extends BaseServiceImpl implem public List listOfInviteUsers(EpdcUserGroupInviteFormDTO formDto) { return baseDao.selectListOfInviteUsers(formDto); } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto) { + // 网格长用户信息 + EpdcGridLeaderRegisterDTO gridLeader = registerDto.getGridLeader(); + UserEntity userEntity = ConvertUtils.sourceToTarget(gridLeader, UserEntity.class); + // 网格长管理的网格 + List userGridList = registerDto.getUserGridList(); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.WX_OPEN_ID, gridLeader.getWxOpenId()); + UserEntity existUser = this.baseDao.selectOne(wrapper); + + String userId; + String faceImg = userEntity.getFaceImg(); + + // 首次注册 + if (null == existUser) { + + this.insert(userEntity); + + userId = userEntity.getId(); + + for (UserGridRelationDTO userGridRelation : userGridList) { + userGridRelation.setUserId(userId); + userGridRelation.setLeaderFlag(YesOrNoEnum.YES.value()); + } + // 已注册过,更新信息 + } else { + userId = existUser.getId(); + faceImg = existUser.getFaceImg(); + // 不更新头像信息 + userEntity.setFaceImg(null); + userEntity.setId(userId); + this.updateById(userEntity); + + for (UserGridRelationDTO userGridRelation : userGridList) { + userGridRelationService.delete(userId, userGridRelation.getGridId()); + + userGridRelation.setUserId(userId); + userGridRelation.setLeaderFlag(YesOrNoEnum.YES.value()); + } + } + + List userGridRelationEntityList = ConvertUtils.sourceToTarget(userGridList, UserGridRelationEntity.class); + userGridRelationService.insertBatch(userGridRelationEntityList); + + UserDTO userDto = ConvertUtils.sourceToTarget(gridLeader, UserDTO.class); + userDto.setId(userId); + UserGridRelationDTO userGridRelationDto = userGridList.get(NumConstant.ZERO); + userDto.setGridId(userGridRelationDto.getGridId()); + userDto.setGrid(userGridRelationDto.getGrid()); + userDto.setFaceImg(faceImg); + return new Result().ok(userDto); + } + + @Override + public Result checkUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.WX_OPEN_ID, fromDto.getOpenId()) + .select(FieldConstant.ID, UserFieldConsant.NICKNAME, UserFieldConsant.FACE_IMG, + FieldConstant.MOBILE, UserFieldConsant.REAL_NAME, + FieldConstant.STATE, UserFieldConsant.PARTY_FLAG, UserFieldConsant.REMARK) + .orderByDesc(FieldConstant.CREATED_TIME); + List userEntityList = this.baseDao.selectList(wrapper); + + EpdcUserRegisterInfoResultDTO resultDto = new EpdcUserRegisterInfoResultDTO(); + resultDto.setGridId(fromDto.getGridId()); + // 已注册 + if (CollUtil.isNotEmpty(userEntityList) && null != userEntityList.get(NumConstant.ZERO)) { + UserEntity userEntity = userEntityList.get(NumConstant.ZERO); + resultDto.setUserDTO(ConvertUtils.sourceToTarget(userEntity, UserDTO.class)); + // 获取用户关联当前网格信息 + UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(userEntity.getId(), fromDto.getGridId()); + // 未绑定当前网格 + if (null == relationInfo) { + resultDto.setRegisterState(NumConstant.ONE); + } + // 已绑定当前网格 + else { + resultDto.setRegisterState(NumConstant.TWO); + resultDto.setGrid(relationInfo.getGrid()); + } + } + // 未注册 + else { + resultDto.setRegisterState(NumConstant.ZERO); + } + + return new Result().ok(resultDto); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result saveUserOrBindGrid(EpdcUserRegisterBindGridFormDTO fromDto) { + + + UserDTO formUserDto = fromDto.getUserDTO(); + UserGridRelationDTO userGridRel = fromDto.getGridRelationDTO(); + + // 用户注册 + if (NumConstant.ZERO == fromDto.getRegisterState()) { + UserEntity userEntity = ConvertUtils.sourceToTarget(formUserDto, UserEntity.class); + if (insert(userEntity)) { + formUserDto.setId(userEntity.getId()); + } else { + return new Result().error("用户注册失败"); + } + } + userGridRel.setUserId(formUserDto.getId()); + // 用户绑定网格 + userGridRelationService.save(userGridRel); + + // 组装用户注册信息 + EpdcUserRegisterInfoResultDTO resultDto = new EpdcUserRegisterInfoResultDTO(); + resultDto.setRegisterState(NumConstant.TWO); + resultDto.setGrid(userGridRel.getGrid()); + resultDto.setGridId(userGridRel.getGridId()); + resultDto.setUserDTO(formUserDto); + + return new Result().ok(resultDto); + } + + @Override + public Result verifyUserCompleteData(UserDTO userDto) { + + String userId = userDto.getId(); + String mobile = userDto.getMobile(); + + UserEntity userEntity = this.selectById(userId); + if (null == userEntity) { + return new Result().error("匹配用户失败"); + } + + QueryWrapper userWrapper = new QueryWrapper<>(); + userWrapper.eq(FieldConstant.MOBILE, mobile) + .ne(FieldConstant.ID, userId); + Integer selectCount = this.baseDao.selectCount(userWrapper); + if (selectCount > NumConstant.ZERO) { + return new Result().error("手机号已被注册"); + } + + if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { + QueryWrapper partyWrapper = new QueryWrapper<>(); + partyWrapper.eq(UserFieldConsant.IDENTITY_NO, userDto.getIdentityNo()) + .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); + selectCount = this.partyMembersDao.selectCount(partyWrapper); + if (selectCount != NumConstant.ONE) { + return new Result().error("无法匹配党员信息"); + } + + userWrapper = new QueryWrapper<>(); + userWrapper.eq(UserFieldConsant.IDENTITY_NO, userDto.getIdentityNo()) + .ne(FieldConstant.ID, userId); + selectCount = this.baseDao.selectCount(userWrapper); + if (selectCount > NumConstant.ZERO) { + return new Result().error("身份证号已被注册"); + } + } + + return new Result().ok(userEntity.getState()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { + EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); + + UserDTO userDto = ConvertUtils.sourceToTarget(completeAppUser, UserDTO.class); + UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); + + UserEntity oldEntity = this.baseDao.selectById(userDto.getId()); + String nicknamePrefix = "网格长-"; + // 姓 + String lastName = userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE); + + if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { + PartyMembersEntity partyMembersEntity = new PartyMembersEntity(); + partyMembersEntity.setStreetId(userGridRelation.getStreetId()); + partyMembersEntity.setStreetName(userGridRelation.getStreet()); + partyMembersEntity.setCommunityId(userGridRelation.getCommunityId()); + partyMembersEntity.setCommunityName(userGridRelation.getCommunity()); + partyMembersEntity.setGridId(userGridRelation.getGridId()); + partyMembersEntity.setGridName(userGridRelation.getGrid()); + partyMembersEntity.setRegistFlag(YesOrNoEnum.YES.value()); + + UpdateWrapper partyUpdate = new UpdateWrapper<>(); + partyUpdate.eq(UserFieldConsant.IDENTITY_NO, userDto.getIdentityNo()) + .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); + + if (this.partyMembersDao.update(partyMembersEntity, partyUpdate) != NumConstant.ONE) { + throw new RenException("保存党员信息异常"); + } + if (oldEntity.getNickname().startsWith(nicknamePrefix)) { + userDto.setNickname(nicknamePrefix.concat(lastName).concat(NumConstant.ZERO_STR.equals(userDto.getSex()) ? "女士" : "先生")); + } + } else { + if (oldEntity.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { + userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); + } + String sex = oldEntity.getSex(); + userDto.setSex(sex); + if (!oldEntity.getNickname().startsWith(nicknamePrefix)) { + nicknamePrefix = userDto.getRoad().concat("-"); + } + if (StringUtils.isNotBlank(sex) && NumConstant.ZERO_STR.equals(sex)) { + userDto.setNickname(nicknamePrefix.concat(lastName).concat("女士")); + } else { + userDto.setNickname(nicknamePrefix.concat(lastName).concat("先生")); + } + } + + UserEntity userEntity = ConvertUtils.sourceToTarget(userDto, UserEntity.class); + boolean updateUser = this.updateById(userEntity); + if (!updateUser) { + throw new RenException("保存用户信息异常"); + } + + return new Result().ok(userDto); + } } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml index 4655707b2..00c33957c 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserDao.xml @@ -60,6 +60,35 @@ ORDER BY f.CREATED_TIME DESC LIMIT 1 +