|
@@ -0,0 +1,88 @@
|
|
|
+import crypto from "crypto";
|
|
|
+
|
|
|
+import { DatabasePool } from "@/lib/mysql";
|
|
|
+import { oss } from "@/lib/oss";
|
|
|
+import { ResultSetHeader } from "mysql2/promise";
|
|
|
+import { NextRequest, NextResponse } from "next/server";
|
|
|
+import { DealerAddRequest } from "../../../(request)/dealerRequest";
|
|
|
+import { response } from "../../../(response)/response";
|
|
|
+
|
|
|
+/**
|
|
|
+ * 添加经销商
|
|
|
+ */
|
|
|
+export async function POST(request: NextRequest) {
|
|
|
+ const requestBody = await request.json() as DealerAddRequest;
|
|
|
+ console.log("🚀 ~ POST ~ requestBody:", requestBody)
|
|
|
+
|
|
|
+ // 保存经销商信息
|
|
|
+ const connection = await DatabasePool.getConnection();
|
|
|
+ await connection.beginTransaction();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 如果有头像,就上传头像到 OSS
|
|
|
+ if (requestBody.company_avatar) {
|
|
|
+ const buf = Buffer.from(requestBody.company_avatar, 'base64')
|
|
|
+ const ossResult = await oss.put(`company/${Date.now()}.png`, buf)
|
|
|
+ console.log("🚀 ~ POST ~ ossResult:", ossResult)
|
|
|
+ requestBody.company_avatar = ossResult.url
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新建经销商公司信息
|
|
|
+ const [companyResult] = await connection.execute<ResultSetHeader>(
|
|
|
+ `insert into tb_admin_company (company_name, company_avatar) VALUES (?, ?)`,
|
|
|
+ [requestBody.company_name, requestBody.company_avatar]);
|
|
|
+ const companyId = companyResult.insertId
|
|
|
+ console.log("🚀 ~ POST ~ companyId:", companyId)
|
|
|
+
|
|
|
+ // 新建经销商登录信息
|
|
|
+ const defaultLoginName = requestBody.dealer_link_number;
|
|
|
+ // 默认密码进行 MD5 加密
|
|
|
+ const hash = crypto.createHash("md5");
|
|
|
+ hash.update("tecanswer");
|
|
|
+ const defaultPassword = hash.digest("hex").toUpperCase();
|
|
|
+
|
|
|
+ const [userResult] = await connection.execute<ResultSetHeader>(
|
|
|
+ `insert into tb_admin_user (login_name, password, real_name, avatar, company_id, status) VALUES (?, ?, ?, ?, ?, 1)`,
|
|
|
+ [defaultLoginName, defaultPassword, requestBody.dealer_link_name, requestBody.company_avatar, companyId]);
|
|
|
+ const userId = userResult.insertId
|
|
|
+ console.log("🚀 ~ POST ~ userId:", userId)
|
|
|
+
|
|
|
+ // 新建经销商信息
|
|
|
+ console.log("Params", userId, companyId,
|
|
|
+ requestBody.dealer_link_name,
|
|
|
+ requestBody.dealer_link_number,
|
|
|
+ requestBody.dealer_address,
|
|
|
+ requestBody.cooperated_date_start,
|
|
|
+ requestBody.cooperated_date_end,
|
|
|
+ requestBody.province,
|
|
|
+ requestBody.city,
|
|
|
+ requestBody.remark);
|
|
|
+ const [dealerResult] = await connection.execute<ResultSetHeader>(
|
|
|
+ `insert into tb_admin_dealer (user_id, company_id, dealer_link_name, dealer_link_number, dealer_address,
|
|
|
+ cooperated_date_start, cooperated_date_end, province, city, remark)
|
|
|
+ values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
|
+ userId, companyId,
|
|
|
+ requestBody.dealer_link_name,
|
|
|
+ requestBody.dealer_link_number,
|
|
|
+ requestBody.dealer_address,
|
|
|
+ requestBody.cooperated_date_start,
|
|
|
+ requestBody.cooperated_date_end,
|
|
|
+ requestBody.province,
|
|
|
+ requestBody.city,
|
|
|
+ requestBody.remark
|
|
|
+ ])
|
|
|
+ const dealerId = dealerResult.insertId
|
|
|
+ console.log("🚀 ~ POST ~ dealerId:", dealerId)
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ await connection.rollback();
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ connection.commit();
|
|
|
+ connection.release();
|
|
|
+
|
|
|
+ return NextResponse.json(response.success());
|
|
|
+}
|