package com.dcsoft.system.visitor.service.impl;

import java.util.List;

import cn.hutool.core.util.ObjectUtil;
import com.dcsoft.common.core.exception.ServiceException;
import com.dcsoft.common.core.utils.StringUtils;
import com.dcsoft.common.security.utils.SecurityUtils;
import com.dcsoft.system.api.model.LoginUser;
import com.dcsoft.system.domain.SysPeople;
import com.dcsoft.system.visitor.domain.VisVisitorRegister;
import com.dcsoft.system.visitor.mapper.VisVisitorRegisterMapper;
import com.dcsoft.system.visitor.service.IVisVisitorRegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 访客注册Service业务层处理
 *
 * @author dcsoft
 * @date 2024-05-21
 */
@Service
public class VisVisitorRegisterServiceImpl implements IVisVisitorRegisterService {
    @Autowired
    private VisVisitorRegisterMapper visVisitorRegisterMapper;

    /**
     * 查询访客注册
     *
     * @param id 访客注册主键
     * @return 访客注册
     */
    @Override
    public VisVisitorRegister selectVisVisitorRegisterById(String id) {
        return visVisitorRegisterMapper.selectVisVisitorRegisterById(id);
    }

    /**
     * 查询访客注册列表
     *
     * @param visVisitorRegister 访客注册
     * @return 访客注册
     */
    @Override
    public List<VisVisitorRegister> selectVisVisitorRegisterList(VisVisitorRegister visVisitorRegister) {
        return visVisitorRegisterMapper.selectVisVisitorRegisterList(visVisitorRegister);
    }

    /**
     * 新增访客注册
     *
     * @param visVisitorRegister 访客注册
     * @return 结果
     */
    @Override
    public int insertVisVisitorRegister(VisVisitorRegister visVisitorRegister) {
        if (null == visVisitorRegister.getUserId()) {
            LoginUser loginUser = SecurityUtils.getLoginUser();
            visVisitorRegister.setUserId(loginUser.getUserid());
        }

        VisVisitorRegister visVisitor = visVisitorRegisterMapper.selectVisVisitorRegisterByUserId(visVisitorRegister.getUserId());
        if (ObjectUtil.isNotNull(visVisitor) && StringUtils.isNotBlank(visVisitor.getId())) {
            throw new ServiceException("不可重复注册访客信息！");
        }
        return visVisitorRegisterMapper.insertVisVisitorRegister(visVisitorRegister);
    }

    /**
     * 修改访客注册
     *
     * @param visVisitorRegister 访客注册
     * @return 结果
     */
    @Override
    public int updateVisVisitorRegister(VisVisitorRegister visVisitorRegister) {
        return visVisitorRegisterMapper.updateVisVisitorRegister(visVisitorRegister);
    }

    /**
     * 批量删除访客注册
     *
     * @param ids 需要删除的访客注册主键
     * @return 结果
     */
    @Override
    public int deleteVisVisitorRegisterByIds(String[] ids) {
        return visVisitorRegisterMapper.deleteVisVisitorRegisterByIds(ids);
    }

    /**
     * 删除访客注册信息
     *
     * @param id 访客注册主键
     * @return 结果
     */
    @Override
    public int deleteVisVisitorRegisterById(String id) {
        return visVisitorRegisterMapper.deleteVisVisitorRegisterById(id);
    }

    @Override
    public String queryVisitorRegister(SysPeople sysPeople) {
        return visVisitorRegisterMapper.queryVisitorRegister(sysPeople);
    }

    @Override
    public void saveVisitorRegister(SysPeople people1) {
        visVisitorRegisterMapper.saveVisitorRegister(people1);
    }

    @Override
    public void updateVisitorRegisterByOpenid(SysPeople sysPeople) {
        visVisitorRegisterMapper.updateVisitorRegisterByOpenid(sysPeople);
    }

    /**
     * 查询访客注册
     *
     * @return 访客注册
     */
    @Override
    public VisVisitorRegister getVisitorInfo() {

        LoginUser loginUser = SecurityUtils.getLoginUser();
        Long userId = loginUser.getUserid();
        return visVisitorRegisterMapper.selectVisVisitorRegisterByUserId(userId);
    }
}
