package com.matrix.system.hive.service.imp; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.exception.GlobleException; import com.matrix.core.pojo.PaginationVO; import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.dao.UtilDao; import com.matrix.system.common.tools.ServiceUtil; import com.matrix.system.constance.Dictionary; import com.matrix.system.constance.TableMapping; import com.matrix.system.hive.bean.SysGoods; import com.matrix.system.hive.dao.SysGoodsDao; import com.matrix.system.hive.service.SysGoodsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * @date 2016-07-03 20:53 */ @Service("sysGoodsService") public class SysGoodsServiceImpl implements SysGoodsService { @Autowired private SysGoodsDao sysGoodsDao; @Autowired private ServiceUtil serviceUtil; @Autowired private UtilDao utilDao; public static final String TABLE_NAME = "sys_goods"; /** * @author 姜友瑶 * @time 2016-07-31 */ @Transactional(rollbackFor = Exception.class) @Override public int add(SysGoods sysGoods) { SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); sysGoods.setDeleted(Dictionary.DELETED_N); // 校验去重 if (serviceUtil.addCheckRepeatTowColumn(TABLE_NAME, "GOODS_NO", sysGoods.getGoodsNo(), "shop_id", users.getShopId())) { throw new GlobleException("编号" + sysGoods.getGoodsNo() + "重复"); } int i = sysGoodsDao.insert(sysGoods); return i; } /** * @author 姜友瑶 * @time 2016-07-31 */ @Override public int modify(SysGoods sysGoods) { // 校验去重 if (serviceUtil.updateCheckRepeat(TABLE_NAME, "GOODS_NO", sysGoods.getGoodsNo(), "ID", sysGoods.getId())) { throw new GlobleException("编号" + sysGoods.getGoodsNo() + "重复"); } // 更新或者添加sku //updateSku(sysGoods); return sysGoodsDao.update(sysGoods); } /** * @author 姜友瑶 * @time 2016-07-31 */ @Override @Transactional(rollbackFor = Exception.class) public int remove(List list) { // 查询是否存在被绑定的sku for (Long id : list) { // 此处由于taocan_info表已经删除,因此不需要检测taocan_info表,而是改为检测shopping_goods_assemble,改写dao.xml中的方法 if (sysGoodsDao.getbindTaocanCount(id) > 0) { throw new GlobleException("产品中的sku被销售产品绑定,请先删除对应的销售产品!"); } if (sysGoodsDao.getbindProjCount(id) > 0) { throw new GlobleException("产品中的sku被项目绑定,请先删除对应的项目!"); } } return sysGoodsDao.deleteByIds(list); } @Override @Transactional(rollbackFor = Exception.class) public int removeById(Long id) { // 查询是否存在被绑定的sku if (sysGoodsDao.getbindTaocanCount(id) > 0) { throw new GlobleException("产品中的sku被套餐绑定,请先删除对应的套餐!"); } if (sysGoodsDao.getbindProjCount(id) > 0) { throw new GlobleException("产品中的sku被项目绑定,请先删除对应的项目!"); } return sysGoodsDao.deleteById(id); } /** * 验证是否可以删除sku * * @author:jyy * @date 2016年9月18日 下午1:53:48 */ private boolean checkIsDelete(Long id) { if (utilDao.selectCount(TableMapping.SYS_PROJ_GOODS, "SKU_ID", id + "") > 0) { throw new GlobleException("有项目消耗产品绑定了该产品,必须先接触绑定关系!"); } if (utilDao.selectCount(TableMapping.SHOPPING_GOODS_ASSEMBLE, "assemble_sku_id", id + "") > 0) { throw new GlobleException("有商品绑定了该产品,必须先接触绑定关系!"); } if (utilDao.selectCount(TableMapping.SYS_STORE_INFO, "SKU_ID", id + "") > 0) { throw new GlobleException("库存中已经存在该产品,不能删除该产品!"); } return true; } @Override public List findInPage(SysGoods sysGoods, PaginationVO pageVo) { return sysGoodsDao.selectInPage(sysGoods, pageVo); } @Override public List findByModel(SysGoods sysGoods) { return sysGoodsDao.selectByModel(sysGoods); } @Override public int findTotal(SysGoods sysGoods) { return sysGoodsDao.selectTotalRecord(sysGoods); } @Override public SysGoods findById(Long id) { return sysGoodsDao.selectById(id); } @Override public List findAllNo() { return sysGoodsDao.selectAllNo(); } }