123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- 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'));
- }
- }
|