const Framework = require("../../framework/node-core-framework.js");

module.exports = {
  /**
   * @swagger
   * /api/user/login:
   *   post:
   *     summary: 用户登录
   *     description: 通过设备SN码登录，返回token和用户信息
   *     tags: [前端-用户管理]
   *     requestBody:
   *       required: true
   *       content:
   *         application/json:
   *           schema:
   *             type: object
   *             required:
   *               - sn_code
   *               - device_id
   *             properties:
   *               sn_code:
   *                 type: string
   *                 description: 设备SN码
   *                 example: 'GHJU'
   *               device_id:
   *                 type: string
   *                 description: 设备ID
   *                 example: 'device_123456'
   *     responses:
   *       200:
   *         description: 登录成功
   *         content:
   *           application/json:
   *             schema:
   *               type: object
   *               properties:
   *                 code:
   *                   type: integer
   *                   description: 状态码，0表示成功
   *                   example: 0
   *                 message:
   *                   type: string
   *                   description: 响应消息
   *                   example: 'success'
   *                 data:
   *                   type: object
   *                   properties:
   *                     token:
   *                       type: string
   *                       description: 认证token
   *                       example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
   *                     user:
   *                       type: object
   *                       description: 用户信息
   *       400:
   *         description: 参数错误或用户不存在
   *         content:
   *           application/json:
   *             schema:
   *               type: object
   *               properties:
   *                 code:
   *                   type: integer
   *                   example: 400
   *                 message:
   *                   type: string
   *                   example: '用户不存在'
   */
    "POST /user/login": async (ctx) => {

        const { sn_code, device_id } = ctx.getBody();

        const { pla_account,device_status} = await Framework.getModels();

        // 获取用户信息
    
        const user = await pla_account.findOne({ where: { sn_code } });
        if (!user) {
            return ctx.fail('用户不存在');
        }

        // 更新设备状态
  
        const device = await device_status.findOne({ where: { sn_code } });
        if (device) {
            await device_status.update({
                device_id: device_id
            }, { where: { sn_code } });
        } else {
            await device_status.create({
                sn_code: sn_code,
                device_id: device_id
            });
        }


        const token = Framework.getServices().tokenService.create({
            sn_code: user.sn_code,
            device_id: user.device_id
        });

        return ctx.success({ token, user: user.toJSON() });

    }
}