Jelajahi Sumber

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

liubing 3 tahun lalu
induk
melakukan
08d8a21760

+ 36 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/consult/BaseYunxingChannelDO.java

@ -0,0 +1,36 @@
package com.yihu.jw.entity.care.consult;
import com.yihu.jw.entity.UuidIdentityEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created by yeshijie on 2021/10/11.
 */
@Entity
@Table(name = "base_yunxing_channel")
public class BaseYunxingChannelDO extends UuidIdentityEntity {
    private String sessionId;
    private String channelId;
    @Column(name = "session_id")
    public String getSessionId() {
        return sessionId;
    }
    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }
    @Column(name = "channel_id")
    public String getChannelId() {
        return channelId;
    }
    public void setChannelId(String channelId) {
        this.channelId = channelId;
    }
}

+ 17 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/dao/consult/BaseYunxingChannelDao.java

@ -0,0 +1,17 @@
package com.yihu.jw.care.dao.consult;
import com.yihu.jw.entity.care.booking.BaseBookingServiceDo;
import com.yihu.jw.entity.care.consult.BaseYunxingChannelDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by yeshijie on 2021/10/11.
 */
public interface BaseYunxingChannelDao extends PagingAndSortingRepository<BaseYunxingChannelDO,String>,
        JpaSpecificationExecutor<BaseYunxingChannelDO> {
    @Query("select a from BaseYunxingChannelDO a where a.sessionId = ?1 ")
    BaseYunxingChannelDO findBySessionId(String sessionId);
}

+ 18 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/endpoint/third/patient/PatientNoLoginEndPoint.java

