You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/app/admin/controller/Wxserve.php

166 lines
5.0 KiB

8 months ago
<?php
declare (strict_types=1);
namespace app\admin\controller;
use app\common\library\wxserver\Server;
8 months ago
use cores\exception\BaseException;
8 months ago
use PHPQRCode\QRcode;
use think\db\exception\DbException;
use think\facade\Db;
use think\response\Json;
class Wxserve extends Controller
{
/**
* @notes:生成授权二维码
* @return Json
* @author: wanghousheng
*/
public function qrcode(): Json
{
$obj = new Server();
$url = $this->request->domain(true) . '/api/wxserver/redirect';
$jumUrl = $obj->jumpH5Url($url);
$savePath = root_path() . "public/wxserve";
!is_dir($savePath) && mkdir($savePath, 0755, true);
$savePath .= '/auth_qrcode.png';
8 months ago
QRcode::png($jumUrl, $savePath, 'L', 8, 1);
8 months ago
return $this->renderSuccess(['img_url' => $this->request->domain(true) . '/wxserve/auth_qrcode.png?time=' . time()]);
8 months ago
}
/**
* @notes:授权列表
* @return Json
* @throws DbException
* @author: wanghousheng
*/
public function authList(): Json
{
$store_ids = [];
$where = [];
$store_id = intval($this->request->get('store_id'));
if ($store_id) {
$where[] = ['store_id', '=', $store_id];
}
$nick_name = $this->request->get('nick_name');
if ($nick_name) {
$where[] = ['nick_name', 'like', "%$nick_name%"];
}
$appid = $this->request->get('appid');
if ($appid) {
$where[] = ['nick_name', '=', "%$appid%"];
}
$result = Db::table('yoshop_wxserver_account')
->where($where)
->field(['appid', 'nick_name', 'head_image', 'user_name', 'qrcode_image', 'store_id', 'create_time', 'version'])
->paginate(15);
$list = $result->items();
$total = $result->total();
if ($total) {
foreach ($list as &$item) {
$store_ids[] = $item['store_id'];
$item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
8 months ago
if ($item['exp_info']) {
$item['exp_info'] = json_decode($item['exp_info'], true);
}
if ($item['release_info']) {
$item['release_info'] = json_decode($item['release_info'], true);
}
if (!empty($item['experience_code'])) {
$item['experience_code'] = $this->request->domain(true) . $item['experience_code'] . '?time=' . time();
}
8 months ago
}
$store_list = Db::table('yoshop_store')
->whereIn('store_id', $store_ids)
->column('store_name', 'store_id');
foreach ($list as &$item) {
$item['store_name'] = $store_list[$item['store_id']] ?? '';
}
}
return $this->renderSuccess(['list' => $list, 'total' => $total]);
}
8 months ago
/**
* @notes:草稿箱列表
* @return Json
* @author: wanghousheng
*/
public function templatedraftlist(): Json
{
8 months ago
$type = intval($this->request->get('type', 0));
8 months ago
$obj = new Server();
8 months ago
$list = $obj->getTemplateDraftList($type);
8 months ago
return $this->renderSuccess($list);
}
8 months ago
8 months ago
/**
* @notes:添加草稿到模板中
* @return Json
* @author: wanghousheng
*/
public function addTotemplate(): Json
{
$draft_id = $this->request->get('draft_id');
if ($draft_id) {
$obj = new Server();
$res = $obj->addTotemplate($draft_id);
if ($res) {
return $this->renderSuccess('success');
}
}
return $this->renderError('操作失败');
}
/**
* @notes:获取模板列表
* @return Json
* @author: wanghousheng
*/
public function templatelist(): Json
{
8 months ago
$type = intval($this->request->get('type', 0));
8 months ago
$obj = new Server();
8 months ago
$list = $obj->getTemplatelist($type);
8 months ago
return $this->renderSuccess($list);
}
/**
* @notes:删除模板
* @return Json
* @author: wanghousheng
*/
public function delTemplatelist(): Json
{
$template_id = $this->request->get('template_id');
if ($template_id) {
$obj = new Server();
$res = $obj->deleTetemplate($template_id);
if ($res) {
return $this->renderSuccess('success');
}
}
return $this->renderError('操作失败');
}
/**
8 months ago
* @notes:提交体验版
8 months ago
* @return Json
* @throws BaseException
* @author: wanghousheng
*/
public function commit(): Json
{
$appid = $this->request->get('appid');
$template_id = $this->request->get('template_id');
if ($template_id && $appid) {
$obj = new Server();
$res = $obj->commit($appid, $template_id);
if ($res) {
8 months ago
return $this->renderSuccess([$res]);
8 months ago
}
}
return $this->renderError('操作失败');
}
8 months ago
}