insinfo($arr); return $rid; } /** * 根据订单号获取订单信息 */ public function getorderinfobyoutorderno($outorderno) { $t_p = new payordermodel(); $info = $t_p->selinfobyorder($outorderno); return $info; } /** * 根据订单号获取积分订单信息 */ public function getscoreorderinfobyoutorderno($outorderno) { $m_so = new scoreordermodel(); $info = $m_so->getInfo(['outorderno' => $outorderno]); return $info; } /*** * 积分购买 下订单信息 * wj * 20211108 */ public function createbuyscoreorder($arr) { if (!isset($arr['total_fee']) || !isset($arr['score'])) { return backarr(0, "请求错误"); } $m_u = new userinfomodel(); if (isset($arr['openid'])) { $wuInfo = $m_u->getInfo(['openid' => $arr['openid']]); } if (isset($arr['wid'])) { $wuInfo = $m_u->getInfo(['id' => $arr['wid']]); } if (empty($wuInfo)) { return backarr(0, "无用户信息"); } if (!isset($arr['siliverscore']) || empty($arr['siliverscore'])) { $arr['siliverscore'] = 0; } $wid = $wuInfo['id']; $total_fee = $arr['total_fee']; $openid = $wuInfo['openid']; $score = $arr['score']; $ordrNo = createOrderNo(); $total_fee = bcmul($total_fee, 100); //分 $body = "水猫工匠(天津)科技有限公司-网上服务平台-积分购买"; $orderData = [ 'wid' => $wid, 'orderNo' => $ordrNo, 'total_fee' => $total_fee, 'body' => $body, 'openid' => $openid, 'time' => time(), 'score' => $score, 'siliverscore' => $arr['siliverscore'], ]; return backarr(1, '', $orderData); } /*** * 保存购买积分订单 * 20211108 * wj */ public function savebuyscore($info) { $m_po = new payordermodel(); $m_so = new scoreordermodel(); $outorderno = $info['orderNo']; $poinfo = $m_po->selinfobyorder($outorderno); if ($poinfo) { return backarr(0, "支付单已存在"); } $soinfo = $m_so->getInfo(['outorderno' => $outorderno]); if ($soinfo) { return backarr(0, "积分订单已存在"); } //保存支付数据 Db::startTrans(); try { $openid = isset($info['openid']) ? $info['openid'] : ''; $payorder['wid'] = $info['wid']; $payorder['openid'] = $openid; $payorder['prepay_id'] = $info['prepay_id']; $payorder['createtime'] = date('Y-m-d H:i:s', time()); $payorder['payfee'] = $info['total_fee']; $payorder['outorderno'] = $info['orderNo']; $payorder['order_type'] = 2; $orderid = $m_po->insinfo($payorder); if (empty($orderid)) { throw new \Exception('支付单创建失败'); } //保存积分数据 $moInsertInfo = [ 'orderid' => $orderid, 'score' => $info['score'], 'siliverscore' => $info['siliverscore'], 'wid' => $info['wid'], 'openid' => $openid, 'outorderno' => $info['orderNo'], ]; $soid = $m_so->insertData($moInsertInfo); if (empty($soid)) { throw new \Exception('积分订单创建失败'); } Db::commit(); return backarr(1, '创建成功', ['orderid' => $orderid]); } catch (\Exception $e) { Db::rollback(); return backarr(0, $e->getMessage()); } } /*** * 积分购买回调 * wj * 20211108 */ public function callbackbuyscore($arr) { $fillField = ['outorderno', 'orderstatus', 'ispay']; foreach ($fillField as $key => $value) { if (!isset($arr[$value])) { return backarr(0, "请求错误"); } } $m_so = new scoreordermodel(); $m_po = new payordermodel(); $outorderno = $arr['outorderno']; $orderstatus = $arr['orderstatus']; $isfrontback = 0; $isreatback = 0; if (isset($arr['is_front_back'])) { $isfrontback = 1; } if (isset($arr['is_reat_back'])) { $isreatback = 1; } $ispay = $arr['ispay']; $poinfo = $m_po->selinfobyorder($outorderno); if (empty($poinfo)) { return backarr(0, "无支付单信息"); } if (1 == $poinfo['ispay']) { //已支付不再修改 return backarr(2, "订单已支付"); } $soinfo = $m_so->getInfo(['outorderno' => $outorderno]); if (empty($soinfo)) { return backarr(0, "无积分订单信息"); } $poUpdateData = [ 'paytime' => date('Y-m-d H:i:s'), 'orderstatus' => $orderstatus, 'ispay' => $ispay, 'is_front_back' => $isfrontback, 'is_reat_back' => $isreatback, ]; $row = $m_po->updorederstatusbyid($poinfo['id'], $poUpdateData); if (empty($row)) { return backarr(0, "支付单修改失败"); } if (1 == $ispay) { $soUpdateData = [ 'paytime' => date('Y-m-d H:i:s'), ]; $row = $m_so->updateinfo(['id' => $soinfo['id']], $soUpdateData); if (empty($row)) { return backarr(0, "积分订单修改失败"); } } if (8 == $orderstatus) { return backarr(3, "支付失败"); } if (3 == $orderstatus) { $reurnData = [ 'orderid' => $poinfo['id'], 'outorderno' => $outorderno, ]; return backarr(1, "支付成功", $reurnData); } } /** * 购买积分列表 仅pc端用 * 20211228 * wj */ public function getlistbywhere($arr) { $t_f = new payordermodel(); $where = []; $page = isset($arr['page']) && !empty($arr['page']) ? $arr['page'] : 1; $size = isset($arr['size']) && !empty($arr['size']) ? $arr['size'] : 10; if (isset($arr['wname']) && !empty($arr['wname']) && is_string($arr['wname'])) { $where['u.wname'] = ['like', "%" . $arr['wname'] . "%"]; } if (isset($arr['telno']) && !empty($arr['telno']) && is_numeric($arr['telno'])) { $where['u.telno'] = ['like', "%" . $arr['telno'] . "%"]; } if (isset($arr['ispay']) && is_numeric($arr['ispay']) && in_array($arr['ispay'], [0, 1])) { $where['po.ispay'] = $arr['ispay']; } if (isset($arr['ordertype']) && is_numeric($arr['ordertype'])) { $where['po.order_type'] = $arr['ordertype']; } if (isset($arr['createtime']) && is_array($arr['createtime'])) { $createtime = array_filter($arr['createtime']); if (2 == count($createtime)) { $where['po.createtime'] = ['between', $arr['createtime']]; } } if (isset($arr['paytime']) && is_array($arr['paytime'])) { $createtime = array_filter($arr['paytime']); if (2 == count($createtime)) { $where['po.paytime'] = ['between', $arr['paytime']]; } } $count = $t_f->getList($where, 'count'); if ($count <= 0) { return backarr(0, "无数据"); } $list = $t_f->getList($where, 'po.*,u.wname,u.telno', $page, $size); $data = [ 'count' => $count, 'list' => $list, ]; return backarr(1, "查询成功", $data); } }