无关风月
2025-01-01 ca070436770f715572405880cfe548c02f639c73
代码修改
22个文件已修改
940 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CallBackController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommitteeController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TConsultationController.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TConsultationMessageController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCourseCommentController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCourseController.java 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDeclareNoticeController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TGeneratedRecordsController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInformationController.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderController.java 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TRegionController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTechnicalTitleController.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTitleMajorController.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WebController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIndexMenuServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTechnicalTitleServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TOrderMapper.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/CallBackController.java
@@ -57,11 +57,11 @@
    public R alipayCallback(Long orderId) throws AlipayApiException {
//            String outTradeNo = stringStringMap.get("out_trade_no");
            TOrder one = orderService.getById(orderId);
        Boolean check = AlipayTradeQuery.check(one.getCode());
            TOrder order = orderService.getById(orderId);
        Boolean check = AlipayTradeQuery.check(order.getCode());
        if (check) {
            one.setPaymentStatus(2);
            orderService.updateById(one);
            order.setPaymentStatus(2);
            orderService.updateById(order);
//            if (one.getGoodType()==1){
//                try {
//                    TCourse byId = courseService.getById(one.getGoodId());
@@ -90,18 +90,18 @@
        Transaction transaction;
        transaction = notificationParser.parse(WeChatUtil.handleNodifyRequestParam(request), Transaction.class);
        if (transaction.getTradeState() == Transaction.TradeStateEnum.SUCCESS) {
                    TOrder one = orderService.lambdaQuery().eq(TOrder::getCode, transaction.getOutTradeNo()).one();
                    one.setPaymentStatus(2);
                    one.setSerialNumber(transaction.getTransactionId());
            one.setPayTime(LocalDateTime.now());
                    TOrder order = orderService.lambdaQuery().eq(TOrder::getCode, transaction.getOutTradeNo()).one();
                    order.setPaymentStatus(2);
                    order.setSerialNumber(transaction.getTransactionId());
            order.setPayTime(LocalDateTime.now());
            one.setPaymentType(1);
            orderService.updateById(one);
            if (one.getGoodType()==1){
            order.setPaymentType(1);
            orderService.updateById(order);
            if (order.getGoodType()==1){
                try {
                    TCourse byId = courseService.getById(one.getGoodId());
                    byId.setBuyNum(byId.getBuyNum()+1);
                    courseService.updateById(byId);
                    TCourse course = courseService.getById(order.getGoodId());
                    course.setBuyNum(course.getBuyNum()+1);
                    courseService.updateById(course);
                }catch (Exception e){
                    e.printStackTrace();
                }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TAppUserController.java
@@ -38,6 +38,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -134,8 +135,8 @@
    public R regis(@RequestBody RegisterDto registerDto)
    {
        TAppUser one = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one();
        if (one!=null){
        TAppUser tAppUser = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one();
        if (tAppUser!=null){
            return R.fail("当前手机号已注册");
        }
        String cacheObject = redisCache.getCacheObject(registerDto.getPhone());
@@ -191,7 +192,7 @@
    public R changephone(@RequestParam String newPhone,@RequestParam String code)
    {
        Long userId = tokenService.getLoginUser().getUserId();
        TAppUser byId = appUserService.getById(userId);
        TAppUser appUser = appUserService.getById(userId);
        String cacheObject = redisCache.getCacheObject(newPhone);
@@ -200,8 +201,8 @@
        }
        if (redisCache.getCacheObject(newPhone).equals(code)){
            byId.setPhone(newPhone);
            appUserService.updateById(byId);
            appUser.setPhone(newPhone);
            appUserService.updateById(appUser);
            return R.ok();
        }else{
            return R.fail("验证码错误");
@@ -214,15 +215,15 @@
    public R forget(@RequestBody RegisterDto registerDto)
    {
        TAppUser one = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one();
        TAppUser appUser = appUserService.lambdaQuery().eq(TAppUser::getPhone, registerDto.getPhone()).one();
        String cacheObject = redisCache.getCacheObject(one.getPhone());
        String cacheObject = redisCache.getCacheObject(appUser.getPhone());
        if (!registerDto.getCode().equals("123456")&&!cacheObject.equals(registerDto.getCode())){
            return R.fail("验证码错误");
        }
        if (registerDto.getCode().equals("123456") || redisCache.getCacheObject(registerDto.getPhone()).equals(registerDto.getCode())) {
            one.setPassword(SecurityUtils.encryptPassword(registerDto.getPwd()));
            appUserService.updateById(one);
            appUser.setPassword(SecurityUtils.encryptPassword(registerDto.getPwd()));
            appUserService.updateById(appUser);
        }else {
            return R.fail("验证码错误");
        }
@@ -259,21 +260,21 @@
        }else if (lateIds.size()>0){
            finalIds = lateIds;
        }
        LocalDateTime time1 = LocalDateTime.now();
        LocalDateTime time2 = LocalDateTime.now();
        LocalDateTime startTime = LocalDateTime.now();
        LocalDateTime endTime = LocalDateTime.now();
        if (appUserQuery.getCreateTime1() != null){
            time1 = appUserQuery.getCreateTime1().atStartOfDay();
            startTime = appUserQuery.getCreateTime1().atStartOfDay();
        }
        if (appUserQuery.getCreateTime2() != null){
            time2 = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999);
            endTime = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999);
        }
        Page<TAppUser> page = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName())
                .like(appUserQuery.getPhone() != null, TAppUser::getPhone, appUserQuery.getPhone())
                .eq(appUserQuery.getStatus() != null, TAppUser::getStatus, appUserQuery.getStatus())
                .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime,time1)
                .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime,time2)
                .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime,startTime)
                .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime,endTime)
                .in(finalIds.size() > 0, TAppUser::getId, finalIds)
                .orderByDesc(TAppUser::getCreateTime)
                .page(Page.of(appUserQuery.getPageNum(), appUserQuery.getPageSize()));
@@ -309,11 +310,11 @@
            }
            String join = StringUtils.join(newString, "、");
            record.setNewString(join);
            String endLike = StringUtils.join(newString, "、");
            record.setNewString(endLike);
            String join1 = StringUtils.join(lateString, "、");
            record.setLateString(join1);
            String firstLike = StringUtils.join(lateString, "、");
            record.setLateString(firstLike);
        }
        return R.ok(page);
@@ -323,9 +324,9 @@
    @ApiOperation(value = "解冻",tags = "后台-用户管理")
    @PostMapping(value = "/unfreeze")
    public R unfreeze(Long id){
       TAppUser byId = appUserService.getById(id);
        byId.setStatus(1);
        appUserService.updateById(byId);
       TAppUser appUser = appUserService.getById(id);
        appUser.setStatus(1);
        appUserService.updateById(appUser);
        return R.ok();
    }
@@ -333,24 +334,24 @@
    @PostMapping(value = "/info")
    public R<TAppUser> info(){
        Long userId = tokenService.getLoginUser().getUserId();
        TAppUser byId = appUserService.getById(userId);
        TAppUser appUser = appUserService.getById(userId);
        Object cacheObject = redisCache.getCacheObject("CITY:" + userId);
        byId.setCityStr(cacheObject);
        return R.ok(byId);
        appUser.setCityStr(cacheObject);
        return R.ok(appUser);
    }
    @ApiOperation(value = "冻结",tags = "后台-用户管理")
    @PostMapping(value = "/freeze")
    public R freeze(@RequestBody FreezeDto freezeDto){
        TAppUser byId = appUserService.getById(freezeDto.getId());
        byId.setStatus(2);
        byId.setRemark(freezeDto.getReason());
        TAppUser appUser = appUserService.getById(freezeDto.getId());
        appUser.setStatus(2);
        appUser.setRemark(freezeDto.getReason());
        Long userId = tokenService.getLoginUser().getUserId();
        SysUser sysUser = sysUserService.selectUserById(userId);
        byId.setEditName(sysUser.getNickName());
        byId.setEditTime(LocalDateTime.now());
        appUserService.updateById(byId);
        appUser.setEditName(sysUser.getNickName());
        appUser.setEditTime(LocalDateTime.now());
        appUserService.updateById(appUser);
        return R.ok();
    }
