|
@@ -0,0 +1,168 @@
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author: wuhaotian<442384644@qq.com>
|
|
|
+ * @day: 2019/12/07
|
|
|
+ */
|
|
|
+
|
|
|
+namespace app\models\member;
|
|
|
+
|
|
|
+use app\admin\model\user\User;
|
|
|
+use app\models\store\StoreOrderStatus;
|
|
|
+use app\models\store\StorePink;
|
|
|
+use app\models\user\UserBill;
|
|
|
+use app\models\user\UserSpread;
|
|
|
+use crmeb\basic\BaseModel;
|
|
|
+use crmeb\repositories\PaymentRepositories;
|
|
|
+use crmeb\traits\ModelTrait;
|
|
|
+use think\db\exception\DataNotFoundException;
|
|
|
+use think\db\exception\DbException;
|
|
|
+use think\db\exception\ModelNotFoundException;
|
|
|
+use think\db\Where;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Class UserGroup
|
|
|
+ * @package app\admin\model\user
|
|
|
+ */
|
|
|
+class MemberCheck extends BaseModel
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * 数据表主键
|
|
|
+ * @var string
|
|
|
+ */
|
|
|
+ protected $pk = 'id';
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 模型名称
|
|
|
+ * @var string
|
|
|
+ */
|
|
|
+ protected $name = 'member_check';
|
|
|
+
|
|
|
+ protected static $payType = ['weixin' => '微信支付', 'yue' => '余额支付'];
|
|
|
+
|
|
|
+ use ModelTrait;
|
|
|
+
|
|
|
+ public static function valid()
|
|
|
+ {
|
|
|
+ return self::where('paid', 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getValidList($where)
|
|
|
+ {
|
|
|
+ $data = self::valid()
|
|
|
+ ->page((int)$where['page'], (int)$where['limit'])
|
|
|
+ ->order('add_time', 'desc')->select()->each(function ($item) {
|
|
|
+ $user = \app\admin\model\user\User::get($item['uid']);
|
|
|
+ $item['user_name'] = $user['nickname'];
|
|
|
+ $item['_add_time'] = date('Y-m-d H:i:s', $item['add_time']);
|
|
|
+ $item['_pay_time'] = date('Y-m-d H:i:s', $item['pay_time']);
|
|
|
+ });
|
|
|
+ $count = self::valid()->count();
|
|
|
+ return compact('count', 'data');
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function createOrder($param, $uid, $pay_type, $from)
|
|
|
+ {
|
|
|
+ $type = $param['type'] ?? '';
|
|
|
+ $name = $param['name'] ?? '';
|
|
|
+ $idcard = $param['id'] ?? '';
|
|
|
+ $phone = $param['phone'] ?? '';
|
|
|
+ $location = $param['location'] ?? '';
|
|
|
+ $detail_address = $param['address'] ?? '';
|
|
|
+ $job = $param['occupation'] ?? '';
|
|
|
+ $job_year = $param['careerYears'] ?? '';
|
|
|
+ $saver = $param['sponsor'] ?? '';
|
|
|
+ $logo = $param['img'] ?? '';
|
|
|
+ $grade = $param['grade'] ?? '';
|
|
|
+ $location = explode('/', $location);
|
|
|
+ $province = $location[0] ?? '';
|
|
|
+ $city = $location[1] ?? '';
|
|
|
+ $area = $location[2] ?? '';
|
|
|
+ self::beginTrans();
|
|
|
+ try {
|
|
|
+ if (!array_key_exists($pay_type, self::$payType)) return self::setErrorInfo('选择支付方式有误!', true);
|
|
|
+ $userInfo = User::getUserInfo($uid);
|
|
|
+ if (!$userInfo) return self::setErrorInfo('用户不存在!', true);
|
|
|
+ if (!$grade || !$uid || !$type || !$name || !$idcard || !$phone || !$province || !$city || !$area || !$detail_address || !$job || !$job_year || !$saver || !$logo) {
|
|
|
+ return self::setErrorInfo('参数不完整', true);
|
|
|
+ }
|
|
|
+ $member = MemberGrade::where(['type' => $type, 'grade' => $grade])->find();
|
|
|
+ if (!$member) self::setErrorInfo('会员类型不存在', true);
|
|
|
+ if (self::where('idcard', $idcard)->where('paid', 1)->where('status', 'in', '0,1')->find())
|
|
|
+ return self::setErrorInfo('已有同身份证/企业代码的记录', true);
|
|
|
+ $add_time = time();
|
|
|
+ $pay_money = $member['price'];
|
|
|
+ $order_id = self::getOrderId();
|
|
|
+ $order = compact('pay_type', 'from', 'order_id', 'grade', 'add_time', 'pay_money', 'saver', 'logo', 'uid', 'type', 'name', 'idcard', 'phone', 'province', 'city', 'area', 'detail_address', 'job', 'job_year');
|
|
|
+ if (!$order) return self::setErrorInfo('订单生成失败!', true);
|
|
|
+ self::commitTrans();
|
|
|
+ return $order;
|
|
|
+ } catch (\PDOException $e) {
|
|
|
+ self::rollbackTrans();
|
|
|
+ return self::setErrorInfo('生成订单时SQL执行错误错误原因:' . $e->getMessage());
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ self::rollbackTrans();
|
|
|
+ return self::setErrorInfo('生成订单时系统错误错误原因:' . $e->getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function jsPayPrice($order_id, $uid)
|
|
|
+ {
|
|
|
+ $orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->find();
|
|
|
+ if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
+ if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
+ $userInfo = \app\models\user\User::getUserInfo($uid);
|
|
|
+ self::beginTrans();
|
|
|
+ $res1 = UserBill::expend('申请会员', $uid, 'now_money', 'pay_member', $orderInfo['pay_money'], $orderInfo['id'], $userInfo['now_money'], '微信支付' . floatval($orderInfo['pay_money']) . '元申请会员');
|
|
|
+ $res2 = self::paySuccess($order_id, 'weixin');//微信支付为0时
|
|
|
+ $res = $res1 && $res2;
|
|
|
+ self::checkTrans($res);
|
|
|
+ return $res;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function yuePay($order_id, $uid)
|
|
|
+ {
|
|
|
+ $orderInfo = self::where('uid', $uid)->where('order_id', $order_id)->find();
|
|
|
+ if (!$orderInfo) return self::setErrorInfo('订单不存在!');
|
|
|
+ if ($orderInfo['paid']) return self::setErrorInfo('该订单已支付!');
|
|
|
+ $userInfo = \app\models\user\User::getUserInfo($uid);
|
|
|
+ if ($userInfo['now_money'] < $orderInfo['pay_money'])
|
|
|
+ return self::setErrorInfo(['status' => 'pay_deficiency', 'msg' => '余额不足' . floatval($orderInfo['pay_money'])]);
|
|
|
+ self::beginTrans();
|
|
|
+
|
|
|
+ $res1 = false !== User::bcDec($uid, 'now_money', $orderInfo['pay_money'], 'uid');
|
|
|
+ $res2 = UserBill::expend('申请会员', $uid, 'now_money', 'pay_member', $orderInfo['pay_money'], $orderInfo['id'], $userInfo['now_money'], '余额支付' . floatval($orderInfo['pay_money']) . '元申请会员');
|
|
|
+ $res3 = self::paySuccess($order_id, 'yue');//余额支付成功
|
|
|
+ $res = $res1 && $res2 && $res3;
|
|
|
+ self::checkTrans($res);
|
|
|
+ return $res;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * //TODO 支付成功后
|
|
|
+ * @param $orderId
|
|
|
+ * @param string $paytype
|
|
|
+ * @param string $formId
|
|
|
+ * @return bool
|
|
|
+ * @throws DataNotFoundException
|
|
|
+ * @throws DbException
|
|
|
+ * @throws ModelNotFoundException
|
|
|
+ */
|
|
|
+ public static function paySuccess($orderId, $paytype = 'weixin')
|
|
|
+ {
|
|
|
+ $order = self::where('order_id', $orderId)->find();
|
|
|
+ $res1 = self::where('order_id', $orderId)->update(['paid' => 1, 'pay_type' => $paytype, 'pay_time' => time()]);//订单改为支付
|
|
|
+ $now_money = \app\models\user\User::where('uid', $order['uid'])->value('now_money');
|
|
|
+ UserBill::expend('申请会员', $order['uid'], 'now_money', 'pay_money', $order['pay_money'], $order['id'], $now_money, '支付' . floatval($order['pay_money']) . '元申请会员');
|
|
|
+ return false !== $res1;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getOrderId()
|
|
|
+ {
|
|
|
+ do {
|
|
|
+ $str = 'mem' . time() . rand(1000, 9999);
|
|
|
+ } while (self::be(['order_id' => $str]));
|
|
|
+ return $str;
|
|
|
+ }
|
|
|
+}
|