// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\api\controller; use app\api\service\User as UserService; use app\store\model\store\Address as AddressModel; use think\response\Json; use app\api\service\Store as StoreService; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; use think\db\exception\ModelNotFoundException; use app\api\validate\store\Store as StoreValidte; use \app\common\model\Store as StoreInfoModel; use app\common\model\UploadFile; use app\common\model\PriceSet; use think\Db; /** * 商城基础信息 * Class Store * @package app\api\controller */ class Store extends Controller { /** * 获取商城基础信息 * @return Json * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function data(): Json { $service = new StoreService; return $this->renderSuccess($service->data()); } public function joinStore(): Json { // 当前用户信息 $userInfo = UserService::getCurrentLoginUser(true); $params = $this->request->param(); $validate = new StoreValidte(); // 表单验证 if (!$validate->check($params)) { return $this->renderError($validate->getError()); } $service = new StoreService; $res = $service->joinStore($params, $userInfo->user_id); if ($res['code'] == 0) { return $this->renderSuccess('申请成功,请耐心等待'); } else { return $this->renderError($res['msg']); } } public function getStoreType(): Json { return $this->renderSuccess(config('store.store_type')); } public function joinData(): Json { // 当前用户信息 $userInfo = UserService::getCurrentLoginUser(true); $service = new StoreService; return $this->renderSuccess($service->joinData($userInfo->user_id)); } public function getStore(): Json { $service = new StoreService; $store = $service->getStore(); $userLatitude = $this->request->param('userLat', 32.919925); // 用户纬度 $userLongitude = $this->request->param('userLng', 118.825957); // 用户经度 foreach ($store as &$row) { $distanceInKm = calculateDistance($userLatitude, $userLongitude, $row['latitude'], $row['longitude']); $row['distance'] = $distanceInKm . "km"; } return $this->renderSuccess($store); } public function editStore(): Json { $params = $this->request->param(); $storeid = request()->header()['storeid']; $upData = []; if (isset($params['group_share_img_id']) && $params['group_share_img_id']) { $upData['group_share_img_id'] = $params['group_share_img_id']; } if (isset($params['min_profit']) && $params['min_profit']) { $upData['min_profit'] = $params['min_profit']; } if (isset($params['logo_image_id']) && $params['logo_image_id']) { $upData['logo_image_id'] = $params['logo_image_id']; } if (!$upData) { return $this->renderSuccess('ok'); } StoreInfoModel::where('store_id',$storeid)->update($upData); return $this->renderSuccess('ok'); } public function getStoreInfo(): Json { $storeid = request()->header()['storeid']; $info = StoreInfoModel::where('store_id',$storeid)->find()->toArray(); $file = UploadFile::where('file_id', $info['group_share_img_id'])->field('file_path,domain')->find(); $info['group_share_img'] = getUrl($file['file_path'], $file['domain']); $file1 = UploadFile::where('file_id', $info['logo_image_id'])->field('file_path,domain')->find(); $info['logo_image'] = getUrl($file1['file_path'], $file1['domain']); return $this->renderSuccess($info); } /** * 获取商家退货地址 * @return Json * @throws DbException */ public function getAddressList(): Json { $model = new AddressModel; $list = $model->getList(['type' => 20]); return $this->renderSuccess($list->toArray()); } public function setStorePrice(): Json { $params = $this->request->param(); $storeid = request()->header()['storeid']; // var_dump($params); // exit(); //先删除 PriceSet::where('store_id', $storeid)->where('type', $params['type']??0)->delete(); $inDatas = []; foreach ($params['list'] as $value) { $categorys = explode(",", $value['category']); foreach ($categorys as $category) { foreach ($value['price_list'] as $price) { $temp = [ 'category' => $value['category'], 'code' => $category, 'store_id' => $storeid, 'type' => $params['type'], 'min' => $price['min'], 'max' => $price['max'], 'add_price_rate' => $price['add_price_rate'], 'create_time' => time(), 'update_time' => time(), ]; $inDatas[] = $temp; } } } // echo "
";
        // print_r($inDatas);
        // exit();
        $model = new PriceSet;
        $model->addAll($inDatas);
        return $this->renderSuccess('ok');
    }
    //加个设置回显
    public function getStorePriceInfo(int $type): Json
    {
        $storeid = request()->header()['storeid'];
        $list = PriceSet::where('store_id',$storeid)->where('type', $type)->field('category,code,min,max,add_price_rate')->group("category, min")->select()->toArray();
        $data = [];
        $arr = [];
        foreach ($list as $value) {
            $arr[$value['category']][] = $value;
        }
        foreach ($arr as $key => $item) {
            $data['list'][] = [
                'category' => $key,
                'price_list' => $item,
            ];
        }
        $data['type'] = $type;
        return $this->renderSuccess($data);
    }

    //加个设置回显
    public function test(int $type): Json
    {
        $storeid = request()->header()['storeid'];

        $categoryIds = [1001,1002];
        $list = PriceSet::distributionPrice(90, 50, $categoryIds);
        
        
        return $this->renderSuccess($list);
    }












}