<?php
|
|
namespace app\api\controller\supplier;
|
|
use app\api\controller\Controller;
|
use app\api\model\supplier\DepositOrder as DepositOrderModel;
|
use app\api\model\supplier\DepositRefund as DepositRefundModel;
|
use app\api\model\supplier\member\Order as MemberOrderModel;
|
use app\api\model\supplier\member\Plan as MemberPlanModel;
|
use app\api\model\supplier\Supplier as SupplierModel;
|
use app\api\model\plus\coupon\Coupon as CouponModel;
|
use app\api\model\page\Ad as AdModel;
|
use app\api\model\order\Order as OrderModel;
|
use app\api\model\user\Visit as VisitModel;
|
use app\common\service\statistics\OrderService;
|
use app\common\service\supplier\MemberService;
|
use app\supplier\service\statistics\UserService;
|
use app\supplier\model\order\OrderSettled as OrderSettledModel;
|
use app\api\model\settings\Setting as SettingModel;
|
use app\api\model\plus\live\Room as RoomModel;
|
use app\common\model\supplier\Service as ServiceModel;
|
use app\api\model\plus\chat\Chat as ChatModel;
|
use app\api\model\supplier\Category as CategoryModel;
|
|
// 主营分类 by lyzflash
|
use app\api\model\user\Card as CardrModel;
|
|
// 会员卡 by lyzflash
|
use app\api\model\supplier\User as UserModel;
|
|
// by lyzflash
|
use app\api\model\plus\work\Setting as PlusSettingModel;
|
use app\api\model\supplier\Group as GroupModel;
|
|
// by yj
|
use app\common\model\app\App as AppModel;
|
use app\common\enum\order\OrderTypeEnum;
|
use app\api\model\store\Store as StoreModel;
|
use app\api\model\supplier\member\Member as MemberModel;
|
|
/**
|
* 供应商
|
*/
|
class Index extends Controller
|
{
|
|
//店铺列表
|
public function list()
|
{
|
$param = $this->postData();
|
$SupplierModel = new SupplierModel;
|
$list = $SupplierModel->supplierList($param);
|
|
$store_open = SettingModel::getStoreOpen();
|
return $this->renderSuccess('', compact('list', 'store_open'));
|
}
|
|
//店铺列表
|
public function getLists()
|
{
|
$param = $this->postData();
|
$is_add = 0;//默认未添加群
|
// 当前用户信息
|
$user = $this->getUser();
|
if (!empty($param["source"]) && $param["source"] == 1) {
|
//来自于点击企业微信客服的链接
|
$save_data = [
|
"shop_supplier_id" => $param["shop_supplier_id"],
|
"user_id" => $user["user_id"],
|
"app_id" => $user["app_id"],
|
];
|
$model = new GroupModel;
|
$user_group = $model->add($save_data);
|
if ($user_group) {
|
$is_add = 1;
|
}
|
} else {
|
//来自于扫码
|
$where = [
|
"shop_supplier_id" => $param["shop_supplier_id"],
|
"user_id" => $user["user_id"]
|
];
|
$user_group = GroupModel::detailByCondition($where);
|
if (!empty($user_group)) {
|
$is_add = 1;
|
}
|
}
|
|
$SupplierModel = new SupplierModel;
|
$result = $SupplierModel->getLists($param["shop_supplier_id"]);
|
$list = $result["list"];
|
$index = $result["index"];
|
|
$data = PlusSettingModel::getItem('basic');
|
|
return $this->renderSuccess('', compact('list', 'index', 'data', 'is_add'));
|
}
|
|
//店铺列表
|
public function category()
|
{
|
$param = request()->param();
|
$category = CategoryModel::getALL($param)->toArray();
|
$category = array_merge([['category_id' => 0, 'name' => '全部']], $category);
|
return $this->renderSuccess('', compact('category'));
|
}
|
|
public function getGroupBuyList()
|
{
|
$param = request()->param();
|
$model = new SupplierModel();
|
$param['product_num'] = isset($param['product_num']) ? $param['product_num'] : 3;
|
|
// 获取用户位置信息
|
$param['longitude'] = isset($param['longitude']) ? $param['longitude'] : 0;
|
$param['latitude'] = isset($param['latitude']) ? $param['latitude'] : 0;
|
|
// 处理筛选参数
|
if (isset($param['sortType'])) {
|
$sortMap = [
|
'smart' => 'all',
|
'distance' => 'distance',
|
'score' => 'score',
|
'price_low' => 'price_asc',
|
'price_high' => 'price_desc'
|
];
|
if (isset($sortMap[$param['sortType']])) {
|
$param['sortType'] = $sortMap[$param['sortType']];
|
}
|
}
|
|
$list = $model->getGroupBuyList($param);
|
return $this->renderSuccess('', compact('list'));
|
}
|
|
public function getGroupBuyCondition()
|
{
|
$sortOptions = [
|
['text' => '智能排序', 'value' => 'smart'],
|
['text' => '距离最近', 'value' => 'distance'],
|
['text' => '评分最高', 'value' => 'score'],
|
['text' => '价格最低', 'value' => 'price_low'],
|
['text' => '价格最高', 'value' => 'price_high']
|
];
|
|
$distanceOptions = [
|
['label' => '不限', 'value' => -1],
|
['label' => '500m以内', 'value' => 0.5],
|
['label' => '1km以内', 'value' => 1],
|
['label' => '2km以内', 'value' => 2],
|
['label' => '3km以内', 'value' => 3],
|
['label' => '5km以内', 'value' => 5]
|
];
|
$priceOptions = [
|
['label' => '不限', 'value' => -1],
|
['label' => '50元以下', 'value' => ['min' => 0, 'max' => 50]],
|
['label' => '50-100元', 'value' => ['min' => 50, 'max' => 100]],
|
['label' => '100-200元', 'value' => ['min' => 100, 'max' => 200]],
|
['label' => '200元以上', 'value' => ['min' => 200, 'max' => -1]]
|
];
|
$scoreOptions = [
|
['label' => '不限', 'value' => -1],
|
['label' => '4.0分以上', 'value' => 4.0],
|
['label' => '4.5分以上', 'value' => 4.5],
|
['label' => '4.8分以上', 'value' => 4.8]
|
];
|
$category = CategoryModel::getALL(['category_type'=>20])->toArray();
|
$category = array_merge([['category_id' => 0, 'name' => '全部']], $category);
|
return $this->renderSuccess('', compact('sortOptions', 'distanceOptions', 'priceOptions', 'scoreOptions','category'));
|
}
|
|
/**
|
* 供应商中心主页
|
*/
|
public function index()
|
{
|
$data = $this->postData();
|
$supplier = new SupplierModel;
|
$user = $this->getUser(false);
|
//获取店铺信息
|
$detail = $supplier->getDetail($data, $user);
|
if (!$detail) {
|
return $this->renderError('店铺不存在');
|
}
|
//banner图
|
$AdModel = new AdModel;
|
$adList = $AdModel->getIndex(['shop_supplier_id' => $data['shop_supplier_id'], 'status' => 1], 5);
|
//优惠券
|
$dataCoupon['shop_supplier_id'] = $data['shop_supplier_id'];
|
$model = new CouponModel;
|
$couponList = $model->getWaitList($dataCoupon, $user, 1);
|
// 访问记录
|
(new VisitModel())->addVisit($user, $detail, $data['visitcode'], null);
|
//直播列表
|
$model = new RoomModel();
|
$liveList = $model->getStoreList($this->postData());
|
//是否显示直播
|
$liv_status = SettingModel::getItem('live');
|
//是否开启客服
|
$service_open = SettingModel::getSysConfig()['service_open'];
|
//店铺客服信息
|
$mp_service = ServiceModel::detail($data['shop_supplier_id']);
|
// 会员卡数量
|
$card_num = CardrModel::getCardCount();
|
//获取门店信息
|
$store_setting = SettingModel::getItem("store");
|
$store_id = '';
|
//展示门店的信息
|
if (!empty($store_setting) && !empty($store_setting["store_type"]) && $store_setting["store_type"] == 1) {
|
$store_id = storeModel::getStoreIdBySupplierId($data['shop_supplier_id']);
|
}
|
|
return $this->renderSuccess('', compact('detail', 'couponList', 'adList', 'liveList', 'liv_status', 'service_open', 'mp_service', 'card_num', 'store_id'));
|
}
|
|
//成交数据
|
public function tradeData($url = '')
|
{
|
$data = $this->postData();
|
$user = $this->getUser();
|
$data['shop_supplier_id'] = $this->getSupplierUser($user)['shop_supplier_id'];
|
if (!$data['shop_supplier_id'] > 0) {
|
return $this->renderError('您还未开通店铺');
|
}
|
$is_open = SettingModel::getItem('live')['is_open'];
|
//累积成交笔数
|
$totalCount = OrderModel::getTotalPayOrder($data['shop_supplier_id']);
|
//今日成交笔数
|
$todayCount = OrderModel::getTodayPayOrder($data['shop_supplier_id']);
|
//累积领取
|
$supplier = SupplierModel::detail($data['shop_supplier_id']);
|
// 客服消息
|
$msg_count = ChatModel::getNoReadCount($this->getSupplierUser($user)['supplier_user_id']);
|
$member = MemberModel::supplierDetail([
|
'shop_supplier_id' => $data['shop_supplier_id'],
|
'is_expire' => 0
|
]);
|
return $this->renderSuccess('', compact('totalCount', 'todayCount', 'supplier', 'is_open', 'msg_count', 'member'));
|
}
|
|
/**
|
* 付押金
|
*/
|
public function deposit()
|
{
|
// 用户信息
|
$user = $this->getUser();
|
$supplier = SupplierModel::detail($this->getSupplierUser($user)['shop_supplier_id'], ['category']);
|
// 类目
|
$category = $supplier['category'];
|
if ($this->request->isGet()) {
|
// 返回结算信息
|
return $this->renderSuccess('', compact('category'));
|
}
|
$params = $this->request->param();
|
$result = ['data' => ['order_id' => 0]];
|
if (!empty($params['plan_id'])){
|
$plans = (new MemberPlanModel())->detail($params['plan_id']);
|
if ($plans['price'] > 0) {
|
$memberService = new MemberService();
|
$result = $memberService->createOrder($supplier['shop_supplier_id'], $params['plan_id'], $user);
|
if (!$result['status']) {
|
return $this->renderError($result['msg'] ?: '创建订单失败');
|
}
|
}
|
}
|
|
// 生成订单
|
$model = new DepositOrderModel;
|
$order_id = $model->createOrder($user, $supplier, $result);
|
|
if (!$order_id) {
|
return $this->renderError($model->getError() ?: '创建订单失败');
|
}
|
// 在线支付
|
//$payment = DepositOrderModel::onOrderPayment($user, $model, $params['pay_type'], $params['pay_source']);
|
// 返回结算信息
|
return $this->renderSuccess('', [
|
'order_id' => $order_id, // 订单id
|
]);
|
}
|
|
/**
|
* 立即支付
|
*/
|
public function pay($order_id)
|
{
|
// 用户信息
|
$user = $this->getUser();
|
// 获取订单详情
|
$model = DepositOrderModel::getUserOrderDetail($order_id, $user['user_id']);
|
$params = $this->postData();
|
if ($this->request->isGet()) {
|
// 开启的支付类型
|
$payTypes = AppModel::getPayType($model['app_id'], $params['pay_source']);
|
// 支付金额
|
$payPrice = $model['pay_price'];
|
$balance = $user['balance'];
|
return $this->renderSuccess('', compact('payTypes', 'payPrice', 'balance'));
|
}
|
// 订单支付事件
|
if ($model['pay_status'] != 10) {
|
return $this->renderError($model->getError() ?: '订单已支付');
|
}
|
// 构建微信支付请求
|
$DepositOrderModel = new DepositOrderModel;
|
$payInfo = $DepositOrderModel->OrderPay($params, $model, $user);
|
if (!$payInfo) {
|
return $this->renderError($DepositOrderModel->getError() ?: '订单支付失败');
|
}
|
// 支付状态提醒
|
return $this->renderSuccess('', [
|
'order_id' => $order_id, // 订单id
|
'pay_type' => $payInfo['payType'], // 支付方式
|
'payment' => $payInfo['payment'], // 微信支付参数
|
'order_type' => OrderTypeEnum::CASH, //订单类型
|
'use_balance' => $payInfo['use_balance']// 是否使用余额
|
]);
|
}
|
|
//店铺数据
|
public function storedata()
|
{
|
$user = $this->getUser();
|
$shop_supplier_id = $this->getSupplierUser($user)['shop_supplier_id'];
|
//成交量
|
$order = (new OrderService($shop_supplier_id))->getData();
|
// 访问量
|
$visit = (new UserService($shop_supplier_id))->getData();
|
//订单结算
|
$ordersettle = (new OrderSettledModel())->getList($shop_supplier_id, $this->postData());
|
return $this->renderSuccess('', compact('order', 'visit', 'ordersettle'));
|
}
|
|
/**
|
* 详情
|
*/
|
public function settledetail($settled_id)
|
{
|
$model = OrderSettledModel::detail($settled_id);
|
$order = OrderModel::detail($model['order_id']);
|
return $this->renderSuccess('', compact('model', 'order'));
|
}
|
|
public function editPass()
|
{
|
// 用户信息
|
$user = $this->getUser();
|
$model = UserModel::detail(['user_id' => $user['user_id']]);
|
if ($this->request->isGet()) {
|
return $this->renderSuccess('', compact('model'));
|
}
|
if ($model->editPass($this->postData())) {
|
return $this->renderSuccess('修改成功');
|
} else {
|
return $this->renderError($model->getError() ?: '修改失败');
|
}
|
}
|
|
public function refundDeposit()
|
{
|
$data = $this->postData();
|
$model = new DepositRefundModel;
|
$shop_supplier = SupplierModel::detail($data['shop_supplier_id']);
|
if (!$shop_supplier) {
|
return $this->renderError('店铺不存在');
|
}
|
if ($shop_supplier['status'] == 10) {
|
return $this->renderError('退还押金申请中,不能重复申请');
|
}
|
$data['deposit_money'] = $shop_supplier['deposit_money'];
|
if ($model->add($data)) {
|
return $this->renderSuccess('提交成功');
|
} else {
|
return $this->renderError($model->getError() ?: '提交失败');
|
}
|
}
|
}
|