Browse Source

公众号登陆整体调整

dev_shibei_match
sunyuchao 5 years ago
parent
commit
b9e4089523
  1. 8
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java
  2. 11
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserVisitedDao.java
  3. 4
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java
  4. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java
  5. 101
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java
  6. 39
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java
  7. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserWechatServiceImpl.java
  8. 16
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserVisitedDao.xml

8
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java

@ -22,6 +22,14 @@ public interface PaConstant {
* 保存用户访问记录数据失败 * 保存用户访问记录数据失败
*/ */
String SAVE_VISITED_EXCEPTION = "保存用户访问记录数据失败"; String SAVE_VISITED_EXCEPTION = "保存用户访问记录数据失败";
/**
* 保存用户数据失败
*/
String SAVE_USER_EXCEPTION = "保存用户数据失败";
/**
* 保存用户微信基本数据失败
*/
String SAVE_WECHAT_EXCEPTION = "保存用户微信信息失败";
/** /**
* 组织级别对应的keyname * 组织级别对应的keyname

11
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserVisitedDao.java

@ -18,8 +18,10 @@
package com.epmet.dao; package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.PaUserVisitedDTO;
import com.epmet.entity.PaUserVisitedEntity; import com.epmet.entity.PaUserVisitedEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 公众号登陆记录表 * 公众号登陆记录表
@ -29,5 +31,12 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface PaUserVisitedDao extends BaseDao<PaUserVisitedEntity> { public interface PaUserVisitedDao extends BaseDao<PaUserVisitedEntity> {
/**
* @param openId
* @return
* @Author sun
* @Description 根据openId查询登陆访问记录数据按时间倒序
**/
PaUserVisitedDTO selectByOpenId(@Param("openId") String openId);
} }

4
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaUserWechatDao.java

@ -23,6 +23,8 @@ import com.epmet.entity.PaUserWechatEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 公众号用户信息 * 公众号用户信息
* *
@ -38,7 +40,7 @@ public interface PaUserWechatDao extends BaseDao<PaUserWechatEntity> {
* @Author sun * @Author sun
* @Description 根据openId查询user_wechat表信息 * @Description 根据openId查询user_wechat表信息
**/ **/
PaUserWechatDTO selectWechatByOpenId(@Param("openId") String openId); List<PaUserWechatDTO> selectWechatByOpenId(@Param("openId") String openId);
/** /**
* @param dto * @param dto

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaUserWechatService.java

@ -99,5 +99,5 @@ public interface PaUserWechatService extends BaseService<PaUserWechatEntity> {
* @Author sun * @Author sun
* @Description 根据openId查询user_wechat表信息 * @Description 根据openId查询user_wechat表信息
**/ **/
PaUserWechatDTO getWechatByOpenId(String openId); List<PaUserWechatDTO> getWechatByOpenId(String openId);
} }

101
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java