@ -1,6 +1,7 @@
package com.yihu.jw.care.endpoint.third.patient;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.service.consult.ConsultService;
import com.yihu.jw.care.service.course.CourseService;
import com.yihu.jw.care.service.org.BaseOrgService;
import com.yihu.jw.care.service.sign.ServicePackageService;
@ -50,6 +51,8 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
    private ServicePackageService servicePackageService;
    @Autowired
    private PatientNoLoginService patientNoLoginService;
    @Autowired
    private ConsultService consultService;
    /**
     * 获取微信openid
@ -171,4 +174,19 @@ public class PatientNoLoginEndPoint extends EnvelopRestEndpoint {
        }
    }
    @PostMapping(value = "updateChannelId")
    @ApiOperation(value = "保存云信channelId", notes = "保存云信channelId")
    public Envelop updateChannelId(@ApiParam(name = "sessionId", value = "sessionId")
                                   @RequestParam(value = "sessionId", required = true)String sessionId,
                                   @ApiParam(name = "channelId", value = "渠道id")
                                   @RequestParam(value = "channelId", required = true)String channelId) {
        try {
            consultService.updateChannelId(sessionId,channelId);
            return success("保存成功");
        }catch (Exception e) {
            return failedException(e);
        }
    }
}

+ 19 - 0
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/consult/ConsultService.java

@ -2,6 +2,7 @@ package com.yihu.jw.care.service.consult;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.care.dao.consult.BaseYunxingChannelDao;
import com.yihu.jw.care.util.EntranceUtil;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
@ -11,6 +12,7 @@ import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.im.ConsultTeamDoctorDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.consult.BaseYunxingChannelDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
@ -72,6 +74,23 @@ public class ConsultService {
    private BaseDoctorHospitalDao doctorHospitalDao;
    @Autowired
    private EntranceUtil entranceUtil;
    @Autowired
    private BaseYunxingChannelDao yunxingChannelDao;
    /**
     * 保存云信channelId
     * @param sessionId
     * @param channelId
     */
    public void updateChannelId(String sessionId,String channelId){
        BaseYunxingChannelDO channelDO = yunxingChannelDao.findBySessionId(sessionId);
        if(channelDO == null){
            channelDO = new BaseYunxingChannelDO();
            channelDO.setSessionId(sessionId);
        }
        channelDO.setChannelId(channelId);
        yunxingChannelDao.save(channelDO);
    }
    /**
     * 获取居民该机构的最近一次在线咨询

+ 78 - 41
svr/svr-cloud-care/src/main/java/com/yihu/jw/care/service/lifeCare/LifeCareOrderService.java

@ -97,6 +97,8 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
    @Autowired
    private DoctorServicePermissionsService doctorServicePermissionsService;
    //是否开启支付 false 不需要支付
    public static final boolean  isNeedPay = false;
    /**
     * 记录完成情况
@ -450,16 +452,19 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
            logger.error(failMsg);
            return result;
        }
        if(orderDO.getStatus() != LifeCareOrderDO.Status.waitForPay.getType()){
            result.put(ResponseContant.resultFlag, ResponseContant.fail);
            String failMsg = "无法取消工单,已支付的工单需要到我的订单中进行申请退款," + orderId;
            result.put(ResponseContant.resultMsg, failMsg);
            logger.error(failMsg);
            return result;
        if(isNeedPay){
            if(orderDO.getStatus() != LifeCareOrderDO.Status.waitForPay.getType()){
                result.put(ResponseContant.resultFlag, ResponseContant.fail);
                String failMsg = "无法取消工单,已支付的工单需要到我的订单中进行申请退款," + orderId;
                result.put(ResponseContant.resultMsg, failMsg);
                logger.error(failMsg);
                return result;
            }
            BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(orderDO.getId());
            businessOrderDO.setStatus(2);
            businessOrderDao.save(businessOrderDO);
        }
        BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(orderDO.getId());
        businessOrderDO.setStatus(2);
        businessOrderDao.save(businessOrderDO);
//        if(orderDO.getStatus().equals(LifeCareOrderDO.Status.complete.getType())){
//            result.put(ResponseContant.resultFlag, ResponseContant.fail);
//            String failMsg = "只有医生服务前的工单才可取消";
@ -489,16 +494,19 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        lifeCareCancelLogDao.save(cancelLogDO);
        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
//        String first = "key1,您好,您的上门预约服务已退回,点击查看原因";
//        BasePatientDO patient = patientDao.findById(orderDO.getPatient());
//        first  = first.replace("key1", null != patient.getName() ? patient.getName() : "");
//        JSONObject json = new JSONObject();
//        json.put("id", orderDO.getId());
//        List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,patient.getId());
//        if(basePatientWechatDos.size()>0){
//            String openId = basePatientWechatDos.get(0).getOpenid();
//            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",openId,first,null,null,30,json, DateUtil.dateToChineseDate(new Date()),"生活照料已取消");
//        }
        if(!isNeedPay){
            String first = "key1,您好,您的上门预约服务已退回,点击查看原因";
            BasePatientDO patient = patientDao.findById(orderDO.getPatient());
            first  = first.replace("key1", null != patient.getName() ? patient.getName() : "");
            JSONObject json = new JSONObject();
            json.put("id", orderDO.getId());
            List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,patient.getId());
            if(basePatientWechatDos.size()>0){
                String openId = basePatientWechatDos.get(0).getOpenid();
                messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",openId,first,null,null,30,json, DateUtil.dateToChineseDate(new Date()),"生活照料已取消");
            }
        }
        result.put(ResponseContant.resultFlag, ResponseContant.success);
        result.put(ResponseContant.resultMsg, "工单服务已取消!");
        return result;
@ -520,19 +528,37 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        try {
            jsonObjectParam = JSONObject.parseObject(jsonData);
            orderDO = EntityUtils.jsonToEntity(jsonObjectParam.get("order").toString(), LifeCareOrderDO.class);
            //存在未支付的订单不能发起
            boolean bool = lifeCareOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(),
                    new Integer[]{
                            BaseDoorCoachOrderDO.Status.waitForPay.getType()
                    });
            if(isNeedPay){
                //存在未支付的订单不能发起
                boolean bool = lifeCareOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(),
                        new Integer[]{
                                LifeCareOrderDO.Status.waitForPay.getType(),
                                LifeCareOrderDO.Status.waitForAccept.getType(),
                                LifeCareOrderDO.Status.signIn.getType()
                        });
                if(bool){
                    String failMsg = "当前服务对象存在未支付或未完成,无法再次申请!";
                    result.put(ResponseContant.resultFlag, ResponseContant.fail);
                    result.put(ResponseContant.resultMsg, failMsg);
                    logger.error(failMsg);
                    return result;
                }
            }else{
                boolean bool = lifeCareOrderDao.existsByPatientAndStatusIn(orderDO.getPatient(),
                        new Integer[]{
                                LifeCareOrderDO.Status.waitForAccept.getType(),
                                LifeCareOrderDO.Status.signIn.getType()
                        });
                if(bool){
                    String failMsg = "当前服务对象存在未完成,无法再次申请!";
                    result.put(ResponseContant.resultFlag, ResponseContant.fail);
                    result.put(ResponseContant.resultMsg, failMsg);
                    logger.error(failMsg);
                    return result;
                }
            if(bool){
                String failMsg = "当前服务对象存在未支付或未完成,无法再次申请!";
                result.put(ResponseContant.resultFlag, ResponseContant.fail);
                result.put(ResponseContant.resultMsg, failMsg);
                logger.error(failMsg);
                return result;
            }
            Integer type = orderDO.getType();
            if (type==1||type==2){
@ -547,12 +573,14 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
                orderDO.setProxyPatient(proxyPatient);
                orderDO.setProxyPatientName(doctorDO.getName());
                orderDO.setProxyPatientPhone(doctorDO.getMobile());
                List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,orderDO.getPatient());
                if (basePatientWechatDos.size()>0){
                    JSONObject json = new JSONObject();
                    String openId = basePatientWechatDos.get(0).getOpenid();
                    messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","shzldzf",openId,null,null,"请在30分钟内完成支付",3,json,
                            DateUtil.dateToChineseDate(new Date()),"助老员已为您代预约生活照料","待支付");
                if(isNeedPay){
                    List<BasePatientWechatDo> basePatientWechatDos = basePatientWechatDao.findByWechatIdAndPatientId(wxId,orderDO.getPatient());
                    if (basePatientWechatDos.size()>0){
                        JSONObject json = new JSONObject();
                        String openId = basePatientWechatDos.get(0).getOpenid();
                        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","shzldzf",openId,null,null,"请在30分钟内完成支付",3,json,
                                DateUtil.dateToChineseDate(new Date()),"助老员已为您代预约生活照料","待支付");
                    }
                }
            }
            if(StringUtils.isNotBlank(agent)){
@ -597,7 +625,12 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        }
        orderDO.setNumber(orderNoService.getOrderNo(1));
        orderDO.setCreateTime(new Date());
        orderDO.setStatus(0);//待付款状态
        if(isNeedPay){
            orderDO.setStatus(0);//待付款状态
        }else {
            orderDO.setStatus(1);//待(医生)接单
        }
        try {
            BaseAdminServiceDynamic baseAdminServiceDynamic = new BaseAdminServiceDynamic();
@ -628,7 +661,9 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        result.put(ResponseContant.resultMsg, orderDO);
        //发起支付订单
        payService.submitOrder(orderDO.getPatient(),"4",orderDO.getId(),orderDO.getTotalFee().doubleValue());
        if (isNeedPay){
            payService.submitOrder(orderDO.getPatient(),"4",orderDO.getId(),orderDO.getTotalFee().doubleValue());
        }
        //给签约医生发送预约短信
        String sql ="SELECT i.code,r.team_code,pack.org_code,pack.org_name from base_service_package_sign_record sr,base_service_package_record r, base_service_package_item i,base_service_package pack  \n" +
@ -640,9 +675,11 @@ public class LifeCareOrderService extends BaseJpaService<LifeCareOrderDO, LifeCa
        for (BaseDoctorDO doctorDO:doctorDOS){
            try {
                if (StringUtils.isNotBlank(doctorDO.getMobile())){
                    messageUtil.sendTXYSJson("1099805",doctorDO.getMobile(),orderDO.getPatientName());
                    messageUtil.sendTXYSJson("1099807",doctorDO.getMobile(),orderDO.getPatientName(),"生活照料");
                }
            }catch (Exception e){}
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return result;