diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/PartyMemberModifyFormDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/PartyMemberModifyFormDTO.java new file mode 100644 index 000000000..1feaf4d4c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/PartyMemberModifyFormDTO.java @@ -0,0 +1,57 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author:liuchuang + * @Date:2020/3/24 19:39 + */ +@Data +public class PartyMemberModifyFormDTO implements Serializable { + + /** + * 用户ID + */ + @NotBlank(message = "用户ID不能为空") + private String userId; + + /** + * 用户状态 + */ + private String state; + + /** + * 党员标识 + */ + private String partyFlag; + + /** + * 备注 + */ + private String remark; + + /** + * 真实姓名 + */ + @NotBlank(message = "姓名不能为空") + private String realName; + + /** + * 手机号 + */ + private String mobile; + + /** + * 身份证号 + */ + @NotBlank(message = "身份证号不能为空") + private String identityNo; + + /** + * 党员ID + */ + private String partyMemberId; +} 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 3f864a4e8..3c092d052 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 @@ -82,7 +82,7 @@ public class PartyMembersController { @GetMapping("{id}") public Result get(@PathVariable("id") String id) { PartyMembersDTO data = partyMembersService.get(id); - if (data.getTagIds() != null) { + if (null != data && data.getTagIds() != null) { data.setTagIdsNew(data.getTagIds().split(",")); } return new Result().ok(data); 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 66c368e58..200ac3184 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 @@ -26,10 +26,12 @@ 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.PartyMemberModifyFormDTO; 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.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -58,6 +60,22 @@ public class UserController { return new Result>().ok(page); } + /** + * + * 待认证党员列表 + * + * @params [params] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author liuchuang + * @since 2020/3/24 15:47 + */ + @GetMapping("waitPartyPage") + @DataFilter(tableAlias = "ug", isPendingCreator = false, deptId = "GRID_ID", prefix = "AND") + public Result> waitPartyPage(@RequestParam Map params) { + PageData page = userService.waitPartyPage(params); + return new Result>().ok(page); + } + @GetMapping("{id}") public Result get(@PathVariable("id") String id) { UserDTO data = userService.get(id); @@ -101,6 +119,57 @@ public class UserController { return new Result(); } + /** + * + * 党员认证 + * + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/3/24 15:58 + */ + @PostMapping("partyReview") + public Result partyReview(@RequestBody UserDTO dto) { + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + return userService.partyReview(dto); + } + + /** + * + * 党员认证通过并更新党员库信息 + * + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/3/24 19:38 + */ + @PostMapping("updatePartyInfo") + public Result updatePartyInfo(@RequestBody PartyMemberModifyFormDTO dto) { + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + if (StringUtils.isEmpty(dto.getPartyMemberId())) { + return new Result().error("党员ID不能为空"); + } + return userService.modifyPartyInfo(dto); + } + + /** + * + * 新增党员信息并认证通过 + * + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/3/25 14:31 + */ + @PostMapping("insertPartyInfo") + public Result insertPartyInfo(@RequestBody PartyMemberModifyFormDTO dto) { + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + return userService.addPartyInfo(dto); + } + @DeleteMapping public Result delete(@RequestBody String[] ids) { //效验数据 @@ -130,6 +199,22 @@ public class UserController { ExcelUtils.exportExcelToTarget(response, fileName, list, UserExcel.class); } + /** + * + * 待认证党员导出 + * + * @params [params, response] + * @return void + * @author liuchuang + * @since 2020/3/24 16:00 + */ + @GetMapping("exportWaitParty") + @DataFilter(tableAlias = "ug", isPendingCreator = false, deptId = "GRID_ID", prefix = "AND") + public void exportWaitParty(@RequestParam Map params, HttpServletResponse response) throws Exception { + List list = userService.listOfWaitParty(params); + ExcelUtils.exportExcelToTarget(response, "待认证党员", list, UserExcel.class); + } + /*** * 未认证导出 * @param params 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 1dc4fa5f1..7827dccb7 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 @@ -99,6 +99,17 @@ public interface UserDao extends BaseDao { */ List selectListUserDto(Map params); + /** + * + * 待认证党员 + * + * @params [params] + * @return java.util.List + * @author liuchuang + * @since 2020/3/23 15:59 + */ + List selectListOfWaitPartyUserDto(Map params); + /** * 获取居民详情(已认证或待认证(提交信息待审核)的居民用户) * 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 533035a03..bb3b85610 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 @@ -20,6 +20,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.PartyMemberModifyFormDTO; +import com.elink.esua.epdc.dto.PartyMembersDTO; 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; @@ -48,8 +50,30 @@ public interface UserService extends BaseService { PageData page(Map params); + /** + * + * 待认证党员列表 + * + * @params [params] + * @return com.elink.esua.epdc.commons.tools.page.PageData + * @author liuchuang + * @since 2020/3/23 15:57 + */ + PageData waitPartyPage(Map params); + List list(Map params); + /** + * + * 待认证党员导出 + * + * @params [params] + * @return java.util.List + * @author liuchuang + * @since 2020/3/23 16:25 + */ + List listOfWaitParty(Map params); + UserDTO get(String id); void save(UserDTO dto); @@ -60,6 +84,39 @@ public interface UserService extends BaseService { void audit(UserDTO dto); + /** + * + * 党员认证 + * + * @params [dto] + * @return void + * @author liuchuang + * @since 2020/3/23 17:56 + */ + Result> partyReview(UserDTO dto); + + /** + * + * 党员认证通过并更新党员库信息 + * + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/3/24 19:46 + */ + Result modifyPartyInfo(PartyMemberModifyFormDTO dto); + + /** + * + * 新增党员信息并认证通过 + * + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/3/25 14:33 + */ + Result addPartyInfo(PartyMemberModifyFormDTO dto); + /** * 根据用户微信openId获取用户信息 * 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 490cc85e0..695968251 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 @@ -169,7 +169,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl implem return new PageData<>(userDtoList, iPage.getTotal()); } + @Override + public PageData waitPartyPage(Map params) { + this.verifyParams(params); + IPage iPage = this.getPage(params); + List userDtoList = this.baseDao.selectListOfWaitPartyUserDto(params); + return new PageData<>(userDtoList, iPage.getTotal()); + } + @Override public List list(Map params) { this.verifyParams(params); @@ -137,6 +143,12 @@ public class UserServiceImpl extends BaseServiceImpl implem } } + @Override + public List listOfWaitParty(Map params) { + this.verifyParams(params); + return this.baseDao.selectListOfWaitPartyUserDto(params); + } + private Map verifyParams(Map params) { String[] paramKeys = new String[]{"realName", "identityNo", "nickname", FieldConstant.MOBILE_HUMP}; @@ -203,6 +215,81 @@ public class UserServiceImpl extends BaseServiceImpl implem } } + @Override + @Transactional(rollbackFor = Exception.class) + public Result> partyReview(UserDTO dto) { + this.verifyUserInfo(dto); + UserEntity findUser = this.baseDao.selectById(dto.getId()); + dto.setState(NumConstant.THREE_STR); + // 手动认证为党员 + if (YesOrNoEnum.YES.value().equals(dto.getPartyFlag())) { + // 校验是党员库是否存在相同的身份证号或者姓名 + boolean isParty = getPartyMemberByRealNameAndIdentityNo(dto.getRealName(), dto.getIdentityNo()); + if (!isParty) { + Result> result = getPartyMemberByRealNameOrIdentityNo(dto.getRealName(), dto.getIdentityNo()); + if (result.getCode() != 0) { + return result; + } else { + // 插入党员库 + insertPartyMember(dto); + } + } + } + // createdTime作为提交注册时间,registerTime作为注册审核时间(即注册时间) + dto.setRegisterTime(new Date()); + //先删除以前审核未通过的那条数据 + UserEntity entity = ConvertUtils.sourceToTarget(dto, UserEntity.class); + updateById(entity); + // 组装数据并插入用户认证历史表 + findUser.setMobile(dto.getMobile()); + findUser.setRealName(dto.getRealName()); + saveUserAuthenticateHistory(findUser, dto.getPartyFlag(), dto.getRemark(), dto.getState()); + // 修改党员库信息 + if (YesOrNoEnum.YES.value().equals(dto.getPartyFlag())) { + updatePartyMember(findUser, dto.getRegisterTime()); + } + + return new Result<>(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result modifyPartyInfo(PartyMemberModifyFormDTO dto) { + // 更新党员库信息 + PartyMembersEntity entity = new PartyMembersEntity(); + entity.setId(dto.getPartyMemberId()); + entity.setRealName(dto.getRealName()); + entity.setIdentityNo(dto.getIdentityNo()); + partyMembersDao.updateById(entity); + + // 用户认证党员信息通过 + UserDTO userDTO = ConvertUtils.sourceToTarget(dto, UserDTO.class); + userDTO.setId(dto.getUserId()); + userDTO.setPartyFlag(YesOrNoEnum.YES.value()); + this.partyReview(userDTO); + + return new Result(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result addPartyInfo(PartyMemberModifyFormDTO dto) { + // 新增党员库信息 + PartyMembersEntity entity = new PartyMembersEntity(); + entity.setRealName(dto.getRealName()); + entity.setIdentityNo(dto.getIdentityNo()); + entity.setRegistFlag(PartyMemberRegFlagEnum.NO.getValue()); + partyMembersDao.insert(entity); + + // 用户认证党员信息通过 + UserDTO userDTO = ConvertUtils.sourceToTarget(dto, UserDTO.class); + userDTO.setId(dto.getUserId()); + userDTO.setPartyFlag(YesOrNoEnum.YES.value()); + this.partyReview(userDTO); + + return new Result(); + } + /** * 更新党员库信息 * @@ -1199,4 +1286,103 @@ public class UserServiceImpl extends BaseServiceImpl implem return new PageData<>(userDtoList, iPage.getTotal()); } + /** + * + * 用户信息校验 + * + * @params [dto] + * @return com.elink.esua.epdc.dto.UserDTO + * @author liuchuang + * @since 2020/3/23 18:23 + */ + private UserDTO verifyUserInfo(UserDTO dto) { + if (StringUtils.isBlank(dto.getRealName()) && StringUtils.isBlank(dto.getRealName().trim())) { + throw new RenException("用户姓名不能为空"); + } + if (StringUtils.isBlank(dto.getMobile()) && StringUtils.isBlank(dto.getMobile().trim())) { + throw new RenException("手机号不能为空"); + } + if (StringUtils.isBlank(dto.getIdentityNo()) && StringUtils.isBlank(dto.getIdentityNo().trim())) { + throw new RenException("身份证号不能为空"); + } + dto.setRealName(dto.getRealName().trim()); + dto.setMobile(dto.getMobile().trim()); + dto.setIdentityNo(dto.getIdentityNo().trim()); + + return dto; + } + + /** + * + * 获取党员信息 + * + * @params [realName, identityNo] + * @return boolean + * @author liuchuang + * @since 2020/3/23 18:30 + */ + private boolean getPartyMemberByRealNameAndIdentityNo(String realName, String identityNo) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo) + .eq(UserFieldConsant.REAL_NAME, realName); + Integer count = this.partyMembersDao.selectCount(wrapper); + return count != NumConstant.ZERO; + } + + /** + * + * 获取党员信息 + * + * @params [realName, identityNo] + * @return java.util.List + * @author liuchuang + * @since 2020/3/23 18:35 + */ + private Result> getPartyMemberByRealNameOrIdentityNo(String realName, String identityNo) { + List partyMembersEntities = null; + List data = null; + Result> result = new Result<>(); + + // 根据身份证号查询党员库 + QueryWrapper identityNoWrapper = new QueryWrapper<>(); + identityNoWrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo); + partyMembersEntities = this.partyMembersDao.selectList(identityNoWrapper); + if (null != partyMembersEntities && partyMembersEntities.size() > 0) { + data = ConvertUtils.sourceToTarget(partyMembersEntities, PartyMembersDTO.class); + result.setCode(NumConstant.ONE); + result.setData(data); + return result; + } + // 根据姓名查询党员库 + QueryWrapper realNameWrapper = new QueryWrapper<>(); + realNameWrapper.eq(UserFieldConsant.REAL_NAME, realName); + partyMembersEntities = this.partyMembersDao.selectList(realNameWrapper); + if (null != partyMembersEntities && partyMembersEntities.size() > 0) { + data = ConvertUtils.sourceToTarget(partyMembersEntities, PartyMembersDTO.class); + result.setCode(NumConstant.TWO); + result.setData(data); + return result; + } + + return new Result<>(); + } + + /** + * + * 新增党员信息 + * + * @params [dto, findUser] + * @return void + * @author liuchuang + * @since 2020/3/23 19:35 + */ + private void insertPartyMember(UserDTO dto) { + PartyMembersEntity entity = new PartyMembersEntity(); + entity.setRealName(dto.getRealName()); + entity.setIdentityNo(dto.getIdentityNo()); + entity.setRegistFlag(PartyMemberRegFlagEnum.MANUAL.getValue()); + + partyMembersDao.insert(entity); + } + } 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 f3a342d51..fe3722702 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 @@ -66,6 +66,7 @@ u.MOBILE, u.REGISTER_TIME, u.CREATED_TIME, + u.UPDATED_TIME, IDENTITY_NO, ADDRESS, STATE, @@ -77,6 +78,7 @@ LEFT JOIN epdc_user_grid_relation ug ON u.ID = ug.USER_ID where u.del_flag = '0' + and (u.IDENTITY_NO is null or u.IDENTITY_NO = '') and u.CREATED_TIME between #{startTime} and #{endTime} and u.state = #{state} and u.real_name like '%${realName}%' @@ -101,6 +103,48 @@ ORDER BY u.register_time desc +