guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingOrderServiceImpl.java
@@ -16,6 +16,7 @@
import cn.stylefeng.guns.modular.business.service.*;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.*;
@@ -28,6 +29,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -64,7 +66,8 @@
    private ICounsellingUserService counsellingUserService;
    @Resource
    private IAreaService areaService;
    @Resource
    IMentalAppointmentService mentalAppointmentService;
    @Override
    public Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest) {
@@ -153,6 +156,43 @@
                    Boolean update = customerService.updateCustomerRemoveCache(customer);
                    counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest));
                }
//                Date firstAppointmentDate = counsellingOrderRequest.getFirstAppointmentDate();
//// 创建一个 SimpleDateFormat 实例,指定日期格式为 "yyyy-MM-dd"
//                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
//
//// 使用 formatter 将 Date 对象转换为字符串
//                String formattedDate = formatter.format(firstAppointmentDate);
//                // 发送IM消息
//            ImPushDataDTO pushData1 = ImPushDataDTO.builder()
//                    .type(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT.getCode())
//                    .title(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT.getName())
//                    .content("预约成功"+",请注意预约时间:"+formattedDate+counsellingOrderRequest.getFirstAppointmentTimes())
////                    .content("预约成功!")
//                    .objId(ObjUtil.toString(counsellingInfo.getId()))
//                    .data1(ObjUtil.toString(counsellingOrder.getUserId()))
//                    .data2(ObjUtil.toString(counsellingInfo.getUserId()))
//                    .build();
//            imBizService.messageSendPrivate(
//                    ObjUtil.toString(counsellingOrder.getUserId()),
//                    new String[]{ObjUtil.toString(counsellingInfo.getUserId())},
//                    pushData1
//
//
//            );
//                //将此条消息加入到可聊天的表中t_mental_appointment
//                MentalAppointment mentalAppointment = MentalAppointment.builder()
//                        .userId(counsellingOrder.getUserId())
//                        .appointmentDay(counsellingOrderRequest.getFirstAppointmentDate())
//                        .beginTimePoint(counsellingOrderRequest.getFirstAppointmentTimes().split("-")[0])
//                        .endTimePoint(counsellingOrderRequest.getFirstAppointmentTimes().split("-")[1])
//                        .workerId(counsellingInfo.getUserId())
//                        .build();
//                // 用户信息
//                CustomerInfo customerInfo = customerService.getCustomerInfoById(counsellingOrder.getUserId());
//                mentalAppointment.setUserName(customerInfo.getRealName());
//                mentalAppointment.setPhone(customerInfo.getLinkPhone());
//                mentalAppointmentService.save(mentalAppointment);
            }
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
@@ -179,6 +219,26 @@
                }
            }
//            iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
//            // 推送消息内容
//            String pushContent = "你有新的预约,请注意查收。预约用户:"+customerOld.getNickName();
////                    +"预约时间:"+counsellingOrder.getEffectiveEndTime()+"~"+counsellingOrder.getEffectiveEndTime();
//            // IM推送数据json
//            ImPushDataDTO pushData = ImPushDataDTO.builder()
//                    .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_GROUP_SUCCESS_ONLY.getCode())
//                    .objId(ObjUtil.toString(counsellingInfo.getUserId()))
//                    .title("通知")
//                    .content(pushContent)
////                    .extra("去查看。")
//                    .build();
//            // 发送预约提示
//            imBizService.messageSendSystem(counsellingOrder.getUserId()+"", new String[]{counsellingInfo.getUserId()+""}, pushData, ImUserTypeEnum.WORKER, PostIdEnum.PO_22, true);
        }else if (counsellingOrderRequest.getOrderType().intValue() ==2){
            //获取下单人个人信息
            Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId());
@@ -457,6 +517,83 @@
            //预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝 - 首次面诊直接待服务
            counsellingOrderReservation.setStauts(2);
            this.counsellingOrderReservationService.save(counsellingOrderReservation);
            //新增
