puzhibing
2022-08-31 c257996813629f5d4ddd2103e5306da3531ada16
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -119,7 +119,6 @@
                sb.append((int) (random.nextDouble() * 10));
            }
            String authCode = sb.toString();
            authCode="1234";
            String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!";
            //发送验证码短信
@@ -468,6 +467,7 @@
        loginWarpper.setToken(token);
        loginWarpper.setAppid(UUIDUtil.getRandomCode());
        loginWarpper.setPhone(ToolUtil.isNotEmpty(userInfo.getPhone()) ? 2 : 1);
        loginWarpper.setEmail(ToolUtil.isNotEmpty(userInfo.getEmail()) ? 2 : 1);
        loginWarpper.setEmergencyContact(userInfo.getEmergencyContact());
        loginWarpper.setEmergencyContactNumber(userInfo.getEmergencyContactNumber());
        if(uid!=null){
@@ -537,8 +537,114 @@
        loginWarpper.setToken(token);
        loginWarpper.setAppid(UUIDUtil.getRandomCode());
        loginWarpper.setPhone(ToolUtil.isNotEmpty(userInfo.getPhone()) ? 2 : 1);
        loginWarpper.setEmail(ToolUtil.isNotEmpty(userInfo.getEmail()) ? 2 : 1);
        loginWarpper.setEmergencyContact(userInfo.getEmergencyContact());
        loginWarpper.setEmergencyContactNumber(userInfo.getEmergencyContactNumber());
        return ResultUtil.success(loginWarpper);
    }
    @Override
    public ResultUtil facebookLogin(String id, String name, String email, String registAreaCode, Integer uid) throws Exception {
        UserInfo userInfo = this.selectOne(new EntityWrapper<UserInfo>().eq("faceBookId", id).ne("flag", 3));
        if(null == userInfo){
            userInfo = new UserInfo();
            userInfo.setEmail(email);
            userInfo.setNickName(name);
            userInfo.setIsAuth(1);
            userInfo.setConsumption(0D);
            userInfo.setBalance(0D);
            userInfo.setIntegral(0);
            userInfo.setPassWord(ShiroKit.md5("", salt));
            userInfo.setFaceBookId(id);
            userInfo.setState(1);
            userInfo.setFlag(1);
            userInfo.setInsertTime(new Date());
            userInfo.setFreeMoney(new BigDecimal(0));
            Double money = this.userInfoMapper.queryFreeMOney();
            if(money!=null){
                userInfo.setFreeMoney(BigDecimal.valueOf(money));
            }
            if(null!=uid){
                userInfo.setUid(uid);
                //微信登录只能是乘客用户分享
                userInfo.setuType(1);
            }
            //用户所属企业
            if(null != registAreaCode){
                Company query = companyCityService.query(registAreaCode);
                userInfo.setCompanyId(null != query ? query.getId() : null);
                userInfo.setRegistAreaCode(registAreaCode);
            }
            this.insert(userInfo);
            this.addCoupon(userInfo);//添加优惠券
            UserInfo finalUserInfo = userInfo;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    if(pushMinistryOfTransport){
                        //上传数据
                        pushMinistryOfTransportUtil.baseInfoPassenger(finalUserInfo.getId());
                    }
                }
            }).start();
        }
        if(userInfo.getState() == 2){
            return ResultUtil.error("账号被冻结");
        }
        //调用单点登录的逻辑
        this.singlePointLogin(userInfo.getId());
        String token = this.getToken(userInfo, "");
        LoginWarpper loginWarpper = new LoginWarpper();
        loginWarpper.setId(userInfo.getId());
        loginWarpper.setToken(token);
        loginWarpper.setAppid(UUIDUtil.getRandomCode());
        loginWarpper.setPhone(ToolUtil.isNotEmpty(userInfo.getPhone()) ? 2 : 1);
        loginWarpper.setEmail(ToolUtil.isNotEmpty(userInfo.getEmail()) ? 2 : 1);
        loginWarpper.setEmergencyContact(userInfo.getEmergencyContact());
        loginWarpper.setEmergencyContactNumber(userInfo.getEmergencyContactNumber());
        if(uid!=null){
            userInfo = userInfoMapper.selectById(uid);
            List<Map<String, Object>> query = userActivityInviteMapper.query(userInfo.getCompanyId());
            Date date = new Date();
            for(Map<String, Object> map : query){
                Double lavePrice = Double.valueOf(map.get("lavePrice").toString());
                for(int i = Integer.valueOf(String.valueOf(map.get("totalNum"))); i > 0; i--){
                    //判断当前优惠券金额是否大于可发放剩余总金额
                    if(Double.valueOf(String.valueOf(map.get("money"))).compareTo(lavePrice) > 0){
                        break;
                    }
                    UserCouponRecord userCouponRecord = new UserCouponRecord();
                    userCouponRecord.setActivityType(3);
                    userCouponRecord.setCouponActivityId(Integer.valueOf(String.valueOf(map.get("id"))));
                    userCouponRecord.setCouponId(Integer.valueOf(String.valueOf(map.get("couponId"))));
                    userCouponRecord.setState(1);
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTime(date);
                    calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + Integer.valueOf(String.valueOf(map.get("effective"))));
                    userCouponRecord.setExpirationTime(calendar.getTime());
                    userCouponRecord.setCouponType(Integer.valueOf(String.valueOf(map.get("couponType"))));
                    userCouponRecord.setCouponUseType(Integer.valueOf(String.valueOf(map.get("couponUseType"))));
                    userCouponRecord.setInsertTime(date);
                    userCouponRecord.setFullMoney(Double.valueOf(String.valueOf(map.get("fullMoney"))));
                    userCouponRecord.setMoney(Double.valueOf(String.valueOf(map.get("money"))));
                    userCouponRecord.setCompanyId(userInfo.getCompanyId());
                    userCouponRecord.setUserId(uid);
                    userCouponRecordService.insert(userCouponRecord);
                    //修改剩余可发放总金额
                    lavePrice -= Double.valueOf(String.valueOf(map.get("money")));
                }
                UserActivityInvite uai = userActivityInviteMapper.selectById(Integer.valueOf(map.get("id").toString()));
                uai.setLavePrice(new BigDecimal(lavePrice).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                userActivityInviteMapper.updateById(uai);
            }
        }
        return ResultUtil.success(loginWarpper);
    }
