123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692 |
- <?php
- namespace app\common\logic;
- use app\common\model\Goods;
- use think\facade\Db;
- use think\facade\Log;
- /**
- * ============================================================================
- * DSMall多用户商城
- * ============================================================================
- * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
- * 网站地址: http://www.csdeshang.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
- * 不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * 逻辑层模型
- */
- class Payment
- {
- /**
- * 取得实物订单所需支付金额等信息
- * @param int $pay_sn
- * @param int $member_id
- * @return array
- */
- public function getRealOrderInfo($pay_sn, $member_id = null)
- {
- //验证订单信息
- $order_model = model('order');
- $condition = [];
- $condition[] = ['pay_sn', '=', $pay_sn];
- if (!empty($member_id)) {
- $condition[] = ['buyer_id', '=', $member_id];
- }
- $order_pay_info = $order_model->getOrderpayInfo($condition);
- if (empty($order_pay_info)) {
- return ds_callback(false, '该支付单不存在');
- }
- $order_pay_info['subject'] = '实物订单_' . $order_pay_info['pay_sn'];
- $order_pay_info['order_type'] = 'real_order';
- $condition = [];
- $condition[] = ['pay_sn', '=', $pay_sn];
- $order_list = $order_model->getNormalOrderList($condition);
- //计算本次需要在线支付的订单总金额
- $pay_amount = 0;
- $point_ratio = config('app.point_ratio');
- if (!empty($order_list)) {
- foreach ($order_list as $order_info) {
- $payed_amount = floatval($order_info['rcb_amount']) + floatval($order_info['pd_amount']) + floatval($order_info['point_amount'] / $point_ratio);
- if ($order_info['payment_code'] != 'offline' and $order_info['order_state'] > 0) {
- if ($order_info['order_state'] == ORDER_STATE_NEW) {
- }
- $pay_amount += floatval($order_info['order_amount']) - $payed_amount;
- } else {
- }
- }
- }
- $order_pay_info['api_pay_amount'] = $pay_amount;
- $order_pay_info['order_list'] = $order_list;
- return ds_callback(true, '', $order_pay_info);
- }
- /**
- * 取得虚拟订单所需支付金额等信息
- * @param int $order_sn
- * @param int $member_id
- * @return array
- */
- public function getVrOrderInfo($order_sn, $member_id = null)
- {
- //验证订单信息
- $vrorder_model = model('vrorder');
- $condition = [];
- $condition[] = ['order_sn', '=', $order_sn];
- if (!empty($member_id)) {
- $condition[] = ['buyer_id', '=', $member_id];
- }
- $order_info = $vrorder_model->getVrorderInfo($condition);
- if (empty($order_info)) {
- return ds_callback(false, '该订单不存在');
- }
- $order_info['subject'] = '虚拟订单_' . $order_sn;
- $order_info['order_type'] = 'vr_order';
- $order_info['pay_sn'] = $order_sn;
- //修复 第三方支付时 充值卡没算在内BUG
- $point_ratio = config('app.point_ratio');
- $pay_amount = ds_price_format(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']) - floatval($order_info['rcb_amount'] / $point_ratio));
- $order_info['api_pay_amount'] = $pay_amount;
- return ds_callback(true, '', $order_info);
- }
- /**
- * 取得充值单所需支付金额等信息
- * @param int $pdr_sn
- * @param int $member_id
- * @return array
- */
- public function getPdOrderInfo($pdr_sn, $member_id = null)
- {
- $predeposit_model = model('predeposit');
- $condition = [];
- $condition[] = ['pdr_sn', '=', $pdr_sn];
- if (!empty($member_id)) {
- $condition[] = ['pdr_member_id', '=', $member_id];
- }
- $order_info = $predeposit_model->getPdRechargeInfo($condition);
- if (empty($order_info)) {
- return ds_callback(false, '该订单不存在');
- }
- $order_info['subject'] = '预存款充值_' . $order_info['pdr_sn'];
- $order_info['order_type'] = 'pd_order';
- $order_info['pay_sn'] = $order_info['pdr_sn'];
- $order_info['api_pay_amount'] = $order_info['pdr_amount'];
- return ds_callback(true, '', $order_info);
- }
- public function getTicketOrderInfo($order_sn, $member_id = null)
- {
- //验证订单信息
- $TicketOrder = model('TicketOrder');
- $condition = [];
- $condition[] = ['order_sn', '=', $order_sn];
- if (!empty($member_id)) {
- $condition[] = ['buyer_id', '=', $member_id];
- }
- $order_info = $TicketOrder->where($condition)->find();
- if (empty($order_info)) {
- return ds_callback(false, '该订单不存在');
- }
- $order_info['subject'] = '电影票订单_' . $order_sn;
- $order_info['order_type'] = 'ticket_order';
- $order_info['pay_sn'] = $order_sn;
- //修复 第三方支付时 充值卡没算在内BUG
- $point_ratio = config('app.point_ratio');
- $pay_amount = ds_price_format(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']) - floatval($order_info['rcb_amount']) - floatval($order_info['point_amount'] / $point_ratio));
- $order_info['api_pay_amount'] = $pay_amount;
- return ds_callback(true, '', $order_info);
- }
- public function getStoreOrderInfo($order_sn, $member_id = null)
- {
- //验证订单信息
- $StoreOrder = model('StoreOrder');
- $condition = [];
- $condition[] = ['order_sn', '=', $order_sn];
- if (!empty($member_id)) {
- $condition[] = ['buyer_id', '=', $member_id];
- }
- $order_info = $StoreOrder->where($condition)->find();
- if (empty($order_info)) {
- return ds_callback(false, '该订单不存在');
- }
- $order_info['subject'] = '到店付款订单_' . $order_sn;
- $order_info['order_type'] = 'store_order';
- $order_info['pay_sn'] = $order_sn;
- //修复 第三方支付时 充值卡没算在内BUG
- $point_ratio = config('app.point_ratio');
- $pay_amount = ds_price_format(floatval($order_info['order_amount']) - floatval($order_info['pd_amount']) - floatval($order_info['point_amount'] / $point_ratio) - floatval($order_info['deduction_amount']));
- $order_info['api_pay_amount'] = $pay_amount;
- return ds_callback(true, '', $order_info);
- }
- /**
- * 取得所使用支付方式信息
- * @param unknown $payment_code
- */
- public function getPaymentInfo($payment_code)
- {
- if (in_array($payment_code, ['offline', 'predeposit']) || empty($payment_code)) {
- return ds_callback(false, '系统不支持选定的支付方式');
- }
- $payment_model = model('payment');
- $condition = [];
- $condition[] = ['payment_code', '=', $payment_code];
- $payment_info = $payment_model->getPaymentOpenInfo($condition);
- if (empty($payment_info)) {
- return ds_callback(false, '系统不支持选定的支付方式');
- }
- $inc_file = PLUGINS_PATH . DIRECTORY_SEPARATOR . 'payments' . DIRECTORY_SEPARATOR . $payment_info['payment_code'] . DIRECTORY_SEPARATOR . $payment_info['payment_code'] . '.php';
- if (!file_exists($inc_file)) {
- return ds_callback(false, '系统不支持选定的支付方式');
- }
- require_once $inc_file;
- $payment_info['payment_config'] = unserialize($payment_info['payment_config']);
- return ds_callback(true, '', $payment_info);
- }
- /**
- * 支付成功后修改实物订单状态
- */
- public function updateRealOrder($out_trade_no, $payment_code, $order_list, $trade_no)
- {
- $post['payment_code'] = $payment_code;
- $post['trade_no'] = $trade_no;
- try {
- Db::startTrans();
- model('order', 'logic')->changeOrderReceivePay($order_list, 'system', '系统', $post);
- } catch (\Exception $e) {
- Db::rollback();
- return ds_callback(false, $e->getMessage());
- }
- Db::commit();
- return ds_callback(true, '操作成功');
- }
- /**
- * 支付成功后修改虚拟订单状态
- */
- public function updateVrOrder($out_trade_no, $payment_code, $order_info, $trade_no)
- {
- $post['payment_code'] = $payment_code;
- $post['trade_no'] = $trade_no;
- return model('vrorder', 'logic')->changeOrderStatePay($order_info, 'system', $post);
- }
- /**
- * 支付成功后修改虚拟订单状态
- */
- public function updateTicketOrder($out_trade_no, $payment_code, $order_info, $trade_no)
- {
- $post['payment_code'] = $payment_code;
- $post['trade_no'] = $trade_no;
- return model('ticketorder', 'logic')->changeOrderStatePay($order_info, 'system', $post);
- }
- /**
- * 支付成功后修改到店付款订单状态
- */
- public function updateStoreOrder($out_trade_no, $payment_code, $order_info, $trade_no)
- {
- $post['payment_code'] = $payment_code;
- $post['trade_no'] = $trade_no;
- return model('storeorder', 'logic')->changeOrderStatePay($order_info, 'system', $post);
- }
- /**
- * 支付成功后修改充值订单状态
- * @param unknown $out_trade_no
- * @param unknown $trade_no
- * @param unknown $payment_code
- * @return multitype:unknown
- * @throws Exception
- */
- public function updatePdOrder($out_trade_no, $payment_code, $recharge_info, $trade_no)
- {
- $condition = [];
- $condition[] = ['pdr_sn', '=', $recharge_info['pdr_sn']];
- $condition[] = ['pdr_payment_state', '=', 0];
- $update = [];
- $update['pdr_payment_state'] = 1;
- $update['pdr_paymenttime'] = TIMESTAMP;
- $update['pdr_payment_code'] = $payment_code;
- $update['pdr_trade_sn'] = $trade_no;
- $predeposit_model = model('predeposit');
- try {
- Db::startTrans();
- $pdnum = $predeposit_model->getPdRechargeCount([
- 'pdr_sn' => $recharge_info['pdr_sn'], 'pdr_payment_state' => 1,
- ]);
- if (intval($pdnum) > 0) {
- throw new \think\Exception('订单已经处理', 10006);
- }
- //更改充值状态
- $state = $predeposit_model->editPdRecharge($update, $condition);
- if (!$state) {
- throw new \think\Exception('更新充值状态失败', 10006);
- }
- //变更会员预存款
- $data = [];
- $data['member_id'] = $recharge_info['pdr_member_id'];
- $data['member_name'] = $recharge_info['pdr_member_name'];
- $data['amount'] = $recharge_info['pdr_amount'];
- $data['pdr_sn'] = $recharge_info['pdr_sn'];
- $predeposit_model->changePd('recharge', $data);
- Db::commit();
- return ds_callback(true);
- } catch (\Exception $e) {
- Db::rollback();
- return ds_callback(false, $e->getMessage());
- }
- }
- /**
- *
- * @param type $out_trade_no #商城内部订单号
- * @param type $trade_no #支付交易流水号
- * @param type $order_type #订单ID
- * @param type $payment_code #支付方式代号
- */
- public function updateOrder($out_trade_no, $trade_no, $order_type, $payment_code)
- {
- $out_trade_no = current(explode('_', $out_trade_no));
- if ($order_type == 'real_order') {
- $order = $this->getRealOrderInfo($out_trade_no);
- if (empty($order) || empty($order['data']['order_list']) || intval($order['data']['api_paystate'])) {
- //订单已支付
- return true;
- }
- $order_list = $order['data']['order_list'];
- $result = $this->updateRealOrder($out_trade_no, $payment_code, $order_list, $trade_no);
- foreach ($order_list as $key => $value) {
- $this->paysuccesspush($value, 0);
- //发送短信通知
- $this->payPhoneMessage($value, 0);
- }
- $this->payRecordPush($out_trade_no, 0);
- } elseif ($order_type == 'vr_order') {
- $order = $this->getVrOrderInfo($out_trade_no);
- if (empty($order) || $order['data']['order_state'] != ORDER_STATE_NEW) {
- //订单已支付
- return true;
- }
- $result = $this->updateVrOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
- //TODO 回调这边去关联卡券
- $order = $order['data'];
- $goodsInfo = Db::name('goods')->where('goods_id', $order['goods_id'])->find();
- if (!empty($goodsInfo['virtual_code'])) {
- //存在卡券时
- $dataInfo = [
- 'virtual_code' => $goodsInfo['virtual_code'],
- 'quantity' => $order['goods_num'],
- 'order_id' => $order['order_id'],
- ];
- $buy_logic = model('voucher', 'logic');
- $voucherRes = $buy_logic->getVoucherListByGood($dataInfo, $order['buyer_id']);
- }
- $this->paysuccesspush($order, 1);
- //发送订单推送
- $this->payRecordPush($out_trade_no, 1);
- } elseif ($order_type == 'pd_order') {
- $order = $this->getPdOrderInfo($out_trade_no);
- if (empty($order) || $order['data']['pdr_payment_state'] == 1) {
- //订单已支付
- return true;
- }
- $result = $this->updatePdOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
- } else if ($order_type == 'ticket_order') {
- $order = $this->getTicketOrderInfo($out_trade_no);
- if (empty($order) || $order['data']['order_state'] != ORDER_STATE_NEW) {
- //订单已支付
- return true;
- }
- $result = $this->updateTicketOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
- $this->paysuccesspush($order, 2);
- //发送订单推送
- $this->payRecordPush($out_trade_no, 2);
- } else if ($order_type == 'store_order') {
- $order = $this->getStoreOrderInfo($out_trade_no);
- if (empty($order) || $order['data']['order_state'] != ORDER_STATE_NEW) {
- //订单已支付
- return true;
- }
- $result = $this->updateStoreOrder($out_trade_no, $payment_code, $order['data'], $trade_no);
- $this->paysuccesspush($order, 3);
- //发送订单推送
- $this->payRecordPush($out_trade_no, 3);
- //发送短信通知
- $this->payPhoneMessage($order, 3);
- }
- return $result['code'] ? TRUE : FALSE;
- }
- private function amount_format($amount)
- {
- $amount = trim($amount);
- return sprintf("%.2f", $amount);
- }
- /**
- * 支付成功推送
- *
- * {{first.DATA}}
- * 消费时间:{{keyword1.DATA}}
- * 消费门店:{{keyword2.DATA}}
- * 消费类型:{{keyword3.DATA}}
- * 消费金额:{{keyword4.DATA}}
- * 积分增加:{{keyword5.DATA}}
- * {{remark.DATA}}
- *
- * 尊敬的顾客,您的最新交易信息
- * 消费时间:2017-01-01
- * 消费门店:成都金沙店
- * 消费类型:0001
- * 消费金额:100
- * 积分增加:100
- * 感谢您的使用
- */
- public function paysuccesspush($order_info, $is_vir)
- {
- if ($is_vir == 2) {
- $ticket_logic = model('Ticket', 'logic');
- $result = $ticket_logic->order_film_pay($order_info);
- }
- $order_info = $order_info['data'] ?? $order_info;
- $payment_code_text = '微信支付';
- $payment_amount = '';
- if ($order_info['pd_amount'] == $order_info['order_amount']) {
- $payment_code_text = '预存款';
- $payment_amount = $this->amount_format($order_info['order_amount']);
- } else if ($order_info['deduction_amount'] == $order_info['order_amount']) {
- $payment_code_text = '卡券支付';
- $payment_amount = $this->amount_format($order_info['order_amount']);
- } else if ($order_info['payment_code'] == 'wxpay_jsapi' && $order_info['pd_amount'] == 0 && $order_info['deduction_amount'] == 0) {
- $payment_code_text = '微信支付';
- $payment_amount = $this->amount_format($order_info['order_amount']);
- } else {
- if ($order_info['deduction_amount'] > 0) {
- $payment_amount .= '卡券支付:' . $this->amount_format($order_info['deduction_amount']);
- }
- if ($order_info['pd_amount'] > 0) {
- $payment_amount .= '预存款支付:' . $this->amount_format($order_info['pd_amount']);
- }
- if ($order_info['payment_code'] == 'wxpay_jsapi') {
- $payment_amount .= '微信支付:' . $this->amount_format($order_info['order_amount'] - $order_info['pd_amount'] - $order_info['deduction_amount']);
- }
- $payment_amount = $order_info['order_amount'] . '[' . $payment_amount . ']';
- }
- // var_dump($order_info);exit();
- $url = config('ds_config.h5_site_url') . '/member/order_detail?order_id=' . $order_info['order_id'];
- if ($is_vir == 1) {
- $url = config('ds_config.h5_site_url') . '/member/vrorder_detail?order_id=' . $order_info['order_id'];
- } else if ($is_vir == 2) {
- $url = '';
- } elseif ($is_vir == 3) {
- $url = config('ds_config.h5_site_url') . '/';
- }
- $param['weixin_param'] = [
- 'url' => $url,
- 'data' => [
- "first" => [
- "value" => '尊敬的客户,您有一笔新的交易',
- "color" => "#333",
- ],
- "keyword1" => [
- "value" => date('Y-m-d H:i:s', $order_info['payment_time']),
- "color" => "#333",
- ],
- // "keyword2" => array(
- // "value" => $order_info['store_name'],
- // "color" => "#333"
- // ),
- "keyword2" => [
- "value" => $payment_code_text,
- "color" => "#333",
- ],
- "keyword3" => [
- "value" => $payment_amount,
- "color" => "#333",
- ],
- "keyword4" => [
- "value" => 0,
- "color" => "#333",
- ],
- "remark" => [
- "value" => '订单号【' . $order_info['order_sn'] . '】',
- "color" => "#333",
- ],
- ],
- ];
- $param['param'] = [];
- $param['code'] = 'order_pay_success';
- $param['member_id'] = $order_info['buyer_id'];
- \mall\queue\QueueClient::push('sendMemberMsg', $param);
- }
- /**
- * 消费记录推送
- */
- public function payRecordPush($out_trade_no, $isVir)
- {
- if ($isVir == 1) {
- //虚拟订单
- $orderInfo = Db::name('vrorder')->where([
- ['order_sn', '=', $out_trade_no],
- ])->find();
- } else if ($isVir == 2) {
- $orderInfo = Db::name('ticket_order')->where([
- ['order_sn', '=', $out_trade_no],
- ])->find();
- } else {
- //实物订单
- $orderInfo = Db::name('order')->where([
- ['order_sn', '=', $out_trade_no],
- ])->find();
- }
- if (!empty($orderInfo['card_id']) && $orderInfo['card_id'] != 0) {
- $cardInfo = Db::name('sub_card')->where([['id', '=', $orderInfo['card_id']]])->find();
- $params = [
- 'cardNo' => $cardInfo['card_no'],
- 'memberId' => $orderInfo['buyer_id'],
- 'amount' => $orderInfo['deduction_amount'], //抵消金额
- 'orderNo' => $orderInfo['order_sn'],
- 'is_vir' => $isVir,
- ];
- $hostUrl = config('ds_config.do_net_card_url');
- $url = $hostUrl . '/api/card.number.bill/add';
- $pushRes = common_curl($url, $params);
- $logModel = model('commonlog');
- if (!empty($pushRes['error'])) {
- $logModel->setLog('card_recard', 2, $params, $pushRes['error']['message']);
- ds_json_encode(10001, $pushRes['error']['message']);
- } else {
- if (empty($pushRes)) {
- $logModel->setLog('card_recard', 2, $params, '数据丢失!');
- ds_json_encode(10001, '推送失败1');
- }
- }
- $logModel->setLog('card_recard', 1, $params, '推送成功');
- return true;
- } else {
- return true;
- }
- }
- /**
- * 消费记录推送
- */
- public function payRecordPushNoAmount($orderInfo, $isVir)
- {
- $logModel = model('commonlog');
- if (!empty($orderInfo['orderNo'])) {
- $params = $orderInfo;
- $params['is_vir'] = $isVir;
- $hostUrl = config('ds_config.do_net_card_url');
- $url = $hostUrl . '/api/card.number.bill/add';
- $pushRes = common_curl($url, $params);
- if (!empty($pushRes['error'])) {
- $logModel->setLog('card_recard', 2, $params, $pushRes['error']['message']);
- ds_json_encode(10001, $pushRes['error']['message']);
- } else {
- if (empty($pushRes)) {
- $logModel->setLog('card_recard', 2, $params, '数据丢失!');
- ds_json_encode(10001, '推送失败2');
- }
- }
- $logModel->setLog('card_recard', 1, $params, '推送成功');
- return true;
- } else {
- $logModel->setLog('card_recard', 2, [], '数据异常');
- ds_json_encode(10001, '数据异常');
- }
- }
- /**
- * 退款 卡号消息推送
- */
- public function refundRecordPush($orderId, $isVir)
- {
- if ($isVir == 1) {
- //虚拟订单
- $orderInfo = Db::name('vrorder')->where([
- ['order_id', '=', $orderId],
- ])->find();
- } else {
- //实物订单
- $orderInfo = Db::name('order')->where([
- ['order_id', '=', $orderId],
- ])->find();
- }
- if ($orderInfo['card_id'] != 0) {
- $cardInfo = Db::name('sub_card')->where([['id', '=', $orderInfo['card_id']]])->find();
- $amount = $orderInfo['deduction_amount'];
- $amount *= -1;
- $params = [
- 'cardNo' => $cardInfo['card_no'],
- 'memberId' => $orderInfo['buyer_id'],
- 'amount' => $amount, //撤回金额
- 'orderNo' => $orderInfo['order_sn'],
- 'is_vir' => $isVir,
- ];
- $hostUrl = config('ds_config.do_net_card_url');
- $url = $hostUrl . '/api/card.number.bill/add';
- $pushRes = common_curl($url, $params);
- $logModel = model('commonlog');
- if (!empty($pushRes['error'])) {
- $logModel->setLog('card_refund', 2, $params, $pushRes['error']['message']);
- ds_json_encode(10001, $pushRes['error']['message']);
- } else {
- if (empty($pushRes)) {
- $logModel->setLog('card_refund', 2, $params, '数据丢失!');
- ds_json_encode(10001, '推送失败3');
- }
- }
- //加回之前退的金额
- $nowBalance = $cardInfo['balance'] + $orderInfo['deduction_amount'];
- if ($nowBalance == $cardInfo['worth']) {
- //相等,状态为1 未使用
- $cardStatus = 1;
- } else {
- $cardStatus = 2;
- }
- $cardData = [
- 'balance' => $nowBalance,
- 'card_status' => $cardStatus,
- 'freeze' => $cardInfo['freeze'] - $orderInfo['deduction_amount'],
- ];
- $res = Db::name('sub_card')->where([['id', '=', $orderInfo['card_id']]])->update($cardData);
- if ($res) {
- $logModel->setLog('card_refund', 1, $params, '推送成功');
- }
- return true;
- } else {
- return true;
- }
- }
- /**
- * 短信通知
- * @param $order
- * @param int $is_vir
- */
- public function payPhoneMessage($order, $is_vir = 0)
- {
- $smslog_model = model('smslog');
- $order_info = $order['data'] ?? $order;
- $message_arr = [];
- $phone_arr = [];
- if ($is_vir == 0) {
- //实物订单
- $goods_arr = Db::name('ordergoods')->where('order_id', $order['order_id'])->select();
- foreach ($goods_arr as $goods) {
- $gc_id = Db::name('goods')->where('goods_id', $goods['goods_id'])->value('gc_id_1');
- if ($gc_id == 773) {
- $order_common = Db::name('ordercommon')->where('order_id', $order['order_id'])->find();
- $reciver_info = unserialize($order_common['reciver_info']);
- $phone_arr[] = '15396466632';
- $message_arr[] = "您有新的蛋糕订单,请及时处理,蛋糕名称:{$goods['goods_name']},商品数量:{$goods['goods_num']},金额:{$goods['goods_price']},收货人:{$order_common['reciver_name']},联系方式:{$reciver_info['phone']}";
- }
- }
- } elseif ($is_vir == 3) {
- //到店订单
- $store = Db::name('store')->find($order_info['store_id']);
- if (!empty($store) && !empty($store['store_phone'])) {
- $phone_arr[] = $store['store_phone'];
- $date = date('Y-m-d H:i:s');
- $message_arr[] = "尊敬的{$store['store_name']},您于{$date},收到{$order_info['order_amount']}元产品付款,请注意查收";
- }
- }
- if (!empty($phone_arr)) {
- Log::info("交易完成发送短信:" . json_encode($phone_arr) . ' - ' . json_encode($message_arr));
- foreach ($phone_arr as $k => $phone) {
- $smslog_model->sendSms($phone, ['message' => $message_arr[$k]]);
- }
- }
- }
- }
|