yujian
2019-07-16 810d27d204e9b993840cf789e77e6bd301d0c1b7
Merge remote-tracking branch 'origin/master'
3个文件已修改
196 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java
@@ -62,6 +62,7 @@
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONObject;
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -57,6 +57,9 @@
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 {
@@ -66,7 +69,7 @@
    @Resource
    private UserInfoMapper userInfoMapper;
    @Resource
    private UserInfoService userInfoService;
@@ -99,10 +102,12 @@
    @Resource
    private UserAccountBindingHistoryService userAccountBindingHistoryService;
    @Resource
    private UserInfoDeleteRecordService userInfoDeleteRecordService;
    @Resource
    private JedisPool jedisPool;
    @Transactional
    @Override
@@ -548,8 +553,7 @@
        int addCount = 0;
        userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
        userInfoDeleteRecordService.addDeleteRecord(lessUser.getId(), UserInfo.STATE_DELETE, "删除:账号被打通删除");
    }
@@ -671,6 +675,7 @@
    @Override
    public void addUser(UserInfo user) {
        Long maxUid = userInfoMapper.getMaxUid();
        if (maxUid == null)
            maxUid = 100000L;
@@ -698,7 +703,6 @@
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
@@ -952,6 +956,8 @@
            if (!Constant.IS_TEST)
                if (StringUtil.isNullOrEmpty(oldVcode) || !oldVcode.equalsIgnoreCase(vcode)) {
                    throw new UserAccountException(1, "验证码错误,重新输入");
                } else {// 验证码输入正确
                    redisManager.clearSMSVCode(phone, SMSHistory.TYPE_LOGIN);
                }
        }
@@ -973,31 +979,51 @@
        // 清理次数
        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.unwatch();
            jedisPool.returnResource(jedis);
        }
        return userInfo;
        throw new UserAccountException(10, "请稍后再试");
    }
    @Transactional
@@ -1025,39 +1051,61 @@
            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.unwatch();
            jedisPool.returnResource(jedis);
        }
        return userInfo;
        throw new UserAccountException(10, "请稍后再试");
    }
    /**
@@ -1182,8 +1230,6 @@
        userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
    }
    @Override
    public void forbiddenUserAll(Long uid, String reason) {
        UserInfo currentInfo = userInfoService.selectByPKey(uid);
@@ -1197,7 +1243,7 @@
        currentInfo.setState(UserInfo.STATE_FORBIDDEN);
        currentInfo.setStateDesc(reason);
        userInfoService.updateByPrimaryKeySelective(currentInfo);
        // 插入记录
        userInfoDeleteRecordService.addDeleteRecord(uid, UserInfo.STATE_FORBIDDEN, reason);
@@ -1251,15 +1297,14 @@
            }
        }
    }
    @Override
    public void forbiddenUser(Long uid, String reason) {
        UserInfo currentInfo = userInfoService.selectByPKey(uid);
        if (currentInfo == null) {
            return;
        }
        if (currentInfo.getState() != UserInfo.STATE_NORMAL) {
            return;
        }
@@ -1267,19 +1312,18 @@
        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;
        }
@@ -1290,15 +1334,14 @@
        // 插入记录
        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;
        }
fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java
@@ -388,8 +388,6 @@
     */
    public void saveSMSVCode(String phone, int type, String code) {
        if (!Constant.IS_OUTNET)
            return;
        String key = "smscode-" + phone + "-" + type;
        // 保存2分钟
        setString(key, code, 120);
@@ -402,8 +400,8 @@
     * @return
     */
    public String getSMSVCode(String phone, int type) {
        if (!Constant.IS_OUTNET)
            return "";
//        if (!Constant.IS_OUTNET)
//            return "";
        String key = "smscode-" + phone + "-" + type;
        // 保存2分钟
        return getString(key);
@@ -417,8 +415,8 @@
     * @param code
     */
    public void clearSMSVCode(String phone, int type) {
        if (!Constant.IS_OUTNET)
            return;
//        if (!Constant.IS_OUTNET)
//            return;
        String key = "smscode-" + phone + "-" + type;
        removeKey(key);
    }