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-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..58a2c1424 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 @@ -10,10 +10,7 @@ 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.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.service.AppUserService; @@ -186,4 +183,20 @@ public class ApiAppUserController { public Result> listGridForLeader(@LoginUser TokenDto userDetail) { return appUserService.listGridForLeader(userDetail.getUserId()); } + + /** + * + * 用户注册、获取Token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/24 16:32 + */ + @GetMapping("user/ma/v2/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..43a0797d5 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; @@ -185,4 +183,28 @@ public interface UserFeignClient { */ @GetMapping("app-user/epdc-app/usergrid/listGridForLeader/{userId}") Result> listGridForLeader(@PathVariable("userId") String userId); + + /** + * + * 查询用户注册状态 + * + * @params [fromDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 10:50 + */ + @GetMapping("app-user/epdc-app/user/checkUserRegister") + Result getUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto); + + /** + * + * 用户注册或绑定网格 + * + * @params [formDto] + * @return com.elink.esua.epdc.dto.epdc.result.EpdcUserRegisterInfoResultDTO + * @author liuchuang + * @since 2019/10/25 14:25 + */ + @PostMapping("app-user/epdc-app/user/registerOrBindGrid") + Result registerOrBindGrid(EpdcUserRegisterBindGridFormDTO formDto); } 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..42e6e1364 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; @@ -92,4 +90,14 @@ 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); + } } 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..66d83a9eb 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 @@ -8,10 +8,7 @@ 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.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; @@ -148,4 +145,15 @@ public interface AppUserService { * @date 2019/10/23 15:58 */ Result> listGridForLeader(String userId); + + /** + * + * 用户注册、获取Token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/24 16:33 + */ + Result getMaV2Token(EpdcAppUserRegisterFormDTO formDto); } 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 8da7c266f..ccab231ea 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 @@ -13,12 +13,10 @@ 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.*; @@ -590,4 +588,127 @@ 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()); + } + + return this.dealWithUserRegisterState(userResult.getData(), openId, unionId); + } + + /** + * + * 针对不同用户注册状态进行处理 + * + * @params [checkUserResult, unionId] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 12:49 + */ + private Result dealWithUserRegisterState(EpdcUserRegisterInfoResultDTO userResult, + String openId, String unionId) { + EpdcUserRegisterBindGridFormDTO registerBindGridFormDto = new EpdcUserRegisterBindGridFormDTO(); + // 未注册 + if (NumConstant.ZERO == userResult.getRegisterState()) { + // 组装用户注册信息 + registerBindGridFormDto.setRegisterState(NumConstant.ZERO); + registerBindGridFormDto.setUserDTO(this.packageUserInfo(openId, unionId)); + } + // 已注册未绑定当前网格 + else if (NumConstant.ONE == userResult.getRegisterState()) { + registerBindGridFormDto.setRegisterState(NumConstant.ONE); + registerBindGridFormDto.setUserDTO(userResult.getUserDTO()); + } + + // 用户注册或绑定网格 + if (NumConstant.TWO != userResult.getRegisterState()) { + // 组装用户关联网格信息 + registerBindGridFormDto.setGridRelationDTO(this.packageUserGridRelationInfo(userResult.getGridId())); + // 用户并绑定网格 + Result registerBindGridResultDto = userFeignClient.registerOrBindGrid(registerBindGridFormDto); + if (!registerBindGridResultDto.success()) { + return new Result().error(registerBindGridResultDto.getMsg()); + } + userResult = registerBindGridResultDto.getData(); + } + + // 已注册已绑定当前网格 + TokenDto tokenDto = ConvertUtils.sourceToTarget(userResult.getUserDTO(), TokenDto.class); + tokenDto.setUserId(userResult.getUserDTO().getId()); + EpdcAppAuthorizationDTO authorization = this.packageEpdcAppAuthorization(tokenDto, userResult.getGrid(), userResult.getUserDTO().getState()); + authorization.setUserState(userResult.getUserDTO().getState()); + + return new Result().ok(authorization); + } + + /** + * + * 组装用户注册信息 + * + * @params [openId, unionId, completeDept] + * @return com.elink.esua.epdc.dto.UserDTO + * @author liuchuang + * @since 2019/10/24 18:16 + */ + private UserDTO packageUserInfo(String openId, String unionId) { + 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()); + + Date now = new Date(); + userDto.setRegisterTime(now); + userDto.setLastLoginTime(now); + userDto.setRegisterWay(AppUserRegisterWayEnum.WX.value()); + userDto.setRegisterSource(AppUserRegisterSourceEnum.WP.value()); + + // IP地址 + HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); + userDto.setLastLoginIp(IpUtils.getIpAddr(request)); + + return userDto; + } + + /** + * + * 组装用户关联网格信息 + * + * @params [gridId] + * @return com.elink.esua.epdc.dto.UserGridRelationDTO + * @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()); + + return gridRelationDTO; + } } 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-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..90c268646 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,11 @@ 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.EpdcCheckUserRegisterFromDTO; 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.EpdcUserRegisterBindGridFormDTO; +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; @@ -144,4 +147,33 @@ public class EpdcAppUserController { public Result getUserRegisterAuditResult(@PathVariable("userId") String userId) { return userService.getUserRegisterAuditResult(userId); } + + /** + * + * 检查用户注册状态 + * + * @params [fromDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 11:11 + */ + @GetMapping("checkUserRegister") + public Result getUserRegisterState(@RequestBody EpdcCheckUserRegisterFromDTO fromDto) { + return userService.checkUserRegisterState(fromDto); + } + + /** + * + * 用户注册或绑定网格 + * + * @params [fromDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 14:30 + */ + @PostMapping("registerOrBindGrid") + public Result registerOrBindGrid(@RequestBody EpdcUserRegisterBindGridFormDTO fromDto) { + return userService.saveUserOrBindGrid(fromDto); + } + } 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..d365ccf58 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,15 @@ public interface UserGridRelationService extends BaseService> listGridForLeader(String userId); + + /** + * + * 获取用户绑定网格信息 + * + * @params [userId, gridId] + * @return com.elink.esua.epdc.dto.UserGridRelationDTO + * @author liuchuang + * @since 2019/10/25 11:21 + */ + UserGridRelationDTO getUserRelationInfo(String userId, Long gridId); } \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserService.java index 186480b16..e271c29c3 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,11 @@ 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.EpdcCheckUserRegisterFromDTO; 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.EpdcUserRegisterBindGridFormDTO; +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 +147,26 @@ public interface UserService extends BaseService { * @date 2019/10/23 09:35 */ Result gridLeaderRegister(EpdcGridLeaderRegisterFormDTO registerDto); + + /** + * + * 检查用户注册状态 + * + * @params [fromDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 11:13 + */ + Result checkUserRegisterState(EpdcCheckUserRegisterFromDTO fromDto); + + /** + * + * 保存用户信息或关联网格信息 + * + * @params [fromDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/25 14:35 + */ + Result saveUserOrBindGrid(EpdcUserRegisterBindGridFormDTO fromDto); } \ 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/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..a705c0b22 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,13 @@ 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); + } } \ 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..b6bfccf93 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 @@ -38,8 +38,11 @@ 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.EpdcCheckUserRegisterFromDTO; 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.EpdcUserRegisterBindGridFormDTO; +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; @@ -340,4 +343,68 @@ 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) { + // 用户注册 + if (NumConstant.ZERO == fromDto.getRegisterState()) { + UserEntity userEntity = ConvertUtils.sourceToTarget(fromDto.getUserDTO(), UserEntity.class); + if (insert(userEntity)) { + fromDto.getUserDTO().setId(userEntity.getId()); + fromDto.getGridRelationDTO().setUserId(userEntity.getId()); + } else { + return new Result().error("用户注册失败"); + } + } else { + fromDto.getGridRelationDTO().setUserId(fromDto.getUserDTO().getId()); + } + // 用户绑定网格 + userGridRelationService.save(fromDto.getGridRelationDTO()); + + // 组装用户注册信息 + EpdcUserRegisterInfoResultDTO resultDto = new EpdcUserRegisterInfoResultDTO(); + resultDto.setRegisterState(NumConstant.TWO); + resultDto.setGrid(fromDto.getGridRelationDTO().getGrid()); + resultDto.setGridId(fromDto.getGridRelationDTO().getGridId()); + resultDto.setUserDTO(fromDto.getUserDTO()); + + return new Result().ok(resultDto); + } } \ No newline at end of file