package com.ruoyi.mall.service.impl;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.mall.mapper.TbSignUpMapper;
import com.ruoyi.mall.domain.TbSignUp;
import com.ruoyi.mall.service.ITbSignUpService;

/**
 * 用户签到Service业务层处理
 *
 * @author ruoyi
 * @date 2025-03-31
 */
@Service
public class TbSignUpServiceImpl implements ITbSignUpService
{
    @Autowired
    private TbSignUpMapper tbSignUpMapper;

    /**
     * 查询用户签到
     *
     * @param signUpId 用户签到主键
     * @return 用户签到
     */
    @Override
    public TbSignUp selectTbSignUpBySignUpId(Long signUpId)
    {
        return tbSignUpMapper.selectTbSignUpBySignUpId(signUpId);
    }

    /**
     * 查询用户签到列表
     *
     * @param tbSignUp 用户签到
     * @return 用户签到
     */
    @Override
    public List<TbSignUp> selectTbSignUpList(TbSignUp tbSignUp)
    {
        return tbSignUpMapper.selectTbSignUpList(tbSignUp);
    }

    /**
     * 新增用户签到
     *
     * @param tbSignUp 用户签到
     * @return 结果
     */
    @Override
    public int insertTbSignUp(TbSignUp tbSignUp)
    {
        return tbSignUpMapper.insertTbSignUp(tbSignUp);
    }

    /**
     * 修改用户签到
     *
     * @param tbSignUp 用户签到
     * @return 结果
     */
    @Override
    public int updateTbSignUp(TbSignUp tbSignUp)
    {
        return tbSignUpMapper.updateTbSignUp(tbSignUp);
    }

    /**
     * 批量删除用户签到
     *
     * @param signUpIds 需要删除的用户签到主键
     * @return 结果
     */
    @Override
    public int deleteTbSignUpBySignUpIds(Long[] signUpIds)
    {
        return tbSignUpMapper.deleteTbSignUpBySignUpIds(signUpIds);
    }

    /**
     * 删除用户签到信息
     *
     * @param signUpId 用户签到主键
     * @return 结果
     */
    @Override
    public int deleteTbSignUpBySignUpId(Long signUpId)
    {
        return tbSignUpMapper.deleteTbSignUpBySignUpId(signUpId);
    }

    /**
     * 签到
     * @param userId 用户ID
     * @return 结果
     */
    @Override
    public JSONObject getSignUpScore(Long userId){
        // 查询所得积分
        Long signUpScore = tbSignUpMapper.getSignUpScore(userId);

        // 查询今日是否签到
        Integer signUp = tbSignUpMapper.getSignUp(userId);
        JSONObject jsonObject = new JSONObject();

        jsonObject.put("signUpScore", signUpScore);
        jsonObject.put("signUp", signUp > 0 ? 1 : 0);
        return jsonObject;
    }

    @Override
    public int getSignUp(Long userId){
        Integer signUp = tbSignUpMapper.getSignUp(userId);
        return signUp;
    }
}
