code) && !empty($result->code)) { // 空值处理 $subCode = $result->sub_code ?? ''; $msg = $result->msg ?? ''; $subMsg = $result->sub_msg ?? ''; // 组装错误信息 $e['errcode'] = $result->code . '(' . $subCode . ')'; $e['errmsg'] = $msg . '(' . $subMsg . ')'; } else { $e['success'] = true; } // 更新派单记录的短信发送状态 DispatchOrderLog::updateSmsSendStatus($payload, $result); return $e; } /** * 调用短信发送API * @param WxPHPSDK $wechat * @param array $data */ protected static function send($data) { $sms = Yii::$app->sms; switch($data['type']) { case self::TYPE_REG_CODE: $result = $sms->sendRegCode($data['phone'], $data['code'], $data['sign_name']); break; case self::TYPE_BIND_PHONE_SUCCESS: $result = $sms->sendBindPhoneSuccessMsg($data['phone']); break; case self::TYPE_RESEND_BIND_PHONE: $result = $sms->reSendBindPhoneCouponMsg($data['phone']); break; case self::TYPE_WARRANTY_APPLY: $result = $sms->sendWarrantyApplyMsg($data['phone'], $data['contactHour'], $data['finishHour']); break; case self::TYPE_NEW_ORDER: $result = $sms->sendNewOrderMsg($data['phone'], $data['device']); break; case self::TYPE_DDB_PRIVATE_NEW_ORDER: $result = $sms->sendPrivateNewOrderMsg($data['phone'], $data['device']); break; case self::TYPE_DDB_PRIVATE_FORWARD_ORDER: $result = $sms->sendPrivateForwardOrderMsg($data['phone'], $data['device']); break; case self::TYPE_CLOSE_ORDER: $result = $sms->sendCloseOrderMsg($data['phone'], $data['device'], $data['sign_name']); break; case self::TYPE_BIND_DEVICE_SUCCESS: $result = $sms->sendBindDeviceSuccessMsg($data['phone'], $data['device']); break; case self::TYPE_BIND_DEVICE_FAIL: $result = $sms->sendBindDeviceFailMsg($data['phone'], $data['device']); break; case self::TYPE_SKILL_AUTH_SUCCESS: $result = $sms->sendSkillAuthSuccessMsg($data['phone'], $data['skill'], $data['freeCommissionCount']); break; case self::TYPE_SKILL_AUTH_FAIL: $result = $sms->sendSkillAuthFailMsg($data['phone'], $data['skill']); break; case self::TYPE_USER_AUTH_SUCCESS: $result = $sms->sendUserAuthSuccessMsg($data['phone']); break; case self::TYPE_USER_AUTH_FAIL: $result = $sms->sendUserAuthFailMsg($data['phone']); break; case self::TYPE_NO_MONEY_NOTICE: $result = $sms->sendNoMoneyNotice($data['phone'], $data['appid']); break; case self::TYPE_NO_MONEY_WARNING: $result = $sms->sendNoMoneyWarning($data['phone'], $data['mch_id'], $data['balance'], $data['warning_balance']); break; case self::TYPE_INVOICE_NOTICE: $result = $sms->sendInvoiceNotice($data['phone'], $data['date'], $data['sign_name']); break; case self::TYPE_SKILL_PRACTICE_SUCCESS: $result = $sms->sendSkillPracticeSuccessMsg($data['phone'], $data['skill']); break; case self::TYPE_WECHAT_PAY_NOTICE: $result = $sms->sendWechatPayNotice($data['phone'], $data['client_name'], $data['errorMsg']); break; case self::TYPE_BLOCK_ENGINEER: $result = $sms->sendBlockEngineerMsg($data['phone'], $data['reason']); break; case self::TYPE_UNBLOCK_ENGINEER: $result = $sms->sendUnblockEngineerMsg($data['phone']); break; case self::TYPE_CUSTOM_SERVICE_WARRANTY_DELAY: $result = $sms->sendCustomServiceWarrantyDelayMsg($data['phone'], $data['orderno']); break; case self::TYPE_CUSSTOM_SERVICE_FREQ_WARRANTY: $result = $sms->sendCustomServiceFreqWarrantyMsg($data['phone'], $data['engineer'], $data['times'], $data["days"]); break; case self::TYPE_ENGINEER_PICK_ORDER: $result = $sms->sendPickOrderNotice($data['phone'], $data['device'], $data['engineer'], $data['sign_name']); break; case self::TYPE_ENGINEER_CANCEL_ORDER: $result = $sms->sendEngineerCancelOrderNotice($data['phone'], $data['device'], $data['engineer'], $data["reason"], $data['sign_name']); break; case self::TYPE_NEW_YEAR_USER_RED_PACK: $result = $sms->sendUserNewYearRedPackNotice($data['phone'], $data['expire_hour']); break; case self::TYPE_NEW_YEAR_USER_RED_PACK_HAS_ORDER: $result = $sms->sendUserNewYearRedPackNoticeHasOrder($data['phone'], $data['expire_hour'],$data['order_word']); break; case self::TYPE_THANK_FEE_NOTICE: $result = $sms->sendThankFeeNotice($data['phone'], $data['device_name'], $data['sign_name']); break; case self::TYPE_ENGINEER_PHONE_CODE: $result = $sms->sendEngineerPhoneCode($data['phone'], $data['code']); break; case self::TYPE_ENGINEER_PICK_PRIVATE_ORDER: $result = $sms->sendPickPrivateOrderNotice($data['phone'], $data['device'], $data['engineer'], $data['sign_name']); break; default: $result = false; break; } return $result; } /** * 验证码发送 * @param $phone * @param $code * @param string $signName */ public static function sendRegCode($phone, $code, $signName = self::SIGN_NAME_JIWO) { $data = array( 'type' => self::TYPE_REG_CODE, 'phone' => $phone, 'code' => $code, 'sign_name' => $signName ); self::processMessage($data); } /** * 绑定手机号成功, 推送极办公业务介绍短信 * @param $phone * @return mixed */ public static function sendBindPhoneSuccessMsg($phone) { $data = array( 'type' => self::TYPE_BIND_PHONE_SUCCESS, 'phone' => $phone, ); self::processMessage($data); } /** * 补发首单有礼优惠券短信 * @param $phone * @return mixed */ public static function reSendBindPhoneCouponMsg($phone) { $data = array( 'type' => self::TYPE_RESEND_BIND_PHONE, 'phone' => $phone, ); self::processMessage($data); } /** * 发送订单质保申请通知 * @param $phone 手机号 * @param $contactHour 多少小时内联系客户 * @param $finishHour 多少小时内处理完毕 * @return mixed */ public static function sendWarrantyApplyMsg($phone, $contactHour, $finishHour) { $data = array( 'type' => self::TYPE_WARRANTY_APPLY, 'phone' => $phone, 'contactHour' => $contactHour, 'finishHour' => $finishHour, ); self::processMessage($data); } /** * 发送新订单通知 * @param $phone * @param $deviceName * @param $orderId */ public static function sendNewOrderMsg($phone, $device, $orderId = 0) { $data = array( 'type' => self::TYPE_NEW_ORDER, 'phone' => $phone, 'device' => $device, 'order_id' => $orderId, ); self::processMessage($data); } /** * 系统关闭订单通知 * @param $phone * @param $device */ public static function sendCloseOrderMsg($phone, $device, $signName = self::SIGN_NAME_JIWO) { $data = array( 'type' => self::TYPE_CLOSE_ORDER, 'phone' => $phone, 'device' => $device, 'sign_name' => $signName ); self::processMessage($data); } /** * 发送设备绑定成功通知 * 目前无效 * @return mixed */ public static function sendBindDeviceSuccessMsg($phone, $device) { $data = array( 'type' => self::TYPE_BIND_DEVICE_SUCCESS, 'phone' => $phone, 'device' => $device, ); self::processMessage($data); } /** * 发送设备绑定失败通知 * @param $phone * @return mixed */ public static function sendBindDeviceFailMsg($phone, $device) { $data = array( 'type' => self::TYPE_BIND_DEVICE_FAIL, 'phone' => $phone, 'device' => $device, ); self::processMessage($data); } /** * 发送技能认证成功通知 */ public static function sendSkillAuthSuccessMsg($phone, $skill, $freeCommissionCount) { $data = array( 'type' => self::TYPE_SKILL_AUTH_SUCCESS, 'phone' => $phone, 'skill' => $skill, 'freeCommissionCount' => $freeCommissionCount ); self::processMessage($data); } /** * 发送技能认证失败通知 */ public static function sendSkillAuthFailMsg($phone, $skill) { $data = array( 'type' => self::TYPE_SKILL_AUTH_FAIL, 'phone' => $phone, 'skill' => $skill, ); self::processMessage($data); } /** * 发送实名认证成功通知 * @param $phone * @return mixed */ public static function sendUserAuthSuccessMsg($phone) { $data = array( 'type' => self::TYPE_USER_AUTH_SUCCESS, 'phone' => $phone, ); self::processMessage($data); } /** * 发送实名认证失败通知 * @param $phone * @return mixed */ public static function sendUserAuthFailMsg($phone) { $data = array( 'type' => self::TYPE_USER_AUTH_FAIL, 'phone' => $phone, ); self::processMessage($data); } /** * 余额不足提醒 * @param $phone * @param $appid */ public static function sendNoMoneyNotice($phone, $appid) { $data = array( 'type' => self::TYPE_NO_MONEY_NOTICE, 'phone' => $phone, 'appid' => $appid, ); self::processMessage($data); } /** * 微信商户号余额不足提醒 * @param $phone * @param $mchId * @param $balance * @param $warningBalance */ public static function sendNoMoneyWarning($phone, $mchId, $balance, $warningBalance) { $data = array( 'type' => self::TYPE_NO_MONEY_WARNING, 'phone' => $phone, 'mch_id' => $mchId, 'balance' => $balance, 'warning_balance' => $warningBalance ); self::processMessage($data); } /** * 发票已经发送提醒 * @param $phone * @param $date */ public static function sendInvoiceNotice($phone, $date, $signName = self::SIGN_NAME_JIWORK) { $data = array( 'type' => self::TYPE_INVOICE_NOTICE, 'phone' => $phone, 'date' => $date, 'sign_name' => $signName ); self::processMessage($data); } /** * 发送通过技能实操考核通知 * @param $phone * @param $skill */ public static function sendSkillPracticeSuccessMsg($phone, $skill) { $data = array( 'type' => self::TYPE_SKILL_PRACTICE_SUCCESS, 'phone' => $phone, 'skill' => $skill, ); self::processMessage($data); } /** * 微信支付接口告警 * @param $phone * @param $clientName * @param $errorMsg */ public static function sendWechatPayNotice($phone, $clientName, $errorMsg) { $data = array( 'type' => self::TYPE_WECHAT_PAY_NOTICE, 'phone' => $phone, 'client_name' => $clientName, 'errorMsg' => $errorMsg, ); self::processMessage($data); } /** * @param $phone * @param $reason */ public static function sendBlockEngineerMsg($phone, $reason) { $data = array( 'type' => self::TYPE_BLOCK_ENGINEER, 'phone' => $phone, 'reason' => $reason ); self::processMessage($data); } /** * @param $phone */ public static function sendUnblockEngineerMsg($phone) { $data = array( 'type' => self::TYPE_UNBLOCK_ENGINEER, 'phone' => $phone ); self::processMessage($data); } /** * 【客服】48小时质保申请延期通知 * @param $phone * @param $order_no */ public static function sendCustomServiceWarrantyDelayMsg($phone, $order_no) { $data = array( 'type' => self::TYPE_CUSTOM_SERVICE_WARRANTY_DELAY, 'phone' => $phone, 'orderno' => $order_no, ); self::processMessage($data); } /** * 【客服】工程师频繁质保通知 * @param $phone * @param $engineerName * @param $times * @param $days */ public static function sendCustomServiceFreqWarrantyMsg($phone, $engineerName, $times, $days) { $data = array( 'type' => self::TYPE_CUSSTOM_SERVICE_FREQ_WARRANTY, 'phone' => $phone, 'engineer' => $engineerName, 'times' => sprintf('%d',$times), 'days' => sprintf('%d',$days), ); self::processMessage($data); } /** * 工程师接单,给用户发短信 * @param $phone * @param $device * @param $engineer * @param string $signName */ public static function sendPickOrderNotice($phone, $device, $engineer, $signName = self::SIGN_NAME_JIWO) { $data = array( 'type' => self::TYPE_ENGINEER_PICK_ORDER, 'phone' => $phone, 'device' => $device, 'engineer' => $engineer, 'sign_name' => $signName ); self::processMessage($data); } /** * 工程师取消订单短信 * @param $phone * @param $skill */ public static function sendEngineerCancelOrderNotice($phone, $device, $engineer, $reason, $signName = self::SIGN_NAME_JIWO) { $data = array( 'type' => self::TYPE_ENGINEER_CANCEL_ORDER, 'phone' => $phone, 'device' => $device, 'engineer' => $engineer, 'reason' => $reason, 'sign_name' => $signName ); self::processMessage($data); } /** * 工程师取消订单短信 * @param $phone * @param $skill */ public static function sendUserNewYearRedPackNotice($phone, $expire_hour = 24) { $data = array( 'type' => self::TYPE_NEW_YEAR_USER_RED_PACK, 'phone' => $phone, 'expire_hour' => $expire_hour, ); self::processMessage($data); } /** * 发送可添加感谢费通知 * @param $phone */ public static function sendThankFeeNotice($phone, $deviceName) { $data = array( 'type' => self::TYPE_THANK_FEE_NOTICE, 'phone' => $phone, 'device_name' => $deviceName, 'sign_name' => self::SIGN_NAME_JIWORK ); self::processMessage($data); } /** * 工程师取消订单短信 * @param $phone * @param $skill */ public static function sendEngineerPhoneCode($phone, $code) { $data = array( 'type' => self::TYPE_ENGINEER_PHONE_CODE, 'phone' => $phone, 'code' => $code, ); self::processMessage($data); } /** * 工程师取消订单短信 * @param $phone * @param $skill */ public static function sendUserNewYearRedPackNoticeHasOrder($phone, $expire_hour = 24, $order_word = "") { if (empty($order_word)) { return false; } $data = array( 'type' => self::TYPE_NEW_YEAR_USER_RED_PACK_HAS_ORDER, 'phone' => $phone, 'expire_hour' => $expire_hour, 'order_word' => $order_word, ); self::processMessage($data); } /** * 订单宝-自有订单通知 * @param $phone * @param $device * @param int $orderId */ public static function sendPrivateNewOrderMsg($phone, $device, $orderId = 0) { $data = array( 'type' => self::TYPE_DDB_PRIVATE_NEW_ORDER, 'phone' => $phone, 'device' => $device, 'order_id' => $orderId, ); self::processMessage($data); } /** * 订单宝-转出订单通知 * @param $phone * @param $device * @param int $orderId */ public static function sendPrivateForwardOrderMsg($phone, $device, $orderId = 0) { $data = array( 'type' => self::TYPE_DDB_PRIVATE_FORWARD_ORDER, 'phone' => $phone, 'device' => $device, 'order_id' => $orderId, ); self::processMessage($data); } /** * V2 工程师接单,给用户发短信 * @param $phone * @param $device * @param $engineer * @param string $signName */ public static function sendPickPrivateOrderNotice($phone, $device, $engineer, $signName = self::SIGN_NAME_JIWO) { $data = array( 'type' => self::TYPE_ENGINEER_PICK_PRIVATE_ORDER, 'phone' => $phone, 'device' => $device, 'engineer' => $engineer, 'sign_name' => $signName ); self::processMessage($data); } public static function test($keyword) { $phone = '15999944931'; if ($keyword == "s1") { // 手机验证码 self::sendRegCode($phone, '1983'); } } }