| package com.matrix.system.hive.service.imp; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
|   | 
| 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.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 com.matrix.system.constance.Dictionary; | 
|   | 
|   | 
| /** | 
|  * @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<Long> 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<SysGoods> findInPage(SysGoods sysGoods, PaginationVO pageVo) { | 
|         return sysGoodsDao.selectInPage(sysGoods, pageVo); | 
|     } | 
|   | 
|     @Override | 
|     public List<SysGoods> 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<SysGoods> findAllNo() { | 
|         return sysGoodsDao.selectAllNo(); | 
|     } | 
|   | 
| } |