package com.java110.job.msgNotify; import com.alibaba.fastjson.JSONObject; import com.java110.core.log.LoggerFactory; import com.java110.job.adapt.Repair.MachineAddOwnerRepairAdapt; import com.java110.utils.cache.MappingCache; import com.java110.utils.constant.MappingConstant; import com.java110.utils.factory.ApplicationContextFactory; import com.java110.utils.util.StringUtil; import com.java110.vo.ResultVo; import org.slf4j.Logger; import java.util.List; /** * 消息通知工具类 */ public class MsgNotifyFactory { private static Logger logger = LoggerFactory.getLogger(MsgNotifyFactory.class); public static final String DEFAULT_MSG_NOTIFY_WAY = "DEFAULT_MSG_NOTIFY_WAY"; public static final String NOTIFY_WAY_WECHAT = "WECHAT"; public static final String NOTIFY_WAY_ALI = "ALI"; public static final String NOTIFY_WAY_TENCENT = "TENCENT"; public static final String ROLE_OWNER = "OWNER"; // 业主 public static final String ROLE_STAFF = "STAFF"; // 员工 /** * 发送退费申请 消息 * * @param userId * @param content { * detailId:'', * name:'' * } * @return */ public static ResultVo sendApplyReturnFeeMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendApplyReturnFeeMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 申请退费 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 发送欠费 账单信息 * * @param communityId 小区 * @param userId 用户 * @param contents [{ * "feeTypeName", * "payerObjName", * "billAmountOwed", * "date", * url * }] */ public static ResultVo sendOweFeeMsg(String communityId, String userId, String ownerId, List contents, String notifyWay) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(notifyWay); resultVo = msgNotify.sendOweFeeMsg(communityId, userId,ownerId, contents); } catch (Exception e) { e.printStackTrace(); logger.error("通知 发送欠费 账单信息 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 发送欠费 账单信息 * * @param communityId 小区 * @param userId 用户 * @param contents [{ * "feeTypeName", * "payerObjName", * "billAmountOwed", * "date", * url * }] */ public static ResultVo sendOweFeeMsg(String communityId, String userId,String ownerId, List contents) { return sendOweFeeMsg(communityId,userId, ownerId,contents,null); } /** * 发送缴费成功提醒 * * @param communityId 小区 * @param userId 用户 * @param content { * "payFeeRoom", * "feeTypeCdName", * "payFeeTime", * "receivedAmount", * url * } */ public static ResultVo sendPayFeeMsg(String communityId, String userId, JSONObject content, String role) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendPayFeeMsg(communityId, userId, content, role); } catch (Exception e) { e.printStackTrace(); logger.error("通知 发送缴费成功提醒 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 业主报修时 * * @param communityId 小区 * @param userId 用户 * @param content { * repairId, * repairTypeName, * repairObjName, * repairName, * url * } * @return */ public static ResultVo sendAddOwnerRepairMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendAddOwnerRepairMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 业主报修时 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 派单给维修师傅 * * @param communityId 小区 * @param userId 用户 * @param content { * repairId, * repairName, * tel, * time, * address * } * @return */ public static ResultVo sendDistributeRepairStaffMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendDistributeRepairStaffMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 派单给维修师傅 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 派单给业主通知 * * @param communityId 小区 * @param userId 用户 * @param content { * name, * tel, * time, * url * } * @return */ public static ResultVo sendDistributeRepairOwnerMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendDistributeRepairOwnerMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 派单给维修师傅 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 报修完成给业主通知 * * @param communityId 小区 * @param userId 用户 * @param content { * repairObjName, * staffName, * time, * url * } * @return */ public static ResultVo sendFinishRepairOwnerMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendFinishRepairOwnerMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 报修完成给业主通知 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 退单给业主发送消息 * * @param communityId 小区 * @param userId 用户 * @param content { * repairId, * repairTypeName, * repairObjName, * repairName, * url * } * @return */ public static ResultVo sendReturnRepairMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendReturnRepairMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 业主报修时 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * oa 流程待审批通知 * * @param communityId 小区 * @param userId 用户 * @param content { * flowName, * create_user_name, * create_time, * url * } * @return */ public static ResultVo sendOaDistributeMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendOaDistributeMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 业主报修时 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * oa 流程通知发起人 * * @param communityId 小区 * @param userId 用户 * @param content { * flowName, * staffName, * url * } * @return */ public static ResultVo sendOaCreateStaffMsg(String communityId, String userId, JSONObject content) { ResultVo resultVo = null; try { IMsgNotify msgNotify = getMsgNotify(); resultVo = msgNotify.sendOaCreateStaffMsg(communityId, userId, content); } catch (Exception e) { e.printStackTrace(); logger.error("通知 业主报修时 消息", e); resultVo = new ResultVo(ResultVo.CODE_ERROR, e.getMessage()); } return resultVo; } /** * 获取通知适配器 * * @return */ private static IMsgNotify getMsgNotify() { return getMsgNotify(null); } /** * 获取通知适配器 * * @param notifyWay * @return */ private static IMsgNotify getMsgNotify(String notifyWay) { IMsgNotify notify = null; if (StringUtil.isEmpty(notifyWay)) { notifyWay = MappingCache.getValue(MappingConstant.ENV_DOMAIN, DEFAULT_MSG_NOTIFY_WAY); } if (StringUtil.isEmpty(notifyWay)) { notifyWay = NOTIFY_WAY_WECHAT; } switch (notifyWay) { case NOTIFY_WAY_TENCENT: notify = ApplicationContextFactory.getBean("tencentMsgNotifyImpl", IMsgNotify.class); break; case NOTIFY_WAY_WECHAT: notify = ApplicationContextFactory.getBean("wechatMsgNotifyImpl", IMsgNotify.class); break; case NOTIFY_WAY_ALI: notify = ApplicationContextFactory.getBean("aliMsgNotifyImpl", IMsgNotify.class); break; } return notify; } }