// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\api\controller; use app\api\model\card\UserRiceCard as UserRiceCardModel; use app\api\model\Order as OrderModel; use app\api\model\User as UserModel; use app\api\service\User as UserService; use app\api\service\Cart as CartService; use app\api\service\order\Checkout as CheckoutService; use app\api\service\order\CheckoutBargain as CheckoutBargainService; use app\api\service\order\CheckoutZa as CheckoutZaService; use app\api\service\order\CheckoutMiaosha as CheckoutMiaoshaService; use app\api\validate\order\Checkout as CheckoutValidate; use app\common\enum\order\PayType as OrderPayTypeEnum; use app\common\exception\BaseException; use app\common\library\helper; use app\common\service\card\UserRiceCard as UserRiceCardService; use app\api\service\order\CheckoutExchange as CheckoutExchangeService; use app\api\service\order\CheckoutGroupbuy as CheckoutGroupBuyService; use app\api\service\order\CheckoutGroupbuylb as CheckoutGroupBuylbService; use app\api\model\groupbuy\GroupBuyJoin; use app\common\enum\OrderType as OrderTypeEnum; use app\api\model\Order as CheckOrder; use think\facade\Db; use app\api\model\groupbuylb\GroupBuyLbJoin; use app\api\model\order\GroupBuyLbPay; use app\common\model\PushLog; use app\common\model\store\Setting as SettingModel; use app\api\model\za\{ZaActivityRelation,ZaActivityGood}; /** * 订单结算控制器 * Class Checkout * @package app\api\controller */ class Checkout extends Controller { /* @var \app\api\model\User $user */ private $user; /* @var CheckoutValidate $validate */ private $validate; /** * 构造方法 * @throws BaseException */ public function initialize() { parent::initialize(); // 用户信息 $this->user = UserService::getCurrentLoginUser(true); // 验证类 $this->validate = new CheckoutValidate; } /** * 结算台订单信息 * @param string $mode * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function order(string $mode = 'buyNow') { if ($mode === 'buyNow') { return $this->buyNow(); } elseif ($mode === 'cart') { return $this->cart(); } elseif ($mode == 'bargain'){ return $this->bargain(); }elseif ($mode=='groupbuy'){ return $this->groupbuy(); }elseif ($mode=='groupbuylb'){ return $this->groupbuylb(); }else if ($mode=='miaosha'){ return $this->miaosha(); }else if ($mode=='za'){ return $this->za(); }else if ($mode=='zareceive'){ return $this->zareceive(); }elseif($mode == 'pointsExchange'){ return $this->pointsExchange(); } return $this->renderError('结算模式不合法'); } private function pointsExchange() { // 实例化结算台服务 $Checkout = new CheckoutExchangeService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 0, 'staffUserId' => 0, 'deliveryType' => 10 // 配送方式 默认10 10-快递配送 20-门店自提 ])); // 表单验证 if (!$this->validate->scene('pointsExchange')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } // 立即购买:获取订单商品列表 $model = new OrderModel; $params['staffUserId'] = $params['staffUserId']??0; $goodsList = $model->getOrderGoodsListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)$params['goodsNum'], (int)$params['staffUserId'] ); // 获取订单确认信息 $orderInfo = $Checkout->onCheckoutExchange($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } //金钱和积分的兑换比例 $rate = SettingModel::getItem('points_rate')['points_2_money']; if ($this->user['accumulate_points'] < bcmul($orderInfo['orderTotalPrice'] , $rate,0)) { return $this->renderError('积分不足哦', ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::EXCHANGE,// 支付方式 ]); } //买一赠一 领取 public function zareceive(){ $Checkout = new CheckoutZaService; $user = UserService::getCurrentLoginUser(true); $user_id = $user->user_id??0; $param = $this->getParam([ 'signStr'=>'' ]); Db::startTrans(); $rel = ZaActivityRelation::where('sign_str',$param['signStr'])->lock("for update")->find(); if(empty($rel)){ Db::rollback(); return $this->renderError('领取链接已失效!'); } if($rel->is_pay==0){ Db::rollback(); return $this->renderError('赠送人还未支付'); } if($rel->is_pay==2){ Db::rollback(); return $this->renderError('领取链接已失效'); } if($rel->receive_state==1){ Db::rollback(); return $this->renderError('领取链接已失效!!'); } $now = Date('Y-m-d H:i:s',time()); if($now > $rel->expire_time){ Db::rollback(); return $this->renderError("领取链接已过期!"); } // $order_user_id = OrderModel::where("order_id",$rel->order_id)->value("user_id")??0; // if($user_id==$order_user_id){ // Db::rollback(); // return $this->renderError("你是赠送人,不能领取"); // } $relGood = ZaActivityGood::where("id",$rel->za_goods_id)->find(); $params['goodsId'] = $relGood->goods_id; $params['goodsSkuId'] = $relGood->goods_sku_id; $params['zaGoodsId'] = $rel->za_goods_id; $params['staffUserId'] = 0; $params['deliveryType'] = 10; $params['staffUserId'] =0; $params['goodsNum'] = 1; $params['addressId'] = $param['addressId']??0; $params['delivery'] =10; $params['riceCardId'] = -1; $params['couponId'] = -1; // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } // 订单结算api参数 $params = $Checkout->setParam($params); // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsZaListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)1, (int)$params['zaGoodsId'], (int)$params['staffUserId'], true ); $orderInfo = $Checkout->onCheckout($goodsList); $orderInfo['orderPayPrice'] =0; $orderInfo['payType'] = OrderPayTypeEnum::ACTIVITY; if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } $rel->child_order_id = $Checkout->model['order_id']; $rel->receive_state = 1; $rel->receive_time = $now; $rel->receive_user_id = $user_id; $rel->save(); Db::commit(); $order['order_id'] = $Checkout->model['order_id']; $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => OrderPayTypeEnum::ACTIVITY,// 支付方式 ]; return $this->renderSuccess($res); } //买一赠一 public function za(){ // 实例化结算台服务 $Checkout = new CheckoutZaService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 1, 'staffUserId' => 0, 'deliveryType' => 10 // 配送方式 默认10 10-快递配送 20-门店自提 ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } $params['staffUserId'] = $params['staffUserId']??0; // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsZaListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)1, (int)$params['zaGoodsId'], (int)$params['staffUserId'] ); // $goodsList-> // 获取订单确认信息 $orderInfo = $Checkout->onCheckout($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ ZaActivityRelation::where("order_id",$Checkout->model['order_id'])->update(['is_pay'=>1]); //用米卡支付了 return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 'sign_str'=>$Checkout->model['sign_str'] // ]); } $order['order_id'] = $Checkout->model['order_id']; $order['order_no'] = $Checkout->model['order_no']; $order['pay_price'] = $orderInfo['orderPayPrice']; $checkOrder = new CheckOrder; $order_type = OrderTypeEnum::ZA; //定义好这个类型是买一赠一,用来接受回调跳转到买一赠一单,不然会走到传统订单那里, $payment = $checkOrder->onPrePayByWechat($order,$order_type); $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment // 微信支付参数 ]; return $this->renderSuccess($res); // // 构建微信支付请求 // $payment = $model->onOrderPayment($Checkout->model, $params['payType']); // // 返回结算信息 // return $this->renderSuccess([ // 'order_id' => $Checkout->model['order_id'], // 订单id // 'pay_type' => $params['payType'],// 支付方式 // 'payment' => $payment // 微信支付参数 // ]); } /** * 订单提交 * @param string $mode * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function submit(string $mode = 'buyNow') { return $this->order($mode); } /** * 订单确认-立即购买 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ private function buyNow() { // 实例化结算台服务 $Checkout = new CheckoutService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 0, 'staffUserId' => 0, 'deliveryType' => 10 // 配送方式 默认10 10-快递配送 20-门店自提 ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } // 立即购买:获取订单商品列表 $model = new OrderModel; $params['staffUserId'] = $params['staffUserId']??0; $goodsList = $model->getOrderGoodsListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)$params['goodsNum'], (int)$params['staffUserId'] ); // 获取订单确认信息 $orderInfo = $Checkout->onCheckout($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 ]); } // 构建微信支付请求 $payment = $model->onOrderPayment($Checkout->model, $params['payType']); // 返回结算信息 return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'], // 订单id 'pay_type' => $params['payType'], // 支付方式 'payment' => $payment // 微信支付参数 ]); } /** * 订单确认-购物车结算 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ private function cart() { // 实例化结算台服务 $Checkout = new CheckoutService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam()); // 表单验证 if (!$this->validate->scene('cart')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } // 购物车ID集 $cartIds = $this->getCartIds(); // 商品结算信息 $CartModel = new CartService; // 购物车商品列表 $goodsList = $CartModel->getOrderGoodsList($cartIds); // 获取订单结算信息 $orderInfo = $Checkout->onCheckout($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败'); } // 移出购物车中已下单的商品 $CartModel->clear($cartIds); //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 ]); } // 构建微信支付请求 $payment = $Checkout->onOrderPayment(); // 返回状态 return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'], // 订单id 'pay_type' => $params['payType'], // 支付方式 'payment' => $payment // 微信支付参数 ]); } //拼团裂变,又双叕是一个下单接口 public function groupbuylb(){ // $user = UserService::getCurrentLoginUser(true); // var_dump($user->user_id); // die(); // 实例化结算台服务 $Checkout = new CheckoutGroupBuylbService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 1, 'deliveryType' => 10, // 配送方式 默认10 10-快递配送 20-门店自提 'joinId'=>0, 'activityId'=>0 ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } Db::startTrans(); // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsGroupLbListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)$params['goodsNum'], (int)$params['joinId'], (int)$params['activityId'] ); // 获取订单确认信息 $orderInfo = $Checkout->onCheckout($goodsList); if($params['joinId']>0){ $join = GroupBuyLbJoin::where('id',$params['joinId'])->find(); $orderInfo['join_id'] = (int)$params['joinId']; $orderInfo['group_buy_lb_activity_id'] = $join->group_buy_lb_activity_id; } if($params['activityId']>0){ $orderInfo['join_id'] = 0; $orderInfo['group_buy_lb_activity_id'] = $params['activityId']; } if ($this->request->isGet()) { Db::commit(); return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { Db::commit(); return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { Db::commit(); return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ Db::commit(); $join = GroupBuyLbJoin::where('id',$Checkout->buyhelpModel['join_id'])->find(); if($join->status==1 && $join->user_id>0){ $pay = new GroupBuyLbPay; $pay->receiveCoupon($join->user_id,$join->group_buy_lb_activity_id); } if($Checkout->buyhelpModel['user_id']!=$join->user_id){ $mobile = UserModel::where("user_id",$Checkout->buyhelpModel['user_id'])->value("mobile")??''; $content ='恭喜您参与五常大米拼团,成功后给您安排发货。现在您可点击成为新团长,无需支付费用即可组织拼团,成团后享受平台奖励78元现金券。'; PushLog::addSmsMon($content,$mobile,1); } return $this->renderSuccess([ 'order_id' => $Checkout->buyhelpModel['id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 'extra' => ['join_id'=>$Checkout->buyhelpModel['join_id']] ]); } $order['order_id'] = $Checkout->buyhelpModel['id']; $order['order_no'] = $Checkout->buyhelpModel['order_no']; $order['pay_price'] = $Checkout->buyhelpModel['pay_money']; $checkOrder = new CheckOrder; $order_type = OrderTypeEnum::GROUPBUYLB; //定义好这个类型是250,用来接受回调跳转到拼团单,不然会走到传统订单那里, $payment = $checkOrder->onPrePayByWechat($order,$order_type); $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment, // 微信支付参数 'extra' => ['join_id'=>$Checkout->buyhelpModel['join_id']] ]; Db::commit(); return $this->renderSuccess($res); } /** * 订单确认-拼团活动立即购买-逻辑和原确认订单不一样,所以独立出来 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ private function groupbuy() { // 实例化结算台服务 $Checkout = new CheckoutGroupBuyService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 1, 'deliveryType' => 10, // 配送方式 默认10 10-快递配送 20-门店自提 'joinId'=>0, 'activityId'=>0, 'staffUserId' => 0, ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } $params['staffUserId'] = $params['staffUserId']??0; Db::startTrans(); // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsGroupListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)$params['goodsNum'], (int)$params['joinId'], (int)$params['activityId'], (int)$params['staffUserId'] ); // 获取订单确认信息 $orderInfo = $Checkout->onCheckout($goodsList); if($params['joinId']>0){ $join = GroupBuyJoin::where('id',$params['joinId'])->find(); $orderInfo['join_id'] = (int)$params['joinId']; $orderInfo['group_buy_activity_id'] = $join->group_buy_activity_id; } if($params['activityId']>0){ $orderInfo['join_id'] = 0; $orderInfo['group_buy_activity_id'] = $params['activityId']; } if ($this->request->isGet()) { Db::commit(); return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { Db::commit(); return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { Db::commit(); return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ Db::commit(); return $this->renderSuccess([ 'order_id' => $Checkout->buyhelpModel['id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 'extra' => ['join_id'=>$Checkout->buyhelpModel['join_id']] ]); } $order['order_id'] = $Checkout->buyhelpModel['id']; $order['order_no'] = $Checkout->buyhelpModel['order_no']; $order['pay_price'] = $Checkout->buyhelpModel['pay_money']; $checkOrder = new CheckOrder; $order_type = OrderTypeEnum::GROUPBUY; //定义好这个类型,用来接受回调跳转到拼团单,不然会走到传统订单那里, $payment = $checkOrder->onPrePayByWechat($order,$order_type); $res = ['order_id' => $order['order_id'], // 订单id 'pay_type' => 20, // 支付方式 'payment' => $payment, // 微信支付参数 'extra' => ['join_id'=>$Checkout->buyhelpModel['join_id']] ]; Db::commit(); return $this->renderSuccess($res); } /** * 订单确认-砍价活动立即购买-逻辑和原确认订单不一样,所以独立出来 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ private function bargain() { // 实例化结算台服务 $Checkout = new CheckoutBargainService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 1, 'staffUserId' => 0, 'deliveryType' => 10 // 配送方式 默认10 10-快递配送 20-门店自提 ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } $params['staffUserId'] = $params['staffUserId']??0; // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsBargainListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)1, (int)$params['bargainId'], (int)$params['staffUserId'] ); // $goodsList-> // 获取订单确认信息 $orderInfo = $Checkout->onCheckout($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 ]); } // 构建微信支付请求 $payment = $model->onOrderPayment($Checkout->model, $params['payType']); // 返回结算信息 return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'], // 订单id 'pay_type' => $params['payType'], // 支付方式 'payment' => $payment // 微信支付参数 ]); } /** * 订单确认-秒杀活动立即购买-逻辑和原确认订单不一样,所以独立出来 * @return array|\think\response\Json * @throws BaseException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ private function miaosha() { // 实例化结算台服务 $Checkout = new CheckoutMiaoshaService; // 订单结算api参数 $params = $Checkout->setParam($this->getParam([ 'goodsId' => 0, 'goodsSkuId' => '', 'goodsNum' => 1, 'staffUserId' => 0, 'deliveryType' => 10, // 配送方式 默认10 10-快递配送 20-门店自提 // 'promotionMonitorId'=>0 ])); // 表单验证 if (!$this->validate->scene('buyNow')->check($params)) { return $this->renderError($this->validate->getError(), ['is_created' => false]); } $params['staffUserId'] = $params['staffUserId']??0; // 立即购买:获取订单商品列表 $model = new OrderModel; $goodsList = $model->getOrderGoodsMiaoshaListByNow( (int)$params['goodsId'], (string)$params['goodsSkuId'], (int)$params['goodsNum'], (int)$params['msId'], (int)$params['staffUserId'] ); // $goodsList-> // 获取订单确认信息d $orderInfo = $Checkout->onCheckout($goodsList); if ($this->request->isGet()) { return $this->renderSuccess(['order' => $orderInfo]); } // 验证订单是否存在错误 if ($Checkout->hasError()) { return $this->renderError($Checkout->getError(), ['is_created' => false]); } // 创建订单 if (!$Checkout->createOrder($orderInfo)) { return $this->renderError($Checkout->getError() ?: '订单创建失败', ['is_created' => false]); } //如果支付金额为0 if($orderInfo['orderPayPrice']<=0){ return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'],// 订单id 'pay_type' => OrderPayTypeEnum::MICAH_EXCHANGE,// 支付方式 ]); } // 构建微信支付请求 $payment = $model->onOrderPayment($Checkout->model, $params['payType']); // 返回结算信息 return $this->renderSuccess([ 'order_id' => $Checkout->model['order_id'], // 订单id 'pay_type' => $params['payType'], // 支付方式 'payment' => $payment // 微信支付参数 ]); } /** * 获取购物车ID集 * @return false|string[] */ private function getCartIds() { $cartIds = $this->request->param('cartIds'); return explode(',', $cartIds); } /** * 订单结算提交的参数 * @param array $define * @return array */ private function getParam($define = []) { return array_merge($define, $this->request->param()); } //我的可用现金卡 public function listCard($goodsId){ $goodsId = explode(',',$goodsId); $user = UserService::getCurrentLoginUser(true); $list = UserRiceCardModel::with(['riceCardGoodsExcept']) ->where([ 'user_id'=>$user['user_id'], 'activation_state'=> 1,//激活状态 0 未激活,1已激活 'effect_state'=> 1,//生效 状态 0:转赠中 1:生效 2已失效 默认生效 当转赠成功的时侯,变成已失效 'frozen_state'=> 0,//冻结状态 0 未冻结 1 已冻结 'is_delete'=> 0,//删除状态 0 未删除 1 已删除 ])->where('balance','>',0) ->select()->toArray(); foreach ($list as $key=>&$item){ $exceptGoodsId = helper::getArrayColumn($item['riceCardGoodsExcept'],'goods_id'); //判断当前商品是否在可使用范围内 foreach ($goodsId as $goods_id) { if(in_array($goods_id,$exceptGoodsId)){ unset($list[$key]); } } } if(!empty($list)){ $list = array_values($list); } return $this->renderSuccess(compact('list')); } }