Browse Source

20210907合并用户

tall3
zy_Java 4 years ago
parent
commit
4fc1b62700
  1. 4
      cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java
  2. 20
      common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java
  3. 2
      common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java
  4. 13
      common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java
  5. 50
      common/src/main/java/com/ccsens/common/persist/dao/RelevanceDao.java
  6. 18
      common/src/main/java/com/ccsens/common/service/IMemberService.java
  7. 67
      common/src/main/java/com/ccsens/common/service/MemberService.java
  8. 9
      common/src/main/java/com/ccsens/common/service/ShareService.java
  9. 19
      common/src/main/resources/mapper_dao/ProMemberDao.xml
  10. 70
      common/src/main/resources/mapper_dao/RelevanceDao.xml
  11. 67
      signin/src/main/java/com/ccsens/signin/api/UserController.java
  12. 4
      signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java
  13. 25
      signin/src/main/java/com/ccsens/signin/bean/dto/UserDto.java
  14. 13
      signin/src/main/java/com/ccsens/signin/persist/dao/SysUserDao.java
  15. 4
      signin/src/main/java/com/ccsens/signin/service/IRelevanceUser.java
  16. 17
      signin/src/main/java/com/ccsens/signin/service/IRelevanceUserService.java
  17. 8
      signin/src/main/java/com/ccsens/signin/service/IUserService.java
  18. 29
      signin/src/main/java/com/ccsens/signin/service/ProjectService.java
  19. 21
      signin/src/main/java/com/ccsens/signin/service/RelevanceUserService.java
  20. 309
      signin/src/main/java/com/ccsens/signin/service/UserService.java
  21. 59
      signin/src/main/resources/mapper_dao/SysUserDao.xml

4
cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/dto/ProjectDto.java

@ -47,8 +47,8 @@ public class ProjectDto {
@ApiModel("保存用户项目列表")
public static class SaveUserProject{
@ApiModelProperty("项目id")
private Long projectId;
private List<Long> projectId;
@ApiModelProperty("用户id")
private Long userId;
private List<Long> userId;
}
}

20
common/src/main/java/com/ccsens/common/bean/dto/CMemberDto.java

@ -0,0 +1,20 @@
package com.ccsens.common.bean.dto;
import lombok.Data;
@Data
public class CMemberDto {
@Data
public static class PhoneAndUserId{
private String phone;
private Long userId;
}
@Data
public static class MergeUser{
private Long oldUserId;
private Long newUserId;
}
}

2
common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java

@ -16,4 +16,6 @@ public class CMemberVo {
@ApiModelProperty("成员名")
private String name;
}
}

13
common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java

@ -66,4 +66,17 @@ public interface ProMemberDao extends ProMemberMapper {
* @return
*/
List<CClockingInVo.ClockRecord> queryMemberByIdList(@Param("memberIdList") List<Long> memberIdList);
/**
* 修改手机号相同的成员的userId
* @param phone
*/
void updateUserIdByPhone(@Param("phone")String phone,@Param("userId")Long userId);
/**
* 根据手机号查找成员所属的项目id
* @param phone 手机号
* @return 返回项目id
*/
List<Long> queryProjectIdByPhone(@Param("phone")String phone);
}

50
common/src/main/java/com/ccsens/common/persist/dao/RelevanceDao.java

@ -0,0 +1,50 @@
package com.ccsens.common.persist.dao;
import org.apache.ibatis.annotations.Param;
public interface RelevanceDao {
/**
* 标签与业务关联表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeLabelBusiness(@Param("oldUserId") Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 成员表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeProMember(@Param("oldUserId") Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 奖惩干系人表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeMemberStakeholder(@Param("oldUserId") Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 项目分享链接表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeProjectShare(@Param("oldUserId") Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 被分享成员信息表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeProjectShareMember(@Param("oldUserId")Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 任务分享
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeTaskShare(@Param("oldUserId")Long oldUserId, @Param("newUserId")Long newUserId);
/**
* 任务状态记录表
* @param oldUserId 废弃的
* @param newUserId 保留的
*/
void mergeStatusRecord(@Param("oldUserId")Long oldUserId, @Param("oldUserId")Long newUserId);
}

18
common/src/main/java/com/ccsens/common/service/IMemberService.java

@ -0,0 +1,18 @@
package com.ccsens.common.service;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.bean.dto.CRoleDto;
public interface IMemberService {
/**
* 根据手机号查找成员并关联userId
* @param param 手机号和userId
*/
void relevancePhone(CMemberDto.PhoneAndUserId param);
/**
* 合并用户最小项目
* @param param 新userId和旧userId
*/
void mergeUser(CMemberDto.MergeUser param);
}

67
common/src/main/java/com/ccsens/common/service/MemberService.java

