package com.goafanti.business.service.impl; import com.goafanti.app.bo.ProjectBo; import com.goafanti.app.bo.ProjectDetailBo; import com.goafanti.business.bo.BusinessProjectBo; import com.goafanti.business.bo.ProjectSizeBo; import com.goafanti.business.service.BusinessProjectService; import com.goafanti.common.dao.BusinessCategoryMapper; import com.goafanti.common.dao.BusinessProjectMapper; import com.goafanti.common.dao.BusinessProjectModelMapper; import com.goafanti.common.dao.ProjectInterestMapper; import com.goafanti.common.model.BusinessCategory; import com.goafanti.common.model.BusinessProject; import com.goafanti.common.model.BusinessProjectModel; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.order.enums.ProjectType; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.*; @Service public class BusinessProjectServiceImpl extends BaseMybatisDao implements BusinessProjectService { @Autowired BusinessProjectMapper businessProjectMapper; @Autowired BusinessCategoryMapper businessVarietiesMapper; @Autowired BusinessProjectModelMapper projectSizeMapper; @Autowired ProjectInterestMapper projectInterestMapper; @Override public int insert(String bname, String cid, String country, String province, String city, String district,String boutique) { BusinessProject bp=new BusinessProject(); bp.setId(UUID.randomUUID().toString()); bp.setBname(bname); bp.setCid(cid); bp.setCountry(country); bp.setType(0); if (1!=Integer.valueOf(country)) { bp.setProvince(province); bp.setCity(city); bp.setDistrict(district); } bp.setDeleteSign(0); //bp.setCreateId("f31c0d1a-05bc-4f5c-b4a8-95f983d24131"); if (StringUtils.isNotBlank(TokenManager.getAdminId())) { bp.setCreateId(TokenManager.getAdminId()); } bp.setCreateTime(new Date()); bp.setStatus("0"); bp.setBoutique(Integer.valueOf(boutique)); bp.setFirstPayment(new BigDecimal("0")); return businessProjectMapper.insert(bp); } @SuppressWarnings("unchecked") @Override public Pagination listProject(String bname, String cid, String country,String province,String city,String district, String activityFlag, String status,Integer type,Integer restrictStatus, Integer pNo, Integer pSize) { if (pNo == null || pNo < 0)pNo = 1; if (pSize == null || pSize < 0 )pSize = 10; Pagination pt=(Pagination)findPage("findProjectListByPage", "findProjectListCount", disposeParams(bname, cid, country, province, city, district, activityFlag, status,type,restrictStatus),pNo,pSize); return pt; } private Map disposeParams(String bname, String cid, String country,String province,String city,String district, String activityFlag, String status,Integer type,Integer restrictStatus) { Map params = new HashMap<>(); if (StringUtils.isNotBlank(bname)) { params.put("bname", bname); } if (StringUtils.isNotBlank(cid)) { params.put("cid", cid); } if (StringUtils.isNotBlank(country)) { params.put("country", country); } if (StringUtils.isNotBlank(province)) { params.put("province", province); } if (StringUtils.isNotBlank(city)) { params.put("city", city); } if (StringUtils.isNotBlank(district)) { params.put("district", district); } if (StringUtils.isNotBlank(activityFlag)) { params.put("activityFlag", activityFlag); } if (StringUtils.isNotBlank(status)) { params.put("status", status); } if (type!=null ) { params.put("type", type); } if (restrictStatus!=null ) { params.put("restrictStatus", restrictStatus); } return params; } @Override public int getBnamecount(String bname) { return businessProjectMapper.getBnamecount(bname); } @Override public int deleteProject(String id) { BusinessProject bp=businessProjectMapper.queryById(id); if (bp.getDeleteSign()==0) { bp.setDeleteSign(1); }else { bp.setDeleteSign(0); } return businessProjectMapper.update(bp); } @Override public int updateStopProject(String id) { BusinessProject bp=businessProjectMapper.queryById(id); if (Integer.valueOf(bp.getStatus())==0) { bp.setStatus("1"); }else { bp.setStatus("0"); } return businessProjectMapper.update(bp); } @Override public BusinessProjectBo orgProjects(String id) { BusinessProject bp=businessProjectMapper.queryById(id); BusinessProjectBo bpo=new BusinessProjectBo(); BeanUtils.copyProperties(bp,bpo); String cname=getAllCname(bpo.getCid()); String createId=bpo.getCreateId(); bpo.setCreateName(businessProjectMapper.getCreateName(createId)); bpo.setCname(cname); return bpo; } @Override public ProjectDetailBo orgProject(String id) { ProjectDetailBo pd=businessProjectMapper.selectAppProjectDetail(id); int i=projectInterestMapper.checkUidAndDid(id,TokenManager.getUserId()); if (TokenManager.isLogin()&&i>0) { pd.setInterest("1"); }else { pd.setInterest("0"); } pd.setProjectSize(projectSizeMapper.selectPidList(id)); return pd; } @Override public List> getAllCnames(Integer flag) { if (flag==null)flag=0; List> list=new ArrayList>(); List listcid=businessVarietiesMapper.getListId(); for (String s : listcid) { Map map=new HashMap<>(); String cname=getAllCname(s); map.put("id", s); map.put("cname", cname); map.put("typeList",selectProjectAndTypeById(s)); if (flag==1) { if (StringUtils.isBlank(cname)) { map.put("cname", "平台超级业务品类"); } list.add(map); }else { if (StringUtils.isNotBlank(cname)) { list.add(map); } } } return list; } /** * 递归获取上级来获取全路径 * @param s ID * @return 路径 */ private String getAllCname(String s) { String cid=businessVarietiesMapper.getThisCid(s); String cname=businessVarietiesMapper.getThisCname(cid); BusinessCategory bv=businessVarietiesMapper.selectByPrimaryKey(s); String sid=""; if(bv!=null&&null!=bv.getSuperId())sid=bv.getSuperId(); if(null==cid)return ""; if (cid.length()>4) { if(bv.getSuperId().equals(bv.getId())){ return ""; } String w=getAllCname(sid)+"-"+cname; return w; }else{ return cid.length()>3?cname:""; } } @Override public int updateProject(BusinessProject s) { BusinessProject bp=businessProjectMapper.queryById(s.getId()); BeanUtils.copyProperties(s, bp); return businessProjectMapper.update(bp); } @Override public int addProjectSize(BusinessProjectModel ps) { ps.setId(UUID.randomUUID().toString()); if (StringUtils.isNotBlank(TokenManager.getAdminId())) { ps.setCreateId(TokenManager.getAdminId()); } //ps.setCreateId("f31c0d1a-05bc-4f5c-b4a8-95f983d24131"); ps.setCreateTime(new Date()); ps.setStatus(0); return projectSizeMapper.insert(ps); } @Override public int updateOrgProjectSize(BusinessProjectModel ps) { BusinessProjectModel psz=projectSizeMapper.selectByPrimaryKey(ps.getId()); projectSizeConfiguration(ps, psz); return projectSizeMapper.updateByPrimaryKeySelective(psz); } private void projectSizeConfiguration(BusinessProjectModel ps, BusinessProjectModel psz) { if (StringUtils.isNotBlank(ps.getPid())) { psz.setId(ps.getPid()); } if (StringUtils.isNotBlank(ps.getPname())) { psz.setPname(ps.getPname()); } if (null!=ps.getPrice()) { psz.setPrice(ps.getPrice()); } if (null!=(ps.getOffset())) { psz.setOffset(ps.getOffset()); } if (null!=(ps.getActivityFlag())) { psz.setActivityFlag(ps.getActivityFlag()); } if (null!=(ps.getMemberPrice())) { psz.setMemberPrice(ps.getMemberPrice()); } if (null!=(ps.getActivityPrice())) { psz.setActivityPrice(ps.getActivityPrice()); } if (null!=(ps.getStatus())) { psz.setStatus(ps.getStatus()); } psz.setUpdateTime(new Date()); } @SuppressWarnings("unchecked") @Override public Pagination listProjectSize(String pid,Integer pNo,Integer pSize) { if (pNo == null || pNo < 0) { pNo = 1; } if (pSize == null || pSize < 0 || pSize > 10) { pSize = 10; } Mapmap=new HashMap<>(); map.put("pid", pid); Pagination pt=(Pagination)findPage("findProjectSizeListByPage", "findProjectSizeListCount", map,pNo,pSize); return pt; } @Override public ProjectSizeBo getProjectSize(String id) { return projectSizeMapper.selectByBusinessId(id); } @Override public int deleteProjectSize(String id) { return projectSizeMapper.deleteByPrimaryKey(id); } @Override public int updateSotpProjectSize(String id) { BusinessProjectModel ps=projectSizeMapper.selectByPrimaryKey(id); int i=ps.getStatus(); if (i==0) { ps.setStatus(1); }else { ps.setStatus(0); } return projectSizeMapper.updateByPrimaryKey(ps); } @Override public boolean WhetherRepeat(BusinessProjectModel ps) { List list=projectSizeMapper.getgetPnamecount(ps.getPname()); for (ProjectSizeBo p : list) { if (p.getPid().equals(ps.getPid())) { return true; } } return false; } @Override public boolean judgeStatus(BusinessProjectModel ps) { BusinessProject bp=businessProjectMapper.queryById(ps.getPid()); if (Integer.valueOf(bp.getStatus())==1) { return true; }else { return false; } } @Override public boolean judgeBeing(BusinessProject s) { BusinessProject bp=businessProjectMapper.queryById(s.getId()); BusinessProject bp1=businessProjectMapper.selectByPrimaryBname(s.getBname()); if (null==bp||null==bp1||bp.getId().equals(bp1.getId())) { return false; }else { return true; } } @SuppressWarnings("unchecked") @Override public Pagination getBusinessProject(String id,Integer pNo,Integer pSize) { if (pNo == null || pNo <= 0) { pNo = 1; } if (pSize == null || pSize < 0 || pSize > 10) { pSize = 10; } Map params = new HashMap<>(); if (StringUtils.isNotBlank(id)) { params.put("id", id); } Pagination data = (Pagination)findPage("getBusinessProject", "getBusinessProjectCount", params,pNo,pSize); return data; } @SuppressWarnings("unchecked") @Override public Pagination recommendProjectList(Integer pNo, Integer pSize) { if (pNo == null || pNo <= 0) { pNo = 1; } if (pSize == null || pSize < 0 || pSize > 10) { pSize = 10; } Map params = new HashMap<>(); return (Pagination)findPage("findRecommendProjectListByPage", "findRecommendProjectListCount", params,pNo,pSize); } @Override public boolean checkProject(String id) { if (businessProjectMapper.checkProject(id)>0) { return true; } return false; } @SuppressWarnings("unchecked") @Override public Pagination portalRecommendList(Integer pNo, Integer pSize) { Map params = new HashMap<>(); return (Pagination)findPage("findRecommendProjectListByPage", "findRecommendProjectListCount", params,pNo,pSize); } @SuppressWarnings("unchecked") @Override public Pagination portalBusinessProject(String id, Integer pNo, Integer pSize) { Map params = new HashMap<>(); if (StringUtils.isNotBlank(id)) { params.put("id", id); } Pagination data = (Pagination)findPage("getBusinessProject", "getBusinessProjectCount", params,pNo,pSize); return data; } @Override public ProjectDetailBo ProjectDetail(String id) { ProjectDetailBo pd=businessProjectMapper.selectAppProjectDetail(id); if (StringUtils.isNotBlank(TokenManager.getUserId())&&projectInterestMapper.checkUidAndDid(id,TokenManager.getUserId())>0) { pd.setInterest("1"); }else { pd.setInterest("0"); } pd.setProjectSize(projectSizeMapper.selectPidList(id)); return pd; } @Override public List selectBusinessProjectByName(String businessName,String cname) { return businessProjectMapper.selectBusinessProjectByName(businessName,cname); } @Override public List selectBusinessProjectCatalog() { return businessProjectMapper.selectBusinessProjectCatalog(); } public List selectProjectAndTypeById(String id) { List list=businessProjectMapper.selectProjectAndTypeAll(); for (Map map : list) { if (id.equals(map.get("id"))){ List typeList=new ArrayList<>(); String groupCount= (String) map.get("groupCount"); if (groupCount!=null){ String[] ss=groupCount.split(","); Map typeBo = new HashMap<>(); typeBo.put("id",null); typeBo.put("name", "全部"); typeList.add(typeBo); if (ss.length>0){ for (String s : ss) { Map types = new HashMap<>(); types.put("id",s); types.put("name", ProjectType.getValueByCode(Integer.valueOf(s))); typeList.add(types); } } return typeList; } } } return new ArrayList<>(); } }