jh-admin/addon/saas/api/controller/Aliapp.php

189 lines
7.5 KiB
PHP

<?php
namespace addon\saas\api\controller;
use addon\aliapp\model\Config;
use app\api\controller\BaseApi;
use addon\aliapp\model\MinCode;
use app\model\upload\Upload as UploadModel;
class Aliapp extends BaseApi
{
/**
* 编辑小程序基础信息
* 已商上架小程序无法再次修改
* @return array|mixed
*/
public function editapp()
{
$app = new MinCode();
$config = new Config();
$data = request()->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;
}
}