package com.haha.admin.controller;

import cn.dev33.satoken.annotation.SaIgnore;
import com.haha.common.vo.LoginVO;
import com.haha.common.vo.Result;
import com.haha.entity.dto.ReplenisherBindDTO;
import com.haha.entity.dto.WechatLoginDTO;
import com.haha.service.ReplenisherService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 补货员登录控制器
 * 提供补货员微信静默登录和扫码绑定接口
 */
@Slf4j
@RestController
@RequestMapping("/replenisher/login")
@RequiredArgsConstructor
@SaIgnore
public class ReplenisherLoginController {

    private final ReplenisherService replenisherService;

    /**
     * 补货员微信静默登录
     * 仅限已绑定微信的补货员使用
     *
     * @param dto 微信登录参数
     * @return 登录结果，包含token和用户信息
     */
    @PostMapping("/wechat")
    public Result<LoginVO> wechatLogin(@RequestBody WechatLoginDTO dto) {
        String code = dto.getCode();
        log.info("[补货员登录] 微信静默登录请求 - code: {}",
                code != null ? code.substring(0, Math.min(8, code.length())) + "..." : "null");
        return replenisherService.loginByWechat(code);
    }

    /**
     * 补货员扫码绑定微信
     * 管理员创建补货员后生成绑定码，补货员通过此接口完成微信绑定
     *
     * @param dto 绑定参数（绑定码 + 微信登录凭证）
     * @return 绑定+登录结果
     */
    @PostMapping("/bind")
    public Result<LoginVO> bindWechat(@Valid @RequestBody ReplenisherBindDTO dto) {
        log.info("[补货员登录] 扫码绑定微信请求 - bindingCode: {}",
                dto.getBindingCode() != null ? dto.getBindingCode().substring(0, Math.min(8, dto.getBindingCode().length())) + "..." : "null");
        return replenisherService.bindWechat(dto.getBindingCode(), dto.getCode());
    }
}