@@ -392,35 +393,43 @@
        }else if (lateIds.size()>0){
            finalIds = lateIds;
        }
        LocalDateTime time1 = LocalDateTime.now();
        LocalDateTime time2 = LocalDateTime.now();
        LocalDateTime startTime = LocalDateTime.now();
        LocalDateTime endTime = LocalDateTime.now();
        if (appUserQuery.getCreateTime1() != null){
            time1 = appUserQuery.getCreateTime1().atStartOfDay();
            startTime = appUserQuery.getCreateTime1().atStartOfDay();
        }
        if (appUserQuery.getCreateTime2() != null){
            time2 = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999);
            endTime = appUserQuery.getCreateTime2().atTime(23, 59, 59, 999999999);
        }
        Page<TAppUser> page = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName())
        List<TAppUser> page = appUserService.lambdaQuery().like(appUserQuery.getName() != null, TAppUser::getName, appUserQuery.getName())
                .like(appUserQuery.getPhone() != null, TAppUser::getPhone, appUserQuery.getPhone())
                .eq(appUserQuery.getStatus() != null, TAppUser::getStatus, appUserQuery.getStatus())
                .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime, time1)
                .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime, time2)
                .in(finalIds.size() > 0, TAppUser::getId, finalIds)
                .page(Page.of(1, 999999999));
        for (TAppUser record : page.getRecords()) {
                .ge(appUserQuery.getCreateTime1() != null, TAppUser::getCreateTime, startTime)
                .le(appUserQuery.getCreateTime2() != null, TAppUser::getCreateTime, endTime)
                .in(finalIds.size() > 0, TAppUser::getId, finalIds).list()
                ;
        List<Long> collect = page.stream().map(TAppUser::getId).collect(Collectors.toList());
        Map<Long, TUserChange> collect1 = tUserChangeService.lambdaQuery()
                .in(TUserChange::getUserId, collect).orderByDesc(TUserChange::getCreateTime).list()
                .stream().collect(Collectors.toMap(TUserChange::getUserId, Function.identity(), (existing, replacement) -> existing));
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TLevel> levels = levelService.lambdaQuery().list();
        for (TAppUser record : page) {
            List<String> newString = new ArrayList<>();
            //拿到最新的change
            TUserChange newest = tUserChangeService.lambdaQuery().eq(TUserChange::getUserId,record.getId()).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
//            TUserChange newest = tUserChangeService.lambdaQuery().eq(TUserChange::getUserId,record.getId()).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
            TUserChange newest = collect1.get(record.getId());
            if (newest!=null){
                List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, newest.getId()).list();
                for (TUserChangeDetail tUserChangeDetail : list) {
                    TRegion byId = regionService.getById(tUserChangeDetail.getRegionId());
                    TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId());
                    TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId());
                    TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId());
                    newString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName());
                    TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null);
                    TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null);
                    TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null);
                    TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null);
                    newString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName());
                }
            }
@@ -431,20 +440,20 @@
            if (latest!=null){
                List<TUserChangeDetail> list = tUserChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, latest.getId()).list();
                for (TUserChangeDetail tUserChangeDetail : list) {
                    TRegion byId = regionService.getById(tUserChangeDetail.getRegionId());
                    TTechnicalTitle byId1 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId());
                    TTitleMajor byId2 = majorService.getById(tUserChangeDetail.getMajorId());
                    TLevel byId3 = levelService.getById(tUserChangeDetail.getLevelId());
                    lateString.add(byId.getName()+"-"+byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName());
                    TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null);
                    TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null);
                    TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null);
                    TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null);
                    lateString.add(region.getName()+"-"+tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName());
                }
            }
            String join = StringUtils.join(newString, "、");
            record.setNewString(join);
            String end = StringUtils.join(newString, "、");
            record.setNewString(end);
            String join1 = StringUtils.join(lateString, "、");
            record.setLateString(join1);
            String first = StringUtils.join(lateString, "、");
            record.setLateString(first);
            record.setCreateTimeStr(DateUtils.localDateTimeToString(record.getCreateTime()));
@@ -462,7 +471,7 @@
//            tOrderMealExportExcel.setPersonCount(orderMealVO.getMealPerson());
//            orderMeals.add(tOrderMealExportExcel);
//        }
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TAppUser.class,page.getRecords() );
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TAppUser.class,page);
        HttpServletResponse response = WebUtils.response();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
@@ -494,28 +503,33 @@
    @ApiOperation(value = "详情",tags = "后台-用户管理")
    @PostMapping(value = "/detail")
    public R<TAppUser> detail(Long id){
        TAppUser byId = appUserService.getById(id);
        List<TUserChange> list = userChangeService.lambdaQuery().eq(TUserChange::getUserId, id).orderByDesc(TUserChange::getCreateTime).list();
        for (TUserChange tUserChange : list) {
            List<TUserChangeDetail> list1 = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, tUserChange.getId()).list();
            for (TUserChangeDetail tUserChangeDetail : list1) {
                TRegion byId1 = regionService.getById(tUserChangeDetail.getRegionId());
                tUserChangeDetail.setRegion(byId1.getProvinceName()+"-"+byId1.getName());
                TTechnicalTitle byId2 = tTechnicalTitleService.getById(tUserChangeDetail.getTitleId());
                tUserChangeDetail.setTitleName(byId2.getTitileName());
                TTitleMajor byId3 = majorService.getById(tUserChangeDetail.getMajorId());
                tUserChangeDetail.setMajorName(byId3.getMajorName());
                TLevel byId4 = levelService.getById(tUserChangeDetail.getLevelId());
                tUserChangeDetail.setLevelName(byId4.getName());
        TAppUser appUser = appUserService.getById(id);
        List<TUserChange> userChanges = userChangeService.lambdaQuery().eq(TUserChange::getUserId, id).orderByDesc(TUserChange::getCreateTime).list();
        List<TUserChangeDetail> tUserChangeDetails = userChangeDetailService.lambdaQuery()
                .in(TUserChangeDetail::getChangeId,userChanges.stream().map(TUserChange::getId).collect(Collectors.toList())).list();
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TLevel> levels = levelService.lambdaQuery().list();
        for (TUserChange tUserChange : userChanges) {
            for (TUserChangeDetail tUserChangeDetail : tUserChangeDetails) {
                TRegion region = regions.stream().filter(e -> e.getId().equals(tUserChangeDetail.getRegionId())).findFirst().orElse(null);
                TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tUserChangeDetail.getTitleId())).findFirst().orElse(null);
                TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tUserChangeDetail.getMajorId())).findFirst().orElse(null);
                TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tUserChangeDetail.getLevelId())).findFirst().orElse(null);
                tUserChangeDetail.setRegion(region.getProvinceName()+"-"+region.getName());
                tUserChangeDetail.setTitleName(tTechnicalTitle.getTitileName());
                tUserChangeDetail.setMajorName(tTitleMajor.getMajorName());
                tUserChangeDetail.setLevelName(tLevel.getName());
            }
            tUserChange.setUserChangeDetails(list1);
            tUserChange.setUserChangeDetails(tUserChangeDetails);
        }
        TRegion byId2 = regionService.getById(byId.getCityCode());
        if(Objects.nonNull(byId2)){
            byId.setCityStr(byId2.getProvinceName()+"-"+byId2.getName());
        TRegion region = regionService.getById(appUser.getCityCode());
        if(Objects.nonNull(region)){
            appUser.setCityStr(region.getProvinceName()+"-"+region.getName());
        }
        byId.setChanges(list);
        return R.ok(byId) ;
        appUser.setChanges(userChanges);
        return R.ok(appUser) ;
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCommitteeController.java
@@ -158,17 +158,20 @@
            }
        }
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TCommitteeTechnical> committeeTechnicals = committeeTechnicalService.lambdaQuery().list();
        List<TCommitteeMajor> committeeMajors = tCommitteeMajorService.lambdaQuery().list();
        for (TCommittee record : page.getRecords()) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            List<TCommitteeTechnical> tCommitteeTechnicals = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getCommitteeId, record.getId()).list();
            List<TCommitteeMajor> tCommitteeMajors =tCommitteeMajorService.lambdaQuery().eq(TCommitteeMajor::getCommitteeId, record.getId()).list();
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
            List<TCommitteeTechnical> tCommitteeTechnicals = committeeTechnicals.stream().filter(e -> e.getCommitteeId().equals(record.getId())).collect(Collectors.toList());
            List<TCommitteeMajor> tCommitteeMajors = committeeMajors.stream().filter(e -> e.getCommitteeId().equals(record.getId())).collect(Collectors.toList());
            record.setTCommitteeTechnicals(tCommitteeTechnicals);
            record.setTCommitteeMajors(tCommitteeMajors);
        }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TConsultationController.java
