package com.xmomen.module.base.service.impl;

import com.xmomen.framework.mybatis.dao.MybatisDao;
import com.xmomen.framework.mybatis.page.Page;
import com.xmomen.module.base.entity.CdItemDetail;
import com.xmomen.module.base.mapper.ItemDetailMapper;
import com.xmomen.module.base.model.CreateItemDetail;
import com.xmomen.module.base.model.ItemDetailModel;
import com.xmomen.module.base.model.ItemDetailQuery;
import com.xmomen.module.base.model.UpdateItemDetail;
import com.xmomen.module.base.service.ItemDetailService;
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 ItemDetailServiceImpl implements ItemDetailService {
    // 注入MybatisDao
    @Autowired
    MybatisDao mybatisDao;

    // 根据查询条件查询商品详情列表
    @Override
    public List<ItemDetailModel> queryItemDetailList(ItemDetailQuery itemQuery) {
        // 使用MybatisDao的SqlSessionTemplate执行查询
        return mybatisDao.getSqlSessionTemplate().selectList(ItemDetailMapper.ItemDetailMapperNameSpace + "getItemDetailList", itemQuery);
    }

    // 根据查询条件和分页参数查询商品详情列表
    @Override
    public Page<ItemDetailModel> queryItemDetailList(ItemDetailQuery itemQuery, Integer offset, Integer limit) {
        // 使用MybatisDao的selectPage方法执行查询
        return (Page<ItemDetailModel>) mybatisDao.selectPage(ItemDetailMapper.ItemDetailMapperNameSpace + "getItemDetailList", itemQuery, limit, offset);
    }

    // 创建商品详情
    @Override
    @Transactional
    public void createItemDetail(CreateItemDetail createItemDetail) {
        // 创建CdItemDetail对象
        CdItemDetail itemDetail = new CdItemDetail();
        // 设置商品详情内容
        itemDetail.setItemDetailContent(createItemDetail.getItemDetailContent());
        // 设置商品ID
        itemDetail.setCdItemId(createItemDetail.getCdItemId());
        // 使用MybatisDao的save方法保存商品详情
        mybatisDao.save(itemDetail);
    }

    // 更新商品详情
    @Transactional
    public void updateItemDetail(Integer id, UpdateItemDetail updateItemDetail) {
        // 创建CdItemDetail对象
        CdItemDetail itemDetail = new CdItemDetail();
        // 设置商品详情ID
        itemDetail.setId(id);
        // 设置商品ID
        itemDetail.setCdItemId(updateItemDetail.getCdItemId());
        // 设置商品详情内容
        itemDetail.setItemDetailContent(updateItemDetail.getItemDetailContent());
        // 使用MybatisDao的update方法更新商品详情
        mybatisDao.update(itemDetail);
    }

    // 删除商品详情
    @Transactional
    public void delete(Integer id) {
        // 使用MybatisDao的deleteByPrimaryKey方法删除商品详情
        mybatisDao.deleteByPrimaryKey(CdItemDetail.class, id);
    }

}
