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 22f5b608f..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 @@ -43,9 +43,9 @@ public class SysRoleDTO implements Serializable { private String name; /** - * 角色编码 + * 角色类型键值(数据字典sysRoleType) */ - private String code; + private String typeKey; /** * 备注 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 4b478b677..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 @@ -35,9 +35,9 @@ public class SysRoleEntity extends BaseEntity { */ private String name; /** - * 角色编码 + * 角色类型键值(数据字典sysRoleType) */ - private String code; + private String typeKey; /** * 备注 */ 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 291295f77..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 @@ -99,7 +99,7 @@ com.id communityId, gri.`name` grid, gri.id gridId, - gri.created_time switchedTime + gri.create_date switchedTime FROM sys_dept gri LEFT JOIN sys_dept com ON gri.pid = com.id 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 d67b18d16..bd6e9f3dc 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 @@ -70,8 +70,9 @@ LEFT JOIN sys_dept d ON d.id = rds.dept_id WHERE d.type_key = 'grid_party' - AND r.`code` = 'gridLeader' + AND r.type_key = 'gridLeader' AND u.mobile = #{mobile} + AND u.del_flag = 0 ORDER BY d.create_date DESC diff --git a/esua-epdc/epdc-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index 4e357c7be..565c2795e 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/esua-epdc/epdc-gateway/src/main/resources/application.yml @@ -207,4 +207,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/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/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 4f378f925..8f604f113 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,18 +4,13 @@ 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.EpdcGridLeaderRegisterSubmitFormDTO; -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.EpdcLeaderGridResultDTO; 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.*; @@ -66,6 +61,7 @@ public class ApiAppUserController { /** * 小程序端,用户注册 + * {@link com.elink.esua.epdc.controller.v2.ApiAppUserV2Controller#getMaV2Token(EpdcAppUserRegisterFormDTO)} * * @param formDto * @return com.elink.esua.epdc.commons.tools.utils.Result @@ -128,6 +124,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); @@ -186,4 +183,47 @@ public class ApiAppUserController { public Result> listGridForLeader(@LoginUser TokenDto userDetail) { return appUserService.listGridForLeader(userDetail.getUserId()); } + + /** + * + * 更新用户微信信息 + * + * @params [tokenDto, formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @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, 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("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/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/feign/UserFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 4f5e27372..d7b619930 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 @@ -6,9 +6,7 @@ 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.*; -import com.elink.esua.epdc.dto.epdc.result.EpdcLeaderGridResultDTO; -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.*; import com.elink.esua.epdc.feign.fallback.UserFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; @@ -40,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); + /** * 获取用户信息(登录用) * @@ -71,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); /** * 验证用户提交的注册信息 @@ -84,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); + /** * 移动端获取用户信息 * @@ -185,4 +216,39 @@ public interface UserFeignClient { */ @GetMapping("app-user/epdc-app/usergrid/listGridForLeader/{userId}") Result> listGridForLeader(@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/UserFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index c92075d10..195d13f26 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 @@ -7,9 +7,7 @@ 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.*; -import com.elink.esua.epdc.dto.epdc.result.EpdcLeaderGridResultDTO; -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.*; import com.elink.esua.epdc.feign.UserFeignClient; import org.springframework.stereotype.Component; @@ -28,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); @@ -48,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); @@ -92,4 +105,19 @@ public class UserFeignClientFallback implements UserFeignClient { public Result> listGridForLeader(String userId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_USER_SERVER, "listGridForLeader", 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/service/AppUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AppUserService.java index dacbfeab6..f395812c1 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,18 +2,13 @@ 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.EpdcGridLeaderRegisterSubmitFormDTO; -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.EpdcLeaderGridResultDTO; 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; @@ -148,4 +143,46 @@ public interface AppUserService { * @date 2019/10/23 15:58 */ Result> listGridForLeader(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/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 7f9bd32ed..210a7ebe6 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,9 +2,9 @@ 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; @@ -14,18 +14,14 @@ import com.elink.esua.epdc.dto.*; 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.EpdcUserRegisterInfoResultDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcLeaderGridResultDTO; 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; @@ -73,9 +69,6 @@ public class AppUserServiceImpl implements AppUserService { @Autowired private UserFeignClient userFeignClient; - @Autowired - private TokenUtil tokenUtil; - @Autowired private JwtTokenProperties jwtTokenProperties; @@ -161,32 +154,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); - 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)) { - TokenDto tokenDto = ConvertUtils.sourceToTarget(userDto, TokenDto.class); - tokenDto.setUserId(userDto.getId()); - authorization = this.packageEpdcAppAuthorization(tokenDto, userDto.getGrid()); + authorization = this.packageEpdcAppAuthorization(tokenDto, userDto.getGrid(), userDto.getState()); - return new Result().ok(authorization); - } else { - return new Result().error("Login failed"); + Result result = new Result().ok(authorization); + // 已注册,未完善信息 + if (AppUserStatesEnum.STATE_INFORMATION_NOT_PASSED.value().equals(state)) { + result.setMsg(userDto.getRemark()); } + return result; } @Override @@ -244,7 +226,7 @@ public class AppUserServiceImpl implements AppUserService { TokenDto tokenDto = ConvertUtils.sourceToTarget(newAppUser, TokenDto.class); tokenDto.setUserId(newAppUser.getId()); - EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, newAppUser.getGrid()); + EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, newAppUser.getGrid(), AppUserStatesEnum.STATE_REGISTERED.value()); return new Result().ok(authorization); } @@ -270,9 +252,9 @@ public class AppUserServiceImpl implements AppUserService { appUser.setWxOpenId(wxMaUser.getOpenid()); appUser.setLastLoginTime(now); appUser.setRegisterTime(now); - appUser.setState(AppUserAuditStateEnum.AUDIT_SUCCESS.value()); + appUser.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); appUser.setGridId(NumConstant.ZERO_L); - appUser.setRegisterSource(AppUserRegisterSourceEnum.WA.value()); + appUser.setRegisterSource(AppUserRegisterSourceEnum.MA.value()); appUser.setRegisterWay(AppUserRegisterWayEnum.WX.value()); appUser.setMobile(mobile); appUser.setNickname("网格长-" @@ -282,7 +264,6 @@ public class AppUserServiceImpl implements AppUserService { appUser.setRealName(sysUser.getRealName()); appUser.setEmail(sysUser.getEmail()); appUser.setPartyFlag(YesOrNoEnum.NO.value()); - appUser.setLeaderFlag(YesOrNoEnum.NO.value()); PhoneDto phoneDto = PhoneUtil.getPhoneDto(mobile); if (phoneDto != null) { @@ -555,7 +536,7 @@ public class AppUserServiceImpl implements AppUserService { UserGridRelationDTO userGridRelation = appUserResult.getData(); userDetail.setGridId(Long.parseLong(gridId)); - EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(userDetail, userGridRelation.getGrid()); + EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(userDetail, userGridRelation.getGrid(), AppUserStatesEnum.STATE_REGISTERED.value()); return new Result().ok(authorization); } @@ -567,15 +548,15 @@ public class AppUserServiceImpl implements AppUserService { /** * 组装成功登录的数据 - * EpdcAppAuthorizationDTO的userState属性默认设置为AppUserStateEnum.REGISTERED * - * @param tokenDto 缓存的用户数据 - * @param grid 网格名称 + * @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) { + private EpdcAppAuthorizationDTO packageEpdcAppAuthorization(TokenDto tokenDto, String grid, String userState) { String userId = tokenDto.getUserId(); // 生成token String token = jwtTokenUtils.generateToken(userId); @@ -584,7 +565,7 @@ public class AppUserServiceImpl implements AppUserService { cpUserDetailRedis.set(tokenDto, expire); EpdcAppAuthorizationDTO authorization = new EpdcAppAuthorizationDTO(); - authorization.setUserState(AppUserStateEnum.REGISTERED.value()); + authorization.setUserState(userState); authorization.setToken(token); authorization.setUserId(userId); authorization.setExpire((long) expire); @@ -595,4 +576,268 @@ public class AppUserServiceImpl implements AppUserService { 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); + + // 党员提交,验证身份证号 + 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()); + + + userDto.setId(tokenDto.getUserId()); + // 验证用户提交的信息 + Result verifyResult = userFeignClient.verifyUserCompleteData(userDto); + if (!verifyResult.success()) { + return new Result().error(verifyResult.getMsg()); + } + + // 组装对象,准备保存用户信息 + EpdcAppUserCompleteInfoFormDTO dto = new EpdcAppUserCompleteInfoFormDTO(); + + UserGridRelationDTO userGrid = this.packageUserGridRelationInfo(tokenDto.getGridId()); + userDto = this.packageUserCompleteInfo(userDto); + + dto.setUserDto(userDto); + 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("获取用户信息失败"); + } + + private UserDTO packageUserCompleteInfo(UserDTO userDto) { + + if (YesOrNoEnum.YES.value().equals(userDto.getPartyFlag())) { + userDto.setState(AppUserStatesEnum.STATE_INFORMATION_PASSED.value()); + userDto.setSex(IdentityNoUtils.getSex(userDto.getIdentityNo())); + userDto.setNickname( + userDto.getRoad().concat("-").concat(userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)) + .concat(NumConstant.ZERO_STR.equals(userDto.getSex()) ? "女士" : "先生")); + userDto.setBirthday(DateUtils.parse(IdentityNoUtils.getBirthday(userDto.getIdentityNo()), DateUtils.DATE_PATTERN)); + } else { + userDto.setState(AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value()); + } + + PhoneDto phoneDto = PhoneUtil.getPhoneDto(userDto.getMobile()); + if (phoneDto != null) { + userDto.setMobileCarrier(phoneDto.getCarrier()); + userDto.setMobileCity(phoneDto.getCityName()); + userDto.setMobileProvince(phoneDto.getProvinceName()); + } + + return userDto; + } + + /** + * 组装用户关联网格信息 + * + * @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 gridRelationDTO = new UserGridRelationDTO(); + gridRelationDTO.setDistrictId(completeDept.getDistrictId()); + gridRelationDTO.setDistrict(completeDept.getDistrict()); + gridRelationDTO.setStreet(completeDept.getStreet()); + gridRelationDTO.setStreetId(completeDept.getStreetId()); + gridRelationDTO.setCommunity(completeDept.getCommunity()); + gridRelationDTO.setCommunityId(completeDept.getCommunityId()); + gridRelationDTO.setGrid(completeDept.getGrid()); + gridRelationDTO.setGridId(completeDept.getGridId()); + gridRelationDTO.setSwitchedTime(new Date()); + gridRelationDTO.setLeaderFlag(NumConstant.ZERO_STR); + + return gridRelationDTO; + } + + @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-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 d8814a698..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 @@ -123,7 +123,7 @@ public class OssController { /** * 下载阿里云oss服务器上的文件 * - * @param url 完整的访问连击 + * @param url 完整的访问链接 * @param response 浏览器返回 * @return void * @author work@yujt.net.cn 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 a6ad68aad..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 @@ -20,4 +20,5 @@ public interface UserFieldConsant { 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 fbfd96c51..3a599ee6a 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 @@ -298,10 +298,6 @@ public class UserDTO implements Serializable { * 干部下沉 0不 */ private String cadreFlag; - /** - * 是否通过 0不 - */ - private String pass; /** * 党员标签 */ @@ -312,9 +308,4 @@ public class UserDTO implements Serializable { */ private String remark; - /** - * 是否是网格长 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/UserGridRelationDTO.java b/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/dto/UserGridRelationDTO.java index 5aa9c28ba..61e7cfb1a 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 @@ -118,4 +118,9 @@ public class UserGridRelationDTO implements Serializable { */ 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/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..2db9f93e6 --- /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.UserDTO; +import com.elink.esua.epdc.dto.UserGridRelationDTO; +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 UserDTO userDto; + + 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/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/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 8126dfe58..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 @@ -17,7 +17,7 @@ public enum AppUserRegisterSourceEnum { /** * 微信小程序 */ - WA("wa"); + 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 e2bee764f..000000000 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-client/src/main/java/com/elink/esua/epdc/enums/AppUserStateEnum.java +++ /dev/null @@ -1,51 +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), - - /** - * 未完善信息 - */ - INCOMPLETE_INFORMATION(NumConstant.FOUR_STR), - - /** - * 已完善信息 - */ - COMPLETED_INFORMATION(NumConstant.FIVE_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..1bea21731 --- /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 d6716a097..f2a052469 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 @@ -3,8 +3,8 @@ 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.UserDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcGridLeaderRegisterFormDTO; -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.service.UserService; @@ -38,6 +38,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); + } + /** * 登录前,获取用户信息 * @@ -144,4 +158,76 @@ public class EpdcAppUserController { public Result getUserRegisterAuditResult(@PathVariable("userId") String userId) { return userService.getUserRegisterAuditResult(userId); } + + /** + * 检查用户注册状态 + * + * @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); + } + + /** + * + * 更新用户微信信息 + * + * @params [userDTO] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @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/PartyMembersController.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/controller/PartyMembersController.java index cfb9cd7b0..cf39c417b 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,16 @@ 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) { + partyTask.insertPartyList(file); + return new Result(); + } } 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 index 71e31d956..9b11331ae 100644 --- 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 @@ -29,6 +29,7 @@ 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; @@ -81,4 +82,11 @@ public class UserGridRelationController { 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 61b3e7d48..2cdd5714c 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 @@ -18,12 +18,16 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +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.entity.UserEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + /** * 用户信息表 * @@ -71,4 +75,14 @@ public interface UserDao extends BaseDao { * @date 2019/9/27 10:08 */ int deleteAuditFailureByOpenId(@Param("wxOpenId") String wxOpenId); + + /** + * 查询用户列表 + * + * @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/entity/UserEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserEntity.java index 0d3822f8c..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,8 +268,4 @@ public class UserEntity extends BaseEpdcEntity { */ private String remark; - /** - * 是否是网格长 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/entity/UserGridRelationEntity.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/entity/UserGridRelationEntity.java index 8ba5b84bc..4da14f1ee 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 @@ -88,4 +88,9 @@ public class UserGridRelationEntity extends BaseEpdcEntity { */ 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/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..a3e9bea34 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,7 @@ 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 java.util.List; import java.util.Map; @@ -47,4 +48,13 @@ public interface PartyMembersService extends BaseService { void update(PartyMembersDTO dto); void delete(String[] ids); + + /*** + * 批量插入 + * @param partyList + * @return void + * @author qushutong + * @date 2019/10/24 14:58 + */ + void saveList(List partyList); } 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 index 45ea72a97..46245fd9f 100644 --- 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 @@ -115,4 +115,24 @@ public interface UserGridRelationService extends BaseService> listGridForLeader(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); } \ 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 186480b16..026fcc8df 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 @@ -21,8 +21,8 @@ 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.UserDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcGridLeaderRegisterFormDTO; -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.entity.UserEntity; @@ -144,4 +144,44 @@ public interface UserService extends BaseService { * @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..9280c9d27 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 @@ -21,6 +21,7 @@ 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; @@ -32,6 +33,7 @@ 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.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; @@ -59,6 +61,7 @@ public class PartyMembersServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -149,4 +152,10 @@ public class PartyMembersServiceImpl extends BaseServiceImpl partyList) { + List partyMembersEntityList = ConvertUtils.sourceToTarget(partyList, PartyMembersEntity.class); + insertBatch(partyMembersEntityList); + } + } 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 index 8244a73b7..6440119ad 100644 --- 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 @@ -135,4 +135,22 @@ public class UserGridRelationServiceImpl extends BaseServiceImpl dtoList = ConvertUtils.sourceToTarget(entityList, EpdcLeaderGridResultDTO.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); + } } \ 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 5c9f8ab4c..740d8f4a4 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 @@ -20,7 +20,9 @@ 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.Wrapper; 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; @@ -28,24 +30,22 @@ 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.UserGridRelationDTO; -import com.elink.esua.epdc.dto.UserTagRelationDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcGridLeaderRegisterFormDTO; -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.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.enums.AppUserStatesEnum; import com.elink.esua.epdc.service.PartyMembersService; import com.elink.esua.epdc.service.UserGridRelationService; import com.elink.esua.epdc.service.UserService; @@ -70,10 +70,7 @@ import java.util.Map; public class UserServiceImpl extends BaseServiceImpl implements UserService { @Autowired - private UserRedis userRedis; - - @Autowired - private PartyMembersService partyMembersService; + private PartyMembersDao partyMembersDao; @Autowired private UserTagRelationService userTagRelationService; @@ -81,59 +78,32 @@ public class UserServiceImpl extends BaseServiceImpl implem @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 = 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 = 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 = 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.like(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 @@ -169,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 < jsonArray.size(); i++) { - String tagId = jsonArray.getString(i); - UserTagRelationDTO userTagRelationDTO = new UserTagRelationDTO(); - userTagRelationDTO.setUserId(entity.getId()); - userTagRelationDTO.setTagId(tagId); - userTagRelationService.save(userTagRelationDTO); - } - } + /*JSONArray jsonArray = JSON.parseArray(dto.getTagIds()); + for (int i = 0; i < jsonArray.size(); i++) { + String tagId = jsonArray.getString(i); + UserTagRelationDTO userTagRelationDTO = new UserTagRelationDTO(); + userTagRelationDTO.setUserId(entity.getId()); + userTagRelationDTO.setTagId(tagId); + userTagRelationService.save(userTagRelationDTO); + }*/ } @@ -208,15 +159,19 @@ public class UserServiceImpl extends BaseServiceImpl 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(); } @@ -281,8 +236,7 @@ public class UserServiceImpl extends BaseServiceImpl implem String mobile = formDto.getMobile(); if (StringUtils.isNotBlank(mobile)) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(FieldConstant.MOBILE, mobile) - .ne(FieldConstant.STATE, AppUserAuditStateEnum.AUDIT_FAILURE.value()); + wrapper.eq(FieldConstant.MOBILE, mobile); Integer count = this.baseDao.selectCount(wrapper); if (count > NumConstant.ZERO) { return new Result().error("手机号已被注册"); @@ -293,8 +247,7 @@ public class UserServiceImpl extends BaseServiceImpl implem String identityNo = formDto.getIdentityNo(); if (StringUtils.isNotBlank(identityNo)) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("IDENTITY_NO", identityNo) - .ne(FieldConstant.STATE, AppUserAuditStateEnum.AUDIT_FAILURE.value()); + wrapper.eq(UserFieldConsant.IDENTITY_NO, identityNo); Integer count = this.baseDao.selectCount(wrapper); if (count > NumConstant.ZERO) { return new Result().error("身份证号已被注册"); @@ -326,6 +279,7 @@ public class UserServiceImpl extends BaseServiceImpl implem List userGridList = registerDto.getUserGridList(); for (UserGridRelationDTO dto : userGridList) { dto.setUserId(userId); + dto.setLeaderFlag(YesOrNoEnum.YES.value()); } List userGridRelationEntityList = ConvertUtils.sourceToTarget(userGridList, UserGridRelationEntity.class); @@ -340,4 +294,169 @@ public class UserServiceImpl extends BaseServiceImpl implem userDto.setGrid(userGridRelationDto.getGrid()); 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) { + + UserEntity userEntity = this.selectById(userDto.getId()); + + if (!userEntity.getMobile().equals(userDto.getMobile())) { + return new Result().error("手机号与注册手机号不匹配"); + } + + if (AppUserStatesEnum.STATE_COMPLETED_INFORMATION_PENDING_REVIEW.value().equals(userEntity.getState()) + || AppUserStatesEnum.STATE_INFORMATION_PASSED.value().equals(userEntity.getState())) { + 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()); + Integer selectCount = this.partyMembersDao.selectCount(partyWrapper); + if (selectCount != NumConstant.ONE) { + return new Result().error("无法匹配党员信息"); + } + + QueryWrapper userWrapper = new QueryWrapper<>(); + userWrapper.eq(UserFieldConsant.IDENTITY_NO, userDto.getIdentityNo()) + .ne(FieldConstant.ID, userDto.getId()); + selectCount = this.baseDao.selectCount(userWrapper); + if (selectCount > NumConstant.ZERO) { + return new Result().error("身份证号已被注册"); + } + } + + return new Result(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Result completeUserInfo(EpdcAppUserCompleteInfoFormDTO formDto) { + UserDTO formUser = formDto.getUserDto(); + UserDTO userDto = new UserDTO(); + + userDto.setPartyFlag(formUser.getPartyFlag()); + userDto.setMobile(formUser.getMobile()); + userDto.setMobileCarrier(formUser.getMobileCarrier()); + userDto.setMobileCity(formUser.getMobileCity()); + userDto.setMobileProvince(formUser.getMobileProvince()); + + userDto.setRealName(formUser.getRealName()); + userDto.setNickname(formUser.getNickname()); + userDto.setState(formUser.getState()); + userDto.setSex(formUser.getSex()); + userDto.setIdentityNo(formUser.getIdentityNo()); + + userDto.setRoad(formUser.getRoad()); + userDto.setVillageName(formUser.getVillageName()); + userDto.setDwellingPlace(formUser.getDwellingPlace()); + + UserGridRelationDTO userGridRelation = formDto.getUserGridRelation(); + + 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()); + + 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("保存党员信息异常"); + } + } else { + UserEntity oldEntity = this.baseDao.selectById(userDto.getId()); + String sex = oldEntity.getSex(); + if (StringUtils.isNotBlank(sex) && NumConstant.ZERO_STR.equals(sex)) { + userDto.setNickname( + userDto.getRoad().concat("-").concat(userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)) + .concat("女士")); + } else { + userDto.setNickname( + userDto.getRoad().concat("-").concat(userDto.getRealName().substring(NumConstant.ZERO, NumConstant.ONE)) + .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 4257479ea..0ec6f7def 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,5 +60,34 @@ ORDER BY f.CREATED_TIME DESC LIMIT 1 + \ No newline at end of file