【类 型】:feat

【原  因】:创建店铺时候 顺便创建绑定 不可更改管理员
【过  程】:事务 创建店铺 然后创建管理员用户 有问题回滚
【影  响】:
This commit is contained in:
air 2025-06-30 17:20:30 +08:00
parent 7e05f09339
commit 9857824e1a

View File

@ -25,32 +25,37 @@ class AdminController extends PublicController
}
}
/**
* @description: 单位添加
* @description: 单位添加(带事务:添加店铺 + 添加管理员)
*/
public function addShop()
{
//非总管理员 直接打断 退出
if ($this->tokenShop_id != C('powerId')) { //非总管理员
// 非总管理员,拒绝操作
if ($this->tokenShop_id != C('powerId')) {
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 = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
$shop_id = "";
// shop_id 随机生成
$arr = str_split('abcdefghijklmnopqrstuvwxyz0123456789');
$shop_id = '';
for ($i = 0; $i < 16; $i++) {
$rand = rand(0, 36);
$shop_id = $shop_id . $arr[$rand];
$rand = rand(0, count($arr) - 1);
$shop_id .= $arr[$rand];
}
//如果有上传图片得操作 执行如下
if ($_REQUEST['upFile']) { //有新图上传 则把图片从temp目录 复制到目标目录
if (!(copy("Data/UploadFiles/temp/" . $_REQUEST['upFile'], "Data/UploadFiles/photo/" . $_REQUEST['upFile']))) {
// 处理 logo 上传
if ($_REQUEST['upFile']) {
$from = "Data/UploadFiles/temp/" . $_REQUEST['upFile'];
$to = "Data/UploadFiles/photo/" . $_REQUEST['upFile'];
if (!copy($from, $to)) {
echo json_encode(array('status' => 0, 'msg' => '图片复制失败'));
exit;
}
$data['logo'] = json_encode(array($_REQUEST['upFile'])); //序列化储存
$data['logo'] = json_encode(array($_REQUEST['upFile']));
}
//data数据
// 组装店铺数据
$data['shop_id'] = $shop_id;
$data['name'] = $_REQUEST['name'];
$data['waiter'] = $_REQUEST['waiter'];
@ -66,12 +71,36 @@ class AdminController extends PublicController
$data['describe'] = $_REQUEST['desc'];
$data['opening_time'] = $_REQUEST['opening_time'];
$data['closeing_time'] = $_REQUEST['closeing_time'];
//录入数据库
$shopDb = D('shop');
if ($shopDb->data($data)->add()) {
echo json_encode(array('status' => 1, 'msg' => '创建成功'));
$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' => '管理员创建失败,已回滚'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '创建失败'));
$shopDb->rollback();
echo json_encode(array('status' => 0, 'msg' => '店铺创建失败'));
}
} else {
echo json_encode(array('status' => 0, 'msg' => '参数有误'));