Store.php 4.7 KB
<?php


namespace app\api\controller;

use addons\litestore\model\Litestoreorder;
use app\api\model\LitestoreBanner;
use app\api\model\LitestoreGoodsSpec;
use app\api\model\UserSearch;
use app\common\controller\Api;
use EasyWeChat\Foundation\Application;
use EasyWeChat\Payment\Order;
use think\Db;
use think\Exception;
use think\exception\PDOException;
use think\Request;

/**
 * 店铺接口
 */
class Store extends Api
{

    protected $noNeedLogin = [];
    protected $noNeedRight = ['*'];
    protected $store_model;
    protected $goods_model;
    protected $banner_model;
    protected $spec_model;
    protected $search_model;
    protected $favorite_model;
    protected $comment_model;
    protected $good_model;
    protected $follow_model;
    protected $user_id;

    public function __construct(Request $request, LitestoreBanner $banner, \app\api\model\LitestoreGoods $goods,LitestoreGoodsSpec $spec,UserSearch $search,\app\api\model\Store $store)
    {
        parent::__construct($request);
        $this->banner_model = $banner;
        $this->goods_model = $goods;
        $this->spec_model = $spec;
        $this->search_model = $search;
        $this->store_model = $store;
        $this->user_id = $this->auth->id;
    }

    /**
     * 店铺申请
     * @ApiWeigh    (3)
     *
     * @ApiTitle    (店铺申请)
     * @ApiSummary  (店铺申请)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/store/store_add)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="store_name", type="integer", required=true, description="店铺名称")
     * @ApiParams   (name="house_ids", type="string", sample="店铺1id,店铺2id", required=true, description="入驻社区")
     * @ApiParams   (name="job", type="string", sample="[{'name':'职位名称1','number':'招聘人数1'},{'name':'职位名称2','number':'招聘人数2'}]", required=true, description="招聘职位")
     * @ApiParams   (name="industry_id", type="string", required=true, description="行业/关键词id")
     * @ApiParams   (name="name", type="string", required=true, description="联系人姓名")
     * @ApiParams   (name="mobile", type="string", required=true, description="联系人手机号")
     * @ApiParams   (name="license", type="string", required=true, description="营业执照")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功'
    })
     */
    public function store_add()
    {
//        $param = (new RecruitValidate())->goCheck('add');
        $order_sn = $param['order_sn'] = get_order_sn();
        $pay_data = [];
        if($this->auth->end_time > time()) {
            $param['status'] = 2;
        } else {
            $param['status'] = 1;
            // 获取小程序配置
            $options = \config('miniprogram.basic');
            $app = new Application($options);
            $payment = $app->payment;
            // 获取支付参数
            $attributes = [
                'body' => '发布招募合伙人',
                'out_trade_no' => $order_sn,
                'total_fee' => 1, // $param['money'] * 100
                'spbill_create_ip' => request()->ip(), // 可选,如不传该参数,SDK 将会自动获取相应 IP 地址
                'notify_url' => url('index/ajax/notify',[],true,true), // 支付结果通知网址,如果不设置则会使用配置里的默认地址
                'trade_type' => 'JSAPI', // 请对应换成你的支付方式对应的值类型
                'openid' => Db::name('third')->where('user_id',$this->auth->id)->value('openid'),
            ];
            $order = new Order($attributes);
            $order_result = $payment->pay($order);
            if($order_result['return_code'] == 'SUCCESS' && $order_result['result_code'] == 'SUCCESS') {
                $prepayId = $order_result->prepay_id;
            } else {
                $this->error($order_result['return_msg']);
            }
        }
        Db::startTrans();
        $result = false;
        $result_invite = true;
        try{
            $param['user_id'] = $this->auth->id;
            $result = $this->store_model->add($param);
            $id = $this->store_model->id;
            Db::commit();
        } catch (PDOException $e) {
            Db::rollback();
            $this->error($e->getMessage());
        } catch (Exception $e) {
            Db::rollback();
            $this->error($e->getMessage());
        }
        if(!$result || !$result_invite) {
            $this->error('申请提交失败');
        }
        $this->success('申请提交成功',['id'=>$id,'status'=>$param['status'],'pay_data'=>$pay_data]);
    }
}