无关风月
2024-11-09 8ccb2603009768c366f197d23ad9840811100cd2
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserController.java
@@ -6,13 +6,17 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.constant.CacheConstants;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.exception.ServiceException;
import com.xinquan.common.core.utils.WebUtils;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.CollUtils;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.core.web.domain.BaseModel;
import com.xinquan.common.redis.service.RedisService;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.course.api.domain.Course;
@@ -114,10 +118,35 @@
    private RemoteOrderService remoteOrderService;
    @Resource
    private RemoteUserService remoteUserService;
    @GetMapping("/getUserByPhone/{phone}")
    public R<AppUser> getUserByPhone(@PathVariable("phone")String phone) {
        AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone).ne(AppUser::getUserStatus, 3)
                .one();
        return R.ok(one);
    }
    @GetMapping("/getAllUserList")
    public R<List<AppUser>> getAllUserList() {
        List<AppUser> list = appUserService.list();
        return R.ok(list);
    }
    @PostMapping("/bindVx")
    @ApiOperation(value = "绑定微信号", tags = "个人中心")
    public R bindVx(String openId,String wxName) {
        LoginUser loginUser = tokenService.getLoginUser();
        if (loginUser==null){
            return R.tokenError("登录失效");
        }
        AppUser byId = appUserService.getById(loginUser.getUserid());
        AppUser one = appUserService.lambdaQuery().eq(AppUser::getWxOpenId, openId)
                .isNotNull(AppUser::getCellPhone)
                .ne(AppUser::getUserStatus, 3).one();
        if (one!=null){
            return R.fail("当前微信号已绑定其他账号");
        }
        byId.setWxOpenId(openId);
        byId.setWxName(wxName);
        appUserService.updateById(byId);
        return R.ok();
    }
    public static void main(String[] args) {
        // 获取当前年份
@@ -268,105 +297,7 @@
        stringBuilder.append(year);
        return R.ok(stringBuilder.toString());
    }
//    public static void main(String[] args) {
//        // 收件人电子邮箱,TODO 换成自己的收件箱
//        String to = "443237572@qq.com";
//        // 发件人电子邮箱,TODO 换成自己的发件箱
//        String from = "13281306557@163.com";
//        // 指定发送邮件的主机为
//        String host = "smtp.163.com";
//        Properties properties = new Properties();
//        // 设置邮件服务器
//        properties.setProperty("mail.smtp.host", host);
//        // 邮件发送协议
//        properties.setProperty("mail.transport.protocol", "smtp");
//        //是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
//        properties.setProperty("mail.debug","true");
//        properties.setProperty("mail.smtp.auth", "true");
//        // 获取默认session对象
//        Session session = Session.getDefaultInstance(properties,new Authenticator(){
//            @Override
//            public PasswordAuthentication getPasswordAuthentication()
//            {
//                //发件人邮件用户名、授权码,换成自己的发件箱及授权码
//                return new PasswordAuthentication("13281306557@163.com", "NUSdxDQqadYvVek2");
//            }
//        });
//
//        try{
//            // 创建默认的 MimeMessage 对象
//            MimeMessage message = new MimeMessage(session);
//            // Set From,设置发件人
//            InternetAddress fromMail = new InternetAddress(from);
//            //设置发件人名称,TODO 换成自己的发件箱
//            fromMail.setPersonal(MimeUtility.encodeText("明星电力<13281306557@163.com>"));
//            message.setFrom(fromMail);
//            // Set To: 设置收件人
//            InternetAddress toMail = new InternetAddress(to);
//            // TODO 换成自己的收件箱
//            InternetAddress toMail2 = new InternetAddress("443237572@qq.com");
//            //发一个邮箱
////            message.setRecipient(Message.RecipientType.TO, toMail);
//            //发多个邮箱
//            Address[] allRecipients = {toMail, toMail2};
//            message.setRecipients(Message.RecipientType.TO, allRecipients);
//            // Set Subject: 邮件主体
//            message.setSubject("明星电力");
//            // 设置消息体
//            message.setSentDate(new Date());
//            // 指定为混合关系
//            MimeMultipart msgMultipart = new MimeMultipart("mixed");
//            message.setContent(msgMultipart);
//            // 邮件信息组装
//            //组装的顺序非常重要,一定要先组装文本域,再组装文件
//            MimeBodyPart htmlPart = new MimeBodyPart();
//            // 组装内容
//            htmlPart.setContent("This is message content", "text/html;charset=UTF-8");
//            msgMultipart.addBodyPart(htmlPart);
//            // 组装附件
//            MimeBodyPart filePart = new MimeBodyPart();
//            String imageUrl = "https://xqgwzh.obs.cn-south-1.myhuaweicloud.com/xinquan/b176cf9af35d4773a276e55b7afe3b63.mp4";
//            try {
//                // 下载数据
//                URL url = new URL(imageUrl);
//                InputStream inputStream = url.openStream();
//                byte[] imageBytes = IOUtils.toByteArray(inputStream);
//                // 创建临时文件
//                // 截取imageUrl后缀名
//                String fileExtension = imageUrl.substring(imageUrl.lastIndexOf("."));
//                File tempFile = File.createTempFile("tempImage", fileExtension);
//                try (FileOutputStream fos = new FileOutputStream(tempFile)) {
//                    fos.write(imageBytes);
//                }
//                // 创建 FileDataSource
//                FileDataSource fileDataSource = new FileDataSource(tempFile);
//                System.out.println("FileDataSource created: " + fileDataSource.getName());
//                // 如果需要,可以使用 DataHandler 进行进一步处理
//                DataHandler dh = new DataHandler(fileDataSource);
//                // 清理:删除临时文件(如果不再需要)
//                 tempFile.deleteOnExit(); // 可根据需要保留或删除
////                DataHandler dh = new DataHandler(dataSource);
//                filePart.setDataHandler(dh);
//                // 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码
//                filePart.setFileName(MimeUtility.encodeText(dh.getName()));
//                msgMultipart.addBodyPart(filePart);
//
//                message.saveChanges();
//                //发送
//                //Transport.send(message, message.getAllRecipients());
//                Transport.send(message);
//                System.out.println("Sent mail successfully....");
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            //TODO 换成自己的附件地址
//
//        }catch (MessagingException | UnsupportedEncodingException mex) {
//            mex.printStackTrace();
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//    }
    @PostMapping("/userDetail")
    @ApiOperation(value = "用户详情-基础信息", tags = "管理后台-用户管理")
