package com.boyue.hasfj.service.impl;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import com.boyue.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.boyue.hasfj.mapper.UserFeedbackMapper;
import com.boyue.hasfj.domain.UserFeedback;
import com.boyue.hasfj.service.IUserFeedbackService;

/**
 * 用户留言Service业务层处理
 * 
 * @author boyue
 * @date 2025-07-04
 */
@Service
public class UserFeedbackServiceImpl implements IUserFeedbackService 
{
    @Autowired
    private UserFeedbackMapper userFeedbackMapper;

    /**
     * 查询用户留言
     * 
     * @param id 用户留言主键
     * @return 用户留言
     */
    @Override
    public UserFeedback selectUserFeedbackById(Long id)
    {
        return userFeedbackMapper.selectUserFeedbackById(id);
    }

    /**
     * 查询用户留言列表
     * 
     * @param userFeedback 用户留言
     * @return 用户留言
     */
    @Override
    public List<UserFeedback> selectUserFeedbackList(UserFeedback userFeedback)
    {
        return userFeedbackMapper.selectUserFeedbackList(userFeedback);
    }

    /**
     * 新增用户留言
     * 
     * @param userFeedback 用户留言
     * @return 结果
     */
    @Override
    public int insertUserFeedback(UserFeedback userFeedback)
    {
        userFeedback.setCreateTime(DateUtils.getNowDate());
        // 自动生成留言查询编号
        if (userFeedback.getFeedbackNo() == null || userFeedback.getFeedbackNo().isEmpty()) {
            String feedbackNo = "YHLY-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
            userFeedback.setFeedbackNo(feedbackNo);
        }
        // 根据回复内容设置留言状态
        if (userFeedback.getAdminReplyContent() == null || userFeedback.getAdminReplyContent().isEmpty()) {
            userFeedback.setStatus(0L); // 待处理
        } else {
            userFeedback.setStatus(1L); // 已回复
        }
        return userFeedbackMapper.insertUserFeedback(userFeedback);
    }

    /**
     * 修改用户留言
     * 
     * @param userFeedback 用户留言
     * @return 结果
     */
    @Override
    public int updateUserFeedback(UserFeedback userFeedback)
    {
        userFeedback.setAdminReplyTime(DateUtils.getNowDate());
        // 根据回复内容设置留言状态
        if (userFeedback.getAdminReplyContent() == null || userFeedback.getAdminReplyContent().isEmpty()) {
            userFeedback.setStatus(0L); // 待处理
        } else {
            userFeedback.setStatus(1L); // 已回复
        }
        return userFeedbackMapper.updateUserFeedback(userFeedback);
    }

    /**
     * 批量删除用户留言
     * 
     * @param ids 需要删除的用户留言主键
     * @return 结果
     */
    @Override
    public int deleteUserFeedbackByIds(Long[] ids)
    {
        return userFeedbackMapper.deleteUserFeedbackByIds(ids);
    }

    /**
     * 删除用户留言信息
     * 
     * @param id 用户留言主键
     * @return 结果
     */
    @Override
    public int deleteUserFeedbackById(Long id)
    {
        return userFeedbackMapper.deleteUserFeedbackById(id);
    }

    /**
     * 查询用户留言
     *
     * @param feedbackNo 留言查询编号
     * @return 用户留言
     */
    @Override
    public UserFeedback selectUserFeedbackByFeedbackNo(String feedbackNo)
    {
        UserFeedback userFeedback = new UserFeedback();
        userFeedback.setFeedbackNo(feedbackNo);
        List<UserFeedback> list = userFeedbackMapper.selectUserFeedbackList(userFeedback);
        return list.isEmpty() ? null : list.get(0);
    }
}
