From 94e9dc3adb80baf6e1d7d56e54a93917996bc339 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 28 四月 2024 11:21:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java |  201 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 187 insertions(+), 14 deletions(-)

diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java b/rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java
index e166013..55ab7ed 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java
+++ b/rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java
@@ -1,26 +1,42 @@
 package cn.stylefeng.rest.modular.work;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import cn.stylefeng.guns.modular.business.dto.CounsellinginfoResponseDTO;
+import cn.stylefeng.guns.modular.business.dto.CourseResponseDTO;
 import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
 import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO;
-import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
-import cn.stylefeng.guns.modular.business.service.IMentalAppointmentService;
-import cn.stylefeng.guns.modular.business.service.IMentalTestRecordService;
+import cn.stylefeng.guns.modular.business.entity.*;
+import cn.stylefeng.guns.modular.business.service.*;
 import cn.stylefeng.guns.modular.business.service.impl.ImBizService;
+import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
+import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi;
+import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
+import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
+import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
+import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
 import cn.stylefeng.roses.kernel.rule.enums.*;
+import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,11 +63,140 @@
      * Corn表达式 @Scheduled(cron = Corn表达式)
      * @Scheduled(cron = "0 0/30 * * * *")
      */
+    @Resource
+    private CacheOperatorApi<List<Object>> roleInfoCacheApi;
+//    @Resource
+//    private CacheOperatorApi<List<Object>> roleInfoCacheApi1;
+    @Resource
+    private CustomerService customerService;
+    @Resource
+    private ICounsellingInfoService counsellingInfoService;
+    @Resource
+    private ICounsellingOrderService counsellingOrderService;
+    @Resource
+    private ICounsellingTagService counsellingTagService;
+    @Resource
+    private ICounsellingSetMealService counsellingSetMealService;
+    @Resource
+    private ICourseService courseService;
+    @Resource
+    private ICourseOrderService courseOrderService;
+//    @Scheduled(fixedRate = 1000 * 60)
+//    public void list1() {
+//        LambdaQueryWrapper<Course> lambdaQueryWrapper = new LambdaQueryWrapper<Course>().eq(Course::getIsDelete,false)
+//                .orderByDesc(Course::getSort,Course::getCreateTime);
+//            lambdaQueryWrapper.eq(Course::getListingStatus,1);
+////        lambdaQueryWrapper.like(StrUtil.isNotBlank(courseRequest.getCourseName()),Course::getCourseName,courseRequest.getCourseName());
+//        List<Course> page = this.courseService.list(lambdaQueryWrapper);
+//
+//        if (CollectionUtil.isNotEmpty(page)){
+//            List<CourseResponseDTO> courseResponseDTOList = BeanUtil.copyToList(page,CourseResponseDTO.class, CopyOptions.create());
+//            //查询当前人是否购买过课程
+//            List<CourseOrder> courseOrderList = this.courseOrderService.list(new LambdaQueryWrapper<CourseOrder>().select(CourseOrder::getCourseId).eq(CourseOrder::getUserId, LoginContext.me().getLoginUser().getUserId()).eq(CourseOrder::getStatusFlag,1));
+//            if (CollectionUtil.isNotEmpty(courseOrderList)){
+//                List<Long> courseIds = courseOrderList.stream().map(CourseOrder::getCourseId).collect(Collectors.toList());
+//                courseResponseDTOList.forEach(course1 -> {
+//                    if (courseIds.contains(course1.getId())){
+//                        course1.setIsBuy(true);
+//                        CourseOrder courseOrder = this.courseOrderService.getOne(new LambdaQueryWrapper<CourseOrder>().select(CourseOrder::getId).eq(CourseOrder::getUserId, LoginContext.me().getLoginUser().getUserId()).eq(CourseOrder::getStatusFlag,1)
+//                                .eq(CourseOrder::getCourseId,course1.getId()).orderByAsc(CourseOrder::getPayTime)
+//                                .last(" limit 1 "));
+//                        if(courseOrder != null){
+//                            course1.setCourseOrderId(courseOrder.getId());
+//                        }
+//                    }else{
+//                        course1.setIsBuy(false);
+//                    }
+//                });
+//            }
+//            roleInfoCacheApi.put("course", Collections.singletonList(courseResponseDTOList));
+//        }
+//
+//
+//
+//
+//    }
+//        @Scheduled(fixedRate = 1000 * 60)
+//
+//    public void list() {
+//        LambdaQueryWrapper<CounsellingInfo> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingInfo>().eq(CounsellingInfo::getIsDelete,false)
+//                .orderByDesc(CounsellingInfo::getSort,CounsellingInfo::getCreateTime).eq(CounsellingInfo::getListingStatus,1);
+//        //默认普通查询
+////        if (searchType != null  && searchType.intValue() == 1){
+//            List<Customer> customerList1 = customerService.getWorkerListByLineStatusAndPost(null, null, PostIdEnum.PO_22.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
+//            if (CollectionUtil.isNotEmpty(customerList1)){
+//                List<Long> customerIds = customerList1.stream().map(Customer::getCustomerId).collect(Collectors.toList());
+//                lambdaQueryWrapper.in(CounsellingInfo::getUserId,customerIds);
+//            }
+////        }
+//        List<CounsellingInfo> page = this.counsellingInfoService.list(lambdaQueryWrapper);
+//        if (CollectionUtil.isNotEmpty(page)){
+//            List<Long> counseIds = page.stream().map(CounsellingInfo::getId).collect(Collectors.toList());
+//            QueryWrapper<CounsellingOrder> orderQueryWrapper = new QueryWrapper<CounsellingOrder>().select("counselling_info_id counsellingInfoId,count(1) num ");
+//            //查询是否首次咨询
+//            orderQueryWrapper.lambda().eq(CounsellingOrder::getUserId,LoginContext.me().getLoginUser().getUserId()).in(CounsellingOrder::getStatusFlag,1,2).in(CounsellingOrder::getCounsellingInfoId,counseIds)
+//                    .eq(CounsellingOrder::getOrderType,1).groupBy(CounsellingOrder::getCounsellingInfoId).having(" num > 0 ");
+//            List<Map<String,Object>> mapList = this.counsellingOrderService.listMaps(orderQueryWrapper);
+//            Map<Long,Object> fristMap = new HashMap<>();
+//            if (CollectionUtil.isNotEmpty(mapList)){
+//
+//                mapList.stream().forEach(stringObjectMap -> {
+//                    fristMap.put(Long.parseLong(stringObjectMap.get("counsellingInfoId").toString()),stringObjectMap.get("num"));
+//                });
+//            }
+//            //查询标签总条数
+//            List<CounsellingTag> counsellingTags = this.counsellingTagService.list(new LambdaQueryWrapper<CounsellingTag>()
+//                    .select(CounsellingTag::getId,CounsellingTag::getTagName));
+//            List<Long> custommerIds = page.stream().map(CounsellingInfo::getUserId).collect(Collectors.toList());
+//            //查询客户ids
+//            List<Customer> customerList = this.customerService.list(new LambdaQueryWrapper<Customer>().select(Customer::getCustomerId,Customer::getNickName).in(Customer::getCustomerId,custommerIds));
+//            //查询套餐最低价
+//            List<Map<String,Object>> lowMapList = this.counsellingSetMealService.listMaps(new QueryWrapper<CounsellingSetMeal>().select(" counselling_info_id counsellingInfoId,IFNULL(min(price),0) price ").lambda().in(CounsellingSetMeal::getCounsellingInfoId,counseIds)
+//                    .eq(CounsellingSetMeal::getSetMealType,1).eq(CounsellingSetMeal::getIsDelete,0));
+//
+//            List<CounsellinginfoResponseDTO> counsellinginfoResponseDTOS = BeanUtil.copyToList(page,CounsellinginfoResponseDTO.class, CopyOptions.create());
+//            counsellinginfoResponseDTOS.stream().forEach(counsellinginfoResponseDTO -> {
+//                if (fristMap.get(counsellinginfoResponseDTO.getId()) != null){
+//                    counsellinginfoResponseDTO.setIsFirstBuy(true);
+//                }
+//                if (StrUtil.isNotBlank(counsellinginfoResponseDTO.getCounsellingTagIds())){
+//                    List<String> counsellingTagList = Arrays.asList(counsellinginfoResponseDTO.getCounsellingTagIds().split(","));
+//                    String tagNames = counsellingTags.stream().filter(cou -> counsellingTagList.contains(cou.getId().toString())).map(CounsellingTag::getTagName).collect(Collectors.joining(","));
+//                    //获取课程标签名称
+////                    LambdaQueryWrapper<CounsellingTag> counsellingTagLambdaQueryWrapper = new QueryWrapper<CounsellingTag>().select(" GROUP_CONCAT(tag_name)  tagName ").lambda();
+////                    Map<String,Object> map = counsellingTagService.getMap(counsellingTagLambdaQueryWrapper.in(CounsellingTag::getId,counsellinginfoResponseDTO.getCounsellingTagIds().split(",")));
+////                    if (ObjectUtil.isNotEmpty(map)){
+//                    counsellinginfoResponseDTO.setCounsellingTagNames(tagNames);
+////                    }
+//                }
+//                counsellinginfoResponseDTO.setPersonalProfile(null);
+//
+//                counsellinginfoResponseDTO.setNikeName(customerList.stream().filter(cus -> counsellinginfoResponseDTO.getUserId().longValue() == cus.getCustomerId().longValue()).findFirst().get().getNickName());
+//
+////                BigDecimal lowPrice = this.counsellingSetMealService.getObj(new QueryWrapper<CounsellingSetMeal>().select(" counselling_info_id counsellingInfoId,IFNULL(min(price),0) price ").lambda().eq(CounsellingSetMeal::getCounsellingInfoId,counsellinginfoResponseDTO.getId())
+////                        .eq(CounsellingSetMeal::getSetMealType,1).eq(CounsellingSetMeal::getIsDelete,0),Convert::toBigDecimal);
+//
+//
+//                if (CollectionUtil.isNotEmpty(lowMapList)){
+//                    lowMapList.stream().forEach(stringObjectMap -> {
+//                        if (stringObjectMap.get("counsellingInfoId") != null){
+//                            counsellinginfoResponseDTO.setLowPrice(new BigDecimal(stringObjectMap.get("price").toString()));
+//                        }
+//                    });
+//                    if (counsellinginfoResponseDTO.getLowPrice() == null){
+//                        counsellinginfoResponseDTO.setLowPrice(new BigDecimal(0));
+//                    }
+//                }
+//
+//
+//            });
+//            roleInfoCacheApi.put("customer", Collections.singletonList(counsellinginfoResponseDTOS));
+//        }
+//    }
     @Scheduled(fixedRate = 1000 * 30)
     public void autoStartMentalAppointment() {
         // 当前时间
         DateTime dateTime = DateUtil.date();
-
         // 待开始预约单
         List<MentalAppointment> mentalAppointmentList = mentalAppointmentService.list(
                 Wrappers.<MentalAppointment>lambdaUpdate()
@@ -68,10 +213,11 @@
         }
 
         for (MentalAppointment o : mentalAppointmentList) {
-            MentalTestMyTestTopicDTO mentalTestMyTestTopicDTO = myTestRecordTopicList.stream().filter(rt -> rt.getMentalAppointmentId().equals(o.getId())).findFirst().orElse(new MentalTestMyTestTopicDTO());
+            if (o.getType()==null) {
+                MentalTestMyTestTopicDTO mentalTestMyTestTopicDTO = myTestRecordTopicList.stream().filter(rt -> rt.getMentalAppointmentId().equals(o.getId())).findFirst().orElse(new MentalTestMyTestTopicDTO());
 
-            // 发送IM消息
-            ImPushDataDTO pushData = ImPushDataDTO.builder()
+                // 发送IM消息
+                ImPushDataDTO pushData = ImPushDataDTO.builder()
                         .type(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT.getCode())
                         .title(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT.getName())
                         .content("做了"
@@ -82,11 +228,12 @@
                         .data2(ObjUtil.toString(o.getWorkerId()))
                         .data3(ObjUtil.toString(mentalTestMyTestTopicDTO.getId()))
                         .build();
-            imBizService.messageSendPrivate(
-                    ObjUtil.toString(o.getUserId()),
-                    new String[]{ObjUtil.toString(o.getWorkerId())},
-                    pushData
-            );
+                imBizService.messageSendPrivate(
+                        ObjUtil.toString(o.getUserId()),
+                        new String[]{ObjUtil.toString(o.getWorkerId())},
+                        pushData
+                );
+            }
 
             // 开始预约咨询
             mentalAppointmentService.update(
@@ -99,6 +246,32 @@
         }
     }
 
+//    @Scheduled(fixedRate = 1000 * 30)
+//    public void autoStartMentalAppointment1() {
+//        // 当前时间
+//        DateTime dateTime = DateUtil.date();
+//        // 待开始预约单
+//        List<MentalAppointment> mentalAppointmentList = mentalAppointmentService.list(
+//                Wrappers.<MentalAppointment>lambdaUpdate()
+//                        .eq(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.WAIT_SERVICE.getCode())
+//                        .eq(MentalAppointment::getType,"1")
+//                        .apply("DATE_ADD(appointment_day, INTERVAL TIME_TO_SEC(begin_time_point) SECOND) < NOW()")
+////                        .le(MentalAppointment::getAppointmentDay, dateTime.toDateStr())
+////                        .le(MentalAppointment::getBeginTimePoint, DateUtil.format(dateTime, "HH:mm"))
+//        );
+//
+//        for (MentalAppointment o : mentalAppointmentList) {
+//            // 开始预约咨询
+//            mentalAppointmentService.update(
+//                    Wrappers.<MentalAppointment>lambdaUpdate()
+//                            .eq(MentalAppointment::getId, o.getId())
+//                            .set(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.IN_SERVICE.getCode())
+//                            .set(MentalAppointment::getConsultStatus, MentalAppointmentConsultStatusEnum.IN_CONSULT.getCode())
+//            );
+//            log.info("开始预约咨询: {}", JSONUtil.toJsonStr(o));
+//        }
+//    }
+
     @Scheduled(fixedRate = 1000 * 60)
     public void autoEndMentalAppointment() {
         // 当前时间

--
Gitblit v1.7.1