123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- <?php
- /**
- * Created by PhpStorm.
- * User: sicilon_IT
- * Date: 2021/6/25
- * Time: 15:52
- */
- namespace app\index\logic;
- use app\index\model\payordermodel;
- use app\index\model\scoreordermodel;
- use app\index\model\userinfomodel;
- use think\Db;
- class orderlogic
- {
- /*
- * 20210625
- */
- public function savenewpayorder($arr)
- {
- $t_p = new payordermodel();
- $rid = $t_p->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);
- }
- }
|