package com.bjtdba.userCenter.service.impl;

import com.bjtdba.entity.userCenter.UserRelation;
import com.bjtdba.userCenter.dao.MerchantDao;
import com.bjtdba.userCenter.dao.UserRelationDao;
import com.bjtdba.userCenter.service.UserRelationService;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class UserRelationServiceImpl implements UserRelationService {

    @Autowired
    private MerchantDao merchantDao;
    @Autowired
    private UserRelationDao userRelationDao;


    /**
     *  验证商品是否存在
     * @param id
     * @return
     */
    public Boolean isProductAndMerchant(Integer id,Integer type){
        Integer num=0;
        if(type==1){
            num=merchantDao.countProduct(id);
        }
        if(type==10){
            num=merchantDao.countMerchanet(id);
        }
        if(num==0){
            return false;
        }else{
            return true;
        }
    }


    /**
     * 通过ID查询单条数据
     *
     * @param
     * @return 实例对象
     */
   public UserRelation queryById(UserRelation userRelation){
      return userRelationDao.queryById(userRelation);
   }

    /**
     * 查询指定行数据
     *
     * @param userRelation 查询条件
     * @return 对象列表
     */
    public List<UserRelation> queryAllByLimit(UserRelation userRelation){
        return  userRelationDao.queryAllByLimit(userRelation);
    }

    /**
     * 统计总行数
     *
     * @param userRelation 查询条件
     * @return 总行数
     */
    public  long count(UserRelation userRelation){
        return userRelationDao.count(userRelation);
    }

    /**
     * 新增数据
     *
     * @param userRelation 实例对象
     * @return 影响行数
     */
    @Transactional(rollbackFor=Exception.class)
    public int insert(UserRelation userRelation){
        if(userRelation.getType()==1){
            //更新商品关注数量
            merchantDao.addCountProduct(userRelation.getTypeId());
        }
        if(userRelation.getType()==10){
            //更新商铺关注数量
            merchantDao.addCountMerchant(userRelation.getTypeId());
        }
        return userRelationDao.insert(userRelation);
    }

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<UserRelation> 实例对象列表
     * @return 影响行数
     */
    public int insertBatch(@Param("entities") List<UserRelation> entities){
        return  userRelationDao.insertBatch(entities);
    }

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<UserRelation> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
     */
    public int insertOrUpdateBatch(@Param("entities") List<UserRelation> entities){
        return  userRelationDao.insertOrUpdateBatch(entities);
    }

    /**
     * 修改数据
     *
     * @param userRelation 实例对象
     * @return 影响行数
     */
    public int update(UserRelation userRelation){
        return userRelationDao.update(userRelation);
    }

    /**
     * 通过主键删除数据
     *
     * @param
     * @return 影响行数
     */
    public int deleteById(UserRelation userRelation){
        if(userRelation.getType()==1){
            //更新商品关注数量
            merchantDao.delCountProduct(userRelation.getTypeId());
        }
        if(userRelation.getType()==10){
            //更新商铺关注数量
            merchantDao.delCountMerchant(userRelation.getTypeId());
        }
        return userRelationDao.deleteById(userRelation);
    }


}
