/** * */ package com.zteits.pay.biz; import java.util.*; import java.util.function.Consumer; import org.apache.commons.collections4.CollectionUtils; import com.zteits.clouds.api.apibase.constants.*; import com.zteits.clouds.api.dto.inspect.msgpush.InspectMsgPushDTO; import com.zteits.clouds.api.dto.inspect.param.JPushMsgForInspectRequest; import com.zteits.clouds.api.dto.order.parkorder.dto.OrderParkQueryDTO; import com.zteits.clouds.api.dto.owner.dto.TdCCustSuggestDTO; import com.zteits.clouds.api.dto.owner.param.QueryMessageRequest; import com.zteits.clouds.api.dto.pay.*; import com.zteits.clouds.api.dto.pay.param.*; import com.zteits.clouds.api.dto.pda.msgpush.InspectMsgTypeEnum; import com.zteits.clouds.api.dto.pda.msgpush.PDAMsgTypeEnum; import com.zteits.pay.dao.TdCCustSuggestDao; import com.zteits.pay.domain.*; import com.zteits.pay.util.JPushForInspectUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.clouds.common.cache.sys.SysCodeValueCacheUtil; import com.clouds.common.constants.CodeValKindEnum; import com.clouds.common.constants.WxPublicTmepleteEnum; import com.clouds.common.utils.DateUtil; import com.clouds.common.utils.MsgTemplateUtil; import com.clouds.common.utils.ResultUtils; import com.clouds.common.utils.WxConfigUtil; import com.github.pagehelper.PageInfo; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.dto.clouds.param.GetEmployeeRequest; import com.zteits.clouds.api.dto.order.parkorder.param.OrderParkDataRequest; import com.zteits.clouds.api.dto.park.dto.TpEEmployeeChargeDTO; import com.zteits.clouds.api.dto.pda.msgpush.InOutParkMsgPushDTO; import com.zteits.clouds.api.dto.pda.msgpush.PDAMsgPushDTO; import com.zteits.clouds.api.service.clouds.TpEEmployeeChargeService; import com.zteits.clouds.api.service.pay.JPushService; import com.zteits.pay.dao.TdCCustPersonDao; import com.zteits.pay.dao.TdCMsgTemplateDao; import com.zteits.pay.dao.TdCPushMsgDao; import com.zteits.pay.pagepager.PageBeanUtil; import com.zteits.pay.service.jpushmsg.oper.JPushMsgOperInnerService; import com.zteits.pay.util.JPushForPDAUtil; import com.zteits.pay.util.JPustUtil; import com.zteits.pay.weixinpublic.util.TemplateData; import com.zteits.pay.weixinpublic.util.WeixinUtil; import com.zteits.pay.weixinpublic.util.WxTemplate; import cn.jpush.api.push.PushResult; /** * @author hxz * */ @Service("com.zteits.pay.biz.JPushServiceImpl") public class JPushServiceImpl implements JPushService { private static final Logger logger = LoggerFactory.getLogger(JPushServiceImpl.class); @Autowired private TdCPushMsgDao tdCPushMsgDao; @Autowired private TdCMsgTemplateDao tdCMsgTemplateDao; @Autowired private TdCCustPersonDao tdCCustPersonDao; @Autowired private TpEEmployeeChargeService eEmployeeChargeService; @Autowired private JPushMsgOperInnerService jPushMsgOperInnerService; @Autowired private TdCCustSuggestDao tdCCustSuggestDao; /** * 消息中心首页,查询各消息类型的最新一条 */ @Override public BizResult> getLatestPushedMessages(JPushMessageRequest request) { List messageDOList = tdCPushMsgDao.getLatestPushedMessages(request); List messageDTOList = null; if (null != messageDOList) { messageDTOList = JSON.parseArray(JSON.toJSONString(messageDOList, false), JPushMessageDTO.class); } return new BizResult>(messageDTOList); } /** * 消息中心-消息详情,查询某一消息的详情 */ @Override public BizResult> getPushedMessageDetails(JPushMessageRequest request) { List messageDOList = tdCPushMsgDao.getPushedMessageDetails(request); List messageDTOList = null; if (null != messageDOList) { messageDTOList = JSON.parseArray(JSON.toJSONString(messageDOList, false), JPushMessageDTO.class); } return new BizResult>(messageDTOList); } /** * 消息中心-消息详情,删除某一消息的详情 */ @Override public void deletePushedMessageDetails(JPushMessageRequest request) { tdCPushMsgDao.deletePushedMessageDetails(request); } @Override public BizResult insertSelective(JPushMessageRequest request) { TdCPushMsg tdCPushMsg = new TdCPushMsg(); BeanUtils.copyProperties(request, tdCPushMsg); tdCPushMsg.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); tdCPushMsg.setCreateDate(new Date()); tdCPushMsg.setModfiyDate(new Date()); Integer i = tdCPushMsgDao.insertSelective(tdCPushMsg); return new BizResult(i); } @Override public BizResult sendaAndroidMessage(JPushMessageRequest request) { PushResultDTO pushResultDTO = new PushResultDTO(); TdCCustPerson tdCCustPerson = tdCCustPersonDao.queryPersonByCustId(request.getCustId()); if(tdCCustPerson != null && StringUtils.isNotEmpty(tdCCustPerson.getAlias())){ PushResult pushResult = JPustUtil.sendaAndroidMessage(request.getMsgTitle(), request.getMsgContent(), tdCCustPerson.getAlias()); if(pushResult.isResultOK() && pushResult != null){ BeanUtils.copyProperties(pushResult, pushResultDTO); } } return new BizResult(pushResultDTO); } @Override public BizResult sendaIosMessage(JPushMessageRequest request) { PushResultDTO pushResultDTO = new PushResultDTO(); TdCCustPerson tdCCustPerson = tdCCustPersonDao.queryPersonByCustId(request.getCustId()); if(tdCCustPerson != null && StringUtils.isNotEmpty(tdCCustPerson.getAlias())){ PushResult pushResult = JPustUtil.sendaIosMessage(request.getMsgTitle(), request.getMsgContent(), tdCCustPerson.getAlias()); if(pushResult.isResultOK() && pushResult != null){ BeanUtils.copyProperties(pushResult, pushResultDTO); } } return new BizResult(pushResultDTO); } @Override public void sendAcctBalanceLessPush(JPushMessageRequest request) { TdCMsgTemplate tdCMsgTemplate = tdCMsgTemplateDao.queryMsgTempleteByTempleteId(request.getTempleteId()); String content = ""; String title = ""; if (tdCMsgTemplate != null) { Map datas = new HashMap(); /** 消息推送模板 */ Integer acctFeeLessNum = SysCodeValueCacheUtil.queryCodeValue(CodeValKindEnum.ACCT_FEE_LESS_PUSH_NUM) == null ? 500 : Integer.parseInt(SysCodeValueCacheUtil.queryCodeValue(CodeValKindEnum.ACCT_FEE_LESS_PUSH_NUM)); datas.put("lessFee", String.valueOf(acctFeeLessNum / 100)); content = MsgTemplateUtil.render(tdCMsgTemplate.getTemplateContent(), datas); title = tdCMsgTemplate.getTemplateTitle(); TdCCustPerson tdCCustPerson = tdCCustPersonDao.queryPersonByCustId(request.getCustId()); if (tdCCustPerson != null && StringUtils.isNotEmpty(tdCCustPerson.getAlias())) { JPustUtil.sendPush(content, tdCCustPerson.getAlias(), request.getMsgType() + "",tdCCustPerson.getDeivceType()); TdCPushMsg record = new TdCPushMsg(); record.setMsgContent(content); record.setMsgTitle(title); record.setMsgType(request.getMsgType()); record.setTempleteId(tdCMsgTemplate.getTemplateId()); record.setPushType(request.getPushType()); record.setReturnType(request.getReturnType()); record.setReadType(MSGTypeEnum.MSG_READ_NO.value()); record.setCustId(request.getCustId()); record.setDataState(1); record.setCreateDate(new Date()); record.setModfiyDate(new Date()); record.setOutMsgNo(request.getOutMsgNo()); tdCPushMsgDao.insertSelective(record); } } } @Override public void sendZFPush(JPushMessageRequest request) { TdCMsgTemplate tdCMsgTemplate = tdCMsgTemplateDao.queryMsgTempleteByTempleteId(request.getTempleteId()); String content = ""; String title = ""; if (tdCMsgTemplate != null) { Map datas = new HashMap(); /** 消息推送模板 */ datas.put("carNumber", request.getVplNumber()); datas.put("parkName", request.getPlName()); datas.put("amount", request.getAmount() + "元"); datas.put("payTypeName", request.getPayTypeName()); content = MsgTemplateUtil.render(tdCMsgTemplate.getTemplateContent(), datas); title = tdCMsgTemplate.getTemplateTitle(); TdCCustPerson tdCCustPerson = tdCCustPersonDao.queryPersonByCustId(request.getCustId()); if (tdCCustPerson != null && StringUtils.isNotEmpty(tdCCustPerson.getAlias())) { JPustUtil.sendPush(content, tdCCustPerson.getAlias(), request.getMsgType() + "", tdCCustPerson.getDeivceType()); TdCPushMsg record = new TdCPushMsg(); record.setMsgContent(content); record.setMsgTitle(title); record.setMsgType(request.getMsgType()); record.setTempleteId(tdCMsgTemplate.getTemplateId()); record.setPushType(request.getPushType()); record.setReturnType(request.getReturnType()); record.setReadType(MSGTypeEnum.MSG_READ_NO.value()); record.setCustId(request.getCustId()); record.setDataState(1); record.setCreateDate(new Date()); record.setModfiyDate(new Date()); record.setOutMsgNo(request.getOutMsgNo()); tdCPushMsgDao.insertSelective(record); } } } @Override public void sendPush4WXPay(JPushWXMessageRequest request) { if(request.getTdBWxConfigDTO()==null){ return; } if (StringUtils.isNotEmpty(request.getTdBWxConfigDTO().getAppid())) { WxTemplate wxTemplate = new WxTemplate(); wxTemplate.setAppid(request.getTdBWxConfigDTO().getAppid()); wxTemplate.setAppsecret(WxConfigUtil.decode(request.getTdBWxConfigDTO().getAppSecret())); wxTemplate.setUrl("http://a.app.qq.com/o/simple.jsp?pkgname=com.zteits.rnting"); wxTemplate.setTouser(request.getOpenId()); wxTemplate.setTopcolor(request.getColor()); Map m = new HashMap(); TemplateData first = new TemplateData(); first.setColor(request.getColor()); first.setValue("尊敬的用户,您已支付成功"); m.put("first", first); TemplateData keyword1 = new TemplateData(); keyword1.setColor(request.getColor()); keyword1.setValue(request.getVplNumber()); m.put("keyword1", keyword1); TemplateData keyword2 = new TemplateData(); keyword2.setColor(request.getColor()); keyword2.setValue(request.getPlName()); m.put("keyword2", keyword2); TemplateData keyword3 = new TemplateData(); keyword3.setColor(request.getColor()); keyword3.setValue(request.getAmount()); m.put("keyword3", keyword3); TemplateData remark = new TemplateData(); remark.setColor(request.getColor()); //remark.setValue("请在15分钟之内离场"); remark.setValue(""); m.put("remark", remark); wxTemplate.setData(m); wxTemplate.setTemplate_id(WxPublicTmepleteEnum.WX_CAR_PAY_MSG.WxPublicTmepleteEName()); try { logger.info(WxPublicTmepleteEnum.WX_CAR_PAY_MSG.WxPublicTmepleteEName() + "微信公共号推送-停车支付\n" + ":" + JSONObject.toJSONString(wxTemplate)); int result = WeixinUtil.sendMessageBefore(wxTemplate); logger.info("推送结果:" + result); } catch (Exception e) { } } } @Override public void sendPush4WXPayCard(JPushWXMessageRequest request) { if (StringUtils.isNotEmpty(request.getTdBWxConfigDTO().getAppid())) { WxTemplate wxTemplate = new WxTemplate(); wxTemplate.setAppid(request.getTdBWxConfigDTO().getAppid()); wxTemplate.setAppsecret(WxConfigUtil.decode(request.getTdBWxConfigDTO().getAppSecret())); wxTemplate.setUrl("http://a.app.qq.com/o/simple.jsp?pkgname=com.zteits.rnting"); wxTemplate.setTouser(request.getOpenId()); wxTemplate.setTopcolor(request.getColor()); Map m = new HashMap(); TemplateData first = new TemplateData(); first.setColor(request.getColor()); first.setValue("尊敬的用户,您已成功购买任你停会员卡"); m.put("first", first); TemplateData productType = new TemplateData(); productType.setColor(request.getColor()); productType.setValue("商品名称"); m.put("productType", productType); TemplateData name = new TemplateData(); name.setColor(request.getColor()); if (request.getOrderDetailType().equals(PayOrderTypeEnum.VIP_CARD_ADDED.value())) { name.setValue("购买会员卡"); } else if (request.getOrderDetailType().equals(PayOrderTypeEnum.VIP_CARD_RENEW.value())) { name.setValue("会员卡续费"); } m.put("name", name); TemplateData number = new TemplateData(); number.setColor(request.getColor()); number.setValue(request.getBuyNum() + ""); m.put("number", number); TemplateData expDate = new TemplateData(); expDate.setColor(request.getColor()); expDate.setValue(DateUtil.getDateString(request.getExpDate(), DateUtil.DATE_FORMAT) + ""); m.put("expDate", expDate); TemplateData remark = new TemplateData(); remark.setColor(request.getColor()); remark.setValue("安装任你停APP,获取更多优惠信息,点击详情下载"); m.put("remark", remark); wxTemplate.setData(m); wxTemplate.setTemplate_id(WxPublicTmepleteEnum.WX_PAY_SUCCESS_MSG.WxPublicTmepleteEName()); try { logger.info(WxPublicTmepleteEnum.WX_PAY_SUCCESS_MSG.WxPublicTmepleteEName() + "微信公共号推送-购买成功通知\n" + ":" + JSONObject.toJSONString(wxTemplate)); int result = WeixinUtil.sendMessageBefore(wxTemplate); logger.info("微信公共号推送-购买成功通知 推送结果:" + result); } catch (Exception e) { } } } @Override public void sendPushPDAMsg(JPushMsgForPDARequest request) { InOutParkMsgPushDTO inOutParkMsgPushDTO = new InOutParkMsgPushDTO(); inOutParkMsgPushDTO.setBerthNo(request.getBerthNo()); inOutParkMsgPushDTO.setParkId(request.getPlNo()); inOutParkMsgPushDTO.setCarNumber(StringUtils.isBlank(request.getCarNumber())?"":request.getCarNumber()); String orderId = this.getOrderId(request); inOutParkMsgPushDTO.setOrderId(orderId); inOutParkMsgPushDTO.setTodoParkTaskSize(request.getTodoParkTaskSize()); PDAMsgPushDTO msgPushDTO = new PDAMsgPushDTO<>(); msgPushDTO.setContent(inOutParkMsgPushDTO); msgPushDTO.setMsgType(request.getPdaMsgTypeEnum().name()); String context = this.getPDAMsgContent(request); msgPushDTO.setMessage(context); for (String chargerCode : request.getChargerCodes()) { GetEmployeeRequest getEmployeeReq = new GetEmployeeRequest(); getEmployeeReq.setChargeCode(chargerCode); getEmployeeReq.setSysCode("PAY-SYSCODE"); BizResult bizResult = eEmployeeChargeService.queryEmployeByChargeCode(getEmployeeReq); TpEEmployeeChargeDTO eEmployeeChargeDTO = ResultUtils.getBizResultData(bizResult); //获取签到状态(0:已签到 1:已签退) if("0".equals(eEmployeeChargeDTO.getStatus())){ logger.info("开始给收费员:"+chargerCode+",推送消息:"+request.getPdaMsgTypeEnum().name()+",plNo:"+request.getPlNo()+",berthsNo:"+request.getBerthNo()+",todoParkTaskSize:"+request.getTodoParkTaskSize()); JPushForPDAUtil.pdaSendPush("", JSONObject.toJSONString(msgPushDTO),chargerCode); if (eEmployeeChargeDTO != null && StringUtils.isNotEmpty(chargerCode)) { TdCPushMsg record = new TdCPushMsg(); record.setMsgContent(context); record.setMsgTitle(request.getPdaMsgTypeEnum().desc()); record.setMsgType(MSGTypeEnum.MSG_TYPE_PDA.value()); record.setTempleteId(request.getPdaMsgTypeEnum().name()); record.setPushType(1); record.setReturnType(1); record.setReadType(MSGTypeEnum.MSG_READ_NO.value()); record.setCustId(chargerCode); record.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); record.setCreateDate(new Date()); record.setModfiyDate(new Date()); record.setOutMsgNo(request.getOrderId()); tdCPushMsgDao.insertSelective(record); } }else{ logger.info("收费员:"+chargerCode+"没有签到,无需推送该消息:"+request.getPdaMsgTypeEnum().name()); } } } /** * 返回orderId-有的返回,有的不返回 * @return */ private String getOrderId(JPushMsgForPDARequest request){ String orderId = ""; if(StringUtils.isEmpty(request.getOrderId() )){ return ""; } orderId = request.getOrderId(); if(PDAMsgTypeEnum.ORDER_OUT_PARK_EQP_FREE_TIME == request.getPdaMsgTypeEnum()){ orderId = ""; }else if(PDAMsgTypeEnum.ORDER_OUT_PARK_PAY_AND_EQP == request.getPdaMsgTypeEnum()){ orderId = ""; } return orderId; } /** * 拼接pda返回消息 * @return */ private String getPDAMsgContent(JPushMsgForPDARequest request){ String content = ""; if(StringUtils.isEmpty(request.getCarNumber() )){ request.setCarNumber(""); } if(PDAMsgTypeEnum.GEO_IN_PARK == request.getPdaMsgTypeEnum()){ content = request.getBerthNo()+ "车位有车辆入场,请尽快录入车辆信息。"; }else if(PDAMsgTypeEnum.GEO_OUT_PARK == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车辆" + request.getCarNumber() + "即将离开!"; }else if(PDAMsgTypeEnum.RNT_PAY_OUT_PARK == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"车主付费出场"; }else if(PDAMsgTypeEnum.OUT_PARK_ALERT == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"车主0元订单申请出场"; }else if(PDAMsgTypeEnum.ORDER_OUT_PARK_EQP_FREE_TIME == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"车牌免费离场(配合地磁订单自动完成)"; }else if(PDAMsgTypeEnum.ORDER_OUT_PARK_PAY_AND_EQP == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"车牌支付离场(配合地磁订单自动完成)"; }else if(PDAMsgTypeEnum.OUT_PARK_NOT_PAY == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"未支付,地磁上报离场"; }else if(PDAMsgTypeEnum.OUT_PARK_PAY_NOT_EQP == request.getPdaMsgTypeEnum()){ content = request.getBerthNo() + "车位" + request.getCarNumber() +"支付完,地磁未上报离场"; }else if(PDAMsgTypeEnum.TODO_IN_PARK_TASK == request.getPdaMsgTypeEnum()){ content = "您有" + request.getTodoParkTaskSize() + "条待录入入场记录,请及时查看并处理!"; }else if(PDAMsgTypeEnum.TODO_OUT_PARK_TASK == request.getPdaMsgTypeEnum()){ content = "您有" + request.getTodoParkTaskSize() + "条待处理出场记录,请及时查看并处理!"; }else if(PDAMsgTypeEnum.HV_ABNORMAL_PARK == request.getPdaMsgTypeEnum()){ content = request.getPlName() + "," + request.getBerthNo() + "车位," + request.getParkEventMsg() + ",请检查。车牌号为:" + request.getCarNumber(); }else if(PDAMsgTypeEnum.LARGE_ARREARS_SEND_PAD == request.getPdaMsgTypeEnum()){ content = request.getContext(); } return content; } @Override public void sendInOutParkPush(OrderParkDataRequest request) { jPushMsgOperInnerService.sendInOutParkPush(request); } @Override public BizResult> getPushedMessageDetailsForPage(JPushMessageRequest request) { PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tdCPushMsgDao.getPushedMessageDetailsForPage(request); if(pageInfo!=null){ PageBeanUtil.copyProperties(pageInfo, pageBean, JPushMessageDTO.class); } return new BizResult<>(pageBean); } @Override public void sendPushInspectMsg(JPushMsgForInspectRequest request) { InspectMsgPushDTO inOutParkMsgPushDTO = new InspectMsgPushDTO(); inOutParkMsgPushDTO.setBerthNo(request.getBerthNo()); inOutParkMsgPushDTO.setParkId(request.getPlNo()); inOutParkMsgPushDTO.setCarNumber(StringUtils.isBlank(request.getCarNumber())?"":request.getCarNumber()); inOutParkMsgPushDTO.setOrderId(StringUtils.isBlank(request.getOrderId())?"":request.getOrderId()); PDAMsgPushDTO msgPushDTO = new PDAMsgPushDTO<>(); msgPushDTO.setContent(inOutParkMsgPushDTO); msgPushDTO.setMsgType(request.getInspectMsgTypeEnum().name()); if(request.getInspectMsgTypeEnum() == InspectMsgTypeEnum.SAVE_INSPECT_MSG){ msgPushDTO.setMessage("在"+request.getPlName()+"停车场,泊位号:"+request.getBerthNo()+"上的车牌号:"+request.getCarNumber()+"已进行离场操作,收费员"+request.getChargerCode()+"未进行出场操作"); }else if(request.getInspectMsgTypeEnum() == InspectMsgTypeEnum.PAY_SUCCESS_SAVE_INSPECT_MSG){ msgPushDTO.setMessage("在"+request.getPlName()+"停车场,泊位号:"+request.getBerthNo()+"上的车牌号:"+request.getCarNumber()+"已进行出场支付,收费员"+request.getChargerCode()+"未进行出场操作"); }else if(request.getInspectMsgTypeEnum() == InspectMsgTypeEnum.ARREARS_PATROL_TIPS){ msgPushDTO.setMessage(request.getMessage()); } else{ msgPushDTO.setMessage(""); } for (String chargerCode : request.getChargerCodes()) { GetEmployeeRequest getEmployeeReq = new GetEmployeeRequest(); getEmployeeReq.setChargeCode(chargerCode); getEmployeeReq.setSysCode("PAY-SYSCODE"); BizResult bizResult = eEmployeeChargeService.queryEmployeByChargeCode(getEmployeeReq); TpEEmployeeChargeDTO eEmployeeChargeDTO = ResultUtils.getBizResultData(bizResult); //获取签到状态(0:已签到 1:已签退) if("0".equals(eEmployeeChargeDTO.getStatus())){ logger.info("开始给巡查员:"+chargerCode+",推送消息:"+request.getInspectMsgTypeEnum().name()+",plNo:"+request.getPlNo()+",berthsNo:"+request.getBerthNo()); JPushForInspectUtil.inspectSendPush("", JSONObject.toJSONString(msgPushDTO),chargerCode); }else{ logger.info("巡查员:"+chargerCode+"没有签到,无需推送该消息:"+request.getInspectMsgTypeEnum().name()); } } } @Override public BizResult> queryPageJPushMsgByCondition(JPushMsgQueryRequest request) { logger.info("查询pda推送消息入参" + JSONObject.toJSON(request)); PageBean pageBean = new PageBean<>(); PageInfo pageInfo = tdCPushMsgDao.queryPageJPushMsgByCondition(request); if (null != pageInfo) { PageBeanUtil.copyProperties(pageInfo, pageBean, TdCPushMsgDTO.class); } logger.info("查询停pda推送消息响应返回" + JSONObject.toJSON(pageBean)); return new BizResult<>(pageBean); } /** * 微信公共号-会员卡到期提醒 * @Auther: wangfs * @param * @return */ @Override public void sendVipCardExpireWarn(VipCardExpireWarnRequest request) { WxTemplate wxTemplate = new WxTemplate(); wxTemplate.setAppid(request.getTdBWxConfigDTO().getAppid()); wxTemplate.setAppsecret(WxConfigUtil.decode(request.getTdBWxConfigDTO().getAppSecret())); //wxTemplate.setUrl("http://a.app.qq.com/o/simple.jsp?pkgname=com.zteits.rnting"); wxTemplate.setTouser(request.getToUserOpenId()); Map m = new HashMap(); //会员卡编码 TemplateData cardNo = new TemplateData(); cardNo.setValue(request.getCardNo()); m.put("keyword1", cardNo); //车牌号 TemplateData carNumber = new TemplateData(); carNumber.setValue(request.getCarNumber()); m.put("keyword2", carNumber); //停车场名称 TemplateData plName = new TemplateData(); plName.setValue(request.getPlName()); m.put("keyword3", plName); TemplateData expDate = new TemplateData(); //expDate.setColor(request.getColor()); expDate.setValue(request.getExpDate()); m.put("keyword4", expDate); TemplateData remark = new TemplateData(); remark.setColor(request.getColor()); remark.setValue("请及时续费延期(须提前至少1天续费),超期后即视作临停车辆计费"); m.put("remark", remark); wxTemplate.setData(m); wxTemplate.setTemplate_id(WxPublicTmepleteEnum.WX_PAY_EXPIRE_WARN_MSG.WxPublicTmepleteEName()); try { logger.info(WxPublicTmepleteEnum.WX_PAY_EXPIRE_WARN_MSG.WxPublicTmepleteEName() + "微信公共号推送-会员卡到期提醒\n" + ":" + JSONObject.toJSONString(wxTemplate)); int result = WeixinUtil.sendMessageBefore(wxTemplate); logger.info("微信公共号推送-会员卡到期提醒 推送结果:" + result); } catch (Exception e) { } } @Override public PageBean selectMessageByMessageType(QueryMessageRequest req) { PageInfo tdCPushMsgs = tdCPushMsgDao.selectMessageByMessageType(req); PageBean pageBean = new PageBean<>(); if (null != tdCPushMsgs) { PageBeanUtil.copyProperties(tdCPushMsgs, pageBean, NewMessagePushDTO.class); } return pageBean; } @Override public NewMessagePushDTO countUnreadMessage(QueryMessageRequest messageRequest) { return tdCPushMsgDao.countUnreadMessage(messageRequest); } @Override public int updateUnreadMessage(QueryMessageRequest messageRequest) { messageRequest.setModfiyDate(new Date()); messageRequest.setModfiyEmpid(messageRequest.getCustId()); return tdCPushMsgDao.updateUnreadMessage(messageRequest); } @Override public Long countUnreadTotal(QueryMessageRequest messageRequest) { return tdCPushMsgDao.countUnreadTotal(messageRequest); } @Override public void sendAnswerRequestionsPush(TdCCustSuggestDetailRequest request) { TdCMsgTemplate tdCMsgTemplate = tdCMsgTemplateDao.queryMsgTempleteByTempleteId(MSGTempleteEnum.APP_QUESTIONS_MSG.value()); String content = ""; String title = ""; if (tdCMsgTemplate != null) { Map datas = new HashMap(); /** 消息推送模板 */ datas.put("content", request.getSuggestAnswer()); title = tdCMsgTemplate.getTemplateTitle(); content = MsgTemplateUtil.render(tdCMsgTemplate.getTemplateContent(), datas); TdCCustSuggest tdCCustSuggest = tdCCustSuggestDao.getTdCCustSuggestById(request.getSuggestId()); logger.info("查询建议表信息返回:" + tdCCustSuggest); if(tdCCustSuggest != null){ TdCCustPerson tdCCustPerson = tdCCustPersonDao.queryPersonByCustId(tdCCustSuggest.getCustId()); if (tdCCustPerson != null && StringUtils.isNotEmpty(tdCCustPerson.getAlias())) { JPustUtil.sendPush(content, tdCCustPerson.getAlias(), MSGTypeEnum.MSG_TYPE_QUESTION.value() + "", tdCCustPerson.getDeivceType()); TdCPushMsg record = new TdCPushMsg(); record.setMsgContent(content); record.setMsgTitle(title); record.setMsgType(MSGTypeEnum.MSG_TYPE_QUESTION.value()); record.setTempleteId(tdCMsgTemplate.getTemplateId()); record.setPushType(MSGTypeEnum.MSG_PUSH_TYPE_ONLY.value()); record.setReturnType(MSGTypeEnum.MSG_RETURN_YES.value()); record.setReadType(MSGTypeEnum.MSG_READ_NO.value()); record.setCustId(tdCCustSuggest.getCustId()); record.setDataState(1); record.setCreateDate(new Date()); record.setModfiyDate(new Date()); //注意:这个必须设置SuggestId,否则会影响APP首页查询,无法用id查询建议表数据 record.setOutMsgNo(request.getSuggestId()); tdCPushMsgDao.insertSelective(record); logger.info("插入建议表信息成功"); } } } } public static void main(String[] args) { JPushServiceImpl pushServicej = new JPushServiceImpl(); VipCardExpireWarnRequest request = new VipCardExpireWarnRequest(); TdBWxConfigDTO tdBWxConfigDTO = new TdBWxConfigDTO(); tdBWxConfigDTO.setAppid("wx1e9001e5940605b1"); tdBWxConfigDTO.setAppSecret("TixijEti1k7ZCArXAbl4a9aeRAsHzTLjD8kqwuHlZlQy3Ma1cue7CFbko7yTJb/e"); request.setTdBWxConfigDTO(tdBWxConfigDTO); request.setToUserOpenId("okuZ90iAqZMigyEvowrgFpesiGLs"); request.setCardNo("V100001313"); request.setCarNumber("陕K12345"); request.setPlName("微纳园停车场"); request.setExpDate("2019-10-15"); request.setColor("#FF3030"); pushServicej.sendVipCardExpireWarn(request); } }