diff --git a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java index 3dadb32519..f0b497faa9 100644 --- a/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java +++ b/epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.*; import com.epmet.dto.result.ResiDingAppLoginResDTO; +import com.epmet.dto.result.ResiRegisterLantuResultDTO; import com.epmet.dto.result.StaffOrgsResultDTO; import com.epmet.dto.result.UserTokenResultDTO; import com.epmet.service.ThirdLoginService; @@ -206,6 +207,32 @@ public class ThirdLoginController { return new Result().ok(thirdLoginService.resiLoginInternalDing(formDTO)); } + /** + * @Description: h5-登陆 随手拍 议事厅 + * @param formDTO: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/8/15 09:23 + */ + @PostMapping("resilogin-hfive") + public Result resiLoginHfive(@RequestBody HfiveLoginMdFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result().ok(thirdLoginService.resiLoginHfive(formDTO)); + } + + /** + * @Description: 蓝图 居民注册 + * @param formDTO: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/8/16 10:13 + */ + @PostMapping("resiRegister-lantu") + public Result resiRegisterLantu(@RequestBody ResiRegisterLantuFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + return new Result().ok(thirdLoginService.resiRegisterLantu(formDTO)); + } + /** * 根据免登授权码, 获取登录用户身份 * diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/HfiveLoginMdFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/HfiveLoginMdFormDTO.java new file mode 100644 index 0000000000..9238314377 --- /dev/null +++ b/epmet-auth/src/main/java/com/epmet/dto/form/HfiveLoginMdFormDTO.java @@ -0,0 +1,21 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: h5-登陆 随手拍 议事厅 入参 + * @Author: lichao + * @Date: 2023/8/15 09:25 + */ +@Data +public class HfiveLoginMdFormDTO { + + + @NotBlank(message = "phone不能为空") + private String phone; + + +} + diff --git a/epmet-auth/src/main/java/com/epmet/dto/form/ResiRegisterLantuFormDTO.java b/epmet-auth/src/main/java/com/epmet/dto/form/ResiRegisterLantuFormDTO.java new file mode 100644 index 0000000000..79d0852d8c --- /dev/null +++ b/epmet-auth/src/main/java/com/epmet/dto/form/ResiRegisterLantuFormDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 蓝图 注册居民入参 + * @Author: lichao + * @Date: 2023/8/15 09:25 + */ +@Data +public class ResiRegisterLantuFormDTO { + + + @NotBlank(message = "loginMobile不能为空") + private String loginMobile; + + private String nickName; + + @NotBlank(message = "gridId不能为空") + private String gridId; + + @NotBlank(message = "姓名不能为空") + private String realName; + + private String sex; + + private String avatarUrl; + + + +} + diff --git a/epmet-auth/src/main/java/com/epmet/dto/result/ResiRegisterLantuResultDTO.java b/epmet-auth/src/main/java/com/epmet/dto/result/ResiRegisterLantuResultDTO.java new file mode 100644 index 0000000000..8723873f6e --- /dev/null +++ b/epmet-auth/src/main/java/com/epmet/dto/result/ResiRegisterLantuResultDTO.java @@ -0,0 +1,16 @@ +package com.epmet.dto.result; + +import lombok.Data; + +/** + * @Description: lantu 结果 + * @Author: lichao + * @Date: 2023/8/16 10:11 + */ +@Data +public class ResiRegisterLantuResultDTO { + + private String userBaseInfoId; + +} + diff --git a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java index 6253f7481e..bf7838f699 100644 --- a/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java +++ b/epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java @@ -2,6 +2,7 @@ package com.epmet.service; import com.epmet.dto.form.*; import com.epmet.dto.result.ResiDingAppLoginResDTO; +import com.epmet.dto.result.ResiRegisterLantuResultDTO; import com.epmet.dto.result.StaffOrgsResultDTO; import com.epmet.dto.result.UserTokenResultDTO; @@ -111,6 +112,20 @@ public interface ThirdLoginService { */ ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO); + /** + * h5-登陆 随手拍 议事厅 + * @param formDTO + * @return + */ + ResiDingAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO); + + /** + * 蓝图 居民端 注册 + * @param formDTO + * @return + */ + ResiRegisterLantuResultDTO resiRegisterLantu(ResiRegisterLantuFormDTO formDTO); + /** * desc:企业内部应用 工作端登录 * @param formDTO @@ -135,4 +150,6 @@ public interface ThirdLoginService { UserTokenResultDTO sdtSSOLogin(String authCode, String customerId); void sendLoginEvent(String userId, String appId, String fromApp, String fromClient,String messageType); + + } diff --git a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java index 01b57a4fb3..3be7a46f94 100644 --- a/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java +++ b/epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java @@ -948,6 +948,30 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol return token; } + private String saveTokenDtoHfive(String app,String client, String userId,String customerId) { + //生成token串 + Map map = new HashMap<>(); + map.put(AppClientConstant.APP, app); + // map.put(AppClientConstant.CLIENT, client); + // 第三方企业应用传应用的SuiteKey 作为client + map.put(AppClientConstant.CLIENT, client); + map.put("userId", userId); + String token = jwtTokenUtils.createToken(map); + int expire = jwtTokenProperties.getExpire(); + TokenDto tokenDto = new TokenDto(); + tokenDto.setCustomerId(customerId); + tokenDto.setApp(app); + tokenDto.setClient(client); + tokenDto.setUserId(userId); + tokenDto.setToken(token); + tokenDto.setUpdateTime(System.currentTimeMillis()); + tokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime()); + cpUserDetailRedis.set(tokenDto, expire); + // cpUserDetailRedis.setForDingApp(miniAppId,tokenDto, expire); + logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss")); + return token; + } + @Override public ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO) { // 获取用户手机号 @@ -1080,6 +1104,78 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol return resDTO; } + /** + * h5-登陆 随手拍 议事厅 + * @param formDTO + * @return + */ + @Override + public ResiDingAppLoginResDTO resiLoginHfive(HfiveLoginMdFormDTO formDTO) { + // 获取用户手机号 + log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO)); + ResiDingAppLoginResDTO resDTO = new ResiDingAppLoginResDTO(); + resDTO.setCustomerId(getCurrentCustomerId()); + + // 1、获取用户手机号 +// DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode()); + HfiveLoginResiFormDTO hfiveLoginResiFormDTO = new HfiveLoginResiFormDTO(); + // todo 目前只有手机号以及customerId + hfiveLoginResiFormDTO.setCustomerId(resDTO.getCustomerId()); + hfiveLoginResiFormDTO.setMobile(formDTO.getPhone()); + // todo 暂时无信息获取 编写h5 + resDTO.setRealName("h5"); + // 2、调用userfeign接口获取userId、注册网格相关信息 + Result loginResiResDTOResult = epmetUserOpenFeignClient.hFiveResiLogin(hfiveLoginResiFormDTO); + if (!loginResiResDTOResult.success() || null == loginResiResDTOResult.getData()) { + // 临时打个日志 + log.error(String.format("resiLoginHfive获取epmetUserId异常,入参:%s", JSON.toJSONString(hfiveLoginResiFormDTO))); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取epmetUserId异常:"+ JSON.toJSONString(loginResiResDTOResult), "获取epmetUserId异常"); + } + DingLoginResiResDTO resiResDTO = loginResiResDTOResult.getData(); + resDTO.setGridId(resiResDTO.getGridId()); + resDTO.setGridName(resiResDTO.getGridName()); + resDTO.setAgencyId(resiResDTO.getAgencyId()); + resDTO.setEpmetUserId(resiResDTO.getEpmetUserId()); + resDTO.setRegFlag(resiResDTO.getRegFlag()); + + // 3.生成token,并且存放Redis + String token = this.saveTokenDtoHfive(AppClientConstant.APP_RESI, AppClientConstant.H_FIVE, resDTO.getEpmetUserId(), resDTO.getCustomerId()); + resDTO.setAuthorization(token); + + return resDTO; + } + + @Override + public ResiRegisterLantuResultDTO resiRegisterLantu(ResiRegisterLantuFormDTO formDTO) { + + // 最后返回给烟台的东西 最后可以跟我们系统关联起来 + ResiRegisterLantuResultDTO resiRegisterLantuResultDTO = new ResiRegisterLantuResultDTO(); + + // 用来注册居民端 + LantuRegisterResiFormDTO lantuRegisterResiFormDTO = new LantuRegisterResiFormDTO(); + // customer 给蓝图用 customerId 写死 烟台 +// lantuRegisterResiFormDTO.setCustomerId("1535072605621841922"); + lantuRegisterResiFormDTO.setCustomerId(getCurrentCustomerId()); + lantuRegisterResiFormDTO.setSex(formDTO.getSex()); + lantuRegisterResiFormDTO.setMobile(formDTO.getLoginMobile()); + lantuRegisterResiFormDTO.setNick(formDTO.getNickName()); + lantuRegisterResiFormDTO.setRealName(formDTO.getRealName()); + lantuRegisterResiFormDTO.setAvatarUrl(formDTO.getAvatarUrl()); + lantuRegisterResiFormDTO.setGridId(formDTO.getGridId()); + + + // 注册 + Result lantuRegisterResi = epmetUserOpenFeignClient.lantuRegisterResi(lantuRegisterResiFormDTO); + + if (!lantuRegisterResi.success() || null == lantuRegisterResi.getData()) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "居民注册异常", "居民注册异常"); + } + + resiRegisterLantuResultDTO.setUserBaseInfoId(lantuRegisterResi.getData().getEpmetUserId()); + + return resiRegisterLantuResultDTO; + } + @Override public UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO) { // 获取用户手机号 diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java index 049f335aa4..220cdff731 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/AppClientConstant.java @@ -37,6 +37,16 @@ public interface AppClientConstant { */ String MINI_DING = "mini_ding"; + /** + * 蓝图 + */ + String LAN_TU = "lan_tu"; + + /** + * H5 + */ + String H_FIVE = "h_five"; + /** * 客户来源App * */ diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovOrgFeignClient.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovOrgFeignClient.java index da09442ea8..a94acd9195 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovOrgFeignClient.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonGovOrgFeignClient.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody; * @DESC */ @FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallbackFactory = CommonGovOrgFeignClientFallBackFactory.class) +//@FeignClient(name = ServiceConstant.GOV_ORG_SERVER, fallbackFactory = CommonGovOrgFeignClientFallBackFactory.class,url = "localhost:8092") public interface CommonGovOrgFeignClient { /** diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/HfiveLoginResiFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/HfiveLoginResiFormDTO.java new file mode 100644 index 0000000000..194a8c50a9 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/HfiveLoginResiFormDTO.java @@ -0,0 +1,56 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: h5 登陆获取或者是注册 + * @Author: lichao + * @Date: 2023/8/15 10:18 + */ +@Data +public class HfiveLoginResiFormDTO { + public interface AddUserInternalGroup { + } + + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + @NotBlank(message = "customerId不能为空", groups = AddUserShowGroup.class) + private String customerId; + + // 以下参数是微信返回的 + /** + * 头像URL。 + */ +// public String avatarUrl; + /** + * 用户的个人邮箱。 + */ +// public String email; + /** + * 用户的手机号。 + * 说明 如果要获取用户手机号,需要在开发者后台申请个人手机号信息权限,如下图。 + */ + @NotBlank(message = "手机号不能为空", groups = AddUserShowGroup.class) + public String mobile; + /** + * 用户的钉钉昵称。 + */ +// public String nick; + /** + * + */ +// public String openId; + /** + * 手机号对应的国家号。 + */ +// public String stateCode; + /** + * + */ +// public String unionId; +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LantuRegisterResiFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LantuRegisterResiFormDTO.java new file mode 100644 index 0000000000..da8c23562a --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/LantuRegisterResiFormDTO.java @@ -0,0 +1,47 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: lantu 注册 + * @Author: lichao + * @Date: 2023/8/15 10:18 + */ +@Data +public class LantuRegisterResiFormDTO { + + private String customerId; + + /** + * 头像URL。 + */ + private String avatarUrl; + + /** + * 用户的手机号。 + * 说明 如果要获取用户手机号,需要在开发者后台申请个人手机号信息权限,如下图。 + */ + private String mobile; + + /** + * 昵称 + */ + private String nick; + + /** + * 网格id + */ + private String gridId; + + + private String realName; + + private String sex; + + + +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LantuRegisterResiResDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LantuRegisterResiResDTO.java new file mode 100644 index 0000000000..5a6e2cc78f --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/LantuRegisterResiResDTO.java @@ -0,0 +1,34 @@ +package com.epmet.dto.result; + +import lombok.Data; + +/** + * @Description + * @Author yzm + * @Date 2022/9/15 9:33 + */ +@Data +public class LantuRegisterResiResDTO { + private String customerId; + private String gridId; + /** + * XXX社区-网格名 + */ + private String gridName; + /** + * 网格所属的组织id + */ + private String agencyId; + /** + * 居民端用户id + */ + private String epmetUserId; + + /** + * 是否注册居民 + * true:已注册 + * false:未注册 + */ + private Boolean regFlag; +} + diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 27d78c5329..997a83c116 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -981,6 +981,13 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/userbaseinfo/dingResiLogin") Result dingResiLogin(@RequestBody DingLoginResiFormDTO formDTO); + @PostMapping("/epmetuser/userbaseinfo/hFiveResiLogin") + Result hFiveResiLogin(@RequestBody HfiveLoginResiFormDTO formDTO); + + @PostMapping("/epmetuser/userbaseinfo/lantuRegisterResi") + Result lantuRegisterResi(@RequestBody LantuRegisterResiFormDTO formDTO); + + @PostMapping("/epmetuser/dataSyncConfig/dataSyncForYanTaiTask") Result dataSyncForYanTaiTask(@RequestBody DataSyncTaskParam formDTO); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 0b59de63c1..13240fb0bf 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -712,6 +712,16 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "dingResiLogin", formDTO); } + @Override + public Result hFiveResiLogin(HfiveLoginResiFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "hFiveResiLogin", formDTO); + } + + @Override + public Result lantuRegisterResi(LantuRegisterResiFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "lantuRegisterResi", formDTO); + } + @Override public Result dataSyncForYanTaiTask(DataSyncTaskParam formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "dataSyncForYanTaiTask", formDTO); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java index 252195a076..4260d3f968 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBaseInfoController.java @@ -238,6 +238,30 @@ public class UserBaseInfoController { return new Result().ok(userBaseInfoService.dingResiLogin(formDTO)); } + /** + * @Description: h5 议事厅 登陆 逻辑同上dingResiLogin + * @param formDTO: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/8/15 10:18 + */ + @PostMapping("hFiveResiLogin") + public Result hFiveResiLogin(@RequestBody HfiveLoginResiFormDTO formDTO){ + return new Result().ok(userBaseInfoService.hFiveResiLogin(formDTO)); + } + + /** + * @Description: lantu注册居民 + * @param formDTO: + * @Return com.epmet.commons.tools.utils.Result + * @Author: lichao + * @Date: 2023/8/15 10:18 + */ + @PostMapping("lantuRegisterResi") + public Result lantuRegisterResi(@RequestBody LantuRegisterResiFormDTO formDTO){ + return new Result().ok(userBaseInfoService.lantuRegisterResi(formDTO)); + } + /** * 来源于烟台需求,pc端新增菜单:用户完善信息列表 * @return diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java index b97e4aa3a8..518675be67 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java @@ -23,10 +23,7 @@ import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.RegisterRelationDTO; import com.epmet.dto.UserBaseInfoDTO; -import com.epmet.dto.form.CommonUserIdFormDTO; -import com.epmet.dto.form.DingLoginResiFormDTO; -import com.epmet.dto.form.PageRegUserFormDTO; -import com.epmet.dto.form.VolunteerRegResiFormDTO; +import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.UserBaseInfoEntity; @@ -222,6 +219,11 @@ public interface UserBaseInfoService extends BaseService { */ DingLoginResiResDTO dingResiLogin(DingLoginResiFormDTO formDTO); + + DingLoginResiResDTO hFiveResiLogin(HfiveLoginResiFormDTO formDTO); + + LantuRegisterResiResDTO lantuRegisterResi(LantuRegisterResiFormDTO formDTO); + /** * 用户完善信息列表 * @param formDTO diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java index 4cfde975f4..6c884e48bd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java @@ -22,10 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.AppClientConstant; -import com.epmet.commons.tools.constant.FieldConstant; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.constant.*; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; @@ -38,17 +35,12 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.NameUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.UserRoleConstant; import com.epmet.dao.*; -import com.epmet.dto.RegisterRelationDTO; -import com.epmet.dto.UserBaseInfoDTO; -import com.epmet.dto.UserResiInfoDTO; -import com.epmet.dto.UserWechatDTO; +import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; -import com.epmet.entity.RegisterRelationEntity; -import com.epmet.entity.UserBaseInfoEntity; -import com.epmet.entity.UserEntity; -import com.epmet.entity.UserWechatEntity; +import com.epmet.entity.*; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.redis.UserBaseInfoRedis; import com.epmet.resi.partymember.dto.partymember.PartymemberInfoDTO; @@ -56,6 +48,7 @@ import com.epmet.resi.partymember.feign.ResiPartyMemberOpenFeignClient; import com.epmet.service.RegisterRelationService; import com.epmet.service.UserBaseInfoService; import com.epmet.service.UserResiInfoService; +import com.epmet.service.UserRoleService; import com.epmet.util.ModuleConstant; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -103,6 +96,13 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl registerWrapper = new LambdaQueryWrapper<>(); + registerWrapper.eq(RegisterRelationEntity::getCustomerId, formDTO.getCustomerId()); + registerWrapper.eq(RegisterRelationEntity::getUserId, baseInfo.getUserId()); + registerWrapper.eq(RegisterRelationEntity::getFirstRegister, NumConstant.ONE_STR); + RegisterRelationEntity registerRelation = registerRelationDao.selectOne(registerWrapper); + if (null != registerRelation) { + result.setAgencyId(registerRelation.getAgencyId()); + result.setGridId(registerRelation.getGridId()); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(registerRelation.getGridId()); + if (null == gridInfo) { + logger.error(String.format("获取用户注册网格信息为空,userId:%s,gridId:%s", baseInfo.getUserId(), registerRelation.getGridId())); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格信息为空", "获取小程序注册网格信息失败"); + } + result.setGridName(gridInfo.getGridNamePath()); + result.setRegFlag(true); + } + } + } finally { + distributedLock.unLock(lock); + } + return result; + } + + + + @Override + @Transactional(rollbackFor = Exception.class) + public LantuRegisterResiResDTO lantuRegisterResi(LantuRegisterResiFormDTO formDTO) { + LantuRegisterResiResDTO result = new LantuRegisterResiResDTO(); + result.setCustomerId(formDTO.getCustomerId()); + RLock lock = null; + try { + lock = distributedLock.getLock(String.format("epmet:lock:dingResiLogin:%s",formDTO.getMobile()), 120L, 3L, TimeUnit.SECONDS); + //根据手机号从baseinfo查对应的信息,如果有则返回,没有则注册 + UserBaseInfoEntity baseInfo = baseDao.selectUserByMobile(formDTO.getCustomerId(),formDTO.getMobile()); + if (null == baseInfo) { + //注册 用户 + UserEntity userEntity = new UserEntity(); + userEntity.setFromApp(AppClientConstant.APP_RESI); + userEntity.setFromClient(AppClientConstant.LAN_TU); + userEntity.setCustomerId(formDTO.getCustomerId()); + userDao.insert(userEntity); + //信息存入baseinfo + baseInfo = new UserBaseInfoEntity(); + baseInfo.setCustomerId(formDTO.getCustomerId()); + baseInfo.setUserId(userEntity.getId()); + baseInfo.setMobile(formDTO.getMobile()); + baseInfo.setRealName(formDTO.getRealName()); + baseInfo.setSurname(NameUtils.getSurNameComplex(formDTO.getRealName())); + baseInfo.setName(NameUtils.getNameComplex(formDTO.getRealName())); + baseInfo.setNickname(formDTO.getNick()); + baseInfo.setHeadImgUrl(formDTO.getAvatarUrl()); + baseInfo.setGender(formDTO.getSex()); + baseDao.insert(baseInfo); + + + } else { + // 更新下user_Base_info信息 + if (StringUtils.isNotBlank(formDTO.getRealName()) && StringUtils.isBlank(baseInfo.getRealName())) { + baseInfo.setRealName(formDTO.getRealName()); + } + if (StringUtils.isNotBlank(formDTO.getRealName()) && StringUtils.isBlank(baseInfo.getSurname())) { + baseInfo.setSurname(NameUtils.getSurNameComplex(formDTO.getRealName())); + } + if (StringUtils.isNotBlank(formDTO.getRealName()) && StringUtils.isBlank(baseInfo.getName())) { + baseInfo.setName(NameUtils.getNameComplex(formDTO.getRealName())); + } + if (StringUtils.isNotBlank(formDTO.getNick()) && StringUtils.isBlank(baseInfo.getNickname())) { + baseInfo.setNickname(formDTO.getNick()); + } + if (StringUtils.isNotBlank(formDTO.getSex()) && StringUtils.isBlank(baseInfo.getGender())) { + baseInfo.setGender(formDTO.getSex()); + } + if (StringUtils.isNotBlank(formDTO.getAvatarUrl()) && StringUtils.isBlank(baseInfo.getHeadImgUrl())) { + baseInfo.setHeadImgUrl(formDTO.getAvatarUrl()); + } + baseDao.updateById(baseInfo); + } + result.setEpmetUserId(baseInfo.getId()); + // 新增网格关系 先查询有没有网格关系 + LambdaQueryWrapper registerWrapper = new LambdaQueryWrapper<>(); + registerWrapper.eq(RegisterRelationEntity::getCustomerId, formDTO.getCustomerId()); + registerWrapper.eq(RegisterRelationEntity::getUserId, baseInfo.getUserId()); + registerWrapper.eq(RegisterRelationEntity::getFirstRegister, NumConstant.ONE_STR); + RegisterRelationEntity registerRelation = registerRelationDao.selectOne(registerWrapper); + if (null == registerRelation){ + registerRelation = new RegisterRelationEntity(); + + registerRelation.setCustomerId(formDTO.getCustomerId()); + registerRelation.setGridId(formDTO.getGridId()); + //表中新增字段 为其赋值 + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(formDTO.getGridId()); + if (null == gridInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格缓存失败", "获取网格缓存失败"); + } + registerRelation.setAgencyId(gridInfo.getPid()); + registerRelation.setAgencyIdPath(gridInfo.getPids()); + registerRelation.setUserId(baseInfo.getUserId()); + //首次注册用户 (0表示不参与计数 1表示参与计数) + registerRelation.setFirstRegister(NumConstant.ONE_STR); + //注册用户 (0表示不参与计数 1表示参与计数) + registerRelation.setRegister(NumConstant.ONE_STR); + //参与用户 (0表示不参与计数 1表示参与计数) + registerRelation.setParticipation(NumConstant.ONE_STR); + registerRelationDao.insert(registerRelation); + }else{ + // 如果已经存在的话就更新 + registerRelation.setGridId(formDTO.getGridId()); + registerRelationDao.updateById(registerRelation); + } + + + // 先查询有没有用户居民端注册访问记录 新增用户居民端注册访问记录表 + LambdaQueryWrapper resiRegisterVisitLW = new LambdaQueryWrapper<>(); + resiRegisterVisitLW.eq(UserResiRegisterVisitEntity::getUserId,baseInfo.getUserId()); + resiRegisterVisitLW.eq(UserResiRegisterVisitEntity::getCustomerId,baseInfo.getCustomerId()); + UserResiRegisterVisitEntity visit = userResiRegisterVisitDao.selectOne(resiRegisterVisitLW); + if (visit == null){ + visit = new UserResiRegisterVisitEntity(); + visit.setCustomerId(baseInfo.getCustomerId()); + visit.setGridId(formDTO.getGridId()); + visit.setUserId(baseInfo.getUserId()); + visit.setVisitFrom("lantu"); + visit.setLastOperateVisit("success"); + visit.setVisitTime(new Date()); + userResiRegisterVisitDao.insert(visit); + }else{ + visit.setGridId(formDTO.getGridId()); + visit.setVisitFrom("lantu"); + visit.setLastOperateVisit("success"); + visit.setVisitTime(new Date()); + userResiRegisterVisitDao.updateById(visit); + } + + //新增该用户在该客户下的注册状态 + LambdaQueryWrapper userCustomerEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userCustomerEntityLambdaQueryWrapper.eq(UserCustomerEntity::getCustomerId,baseInfo.getCustomerId()); + userCustomerEntityLambdaQueryWrapper.eq(UserCustomerEntity::getUserId,baseInfo.getUserId()); + UserCustomerEntity userCustomer = userCustomerDao.selectOne(userCustomerEntityLambdaQueryWrapper); + if (userCustomer == null){ + userCustomer = new UserCustomerEntity(); + userCustomer.setCustomerId(baseInfo.getCustomerId()); + userCustomer.setUserId(baseInfo.getUserId()); + userCustomer.setIsRegister(NumConstant.ONE_STR); + userCustomerDao.insert(userCustomer); + }else{ + userCustomer.setIsRegister(NumConstant.ONE_STR); + userCustomerDao.updateById(userCustomer); + } + + //2:角色表新增角色数据 + LambdaQueryWrapper userRoleLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userRoleLambdaQueryWrapper.eq(UserRoleEntity::getUserId,baseInfo.getUserId()); + userRoleLambdaQueryWrapper.eq(UserRoleEntity::getCustomerId,baseInfo.getCustomerId()); + UserRoleEntity userRoleEntity = userRoleDao.selectOne(userRoleLambdaQueryWrapper); + if (userRoleEntity == null){ + UserRoleDTO userRoleDTO = new UserRoleDTO(); + userRoleDTO.setCustomerId(baseInfo.getCustomerId()); + userRoleDTO.setUserId(baseInfo.getUserId()); + userRoleDTO.setApp("resi"); + userRoleDTO.setRoleKey(EpmetRoleKeyConstant.REGISTERED_RESI); + //居民角色对应的网格Id存默认值-all + userRoleDTO.setGridId(UserRoleConstant.DEFAULT_GRID_ID); + userRoleService.saveUserRole(userRoleDTO); + } + } finally { + distributedLock.unLock(lock); + } + return result; + } + /** * 用户完善信息列表 *