diff --git a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java index 31582eecd3..62d1cdb57b 100644 --- a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java +++ b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/feign/EpmetUserFeignClient.java @@ -2,10 +2,13 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.EnterGridFormDTO; import com.epmet.dto.form.VisitedFormDTO; +import com.epmet.dto.result.UserInfoOnEnterGridResultDTO; import com.epmet.feign.fallback.EpmetUserFeignClientFallBack; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; /** * @Description 居民端陌生人导览 调用epmet-user服务 @@ -23,6 +26,16 @@ public interface EpmetUserFeignClient { Result saveVisitedRecord(VisitedFormDTO formDTO); + /** + * @Description 在用户进入网格时查询用户的注册信息(且统计)以及角色列表 + * @Param enterGridFormDTO + * @return UserInfoOnEnterGridResultDTO + * @Author wangc + * @Date 2020.03.30 15:06 + **/ + @PostMapping("getuserinfoandroles") + Result getUserInfoAndRoles(@RequestBody EnterGridFormDTO enterGridFormDTO); + } diff --git a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java index 148394dad2..ffd5dcba62 100644 --- a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java +++ b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java @@ -203,12 +203,12 @@ public class StrangerAccessRecordServiceImpl extends BaseServiceImpl getGridHome(TokenDto tokenDTO, StrangerFormDTO strangerFormDTO) { //1.先判断参数 - //居民端 所以参数必须是居民端的参数 否则就是参数错误s + //居民端 所以参数必须是居民端的参数 否则就是参数错误 if (!AppClientConstant.APP_RESI.equals(tokenDTO.getApp())) { return new Result().error(StrangerResiGuideConstant.PARAMETER_EXCEPTION); } //token里边有所属端 userId这些参数 前台传递customerID和gridId - //2:调用epmet-user服务查询数据 新建网格记录数据 + /*//2:调用epmet-user服务查询数据 新建网格记录数据 VisitedFormDTO visitedFormDTO = new VisitedFormDTO(); visitedFormDTO.setGridId(strangerFormDTO.getGridId()); visitedFormDTO.setCustomerId(strangerFormDTO.getCustomerId()); @@ -216,7 +216,7 @@ public class StrangerAccessRecordServiceImpl extends BaseServiceImpl result = getCustomerHomeData(strangerFormDTO.getCustomerId()); return result; diff --git a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/UserAccessServiceImpl.java b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/UserAccessServiceImpl.java index d008450ade..bcbbb3e2e8 100644 --- a/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/UserAccessServiceImpl.java +++ b/epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/UserAccessServiceImpl.java @@ -2,9 +2,16 @@ package com.epmet.service.impl; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; +import com.epmet.constant.StrangerResiGuideConstant; +import com.epmet.dto.form.EnterGridFormDTO; import com.epmet.dto.form.UserEnterGridFormDTO; +import com.epmet.dto.form.VisitedFormDTO; import com.epmet.dto.result.UserInfoOnEnterGridResultDTO; +import com.epmet.feign.EpmetUserFeignClient; import com.epmet.service.UserAccessService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; /** * @Description @@ -13,12 +20,37 @@ import com.epmet.service.UserAccessService; * @date 2020.03.30 14:05 */ public class UserAccessServiceImpl implements UserAccessService { + + @Autowired + private EpmetUserFeignClient epmetUserFeignClient; + + private static final Logger log = LoggerFactory.getLogger(StrangerAccessRecordServiceImpl.class); + @Override public Result enterGrid(TokenDto tokenDto, UserEnterGridFormDTO formDTO) { + //TODO 加入不放行白名单 + EnterGridFormDTO userInfoParams = new EnterGridFormDTO(); + userInfoParams.setUserId(tokenDto.getUserId()); + userInfoParams.setCustomerId(formDTO.getCustomerId()); + userInfoParams.setGridId(formDTO.getGridId()); + Result userInfoResult = + epmetUserFeignClient.getUserInfoAndRoles(userInfoParams); + if(userInfoResult.success()){ + //2:调用epmet-user服务查询数据 新建网格记录数据 + VisitedFormDTO visitedFormDTO = new VisitedFormDTO(); + visitedFormDTO.setGridId(userInfoParams.getGridId()); + visitedFormDTO.setCustomerId(userInfoParams.getCustomerId()); + visitedFormDTO.setUserId(userInfoParams.getUserId()); + Result re = epmetUserFeignClient.saveVisitedRecord(visitedFormDTO); + if (!re.success()) { + log.warn(StrangerResiGuideConstant.EPMET_USER_EXCEPTION); + } + }else{ + } - return null; + return userInfoResult; } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java index aff710a2d7..2b18303846 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/RegisterRelationDao.java @@ -20,6 +20,9 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.RegisterRelationEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 注册关系表 用于统计客户网格的注册居民数 @@ -29,5 +32,8 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface RegisterRelationDao extends BaseDao { + + List getListByUserId(@Param("userId") String userId); + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiRegisterVisitDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiRegisterVisitDao.java index d5e564f559..e1a13706dc 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiRegisterVisitDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiRegisterVisitDao.java @@ -22,6 +22,8 @@ import com.epmet.dto.UserResiRegisterVisitDTO; import com.epmet.entity.UserResiRegisterVisitEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 用户居民端注册访问记录表 * @@ -32,4 +34,6 @@ import org.apache.ibatis.annotations.Mapper; public interface UserResiRegisterVisitDao extends BaseDao { void saveUserResiRegisterVisit(UserResiRegisterVisitDTO userResiRegisterVisitDTO); + + List selectUserResiRegisterVisit(UserResiRegisterVisitDTO userResiRegisterVisitDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserWechatDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserWechatDao.java index 919fe3c366..d4fecbc78b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserWechatDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserWechatDao.java @@ -6,6 +6,9 @@ import com.epmet.dto.UserWechatDTO; import com.epmet.dto.form.WxLoginUserInfoFormDTO; import com.epmet.entity.UserWechatEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @Description 用户-微信关系DAO @@ -33,4 +36,13 @@ public interface UserWechatDao extends BaseDao{ * @Date 2020/3/30 13:06 **/ UserDTO selectUserDTOByOpenId(WxLoginUserInfoFormDTO formDTO); + + /** + * @Description 根据userId查询用户微信登录时的信息 + * @Param userId + * @return List + * @Author wangc + * @Date 2020.03.30 17:25 + **/ + List selectByUserId(@Param("userId")String userId); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java index 5c5358527c..a76c3e8b34 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java @@ -24,14 +24,20 @@ import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.utils.Result; -import com.epmet.dao.RegisterRelationDao; -import com.epmet.dao.UserResiInfoDao; -import com.epmet.dao.UserRoleDao; -import com.epmet.dao.UserWechatDao; +import com.epmet.dao.*; +import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.RegisterRelationDTO; +import com.epmet.dto.UserResiInfoDTO; +import com.epmet.dto.UserResiRegisterVisitDTO; +import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.dto.form.EnterGridFormDTO; +import com.epmet.dto.form.UserResiInfoFormDTO; +import com.epmet.dto.form.UserRoleFormDTO; import com.epmet.dto.result.UserInfoOnEnterGridResultDTO; +import com.epmet.dto.result.UserRoleResultDTO; import com.epmet.entity.RegisterRelationEntity; +import com.epmet.entity.UserWechatEntity; +import com.epmet.feign.GovOrgFeignClient; import com.epmet.redis.RegisterRelationRedis; import com.epmet.service.RegisterRelationService; import org.apache.commons.lang3.StringUtils; @@ -39,9 +45,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 注册关系表 用于统计客户网格的注册居民数 @@ -64,6 +68,12 @@ public class RegisterRelationServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -126,16 +136,105 @@ public class RegisterRelationServiceImpl extends BaseServiceImpl getUserInfoAndRoles(EnterGridFormDTO enterGridFormDTO) { - //1.查找用户注册关系表,如果没有表示当前用户为陌生人(拉取用户微信表信息),如果有表示当前用户已经进行居民认证 - - //2.根据居民认证的网格、客户进行统计 - - //3.去网格表中查询网格对应的名称 - + Result result = new Result<>(); + UserInfoOnEnterGridResultDTO resultObj = new UserInfoOnEnterGridResultDTO(); + final String customerId = enterGridFormDTO.getCustomerId(); + final String gridId = enterGridFormDTO.getGridId(); + //查询用户微信关系表 + List strangerWechatInfo = userWechatDao.selectByUserId(enterGridFormDTO.getUserId()); + if(null != strangerWechatInfo && strangerWechatInfo.size() > 0){ + resultObj.setNickname(strangerWechatInfo.get(0).getNickname()); + resultObj.setUserHeadPhoto(strangerWechatInfo.get(0).getHeadImgUrl()); + } - - return null; + List registerRecords = baseDao.getListByUserId(enterGridFormDTO.getUserId()); + //1.查找用户注册关系表,如果没有表示当前用户为陌生人(拉取用户微信表信息),如果有表示当前用户已经进行居民认证 + if(null == registerRecords || registerRecords.size() <= 0){ + //当前用户尚未注册过居民信息 + + }else{ + + //2.根据居民认证的网格、客户进行统计 + RegisterRelationEntity registerRelationToSave = new RegisterRelationEntity(); + + registerRelationToSave.setCustomerId(customerId); + registerRelationToSave.setUserId(enterGridFormDTO.getUserId()); + registerRelationToSave.setGridId(gridId); + + + Optional registerRecordWithSameCustAndGrid = + registerRecords.stream().filter(obj -> customerId.equals(obj.getCustomerId()) && gridId.equals(obj.getGridId())).findFirst(); + + //是否存在相同客户相同网格的注册记录 + if(!registerRecordWithSameCustAndGrid.isPresent()){ + Optional registerRecordWithSameCustAndDiffGrid = + registerRecords.stream().filter(obj -> customerId.equals(obj.getCustomerId()) && !gridId.equals(obj.getGridId())).findAny(); + + if(registerRecordWithSameCustAndDiffGrid.isPresent()){ + //存在相同客户不同网格的注册记录 + //参与用户 + registerRelationToSave.setFirstRegister("0"); + registerRelationToSave.setRegister("0"); + registerRelationToSave.setParticipation("1"); + + baseDao.insert(registerRelationToSave); + }else{ + //不存在相同客户不同网格的注册记录 + Optional registerRecordWithDiffCustAndGrid = + registerRecords.stream().filter(obj -> !customerId.equals(obj.getCustomerId()) && !gridId.equals(obj.getGridId())).findAny(); + if(registerRecordWithDiffCustAndGrid.isPresent()){ + //如果存在不同客户不同网格的注册信息 + //注册用户 参与用户 + registerRelationToSave.setFirstRegister("0"); + registerRelationToSave.setRegister("1"); + registerRelationToSave.setParticipation("1"); + + baseDao.insert(registerRelationToSave); + }else{ + + //如果不存在不同客户不同网格数据,说明在居民注册时没有成功记录register_relation信息 + UserResiRegisterVisitDTO userResiRegisterVisitDTO = new UserResiRegisterVisitDTO(); + userResiRegisterVisitDTO.setDelFlag(0); + userResiRegisterVisitDTO.setUserId(enterGridFormDTO.getUserId()); + List UserResiRegisterVisitRecord = + userResiRegisterVisitDao.selectUserResiRegisterVisit(userResiRegisterVisitDTO); + } + } + } + + UserResiInfoFormDTO userResiInfoFormDTO = new UserResiInfoFormDTO(); + userResiInfoFormDTO.setUserId(enterGridFormDTO.getUserId()); + UserResiInfoDTO userResiInfo = userResiInfoDao.selectUserResiInfoDTO(userResiInfoFormDTO); + resultObj.setNickname(userResiInfo.getSurname() + userResiInfo.getName()); + + } + + //3.获取权限 + UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO(); + userRoleFormDTO.setUserId(enterGridFormDTO.getUserId()); + userRoleFormDTO.setCustomerId(enterGridFormDTO.getCustomerId()); + List roleList = userRoleDao.getUserRoleInfo(userRoleFormDTO); + List roleListString = new ArrayList<>(); + for(UserRoleResultDTO role : roleList){ + roleListString.add(role.getRoleKey()); + } + resultObj.setUserRoleList(roleListString); + + //4.去网格表中查询网格对应的名称 + CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO(); + customerGridFormDTO.setGridId(gridId); + Result gridDTOResult = + govOrgFeignClient.getCustomerGridByGridId(customerGridFormDTO); + if(gridDTOResult.success()){ + resultObj.setCurrentGridName(gridDTOResult.getData().getGridName()); + }else{ + //查询网格名称失败 + + } + + result.setData(resultObj); + return result; } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml index fb3662841c..7398491796 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/RegisterRelationDao.xml @@ -20,4 +20,16 @@ + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserRoleDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserRoleDao.xml index 5e8221dd5d..b715cf1b32 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserRoleDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserRoleDao.xml @@ -21,22 +21,27 @@ diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserWechatDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserWechatDao.xml index 468e37264f..c177b6fe84 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserWechatDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserWechatDao.xml @@ -51,4 +51,16 @@ AND uw.DEL_FLAG = '0' AND u.FROM_APP = #{app} + + +