@@ -380,23 +311,11 @@
        }else{
            byId.setIsVip(1);
        }
        List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, byId.getId())
                .list();
        // 查询用户等级最高的那颗树苗
        AppUserTree tree = list1.stream().max((o1, o2) -> {
            if (o1.getTreeLevelType() > o2.getTreeLevelType()) {
                return 1;
            } else if (o1.getTreeLevelType() < o2.getTreeLevelType()) {
                return -1;
            } else {
                return 0;
            }
        }).orElse(null);
        AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, uid)
                .eq(AppUserTree::getSowAgain,2)
                .one();
        // 查询疗愈等级 名称 图标
        int level = 1;
        if (tree != null){
            level = tree.getTreeLevelType();
        }
        int level = list1.getTreeLevelType();
        // 根据等级查询疗愈名称和图标
        UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData();
        byId.setLevel(level);
@@ -1067,8 +986,33 @@
            return R.tokenError("登录失效");
        }
        Long userId = loginUser.getUserid();
        // 校验验证码
        if (!verifyCaptcha(phone, code,
                CacheConstants.APP_CHANGE_PHONE_CODE_PREFIX)) {
            throw new ServiceException("验证码不正确");
        }
        AppUser byId = appUserService.getById(userId);
        byId.setCellPhone(phone);
        boolean b = appUserService.updateById(byId);
        return R.ok();
    }
    @Autowired
    private RedisService redisService;
    private boolean verifyCaptcha(String cellPhone, String captcha, String keyPrefix) {
        if (com.xinquan.common.core.utils.StringUtils.isNotBlank(cellPhone) && com.xinquan.common.core.utils.StringUtils.isNotBlank(captcha)) {
            String key = keyPrefix + cellPhone;
            String code = redisService.getCacheObject(key);
            // 万能验证码
            if (captcha.equals("123456") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
                    captcha))) {
                redisService.deleteObject(key);
                return true;
            }
        }
        return false;
    }
    @PostMapping("/deleteUser")
    @ApiOperation(value = "注销账号", tags = {"设置"})
@@ -1346,22 +1290,13 @@
            currentDate = currentDate.minusDays(1);
        }
        appUserInfoVO.setToday(consecutiveDays);
        List<AppUserTree> list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                .list();
        // 查询用户等级最高的那颗树苗
        AppUserTree tree = list1.stream().max((o1, o2) -> {
            if (o1.getTreeLevelType() > o2.getTreeLevelType()) {
                return 1;
            } else if (o1.getTreeLevelType() < o2.getTreeLevelType()) {
                return -1;
            } else {
                return 0;
            }
        }).orElse(null);
        AppUserTree list1 = appUserTreeService.lambdaQuery().eq(AppUserTree::getAppUserId, userId)
                .eq(AppUserTree::getSowAgain,2)
                .one();
        // 查询疗愈等级 名称 图标
        int level = 1;
        if (tree != null){
            level = tree.getTreeLevelType();
        if (list1 != null){
            level = list1.getTreeLevelType();
        }
        appUserInfoVO.setLevel(level);
        // 根据等级查询疗愈名称和图标
@@ -1431,6 +1366,7 @@
            consecutiveDays++;
            currentDate = currentDate.minusDays(1);
        }
        appUser.setContinuity(consecutiveDays);
        appUser.setToday(consecutiveDays);
        // 根据等级查询疗愈名称和图标
        UserLevelSetting data = remoteBannerService.getIconNameByLevel(level).getData();
@@ -1603,13 +1539,19 @@
    @PostMapping("/getUserByPhone")
    @ApiOperation(value = "根据用户手机号查询用户信息")
    public R<AppUserDetailVO> getCurrentUser(String phone) {
        AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone).one();
        AppUserDetailVO appUserDetailVO = new AppUserDetailVO();
        appUserDetailVO.setId(one.getId());
        appUserDetailVO.setCellPhone(one.getCellPhone());
        appUserDetailVO.setAvatar(one.getAvatar());
        appUserDetailVO.setNickname(one.getNickname());
        return R.ok(appUserDetailVO);
        AppUser one = appUserService.lambdaQuery().eq(AppUser::getCellPhone, phone)
                .ne(AppUser::getUserStatus,3).one();
        if (one!=null){
            AppUserDetailVO appUserDetailVO = new AppUserDetailVO();
            appUserDetailVO.setId(one.getId());
            appUserDetailVO.setCellPhone(one.getCellPhone());
            appUserDetailVO.setAvatar(one.getAvatar());
            appUserDetailVO.setNickname(one.getNickname());
            return R.ok(appUserDetailVO);
        }else {
            return R.fail("未查询到账户信息");
        }
    }
    @PostMapping("/getUserBalance")
    @ApiOperation(value = "查询当前用户余额")