package com.wms.entity.app.request;

import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.User;
import com.wms.utils.MyPassword;
import com.wms.utils.StringUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * 用户查询
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class UserQuery extends PageQuery{
    /** 用户ID */
    @JsonProperty("userId")
    private Integer userId;
    /** 用户名 */
    @JsonProperty("userName")
    private String userName;
    /** 角色Id */
    @JsonProperty("roleId")
    private Integer roleId;
    /** 登录账户 */
    @JsonProperty("loginAccount")
    private String loginAccount;
    /** 登录密码 */
    @JsonProperty("loginPassword")
    private String loginPassword;
    /** 添加时间 */
    @JsonProperty("addTime")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime addTime;
    /** 更新时间 */
    @JsonProperty("updateTime")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /** 添加用户名 */
    @JsonProperty("addUser")
    private String addUser;

    /**
     * 将UserQuery转化为UserPO
     * @return UserVO结果
     */
    public User toUserPO() {
        User user = BeanUtil.copyProperties(this, User.class);
        if (StringUtils.isNotEmpty(user.getLoginPassword())) {
            user.setLoginPassword(MyPassword.encrypt(user.getLoginPassword()));
        }

        return user;
    }
}
