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. 9
      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. 59
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java
  6. 37
      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_USER_EXCEPTION = "保存用户数据失败";
/**
* 保存用户微信基本数据失败
*/
String SAVE_WECHAT_EXCEPTION = "保存用户微信信息失败";
/**
* 组织级别对应的keyname

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

@ -18,8 +18,10 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.PaUserVisitedDTO;
import com.epmet.entity.PaUserVisitedEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 公众号登陆记录表
@ -30,4 +32,11 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
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.Param;
import java.util.List;
/**
* 公众号用户信息
*
@ -38,7 +40,7 @@ public interface PaUserWechatDao extends BaseDao<PaUserWechatEntity> {
* @Author sun
* @Description 根据openId查询user_wechat表信息
**/
PaUserWechatDTO selectWechatByOpenId(@Param("openId") String openId);
List<PaUserWechatDTO> selectWechatByOpenId(@Param("openId") String openId);
/**
* @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
* @Description 根据openId查询user_wechat表信息
**/
PaUserWechatDTO getWechatByOpenId(String openId);
List<PaUserWechatDTO> getWechatByOpenId(String openId);
}

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

@ -155,21 +155,62 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
@Override
@Transactional(rollbackFor = Exception.class)
public void register(RegisterFormDTO formDTO) {
//0.校验验证码是否正确
String smsCodeKey = RedisKeys.getLoginSmsCodeKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, formDTO.getPhone());
String rightSmsCode = (String) redisUtils.get(smsCodeKey);
if (!formDTO.getSmsCode().equals(rightSmsCode)) {
logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
}
//1.根据手机号查询到用户信息,判断用户是否存
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 rightSmsCode = (String) redisUtils.get(smsCodeKey);
if (!formDTO.getSmsCode().equals(rightSmsCode)) {
logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
//2.根据token中的userId查询pa_user表数据,根据手机号是否为空判断后续是新增还是更新user数据
PaUserEntity paUserEntity = paUserDao.selectById(formDTO.getUserId());
//3.手机号不为空说明是同一个微信用户用第二个手机号注册,手机为空说明当前微信用户用第一个手机号注册
if(null != paUserEntity.getPhone() && StringUtils.isNotBlank(paUserEntity.getPhone())){
//手机号不为空说明是同一个微信用户用第二个手机号注册,新增user和user_wechat表数据
//3-1.user表新增数据
PaUserEntity userEntity = new PaUserEntity();
userEntity.setPhone(formDTO.getPhone());
userEntity.setRealName(formDTO.getSurName());
userEntity.setGender(formDTO.getGender().toString());
if (paUserDao.insert(userEntity) < NumConstant.ONE) {
throw new RenException(PaConstant.SAVE_USER_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);
}
//3.pa_user表更新数据
}else {
//手机为空说明当前微信用户用第一个手机号注册,更新user表数据
//3-1.pa_user表更新数据
PaUserEntity userEntity = new PaUserEntity();
userEntity.setId(formDTO.getUserId());
userEntity.setPhone(formDTO.getPhone());
@ -179,7 +220,7 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
throw new RenException(PaConstant.UPDATE_USER_EXCEPTION);
}
//2.访问记录表新增数据
//3-2.访问记录表新增数据
PaUserWechatDTO dto = new PaUserWechatDTO();
dto.setUserId(formDTO.getUserId());
PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(dto);
@ -196,6 +237,8 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
}
}
}
/**
* @return
* @Author sun

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