diff --git a/esua-epdc/doc/db/dev_youhua/esua_epdc_user.sql b/esua-epdc/doc/db/dev_youhua/esua_epdc_user.sql new file mode 100644 index 000000000..9981795a3 --- /dev/null +++ b/esua-epdc/doc/db/dev_youhua/esua_epdc_user.sql @@ -0,0 +1,3 @@ +ALTER TABLE esua_epdc_user.epdc_party_authentication_failed MODIFY COLUMN `STATE` VARCHAR(1) NULL COMMENT '状态 0-认证失败'; +ALTER TABLE esua_epdc_user.epdc_party_authentication_failed MODIFY COLUMN `CADRE_FLAG` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 0 NULL COMMENT '干部下沉标识 0-否,1-是'; +ALTER TABLE esua_epdc_user.epdc_user_authenticate_history ADD AUTHENTICATED_TYPE varchar(2) NOT NULL COMMENT '认证类别(0-居民认证,1-党员认证,2-志愿者认证)'; diff --git a/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/entity/DeptScope.java b/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/entity/DeptScope.java new file mode 100644 index 000000000..cc66e73e9 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/entity/DeptScope.java @@ -0,0 +1,36 @@ +package com.elink.esua.epdc.commons.mybatis.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 部门冗余字段基类 + * + * @author rongchao + * @Date 19-12-18 + */ +@Data +public abstract class DeptScope extends BaseEpdcEntity implements Serializable { + + /*** + *所有部门名称 + */ + private String allDeptNames; + + /*** + *所有部门ID + */ + private String allDeptIds; + + /*** + *父所有部门 + */ + private String parentDeptNames; + + /*** + *父所有部门 + */ + private String parentDeptIds; + +} diff --git a/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/utils/DeptEntityUtils.java b/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/utils/DeptEntityUtils.java new file mode 100644 index 000000000..f913f911b --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-mybatis/src/main/java/com/elink/esua/epdc/commons/mybatis/utils/DeptEntityUtils.java @@ -0,0 +1,74 @@ +package com.elink.esua.epdc.commons.mybatis.utils; + +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; +import lombok.Data; + +/** + * 部门信息实体工具类 + * + * @author rongchao + * @Date 19-12-18 + */ +public class DeptEntityUtils { + + @Data + public class DeptDto { + /** + * 父所有部门ID + */ + private String parentDeptIds; + /** + * 父所有部门 + */ + private String parentDeptNames; + /** + * 所有部门ID + */ + private String allDeptIds; + /** + * 所有部门 + */ + private String allDeptNames; + } + + /** + * 装载部门信息 + * + * @param dto + * @param entityClass + * @return T + * @author rongchao + * @since 2019-12-18 + */ + public static T loadDeptInfo(DeptDto dto, Class entityClass) { + try { + T t = entityClass.newInstance(); + t.setAllDeptIds(dto.getAllDeptIds()); + t.setAllDeptNames(dto.getAllDeptNames()); + t.setParentDeptIds(dto.getParentDeptIds()); + t.setParentDeptNames(dto.getParentDeptNames()); + return t; + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 装载部门信息 + * + * @param dto + * @param entity + * @return void + * @author rongchao + * @since 2019-12-18 + */ + public static void loadDeptInfo(DeptDto dto, T entity) { + entity.setAllDeptIds(dto.getAllDeptIds()); + entity.setAllDeptNames(dto.getAllDeptNames()); + entity.setParentDeptIds(dto.getParentDeptIds()); + entity.setParentDeptNames(dto.getParentDeptNames()); + } +} diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserAuthTypeEnum.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserAuthTypeEnum.java new file mode 100644 index 000000000..3c372e4f2 --- /dev/null +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserAuthTypeEnum.java @@ -0,0 +1,35 @@ +package com.elink.esua.epdc.commons.tools.enums; + +/** + * 用户认证类别枚举类 + * + * @author rongchao + * @Date 19-12-19 + */ +public enum UserAuthTypeEnum { + + /** + * 居民认证 + */ + RESIDENT_AUTH("0"), + + /** + * 党员认证 + */ + PARTY_AUTH("1"), + + /** + * 志愿者认证 + */ + VOLUNTEER_AUTH("2"); + + private String value; + + UserAuthTypeEnum(String value) { + this.value = value; + } + + public String value() { + return this.value; + } +} diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserTagEnum.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserTagEnum.java index 0fbd4834d..d3471119f 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserTagEnum.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/enums/UserTagEnum.java @@ -6,23 +6,23 @@ package com.elink.esua.epdc.commons.tools.enums; * @Description: 用户身份枚举类 */ public enum UserTagEnum { - /** - * 党员 - */ - PARTY_MEMBER("partymember"), + /** + * 党员 + */ + PARTY_MEMBER("partymember"), - /** - * 志愿者 - */ - VOLUNTEER("volunteer"); + /** + * 志愿者 + */ + VOLUNTEER("volunteer"); - private String value; + private String value; - UserTagEnum(String value) { - this.value = value; - } + UserTagEnum(String value) { + this.value = value; + } - public String value() { - return this.value; - } + public String value() { + return this.value; + } } 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 faa8912c9..03699d89d 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 @@ -337,4 +337,15 @@ public interface UserFeignClient { */ @PostMapping(value = "app-user/epdc-app/user/needCachingUserInfo", consumes = MediaType.APPLICATION_JSON_VALUE) Result needCachingUserInfo(EpdcAppQueryUserInfoFormDTO formDTO); + + /** + * 根据用户ID需要缓存的用户信息 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author rongchao + * @since 2019-12-19 + */ + @GetMapping(value = "app-user/epdc-app/user/needCachingUserInfoByUserId/{userId}") + Result needCachingUserInfoByUserId(@PathVariable("userId") String userId); } 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 737ff9604..d29d94891 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 @@ -166,4 +166,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result needCachingUserInfo(EpdcAppQueryUserInfoFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "needCachingUserInfo", formDTO); } + + @Override + public Result needCachingUserInfoByUserId(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "needCachingUserInfoByUserId", userId); + } } 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 b24c6151b..bf52bd99d 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 @@ -7,6 +7,7 @@ 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.constant.NumConstant; import com.elink.esua.epdc.commons.tools.enums.UserSexEnum; +import com.elink.esua.epdc.commons.tools.enums.UserTagEnum; 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; @@ -37,6 +38,7 @@ import com.elink.esua.epdc.jwt.JwtTokenProperties; import com.elink.esua.epdc.jwt.JwtTokenUtils; import com.elink.esua.epdc.redis.AppUserRedis; import com.elink.esua.epdc.service.AppUserService; +import com.elink.esua.epdc.utils.UserTagUtils; import com.elink.esua.epdc.utils.WxMaServiceUtils; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; @@ -84,7 +86,7 @@ public class AppUserServiceImpl implements AppUserService { @Autowired private JwtTokenProperties jwtTokenProperties; - + @Autowired private OssFeignClient ossFeignClient; @@ -817,22 +819,23 @@ public class AppUserServiceImpl implements AppUserService { 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()); + //更新用户缓存信息 + Result cachingUserResult = userFeignClient.needCachingUserInfoByUserId(tokenDto.getUserId()); + CachingUserInfoDTO cachingUserInfoDTO = cachingUserResult.getData(); + TokenDto newTokenDto = ConvertUtils.sourceToTarget(cachingUserInfoDTO, TokenDto.class); + tokenDto.setUserId(userDto.getId()); + EpdcAppAuthorizationDTO authorizationDto = this.packageEpdcAppAuthorization(newTokenDto, userGrid.getGrid(), userDto.getState()); // 更新社群用户党员标识并加入关联的所有网格党员群 - if (NumConstant.ONE_STR.equals(user.getPartyFlag())) { + boolean partyFlag = UserTagUtils.containIdentity(cachingUserInfoDTO.getUserTagInfos(), UserTagEnum.PARTY_MEMBER); + if (partyFlag) { GroupUserPartyMemberFormDTO formDto = new GroupUserPartyMemberFormDTO(); - formDto.setUserId(user.getId()); - formDto.setPartyMember(user.getPartyFlag()); - formDto.setNickname(user.getNickname()); - formDto.setUserAvatar(user.getFaceImg()); - formDto.setMobile(user.getMobile()); - formDto.setDeptId(user.getDeptId()); + formDto.setUserId(cachingUserInfoDTO.getId()); + formDto.setPartyMember(partyFlag ? NumConstant.ZERO_STR : NumConstant.ONE_STR); + formDto.setNickname(cachingUserInfoDTO.getNickname()); + formDto.setUserAvatar(cachingUserInfoDTO.getFaceImg()); + formDto.setMobile(cachingUserInfoDTO.getMobile()); + formDto.setDeptId(cachingUserInfoDTO.getGridId()); formDto.setState(GroupUserStateEnum.GROUP_USER_STATE_EXAMINATION_PASSED.getValue()); groupFeignClient.updateUserPartyMember(formDto); @@ -973,7 +976,7 @@ public class AppUserServiceImpl implements AppUserService { tokenDto.setUserId(userDetail.getUserId()); tokenDto.setGridId(userDetail.getGridId()); tokenDto.setMobile(userDetail.getMobile()); -// tokenDto.setPartyFlag(userDetail.getPartyFlag()); + tokenDto.setUserTagInfos(userDetail.getUserTagInfos()); tokenDto.setRealName(userDetail.getRealName()); long expire = cpUserDetailRedis.getExpire(userDetail.getUserId()); cpUserDetailRedis.logout(userDetail.getUserId()); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/UserTagUtils.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/UserTagUtils.java index 3137315e4..cdcd3d8b4 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/UserTagUtils.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/utils/UserTagUtils.java @@ -15,21 +15,41 @@ import java.util.List; * @Date 2019/12/18 17:15 */ public class UserTagUtils { - private static Logger logger = LoggerFactory.getLogger(UserTagUtils.class); + private static Logger logger = LoggerFactory.getLogger(UserTagUtils.class); - /** - * @param userTagInfos - * @return java.lang.String - * @Author yinzuomei - * @Description 党员标识 0:否,1:是 - * @Date 2019/12/18 17:23 - **/ - public static String getUserPartyFlag(List userTagInfos) { - for (UserTagInfo userTagInfo : userTagInfos) { - if (UserTagEnum.PARTY_MEMBER.value().equals(userTagInfo.getTagCode())) { - return YesOrNoEnum.YES.value(); - } - } - return YesOrNoEnum.NO.value(); - } +// /** +// * @param userTagInfos +// * @return java.lang.String +// * @Author yinzuomei +// * @Description 党员标识 0:否,1:是 +// * @Date 2019/12/18 17:23 +// **/ +// public static String getUserPartyFlag(List userTagInfos) { +// for (UserTagInfo userTagInfo : userTagInfos) { +// if (UserTagEnum.PARTY_MEMBER.value().equals(userTagInfo.getTagCode())) { +// return YesOrNoEnum.YES.value(); +// } +// } +// return YesOrNoEnum.NO.value(); +// } + + /** + * 判断用户是否有该身份 + * + * @param userTagInfos + * @param userTagEnum + * @return boolean + * @author rongchao + * @since 2019-12-19 + */ + public static boolean containIdentity(List userTagInfos, UserTagEnum userTagEnum) { + boolean flag = Boolean.FALSE; + for (UserTagInfo userTagInfo : userTagInfos) { + if (userTagEnum.value().equals(userTagInfo.getTagCode())) { + flag = Boolean.TRUE; + break; + } + } + return flag; + } } 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 index ec36bfa37..68f365019 100644 --- 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 @@ -44,36 +44,6 @@ public class UserGridRelationDTO implements Serializable { */ private String userId; - /** - * 区县 - */ - private String district; - - /** - * 区县ID - */ - private Long districtId; - - /** - * 街道 - */ - private String street; - - /** - * 街道ID - */ - private Long streetId; - - /** - * 社区 - */ - private String community; - - /** - * 社区ID - */ - private Long communityId; - /** * 所属网格 */ @@ -89,36 +59,6 @@ public class UserGridRelationDTO implements Serializable { */ private Date switchedTime; - /** - * 乐观锁 - */ - private Integer revision; - - /** - * 创建人 - */ - private String createdBy; - - /** - * 创建时间 - */ - private Date createdTime; - - /** - * 更新人 - */ - private String updatedBy; - - /** - * 更新时间 - */ - private Date updatedTime; - - /** - * 删除标记 - */ - private String delFlag; - /** * 是否是网格长 0否1是 */ @@ -144,4 +84,4 @@ public class UserGridRelationDTO implements Serializable { */ private String parentDeptIds; -} \ 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/EpdcAppUserController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppUserController.java index 668fe130b..4bdf7a005 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 @@ -367,4 +367,18 @@ public class EpdcAppUserController { public Result needCachingUserInfo(@RequestBody EpdcAppQueryUserInfoFormDTO formDTO) { return userService.queryCachingUserInfo(formDTO); } + + /** + * 根据用户ID获取用户缓存信息 + * + * @param userId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author rongchao + * @since 2019-12-19 + */ + @GetMapping("needCachingUserInfoByUserId/{userId}") + public Result needCachingUserInfoByUserId(@PathVariable("userId") String userId) { + //TODO:尹作梅 + return null; + } } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyAuthenticationFailedEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyAuthenticationFailedEntity.java index 2691b5b3f..2530a5ec7 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyAuthenticationFailedEntity.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyAuthenticationFailedEntity.java @@ -20,6 +20,7 @@ package com.elink.esua.epdc.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; import lombok.Data; import lombok.EqualsAndHashCode; @@ -32,100 +33,80 @@ import java.util.Date; * @since v1.0.0 2019-11-15 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("epdc_party_authentication_failed") -public class PartyAuthenticationFailedEntity extends BaseEpdcEntity { +public class PartyAuthenticationFailedEntity extends DeptScope { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** * 姓名 */ - private String realName; + private String realName; /** * 手机号 */ - private String mobile; + private String mobile; /** * 身份证号 */ - private String identityNo; + private String identityNo; /** * 职务 字典表dict_name */ - private String post; + private String post; /** * 职务ID 字典表dict_value */ - private String postValue; + private String postValue; /** * 干部下沉标识 0-否,1-是 */ - private String cadreFlag; + private String cadreFlag; /** * 注册状态 0-否,1-是 */ - private String registFlag; + private String registFlag; /** * 注册时间 */ - private Date registTime; + private Date registTime; /** * 网格名称 */ - private String gridName; + private String gridName; /** * 网格ID */ - private Long gridId; + private Long gridId; /** * 部门ID */ - private Long deptId; + private Long deptId; /** * 状态 0-认证失败 */ - private Integer state; + private String state; /** * 用户ID */ - private String userId; + private String userId; /** * 居民住址 */ - private String address; + private String address; - /*** - *所有部门名称 - */ - private String allDeptNames; - - /*** - *所有部门ID - */ - private String allDeptIds; - - /*** - *父所有部门 - */ - private String parentDeptNames; - - /*** - *父所有部门 - */ - private String parentDeptIds; - -} \ 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/PartyMembersEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyMembersEntity.java index e0490c6fc..5fe55571d 100755 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyMembersEntity.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/PartyMembersEntity.java @@ -17,13 +17,8 @@ package com.elink.esua.epdc.entity; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.FieldFill; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; - -import com.elink.esua.epdc.commons.mybatis.entity.BaseEntity; -import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; import lombok.Data; import lombok.EqualsAndHashCode; @@ -36,78 +31,60 @@ import java.util.Date; * @since v1.0.0 2019-09-02 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("epdc_party_members") -public class PartyMembersEntity extends BaseEpdcEntity { - private static final long serialVersionUID = 1L; +public class PartyMembersEntity extends DeptScope { + + private static final long serialVersionUID = 1L; /** * 姓名 */ - private String realName; + private String realName; /** * 手机号 */ - private String mobile; + private String mobile; /** * 身份证号 */ - private String identityNo; + private String identityNo; /** * 职务 */ - private String post; + private String post; /** * 职务ID(字典表) */ - private String postValue; + private String postValue; /** * 干部下沉标识(0-否,1-是) */ - private String cadreFlag; + private String cadreFlag; /** * 注册状态(0-否,1-是) */ - private String registFlag; + private String registFlag; /** * 注册时间 */ - private Date registTime; + private Date registTime; /** * 网格名称 */ - private String gridName; + private String gridName; /** * 网格ID */ - private long gridId; + private long gridId; /** * 部门ID */ - private long deptId; - /*** - *所有部门名称 - */ - private String allDeptNames; - - /*** - *所有部门ID - */ - private String allDeptIds; + private long deptId; - /*** - *父所有部门 - */ - private String parentDeptNames; - - /*** - *父所有部门 - */ - private String parentDeptIds; - - /*** - * 所在党委 - */ - private String partyOrganization; + /*** + * 所在党委 + */ + private String partyOrganization; } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserAuthenticateHistoryEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserAuthenticateHistoryEntity.java index fa3a1693d..3a3b14bf5 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserAuthenticateHistoryEntity.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserAuthenticateHistoryEntity.java @@ -32,40 +32,45 @@ import java.util.Date; * @since v1.0.0 2019-11-21 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("epdc_user_authenticate_history") public class UserAuthenticateHistoryEntity extends BaseEpdcEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /** * 用户ID */ - private String userId; + private String userId; /** * 手机号 */ - private String mobile; + private String mobile; /** * 姓名 */ - private String realName; + private String realName; /** * 居民地址 */ - private String address; + private String address; /** * 是否认证通过 0未通过1通过 */ - private String authenticatedFlag; + private String authenticatedFlag; + + /** + * 认证类别(0-居民认证,1-党员认证,2-志愿者认证) + */ + private String authenticatedType; /** * 审核备注 */ - private String remark; + 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/UserEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java index c1ae65855..f3707b436 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 @@ -20,6 +20,7 @@ package com.elink.esua.epdc.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; import lombok.Data; import lombok.EqualsAndHashCode; @@ -32,9 +33,9 @@ import java.util.Date; * @since v1.0.0 2019-09-02 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("epdc_user") -public class UserEntity extends BaseEpdcEntity { +public class UserEntity extends DeptScope { private static final long serialVersionUID = -6047044658708037479L; @@ -233,24 +234,4 @@ public class UserEntity extends BaseEpdcEntity { * 居住网格id */ private Long deptId; - - /** - * 父所有部门 - */ - private String parentDeptIds; - - /** - * 父所有部门 - */ - private String parentDeptNames; - - /** - * 所有部门ID - */ - private String allDeptIds; - - /** - * 所有部门名称 - */ - private String allDeptNames; } 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 index 1addcae49..02d9ea3eb 100644 --- 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 @@ -20,6 +20,7 @@ package com.elink.esua.epdc.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; import lombok.Data; import lombok.EqualsAndHashCode; @@ -32,54 +33,35 @@ import java.util.Date; * @since v1.0.0 2019-10-23 */ @Data -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @TableName("epdc_user_grid_relation") -public class UserGridRelationEntity extends BaseEpdcEntity { +public class UserGridRelationEntity extends DeptScope { - private static final long serialVersionUID = 8308463158510832072L; + private static final long serialVersionUID = 8308463158510832072L; /** * 用户ID */ - private String userId; + private String userId; /** * 所属网格 */ - private String grid; + private String grid; /** * 网格ID */ - private Long gridId; + private Long gridId; /** * 最后切换此网格的时间 */ - private Date switchedTime; + private Date switchedTime; /** * 是否是网格长 0否1是 */ private String leaderFlag; - /*** - *所有部门名称 - */ - private String allDeptNames; - - /*** - *所有部门ID - */ - private String allDeptIds; - - /*** - *父所有部门 - */ - private String parentDeptNames; - - /*** - *父所有部门 - */ - private String parentDeptIds; } 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 d18d867f7..b216766cc 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 @@ -69,4 +69,15 @@ public interface PartyMembersService extends BaseService { * @date 2019/11/4 10:08 */ Result insertPartyList(MultipartFile file); + + /** + * 根据身份证号和姓名获取党员数量 + * + * @param identityNo + * @param realName + * @return int + * @author rongchao + * @since 2019-12-18 + */ + int countPartyMemberByIdNoAndRealName(String identityNo, String realName); } 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 e97f984c4..cc2a9b9ae 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 @@ -33,6 +33,7 @@ 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.constant.UserFieldConsant; import com.elink.esua.epdc.dao.PartyMembersDao; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.PartyMembersDTO; @@ -69,6 +70,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -85,6 +87,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl list = baseDao.pageDIY(params); return new Result>().ok(new PageData<>(list, page.getTotal())); } + @Override public Result> hasAuthenticationPartyPage(Map params) { IPage page = getPage(params); @@ -109,9 +112,9 @@ public class PartyMembersServiceImpl extends BaseServiceImpl parentResult = null; - if(dto.getAllDeptIds()!=null&&dto.getAllDeptIds().length>1){ - parentResult = adminFeignClient.getParentAndAllDept(dto.getAllDeptIds()[dto.getAllDeptIds().length-1]); + if (dto.getAllDeptIds() != null && dto.getAllDeptIds().length > 1) { + parentResult = adminFeignClient.getParentAndAllDept(dto.getAllDeptIds()[dto.getAllDeptIds().length - 1]); } - if(parentResult!=null){ + if (parentResult != null) { if (!parentResult.success() || parentResult.getData() == null) { throw new RenException("获取部门信息失败"); - }else { + } else { ParentAndAllDeptDTO deptDTO = parentResult.getData(); entity.setAllDeptIds(deptDTO.getAllDeptIds()); entity.setAllDeptNames(deptDTO.getAllDeptNames()); entity.setParentDeptIds(deptDTO.getParentDeptIds()); entity.setParentDeptNames(deptDTO.getParentDeptNames()); - entity.setGridId(Long.valueOf(dto.getAllDeptIds()[dto.getAllDeptIds().length-1])); + entity.setGridId(Long.valueOf(dto.getAllDeptIds()[dto.getAllDeptIds().length - 1])); String[] split = deptDTO.getAllDeptNames().split("-"); - entity.setGridName(split[split.length-1]); + entity.setGridName(split[split.length - 1]); } } insert(entity); @@ -159,10 +162,10 @@ public class PartyMembersServiceImpl extends BaseServiceImpl parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(allDeptIds[allDeptIds.length-1])); + Result parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(allDeptIds[allDeptIds.length - 1])); if (!parentResult.success() || parentResult.getData() == null) { throw new RenException("获取部门信息失败"); - }else { + } else { ParentAndAllDeptDTO deptDTO = parentResult.getData(); entity.setAllDeptIds(deptDTO.getAllDeptIds()); entity.setAllDeptNames(deptDTO.getAllDeptNames()); @@ -196,7 +199,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl partyList) { List partyMembersEntityList = ConvertUtils.sourceToTarget(partyList, PartyMembersEntity.class); - for (int i=0;i partyList = ExcelImportUtil.importExcel(f, PartyMembersExcel.class, importParams); // 校验数据 List epdcPartyErroyResultDtos = this.checkExcel(partyList, partyMembersEntityList); - if(epdcPartyErroyResultDtos.size()>0){ + if (epdcPartyErroyResultDtos.size() > 0) { return new Result().ok(epdcPartyErroyResultDtos); } saveList(partyList); @@ -229,6 +232,14 @@ public class PartyMembersServiceImpl extends BaseServiceImpl partyWrapper = new QueryWrapper<>(); + partyWrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo) + .eq(UserFieldConsant.REAL_NAME, realName); + return baseDao.selectCount(partyWrapper); + } + /*** * 校验excel表格数据 * @param partyList @@ -239,35 +250,35 @@ public class PartyMembersServiceImpl extends BaseServiceImpl checkExcel(List partyList, List partyMembersEntityList) { // 不匹配信息 - List errorLineinfoList=new ArrayList<>(); + List errorLineinfoList = new ArrayList<>(); EpdcPartyErroyResultDTO errorLineinfoDto; 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(); + String identityNo = partyMembersExcel.getIdentityNo(); if (StringUtils.isBlank(realName)) { - errorLineinfoDto=new EpdcPartyErroyResultDTO(); - errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto = new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i + 2) + ""); errorLineinfoDto.setErrorInfo("姓名为空"); errorLineinfoList.add(errorLineinfoDto); } if (StringUtils.isBlank(identityNo)) { - errorLineinfoDto=new EpdcPartyErroyResultDTO(); - errorLineinfoDto.setErroLine((i+2)+""); + errorLineinfoDto = new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i + 2) + ""); errorLineinfoDto.setErrorInfo("身份证号为空"); errorLineinfoList.add(errorLineinfoDto); } - for (PartyMembersEntity item:partyMembersEntityList) { - if(StringUtils.isNotBlank(item.getMobile())&&item.getMobile().equals(mobile)){ - errorLineinfoDto=new EpdcPartyErroyResultDTO(); - errorLineinfoDto.setErroLine((i+2)+""); + for (PartyMembersEntity item : partyMembersEntityList) { + if (StringUtils.isNotBlank(item.getMobile()) && item.getMobile().equals(mobile)) { + errorLineinfoDto = new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i + 2) + ""); errorLineinfoDto.setErrorInfo("手机号已存在"); errorLineinfoList.add(errorLineinfoDto); } - if(item.getIdentityNo().equals(identityNo)){ - errorLineinfoDto=new EpdcPartyErroyResultDTO(); - errorLineinfoDto.setErroLine((i+2)+""); + if (item.getIdentityNo().equals(identityNo)) { + errorLineinfoDto = new EpdcPartyErroyResultDTO(); + errorLineinfoDto.setErroLine((i + 2) + ""); errorLineinfoDto.setErrorInfo("身份证号已存在"); errorLineinfoList.add(errorLineinfoDto); } 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 693612edd..00256f6e9 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 @@ -21,9 +21,13 @@ import cn.hutool.core.collection.CollUtil; 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.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.elink.esua.epdc.commons.mybatis.entity.DeptScope; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; +import com.elink.esua.epdc.commons.mybatis.utils.DeptEntityUtils; 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.UserAuthTypeEnum; import com.elink.esua.epdc.commons.tools.enums.UserSexEnum; import com.elink.esua.epdc.commons.tools.enums.UserTagEnum; import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; @@ -55,6 +59,7 @@ import com.elink.esua.epdc.dto.epdc.result.EpdcWorkUserResultDTO; import com.elink.esua.epdc.enums.AppUserAuditStateEnum; import com.elink.esua.epdc.enums.AppUserStatesEnum; import com.elink.esua.epdc.feign.AdminFeignClient; +import com.elink.esua.epdc.service.PartyMembersService; import com.elink.esua.epdc.service.UserGridRelationService; import com.elink.esua.epdc.service.UserInvitationRecordService; import com.elink.esua.epdc.service.UserService; @@ -74,27 +79,36 @@ import java.util.*; @Service public class UserServiceImpl extends BaseServiceImpl implements UserService { - @Autowired - private PartyMembersDao partyMembersDao; @Autowired private UserGridRelationService userGridRelationService; @Autowired - private UserAuthenticateHistoryDao userAuthenticateHistoryDao; + private UserInvitationRecordService userInvitationRecordService; @Autowired - private UserInvitationRecordService userInvitationRecordService; + private PartyMembersService partyMembersService; + @Autowired - private UserDetailRedis userDetailRedis; + private PartyMembersDao partyMembersDao; + @Autowired - private AdminFeignClient adminFeignClient; + private UserAuthenticateHistoryDao userAuthenticateHistoryDao; + @Autowired private PartyAuthenticationFailedDao partyAuthenticationFailedDao; + @Autowired private UserTagDao userTagDao; + @Autowired private UserTagRelationDao userTagRelationDao; + + @Autowired + private AdminFeignClient adminFeignClient; + + private UserDetailRedis userDetailRedis; + @Override public PageData page(Map params) { this.verifyParams(params); @@ -495,110 +509,217 @@ public class UserServiceImpl extends BaseServiceImpl implem return new Result().ok(userEntity.getState()); } - @Override - @Transactional(rollbackFor = Exception.class) - public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { - EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); + /** + * 生成党员认证失败记录 + * + * @param dto + * @param userGridRelationDTO + * @param parentAndAllDeptDTO + * @return boolean + * @author rongchao + * @since 2019-12-19 + */ + private boolean generatePartyAuthenticationFailedRecord(EpdcCompleteAppUserDTO dto, UserGridRelationDTO userGridRelationDTO, ParentAndAllDeptDTO parentAndAllDeptDTO) { + PartyAuthenticationFailedEntity authenticationFailedEntity = ConvertUtils.sourceToTarget(dto, PartyAuthenticationFailedEntity.class); + // 装载部门冗余信息 + DeptEntityUtils.loadDeptInfo( + ConvertUtils.sourceToTarget(parentAndAllDeptDTO, DeptEntityUtils.DeptDto.class), + authenticationFailedEntity + ); + authenticationFailedEntity.setUserId(dto.getId()); + authenticationFailedEntity.setState(dto.getState()); + authenticationFailedEntity.setAddress(dto.getAddress()); + authenticationFailedEntity.setDeptId(dto.getDeptId()); + authenticationFailedEntity.setGridId(userGridRelationDTO.getGridId()); + authenticationFailedEntity.setGridName(userGridRelationDTO.getGrid()); + authenticationFailedEntity.setRegistTime(new Date()); + authenticationFailedEntity.setRegistFlag(YesOrNoEnum.YES.value()); + authenticationFailedEntity.setIdentityNo(dto.getIdentityNo()); + authenticationFailedEntity.setMobile(dto.getMobile()); + authenticationFailedEntity.setRealName(dto.getRealName()); + return SqlHelper.retBool(partyAuthenticationFailedDao.insert(authenticationFailedEntity)); + } - UserDTO userDto = ConvertUtils.sourceToTarget(completeAppUser, UserDTO.class); - if (StringUtils.isBlank(userDto.getWxUnionId())) { - userDto.setWxUnionId(null); - } + /** + * 生成认证历史 + * + * @param completeAppUser + * @param userAuthTypeEnum + * @param yesOrNoEnum + * @param remark + * @return boolean + * @author rongchao + * @since 2019-12-19 + */ + private boolean generateUserAuthenticateHistory(EpdcCompleteAppUserDTO completeAppUser, UserAuthTypeEnum userAuthTypeEnum, YesOrNoEnum yesOrNoEnum, String remark) { + UserAuthenticateHistoryEntity userAuthenticateHistoryEntity = new UserAuthenticateHistoryEntity(); + userAuthenticateHistoryEntity.setUserId(completeAppUser.getId()); + userAuthenticateHistoryEntity.setMobile(completeAppUser.getMobile()); + userAuthenticateHistoryEntity.setRealName(completeAppUser.getRealName()); + userAuthenticateHistoryEntity.setAddress(completeAppUser.getAddress()); + userAuthenticateHistoryEntity.setAuthenticatedType(userAuthTypeEnum.value()); + userAuthenticateHistoryEntity.setAuthenticatedFlag(yesOrNoEnum.value()); + if (StringUtils.isNotEmpty(remark)) { + userAuthenticateHistoryEntity.setRemark(remark); + } + return SqlHelper.retBool(userAuthenticateHistoryDao.insert(userAuthenticateHistoryEntity)); + } + + /** + * 更新党员库信息 + * + * @param parentAndAllDeptDTO + * @param formDto + * @return boolean + * @author rongchao + * @since 2019-12-19 + */ + private boolean modifyPartyMembers(ParentAndAllDeptDTO parentAndAllDeptDTO, EpdcAppUserCompleteInfoFormDTO formDto) { + PartyMembersEntity partyMembersEntity = DeptEntityUtils.loadDeptInfo( + ConvertUtils.sourceToTarget(parentAndAllDeptDTO, DeptEntityUtils.DeptDto.class), + PartyMembersEntity.class + ); + EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); + partyMembersEntity.setGridId(userGridRelation.getGridId()); + partyMembersEntity.setGridName(userGridRelation.getGrid()); + partyMembersEntity.setRegistFlag(YesOrNoEnum.YES.value()); + partyMembersEntity.setRegistTime(new Date()); + UpdateWrapper partyUpdate = new UpdateWrapper<>(); + partyUpdate.eq(UserFieldConsant.IDENTITY_NO, completeAppUser.getIdentityNo()) + .eq(UserFieldConsant.REAL_NAME, completeAppUser.getRealName()); + return SqlHelper.retBool(partyMembersDao.update(partyMembersEntity, partyUpdate)); + } - String userId = userDto.getId(); + /** + * 修改居民信息 + * + * @param completeAppUser + * @param userGridRelation + * @param parentAndAllDeptDTO + * @return com.elink.esua.epdc.entity.UserEntity + * @author rongchao + * @since 2019-12-19 + */ + private UserEntity modifyResidentInfo(EpdcCompleteAppUserDTO completeAppUser, UserGridRelationDTO userGridRelation, ParentAndAllDeptDTO parentAndAllDeptDTO) { + UserEntity userEntity = ConvertUtils.sourceToTarget(completeAppUser, UserEntity.class); + if (StringUtils.isBlank(userEntity.getWxUnionId())) { + userEntity.setWxUnionId(null); + } + String userId = completeAppUser.getId(); UserEntity oldEntity = this.baseDao.selectById(userId); + if (oldEntity.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { + userEntity.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); + } + //返回网格长标识信息 + UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(completeAppUser.getId(), userGridRelation.getGridId()); + String nicknamePrefix = completeAppUser.getRoad().concat("-"); + if (relationInfo != null && NumConstant.ZERO_STR.equals(relationInfo.getLeaderFlag())) { + } + // 姓 + String lastName = completeAppUser.getRealName().substring(NumConstant.ZERO, NumConstant.ONE); + userEntity.setLastName(lastName); + userEntity.setNickname(nicknamePrefix.concat(lastName).concat(UserSexEnum.FEMALE.sex().equals(userEntity.getSex()) ? "女士" : "先生")); - // 身份证号 - String identityNo = userDto.getIdentityNo(); + //保存用户居住地所在网格,及其他冗余字段。 + DeptEntityUtils.loadDeptInfo( + ConvertUtils.sourceToTarget(parentAndAllDeptDTO, DeptEntityUtils.DeptDto.class), + userEntity + ); + if (!updateById(userEntity)) { + throw new RenException("用户认证修改居民信息时失败!"); + } + UserDTO userDTO = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); + userDTO.setLeaderFlag(relationInfo.getLeaderFlag()); + return userEntity; + } + + /** + * 生成用户身份标签 + * + * @param userId + * @return boolean + * @author rongchao + * @since 2019-12-19 + */ + private boolean generateUserTag(String userId) { + UserTagEntity userTagEntity = userTagDao.selectByTagCode(UserTagEnum.PARTY_MEMBER.value()); + UserTagRelationEntity userTagRelationEntity = new UserTagRelationEntity(); + userTagRelationEntity.setTagId(userTagEntity.getId()); + userTagRelationEntity.setUserId(userId); + return SqlHelper.retBool(userTagRelationDao.insert(userTagRelationEntity)); + } + + /** + * 根据网格ID获取冗余的组织机构信息 + * + * @param + * @return com.elink.esua.epdc.dto.ParentAndAllDeptDTO + * @author rongchao + * @since 2019-12-19 + */ + private ParentAndAllDeptDTO getParentAndAllDeptDTO(String gridId) { + // 获取组织结构冗余信息 + Result parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(gridId); + ParentAndAllDeptDTO parentAndAllDeptDTO = parentAndAllDeptDTOResult.getData(); - Result parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(String.valueOf(userGridRelation.getGridId())); if (!parentAndAllDeptDTOResult.success()) { - return new Result().error(parentAndAllDeptDTOResult.getMsg()); + throw new RenException(parentAndAllDeptDTOResult.getMsg()); } - if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { - PartyMembersEntity partyMembersEntity = new PartyMembersEntity(); - partyMembersEntity.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); - partyMembersEntity.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); - partyMembersEntity.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); - partyMembersEntity.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); - partyMembersEntity.setGridId(userGridRelation.getGridId()); - partyMembersEntity.setGridName(userGridRelation.getGrid()); - partyMembersEntity.setRegistFlag(YesOrNoEnum.YES.value()); - partyMembersEntity.setRegistTime(oldEntity.getRegisterTime()); - QueryWrapper partyWrapper = new QueryWrapper<>(); - partyWrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo) - .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); - int selectCount = this.partyMembersDao.selectCount(partyWrapper); - //用户认证历史 - UserAuthenticateHistoryEntity userAuthenticateHistoryEntity = new UserAuthenticateHistoryEntity(); - if (selectCount == NumConstant.ZERO) { - // 党员库中没有,存进党员认证失败表 - PartyAuthenticationFailedEntity authenticationFailedEntity = ConvertUtils.sourceToTarget(partyMembersEntity, PartyAuthenticationFailedEntity.class); - authenticationFailedEntity.setUserId(userId); - authenticationFailedEntity.setState(Integer.parseInt(YesOrNoEnum.NO.value())); - authenticationFailedEntity.setAddress(userDto.getAddress()); - authenticationFailedEntity.setRealName(userDto.getRealName()); - authenticationFailedEntity.setMobile(userDto.getMobile()); - authenticationFailedEntity.setIdentityNo(identityNo); - authenticationFailedEntity.setRegistTime(oldEntity.getRegisterTime()); - partyAuthenticationFailedDao.insert(authenticationFailedEntity); - - userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); - userDto.setPartyFlag(YesOrNoEnum.NO.value());//是否是党员(0-否,1-是) 认证失败:0 - userAuthenticateHistoryEntity.setAuthenticatedFlag(YesOrNoEnum.NO.value()); - } else { - UpdateWrapper partyUpdate = new UpdateWrapper<>(); - partyUpdate.eq(UserFieldConsant.IDENTITY_NO, identityNo) - .eq(UserFieldConsant.REAL_NAME, userDto.getRealName()); - this.partyMembersDao.update(partyMembersEntity, partyUpdate); - userAuthenticateHistoryEntity.setAuthenticatedFlag(YesOrNoEnum.YES.value()); - userDto.setPartyFlag(YesOrNoEnum.YES.value());//是否是党员(0-否,1-是) 认证失败:0 - //党员认证成功需要插入epdc_user_tag_relation表 - UserTagEntity userTagEntity=userTagDao.selectByTagCode(UserTagEnum.PARTY_MEMBER.value()); - UserTagRelationEntity userTagRelationEntity=new UserTagRelationEntity(); - userTagRelationEntity.setTagId(userTagEntity.getId()); - userTagRelationEntity.setUserId(userDto.getId()); - userTagRelationDao.insert(userTagRelationEntity); - } - //插入用户认证历史表 - userAuthenticateHistoryEntity.setUserId(userId); - userAuthenticateHistoryEntity.setMobile(userDto.getMobile()); - userAuthenticateHistoryEntity.setRealName(userDto.getRealName()); - userAuthenticateHistoryEntity.setAddress(userDto.getAddress()); - userAuthenticateHistoryEntity.setRemark(userDto.getRemark()); - userAuthenticateHistoryDao.insert(userAuthenticateHistoryEntity); + return parentAndAllDeptDTO; + } + + /** + * 认证党员 + * + * @param formDto + * @param parentAndAllDeptDTO + * @return void + * @author rongchao + * @since 2019-12-19 + */ + private void authPartyMembers(EpdcAppUserCompleteInfoFormDTO formDto, ParentAndAllDeptDTO parentAndAllDeptDTO) { + EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); + UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); + int selectCount = partyMembersService.countPartyMemberByIdNoAndRealName(completeAppUser.getIdentityNo(), completeAppUser.getRealName()); + if (selectCount == NumConstant.ZERO) { + // 党员认证失败 + // 党员库中没有,存进党员认证失败表 + generatePartyAuthenticationFailedRecord(completeAppUser, userGridRelation, parentAndAllDeptDTO); + // 生成党员认证不通过记录 + generateUserAuthenticateHistory(completeAppUser, UserAuthTypeEnum.PARTY_AUTH, YesOrNoEnum.NO, "党员库中无此党员信息"); } else { - if (oldEntity.getState().equals(AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value())) { - userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); - } - } - // 昵称前缀 - String nicknamePrefix = "网格长-"; - if (!oldEntity.getNickname().startsWith(nicknamePrefix)) { - nicknamePrefix = userDto.getRoad().concat("-"); + //党员认证成功 + modifyPartyMembers(parentAndAllDeptDTO, formDto); + // 党员认证成功,生成用户身份标签 + generateUserTag(completeAppUser.getId()); + // 生成党员认证通过记录 + generateUserAuthenticateHistory(completeAppUser, UserAuthTypeEnum.PARTY_AUTH, YesOrNoEnum.YES, null); } - // 姓 - String lastName = userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE); - userDto.setLastName(lastName); - userDto.setNickname(nicknamePrefix.concat(lastName).concat(UserSexEnum.FEMALE.sex().equals(userDto.getSex()) ? "女士" : "先生")); + } - //保存用户居住地所在网格,及其他冗余字段。 - userDto.setAllDeptIds(parentAndAllDeptDTOResult.getData().getAllDeptIds()); - userDto.setAllDeptNames(parentAndAllDeptDTOResult.getData().getAllDeptNames()); - userDto.setParentDeptIds(parentAndAllDeptDTOResult.getData().getParentDeptIds()); - userDto.setParentDeptNames(parentAndAllDeptDTOResult.getData().getParentDeptNames()); + @Override + @Transactional(rollbackFor = Exception.class) + public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { + EpdcCompleteAppUserDTO completeAppUser = formDto.getCompleteAppUser(); + UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); + + // 获取组织结构冗余信息 + ParentAndAllDeptDTO parentAndAllDeptDTO = getParentAndAllDeptDTO(userGridRelation.getGridId().toString()); + + //进行居民认证 + UserEntity userEntity = modifyResidentInfo(completeAppUser, userGridRelation, parentAndAllDeptDTO); - UserEntity userEntity = ConvertUtils.sourceToTarget(userDto, UserEntity.class); - boolean updateUser = this.updateById(userEntity); - if (!updateUser) { - throw new RenException("保存用户信息异常"); + if (YesOrNoEnum.YES.value().equals(completeAppUser.getPartyFlag())) { + //进行党员认证 + authPartyMembers(formDto, parentAndAllDeptDTO); } - UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(userEntity.getId(), userGridRelation.getGridId()); - userDto.setLeaderFlag(relationInfo.getLeaderFlag()); - userDto.setFaceImg(oldEntity.getFaceImg()); - return new Result().ok(userDto); + //返回网格长标识信息 + UserGridRelationDTO relationInfo = userGridRelationService.getUserRelationInfo(completeAppUser.getId(), userGridRelation.getGridId()); + UserDTO userDTO = ConvertUtils.sourceToTarget(userEntity, UserDTO.class); + userDTO.setLeaderFlag(relationInfo.getLeaderFlag()); + return new Result().ok(userDTO); } /**