| | |
| | | import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
| | | import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory;
|
| | | import com.yeshi.fanli.entity.bus.user.UserConnectHistory;
|
| | | import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.WeiXinUser;
|
| | | import com.yeshi.fanli.exception.UserAccountException;
|
| | | import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
|
| | |
| | | import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService;
|
| | | import com.yeshi.fanli.service.inter.user.UserAccountService;
|
| | | import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.FileUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | |
| | | import com.yeshi.fanli.util.wx.WXLoginUtil;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | | import redis.clients.jedis.Jedis;
|
| | | import redis.clients.jedis.JedisPool;
|
| | | import redis.clients.jedis.Transaction;
|
| | |
|
| | | @Service
|
| | | public class UserAccountServiceImpl implements UserAccountService {
|
| | |
| | |
|
| | | @Resource
|
| | | private UserInfoMapper userInfoMapper;
|
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | |
|
| | | @Resource
|
| | | private BindingAccountService bindingAccountService;
|
| | |
| | |
|
| | | @Resource
|
| | | private UserAccountBindingHistoryService userAccountBindingHistoryService;
|
| | |
|
| | | @Resource
|
| | | private UserInfoDeleteRecordService userInfoDeleteRecordService;
|
| | |
|
| | | @Resource
|
| | | private JedisPool jedisPool;
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | |
| | | int addCount = 0;
|
| | |
|
| | | userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
|
| | |
|
| | | userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "删除:账号被打通删除");
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | @Override
|
| | | public void addUser(UserInfo user) {
|
| | |
|
| | | Long maxUid = userInfoMapper.getMaxUid();
|
| | | if (maxUid == null)
|
| | | maxUid = 100000L;
|
| | |
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | if (!Constant.IS_TEST)
|
| | | if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
|
| | | throw new UserAccountException(1, "验证码错误,重新输入");
|
| | | } else {// 验证码输入正确
|
| | | redisManager.clearSMSVCode(phone, SMSHistory.TYPE_LOGIN);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | // 清理次数
|
| | | redisManager.removeCommonString("sendMSNLoginCount" + phone);
|
| | |
|
| | | // 查询是否存在该电话历史用户
|
| | | UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
|
| | | if (userInfo != null) {
|
| | | // 更新账户登录信息
|
| | | updateLonginInfo(userInfo, loginType, request);
|
| | | } else {
|
| | | userInfo = new UserInfo();
|
| | | userInfo.setAppId(appId);
|
| | | userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
|
| | | userInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
|
| | | userInfo.setPhone(phone);
|
| | | userInfo.setLoginType(loginType);
|
| | | userInfo.setState(UserInfo.STATE_NORMAL);
|
| | | // 创建用户
|
| | | addUser(userInfo);
|
| | | // 采用redis事务防止一个手机号多次注册问题
|
| | | String watchKey = StringUtil.Md5("REGISTER:" + phone);
|
| | | Jedis jedis = jedisPool.getResource();
|
| | | try {
|
| | | jedis.watch(watchKey);
|
| | | if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | Transaction tran = jedis.multi();
|
| | | tran.incr(watchKey);
|
| | | List<Object> exec = tran.exec();
|
| | | if (exec == null || exec.size() == 0) {
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | } else {
|
| | | |
| | | // 查询是否存在该电话历史用户
|
| | | UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByPhone(phone);
|
| | | if (userInfo != null) {
|
| | | // 更新账户登录信息
|
| | | updateLonginInfo(userInfo, loginType, request);
|
| | | } else {
|
| | | userInfo = new UserInfo();
|
| | | userInfo.setAppId(appId);
|
| | | userInfo.setNickName(Constant.systemCommonConfig.getDefaultNickName());
|
| | | userInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
|
| | | userInfo.setPhone(phone);
|
| | | userInfo.setLoginType(loginType);
|
| | | userInfo.setState(UserInfo.STATE_NORMAL);
|
| | | // 创建用户
|
| | | addUser(userInfo);
|
| | |
|
| | | try {
|
| | | // 第一次登录时创建用户额外信息
|
| | | userInfoExtraService.createUserInfoExtra(userInfo.getId());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | try {
|
| | | // 第一次登录时创建用户额外信息
|
| | | userInfoExtraService.createUserInfoExtra(userInfo.getId());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | | return userInfo;
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | } finally {
|
| | | jedis.del(watchKey);
|
| | | jedis.unwatch();
|
| | | jedisPool.returnResource(jedis);
|
| | | }
|
| | |
|
| | | return userInfo;
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | }
|
| | |
|
| | | @Transactional
|
| | |
| | | throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
|
| | | }
|
| | |
|
| | | UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
|
| | | // 直接用的微信登录
|
| | | if (userInfo != null) {
|
| | | LogHelper.test("微信unionID存在:" + weiXinUser.getUnionid());
|
| | | // 更新账户登录信息
|
| | | updateLonginInfo(userInfo, loginType, request);
|
| | | // 删除邀请分享图
|
| | | spreadUserImgService.deleteImgUrl(userInfo.getId());
|
| | | } else {
|
| | | LogHelper.test("微信unionID不存在:" + weiXinUser.getUnionid());
|
| | | // 创建新账户
|
| | | userInfo = new UserInfo();
|
| | | userInfo.setPortrait(weiXinUser.getHeadimgurl());
|
| | | userInfo.setAppId(appId);
|
| | | userInfo.setNickName(weiXinUser.getNickname());
|
| | | userInfo.setWxName(weiXinUser.getNickname());
|
| | | userInfo.setWxOpenId(weiXinUser.getOpenid());
|
| | | userInfo.setWxUnionId(weiXinUser.getUnionid());
|
| | | userInfo.setWxPic(weiXinUser.getHeadimgurl());
|
| | | userInfo.setLastLoginTime(System.currentTimeMillis());
|
| | | userInfo.setLoginType(loginType);
|
| | | userInfo.setLastLoginIp(request.getRemoteHost());
|
| | | userInfo.setState(UserInfo.STATE_NORMAL);
|
| | | addUser(userInfo);
|
| | | // 采用redis事务防止一个微信号多次注册问题
|
| | | String watchKey = StringUtil.Md5("REGISTER:" + weiXinUser.getUnionid());
|
| | | Jedis jedis = jedisPool.getResource();
|
| | | try {
|
| | | jedis.watch(watchKey);
|
| | | if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | Transaction tran = jedis.multi();
|
| | | tran.incr(watchKey);
|
| | | List<Object> exec = tran.exec();
|
| | | if (exec == null || exec.size() == 0) {
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | } else {
|
| | |
|
| | | try {
|
| | | // 第一次登录时创建用户额外信息
|
| | | userInfoExtraService.createUserInfoExtra(userInfo.getId());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
|
| | | // 直接用的微信登录
|
| | | if (userInfo != null) {
|
| | | LogHelper.test("微信unionID存在:" + weiXinUser.getUnionid());
|
| | | // 更新账户登录信息
|
| | | updateLonginInfo(userInfo, loginType, request);
|
| | | // 删除邀请分享图
|
| | | spreadUserImgService.deleteImgUrl(userInfo.getId());
|
| | | } else {
|
| | | LogHelper.test("微信unionID不存在:" + weiXinUser.getUnionid());
|
| | | // 创建新账户
|
| | | userInfo = new UserInfo();
|
| | | userInfo.setPortrait(weiXinUser.getHeadimgurl());
|
| | | userInfo.setAppId(appId);
|
| | | userInfo.setNickName(weiXinUser.getNickname());
|
| | | userInfo.setWxName(weiXinUser.getNickname());
|
| | | userInfo.setWxOpenId(weiXinUser.getOpenid());
|
| | | userInfo.setWxUnionId(weiXinUser.getUnionid());
|
| | | userInfo.setWxPic(weiXinUser.getHeadimgurl());
|
| | | userInfo.setLastLoginTime(System.currentTimeMillis());
|
| | | userInfo.setLoginType(loginType);
|
| | | userInfo.setLastLoginIp(request.getRemoteHost());
|
| | | userInfo.setState(UserInfo.STATE_NORMAL);
|
| | | addUser(userInfo);
|
| | |
|
| | | try {
|
| | | // 第一次登录时创建用户额外信息
|
| | | userInfoExtraService.createUserInfoExtra(userInfo.getId());
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | return userInfo;
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | } finally {
|
| | | jedis.del(watchKey);
|
| | | jedis.unwatch();
|
| | | jedisPool.returnResource(jedis);
|
| | | }
|
| | | return userInfo;
|
| | | throw new UserAccountException(10, "请稍后再试");
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void forbiddenUserAll(Long uid, String reason) {
|
| | | UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
| | | if (currentInfo == null) {
|
| | | return;
|
| | | }
|
| | | if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | |
|
| | | currentInfo.setState(UserInfo.STATE_FORBIDDEN);
|
| | | currentInfo.setStateDesc(reason);
|
| | | userInfoService.updateByPrimaryKeySelective(currentInfo);
|
| | |
|
| | | // 插入记录
|
| | | userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
|
| | |
|
| | | // 加入封禁的账号列表
|
| | | ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
|
| | | forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId);
|
| | | forbiddenUserIdentifyCode.setIdentifyCode(currentInfo.getWxUnionId());
|
| | | forbiddenUserIdentifyCode.setBeiZhu(currentInfo.getWxName());
|
| | | try {
|
| | | forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
|
| | | } catch (ForbiddenUserIdentifyCodeException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | // 电话号码
|
| | | forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
|
| | | forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.phone);
|
| | | forbiddenUserIdentifyCode.setIdentifyCode(currentInfo.getPhone());
|
| | | try {
|
| | | forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
|
| | | } catch (ForbiddenUserIdentifyCodeException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | // 淘宝
|
| | | UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(uid);
|
| | | if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
|
| | | forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
|
| | | forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid);
|
| | | forbiddenUserIdentifyCode.setIdentifyCode(taoBao.getTaoBaoUid());
|
| | | try {
|
| | | forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
|
| | | } catch (ForbiddenUserIdentifyCodeException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | // 查询支付宝绑定
|
| | | List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(uid);
|
| | | if (list != null) {
|
| | | for (BindingAccount ba : list) {
|
| | | forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
|
| | | forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount);
|
| | | forbiddenUserIdentifyCode.setIdentifyCode(ba.getAccount());
|
| | | forbiddenUserIdentifyCode.setBeiZhu(ba.getName());
|
| | | try {
|
| | | forbiddenUserIdentifyCodeService.forbiddenIdentifyCode(forbiddenUserIdentifyCode);
|
| | | } catch (ForbiddenUserIdentifyCodeException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void forbiddenUser(Long uid, String reason) {
|
| | | UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
| | | if (currentInfo == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | |
|
| | | currentInfo.setState(UserInfo.STATE_FORBIDDEN);
|
| | | currentInfo.setStateDesc(reason);
|
| | | userInfoService.updateByPrimaryKeySelective(currentInfo);
|
| | |
|
| | | // 插入记录
|
| | | userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void DeleteUser(Long uid, String reason) {
|
| | | UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
| | | if (currentInfo == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | |
|
| | | currentInfo.setState(UserInfo.STATE_DELETE);
|
| | | currentInfo.setStateDesc(reason);
|
| | | userInfoService.updateByPrimaryKeySelective(currentInfo);
|
| | | // 插入记录
|
| | | userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE, reason);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void DeleteUserOutOfDate(Long uid, String reason) {
|
| | | UserInfo currentInfo = userInfoService.selectByPKey(uid);
|
| | | if (currentInfo == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
|
| | | return;
|
| | | }
|
| | |
|
| | | currentInfo.setState(UserInfo.STATE_DELETE_OUT_OF_DATE);
|
| | | currentInfo.setStateDesc(reason);
|
| | | userInfoService.updateByPrimaryKeySelective(currentInfo);
|
| | | // 插入记录
|
| | | userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_DELETE_OUT_OF_DATE, reason);
|
| | | }
|
| | | }
|