admin/app/shopapi/controller/Apply.php

421 lines
20 KiB
PHP

<?php
/**
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.cdcloudshop.com
* =========================================================
*/
namespace app\shopapi\controller;
use app\model\shop\ShopApply;
use app\model\shop\ShopGroup as ShopGroupModel;
use app\model\shop\ShopCategory as ShopCategoryModel;
use app\model\shop\ShopApply as ShopApplyModel;
use app\model\shop\Config as ConfigModel;
use app\model\system\Address as AddressModel;
use app\model\web\WebSite as WebsiteModel;
use app\model\shop\ShopAccount as ShopaccountModel;
use app\model\system\Promotion as PromotionModel;
use addon\shopwithdraw\model\Config as ShopWithdrawConfig;
use app\model\system\User as userModel;
use think\facade\Cache;
use think\facade\Session;
class Apply extends BaseApi
{
public function __construct()
{
//执行父类构造函数
parent::__construct();
$token = $this->checkToken();
if ($token[ 'code' ] < 0) {
echo $this->response($token);
exit;
}
}
/**
* 申请入驻首页
* @return false|string
*/
public function index()
{
//店铺主营行业
$shop_category_model = new ShopCategoryModel();
$shop_category = $shop_category_model->getCategoryList('', '*', 'sort asc', '');
$data[ 'shop_category' ] = $shop_category[ 'data' ];
//入驻协议
$config_model = new ConfigModel();
$shop_apply_agreement = $config_model->getShopApplyAgreement();
$data[ 'shop_apply_agreement' ] = $shop_apply_agreement[ 'data' ];
//查询省级数据列表
$address_model = new AddressModel();
$list = $address_model->getAreaList([ [ "pid", "=", 0 ], [ "level", "=", 1 ] ]);
$data[ 'province_list' ] = $list[ "data" ];
//获取申请完整信息
$shop_apply_model = new ShopApplyModel();
$condition[] = [ 'uid', '=', $this->uid ];
$shop_apply_info = $shop_apply_model->getApplyDetail($condition);
if ($shop_apply_info[ 'data' ] == null) {//未填写申请信息
//第一步
$procedure = 1;
} else {//已填写申请信息
//判断审核状态
if ($shop_apply_info[ 'data' ][ 'apply_state' ] == 1) {
$procedure = 2;//审核中
} elseif ($shop_apply_info[ 'data' ][ 'apply_state' ] == 2) {
if ($shop_apply_info[ 'data' ][ 'paying_money_certificate' ] != '') {
$procedure = 3;//财务凭据审核中
} else {
$procedure = 6;//财务凭据提交中
}
} elseif ($shop_apply_info[ 'data' ][ 'apply_state' ] == 3) {
$procedure = 5;//入驻成功
} elseif ($shop_apply_info[ 'data' ][ 'apply_state' ] == -2) {
$procedure = 7;//财务审核失败
} else {
$procedure = 4;//审核失败
}
}
$data[ 'procedure' ] = $procedure;
$data[ 'shop_apply_info' ] = $shop_apply_info[ "data" ];
//收款信息
$receivable_config = $config_model->getSystemBankAccount();
$data[ 'receivable_config' ] = $receivable_config[ 'data' ];
//平台配置信息
$website_model = new WebsiteModel();
$website_info = $website_model->getWebSite([ [ 'site_id', '=', 0 ] ], 'web_phone');
$data[ 'website_info' ] = $website_info[ 'data' ];
//快捷入驻
$account_model = new ShopaccountModel();
$config_info = $account_model->getShopWithdrawConfig();
if (empty($config_info[ 'data' ])) {
$id_experience = 0;
} else {
$id_experience = $config_info[ 'data' ][ 'value' ][ 'id_experience' ];
}
$data[ 'id_experience' ] = $id_experience;
$promotion_model = new PromotionModel();
//插件
$promotions = $promotion_model->getPromotions();
$promotions = $promotions[ 'shop' ];
//店铺等级
$shop_group_model = new ShopGroupModel();
$shop_group = $shop_group_model->getGroupList([ [ 'is_own', '=', 0 ] ], '*', 'fee asc')[ 'data' ];
foreach ($shop_group as $k => $v) {
$addon_array = !empty($v[ 'addon_array' ]) ? explode(',', $v[ 'addon_array' ]) : [];
foreach ($promotions as $key => &$promotion) {
if (!empty($promotion[ 'is_developing' ])) {
unset($promotions[ $key ]);
continue;
}
$promotion[ 'is_checked' ] = 0;
if (in_array($promotion[ 'name' ], $addon_array)) {
$promotion[ 'is_checked' ] = 1;
}
$shop_group[ $k ][ 'promotion' ][] = $promotion;
}
array_multisort(array_column($shop_group[ $k ][ 'promotion' ], 'is_checked'), SORT_DESC, $shop_group[ $k ][ 'promotion' ]);
}
$data[ 'group_info' ] = $shop_group;
//城市分站
$is_city_addon = addon_is_exit('city');
$data[ 'is_city' ] = $is_city_addon;
if ($is_city_addon == 1) {
//获取城市分站信息
$city = $website_model->getWebsiteList([ [ 'site_id ', '>=', 0 ], [ 'status', '=', 1 ] ], 'site_id,site_area_id,site_area_name');
$data[ 'web_city' ] = $city[ 'data' ];
} else {
$data[ 'web_city' ] = [];
}
$data[ 'support_transfer_type' ] = $this->getTransferType();
return $this->response($this->success($data));
}
public function groupInfo()
{
$promotion_model = new PromotionModel();
//插件
$promotions = $promotion_model->getPromotions();
$promotions = $promotions[ 'shop' ];
//店铺等级
$shop_group_model = new ShopGroupModel();
$shop_group = $shop_group_model->getGroupList([ [ 'is_own', '=', 0 ] ], '*', 'fee asc')[ 'data' ];
foreach ($shop_group as $k => $v) {
$addon_array = !empty($v[ 'addon_array' ]) ? explode(',', $v[ 'addon_array' ]) : [];
foreach ($promotions as $key => &$promotion) {
if (!empty($promotion[ 'is_developing' ])) {
unset($promotions[ $key ]);
continue;
}
$promotion[ 'is_checked' ] = 0;
if (in_array($promotion[ 'name' ], $addon_array)) {
$promotion[ 'is_checked' ] = 1;
}
$shop_group[ $k ][ 'promotion' ][] = $promotion;
}
array_multisort(array_column($shop_group[ $k ][ 'promotion' ], 'is_checked'), SORT_DESC, $shop_group[ $k ][ 'promotion' ]);
}
return $this->response($this->success($shop_group));
}
/*
* 申请入驻
* */
public function apply()
{
//申请信息
$apply_data = [
'site_id' => isset($this->params[ 'site_id' ]) ? $this->params[ 'site_id' ] : 0,
'website_id' => isset($this->params[ 'website_id' ]) ? $this->params[ 'website_id' ] : 0,
'uid' => $this->uid,//用户ID
'username' => $this->user_info[ 'username' ],//账户
'shop_name' => isset($this->params[ 'shop_name' ]) ? $this->params[ 'shop_name' ] : '',//申请店铺名称
'apply_state' => 1,//审核状态(待审核)
'apply_year' => isset($this->params[ 'apply_year' ]) ? $this->params[ 'apply_year' ] : '',//入驻年长
'category_name' => isset($this->params[ 'category_name' ]) ? $this->params[ 'category_name' ] : '',//店铺分类名称
'category_id' => isset($this->params[ 'category_id' ]) ? $this->params[ 'category_id' ] : '',//店铺分类id
'group_name' => isset($this->params[ 'group_name' ]) ? $this->params[ 'group_name' ] : '',//开店套餐名称
'group_id' => isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : ''// 开店套餐ID
];
//认证信息
$cert_type = isset($this->params[ 'cert_type' ]) ? $this->params[ 'cert_type' ] : '';//申请类型
if ($cert_type == 1) {
//个人
$cert_data = [
'cert_type' => $cert_type,
'contacts_name' => isset($this->params[ 'contacts_name' ]) ? $this->params[ 'contacts_name' ] : '',//联系人姓名
'contacts_mobile' => isset($this->params[ 'contacts_mobile' ]) ? $this->params[ 'contacts_mobile' ] : '',//联系人手机
'contacts_card_no' => isset($this->params[ 'contacts_card_no' ]) ? $this->params[ 'contacts_card_no' ] : '',//联系人身份证
'contacts_card_electronic_2' => isset($this->params[ 'contacts_card_electronic_2' ]) ? $this->params[ 'contacts_card_electronic_2' ] : '',//申请人手持身份证正面
'contacts_card_electronic_3' => isset($this->params[ 'contacts_card_electronic_3' ]) ? $this->params[ 'contacts_card_electronic_3' ] : '',//申请人手持身份证反面
'bank_account_name' => isset($this->params[ 'bank_account_name' ]) ? $this->params[ 'bank_account_name' ] : '',//银行开户名
'bank_account_number' => isset($this->params[ 'bank_account_number' ]) ? $this->params[ 'bank_account_number' ] : '',//公司银行账号
'bank_name' => isset($this->params[ 'bank_name' ]) ? $this->params[ 'bank_name' ] : '',//联系人姓名
'bank_address' => isset($this->params[ 'bank_address' ]) ? $this->params[ 'bank_address' ] : '',//开户银行所在地
'bank_code' => isset($this->params[ 'bank_code' ]) ? $this->params[ 'bank_code' ] : '',//支行联行号
'bank_type' => isset($this->params[ 'bank_type' ]) ? $this->params[ 'bank_type' ] : '',//结算账户类型
'settlement_bank_account_name' => isset($this->params[ 'settlement_bank_account_name' ]) ? $this->params[ 'settlement_bank_account_name' ] : '',
'settlement_bank_account_number' => isset($this->params[ 'settlement_bank_account_number' ]) ? $this->params[ 'settlement_bank_account_number' ] : '',
'settlement_bank_name' => isset($this->params[ 'settlement_bank_name' ]) ? $this->params[ 'settlement_bank_name' ] : '',//结算开户银行支行名称
'settlement_bank_address' => isset($this->params[ 'settlement_bank_address' ]) ? $this->params[ 'settlement_bank_address' ] : ''//结算开户银行所在地
];
} else {
//公司
$cert_data = [
'cert_type' => $cert_type,
'company_name' => isset($this->params[ 'company_name' ]) ? $this->params[ 'company_name' ] : '',//公司名称
'company_province_id' => isset($this->params[ 'company_province_id' ]) ? $this->params[ 'company_province_id' ] : '',//公司所在省
'company_city_id' => isset($this->params[ 'company_city_id' ]) ? $this->params[ 'company_city_id' ] : '',//公司所在市
'company_district_id' => isset($this->params[ 'company_district_id' ]) ? $this->params[ 'company_district_id' ] : '',//公司所在区/县
'company_address' => isset($this->params[ 'company_address' ]) ? $this->params[ 'company_address' ] : '',//公司地址
'company_full_address' => isset($this->params[ 'company_full_address' ]) ? $this->params[ 'company_full_address' ] : '',//公司完整地址
'business_licence_number' => isset($this->params[ 'business_licence_number' ]) ? $this->params[ 'business_licence_number' ] : '',//统一社会信用码
'business_licence_number_electronic' => isset($this->params[ 'business_licence_number_electronic' ]) ? $this->params[ 'business_licence_number_electronic' ] : '',//营业执照电子版
'business_sphere' => isset($this->params[ 'business_sphere' ]) ? $this->params[ 'business_sphere' ] : '',//法定经营范围
'contacts_name' => isset($this->params[ 'contacts_name' ]) ? $this->params[ 'contacts_name' ] : '',//联系人姓名
'contacts_mobile' => isset($this->params[ 'contacts_mobile' ]) ? $this->params[ 'contacts_mobile' ] : '',//联系人手机
'contacts_card_no' => isset($this->params[ 'contacts_card_no' ]) ? $this->params[ 'contacts_card_no' ] : '',//联系人身份证
'contacts_card_electronic_2' => isset($this->params[ 'contacts_card_electronic_2' ]) ? $this->params[ 'contacts_card_electronic_2' ] : '',//申请人手持身份证正面
'contacts_card_electronic_3' => isset($this->params[ 'contacts_card_electronic_3' ]) ? $this->params[ 'contacts_card_electronic_3' ] : '',//申请人手持身份证反面
'bank_account_name' => isset($this->params[ 'bank_account_name' ]) ? $this->params[ 'bank_account_name' ] : '',//银行开户名
'bank_account_number' => isset($this->params[ 'bank_account_number' ]) ? $this->params[ 'bank_account_number' ] : '',//公司银行账号
'bank_name' => isset($this->params[ 'bank_name' ]) ? $this->params[ 'bank_name' ] : '',//联系人姓名
'bank_address' => isset($this->params[ 'bank_address' ]) ? $this->params[ 'bank_address' ] : '',//开户银行所在地
'bank_code' => isset($this->params[ 'bank_code' ]) ? $this->params[ 'bank_code' ] : '',//支行联行号
'bank_type' => isset($this->params[ 'bank_type' ]) ? $this->params[ 'bank_type' ] : '',//结算账户类型
'settlement_bank_account_name' => isset($this->params[ 'settlement_bank_account_name' ]) ? $this->params[ 'settlement_bank_account_name' ] : '',
'settlement_bank_account_number' => isset($this->params[ 'settlement_bank_account_number' ]) ? $this->params[ 'settlement_bank_account_number' ] : '',
'settlement_bank_name' => isset($this->params[ 'settlement_bank_name' ]) ? $this->params[ 'settlement_bank_name' ] : '',//结算开户银行支行名称
'settlement_bank_address' => isset($this->params[ 'settlement_bank_address' ]) ? $this->params[ 'settlement_bank_address' ] : ''//结算开户银行所在地
];
}
$model = new ShopApplyModel();
$result = $model->apply($apply_data, $cert_data);
return $this->response($result);
}
/**
* 判断店铺名称是否存在
*/
public function shopNameExist()
{
$shop_name = isset($this->params[ 'shop_name' ]) ? $this->params[ 'shop_name' ] : '';
$model = new ShopApplyModel();
$res = $model->shopNameExist($shop_name);
return $this->response($res);
}
/*
* 获取申请金额
* */
public function getApplyMoney()
{
$apply_year = isset($this->params[ 'apply_year' ]) ? $this->params[ 'apply_year' ] : '';//入驻年长
$category_id = isset($this->params[ 'category_id' ]) ? $this->params[ 'category_id' ] : '';//店铺分类id
$group_id = isset($this->params[ 'group_id' ]) ? $this->params[ 'group_id' ] : '';//店铺等级ID
$model = new ShopApplyModel();
$result = $model->getApplyMoney($apply_year, $group_id, $category_id);
return $this->response($result);
}
/*
* 提交支付凭证
**/
public function editApply()
{
//申请信息
$apply_data = [
'paying_money_certificate' => isset($this->params[ 'paying_money_certificate' ]) ? $this->params[ 'paying_money_certificate' ] : '',// 付款凭证
'paying_money_certificate_explain' => isset($this->params[ 'paying_money_certificate_explain' ]) ? $this->params[ 'paying_money_certificate_explain' ] : '',// 付款凭证说明
'apply_state' => 2
];
$model = new ShopApplyModel();
$condition[] = [ 'uid', '=', $this->uid ];
$result = $model->editApply($apply_data, $condition);
return $this->response($result);
}
/**
* 体验入驻
*/
public function experienceApply()
{
$shop_data = [
'site_name' => isset($this->params[ 'site_name' ]) ? $this->params[ 'site_name' ] : '', //店铺名称
'category_id' => isset($this->params[ 'category_id' ]) ? $this->params[ 'category_id' ] : '', //主营行业id
'category_name' => isset($this->params[ 'category_name' ]) ? $this->params[ 'category_name' ] : '', //主营行业名称
'website_id' => isset($this->params[ 'website_id' ]) ? $this->params[ 'website_id' ] : '',
];
$model = new ShopApply();
$res = $model->experienceApply($shop_data, $this->user_info);
return $this->response($res);
}
/**
* 判断结算类型
*/
public function getTransferType()
{
$support_type = [];
if (addon_is_exit("shopwithdraw")) {
$config_model = new ShopWithdrawConfig();
$config_result = $config_model->getConfig();
$config = $config_result[ "data" ];
if ($config[ "is_use" ]) {
$support_type = explode(",", $config[ 'value' ][ "transfer_type" ]);
} else {
$support_type = [ "alipay", "bank" ];
}
} else {
$support_type = [ "alipay", "bank" ];
}
return $this->response($support_type);
}
/**
* 模拟登陆
*/
public function simulatedLogin()
{
$user_model = new UserModel;
$res = $user_model->simulatedLogin($this->user_info[ 'username' ], 'shop', 'shopapi');
if ($res[ 'code' ] >= 0) {
$token = $this->createToken($res[ 'data' ]);
return $this->response($this->success([ 'token' => $token, 'site_id' => $res[ 'data' ][ 'site_id' ] ]));
}
return $this->response($res);
}
/**
* 店铺绑定openid 二维码
*/
public function shopBindQrcode()
{
$key = 'bing_shop_openid_' . md5(uniqid(null, true));
$url = addon_url("wechat://api/auth/shopBindOpenid", [ "key" => $key ]);
Session::set("bing_shop_openid", $key);
Cache::tag("bing_shop_openid")->set($key, [], 600);
$file_path = qrcode($url, "upload/qrcode/", date("Ymd") . 'qrcode');
$file = $file_path;
if ($fp = fopen($file, "rb", 0)) {
$gambar = fread($fp, filesize($file_path));
fclose($fp);
$base64 = "data:image/jpg/png/gif;base64," . chunk_split(base64_encode($gambar));
@unlink($file_path);
$data = [
'key' => $key,
'qrcode' => $base64
];
return $this->response($this->success($data));
} else {
return $this->response($this->error());
}
}
/**
* 验证店铺绑定情况(成功返回openid)
*/
public function checkShopBind()
{
$key = isset($this->params[ 'key' ]) ? $this->params[ 'key' ] : '';
$data = Cache::get($key);
$shop_apply_model = new ShopApplyModel();
if (!isset($data)) {
return $this->response($shop_apply_model->error([ "is_expire" => 1 ], "二维码已过期"));
}
if (empty($data)) {
return $this->response($shop_apply_model->error([ "is_expire" => 0 ], "二维码还没有被扫描"));
}
return $this->response($shop_apply_model->success($data));
}
/**
* 获取店铺设置
* @return false|string
*/
public function getShopWithdrawConfig()
{
$account_model = new ShopaccountModel();
$config_info = $account_model->getShopWithdrawConfig();
return $this->response($this->success($config_info[ 'data' ][ 'value' ]));
}
}