| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- // +----------------------------------------------------------------------
- // | Laravel框架 [ Laravel ]
- // +----------------------------------------------------------------------
- // | 版权所有 2017~2021 Laravel研发中心
- // +----------------------------------------------------------------------
- // | 官方网站: http://www.laravel.cn
- // +----------------------------------------------------------------------
- // | Author: wesmiler <12345678@qq.com>
- // +----------------------------------------------------------------------
- namespace App\Services;
- use App\Models\GongdengFoxiangModel;
- use App\Models\GongdengOrderModel;
- use App\Models\LampMealsModel;
- use App\Models\MemberModel;
- /**
- * 供灯管理-服务类
- * @author wesmiler
- * @since 2020/11/11
- * Class GongdengOrderService
- * @package App\Services
- */
- class GongdengOrderService extends BaseService
- {
- /**
- * 构造函数
- * @author wesmiler
- * @since 2020/11/11
- * GongdengOrderService constructor.
- */
- public function __construct()
- {
- $this->model = new GongdengOrderModel();
- }
- /**
- * 获取列表
- * @return array
- * @since 2020/11/11
- * @author wesmiler
- */
- public function getList()
- {
- $params = request()->all();
- return parent::getList();
- }
- /**
- * 供灯下单
- */
- public function buy($userId){
- $params = request()->all();
- // 验证佛像信息
- $fid = isset($params['fid'])? $params['fid'] : 0;
- $foInfo = GongdengFoxiangModel::where(['id'=>$fid, 'status'=> 1,'mark'=> 1])
- ->select(['id','name'])
- ->first();
- if(!$foInfo || $fid<=0){
- return message('供灯佛像信息不存在', false);
- }
- $payType = isset($params['payType'])? $params['payType'] : 0;
- if(!in_array($payType, [1])){
- return message('支付方式暂不支持', false);
- }
- // 套餐信息
- $mid = isset($params['mid'])? $params['mid'] : 0;
- $mealInfo = LampMealsModel::where(['id'=>$mid, 'status'=> 1,'mark'=> 1])
- ->select(['id','name','price','num'])
- ->first();
- if(!$mealInfo){
- return message('供灯套餐不存在或已下架', false);
- }
- // 验证用户是否已授权
- $memberInfo = MemberModel::where(['id'=> $userId, 'mark'=> 1, 'status'=> 1])
- ->select('id','openid','nickname')
- ->first();
- $openid = isset($memberInfo['openid'])? trim($memberInfo['openid']) : '';
- if(!$memberInfo){
- return message('账号已被冻结,请联系客服', false);
- }
- if(empty($openid)){
- return message('账号获取授权参数失败,请退出重试', false);
- }
- // 验证是否供灯过
- $buyType = 1;
- $gdCheckData = GongdengOrderModel::where(['source_id'=> $fid,'user_id'=> $userId,'status'=>2,'mark'=>1])
- ->where('expire_time','>=', time())
- ->select(['id','source_id','user_id','expire_time','params'])
- ->first();
- // 续费
- if($gdCheckData){
- $buyType = 2;
- }
- // 创建订单
- $expireTime = ($mealInfo->num*24*3600) + time();
- $data = [
- 'source_id'=> $fid,
- 'user_id'=> $userId,
- 'pay_type'=> $payType,
- 'buy_type'=> $buyType,
- 'order_sn'=> get_order_num('G'),
- 'num'=> 1,
- 'price'=> $mealInfo->price,
- 'total'=> $mealInfo->price,
- 'sf_name'=> isset($params['sf_name'])? trim($params['sf_name']) : '',
- 'qf_content'=> isset($params['qf_content'])? trim($params['qf_content']) : '',
- 'is_hide'=> isset($params['is_hide'])? intval($params['is_hide']) : 0,
- 'expire_time'=> $expireTime,
- 'create_time'=> time(),
- 'status'=> 1,
- ];
- // 订单
- if(!$oid = GongdengOrderModel::insertGetId($data)){
- return message('供灯订单创建失败', false);
- }
- // 支付参数
- switch($payType){
- case 1: // 微信支付
- $order = [
- 'openid'=> $openid,
- 'orderNo'=> $data['order_sn'],
- 'amount'=> $data['total'],
- 'body'=> '供灯订单支付',
- ];
- $jsapiParams = WechatService::jsapiUnifiedorder($order);
- $code = isset($jsapiParams['code'])? $jsapiParams['code'] : '';
- var_dump($jsapiParams);
- if($code == 'error' || empty($jsapiParams)){
- return message('支付处理失败', false);
- }
- return message('订单创建成功', true, $jsapiParams);
- break;
- default:
- break;
- }
- return message('支付处理失败', false);
- }
- }
|