post(); $site_id = input('site_id', 0); $config_info = $config->getAppConfig($site_id)['data']['value']; $app->appAuthToken = $config_info['app_auth_token']; $config_info['category_list'] = json_decode($data['category_list'], true); $config_info['app_logo'] = $data['app_logo']; $app_original = $config_info['app_original']; $upload_model = new UploadModel($this->site_id, $this->app_module); $path = 'temp/images/' . date('Ymd') . '/'; $app_logo = ROOT_PATH . '/' . $upload_model->setPath($path)->remotePullToLocal($data['app_logo'])['data']['path']; $up = [ 'app_name' => $data['app_name'], 'app_english_name' => $data['app_english_name'], 'app_slogan' => $data['app_slogan'], 'app_desc' => $data['app_desc'], 'service_phone' => $data['service_phone'], 'service_email' => $data['service_email'], 'mini_category_ids' => $data['mini_category_ids'], ]; $message='成功'; $res='成功'; if (!isset($data['is_baseinfo'])) { $res = $app->miniSetBaseinfo($up, $app_logo); //设置小 if ($res['code'] == '10000') { $message = '设置成功'; $config_info['is_baseinfo'] = 1; cache($app->appAuthToken . '_baseinfo', null); } else { $message = $res['sub_msg']; } } $config->setAlipayConfig($config_info['appid'], array_merge($config_info, $up), $site_id, $app_original); return $this->response(success(0, $message, $res)); } /** * 编辑小程序基础信息 * 已商上架小程序无法再次修改 * @return array|mixed */ public function appinfo() { $site_id = input('shop_site_id', 0); $app = new MinCode(); $config = new Config(); $config_info = $config->getAppConfig($site_id)['data']['value']; $app->appAuthToken = $config_info['app_auth_token']; $baseinfo = cache($app->appAuthToken . '_baseinfo'); if (empty($baseinfo)) { $baseinfo = $app->requestApi('alipay.open.mini.baseinfo.query')['alipay_open_mini_baseinfo_query_response']; if (isset($baseinfo['category_names'])) { $baseinfo['is_baseinfo'] = 1; } cache($app->appAuthToken . '_baseinfo', $baseinfo); } $one_category = cache($app->appAuthToken . '_category'); $category_all = cache($app->appAuthToken . '_alls_category'); if (empty($one_category)) { $category = $app->requestApi('alipay.open.mini.category.query', ['is_filter' => true])['alipay_open_mini_category_query_response']; if ($category['mini_category_list']) { $category_all = array_column($category['mini_category_list'], null, 'category_id'); $one_category = []; foreach ($category_all as $key => $item) { if ($item['parent_category_id'] == '0') { $one_category[] = $item; } } cache($app->appAuthToken . '_category', $one_category); cache($app->appAuthToken . '_alls_category', $category_all); } } $original = []; $mini_category_ids = []; if (isset($baseinfo['category_names'])) { $category_names = $baseinfo['category_names']; $category_ids = explode(';', $category_names); $category_all_name = array_column($category_all, null, 'category_name'); foreach ($category_ids as $key => $val) { if ($val) { $text = explode('_', $val); foreach ($text as $category_namet) { $d = $category_all_name[$category_namet] ?? []; if ($d) { $d['checked'] = true; $category_all[$d['category_id']]['checked'] = true; $original[$key][] = $d; } } } } } // if ($original) { //已设置分类 // foreach ($original as $value) { // $category_ids = array_column($value, 'category_id'); // $mini_category_ids[] = implode('_', $category_ids); // } // } $item = [ 'app_name' => $config_info['app_name'] ?? '', 'app_logo' => $config_info['app_logo'] ?? '', 'app_english_name' => $config_info['app_english_name'] ?? '', 'app_slogan' => $config_info['app_slogan'] ?? '', 'app_desc' => $config_info['app_desc'] ?? '', 'service_phone' => $config_info['service_phone'] ?? '', 'service_email' => $config_info['service_email'] ?? '', 'mini_category_ids' => $config_info['mini_category_ids'] ?? '', 'category_list' => $config_info['category_list'] ?? '', 'site_id' => $site_id, ]; if (isset($baseinfo['app_logo']) && strpos($baseinfo['app_logo'], 'http') === 0) { $upload = new UploadModel($site_id); $pic_img = $upload->setPath("common/images/" . date("Ymd") . '/')->remotePullToLocal($baseinfo['app_logo']); $baseinfo['app_logo'] = $pic_img['data']['path']; } $res = [ 'original' => $original, 'allCategory' => $this->getTreeCategory($category_all), 'info' => array_merge($item, $baseinfo) ]; return $this->response($this->success($res)); } /*** * 获取小程序分类 * @return mixed|void */ public function getMinicategory() { if (request()->isAjax()) { $config = new Config(); $category_id = input('category_id'); $config_info = $config->getAppConfig($this->site_id)['data']['value']; $appAuthToken = $config_info['app_auth_token']; $category_all = cache($appAuthToken . '_alls_category'); $category = []; if ($category_id == '') { $one_category = cache($appAuthToken . '_category'); return $one_category; } foreach ($category_all as $key => $item) { if ($item['parent_category_id'] == $category_id) { $category[] = $item; } } return $category; } } public function getTreeCategory($category) { $category_all = $category; $res = []; //遍历寻父 O(n) foreach ($category_all as &$item) { if (isset($category_all[$item['parent_category_id']])) { //注意下面有一个引用符 & ! $category_all[$item['parent_category_id']]['child'] [] = &$item; } elseif (!$item['parent_category_id']) { // 此处判断是否加入到结果集 $item['pid'] === null 或者 $item['pid'] == -1 之类的 $res [] = &$item; } } unset($item); return $res; } }