package com.vci.web.service.impl; import com.vci.constant.FrameWorkBtmTypeConstant; import com.vci.model.SmFavFunctionDO; import com.vci.pagemodel.SmFunctionVO; import com.vci.starter.revision.service.RevisionModelUtil; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.ISmFunctionQueryService; import com.vci.web.service.SmFavFunctionServiceI; import com.vci.web.service.WebBoServiceI; import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 收藏功能服务 * @author weidy * @date 2020/7/12 */ @Service public class SmFavFunctionServiceImpl implements SmFavFunctionServiceI { /** * 业务类型的服务 */ @Autowired private WebBoServiceI boService; /** * 菜单功能的数据操作 */ @Autowired private ISmFunctionQueryService functionQueryService; /** * 版本和对象操作类 */ @Autowired(required = false) private RevisionModelUtil revisionModelUtil; /** * 添加收藏 * * @param functionId 功能编号 * @throws VciBaseException 参数为空会抛出异常 */ @Override public void addFav(String functionId) throws VciBaseException { VciBaseUtil.alertNotNull(functionId,"功能菜单编号"); Map conditionMap = new HashMap<>(); conditionMap.put("functionId",functionId.trim()); conditionMap.put("userOid", WebUtil.getCurrentUserOid()); if(boService.queryCount(FrameWorkBtmTypeConstant.SM_FAV_FUNCTION,conditionMap)<1){ SmFavFunctionDO favFunctionDO = new SmFavFunctionDO(); favFunctionDO.setFunctionId(functionId); favFunctionDO.setUserOid(VciBaseUtil.getCurrentUserOid()); revisionModelUtil.wrapperForAdd(favFunctionDO); boService.editSave(favFunctionDO); } } /** * 移除收藏 * * @param functionId 功能编号 * @throws VciBaseException 参数为空会抛出异常 */ @Override public void removeFav(String functionId) throws VciBaseException { VciBaseUtil.alertNotNull(functionId,"功能菜单编号"); SmFavFunctionDO favFunctionDO = boService.selectByOid(functionId.trim(), SmFavFunctionDO.class); if(favFunctionDO!=null && StringUtils.isNotBlank(favFunctionDO.getOid())){ boService.delete(favFunctionDO); } } /** * 获取当前用户的收藏功能 * * @return 功能的显示对象 * @throws VciBaseException 查询出错会抛出异常 */ @Override public List listFavFunction() throws VciBaseException { Map conditionMap = new HashMap<>(); conditionMap.put("userOid", WebUtil.getCurrentUserOid()); List favFunctionDOS = boService.queryObject(SmFavFunctionDO.class, conditionMap); if(CollectionUtils.isEmpty(favFunctionDOS)){ return new ArrayList<>(); }else{ Map functionMap = functionQueryService.selectAllFunctionMap(); List functionVOS = new ArrayList<>(); favFunctionDOS.stream().map(SmFavFunctionDO::getFunctionId).forEach(functionOid->{ if(functionMap.containsKey(functionOid)){ functionVOS.add(functionMap.get(functionOid)); } }); return functionVOS; } } }