//            iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
            //新增
            //将此条消息加入到可聊天的表中t_mental_appointment
            MentalAppointment mentalAppointment = MentalAppointment.builder()
                    .userId(counsellingOrder.getUserId())
                    .type("1")
                    .statusFlag(1)
                    .appointmentDay(counsellingOrder.getFirstAppointmentDate())
                    .beginTimePoint(counsellingOrder.getFirstAppointmentTimes().split("-")[0])
                    .endTimePoint(counsellingOrder.getFirstAppointmentTimes().split("-")[1])
                    .workerId(counsellingInfo.getUserId())
                    .build();
            // 用户信息
            CustomerInfo customerInfo = customerService.getCustomerInfoById(counsellingOrder.getUserId());
            mentalAppointment.setUserName(customerInfo.getRealName());
            mentalAppointment.setPhone(customerInfo.getLinkPhone());
            mentalAppointmentService.save(mentalAppointment);
            // 创建一个 SimpleDateFormat 实例,指定日期格式为 "yyyy-MM-dd"
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// 使用 formatter 将 Date 对象转换为字符串
            String formattedDate = formatter.format(counsellingOrder.getFirstAppointmentDate());
            // 发送IM消息
            ImPushDataDTO pushData1 = ImPushDataDTO.builder()
                    .type(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT_FIRST.getCode())
                    .title(ImPushTypeEnum.C_TO_W_IM_1V1_START_CONSULT_FIRST.getName())
                    .content("预约成功"+",请注意预约时间:"+formattedDate+counsellingOrder.getFirstAppointmentTimes())
//                    .content("预约成功!")
                    .objId(ObjUtil.toString(counsellingInfo.getId()))
                    .data1(ObjUtil.toString(counsellingOrder.getUserId()))
                    .data2(ObjUtil.toString(counsellingInfo.getUserId()))
                    .build();
            imBizService.messageSendPrivate(
                    ObjUtil.toString(counsellingOrder.getUserId()),
                    new String[]{ObjUtil.toString(counsellingInfo.getUserId())},
                    pushData1);
            // 推送消息内容
            String pushContent = "你的预约("+DateUtil.formatDate(counsellingOrder.getFirstAppointmentDate())+" "+counsellingOrder.getFirstAppointmentTimes()+")已确认,请按时参加";
            // IM推送数据json
            ImPushDataDTO pushData = ImPushDataDTO.builder()
                    .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_SUCCESS.getCode())
                    .objId(ObjUtil.toString(counsellingOrderReservation.getId()))
                    .title("通知")
                    .data1(ObjUtil.toString(counsellingInfo.getUserId()))
                    .data2(ObjUtil.toString(counsellingOrder.getUserId()))
                    .content(pushContent)
//                    .extra("("+DateUtil.formatDate(counsellingOrder.getFirstAppointmentDate())+" "+counsellingOrder.getFirstAppointmentTimes()+")")
                    .build();
            // 发送首次预约
            imBizService.messageSendSystem(counsellingOrderReservation.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData, ImUserTypeEnum.USER, null, true);
            //给咨询师发消息
            Customer customerOld = this.customerService.getById(counsellingOrderReservation.getUserId());
            String pushContent1 = "你有新的预约,请注意查收。预约用户:"+customerOld.getNickName()+",预约时间:"+DateUtil.formatDate(counsellingOrder.getFirstAppointmentDate())+" "+counsellingOrder.getFirstAppointmentTimes();
//                    +"预约时间:"+counsellingOrder.getEffectiveEndTime()+"~"+counsellingOrder.getEffectiveEndTime();
            // IM推送数据json
            ImPushDataDTO pushData2 = ImPushDataDTO.builder()
                    .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_GROUP_SUCCESS.getCode())
                    .objId(ObjUtil.toString(counsellingInfo.getUserId()))
                    .title("通知")
                    .content(pushContent1)
                    .data1(ObjUtil.toString(counsellingOrder.getUserId()))
                    .data2(ObjUtil.toString(counsellingInfo.getUserId()))
//                    .extra("去查看。")
                    .build();
            // 发送预约提示
            imBizService.messageSendSystem(counsellingOrder.getUserId()+"", new String[]{counsellingInfo.getUserId()+""}, pushData2, ImUserTypeEnum.WORKER, PostIdEnum.PO_22, true);
            // 推送消息内容
//            String pushContent = "我购买了心理咨询疗程,需要咨询";