@@ -184,15 +184,19 @@
        Set<Long> cacheSet = redisCache.getCacheSet("Consultation:" + userId);
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TConsultationClassification> consultationClassifications = consultationClassificationService.lambdaQuery().list();
        for (TConsultation record : page.getRecords()) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTitleId());
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TConsultationClassification byId3 = consultationClassificationService.getById(record.getClassificationId());
            record.setTConsultationClassificationName(byId3.getConsultationName());
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTitleId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
            TConsultationClassification tConsultationClassification = consultationClassifications.stream().filter(e -> e.getId().equals(record.getClassificationId())).findFirst().orElse(null);
            record.setTConsultationClassificationName(tConsultationClassification.getConsultationName());
            if (cacheSet!=null){
                if (cacheSet.contains(record.getId())){
                    record.setIsCollect(1);
@@ -211,27 +215,27 @@
    @ApiOperation(value = "详情",tags = {"后台-咨询管理-咨询列表","web-咨询查询"})
    @PostMapping(value = "/detail")
    public R<TConsultation> detail(@RequestParam Long id ) {
        TConsultation byId = informationService.getById(id);
        byId.setWatchNum(byId.getWatchNum()+1);
        informationService.updateById(byId);
        TTechnicalTitle byId1 = tTechnicalTitleService.getById(byId.getTitleId());
        byId.setTechnicalName(byId1.getTitileName());
        TTitleMajor byId2 = majorService.getById(byId.getMajorId());
        byId.setMajorName(byId2.getMajorName());
        TLevel byId3 = levelService.getById(byId.getLevel());
        byId.setLevelName(byId3.getName());
        TRegion byId4 = regionService.getById(byId.getRegionId());
        byId.setTRegion(byId4);
        return R.ok(byId);
        TConsultation consultation = informationService.getById(id);
        consultation.setWatchNum(consultation.getWatchNum()+1);
        informationService.updateById(consultation);
        TTechnicalTitle tTechnicalTitle = tTechnicalTitleService.getById(consultation.getTitleId());
        consultation.setTechnicalName(tTechnicalTitle.getTitileName());
        TTitleMajor tTitleMajor = majorService.getById(consultation.getMajorId());
        consultation.setMajorName(tTitleMajor.getMajorName());
        TLevel level = levelService.getById(consultation.getLevel());
        consultation.setLevelName(level.getName());
        TRegion region = regionService.getById(consultation.getRegionId());
        consultation.setTRegion(region);
        return R.ok(consultation);
    }
    @ApiOperation(value = "观看",tags = {"web-咨询查询"})
    @PostMapping(value = "/watch")
    public R watch(@RequestParam Long id ) {
        TConsultation byId = informationService.getById(id);
        byId.setWatchNum(byId.getWatchNum()+1);
        informationService.updateById(byId);
        TConsultation consultation = informationService.getById(id);
        consultation.setWatchNum(consultation.getWatchNum()+1);
        informationService.updateById(consultation);
        return R.ok();
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TConsultationMessageController.java
@@ -15,6 +15,7 @@
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
/**
 * <p>
@@ -43,15 +44,17 @@
    @PostMapping("/list")
    public R<PageInfo<TConsultationMessage>> list(@RequestBody MessageQuery messageQuery){
        PageInfo<TConsultationMessage> tConsultationMessagePageInfo = consultationMessageService.pageQuery(messageQuery);
        List<TConsultation> consultations = consultationService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TLevel> levels = levelService.lambdaQuery().list();
        for (TConsultationMessage record : tConsultationMessagePageInfo.getRecords()) {
            TConsultation byId = consultationService.getById(record.getConsultationId());
            record.setTitle(byId.getClassificationName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(byId.getTitleId() );
            TTitleMajor byId2 = majorService.getById(byId.getMajorId());
            TLevel byId3 = levelService.getById(byId.getLevel());
            record.setClassName(byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName());
            TConsultation consultation = consultations.stream().filter(e -> e.getId().equals(record.getConsultationId())).findFirst().orElse(null);
            record.setTitle(consultation.getClassificationName());
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(consultation.getTitleId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(consultation.getMajorId())).findFirst().orElse(null);
            TLevel tLevel = levels.stream().filter(e -> e.getId().equals(consultation.getLevel())).findFirst().orElse(null);
            record.setClassName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName());
        }
        return R.ok(tConsultationMessagePageInfo);
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCourseCommentController.java
@@ -17,6 +17,7 @@
import javax.annotation.Resource;
import javax.naming.ldap.PagedResultsControl;
import java.util.Arrays;
import java.util.List;
/**
 * <p>
@@ -47,16 +48,18 @@
    @PostMapping("/list")
    public R<PageInfo<TCourseComment>> list(@RequestBody CommentQuery commentQuery){
        PageInfo<TCourseComment> tCourseCommentPageInfo = courseCommentService.pageQuery(commentQuery);
        List<TCourse> courses = courseService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TLevel> levels = levelService.lambdaQuery().list();
        for (TCourseComment record : tCourseCommentPageInfo.getRecords()) {
            TCourse byId = courseService.getById(record.getCourseId());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(byId.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(byId.getMajorId());
            TLevel byId3 = levelService.getById(byId.getLevel());
            record.setClassName(byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+byId3.getName());
            record.setPrice(byId.getCoursePrice());
            record.setCourseCover(byId.getCourseCover());
            TCourse tCourse = courses.stream().filter(e -> e.getId().equals(record.getCourseId())).findFirst().orElse(null);
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(tCourse.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(tCourse.getMajorId())).findFirst().orElse(null);
            TLevel tLevel = levels.stream().filter(e -> e.getId().equals(tCourse.getLevel())).findFirst().orElse(null);
            record.setClassName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName()+"-"+tLevel.getName());
            record.setPrice(tCourse.getCoursePrice());
            record.setCourseCover(tCourse.getCourseCover());
        }
        return R.ok(tCourseCommentPageInfo);
    }
@@ -65,9 +68,9 @@
    @ApiOperation(value = "更改是否显示",tags = "后台-评价管理")
    @PostMapping("/change")
    public R change(Long id, Integer isVision){
        TCourseComment byId = courseCommentService.getById(id);
        byId.setIsVision(isVision);
        courseCommentService.updateById(byId);
        TCourseComment courseComment = courseCommentService.getById(id);
        courseComment.setIsVision(isVision);
        courseCommentService.updateById(courseComment);
        return R.ok();
    }
    //删除
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TCourseController.java
@@ -34,9 +34,11 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * <p>
@@ -86,13 +88,13 @@
    @PostMapping(value = "/delete")
    public R delete(String ids) {
        String[] split = ids.split(",");
        List<Integer> courseIds = new ArrayList<>();
        for (String id : split) {
        courseService.removeById(id);
        coursePartService.remove(Wrappers.lambdaQuery(TCoursePart.class).eq(TCoursePart::getCourseId,id));
            courseCommentService.remove(Wrappers.lambdaQuery(TCourseComment.class).eq(TCourseComment::getCourseId,id));
            courseIds.add(Integer.parseInt(id));
        }
        courseService.removeBatchByIds(courseIds);
        coursePartService.remove(Wrappers.lambdaQuery(TCoursePart.class).in(TCoursePart::getCourseId,courseIds));
        courseCommentService.remove(Wrappers.lambdaQuery(TCourseComment.class).in(TCourseComment::getCourseId,courseIds));
        return R.ok();
    }
    //编辑
@@ -129,13 +131,18 @@
        }
        Set<Long> cacheSet = redisCache.getCacheSet("COURSE:" + userId);
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TOrder> orders = orderService.lambdaQuery()
                .eq(TOrder::getGoodType, 1)
                .eq(TOrder::getPaymentStatus, 2).list();
        for (TCourse record : page.getRecords()) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
            if (cacheSet!=null){
                if (cacheSet.contains(record.getId())){
                    record.setIsCollect(1);
@@ -152,13 +159,8 @@
            }else {
                record.setStudyNum(cacheSet1.size());
            }
            Long count = orderService.lambdaQuery()
                    .eq(TOrder::getGoodId, record.getId())
                    .eq(TOrder::getGoodType, 1)
                    .eq(TOrder::getPaymentStatus, 2).count();
            record.setBuyNum(Integer.parseInt(String.valueOf(count)));
            int count = orders.stream().filter(e -> e.getGoodId().equals(record.getId())).collect(Collectors.toList()).size();
            record.setBuyNum(count);
        }
        return R.ok(page);
    }
@@ -168,13 +170,15 @@
    @PostMapping(value = "/other")
    public R<List<TCourse>> other(@RequestParam Long id) {
        List<TCourse> list = courseService.lambdaQuery().ne(TCourse::getId, id).last("limit 3").list();
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        for (TCourse record : list) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
        }
        return R.ok(list);
    }
@@ -217,11 +221,11 @@
        TCourse record = courseService.getById(courseId);
        TRegion byId = regionService.getById(record.getRegionId());
        record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
        TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId() );
        TTitleMajor byId2 = majorService.getById(record.getMajorId());
        record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
        TRegion region = regionService.getById(record.getRegionId());
        record.setRegionName(region.getProvinceName()+"-"+region.getName());
        TTechnicalTitle technicalTitle = tTechnicalTitleService.getById(record.getTechnicalId() );
        TTitleMajor tTitleMajor = majorService.getById(record.getMajorId());
        record.setTechnicalName(technicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
        Long userId = tokenService.getLoginUser().getUserId();
@@ -242,18 +246,18 @@
            record.setIsPay(0);
        }
        Set<Object> cacheSet1 = redisCache.getCacheSet("STUDY:" + courseId);
        if (cacheSet1==null){
        Set<Object> studySet = redisCache.getCacheSet("STUDY:" + courseId);
        if (studySet==null){
            record.setStudyNum(0);
        }else {
            record.setStudyNum(cacheSet1.size());
            record.setStudyNum(studySet.size());
        }
        Set<Object> cacheSet2 = redisCache.getCacheSet("COLLECT:" + courseId);
        if (cacheSet2==null){
        Set<Object> collectSet = redisCache.getCacheSet("COLLECT:" + courseId);
        if (collectSet==null){
            record.setCollectNum(0);
        }else {
            record.setCollectNum(cacheSet2.size());
            record.setCollectNum(collectSet.size());
        }
        return R.ok(record);
@@ -264,9 +268,9 @@
    @PostMapping(value = "/view")
    public R view(Long courseId) {
        TCourse byId = courseService.getById(courseId);
        byId.setVisitNum(byId.getVisitNum()+1);
        courseService.updateById(byId);
        TCourse course = courseService.getById(courseId);
        course.setVisitNum(course.getVisitNum()+1);
        courseService.updateById(course);
        return R.ok();
    }
@@ -287,7 +291,7 @@
    @PostMapping(value = "/create")
    public R buy( @RequestParam Long id) throws AlipayApiException {
        Long userId = tokenService.getLoginUser().getUserId();
        TCourse byId = courseService.getById(id);
        TCourse course = courseService.getById(id);
        String code = "KC" + WeChatUtil.generateTradeNumber();
        TOrder order = new TOrder();
@@ -295,9 +299,9 @@
        order.setUserId(userId);
        order.setGoodType(1);
        order.setGoodId(id);
        order.setOrderAmount(byId.getCoursePrice());
        order.setPaymentAmount(byId.getCoursePrice());
        if (byId.getCoursePrice().compareTo(new BigDecimal(0))==0){
        order.setOrderAmount(course.getCoursePrice());
        order.setPaymentAmount(course.getCoursePrice());
        if (course.getCoursePrice().compareTo(new BigDecimal(0))==0){
            order.setPaymentStatus(2);
        }
@@ -312,16 +316,16 @@
    @ApiOperation(value = "购买",tags = {"web教学视频查询"})
    @PostMapping(value = "/buy")
    public R<PayDto> buy(@RequestParam Integer type, @RequestParam Long orderId) throws AlipayApiException {
        TOrder byId = orderService.getById(orderId);
        TOrder order = orderService.getById(orderId);
        if (type == 1) {
            com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
            prepayRequest.setAppid(weChatConfig.appId);
            prepayRequest.setMchid(weChatConfig.merchantId);
            prepayRequest.setOutTradeNo(byId.getCode());
            prepayRequest.setOutTradeNo(order.getCode());
            prepayRequest.setDescription("购买课程");
            prepayRequest.setNotifyUrl("https://0ifzoxq2516g.guyubao.com/call-back/buy");
            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
            amount.setTotal(byId.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(order.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            prepayRequest.setAmount(amount);
            // 调用下单方法,得到应答
            PrepayResponse response;
@@ -343,7 +347,7 @@
            }
            return null;
        } else {
            String qrCode = AlipayTradePagePay.pay("购买课程",byId.getCode(),byId.getPaymentAmount().toString());
            String qrCode = AlipayTradePagePay.pay("购买课程",order.getCode(),order.getPaymentAmount().toString());
            PayDto payDto = new PayDto();
            payDto.setOrderId(orderId);
            payDto.setQrCode(qrCode);
@@ -356,16 +360,16 @@
                        while (num <= 30) {
                            int min = 2000;
                            Thread.sleep(min);
                            Boolean check = AlipayTradeQuery.check(byId.getCode());
                            Boolean check = AlipayTradeQuery.check(order.getCode());
                            if (check){
                                byId.setPaymentStatus(2);
                                byId.setPaymentType(2);
                                byId.setPayTime(LocalDateTime.now());
                                orderService.updateById(byId);
                                order.setPaymentStatus(2);
                                order.setPaymentType(2);
                                order.setPayTime(LocalDateTime.now());
                                orderService.updateById(order);
                                if (byId.getGoodType()==1){
                                if (order.getGoodType()==1){
                                    try {
                                        TCourse byId1 = courseService.getById(byId.getGoodId());
                                        TCourse byId1 = courseService.getById(order.getGoodId());
                                        byId1.setBuyNum(byId1.getBuyNum()+1);
                                        courseService.updateById(byId1);
                                    }catch (Exception e){
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDeclareNoticeController.java
@@ -198,13 +198,15 @@
            }
        }
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        for (TDeclareNotice record : page.getRecords()) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
        }
        return R.ok(page);
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TGeneratedRecordsController.java
@@ -151,7 +151,6 @@
    @PostMapping(value = "/buy")
    public R buy(@RequestParam Integer type, @RequestParam Long orderId) throws AlipayApiException {
        TOrder byId = orderService.getById(orderId);
        TOrder byId1 = orderService.getById(orderId);
        SysConfig sysConfig = sysConfigMapper.selectConfigById(6L);
        BigDecimal payMoney = new BigDecimal(sysConfig.getConfigValue());
        if (type == 1) {
@@ -162,7 +161,7 @@
            com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
            prepayRequest.setAppid(weChatConfig.appId);
            prepayRequest.setMchid(weChatConfig.merchantId);
            prepayRequest.setOutTradeNo(byId1.getCode());
            prepayRequest.setOutTradeNo(byId.getCode());
            prepayRequest.setDescription("生成工作总结");
            prepayRequest.setNotifyUrl("https://0ifzoxq2516g.guyubao.com/call-back/buy");
            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
@@ -189,7 +188,7 @@
            }
            return null;
        } else {
            String qrCode = AlipayTradePagePay.pay("生成工作总结",byId1.getCode(),payMoney.toString());
            String qrCode = AlipayTradePagePay.pay("生成工作总结",byId.getCode(),payMoney.toString());
            //预支付成功,创建预支付订单
            PayDto payDto = new PayDto();
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIndexMenuController.java
@@ -81,8 +81,8 @@
    @ApiOperation(value = "根据省名字获取悬停框内统计数",tags = {"web-政策数据中心"})
    @PostMapping(value = "/getByProvinceName/count")
    public R getByProvinceName() {
        List<TRegion> list1 = regionService.lambdaQuery().groupBy(TRegion::getProvinceName).list();
        for (TRegion tRegion : list1) {
        List<TRegion> regions = regionService.lambdaQuery().groupBy(TRegion::getProvinceName).list();
        for (TRegion tRegion : regions) {
            List<TRegion> list = regionService.lambdaQuery().eq(TRegion::getProvinceName, tRegion.getProvinceName()).list();
            List<Integer> regionIds = new ArrayList<>();
            list.forEach(region -> regionIds.add(region.getId()));
@@ -94,8 +94,7 @@
                tRegion.setCount(0L);
            }
        }
        return R.ok(list1);
        return R.ok(regions);
    }
@@ -104,20 +103,20 @@
    public R<List<TDeclareNotice>> noticelist(@RequestBody ConsultationQuery informationQuery) {
        //获取当前登录人id
        Long userId = tokenService.getLoginUser().getUserId();
        TUserChange one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
        TUserChange userChange = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
        List<TDeclareNotice> notices = new ArrayList<>();
        if (one!=null){
                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
            for (TUserChangeDetail tUserChangeDetail : list) {
                List<TDeclareNotice> list1 = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getRegionId,tUserChangeDetail.getRegionId()).eq(TDeclareNotice::getMajorId, tUserChangeDetail.getMajorId()).eq(TDeclareNotice::getLevel, tUserChangeDetail.getLevelId()).list();
                notices.addAll(list1);
        if (userChange!=null){
                List<TUserChangeDetail> userChangeDetails = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
            for (TUserChangeDetail tUserChangeDetail : userChangeDetails) {
                List<TDeclareNotice> declareNotices = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getRegionId,tUserChangeDetail.getRegionId()).eq(TDeclareNotice::getMajorId, tUserChangeDetail.getMajorId()).eq(TDeclareNotice::getLevel, tUserChangeDetail.getLevelId()).list();
                notices.addAll(declareNotices);
            }
            notices.sort(Comparator.comparing(TDeclareNotice::getCreateTime).reversed());
        }else {
            // 创建 LambdaQueryWrapper 并设置查询条件
            List<TDeclareNotice> list1 = declareNoticeService.lambdaQuery()
            List<TDeclareNotice> declareNotices = declareNoticeService.lambdaQuery()
                    .last(" ORDER BY RAND() LIMIT 16").list();
            notices.addAll(list1);
            notices.addAll(declareNotices);
        }
        if (notices.size() > 16) {
            // 只保留前 16 条记录
@@ -130,24 +129,30 @@
    @PostMapping(value = "/consultation/list")
    public R<List<TConsultation>> consultationlist(@RequestParam Integer type, @RequestParam(required = false) Integer regionId, HttpServletRequest request) {
        String token = request.getHeader("Authorization");
        TUserChange one =null;
        TUserChange userChange =null;
        if(StringUtils.isNotEmpty(token)){
            //获取当前登录人id
            Long userId = tokenService.getLoginUser().getUserId();
            one = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
            userChange = changeService.lambdaQuery().eq(TUserChange::getUserId, userId).orderByDesc(TUserChange::getCreateTime).last("limit 1").one();
        }
        List<TConsultation> notices = new ArrayList<>();
        if (type==1){
            if (one!=null){
                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
                for (TUserChangeDetail tUserChangeDetail : list) {
                    List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
                            .eq(TConsultation::getRegionId,tUserChangeDetail.getRegionId())
                            .eq(TConsultation::getMajorId, tUserChangeDetail.getMajorId())
                            .eq(TConsultation::getLevel, tUserChangeDetail.getLevelId())
            if (userChange!=null){
                List<TUserChangeDetail> userChangeDetails = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
                List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, type)
                            .orderByDesc(TConsultation::getClassificationSort,TConsultation::getCreateTime).list();
                    notices.addAll(list1);
                for (TUserChangeDetail tUserChangeDetail : userChangeDetails) {
                    List<TConsultation> consultationList = consultations.stream().filter(e -> e.getRegionId().equals(tUserChangeDetail.getRegionId())
                            && e.getMajorId().equals(tUserChangeDetail.getMajorId())
                            && e.getLevel().equals(tUserChangeDetail.getLevelId())
                    ).collect(Collectors.toList());
//                    List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
//                            .eq(TConsultation::getRegionId,tUserChangeDetail.getRegionId())
//                            .eq(TConsultation::getMajorId, tUserChangeDetail.getMajorId())
//                            .eq(TConsultation::getLevel, tUserChangeDetail.getLevelId())
//                            .orderByDesc(TConsultation::getClassificationSort,TConsultation::getCreateTime).list();
                    notices.addAll(consultationList);
                }
                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
            }else {
@@ -169,14 +174,16 @@
                notices = new ArrayList<>(notices.subList(0, 2));
            }
        }else {
            if (one!=null){
                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
            if (userChange!=null){
                List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, userChange.getId()).list();
                List<TConsultation> consultations = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, type).list();
                for (TUserChangeDetail tUserChangeDetail : list) {
                    List<TConsultation> list1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId,type)
                            .eq(TConsultation::getRegionId,tUserChangeDetail.getRegionId())
                            .eq(TConsultation::getMajorId, tUserChangeDetail.getMajorId())
                            .eq(TConsultation::getLevel, tUserChangeDetail.getLevelId()).list();
                    notices.addAll(list1);
                    List<TConsultation> consultationList = consultations.stream().filter(e -> e.getRegionId().equals(tUserChangeDetail.getRegionId())
                            && e.getMajorId().equals(tUserChangeDetail.getMajorId())
                            && e.getLevel().equals(tUserChangeDetail.getLevelId())
                            && e.getClassificationId().equals(type)
                    ).collect(Collectors.toList());
                    notices.addAll(consultationList);
                }
                notices.sort(Comparator.comparing(TConsultation::getCreateTime).reversed());
            }else {
@@ -207,15 +214,15 @@
    @ApiOperation(value = "全国政策数据",tags = {"web-首页"})
    @PostMapping(value = "/total/count")
    public R<CountTotalDto> totalcount() {
        Long count1 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 1).count();
        Long count2 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 2).count();
        Long count3 = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 3).count();
        Long noticeCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 1).count();
        Long fileCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 2).count();
        Long infoCount = consultationService.lambdaQuery().eq(TConsultation::getClassificationId, 3).count();
        CountTotalDto countTotalDto = new CountTotalDto();
        countTotalDto.setNoticeCount(count1);
        countTotalDto.setFileCount(count2);
        countTotalDto.setInfoCount(count3);
        Long count4 = committeeService.lambdaQuery().count();
        countTotalDto.setCommitteeCount(count4);
        countTotalDto.setNoticeCount(noticeCount);
        countTotalDto.setFileCount(fileCount);
        countTotalDto.setInfoCount(infoCount);
        Long committeeCount = committeeService.lambdaQuery().count();
        countTotalDto.setCommitteeCount(committeeCount);
        return R.ok(countTotalDto);
    }
@@ -233,9 +240,9 @@
    @PostMapping(value = "/allert")
    public R allert() {
        Long userId = tokenService.getLoginUser().getUserId();
        TAppUser byId = appUserService.getById(userId);
        TAppUser appUser = appUserService.getById(userId);
        Long cacheObject = redisCache.getCacheObject("ALLERT:"+userId);
        if (cacheObject!=null && byId.getIsSetPreference() == 1){
        if (cacheObject!=null && appUser.getIsSetPreference() == 1){
            return R.ok(cacheObject == 1);
        }else {
            return R.ok(false);
@@ -325,9 +332,18 @@
        List<TInformation> notices = new ArrayList<>();
        if (one!=null){
            List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
            List<TInformation> informations = informationService.lambdaQuery().list();
            for (TUserChangeDetail tUserChangeDetail : list) {
                List<TInformation> list1 = informationService.lambdaQuery().eq(TInformation::getRegionId,tUserChangeDetail.getRegionId()).eq(TInformation::getMajorId, tUserChangeDetail.getMajorId()).eq(TInformation::getLevel, tUserChangeDetail.getLevelId()).list();
                notices.addAll(list1);
                List<TInformation> informationsList = informations.stream().filter(e ->
                        e.getRegionId().equals(tUserChangeDetail.getRegionId())
                        && e.getMajorId().equals(tUserChangeDetail.getMajorId())
                        && e.getLevel().equals(tUserChangeDetail.getLevelId())
                ).collect(Collectors.toList());
//                List<TInformation> informationsList = informationService.lambdaQuery()
//                        .eq(TInformation::getRegionId,tUserChangeDetail.getRegionId())
//                        .eq(TInformation::getMajorId, tUserChangeDetail.getMajorId())
//                        .eq(TInformation::getLevel, tUserChangeDetail.getLevelId()).list();
                notices.addAll(informationsList);
            }
            notices.sort(Comparator.comparing(TInformation::getCreateTime).reversed());
        }else {
@@ -375,9 +391,15 @@
        List<TCourse> notices = new ArrayList<>();
        if (one!=null){
            List<TUserChangeDetail> list = changeDetailService.lambdaQuery().eq(TUserChangeDetail::getChangeId, one.getId()).list();
            List<TCourse> courses = courseService.lambdaQuery().list();
            for (TUserChangeDetail tUserChangeDetail : list) {
                List<TCourse> list1 = courseService.lambdaQuery().eq(TCourse::getRegionId,tUserChangeDetail.getRegionId()).eq(TCourse::getMajorId, tUserChangeDetail.getMajorId()).eq(TCourse::getLevel, tUserChangeDetail.getLevelId()).list();
                notices.addAll(list1);
                List<TCourse> coursesList = courses.stream().filter(e ->
                        e.getRegionId().equals(tUserChangeDetail.getRegionId())
                                && e.getMajorId().equals(tUserChangeDetail.getMajorId())
                                && e.getLevel().equals(tUserChangeDetail.getLevelId())
                ).collect(Collectors.toList());
                notices.addAll(coursesList);
            }
            notices.sort(Comparator.comparing(TCourse::getCreateTime).reversed());
        }else {
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInformationController.java
@@ -164,13 +164,15 @@
        }
        Set<Long> cacheSet = redisCache.getCacheSet("INFORMATION:" + userId);
        List<TRegion> regions = regionService.lambdaQuery().list();
        List<TTechnicalTitle> tTechnicalTitles = tTechnicalTitleService.lambdaQuery().list();
        List<TTitleMajor> tTitleMajors = majorService.lambdaQuery().list();
        for (TInformation record : page.getRecords()) {
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId());
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TRegion region = regions.stream().filter(e -> e.getId().equals(record.getRegionId())).findFirst().orElse(null);
            TTechnicalTitle tTechnicalTitle = tTechnicalTitles.stream().filter(e -> e.getId().equals(record.getTechnicalId())).findFirst().orElse(null);
            TTitleMajor tTitleMajor = tTitleMajors.stream().filter(e -> e.getId().equals(record.getMajorId())).findFirst().orElse(null);
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            record.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
            if (cacheSet!=null){
                if (cacheSet.contains(record.getId())){
                    record.setIsCollect(1);
@@ -200,9 +202,9 @@
    @ApiOperation(value = "下载累计次数",tags = {"web资料查询"})
    @PostMapping(value = "/downland")
    public R downland(@RequestParam Long id) {
        TInformation byId = informationService.getById(id);
        byId.setDownlandNum(byId.getDownlandNum()+1);
        informationService.updateById(byId);
        TInformation information = informationService.getById(id);
        information.setDownlandNum(information.getDownlandNum()+1);
        informationService.updateById(information);
        return R.ok();
    }
@@ -216,11 +218,11 @@
        TInformation record = informationService.getById(id);
        Set<Long> cacheSet = redisCache.getCacheSet("INFORMATION:" + userId);
        TRegion byId = regionService.getById(record.getRegionId());
        record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
        TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId());
        TTitleMajor byId2 = majorService.getById(record.getMajorId());
        record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName()+"-"+record.getLevel());
        TRegion region = regionService.getById(record.getRegionId());
        record.setRegionName(region.getProvinceName()+"-"+region.getName());
        TTechnicalTitle technicalTitle = tTechnicalTitleService.getById(record.getTechnicalId());
        TTitleMajor titleMajor = majorService.getById(record.getMajorId());
        record.setTechnicalName(technicalTitle.getTitileName()+"-"+titleMajor.getMajorName()+"-"+record.getLevel());
        if (cacheSet!=null){
            if (cacheSet.contains(record.getId())){
                record.setIsCollect(1);
@@ -239,17 +241,17 @@
    @PostMapping(value = "/create")
    public R buy( @RequestParam Long id) throws AlipayApiException {
        Long userId = tokenService.getLoginUser().getUserId();
        TInformation byId = informationService.getById(id);
        TInformation information = informationService.getById(id);
        String code = "ZL" + WeChatUtil.generateTradeNumber();
        TOrder order = new TOrder();
        order.setCode(code);
        order.setUserId(userId);
        order.setGoodType(2);
        order.setGoodId(id);
        order.setOrderAmount(byId.getInformationPrice());
        order.setPaymentAmount(byId.getInformationPrice());
        order.setOrderAmount(information.getInformationPrice());
        order.setPaymentAmount(information.getInformationPrice());
        if (byId.getInformationPrice().compareTo(new BigDecimal(0))==0){
        if (information.getInformationPrice().compareTo(new BigDecimal(0))==0){
            order.setPaymentStatus(2);
        }
@@ -263,16 +265,16 @@
    @ApiOperation(value = "购买资料",tags = {"web资料查询"})
    @PostMapping(value = "/buy")
    public R buy(@RequestParam Integer type, @RequestParam Long orderId) throws AlipayApiException {
        TOrder byId = orderService.getById(orderId);
        int i = byId.getPaymentAmount().multiply(BigDecimal.valueOf(100)).intValue();
        TOrder byId1 = orderService.getById(orderId);
        TOrder order = orderService.getById(orderId);
        int i = order.getPaymentAmount().multiply(BigDecimal.valueOf(100)).intValue();
        TOrder tOrder = orderService.getById(orderId);
        if (type == 1) {
            Long userId = tokenService.getLoginUser().getUserId();
            com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
            prepayRequest.setAppid(weChatConfig.appId);
            prepayRequest.setMchid(weChatConfig.merchantId);
            prepayRequest.setOutTradeNo(byId1.getCode());
            prepayRequest.setOutTradeNo(tOrder.getCode());
            prepayRequest.setDescription("购买资料");
            prepayRequest.setNotifyUrl("https://0ifzoxq2516g.guyubao.com/call-back/buy");
            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
@@ -300,7 +302,7 @@
            }
            return null;
        } else {
            String qrCode = AlipayTradePagePay.pay("购买资料",byId1.getCode(),byId.getPaymentAmount().toString());
            String qrCode = AlipayTradePagePay.pay("购买资料",tOrder.getCode(),order.getPaymentAmount().toString());
            PayDto payDto = new PayDto();
            payDto.setOrderId(orderId);
@@ -314,12 +316,12 @@
                        while (num <= 30) {
                            int min = 2000;
                            Thread.sleep(min);
                            Boolean check = AlipayTradeQuery.check(byId.getCode());
                            Boolean check = AlipayTradeQuery.check(order.getCode());
                            if (check){
                                byId.setPaymentStatus(2);
                                byId.setPaymentType(2);
                                byId.setPayTime(LocalDateTime.now());
                                orderService.updateById(byId);
                                order.setPaymentStatus(2);
                                order.setPaymentType(2);
                                order.setPayTime(LocalDateTime.now());
                                orderService.updateById(order);
                            }else {
                                num++;
                            }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderController.java
@@ -100,13 +100,13 @@
    @ApiOperation(value = "取消订单",tags = {"后台-订单管理","web-个人中心"})
    @PostMapping("/cancel")
    public R cancel(Long orderId){
         TOrder byId = orderService.getById(orderId);
         if (byId.getPaymentStatus()!=1){
         TOrder order = orderService.getById(orderId);
         if (order.getPaymentStatus()!=1){
             return R.fail("订单状态异常");
         }
         byId.setPaymentStatus(3);
        byId.setCancelTime(LocalDateTime.now());
         orderService.updateById(byId);
         order.setPaymentStatus(3);
        order.setCancelTime(LocalDateTime.now());
         orderService.updateById(order);
        return R.ok();
    }
@@ -117,18 +117,18 @@
        TCourse course = courseService.getById(goodId);
            TRegion byId = regionService.getById(course.getRegionId());
        course.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(course.getTechnicalId() );
            TTitleMajor byId2 = majorService.getById(course.getMajorId());
        course.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TRegion region = regionService.getById(course.getRegionId());
        course.setRegionName(region.getProvinceName()+"-"+region.getName());
            TTechnicalTitle tTechnicalTitle = tTechnicalTitleService.getById(course.getTechnicalId() );
            TTitleMajor titleMajor = majorService.getById(course.getMajorId());
        course.setTechnicalName(tTechnicalTitle.getTitileName()+"-"+titleMajor.getMajorName());
        TOrder byId3 = orderService.getById(id);
        TAppUser byId4 = appUserService.getById(byId3.getUserId());
        byId3.setName(byId4.getName());
        byId3.setPhone(byId4.getPhone());
        byId3.setAvatar(byId4.getAvatar());
        course.setOrder(byId3);
        TOrder order = orderService.getById(id);
        TAppUser appUser = appUserService.getById(order.getUserId());
        order.setName(appUser.getName());
        order.setPhone(appUser.getPhone());
        order.setAvatar(appUser.getAvatar());
        course.setOrder(order);
        Long count = orderService.lambdaQuery()
                .eq(TOrder::getGoodId, course.getId())
@@ -142,22 +142,22 @@
    @ApiOperation(value = "工作总结详情",tags = "后台-订单管理")
    @PostMapping("/generate/detail")
    public R<TGeneratedRecords> detail(Long id){
        TOrder byId = orderService.getById(id);
        TGeneratedRecords one = generatedRecordsService.lambdaQuery().eq(TGeneratedRecords::getUserId, byId.getUserId()).orderByDesc(TGeneratedRecords::getCreateTime).last("limit 1").one();
        if (one == null) {
        TOrder order = orderService.getById(id);
        TGeneratedRecords tGeneratedRecords = generatedRecordsService.lambdaQuery().eq(TGeneratedRecords::getUserId, order.getUserId()).orderByDesc(TGeneratedRecords::getCreateTime).last("limit 1").one();
        if (tGeneratedRecords == null) {
            TGeneratedRecords generatedRecords = new TGeneratedRecords();
            generatedRecords.setOrder(byId);
            generatedRecords.setOrder(order);
            return R.ok(generatedRecords);
        }
        TOrder byId3 = orderService.getById(id);
        TAppUser byId4 = appUserService.getById(byId3.getUserId());
        byId3.setName(byId4.getName());
        byId3.setPhone(byId4.getPhone());
        byId3.setAvatar(byId4.getAvatar());
        one.setOrder(byId3);
        TOrder tOrder = orderService.getById(id);
        TAppUser appUser = appUserService.getById(tOrder.getUserId());
        tOrder.setName(appUser.getName());
        tOrder.setPhone(appUser.getPhone());
        tOrder.setAvatar(appUser.getAvatar());
        tGeneratedRecords.setOrder(tOrder);
        return R.ok(one);
        return R.ok(tGeneratedRecords);
    }
@@ -165,19 +165,19 @@
    @PostMapping(value = "/order/information/detail")
    public R<TInformation> informationR1(Long goodId,Long id) {
      TInformation record = informationService.getById(goodId);
            TRegion byId = regionService.getById(record.getRegionId());
            record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
            TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId());
            TTitleMajor byId2 = majorService.getById(record.getMajorId());
            record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
            TRegion region = regionService.getById(record.getRegionId());
            record.setRegionName(region.getProvinceName()+"-"+region.getName());
            TTechnicalTitle technicalTitle = tTechnicalTitleService.getById(record.getTechnicalId());
            TTitleMajor titleMajor = majorService.getById(record.getMajorId());
            record.setTechnicalName(technicalTitle.getTitileName()+"-"+titleMajor.getMajorName());
        TOrder byId3 = orderService.getById(id);
        TAppUser byId4 = appUserService.getById(byId3.getUserId());
        byId3.setName(byId4.getName());
        byId3.setPhone(byId4.getPhone());
        byId3.setAvatar(byId4.getAvatar());
        record.setOrder(byId3);
        TOrder order = orderService.getById(id);
        TAppUser appUser = appUserService.getById(order.getUserId());
        order.setName(appUser.getName());
        order.setPhone(appUser.getPhone());
        order.setAvatar(appUser.getAvatar());
        record.setOrder(order);
        return R.ok(record);
@@ -188,11 +188,11 @@
    @PostMapping(value = "/information/detail")
    public R<TInformation> informationR(Long goodId) {
        TInformation record = informationService.getById(goodId);
        TRegion byId = regionService.getById(record.getRegionId());
        record.setRegionName(byId.getProvinceName()+"-"+byId.getName());
        TTechnicalTitle byId1 = tTechnicalTitleService.getById(record.getTechnicalId());
        TTitleMajor byId2 = majorService.getById(record.getMajorId());
        record.setTechnicalName(byId1.getTitileName()+"-"+byId2.getMajorName());
        TRegion region = regionService.getById(record.getRegionId());
        record.setRegionName(region.getProvinceName()+"-"+region.getName());
        TTechnicalTitle technicalTitle = tTechnicalTitleService.getById(record.getTechnicalId());
        TTitleMajor tTitleMajor = majorService.getById(record.getMajorId());
        record.setTechnicalName(technicalTitle.getTitileName()+"-"+tTitleMajor.getMajorName());
@@ -202,19 +202,19 @@
    @ApiOperation(value = "退款",tags = "后台-资料管理")
    @PostMapping(value = "/refund")
    public R<TInformation> refund(Long orderId) throws AlipayApiException {
        TOrder byId = orderService.getById(orderId);
        if (byId.getPaymentStatus()!=2){
        TOrder order = orderService.getById(orderId);
        if (order.getPaymentStatus()!=2){
            return R.fail("订单状态异常");
        }
        if (byId.getPaymentType()==1){
            payMoneyUtil.wxRefund(byId.getSerialNumber(), byId.getCode(),byId.getPaymentAmount().toString(), byId.getPaymentAmount().toString(),"/");
        if (order.getPaymentType()==1){
            payMoneyUtil.wxRefund(order.getSerialNumber(), order.getCode(),order.getPaymentAmount().toString(), order.getPaymentAmount().toString(),"/");
        }
        if (byId.getPaymentType()==2){
            Map<String, String> stringStringMap = payMoneyUtil.aliRefund(byId.getCode(), byId.getPaymentAmount().toString());
        if (order.getPaymentType()==2){
            Map<String, String> stringStringMap = payMoneyUtil.aliRefund(order.getCode(), order.getPaymentAmount().toString());
            if ("10000".equals(stringStringMap.get("code"))){
                byId.setPaymentStatus(4);
                orderService.updateById(byId);
                order.setPaymentStatus(4);
                orderService.updateById(order);
            }
        }
@@ -225,24 +225,25 @@
    @ApiOperation(value = "导出",tags = "后台-订单管理")
    @PostMapping(value = "/export")
    public void mealGeneratorExport(@RequestBody OrderQuery orderQuery) {
        orderQuery.setPageNum(1);
        orderQuery.setPageSize(9999);
        PageInfo<TOrder> tOrderPageInfo = orderService.pageList(orderQuery);
        for (TOrder record : tOrderPageInfo.getRecords()) {
        List<TOrder> tOrders = orderService.listExport(orderQuery);
        List<TCourse> courses = courseService.lambdaQuery().list();
        List<TInformation> informations = informationService.lambdaQuery().list();
        for (TOrder record : tOrders) {
            record.getFormattedCreateTime();
            if (record.getGoodType()==1){
                TCourse byId = courseService.getById(record.getGoodId());
                record.setGoodName(byId.getCourseName());
                TCourse course = courses.stream().filter(e -> e.getId().equals(record.getGoodId())).findFirst().orElse(null);
                record.setGoodName(course.getCourseName());
            }else if (record.getGoodType()==2){
                TInformation byId = informationService.getById(record.getGoodId());
                record.setGoodName(byId.getInformationName());
                TInformation information = informations.stream().filter(e -> e.getId().equals(record.getGoodId())).findFirst().orElse(null);
                record.setGoodName(information.getInformationName());
            }else {
                record.setGoodName("工作总结订单");
            }
        }
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrder.class,tOrderPageInfo.getRecords() );
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrder.class,tOrders );
        HttpServletResponse response = WebUtils.response();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TRegionController.java
@@ -37,9 +37,9 @@
    @ApiOperation(value = "关闭禁用",tags = "后台-系统设置-开通地区管理")
    @PostMapping(value = "/open")
    public R open(Integer id, Integer isOpen) {
        TRegion byId = indexMenuService.getById(id);
        byId.setIsOpen(isOpen);
        indexMenuService.updateById(byId);
        TRegion region = indexMenuService.getById(id);
        region.setIsOpen(isOpen);
        indexMenuService.updateById(region);
        return R.ok();
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTechnicalTitleController.java
@@ -61,17 +61,16 @@
    @ApiOperation(value = "树状图",tags = "web-下拉框")
    @PostMapping(value = "/tree")
    public R<List<TTechnicalTitle>> tree(){
        List<TLevel> list2 = levelService.list();
        List<TTitleMajor> tTitleMajorList = majorService.lambdaQuery().list();
        List<TTechnicalTitle> list = tTechnicalTitleService.list();
        for (TTechnicalTitle tTechnicalTitle : list) {
            tTechnicalTitle.setName(tTechnicalTitle.getTitileName());
            List<TTitleMajor> list1 = majorService.lambdaQuery().eq(TTitleMajor::getTechnicalId, tTechnicalTitle.getId()).list();
            for (TTitleMajor tTitleMajor : list1) {
            List<TTitleMajor> tTitleMajors = tTitleMajorList.stream().filter(e -> e.getTechnicalId().equals(tTechnicalTitle.getId())).collect(Collectors.toList());
            for (TTitleMajor tTitleMajor : tTitleMajors) {
                tTitleMajor.setName(tTitleMajor.getMajorName());
//                tTitleMajor.setMajors(list2);
            }
            tTechnicalTitle.setMajors(list1);
            tTechnicalTitle.setMajors(tTitleMajors);
        }
        return R.ok(list);
    }
@@ -110,36 +109,36 @@
        List<String> list = Arrays.asList(ids.split(","));
        for (String s : list) {
            //判断是否有关联数据
            Long count = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getTitleId, s).count();
            if (count>0){
            Long userChange = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getTitleId, s).count();
            if (userChange>0){
                return R.fail("当前职称已有用户设为偏好,无法删除");
            }
            Long count1 = consultationService.lambdaQuery().eq(TConsultation::getTitleId, s).count();
            if (count1>0){
            Long consultation = consultationService.lambdaQuery().eq(TConsultation::getTitleId, s).count();
            if (consultation>0){
                return R.fail("当前职称已设置咨询,无法删除");
            }
            Long count2 = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getTechnicalId, s).count();
            if (count2>0){
            Long declareNotice = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getTechnicalId, s).count();
            if (declareNotice>0){
                return R.fail("当前职称已设置申报通知,无法删除");
            }
            Long count3 = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getTechnicalId, s).count();
            if (count3>0){
            Long committeeTechnical = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getTechnicalId, s).count();
            if (committeeTechnical>0){
                return R.fail("当前职称已设置委员会可评审职称,无法删除");
            }
            Long count4 = committeeService.lambdaQuery().eq(TCommittee::getTechnicalId, s).count();
            if (count4>0){
            Long committee = committeeService.lambdaQuery().eq(TCommittee::getTechnicalId, s).count();
            if (committee>0){
                return R.fail("当前职称已设置评审委员会,无法删除");
            }
            Long count5 = informationService.lambdaQuery().eq(TInformation::getTechnicalId, s).count();
            if (count5>0){
            Long infomation = informationService.lambdaQuery().eq(TInformation::getTechnicalId, s).count();
            if (infomation>0){
                return R.fail("当前职称已设置资料,无法删除");
            }
            Long count6 = majorService.lambdaQuery().eq(TTitleMajor::getTechnicalId, s).count();
            if (count6>0){
            Long major = majorService.lambdaQuery().eq(TTitleMajor::getTechnicalId, s).count();
            if (major>0){
                return R.fail("当前职称已设置专业,无法删除");
            }
            Long count7 = courseService.lambdaQuery().eq(TCourse::getTechnicalId, s).count();
            if (count7>0){
            Long course = courseService.lambdaQuery().eq(TCourse::getTechnicalId, s).count();
            if (course>0){
                return R.fail("当前职称已设置课程,无法删除");
            }
        }
@@ -160,22 +159,17 @@
    @PostMapping("/export")
    public R export (@RequestParam("file") MultipartFile file) {
        List<TTechnicalTitle> tTechnicalTitles = new ArrayList<>();
        int errorLines = 0;
        int successLines = 0;
        ImportParams params = new ImportParams();
//        params.setTitleRows(1);//标题行数
        params.setHeadRows(1); //表头行数
        String msg = null;
        InputStream inputStream = null;
        List<String> failMsg = new ArrayList<>();
        try {
            inputStream = file.getInputStream();
            List<TechImportExcel> techImportExcels = ExcelImportUtil.importExcel(inputStream, TechImportExcel.class, params);
            List<TRegion> list = regionService.lambdaQuery().list();
            for (TechImportExcel techImportExcel : techImportExcels) {
                List<Integer> regionIds;
@@ -185,13 +179,13 @@
                    continue;
                } else {
                    if("全部".equals(techImportExcel.getAddress())){
                        List<TRegion> list = regionService.lambdaQuery().list();
                        regionIds = list.stream().map(TRegion::getId).collect(Collectors.toList());
                    }else {
                        String[] split = techImportExcel.getAddress().split(";");
                        regionIds = new ArrayList<>();
                        for (String s : split) {
                            TRegion region = regionService.lambdaQuery().like(TRegion::getName, s).one();
                            TRegion region = list.stream().filter(e -> e.getName().contains(s)).findFirst().orElse(null);
//                            TRegion region = regionService.lambdaQuery().like(TRegion::getName, s).one();
                            if (region == null) {
                                msg = "第" + techImportExcels.indexOf(techImportExcel) + "行,地区不存在";
                                failMsg.add(msg);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTitleMajorController.java
@@ -81,33 +81,33 @@
    public R deleteById(Long id){
            String s = id.toString();
            //判断是否有关联数据
            Long count = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getMajorId, s).count();
            if (count>0){
            Long userChange = userChangeDetailService.lambdaQuery().eq(TUserChangeDetail::getMajorId, s).count();
            if (userChange>0){
                return R.fail("当前专业已有用户设为偏好,无法删除");
            }
            Long count1 = consultationService.lambdaQuery().eq(TConsultation::getMajorId, s).count();
            if (count1>0){
            Long consultation = consultationService.lambdaQuery().eq(TConsultation::getMajorId, s).count();
            if (consultation>0){
                return R.fail("当前专业已设置咨询,无法删除");
            }
            Long count2 = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getMajorId, s).count();
            if (count2>0){
            Long declareNotice = declareNoticeService.lambdaQuery().eq(TDeclareNotice::getMajorId, s).count();
            if (declareNotice>0){
                return R.fail("当前专业已设置申报通知,无法删除");
            }
            Long count3 = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getMajorId, s).count();
            if (count3>0){
            Long committeeTechnical = committeeTechnicalService.lambdaQuery().eq(TCommitteeTechnical::getMajorId, s).count();
            if (committeeTechnical>0){
                return R.fail("当前专业已设置委员会可评审职称,无法删除");
            }
            Long count4 = committeeService.lambdaQuery().eq(TCommittee::getMajorId, s).count();
            if (count4>0){
            Long committee = committeeService.lambdaQuery().eq(TCommittee::getMajorId, s).count();
            if (committee>0){
                return R.fail("当前专业已设置评审委员会,无法删除");
            }
            Long count5 = informationService.lambdaQuery().eq(TInformation::getMajorId, s).count();
            if (count5>0){
            Long infomation = informationService.lambdaQuery().eq(TInformation::getMajorId, s).count();
            if (infomation>0){
                return R.fail("当前专业已设置资料,无法删除");
            }
            Long count7 = courseService.lambdaQuery().eq(TCourse::getMajorId, s).count();
            if (count7>0){
            Long course = courseService.lambdaQuery().eq(TCourse::getMajorId, s).count();
            if (course>0){
                return R.fail("当前专业已设置课程,无法删除");
            }
@@ -128,9 +128,6 @@
    @PostMapping("/export")
    public R export (@RequestParam("file") MultipartFile file) {
        List<TTitleMajor> tTechnicalTitles = new ArrayList<>();
        int errorLines = 0;
        int successLines = 0;
        ImportParams params = new ImportParams();
//        params.setTitleRows(1);//标题行数
        params.setHeadRows(1); //表头行数
@@ -142,40 +139,20 @@
        try {
            inputStream = file.getInputStream();
            List<MahorImportExcel> techImportExcels = ExcelImportUtil.importExcel(inputStream, MahorImportExcel.class, params);
            for (MahorImportExcel techImportExcel : techImportExcels) {
            List<TTechnicalTitle> tTechnicalTitleList = tTechnicalTitleService.lambdaQuery().list();
//                List<Integer> regionIds;
//                if (techImportExcel.getAddress() == null || StringUtils.isEmpty(techImportExcel.getAddress())) {
//                    msg = "第" + techImportExcels.indexOf(techImportExcel)+1 + "行,地区不能为空";
//                    failMsg.add(msg);
//                    continue;
//                } else {
//                    String[] split = techImportExcel.getAddress().split(";");
//                    regionIds = new ArrayList<>();
//                    for (String s : split) {
//                        TRegion region = regionService.lambdaQuery().like(TRegion::getName, s).one();
//                        if (region == null) {
//                            msg = "第" + techImportExcels.indexOf(techImportExcel)+1 + "行,地区不存在";
//                            failMsg.add(msg);
//                        } else {
//                            regionIds.add(region.getId());
//                        }
//                    }
//                    if (regionIds.size() != split.length) {
//                        continue;
//                    }
//
//                }
            for (MahorImportExcel techImportExcel : techImportExcels) {
                TTitleMajor tTechnicalTitle = new TTitleMajor();
                if (techImportExcel.getTitileName()==null||StringUtils.isEmpty(techImportExcel.getTitileName())){
                    msg = "第" + techImportExcels.indexOf(techImportExcel)+1 + "行,职称名称不能为空";
                    failMsg.add(msg);
                    continue;
                }else {
                    TTechnicalTitle one = tTechnicalTitleService.lambdaQuery().eq(TTechnicalTitle::getTitileName, techImportExcel.getTitileName()).last("limit 1").one();
                    if (one!=null){
                        tTechnicalTitle.setTechnicalId(one.getId());
                        tTechnicalTitle.setRegionIds(one.getRegionIds());
                    TTechnicalTitle technicalTitle = tTechnicalTitleList.stream()
                            .filter(e -> e.getTitileName().equals(techImportExcel.getTitileName())).findFirst().orElse(null);
                    if (technicalTitle!=null){
                        tTechnicalTitle.setTechnicalId(technicalTitle.getId());
                        tTechnicalTitle.setRegionIds(technicalTitle.getRegionIds());
                    }else {
                        msg = "第" + techImportExcels.indexOf(techImportExcel)+1 + "行,职称名称不存在";
                        failMsg.add(msg);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/WebController.java
@@ -65,10 +65,10 @@
    @PostMapping(value = "/title/set")
    public R<List<AllertTitleDto>> set(@RequestBody List<TUserChangeDetail> userChangeDetails) {
        Long userId = tokenService.getLoginUser().getUserId();
        TAppUser byId = appUserService.getById(userId);
        if(Objects.nonNull(byId)){
            byId.setIsSetPreference(1);
            appUserService.updateById(byId);
        TAppUser appUser = appUserService.getById(userId);
        if(Objects.nonNull(appUser)){
            appUser.setIsSetPreference(1);
            appUserService.updateById(appUser);
        }
        //保存一次变更记录
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMapper.java
@@ -22,4 +22,6 @@
    List<TOrder> pageList(@Param("pageInfo") PageInfo<TOrder> pageInfo, @Param("orderQuery") OrderQuery orderQuery);
    List<Map<String, Object>> totalCount(@Param("orderQuery")OrderQuery orderQuery);
    List<TOrder> listExport(@Param("orderQuery")OrderQuery orderQuery);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderService.java
@@ -22,4 +22,5 @@
    List<Map<String, Object>> totalCount(OrderQuery orderQuery);
    List<TOrder> listExport(OrderQuery orderQuery);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIndexMenuServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -34,14 +35,16 @@
    @Override
    public List<AllertTitleDto> allert(List<String> cityCode) {
        List<AllertTitleDto> allert = new ArrayList<>();
        List<String> strings = new ArrayList<>();
        for (String s : cityCode) {
            List<AllertTitleDto> allert1 = this.baseMapper.allert(Collections.singletonList(s));
            allert.addAll(allert1);
            strings.add(s);
        }
        List<AllertTitleDto> allert1 = this.baseMapper.allert(strings);
        allert.addAll(allert1);
        allert = allert.stream().distinct().collect(Collectors.toList());
        List<TTitleMajor> tTitleMajorList = titleMajorMapper.selectList(new LambdaQueryWrapper<TTitleMajor>());
        for (AllertTitleDto allertTitleDto : allert) {
            List<TTitleMajor> tTitleMajors = titleMajorMapper.selectList(Wrappers.lambdaQuery(TTitleMajor.class)
                    .eq(TTitleMajor::getTechnicalId, allertTitleDto.getId()));
            List<TTitleMajor> tTitleMajors = tTitleMajorList.stream().filter(e -> e.getTechnicalId().equals(allertTitleDto.getId())).collect(Collectors.toList());
            allertTitleDto.setChildren(tTitleMajors);
        }
        return allert;
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderServiceImpl.java
@@ -43,10 +43,10 @@
        return this.baseMapper.totalCount(orderQuery);
    }
    @Override
    public List<TOrder> listExport(OrderQuery orderQuery) {
        return baseMapper.listExport(orderQuery);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTechnicalTitleServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
@@ -16,6 +17,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -35,8 +37,9 @@
    public PageInfo<TTechnicalTitle> pageList(RegionQuery regionQuery) {
        PageInfo<TTechnicalTitle> pageInfo = new PageInfo<>(regionQuery.getPageNum(), regionQuery.getPageSize());
        List<TTechnicalTitle> list = this.baseMapper.pageList(regionQuery,pageInfo);
        List<TRegion> regions = regionMapper.selectList(new LambdaQueryWrapper<TRegion>());
        for (TTechnicalTitle tTechnicalTitle : list) {
            List<TRegion> tRegions = regionMapper.selectBatchIds(Arrays.asList(tTechnicalTitle.getRegionIds().split(",")));
            List<TRegion> tRegions = regions.stream().filter(region -> tTechnicalTitle.getRegionIds().contains(region.getId() + "")).collect(Collectors.toList());
            tRegions.stream().forEach(region -> region.setAddress(region.getProvinceName()+"-"+region.getName()));
            tTechnicalTitle.setRegionNames(tRegions.stream().map(region -> region.getAddress()).reduce((a, b) -> a + "、" + b).get());
        }
ruoyi-system/src/main/resources/mapper/system/TOrderMapper.xml
@@ -149,5 +149,56 @@
    </select>
    <select id="listExport" resultType="com.ruoyi.system.domain.TOrder">
        SELECT
        t1.*,
        t2.NAME AS name,
        t2.phone AS phone,
        t2.avatar AS avatar,
        CONCAT( t2.NAME, ' ', t2.phone ) AS user_search,
        COALESCE ( t_course.course_name, t_information.information_name,'工作总结生成' ) AS good_name,
        COALESCE ( t_course.course_cover, t_information.information_cover ) AS cover,
        CONCAT(COALESCE ( t_course.course_name, t_information.information_name ),' ',t1.code) as orderSearch
        FROM
        t_order t1
        LEFT JOIN t_app_user t2 ON t1.user_id = t2.id
        LEFT JOIN ( SELECT id, course_name AS course_name,course_cover FROM t_course ) t_course ON t1.good_id = t_course.id
        AND t1.good_type = 1
        LEFT JOIN ( SELECT id, information_name AS information_name,information_cover FROM t_information ) t_information ON t1.good_id = t_information.id
        AND t1.good_type = 2
        LEFT JOIN ( SELECT id,'工作总结生成' AS recordsName,user_id FROM t_generated_records order by create_time DESC limit 1) t_generated_records ON t1.user_id = t_generated_records.user_id
        AND t1.good_type = 3
        <where>
            t1.is_delete = 0
            <if test="orderQuery.orderSearch != null and orderQuery.orderSearch != ''">
                AND ( t1.code LIKE concat('%',#{orderQuery.orderSearch},'%')
                or t_course.course_name LIKE concat('%',#{orderQuery.orderSearch},'%')
                or t_information.information_name LIKE concat('%',#{orderQuery.orderSearch},'%')
                or COALESCE ( t_course.course_name, t_information.information_name,'工作总结生成' ) LIKE concat('%',#{orderQuery.orderSearch},'%'))
            </if>
            <if test="orderQuery.userSearch != null and orderQuery.userSearch != ''">
                AND (t2.name LIKE concat('%',#{orderQuery.userSearch},'%') OR t2.phone LIKE concat('%',#{orderQuery.userSearch},'%'))
            </if>
            <if test="orderQuery.goodType != null ">
                AND t1.good_type = #{orderQuery.goodType}
            </if>
            <if test="orderQuery.paymentStatus != null">
                AND t1.payment_status = #{orderQuery.paymentStatus}
            </if>
            <if test="orderQuery.paymentType != null">
                AND t1.payment_type = #{orderQuery.paymentType}
            </if>
            <if test="orderQuery.createTime1 != null">
                AND DATE(t1.create_time) >= #{orderQuery.createTime1}
            </if>
            <if test="orderQuery.createTime2 != null">
                AND DATE(t1.create_time) &lt;= #{orderQuery.createTime2}
            </if>
            <if test="orderQuery.userId != null ">
                AND t1.user_id = #{orderQuery.userId}
            </if>
        </where>
        order by t1.create_time desc
    </select>
</mapper>