package com.javaweb.cms.service.impl; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import com.javaweb.cms.domain.AlbumMaterial; import com.javaweb.cms.domain.Material; import com.javaweb.cms.domain.MaterialUse; import com.javaweb.cms.mapper.MaterialMapper; import com.javaweb.cms.util.CmsConstants; import com.javaweb.common.annotation.DataScope; import com.javaweb.common.utils.DateUtils; import com.javaweb.common.utils.Guid; import com.javaweb.framework.util.ShiroUtils; import com.javaweb.system.domain.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javaweb.cms.mapper.AlbumMapper; import com.javaweb.cms.domain.Album; import com.javaweb.cms.service.IAlbumService; import com.javaweb.common.core.text.Convert; import org.springframework.transaction.annotation.Transactional; /** * 素材相册Service业务层处理 * * @author wujiyue * @date 2019-11-08 */ @Service public class AlbumServiceImpl implements IAlbumService { @Autowired private AlbumMapper albumMapper; @Autowired private MaterialMapper materialMapper; /** * 查询素材专辑 * * @param albumId 素材专辑ID * @return 素材专辑 */ @Override public Album selectAlbumById(String albumId) { return albumMapper.selectAlbumById(albumId); } /** * 查询素材专辑列表 * * @param album 素材专辑 * @return 素材专辑 */ @Override @DataScope(deptAlias = "a" ,userAlias = "a") public List selectAlbumList(Album album) { return albumMapper.selectAlbumList(album); } /** * 新增素材专辑 * * @param album 素材专辑 * @return 结果 */ @Override public int insertAlbum(Album album) { album.setAlbumId(Guid.get()); SysUser user= ShiroUtils.getSysUser(); album.setDeptId(user.getDeptId().toString()); album.setUserId(user.getUserId().toString()); album.setCreateBy(user.getUserName()); album.setCreateTime(DateUtils.getNowDate()); return albumMapper.insertAlbum(album); } /** * 修改素材专辑 * * @param album 素材专辑 * @return 结果 */ @Override public int updateAlbum(Album album) { album.setUpdateTime(DateUtils.getNowDate()); return albumMapper.updateAlbum(album); } /** * 删除素材专辑对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteAlbumByIds(String ids) { return albumMapper.deleteAlbumByIds(Convert.toStrArray(ids)); } /** * 删除素材专辑信息 * * @param albumId 素材专辑ID * @return 结果 */ @Override public int deleteAlbumById(String albumId) { return albumMapper.deleteAlbumById(albumId); } /** * 查询专辑【关联】的素材 * @param material * @return */ @Override public List selectAlbumMaterialList(Material material) { List list=materialMapper.selectAlbumMaterialList(material); return list; } /** * 查询专辑【未关联】的素材 * @param material * @return */ @Override public List selectAlbumUnMaterialList(Material material) { List list=materialMapper.selectAlbumUnMaterialList(material); return list; } public boolean containsId(String tarId,String[] arr){ boolean flag=false; for(String id:arr){ if(id.equals(tarId)){ flag=true; break; } } return flag; } /** * 删除专辑关联的素材 * @param ids */ @Override @Transactional public void deleteMaterialBatch(String ids) { String[] arr=Convert.toStrArray(ids); //删除使用记录 List albumMaterials = albumMapper.selectAlbumMaterialByIds(arr); for(AlbumMaterial albumMaterial:albumMaterials){ materialMapper.deleteMaterialUseByMx(albumMaterial.getMaterialId(),"cms_album_material",albumMaterial.getAlbumId(),"album_id"); int n=materialMapper.selectCountMaterialUse(albumMaterial.getMaterialId()); if(n==0){ materialMapper.updateMaterialUseState(albumMaterial.getMaterialId(), CmsConstants.USE_STATE_NO); } } albumMapper.deleteAlbumMaterialByIds(arr); } /** * 保存专辑关联的素材 * @param albumId * @param materialIds */ @Override @Transactional public void saveMaterial(String albumId, String materialIds) { String[] addArr=Convert.toStrArray(materialIds); SysUser user=ShiroUtils.getSysUser(); if(addArr!=null&&addArr.length>0){ List list=Lists.newArrayList(); AlbumMaterial albumMaterial=null; Integer i=0; for(String s:addArr){ i++; albumMaterial=new AlbumMaterial(); albumMaterial.setAlbumId(albumId); albumMaterial.setMaterialId(s); albumMaterial.setSort(i.toString()); list.add(albumMaterial); } albumMapper.insertAlbumMaterialBatch(list); //插入使用记录 cms_material_use List useList=Lists.newArrayList(); MaterialUse use=null; for(String s:addArr){ use=new MaterialUse(); use.setUseId(albumId); use.setMaterialId(s); use.setUserId(user.getUserId().toString()); use.setCreateBy(user.getUserName()); use.setCreateTime(new Date()); use.setUseTable(CmsConstants.MATERIAL_USE_ALBUM_TABLE_NAME); use.setUseColumn(CmsConstants.MATERIAL_USE_ALBUM_COLUMN_NAME); useList.add(use); } materialMapper.insertMaterialUseBatch(useList); //更新素材使用状态 for(String mid:addArr){ materialMapper.updateMaterialUseState(mid,CmsConstants.USE_STATE_YES); } } } @Override public Map getAlbum(String code) { Album album=albumMapper.selectAlbumByCode(code); if(album!=null){ Material queryForm=new Material(); queryForm.setAlbumId(album.getAlbumId()); List images=materialMapper.selectAlbumMaterialList(queryForm); album.setImages(images); Map map=JSON.parseObject(JSON.toJSONString(album),Map.class); return map; } return null; } }