@@ -628,6 +734,7 @@
            loginWarpper.setToken(token);
            loginWarpper.setAppid(UUIDUtil.getRandomCode());
            loginWarpper.setPhone(2);
            loginWarpper.setEmail(2);
            return ResultUtil.success(loginWarpper);
        }
@@ -640,6 +747,67 @@
        return ResultUtil.success(new LoginWarpper());
    }
    @Override
    public ResultUtil bindingEmail(Integer uid, Integer type, String email, String code) throws Exception {
        boolean b = this.checkCaptcha(email, code);
        if(!b){
            return ResultUtil.error("验证码无效");
        }
        UserInfo userInfo = this.selectById(uid);
        UserInfo userInfo1 = userInfoMapper.queryByEmail(email);
        if(null != userInfo1){
            userInfo1.setOpenId(userInfo.getOpenId());
            userInfo1.setUnionid(userInfo.getUnionid());
            userInfo1.setAppletsOpenId(userInfo.getAppletsOpenId());
            userInfo1.setAvatar(userInfo.getAvatar());
            userInfo1.setSex(userInfo.getSex());
            userInfo1.setNickName(userInfo.getNickName());
            this.updateById(userInfo1);
            this.deleteById(userInfo.getId());//删除原有数据
            //还原之前账号领取的注册优惠券
            List<UserCouponRecord> list = userCouponRecordService.selectList(new EntityWrapper<UserCouponRecord>().eq("userId", userInfo.getId()));
            for(UserCouponRecord ucr : list){
                if(ucr.getActivityType() == 1){//赠送
                }
                if(ucr.getActivityType() == 2){//注册
                    UserActivityRegistered userActivityRegistered = userActivityRegisteredService.selectById(ucr.getCouponActivityId());
                    userActivityRegistered.setLaveNum(userActivityRegistered.getLaveNum() + 1);
                    userActivityRegistered.setLavePrice(userActivityRegistered.getLavePrice() + ucr.getMoney());
                    userActivityRegisteredService.updateById(userActivityRegistered);
                }
                if(ucr.getActivityType() == 3){//邀请
                }
                if(ucr.getActivityType() == 4){//充值
                }
                userCouponRecordService.deleteById(ucr.getId());
            }
            //获取新的token等数据
            String token = this.getToken(userInfo1, "");
            LoginWarpper loginWarpper = new LoginWarpper();
            loginWarpper.setId(userInfo1.getId());
            loginWarpper.setToken(token);
            loginWarpper.setAppid(UUIDUtil.getRandomCode());
            loginWarpper.setPhone(2);
            loginWarpper.setEmail(2);
            return ResultUtil.success(loginWarpper);
        }
        userInfo.setEmail(email);
        userInfo.setUpdateTime(new Date());
        userInfo.setUpdateUser(userInfo.getId());
        this.updateById(userInfo);
        if(type == 1){//注册成功后发送邮件
            EmailUtil.getMimeMessage(email, "注册账户", "");
        }
        return ResultUtil.success(new LoginWarpper());
    }
    /**
     * 从redis中获取数据
@@ -784,6 +952,8 @@
        UserInfo userInfo = this.selectById(uid);
        userInfo.setPassWord(ShiroKit.md5(password, salt));
        this.updateById(userInfo);
        //发送邮件
        EmailUtil.getMimeMessage(userInfo.getEmail(), "修改密码", "");
        return ResultUtil.success();
    }