123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- <?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');
- }
- /**
- * @param $where
- * @return array
- */
- public static function getList($where)
- {
- $model = self::where('paid', $where['paid']);
- if (isset($where['search']) && $where['search'] != '') $model = $model->where('name|iacard', "%{$where['search']}%");
- $data = $model->page((int)$where['page'], (int)$where['limit'])->order('status asc,add_time desc')->select()->each(function ($item) {
- $item['_add_time'] = date('Y-m-d H:i:s', $item['add_time']);
- $item['_valid_time'] = date('Y-m-d H:i:s', $item['valid_time']);
- $item['_pay_time'] = date('Y-m-d H:i:s', $item['pay_time']);
- $item['_pay_time'] = date('Y-m-d H:i:s', $item['pay_time']);
- $item['_type'] = $item['type'] == 1 ? "个人会员" : "企业会员";
- $item['grade_info'] = MemberGrade::where('grade=' . $item['grade'])->where('type=' . $item['type'])->find();
- $item['grade_name'] = $item['grade_info']['name'];
- $item['status_txt'] = ($item['status'] == 0 ? "待审核" : ($item['status'] == 1 ? "通过" : "驳回"));
- if ($item['status'] == 1) $item['status_txt'] .= '<br/>有效期至:<br/>' . date('Y-m-d', $item['valid_time']);
- });
- $count = $model->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 = self::create(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;
- }
- }
|