@ -155,13 +155,7 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void register(RegisterFormDTO formDTO) { public void register(RegisterFormDTO formDTO) {
//1.根据手机号查询到用户信息,判断用户是否存 //0.校验验证码是否正确
List<PaUserDTO> userList = paUserDao.selectUserByPhone(formDTO.getPhone());
if (null != userList && userList.size() > NumConstant.ZERO) {
throw new RenException(PaConstant.PHONE_EXCEPTION);
}
//2.校验验证码是否正确
String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, formDTO.getPhone()); String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, formDTO.getPhone());
String rightSmsCode = (String) redisUtils.get(smsCodeKey); String rightSmsCode = (String) redisUtils.get(smsCodeKey);
if (!formDTO.getSmsCode().equals(rightSmsCode)) { if (!formDTO.getSmsCode().equals(rightSmsCode)) {
@ -169,31 +163,80 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode()); throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
} }
//3.pa_user表更新数据 //1.根据手机号查询到用户信息,判断用户是否存
PaUserEntity userEntity = new PaUserEntity(); List<PaUserDTO> userList = paUserDao.selectUserByPhone(formDTO.getPhone());
userEntity.setId(formDTO.getUserId()); if (null != userList && userList.size() > NumConstant.ZERO) {
userEntity.setPhone(formDTO.getPhone()); throw new RenException(PaConstant.PHONE_EXCEPTION);
userEntity.setRealName(formDTO.getSurName());
userEntity.setGender(formDTO.getGender().toString());
if (paUserDao.updateById(userEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.UPDATE_USER_EXCEPTION);
} }
//2.访问记录表新增数据 //2.根据token中的userId查询pa_user表数据,根据手机号是否为空判断后续是新增还是更新user数据
PaUserWechatDTO dto = new PaUserWechatDTO(); PaUserEntity paUserEntity = paUserDao.selectById(formDTO.getUserId());
dto.setUserId(formDTO.getUserId());
PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(dto); //3.手机号不为空说明是同一个微信用户用第二个手机号注册,手机为空说明当前微信用户用第一个手机号注册
if (null == wechatEntity) { if(null != paUserEntity.getPhone() && StringUtils.isNotBlank(paUserEntity.getPhone())){
throw new RenException(PaConstant.SELECT_WECHAT_EXCEPTION); //手机号不为空说明是同一个微信用户用第二个手机号注册,新增user和user_wechat表数据
} //3-1.user表新增数据
PaUserVisitedEntity visitedEntity = new PaUserVisitedEntity(); PaUserEntity userEntity = new PaUserEntity();
visitedEntity.setUserId(formDTO.getUserId()); userEntity.setPhone(formDTO.getPhone());
visitedEntity.setWxOpenId(wechatEntity.getWxOpenId()); userEntity.setRealName(formDTO.getSurName());
visitedEntity.setOpenId(wechatEntity.getWxOpenId()); userEntity.setGender(formDTO.getGender().toString());
visitedEntity.setPhone(formDTO.getPhone()); if (paUserDao.insert(userEntity) < NumConstant.ONE) {
if (paUserVisitedDao.insert(visitedEntity) < NumConstant.ONE) { throw new RenException(PaConstant.SAVE_USER_EXCEPTION);
throw new RenException(PaConstant.SAVE_VISITED_EXCEPTION); }
//3-2.根据token中的userId查询用户的微信信息
PaUserWechatDTO dto = new PaUserWechatDTO();
dto.setUserId(formDTO.getUserId());
PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(dto);
if (null == wechatEntity) {
throw new RenException(PaConstant.SELECT_WECHAT_EXCEPTION);
}
//3-3.新增用户微信信息
wechatEntity.setUserId(userEntity.getId());
if (paUserWechatDao.insert(wechatEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.SAVE_WECHAT_EXCEPTION);
}
//3-4.访问记录表新增数据
PaUserVisitedEntity visitedEntity = new PaUserVisitedEntity();
visitedEntity.setUserId(userEntity.getId());
visitedEntity.setWxOpenId(wechatEntity.getWxOpenId());
visitedEntity.setOpenId(wechatEntity.getWxOpenId());
visitedEntity.setPhone(formDTO.getPhone());
if (paUserVisitedDao.insert(visitedEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.SAVE_VISITED_EXCEPTION);
}
}else {
//手机为空说明当前微信用户用第一个手机号注册,更新user表数据
//3-1.pa_user表更新数据
PaUserEntity userEntity = new PaUserEntity();
userEntity.setId(formDTO.getUserId());
userEntity.setPhone(formDTO.getPhone());
userEntity.setRealName(formDTO.getSurName());
userEntity.setGender(formDTO.getGender().toString());
if (paUserDao.updateById(userEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.UPDATE_USER_EXCEPTION);
}
//3-2.访问记录表新增数据
PaUserWechatDTO dto = new PaUserWechatDTO();
dto.setUserId(formDTO.getUserId());
PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(dto);
if (null == wechatEntity) {
throw new RenException(PaConstant.SELECT_WECHAT_EXCEPTION);
}
PaUserVisitedEntity visitedEntity = new PaUserVisitedEntity();
visitedEntity.setUserId(formDTO.getUserId());
visitedEntity.setWxOpenId(wechatEntity.getWxOpenId());
visitedEntity.setOpenId(wechatEntity.getWxOpenId());
visitedEntity.setPhone(formDTO.getPhone());
if (paUserVisitedDao.insert(visitedEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.SAVE_VISITED_EXCEPTION);
}
} }
} }
/** /**

39
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java

@ -26,9 +26,11 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.PaCustomerDao; import com.epmet.dao.PaCustomerDao;
import com.epmet.dao.PaUserDao; import com.epmet.dao.PaUserDao;
import com.epmet.dao.PaUserVisitedDao;
import com.epmet.dao.PaUserWechatDao; import com.epmet.dao.PaUserWechatDao;
import com.epmet.dto.PaCustomerDTO; import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO; import com.epmet.dto.PaUserDTO;
import com.epmet.dto.PaUserVisitedDTO;
import com.epmet.dto.PaUserWechatDTO; import com.epmet.dto.PaUserWechatDTO;
import com.epmet.dto.result.CustomerUserResultDTO; import com.epmet.dto.result.CustomerUserResultDTO;
import com.epmet.dto.result.SaveUserResultDTO; import com.epmet.dto.result.SaveUserResultDTO;
@ -64,6 +66,8 @@ public class PaUserServiceImpl extends BaseServiceImpl<PaUserDao, PaUserEntity>
private PaCustomerDao paCustomerDao; private PaCustomerDao paCustomerDao;
@Autowired @Autowired
private PaUserWechatDao paUserWechatDao; private PaUserWechatDao paUserWechatDao;
@Autowired
private PaUserVisitedDao paUserVisitedDao;
@Override @Override
public PageData<PaUserDTO> page(Map<String, Object> params) { public PageData<PaUserDTO> page(Map<String, Object> params) {
@ -127,11 +131,11 @@ public class PaUserServiceImpl extends BaseServiceImpl<PaUserDao, PaUserEntity>
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public SaveUserResultDTO saveUser(WxMpUser wxMpUser) { public SaveUserResultDTO saveUser(WxMpUser wxMpUser) {
SaveUserResultDTO resultDTO = new SaveUserResultDTO(); SaveUserResultDTO resultDTO = new SaveUserResultDTO();
//1.根据openId查询user_wechat表是否存在用户信息 //1.根据openId查询user_wechat表是否存在用户信息(user表和user_wechat表数据时多对多关系)
PaUserWechatDTO wechatDTO = paUserWechatService.getWechatByOpenId(wxMpUser.getOpenId()); List<PaUserWechatDTO> wechatDTO = paUserWechatService.getWechatByOpenId(wxMpUser.getOpenId());
//2.不存在则新增用户信息,存在则更新user_wechat表信息 //2.不存在则新增用户信息,存在则更新user_wechat表信息
if (null == wechatDTO || null == wechatDTO.getId()) { if (null == wechatDTO || wechatDTO.size() < NumConstant.ONE) {
//2.1、user表新增数据 //2.1、user表新增数据
PaUserEntity userEntity = new PaUserEntity(); PaUserEntity userEntity = new PaUserEntity();
baseDao.insert(userEntity); baseDao.insert(userEntity);
@ -151,18 +155,23 @@ public class PaUserServiceImpl extends BaseServiceImpl<PaUserDao, PaUserEntity>
resultDTO.setUserId(userEntity.getId()); resultDTO.setUserId(userEntity.getId());
} else { } else {
//2.3、更新user_wechat表数据 //2.3、批量更新user_wechat表数据
PaUserWechatEntity wechatEntity = ConvertUtils.sourceToTarget(wechatDTO, PaUserWechatEntity.class); List<PaUserWechatEntity> wechatEntity = ConvertUtils.sourceToTarget(wechatDTO, PaUserWechatEntity.class);
wechatEntity.setGender(wxMpUser.getSex().toString()); for(PaUserWechatEntity entity : wechatEntity){
wechatEntity.setNickname(wxMpUser.getNickname()); entity.setGender(wxMpUser.getSex().toString());
wechatEntity.setHeadImgUrl(null == wxMpUser.getHeadImgUrl() ? "" : wxMpUser.getHeadImgUrl()); entity.setNickname(wxMpUser.getNickname());
wechatEntity.setCountry(null == wxMpUser.getCountry() ? "" : wxMpUser.getCountry()); entity.setHeadImgUrl(null == wxMpUser.getHeadImgUrl() ? "" : wxMpUser.getHeadImgUrl());
wechatEntity.setProvince(null == wxMpUser.getProvince() ? "" : wxMpUser.getProvince()); entity.setCountry(null == wxMpUser.getCountry() ? "" : wxMpUser.getCountry());
wechatEntity.setCity(null == wxMpUser.getCity() ? "" : wxMpUser.getCity()); entity.setProvince(null == wxMpUser.getProvince() ? "" : wxMpUser.getProvince());
wechatEntity.setLanguage(null == wxMpUser.getLanguage() ? "" : wxMpUser.getLanguage()); entity.setCity(null == wxMpUser.getCity() ? "" : wxMpUser.getCity());
paUserWechatService.updateById(wechatEntity); entity.setLanguage(null == wxMpUser.getLanguage() ? "" : wxMpUser.getLanguage());
}
resultDTO.setUserId(wechatDTO.getUserId()); paUserWechatService.updateBatchById(wechatEntity);
//2.4、根据openid查询用户登陆访问记录表数据,按登陆时间倒序
PaUserVisitedDTO visitedDTO = paUserVisitedDao.selectByOpenId(wxMpUser.getOpenId());
resultDTO.setUserId(visitedDTO.getUserId());
} }
//3.返回userId //3.返回userId

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserWechatServiceImpl.java

@ -108,7 +108,7 @@ public class PaUserWechatServiceImpl extends BaseServiceImpl<PaUserWechatDao, Pa
* @Description 根据openId查询user_wechat表信息 * @Description 根据openId查询user_wechat表信息
**/ **/
@Override @Override
public PaUserWechatDTO getWechatByOpenId(String openId) { public List<PaUserWechatDTO> getWechatByOpenId(String openId) {
return baseDao.selectWechatByOpenId(openId); return baseDao.selectWechatByOpenId(openId);
} }

16
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaUserVisitedDao.xml

@ -3,5 +3,21 @@
<mapper namespace="com.epmet.dao.PaUserVisitedDao"> <mapper namespace="com.epmet.dao.PaUserVisitedDao">
<select id="selectByOpenId" resultType="com.epmet.dto.PaUserVisitedDTO">
SELECT
id,
user_id,
wx_open_id,
open_id,
phone
FROM
pa_user_visited
WHERE
del_flag = '0'
AND wx_open_id = #{openId}
ORDER BY
created_time DESC
LIMIT 1
</select>
</mapper> </mapper>
Loading…
Cancel
Save