@ -0,0 +1,67 @@
package com.ccsens.common.service;
import com.ccsens.cloudutil.bean.tall.dto.ProjectDto;
import com.ccsens.cloudutil.feign.Tall3FeignClient;
import com.ccsens.common.bean.dto.CMemberDto;
import com.ccsens.common.persist.dao.ProMemberDao;
import com.ccsens.common.persist.dao.RelevanceDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class MemberService implements IMemberService{
@Resource
private ProMemberDao proMemberDao;
@Resource
private RelevanceDao relevanceDao;
@Resource
private Tall3FeignClient tall3FeignClient;
@Override
public void relevancePhone(CMemberDto.PhoneAndUserId param) {
//查找修改的成员所属的项目id
List<Long> projectIdList = proMemberDao.queryProjectIdByPhone(param.getPhone());
//修改所有手机号相同的成员的userId
proMemberDao.updateUserIdByPhone(param.getPhone(),param.getUserId());
//通过feign调用tall,将用户和userId关联
ProjectDto.SaveUserProject userProject = new ProjectDto.SaveUserProject();
userProject.setProjectId(projectIdList);
List<Long> userIds = new ArrayList<>();
userIds.add(param.getUserId());
userProject.setUserId(userIds);
log.info("调用tall3添加项目用户关联:{}",userProject);
tall3FeignClient.saveUserProject(userProject);
}
@Override
public void mergeUser(CMemberDto.MergeUser param) {
log.info("合并用户,将旧userId:{}--替换成新userId:{}",param.getOldUserId(),param.getNewUserId());
//标签与业务关联表
relevanceDao.mergeLabelBusiness(param.getOldUserId(),param.getNewUserId());
//成员表
relevanceDao.mergeProMember(param.getOldUserId(),param.getNewUserId());
//奖惩干系人表
relevanceDao.mergeMemberStakeholder(param.getOldUserId(),param.getNewUserId());
//项目分享链接表
relevanceDao.mergeProjectShare(param.getOldUserId(),param.getNewUserId());
//被分享成员信息表
relevanceDao.mergeProjectShareMember(param.getOldUserId(),param.getNewUserId());
//任务分享表
relevanceDao.mergeTaskShare(param.getOldUserId(),param.getNewUserId());
//任务状态记录表
relevanceDao.mergeStatusRecord(param.getOldUserId(),param.getNewUserId());
}
}

9
common/src/main/java/com/ccsens/common/service/ShareService.java

@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
@ -111,8 +112,12 @@ public class ShareService implements IShareService{
newShareMember.setType((byte) 0);
shareMemberDao.insertSelective(newShareMember);
ProjectDto.SaveUserProject userProject = new ProjectDto.SaveUserProject();
userProject.setProjectId(projectShare.getProjectId());
userProject.setUserId(userId);
List<Long> projects = new ArrayList<>();
projects.add(projectShare.getProjectId());
userProject.setProjectId(projects);
List<Long> userIds = new ArrayList<>();
userIds.add(userId);
userProject.setUserId(userIds);
tall3FeignClient.saveUserProject(userProject);
return clickShareInfo;
}

19
common/src/main/resources/mapper_dao/ProMemberDao.xml

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.common.persist.dao.ProMemberDao">
<update id="updateUserIdByPhone">
UPDATE t_pro_member
SET user_id = #{userId}
WHERE
phone = #{phone}
and user_id = 0
AND rec_status = 0
</update>
<select id="findUserOfMemberId" resultType="java.lang.Long">
SELECT
@ -87,4 +95,15 @@
#{id}
</foreach>
</select>
<select id="queryProjectIdByPhone" resultType="java.lang.Long">
SELECT
project_id
FROM
t_pro_member
WHERE
phone = #{phone}
and user_id = 0
and rec_status = 0
GROUP BY project_id
</select>
</mapper>

70
common/src/main/resources/mapper_dao/RelevanceDao.xml

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.common.persist.dao.RelevanceDao">
<update id="mergeLabelBusiness">
update
t_label_business
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeProMember">
update
t_pro_member
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeMemberStakeholder">
update
t_pro_member_stakeholder
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeProjectShare">
update
t_pro_project_share
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeProjectShareMember">
update
t_pro_share_member
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeTaskShare">
update
t_pro_task_share
set
share_user_id = #{newUserId}
where
share_user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="mergeStatusRecord">
update
t_pro_task_status_record
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
</mapper>

67
signin/src/main/java/com/ccsens/signin/api/UserController.java

