food_server/FlyCube/MpApi/Controller/AdminController.class.php

1156 lines
38 KiB
PHP
Raw Normal View History

2024-05-30 19:16:59 +08:00
<?php
namespace MpApi\Controller;
class AdminController extends PublicController
{
public function index()
{
echo "hello wolrd";
}
/**
* @description: 获取单位列表
2024-05-30 19:16:59 +08:00
*/
public function getShopList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
$shopDb = D('shop');
if ($shopList = $shopDb->where($where)->select()) {
echo json_encode(array('status' => 1, 'msg' => '访问成功', "shopList" => $shopList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无单位数据'));
2024-05-30 19:16:59 +08:00
}
}
/**
* @description: 单位添加(带事务:添加店铺 + 添加管理员)
2024-05-30 19:16:59 +08:00
*/
public function addShop()
{
// 非总管理员,拒绝操作
if ($this->tokenShop_id != C('powerId')) {
2024-05-30 19:16:59 +08:00
echo json_encode(array('status' => 0, 'msg' => '没有权限'));
exit;
}
if ($_REQUEST['name'] && $_REQUEST['price_min'] && $_REQUEST['weight_max'] && $_REQUEST['default_transport_price'] && $_REQUEST['default_pack_price']) {
// shop_id 随机生成
$arr = str_split('abcdefghijklmnopqrstuvwxyz0123456789');
$shop_id = '';
2024-05-30 19:16:59 +08:00
for ($i = 0; $i < 16; $i++) {
$rand = rand(0, count($arr) - 1);
$shop_id .= $arr[$rand];
2024-05-30 19:16:59 +08:00
}
// 处理 logo 上传
if ($_REQUEST['upFile']) {
$from = "Data/UploadFiles/temp/" . $_REQUEST['upFile'];
$to = "Data/UploadFiles/photo/" . $_REQUEST['upFile'];
if (!copy($from, $to)) {
2024-05-30 19:16:59 +08:00
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['logo'] = json_encode(array($_REQUEST['upFile']));
2024-05-30 19:16:59 +08:00
}
// 组装店铺数据
2024-05-30 19:16:59 +08:00
$data['shop_id'] = $shop_id;
$data['name'] = $_REQUEST['name'];
$data['waiter'] = $_REQUEST['waiter'];
$data['service_wx'] = $_REQUEST['service_wx'];
$data['tel'] = $_REQUEST['tel'];
$data['email'] = $_REQUEST['email'];
$data['price_min'] = $_REQUEST['price_min'];
$data['weight_max'] = $_REQUEST['weight_max'];
$data['default_transport_price'] = $_REQUEST['default_transport_price'];
$data['default_pack_price'] = $_REQUEST['default_pack_price'];
$data['remark_presup'] = $_REQUEST['remark_presup'];
$data['refund_remark_presup'] = $_REQUEST['refund_remark_presup'];
2024-05-30 19:16:59 +08:00
$data['describe'] = $_REQUEST['desc'];
$data['opening_time'] = $_REQUEST['opening_time'];
$data['closeing_time'] = $_REQUEST['closeing_time'];
2024-05-30 19:16:59 +08:00
$shopDb = D('shop');
$adminuserDb = D('adminuser');
// 开启事务
$shopDb->startTrans();
$shopAddResult = $shopDb->data($data)->add();
if ($shopAddResult) {
// 添加管理员数据
$adminData['user_name'] = $_REQUEST['admin_name']; // 管理员用户名
$adminData['pwd'] = md5(md5($_REQUEST['pwd']));
$adminData['shop_id'] = $shop_id;
$adminData['addtime'] = time();
$adminData['role'] = 5;
$adminData['unique'] = 1;
$adminAddResult = $adminuserDb->data($adminData)->add();
if ($adminAddResult) {
$shopDb->commit();
echo json_encode(array('status' => 1, 'msg' => '店铺和管理员创建成功'));
} else {
$shopDb->rollback();
echo json_encode(array('status' => 0, 'msg' => '管理员创建失败,已回滚'));
}
2024-05-30 19:16:59 +08:00
} else {
$shopDb->rollback();
echo json_encode(array('status' => 0, 'msg' => '店铺创建失败'));
2024-05-30 19:16:59 +08:00
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 单位更新
2024-05-30 19:16:59 +08:00
*/
public function saveShop()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['shop_id'] && $_REQUEST['name'] && $_REQUEST['price_min'] && $_REQUEST['weight_max'] && $_REQUEST['default_transport_price'] && $_REQUEST['default_pack_price']) {
2024-05-30 19:16:59 +08:00
//data数据
$data['name'] = $_REQUEST['name'];
$data['waiter'] = $_REQUEST['waiter'];
$data['service_wx'] = $_REQUEST['service_wx'];
$data['tel'] = $_REQUEST['tel'];
$data['email'] = $_REQUEST['email'];
$data['price_min'] = $_REQUEST['price_min'];
$data['weight_max'] = $_REQUEST['weight_max'];
$data['default_transport_price'] = $_REQUEST['default_transport_price'];
$data['default_pack_price'] = $_REQUEST['default_pack_price'];
$data['remark_presup'] = $_REQUEST['remark_presup'];
$data['refund_remark_presup'] = $_REQUEST['refund_remark_presup'];
2024-05-30 19:16:59 +08:00
$data['describe'] = $_REQUEST['desc'];
$data['opening_time'] = $_REQUEST['opening_time'];
$data['closeing_time'] = $_REQUEST['closeing_time'];
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/logo/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
if ($_REQUEST['oldFile']) { //存在老图 既删掉老图 没有成功的话 将刚才复制到此目录得新图也一并删除
if (!(unlink("Data/UploadFiles/logo/" . basename($_REQUEST['oldFile'])))) {
unlink("Data/UploadFiles/logo/" . $_REQUEST['upFile']);
echo json_encode(array('status' => 0, 'msg' => '原图删除失败'));
exit;
}
}
$data['logo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//where条件
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$shopDb = D('shop');
if ($shopDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 获取管理员列表
*/
public function getAdminList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
$where['del'] = '0';
$adminuserDb = D('adminuser');
if ($adminList = $adminuserDb->where($where)->field("id,name,uname,shop_id,role,photo,addtime,lasttime")->select()) {
2024-05-30 19:16:59 +08:00
echo json_encode(array('status' => 1, 'msg' => '访问成功', "adminList" => $adminList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无管理员数据'));
}
}
/**
* @description: 管理员&商家会员的添加
*/
public function addAdmin()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['uname'] && $_REQUEST['pwd']) {
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/photo/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
2024-05-30 19:16:59 +08:00
//data数据
$data['name'] = $_REQUEST['name'];
$data['uname'] = $_REQUEST['uname'];
$data['pwd'] = MD5(MD5($_REQUEST['pwd']));
$data['shop_id'] = $_REQUEST['shop_id'];
$data['addtime'] = time();
if (isset($_REQUEST['role'])) {
$validRoles = [5, 6]; //5:商家管理员 6:商家编辑
if (!in_array($_REQUEST['role'], $validRoles)) {
echo json_encode(array('status' => 0, 'msg' => '无效的角色'));
exit;
}
$data['role'] = $_REQUEST['role'];
}
2024-05-30 19:16:59 +08:00
//录入数据库
$adminDb = D('adminuser');
if ($adminDb->data($data)->add()) {
echo json_encode(array('status' => 1, 'msg' => '创建成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '创建失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 管理员&商家会员的更新
*/
public function saveAdmin()
{
// 总管理员 可接收任何shop_id非总管理员只能调用自身shop_id否则会中断
2024-05-30 19:16:59 +08:00
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['uname'] && $_REQUEST['shop_id']) {
$adminDb = D('adminuser');
// 查询当前管理员数据(用以比对 role 和判断 unique
$currentAdmin = $adminDb->where([
'id' => $_REQUEST['id'],
'shop_id' => $_REQUEST['shop_id']
])->find();
if (!$currentAdmin) {
echo json_encode(['status' => 0, 'msg' => '用户不存在']);
exit;
}
2024-05-30 19:16:59 +08:00
$data['uname'] = $_REQUEST['uname'];
2024-05-30 19:16:59 +08:00
if ($_REQUEST['pwd']) {
$data['pwd'] = MD5(MD5($_REQUEST['pwd']));
}
// 上传头像处理
if ($_REQUEST['upFile']) {
$tempPath = "Data/UploadFiles/temp/" . $_REQUEST['upFile'];
$targetPath = "Data/UploadFiles/photo/" . $_REQUEST['upFile'];
if (!copy($tempPath, $targetPath)) {
echo json_encode(['status' => 0, 'msg' => '图片复制失败']);
2024-05-30 19:16:59 +08:00
exit;
}
if ($_REQUEST['oldFile']) {
$oldFilePath = "Data/UploadFiles/photo/" . basename($_REQUEST['oldFile']);
if (!unlink($oldFilePath)) {
unlink($targetPath); // 删除新图
echo json_encode(['status' => 0, 'msg' => '原图删除失败']);
2024-05-30 19:16:59 +08:00
exit;
}
}
$data['photo'] = json_encode([$_REQUEST['upFile']]);
2024-05-30 19:16:59 +08:00
}
// 如果提交的 role 与数据库中的 role 不一致,视为试图变更角色
if (isset($_REQUEST['role']) && $_REQUEST['role'] != $currentAdmin['role']) {
if ($currentAdmin['unique'] == 1) {
echo json_encode(['status' => 0, 'msg' => '总管理员权限不允许更改角色']);
exit;
}
$validRoles = [5, 6]; // 商家管理员、商家编辑
if (!in_array($_REQUEST['role'], $validRoles)) {
echo json_encode(['status' => 0, 'msg' => '无效的角色']);
exit;
}
$data['role'] = $_REQUEST['role'];
}
// where 条件
$where = [
'id' => $_REQUEST['id'],
'shop_id' => $_REQUEST['shop_id']
];
2024-05-30 19:16:59 +08:00
if ($adminDb->where($where)->data($data)->save()) {
echo json_encode(['status' => 1, 'msg' => '更新成功']);
2024-05-30 19:16:59 +08:00
} else {
echo json_encode(['status' => 0, 'msg' => '更新失败']);
2024-05-30 19:16:59 +08:00
}
} else {
echo json_encode(['status' => 0, 'msg' => '参数有误']);
2024-05-30 19:16:59 +08:00
}
}
2024-05-30 19:16:59 +08:00
/**
* @description: 管理员账号删除 ps:只改 del字段标识 并非真正删除
*/
public function deleteAdmin()
{
2025-06-27 17:31:11 +08:00
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员
2024-05-30 19:16:59 +08:00
}
if ($_REQUEST['idArr']) {
// 解构 id 组
$idArr = is_array($_REQUEST['idArr'])
? $_REQUEST['idArr']
: explode(',', strval($_REQUEST['idArr']));
// 判断是否包含自身 ID
if (in_array($this->admin_id, $idArr)) {
echo json_encode(['status' => 0, 'msg' => '不能删除自身']);
exit;
}
// 查询是否包含 unique = 1 的管理员(总管理员)
2024-05-30 19:16:59 +08:00
$adminDb = D('adminuser');
$checkMap['id'] = ['in', $idArr];
if ($this->tokenShop_id != C('powerId')) {
$checkMap['shop_id'] = $this->tokenShop_id;
}
$admins = $adminDb->where($checkMap)->select();
foreach ($admins as $admin) {
if ($admin['unique'] == 1) {
echo json_encode(['status' => 0, 'msg' => '不能删除总管理员']);
exit;
}
}
// 执行逻辑删除
$where['id'] = ['in', $idArr];
$data['del'] = '1';
2024-05-30 19:16:59 +08:00
if ($adminDb->where($where)->save($data)) {
echo json_encode(['status' => 1, 'msg' => '删除成功']);
2024-05-30 19:16:59 +08:00
} else {
echo json_encode(['status' => 0, 'msg' => '删除失败']);
2024-05-30 19:16:59 +08:00
}
} else {
echo json_encode(['status' => 0, 'msg' => '参数有误']);
2024-05-30 19:16:59 +08:00
}
}
/**
* @description: 向管理员用户发布公告
*/
public function pubMessage()
{
if ($this->tokenShop_id != C('powerId')) {
2025-06-27 19:41:27 +08:00
$shop_id = $this->tokenShop_id; //非总管理员
2025-06-27 19:35:05 +08:00
} else {
2025-06-27 19:41:27 +08:00
$shop_id = $_REQUEST['shop_id'];
}
// 参数校验
if (!isset($_REQUEST['idArr']) || !isset($_REQUEST['tit']) || !isset($_REQUEST['message']) || !isset($_REQUEST['endTime']) || !isset($_REQUEST['message']) || !isset($_REQUEST['shop_id'])) {
echo json_encode(array('status' => 0, 'msg' => '参数不完整'));
exit;
}
// 参数处理
$tit = trim($_REQUEST['tit']);
$message = trim($_REQUEST['message']);
$endTime = intval($_REQUEST['endTime']);
$idArr = is_array($_REQUEST['idArr']) ? $_REQUEST['idArr'] : explode(',', $_REQUEST['idArr']);
// 构建插入数据数组
$dataList = array();
foreach ($idArr as $admin_id) {
$dataList[] = array(
2025-06-27 19:41:27 +08:00
'shop_id' => $shop_id,
'by_admin_id' => $this->admin_id,
'admin_id' => intval($admin_id),
'message' => $message,
'tit' => $tit,
'end_time' => $endTime,
'add_time' => time(),
);
}
// 插入数据库
$messageDb = D('message');
if ($messageDb->addAll($dataList)) {
echo json_encode(array('status' => 1, 'msg' => '公告已成功发布'));
} else {
echo json_encode(array('status' => 0, 'msg' => '公告发布失败'));
}
}
/**
* @description 获取公告列表(未过期),连表获取 发送者管理员信息
*/
public function getMessageList()
{
// 权限判断
if ($this->tokenShop_id != C('powerId')) {
$where['m.shop_id'] = $this->tokenShop_id; // 非总管理员 只返回自己的账户信息
}
$adminId = $this->admin_id; //当前管理员
$now = time();
// 构造查询条件
$where = array(
'admin_id' => $adminId,
'end_time' => array('gt', $now) // 未过期
);
// 查询字段,注意字段前加表别名
$fields = array(
'm.id',
'm.admin_id',
'm.by_admin_id',
'm.tit',
'm.message',
'm.end_time',
'm.add_time',
'a.name' => 'admin_name',
'a.uname' => 'admin_uname'
);
// 数据库查询
$messageDb = M('message');
$messageList = $messageDb
->alias('m')
->join('__ADMINUSER__ a ON m.by_admin_id = a.id', 'LEFT')
->where($where)
->field($fields)
->order('m.add_time DESC')
->select();
if ($messageList !== false) {
echo json_encode(array(
'status' => 1,
'msg' => '获取成功',
'messageList' => $messageList
));
} else {
echo json_encode(array(
'status' => 0,
'msg' => '获取失败'
));
}
}
/**
* @description 获取全部公告 不只 和自己admin_id相关的 且不考虑过期
*/
public function getAllMessageList()
{
// 权限判断
if ($this->tokenShop_id != C('powerId')) {
$where['m.shop_id'] = $this->tokenShop_id;
}
$messageDb = M('message');
// 查询message数据不关联adminuser先拿全部字段
$messageList = $messageDb
->alias('m')
->where($where)
->field('m.*')
->order('m.add_time DESC')
->select();
if ($messageList === false) {
echo json_encode(['status' => 0, 'msg' => '获取失败']);
return;
}
// 取出所有admin_id和by_admin_id去重
$adminIds = [];
$byAdminIds = [];
foreach ($messageList as &$msg) {
if ($msg['admin_id']) $adminIds[$msg['admin_id']] = true;
if ($msg['by_admin_id']) $byAdminIds[$msg['by_admin_id']] = true;
}
$adminIds = array_keys($adminIds);
$byAdminIds = array_keys($byAdminIds);
// 查 admin_id 对应的用户信息(加非空判断)
$adminUserDb = M('adminuser');
$adminUsers = [];
if (!empty($adminIds)) {
$adminUsers = $adminUserDb->where(['id' => ['IN', $adminIds]])->field('id,name,uname')->select();
}
$adminUserMap = [];
foreach ($adminUsers as $u) {
$adminUserMap[$u['id']] = $u;
}
// 查 by_admin_id 对应的用户信息(加非空判断)
$byAdminUsers = [];
if (!empty($byAdminIds)) {
$byAdminUsers = $adminUserDb->where(['id' => ['IN', $byAdminIds]])->field('id,name,uname')->select();
}
$byAdminUserMap = [];
foreach ($byAdminUsers as $u) {
$byAdminUserMap[$u['id']] = $u;
}
// 合并用户信息回message列表
foreach ($messageList as &$msg) {
$msg['admin_name'] = isset($adminUserMap[$msg['admin_id']]) ? $adminUserMap[$msg['admin_id']]['name'] : '';
$msg['admin_uname'] = isset($adminUserMap[$msg['admin_id']]) ? $adminUserMap[$msg['admin_id']]['uname'] : '';
$msg['by_admin_name'] = isset($byAdminUserMap[$msg['by_admin_id']]) ? $byAdminUserMap[$msg['by_admin_id']]['name'] : '';
$msg['by_admin_uname'] = isset($byAdminUserMap[$msg['by_admin_id']]) ? $byAdminUserMap[$msg['by_admin_id']]['uname'] : '';
}
echo json_encode([
'status' => 1,
'msg' => '获取成功',
'messageList' => $messageList
]);
}
/**
* @description 删除公告
*/
public function deleteMessage()
{
// 权限判断(总管理员可操作所有单位)
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id;
}
// 接收参数并校验
$delIdArrRaw = isset($_REQUEST['delIdArr']) ? $_REQUEST['delIdArr'] : '';
if (!empty($delIdArrRaw)) {
// 确保 $delIdArr 是数组(前端传逗号分隔字符串)
if (is_string($delIdArrRaw)) {
$delIdArr = explode(',', $delIdArrRaw);
} elseif (is_array($delIdArrRaw)) {
$delIdArr = $delIdArrRaw;
} else {
echo json_encode(['status' => 0, 'msg' => '参数格式不正确']);
return;
}
$where['id'] = ['in', $delIdArr];
$messageDb = D('message');
if ($messageDb->where($where)->delete()) {
echo json_encode(['status' => 1, 'msg' => '删除成功']);
} else {
echo json_encode(['status' => 0, 'msg' => '删除失败']);
}
} else {
echo json_encode(['status' => 0, 'msg' => '参数有误']);
}
}
2024-05-30 19:16:59 +08:00
/**
* @description: 分类列表
*/
public function getCategoryList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
$order['sort'] = 'desc';
$field = array('id', 'pid', 'path', 'name', 'shop_id', 'sort', 'show', 'describe', 'photo');
$categoryDb = D('category');
if ($categoryList = $categoryDb->where($where)->order($order)->field($field)->select()) {
echo json_encode(array('status' => 1, 'msg' => '访问成功', "categoryList" => $categoryList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无分类数据'));
}
}
/**
* @description: 添加分类
*/
public function addCategory()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['shop_id']) {
//data数据
$data['pid'] = $_REQUEST['id'];
$data['shop_id'] = $_REQUEST['shop_id'];
$data['name'] = $_REQUEST['name'];
$data['sort'] = $_REQUEST['sort'];
$data['show'] = $_REQUEST['show'] == 'true' ? '1' : '0';
$data['describe'] = $_REQUEST['desc'];
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/category/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//录入数据库
$categoryDb = D('category');
if ($id = $categoryDb->data($data)->add()) { //先添加一条新纪录
$where['id'] = $id;
if ($_REQUEST['path']) { //重新组合path
$saveData['path'] = $_REQUEST['path'] . '-' . $id;
} else {
$saveData['path'] = $id;
}
if ($categoryDb->where($where)->data($saveData)->save()) { //再更新记录的path字段
echo json_encode(array('status' => 1, 'msg' => '添加成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '添加失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '添加失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 更新分类
*/
public function saveCategory()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['name'] && $_REQUEST['shop_id']) {
//data数据
$data['name'] = $_REQUEST['name'];
$data['sort'] = $_REQUEST['sort'];
$data['show'] = $_REQUEST['show'] == 'true' ? '1' : '0';
$data['describe'] = $_REQUEST['desc'];
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/category/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
if ($_REQUEST['oldFile']) { //存在老图 既删掉老图 没有成功的话 将刚才复制到此目录得新图也一并删除
if (!(unlink("Data/UploadFiles/category/" . basename($_REQUEST['oldFile'])))) {
unlink("Data/UploadFiles/category/" . $_REQUEST['upFile']);
echo json_encode(array('status' => 0, 'msg' => '原图删除失败'));
exit;
}
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//where条件
$where['id'] = $_REQUEST['id'];
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$categoryDb = D('category');
if ($categoryDb->where($where)->data($data)->save()) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
public function deleteCategory()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['delIdArr'] && $_REQUEST['shop_id']) {
//where条件
$where['shop_id'] = $_REQUEST['shop_id'];
$where['id'] = array("in", $_REQUEST['delIdArr']);
$categoryDb = D('category');
if ($categoryDb->where($where)->delete()) {
echo json_encode(array('status' => 1, 'msg' => '删除成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '删除失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 获取spu列表
*/
public function getSpuList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
$where['del'] = '0';
$order['sort'] = 'desc';
$order['id'] = 'desc';
$spuDb = D('spu');
if ($spuList = $spuDb->where($where)->order($order)->select()) {
echo json_encode(array('status' => 1, 'msg' => '访问成功', "spuList" => $spuList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无商品数据'));
}
}
/**
* @description: 修改商品spu的排序字段
*/
public function orderSpu()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['sort'] != '' && $_REQUEST['shop_id']) {
$data['sort'] = (int)$_REQUEST['sort'];
//where条件
$where['id'] = $_REQUEST['id'];
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$spuDb = D('spu');
if ($spuDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 修改商品spu的显示隐藏字段
*/
public function showSpu()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['show'] != '' && $_REQUEST['shop_id']) {
$data['show'] = $_REQUEST['show'];
//where条件
$where['id'] = $_REQUEST['id'];
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$spuDb = D('spu');
if ($spuDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 修改商品spu的推荐位字段
*/
public function recommendSpu()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['id'] && $_REQUEST['recommend'] != '' && $_REQUEST['shop_id']) {
$data['recommend'] = $_REQUEST['recommend'];
//where条件
$where['id'] = $_REQUEST['id'];
$where['shop_id'] = $_REQUEST['shop_id'];
//录入数据库
$spuDb = D('spu');
if ($spuDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 添加商品spu
*/
public function addSpu()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['shop_id']) {
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/spu/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//data数据
$data['shop_id'] = $_REQUEST['shop_id'];
$data['path'] = $_REQUEST['path'];
$data['name'] = $_REQUEST['name'];
$data['spu_number'] = $_REQUEST['spu_number'];
$data['sort'] = $_REQUEST['sort'];
$data['hot'] = $_REQUEST['hot'];
$data['pro_tag'] = $_REQUEST['pro_tag'];
$data['bind_sku'] = $_REQUEST['bind_sku'];
$data['recommend'] = $_REQUEST['recommend'];
$data['show'] = $_REQUEST['show'];
$data['addtime'] = time();
//录入数据库
$spuDb = D('spu');
if ($spuDb->data($data)->add()) {
echo json_encode(array('status' => 1, 'msg' => '创建成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '创建失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 更新商品 spu
*/
public function saveSpu()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['id'] && $_REQUEST['shop_id']) {
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/spu/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
if ($_REQUEST['oldFile']) { //存在老图 既删掉老图 没有成功的话 将刚才复制到此目录得新图也一并删除
if (!(unlink("Data/UploadFiles/spu/" . basename($_REQUEST['oldFile'])))) {
unlink("Data/UploadFiles/spu/" . $_REQUEST['upFile']);
echo json_encode(array('status' => 0, 'msg' => '原图删除失败'));
exit;
}
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//data数据
$data['path'] = $_REQUEST['path'];
$data['name'] = $_REQUEST['name'];
$data['spu_number'] = $_REQUEST['spu_number'];
$data['sort'] = $_REQUEST['sort'];
$data['hot'] = $_REQUEST['hot'];
$data['pro_tag'] = $_REQUEST['pro_tag'];
$data['bind_sku'] = $_REQUEST['bind_sku'];
$data['recommend'] = $_REQUEST['recommend'];
$data['show'] = $_REQUEST['show'];
$data['shop_id'] = $_REQUEST['shop_id'];
//where条件
$where['id'] = $_REQUEST['id'];
//录入数据库
$spuDb = D('spu');
if ($spuDb->where($where)->data($data)->save()) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: spu删除 ps:只改 del字段标识 并非真正删除
*/
public function deleteSpu()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
if ($_REQUEST['idArr']) {
// 获取要删除的航线ID数组
$where['id'] = array("in", $_REQUEST['idArr']);
//data数据
$data['del'] = '1';
//录入数据库
$spuDb = D('spu');
if ($spuDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '删除成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '删除失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 获取sku列表
*/
public function getSkuList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
$where['del'] = '0';
$order['id'] = 'desc';
$skuDb = D('sku');
if ($skuList = $skuDb->where($where)->order($order)->select()) {
echo json_encode(array('status' => 1, 'msg' => '访问成功', "skuList" => $skuList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无商品数据'));
}
}
/**
* @description: 添加商品sku
*/
public function addSku()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['shop_id']) {
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/sku/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//data数据
$data['shop_id'] = $_REQUEST['shop_id'];
$data['name'] = $_REQUEST['name'];
$data['sku_number'] = $_REQUEST['sku_number'];
$data['price'] = (float)$_REQUEST['price'];
$data['unit'] = $_REQUEST['unit'];
$data['weight'] = $_REQUEST['weight'];
if ($_REQUEST['stock'] != "") {
$data['stock'] = $_REQUEST['stock'];
}
$data['purchase_channel'] = $_REQUEST['purchase_channel'];
$data['addtime'] = time(); //插入记录时 调用当前系统时间值 插入
//录入数据库
$skuDb = D('sku');
if ($skuDb->data($data)->add()) {
echo json_encode(array('status' => 1, 'msg' => '创建成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '创建失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 更新商品 sku
*/
public function saveSku()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
if ($_REQUEST['name'] && $_REQUEST['id'] && $_REQUEST['shop_id']) {
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/sku/" . $_REQUEST['upFile']))) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
if ($_REQUEST['oldFile']) { //存在老图 既删掉老图 没有成功的话 将刚才复制到此目录得新图也一并删除
if (!(unlink("Data/UploadFiles/sku/" . $_REQUEST['oldFile']))) {
if (unlink("Data/UploadFiles/temp/" . $_REQUEST['upFile'])) {
echo json_encode(array('status' => 0, 'msg' => '成功'));
exit;
} else {
echo json_encode(array('status' => 0, 'msg' => '失败'));
exit;
}
echo json_encode(array('status' => 0, 'msg' => '原图删除失败'));
exit;
}
}
$data['photo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
}
//data数据
$data['shop_id'] = $_REQUEST['shop_id'];
$data['name'] = $_REQUEST['name'];
$data['sku_number'] = $_REQUEST['sku_number'];
$data['price'] = (float)$_REQUEST['price'];
$data['unit'] = $_REQUEST['unit'];
$data['weight'] = $_REQUEST['weight'];
$data['stock'] = $_REQUEST['stock'];
$data['purchase_channel'] = $_REQUEST['purchase_channel'];
//where条件
$where['id'] = $_REQUEST['id'];
//录入数据库
$skuDb = D('sku');
if ($skuDb->where($where)->data($data)->save()) {
echo json_encode(array('status' => 1, 'msg' => '更新成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '更新失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: sku删除 ps:只改 del字段标识 并非真正删除
*/
public function deleteSku()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
if ($_REQUEST['idArr']) {
// 获取要删除的航线ID数组
$where['id'] = array("in", $_REQUEST['idArr']);
//data数据
$data['del'] = '1';
//录入数据库
$skuDb = D('sku');
if ($skuDb->where($where)->save($data)) {
echo json_encode(array('status' => 1, 'msg' => '删除成功'));
} else {
echo json_encode(array('status' => 0, 'msg' => '删除失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
/**
* @description: 获取订单列表(只拿已付款和已退款但发货状态为已发货的订单),并联查 receive_site bind_route、runing 字段
*/
public function getPaidOrderList()
{
if ($this->tokenShop_id != C('powerId')) {
$where['o.shop_id'] = $this->tokenShop_id; // 非总管理员只返回自己的订单
}
$orderDb = D('order');
$prefix = C('DB_PREFIX'); // 获取表前缀
// 构建复合查询条件
$where['_complex'] = array(
'_logic' => 'or',
array('o.main_status' => '已付款'),
array(
'o.main_status' => '已退款',
'o.shipment_status' => '已发货'
)
);
// 执行查询
$paidOrderList = $orderDb
->alias('o')
->join("{$prefix}receive_site rs ON o.receive_site_id = rs.id") // 动态表前缀
->field("o.id,o.shop_id,o.order_sn,o.food_sn,o.total_weight,o.total_num,o.total_price,o.transport_price,o.pack_price,o.apply_price,o.receiver,o.tel,o.by_plane_id,o.receive_site_id,o.receive_site_name,o.remark,o.product_snapshot,o.main_status,o.shipment_status,o.refund_status,o.refund_remark,o.order_time,o.paid_time,o.refundapply_time,o.refundagree_time,o.received_time,o.shipped_time, rs.bind_route, rs.runing")
->where($where)
->select();
if ($paidOrderList) {
echo json_encode(array('status' => 1, 'msg' => '成功获取待处理', 'paidOrderList' => $paidOrderList));
} else {
echo json_encode(array('status' => 0, 'msg' => '暂无订单数据'));
}
}
2024-05-30 19:16:59 +08:00
/**
* @description: 获取订单列表
2024-05-30 19:16:59 +08:00
*/
public function getOrderList()
{
//总管理员 可接收任何shop_id 非总管理员 只可以调用自身shop_id 否则会中断
$this->isPower();
// 添加 shop_id 条件
if ($_REQUEST['shop_id'] != '') {
$where['shop_id'] = $_REQUEST['shop_id'];
}
// 添加 start_time 和 end_time 条件
if (isset($_REQUEST['start_time']) && isset($_REQUEST['end_time'])) {
$where['order_time'] = array('between', array($_REQUEST['start_time'], $_REQUEST['end_time']));
}
// 添加 main_status 条件
if (isset($_REQUEST['main_status']) && !empty($_REQUEST['main_status'])) {
$main_status_array = explode(',', $_REQUEST['main_status']);
$where['main_status'] = array('in', $main_status_array);
}
// 添加 shipment_status 条件
if (isset($_REQUEST['shipment_status']) && !empty($_REQUEST['shipment_status'])) {
$shipment_status_array = explode(',', $_REQUEST['shipment_status']);
$where['shipment_status'] = array('in', $shipment_status_array);
}
// 添加 refund_status 条件
if (isset($_REQUEST['refund_status']) && !empty($_REQUEST['refund_status'])) {
$refund_status_array = explode(',', $_REQUEST['refund_status']);
$where['refund_status'] = array('in', $refund_status_array);
}
// 添加搜索条件
if (isset($_REQUEST['search']) && !empty($_REQUEST['search'])) {
$search = explode(',', $_REQUEST['search']);
if (count($search) == 2) {
list($field, $value) = $search;
if (!empty($field)) {
$fieldMap = [
'orderSn' => 'order_sn',
'name' => 'receiver',
'tel' => 'tel',
'remark' => 'remark',
'byPlaneId' => 'by_plane_id',
'desc' => 'describe'
];
if (array_key_exists($field, $fieldMap) && !empty($value)) {
if ($field === 'byPlaneId') {
// 对于 byPlaneId 字段,使用精确匹配
$where[$fieldMap[$field]] = $value;
} else {
// 对于其他字段,使用模糊查询
$where[$fieldMap[$field]] = array('like', '%' . $value . '%');
}
}
}
}
}
$field = array('id', 'order_sn', 'tel', 'total_price', 'transport_price', 'pack_price', 'refund_price', 'main_status', 'shipment_status', 'refund_status', 'order_time');
$orderDb = D('order');
$orderList = $orderDb->where($where)->field($field)->select();
echo json_encode(array('status' => 1, 'msg' => '访问成功', 'orderList' => $orderList));
2024-05-30 19:16:59 +08:00
}
/**
* @description:获取订单详情
*/
public function getOrderDetails()
{
if ($this->tokenShop_id != C('powerId')) {
$where['shop_id'] = $this->tokenShop_id; //非总管理员 只返回自己的账户信息
}
if ($_REQUEST['id']) {
$where['id'] = $_REQUEST['id'];
$orderDb = D('order');
$field = array('id', 'order_sn', 'food_sn', 'total_weight', 'total_num', 'total_price', 'transport_price', 'pack_price', 'refund_price', 'apply_price', 'receiver', 'tel', 'by_plane_id', 'receive_site_id', 'receive_site_name', 'remark', 'product_snapshot', 'main_status', 'shipment_status', 'refund_status', 'refund_remark', 'canceled_time', 'order_time', 'paid_time', 'refunded_time', 'completed_time', 'received_time', 'shipped_time', 'delivered_time', 'refundapply_time', 'refundagree_time', 'rejected_time', 'describe');
if ($orderDetails = $orderDb->where($where)->field($field)->find()) {
echo json_encode(array('status' => 1, 'msg' => '访问成功', 'orderDetails' => $orderDetails));
} else {
echo json_encode(array('status' => 0, 'msg' => '访问失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));
}
}
2024-05-30 19:16:59 +08:00
}