@ -175,35 +175,26 @@ public class UserController {
return JsonResponse.newInstance().ok(flag);
}
// @ApiOperation(value = "/修改账号信息",notes = "")
// @ApiImplicitParams({
// })
// @RequestMapping(value="/account",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
// public JsonResponse updateAccount(HttpServletRequest request,@ApiParam @RequestBody UserDto.Account account) throws Exception {
// userService.updateAccount(account);
// return JsonResponse.newInstance().ok();
// }
@ApiOperation(value = "/微信合并已有账号",notes = "")
@ApiImplicitParams({
})
@RequestMapping(value="/merge",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
public JsonResponse<UserVo.TokenBean> bindingPhone(HttpServletRequest request,
@ApiParam @RequestBody UserDto.MergePhone mergePhone) throws Exception {
Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
UserVo.UserSign userSignVo = userService.mergeByPhone(currentUserId,mergePhone);
// @ApiOperation(value = "/微信合并已有账号",notes = "")
// @ApiImplicitParams({
// })
// @RequestMapping(value="/merge",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
// public JsonResponse<UserVo.TokenBean> bindingPhone(HttpServletRequest request,
// @ApiParam @RequestBody UserDto.WxMergePhone wxPhone) throws Exception {
// Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject());
// UserVo.UserSign userSignVo = userService.mergeByPhone(currentUserId,wxPhone);
//
// UserVo.TokenBean tokenBean = null;
// if (ObjectUtil.isNotNull(userSignVo)) {
// WebConstant.CLIENT_TYPE clientType = WebConstant.CLIENT_TYPE.valueOf(1);
// WebConstant.IDENTIFY_TYPE identifyType = WebConstant.IDENTIFY_TYPE.valueOf(3);
// Map<String, Object> theMap = CollectionUtil.newHashMap();
// theMap.put("authId", String.valueOf(userSignVo.getAuthId()));
// tokenBean = userService.getUserInfoAndToken(clientType, identifyType,userSignVo, theMap);
// }
// return JsonResponse.newInstance().ok(tokenBean);
// }
UserVo.TokenBean tokenBean = null;
if (ObjectUtil.isNotNull(userSignVo)) {
WebConstant.CLIENT_TYPE clientType = WebConstant.CLIENT_TYPE.valueOf(1);
WebConstant.IDENTIFY_TYPE identifyType = WebConstant.IDENTIFY_TYPE.valueOf(3);
Map<String, Object> theMap = CollectionUtil.newHashMap();
theMap.put("authId", String.valueOf(userSignVo.getAuthId()));
tokenBean = userService.getUserInfoAndToken(clientType, identifyType,userSignVo, theMap);
}
return JsonResponse.newInstance().ok(tokenBean);
}
@ApiOperation(value = "/微信绑定账号",notes = "")
@ApiImplicitParams({
@ -323,17 +314,17 @@ public class UserController {
// return JsonResponse.newInstance().ok();
// }
@ApiOperation(value = "输入两个userid将两个账号合并(保留企业用户的id)",notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name="userId",value = "需要保留的userId",required = true,paramType = "query"),
@ApiImplicitParam(name="uselessId",value = "不需要保留的userId",required = true,paramType = "query")
})
@RequestMapping(value = "/mergeUserId",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
public JsonResponse mergeUserId(HttpServletRequest request,
@RequestParam(required = true) Long userId,Long uselessId) throws Exception {
userService.mergeUserId(userId,uselessId);
return JsonResponse.newInstance().ok();
}
// @ApiOperation(value = "输入两个userid将两个账号合并(保留企业用户的id)",notes = "")
// @ApiImplicitParams({
// @ApiImplicitParam(name="userId",value = "需要保留的userId",required = true,paramType = "query"),
// @ApiImplicitParam(name="uselessId",value = "不需要保留的userId",required = true,paramType = "query")
// })
// @RequestMapping(value = "/mergeUserId",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
// public JsonResponse mergeUserId(HttpServletRequest request,
// @RequestParam(required = true) Long userId,Long uselessId) throws Exception {
// userService.mergeUserId(userId,uselessId);
// return JsonResponse.newInstance().ok();
// }
@ApiOperation(value = "通过userId获取token",notes = "")

4
signin/src/main/java/com/ccsens/signin/bean/dto/ProjectDto.java

@ -45,9 +45,9 @@ public class ProjectDto {
@ApiModel("添加项目信息单个")
public static class SaveUserProject {
@ApiModelProperty("项目id")
private Long projectId;
private List<Long> projectId;
@ApiModelProperty("用户id")
private Long userId;
private List<Long> userId;
}
@Data

25
signin/src/main/java/com/ccsens/signin/bean/dto/UserDto.java

@ -126,7 +126,7 @@ public class UserDto {
}
@Data
@ApiModel
public static class WxMergePhone{
public static class MergePhone{
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("合并方式 0直接合并 1不合并以前的信息")
@ -218,5 +218,28 @@ public class UserDto {
public static class PhoneAndUserId{
private String phone;
private Long userId;
public PhoneAndUserId(String phone, Long userId) {
this.phone = phone;
this.userId = userId;
}
public PhoneAndUserId() {
}
}
@Data
public static class MergeUser{
private Long oldUserId;
private Long newUserId;
public MergeUser(Long oldUserId, Long newUserId) {
this.oldUserId = oldUserId;
this.newUserId = newUserId;
}
public MergeUser() {
}
}
}

13
signin/src/main/java/com/ccsens/signin/persist/dao/SysUserDao.java

@ -13,21 +13,10 @@ public interface SysUserDao extends SysUserMapper {
void replaceAuth(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceAttention(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceBalance(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceProject(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceMember(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceDeliverPostLog(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceProLog(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
void replaceUserProject(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
String getUserNameByUserId(@Param("userId") Long userId);
void replaceComment(@Param("oldUserId") Long userId, @Param("newUserId") Long currentUserId);
/**
* 查询用户信息

4
signin/src/main/java/com/ccsens/signin/service/IRelevanceUser.java

@ -1,4 +0,0 @@
package com.ccsens.signin.service;
public interface IRelevanceUser {
}

17
signin/src/main/java/com/ccsens/signin/service/IRelevanceUserService.java

@ -0,0 +1,17 @@
package com.ccsens.signin.service;
public interface IRelevanceUserService {
/**
* 关联所有手机号一样的成员
* @param phone
* @param userId
*/
void relevancePhone(String phone, Long userId);
/**
* 调用业务系统合并账号
* @param oldUserId 被废弃的userId
* @param newUserId 留下来的userId
*/
void mergeUserByPhone(Long oldUserId, Long newUserId);
}

8
signin/src/main/java/com/ccsens/signin/service/IUserService.java

@ -62,12 +62,6 @@ public interface IUserService {
String selectAccountByPhone(String phone)throws Exception;
// List<Long> selectUserIdByRoleId(Long roleId)throws Exception;
//
// Boolean getIsAttention(Long currentUserId, Long projectId);
// void userAttentionProject(Long currentUserId, ProjectDto.ProjectIdDto projectIdDto);
//默认注册
/**
*@Description: 注冊用戶若用戶手机号存在则默认用户已注册不做任何操作若账号重复则再名字后面添加_1递增直到不重复
@ -79,7 +73,7 @@ public interface IUserService {
long defaultRegisterUser(com.ccsens.cloudutil.bean.tall.dto.UserDto.DefaultUserSingup signup);
UserVo.UserSign mergeByPhone(Long currentUserId, UserDto.WxMergePhone wxPhone);
UserVo.UserSign mergeByPhone(Long currentUserId, UserDto.MergePhone mergePhone);
UserVo.WxInfo updateUserInfo(Long currentUserId, UserDto.WxInfo userInfo);

29
signin/src/main/java/com/ccsens/signin/service/ProjectService.java

@ -240,18 +240,25 @@ public class ProjectService implements IProjectService{
@Override
public void saveUserProject(ProjectDto.SaveUserProject saveUserProject) {
SysUserProjectExample userProjectExample = new SysUserProjectExample();
userProjectExample.createCriteria().andUserIdEqualTo(saveUserProject.getUserId())
.andProjectIdEqualTo(saveUserProject.getProjectId());
List<SysUserProject> sysUserProjects = userProjectMapper.selectByExample(userProjectExample);
if (CollectionUtil.isNotEmpty(sysUserProjects)){
return;
if(CollectionUtil.isNotEmpty(saveUserProject.getProjectId())){
saveUserProject.getProjectId().forEach(pId ->{
if(CollectionUtil.isNotEmpty(saveUserProject.getUserId())){
saveUserProject.getUserId().forEach(userId -> {
SysUserProjectExample userProjectExample = new SysUserProjectExample();
userProjectExample.createCriteria().andUserIdEqualTo(userId).andProjectIdEqualTo(pId);
List<SysUserProject> sysUserProjects = userProjectMapper.selectByExample(userProjectExample);
if (CollectionUtil.isNotEmpty(sysUserProjects)){
return;
}
SysUserProject userProject = new SysUserProject();
userProject.setId(snowflake.nextId());
userProject.setUserId(userId);
userProject.setProjectId(pId);
userProjectMapper.insertSelective(userProject);
});
}
});
}
SysUserProject userProject = new SysUserProject();
userProject.setId(snowflake.nextId());
userProject.setUserId(saveUserProject.getUserId());
userProject.setProjectId(saveUserProject.getProjectId());
userProjectMapper.insertSelective(userProject);
}
@Override

21
signin/src/main/java/com/ccsens/signin/service/RelevanceUser.java → signin/src/main/java/com/ccsens/signin/service/RelevanceUserService.java

@ -17,7 +17,7 @@ import java.util.List;
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class RelevanceUser implements IRelevanceUser{
public class RelevanceUserService implements IRelevanceUserService {
@Resource
private ProjectDao projectDao;
@ -31,15 +31,26 @@ public class RelevanceUser implements IRelevanceUser{
/**
* 调用业务系统关联成员
*/
@Override
public void relevancePhone(String phone, Long userId) {
//查询所有的域连接
List<String> domainList = queryDomain();
//传入手机号和userId,循环调用每个域内关联成员的接口
UserDto.PhoneAndUserId phoneAndUserId = new UserDto.PhoneAndUserId();
phoneAndUserId.setPhone(phone);
phoneAndUserId.setUserId(userId);
domainList.forEach(domain -> {
RestTemplateUtil.postBody(domain + "/memberWithPhone", phoneAndUserId);
RestTemplateUtil.postBody(domain + "/user/memberWithPhone", new UserDto.PhoneAndUserId(phone,userId));
});
}
/**
* 调用业务合并账号
*/
@Override
public void mergeUserByPhone(Long oldUserId, Long newUserId) {
//查询所有的域连接
List<String> domainList = queryDomain();
//传入手机号和userId,循环调用每个域内关联成员的接口
domainList.forEach(domain -> {
RestTemplateUtil.postBody(domain + "/user/mergeUser", new UserDto.MergeUser(oldUserId,newUserId));
});
}
}

309
signin/src/main/java/com/ccsens/signin/service/UserService.java

@ -26,7 +26,6 @@ import com.ccsens.util.wx.WxGzhUtil;
import com.ccsens.util.wx.WxXcxUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@ -49,41 +48,25 @@ public class UserService implements IUserService {
private SysUserDao userDao;
@Resource
private SysAuthDao authDao;
// @Resource
// private ProMemberDao memberDao;
// @Resource
// private ProRoleDao proRoleDao;
// @Resource
// private ProMemberRoleDao memberRoleDao;
// @Resource
// private SysBalanceLogDao sysBalanceLogDao;
@Resource
private Snowflake snowflake;
@Resource
private RedisUtil redisUtil;
// @Resource
// private SysProjectDao sysProjectDao;
// @Resource
// private UserAttentionDao userAttentionDao;
@Resource
private HealthFeignClient healthFeignClient;
@Resource
private IRelevanceUserService relevanceUserService;
/**
* 登录
*/
// @Cacheable(cacheNames = "signin", key = "#clientType+'-'+#identifyType+'-'+#identifier+'-'+#credential")
// @Cacheable(cacheNames = "signin", key = "login")
@Override
public UserVo.UserSign signin(WebConstant.CLIENT_TYPE clientType, WebConstant.IDENTIFY_TYPE identifyType,
String identifier, String credential, String clientIp, String redirect) throws Exception {
UserVo.UserSign userSignVo;
//1.登陆
userSignVo = __signin(identifyType, identifier, credential, redirect);
// if (ObjectUtil.isNotNull(userSignVo) && ObjectUtil.isNotNull(userSignVo.getAuthId())) {
// //2.添加登陆记录
// __addSigninRecord(clientType, clientIp, userSignVo.getAuthId());
// }
return userSignVo;
}
@ -100,12 +83,10 @@ public class UserService implements IUserService {
case Wx_H5:
return wxH5Login(identifyType, identifier);
case OAUTH2_WeiBo:
//Fix Me.
break;
case Phone:
return phoneLogin(identifier, credential);
case Email:
// return emailLogin(identifier, credential);
case Account:
return accountLogin(identifier, credential);
default:
@ -143,30 +124,10 @@ public class UserService implements IUserService {
private UserVo.UserSign wxH5Login(WebConstant.IDENTIFY_TYPE identifyType, String code) {
UserVo.UserSign userSignVo;
//获取微信信息
// WxGzhUtil wxGzhUtil = new WxGzhUtil();
// WxOauth2UserInfo wxOauth2UserInfo = wxGzhUtil.getOauth2UserInfo(identifyType, code);
WxOauth2UserInfo wxOauth2UserInfo = WxGzhUtil.getOauth2UserInfo(identifyType, code);
SysAuth theAuth;
if (ObjectUtil.isNotNull(wxOauth2UserInfo)) {
// //查找有无保存的信息
// SysWxExample sysWxExample = new SysWxExample();
// sysWxExample.createCriteria().andUnionIdEqualTo(wxOauth2UserInfo.getUnionId());
// List<SysWx> sysWxList = sysWxDao.selectByExample(sysWxExample);
// SysWx sysWx = null;
// if (CollUtil.isNotEmpty(sysWxList)) {
// //如果有信息,则更新
// sysWx = sysWxList.get(0);
// BeanUtil.copyProperties(wxOauth2UserInfo, sysWx);
// sysWxDao.updateByPrimaryKeySelective(sysWx);
// } else {
// //没有则保存微信信息
// sysWx = new SysWx();
// BeanUtil.copyProperties(wxOauth2UserInfo, sysWx);
// sysWx.setId(snowflake.nextId());
// sysWxDao.insertSelective(sysWx);
// }
//查找认证信息
SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Wx_H5.value)
@ -339,8 +300,8 @@ public class UserService implements IUserService {
userSignVo.setUserId(theAuth.getUserId());
userSignVo.setAuthId(theAuth.getId());
// //给所有手机号一样的角色添加userId
// memberHandler(theAuth.getUserId(), phone);
//给所有手机号一样的角色添加userId
relevanceUserService.relevancePhone(phone, theAuth.getUserId());
} else {
throw new BaseException(CodeEnum.SMS_CODE_CORRECT);
}
@ -606,13 +567,6 @@ public class UserService implements IUserService {
*/
@Override
public UserVo.SmsCode getSignInSmsCode(String phone,String verificationCodeId, String verificationCodeValue) {
//获取登陆客户端类型
// WebConstant.CLIENT_TYPE client_type = null;
// if (ObjectUtil.isNotNull(client)) {
// client_type = WebConstant.CLIENT_TYPE.valueOf(client);
// } else {
// client_type = WebConstant.CLIENT_TYPE.valueOf(1);
// }
//检查图形验证码是否正确
String codeKey = WebConstant.IMAGE_CODE + verificationCodeId;
if (!redisUtil.hasKey(codeKey)) {
@ -738,35 +692,11 @@ public class UserService implements IUserService {
userSignVo.setUserId(user.getId());
userSignVo.setAuthId(phoneAuth.getId());
// //给所有手机号一样的角色添加userId
// memberHandler(user.getId(), userSignup.getPhone());
//给所有手机号一样的角色添加userId
relevanceUserService.relevancePhone(userSignup.getPhone(), user.getId());
return userSignVo;
}
// /**
// * 给所有手机号相同的角色添加userId
// */
// private void memberHandler(Long userId, String phone) {
// ProMemberExample memberExample = new ProMemberExample();
// memberExample.createCriteria().andPhoneEqualTo(phone);
// List<ProMember> proMemberList = memberDao.selectByExample(memberExample);
// if (CollectionUtil.isNotEmpty(proMemberList)) {
// SysUser user = userDao.selectByPrimaryKey(userId);
// if (ObjectUtil.isNotNull(user)) {
// for (ProMember member : proMemberList) {
// if (ObjectUtil.isNull(member.getUserId()) || member.getUserId() == 0) {
// member.setUserId(userId);
// //将用户的昵称和头像复制到成员信息内
// member.setAvatarUrl(user.getAvatarUrl());
// member.setNickname(user.getNickname());
//
// memberDao.updateByPrimaryKeySelective(member);
// }
// }
// }
// }
// }
/**
* 查找账号
*/
@ -862,8 +792,8 @@ public class UserService implements IUserService {
auth.setIdentifier(wxPhone.getPhone());
authDao.insertSelective(auth);
// //给手机号一样的所有项目内的成员添加userId
// memberHandler(currentUserId, wxPhone.getPhone());
//给所有手机号一样的角色添加userId
relevanceUserService.relevancePhone(wxPhone.getPhone(), currentUserId);
}
}
} else {
@ -1056,82 +986,6 @@ public class UserService implements IUserService {
return account;
}
// /**
// * 查找角色下的所有人的userId
// */
// @Override
// public List<Long> selectUserIdByRoleId(Long roleId) {
// ProRole role = proRoleDao.selectByPrimaryKey(roleId);
// if(ObjectUtil.isNull(role)){
// return null;
// }
// List<Long> userIdList;
// if(role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase)){
// userIdList = memberRoleDao.selectUserIdByProjectId(role.getProjectId());
// }else {
// userIdList = memberRoleDao.selectUserIdByRoleId(roleId);
// }
// return userIdList;
// }
// /**
// * 查询用户是否关注此项目
// *
// * @param currentUserId userId
// * @param projectId 项目id
// * @return 是否关注此项目
// */
// @Override
// public Boolean getIsAttention(Long currentUserId, Long projectId) {
// boolean isAttention = false;
// if (ObjectUtil.isNotNull(sysProjectDao.selectByPrimaryKey(projectId))) {
// UserAttentionExample attentionExample = new UserAttentionExample();
// attentionExample.createCriteria().andProjectIdEqualTo(projectId).andUserIdEqualTo(currentUserId);
// List<UserAttention> attentionList = userAttentionDao.selectByExample(attentionExample);
// if (CollectionUtil.isNotEmpty(attentionList)) {
// isAttention = true;
// }
// } else {
// throw new BaseException(CodeEnum.NOT_PROJECT);
// }
// return isAttention;
// }
// /**
// * 用户关注某个项目
// *
// * @param currentUserId userId
// * @param projectIdDto 项目id
// */
// @Override
// public void userAttentionProject(Long currentUserId, ProjectDto.ProjectIdDto projectIdDto) {
// //查找项目
// SysProject project = sysProjectDao.selectByPrimaryKey(projectIdDto.getProjectId());
// if (ObjectUtil.isNotNull(project)) {
// UserAttentionExample attentionExample = new UserAttentionExample();
// attentionExample.createCriteria().andProjectIdEqualTo(projectIdDto.getProjectId()).andUserIdEqualTo(currentUserId);
// List<UserAttention> attentionList = userAttentionDao.selectByExample(attentionExample);
// if (CollectionUtil.isNotEmpty(attentionList)) {
// throw new BaseException(CodeEnum.ALREADY_ATTENTION);
// }
// UserAttention attention = new UserAttention();
// attention.setId(snowflake.nextId());
// attention.setUserId(currentUserId);
// attention.setProjectId(projectIdDto.getProjectId());
// userAttentionDao.insertSelective(attention);
// } else {
// throw new BaseException(CodeEnum.NOT_PROJECT);
// }
// }
// @Override
// public UserVo.TokenBean userManageSignin(UserDto.UserSginin dto){
// UserVo.TokenBean tokenBean = null;
// JsonResponse<UserVo.TokenBean> tokenBeanJsonResponse = userManageFeign.userSignin(dto);
// tokenBean = tokenBeanJsonResponse.getData();
// return tokenBean;
// }
@Override
public long defaultRegisterUser(com.ccsens.cloudutil.bean.tall.dto.UserDto.DefaultUserSingup signup) {
log.info("默认注册信息:{}", signup);
@ -1173,55 +1027,21 @@ public class UserService implements IUserService {
return tokenBean;
}
// /**
// * 通过userId查找账号
// * @param userId userId
// * @return 账号
// */
// private String selectAccountByUserId(Long userId) {
// String account = null;
// SysAuthExample sysAuthExample = new SysAuthExample();
// sysAuthExample.createCriteria().andUserIdEqualTo(userId).andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Account.value);
// List<SysAuth> authList = authDao.selectByExample(sysAuthExample);
// if(CollectionUtil.isNotEmpty(authList)){
// account = authList.get(0).getIdentifier();
// }
// return account;
// }
//
// private String getPhoneByRegisterType(Long userId, WebConstant.IDENTIFY_TYPE identifyType) {
// SysAuthExample authExample = new SysAuthExample();
// authExample.createCriteria().andUserIdEqualTo(userId).andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value);
// List<SysAuth> sysAuthList = authDao.selectByExample(authExample);
// if (CollectionUtil.isNotEmpty(sysAuthList)) {
// return sysAuthList.get(0).getIdentifier();
// } else {
// SysAuthExample authExampleType = new SysAuthExample();
// authExampleType.createCriteria().andUserIdEqualTo(userId).andIdentifyTypeEqualTo((byte) identifyType.value);
// List<SysAuth> sysAuthList1 = authDao.selectByExample(authExampleType);
// if (CollectionUtil.isNotEmpty(sysAuthList1)){
// if(sysAuthList1.get(0).getRegisterType() == 1){
// return "1";
// }
// }
// return null;
// }
// }
/**
* 合并账号
* @param currentUserId userId
* @param wxPhone 手机号和合并方式
* @param mergePhone 手机号和合并方式
* @return 用户id
*/
@Override
public UserVo.UserSign mergeByPhone(Long currentUserId, UserDto.WxMergePhone wxPhone) {
if (wxPhone.getIsMerge() == 0) {
public UserVo.UserSign mergeByPhone(Long currentUserId, UserDto.MergePhone mergePhone) {
if (mergePhone.getIsMerge() == 0) {
//直接合并
//1.查找手机号原来的userId
Long userId = selectUserIdByPhone(wxPhone.getPhone());
Long userId = selectUserIdByPhone(mergePhone.getPhone());
if (ObjectUtil.isNotNull(userId)) {
//处理账号认证信息,保留手机号的账号,删除现在的账号
//处理账号认证信息,保留手机号的账号,删除现在的账号登录方式
SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Account.value)
.andUserIdEqualTo(currentUserId);
@ -1232,27 +1052,16 @@ public class UserService implements IUserService {
authDao.updateByPrimaryKeySelective(auth);
}
}
userDao.replaceAuth(userId, currentUserId);
//查询所有关联userId的数据库表 auth表 attention表 balance表 project表 member表 DeliverPostLog表 proLog表
//依次将查出的数据的旧userId 替换成新的userId
userDao.replaceProject(userId, currentUserId);
userDao.replaceAttention(userId, currentUserId);
userDao.replaceBalance(userId, currentUserId);
userDao.replaceMember(userId, currentUserId);
userDao.replaceDeliverPostLog(userId, currentUserId);
userDao.replaceProLog(userId, currentUserId);
userDao.replaceComment(userId, currentUserId);
//将以前的余额添加至此账号
SysUser newUser = userDao.selectByPrimaryKey(currentUserId);
SysUser oldUser = userDao.selectByPrimaryKey(userId);
// if(ObjectUtil.isNotNull(oldUser) && ObjectUtil.isNotNull(newUser)) {
// updateBalance(oldUser, newUser);
// }
//将以前的user删除
oldUser.setRecStatus((byte) 2);
userDao.updateByPrimaryKeySelective(oldUser);
//将其他登录方式的userId替换为新userId
userDao.replaceAuth(userId,currentUserId);
//将用户项目关联表里的userId替换为新的
userDao.replaceUserProject(userId,currentUserId);
//TODO 调用业务系统替换所有的userId
relevanceUserService.mergeUserByPhone(userId,currentUserId);
//原user改为已禁用
SysUser sysUser = userDao.selectByPrimaryKey(currentUserId);
sysUser.setRecStatus((byte) 1);
userDao.updateByPrimaryKeySelective(sysUser);
} else {
throw new BaseException(CodeEnum.PARAM_ERROR);
}
@ -1260,15 +1069,17 @@ public class UserService implements IUserService {
//不要以前的信息
SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value)
.andIdentifierEqualTo(wxPhone.getPhone());
.andIdentifierEqualTo(mergePhone.getPhone());
List<SysAuth> authList = authDao.selectByExample(authExample);
if (CollectionUtil.isNotEmpty(authList)) {
SysAuth auth = authList.get(0);
//查找这个手机号以前的用户,并删除
SysUser user = userDao.selectByPrimaryKey(auth.getUserId());
user.setRecStatus((byte) 2);
userDao.updateByPrimaryKeySelective(user);
//删除这个手机号的认证方式
if(ObjectUtil.isNotNull(user)){
user.setRecStatus((byte) 2);
userDao.updateByPrimaryKeySelective(user);
}
//删除原来认证方式
auth.setRecStatus((byte) 2);
authDao.updateByPrimaryKeySelective(auth);
//将当前的用户手机号改为新的手机号
@ -1278,18 +1089,16 @@ public class UserService implements IUserService {
List<SysAuth> sysAuthList = authDao.selectByExample(authExample);
if (CollectionUtil.isNotEmpty(sysAuthList)) {
SysAuth sysAuth = sysAuthList.get(0);
sysAuth.setIdentifier(wxPhone.getPhone());
sysAuth.setIdentifier(mergePhone.getPhone());
authDao.updateByPrimaryKeySelective(sysAuth);
}
// auth.setUserId(currentUserId);
// authDao.updateByPrimaryKeySelective(auth);
}
}
UserVo.UserSign userSignVo = null;
SysAuthExample authExample = new SysAuthExample();
authExample.createCriteria().andIdentifyTypeEqualTo((byte) WebConstant.IDENTIFY_TYPE.Phone.value)
.andIdentifierEqualTo(wxPhone.getPhone());
.andIdentifierEqualTo(mergePhone.getPhone());
List<SysAuth> authList = authDao.selectByExample(authExample);
if (CollectionUtil.isNotEmpty(authList)) {
userSignVo = new UserVo.UserSign();
@ -1300,47 +1109,35 @@ public class UserService implements IUserService {
return userSignVo;
}
// private void updateBalance(SysUser oldUser, SysUser newUser) {
// newUser.setBalance(newUser.getBalance() + oldUser.getBalance());
// userDao.updateByPrimaryKeySelective(newUser);
// //添加一条余额变更记录
// SysBalanceLog balanceLog = new SysBalanceLog();
// balanceLog.setId(snowflake.nextId());
// balanceLog.setUserId(newUser.getId());
// balanceLog.setBalance(newUser.getBalance());
// balanceLog.setOffset(oldUser.getBalance());
// balanceLog.setDescription("合并账号");
// sysBalanceLogDao.insertSelective(balanceLog);
// }
/**
* 输入两个userid合并账号
*/
@Override
public void mergeUserId(Long userId, Long uselessId) {
SysUser user = userDao.selectByPrimaryKey(userId);
SysUser uselessUser = userDao.selectByPrimaryKey(userId);
if(ObjectUtil.isNull(user) || ObjectUtil.isNull(uselessUser)){
throw new BaseException(CodeEnum.NOT_MEMBER);
}
userDao.replaceAuth(uselessId,userId);
//查询所有关联userId的数据库表 auth表 attention表 balance表 project表 member表 DeliverPostLog表 proLog表
//依次将查出的数据的旧userId 替换成新的userId
userDao.replaceAttention(uselessId,userId);
userDao.replaceBalance(uselessId,userId);
userDao.replaceProject(uselessId,userId);
userDao.replaceMember(uselessId,userId);
userDao.replaceDeliverPostLog(uselessId,userId);
userDao.replaceProLog(uselessId,userId);
//将以前的余额添加至此账号
SysUser oldUser = userDao.selectByPrimaryKey(uselessId);
SysUser newUser = userDao.selectByPrimaryKey(userId);
// if(ObjectUtil.isNotNull(oldUser) && ObjectUtil.isNotNull(newUser)) {
// updateBalance(oldUser, newUser);
// SysUser user = userDao.selectByPrimaryKey(userId);
// SysUser uselessUser = userDao.selectByPrimaryKey(userId);
// if(ObjectUtil.isNull(user) || ObjectUtil.isNull(uselessUser)){
// throw new BaseException(CodeEnum.NOT_MEMBER);
// }
//将以前的user删除
oldUser.setRecStatus((byte) 2);
userDao.updateByPrimaryKeySelective(oldUser);
// userDao.replaceAuth(uselessId,userId);
// //查询所有关联userId的数据库表 auth表 attention表 balance表 project表 member表 DeliverPostLog表 proLog表
// //依次将查出的数据的旧userId 替换成新的userId
// userDao.replaceAttention(uselessId,userId);
// userDao.replaceBalance(uselessId,userId);
// userDao.replaceProject(uselessId,userId);
// userDao.replaceMember(uselessId,userId);
// userDao.replaceDeliverPostLog(uselessId,userId);
// userDao.replaceProLog(uselessId,userId);
// //将以前的余额添加至此账号
// SysUser oldUser = userDao.selectByPrimaryKey(uselessId);
// SysUser newUser = userDao.selectByPrimaryKey(userId);
//// if(ObjectUtil.isNotNull(oldUser) && ObjectUtil.isNotNull(newUser)) {
//// updateBalance(oldUser, newUser);
//// }
// //将以前的user删除
// oldUser.setRecStatus((byte) 2);
// userDao.updateByPrimaryKeySelective(oldUser);
}

59
signin/src/main/resources/mapper_dao/SysUserDao.xml

@ -24,70 +24,19 @@
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="replaceAttention" parameterType="java.util.Map">
<update id="replaceUserProject" parameterType="java.util.Map">
update
t_sys_user_attention
t_sys_user_project
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
and rec_status = 0
</update>
<update id="replaceBalance" parameterType="java.util.Map">
update
t_sys_balance_log
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
</update>
<update id="replaceProject" parameterType="java.util.Map">
update
t_sys_project
set
creator_id = #{newUserId}
where
creator_id = #{oldUserId}
</update>
<update id="replaceMember" parameterType="java.util.Map">
update
t_pro_member
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
</update>
<update id="replaceDeliverPostLog" parameterType="java.util.Map">
update
t_pro_task_deliver_post_log
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
</update>
<update id="replaceProLog" parameterType="java.util.Map">
update
t_pro_log
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
</update>
<update id="replaceComment" parameterType="java.util.Map">
update
t_pro_task_comment
set
user_id = #{newUserId}
where
user_id = #{oldUserId}
</update>
<select id="getUserNameByUserId" parameterType="java.util.Map" resultType="java.lang.String">
SELECT

Loading…
Cancel
Save