JtBusinessServiceImpl.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. package com.goafanti.business.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.UUID;
  8. import org.apache.poi.poifs.property.Child;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import com.goafanti.business.bo.JtBusinessCategoryBo;
  12. import com.goafanti.business.bo.JtBusinessCategoryTree;
  13. import com.goafanti.business.bo.JtBusinessProjectResult;
  14. import com.goafanti.business.bo.makeMoneyCategoryListBo;
  15. import com.goafanti.business.service.JtBusinessService;
  16. import com.goafanti.comment.bo.CommentDetailResult;
  17. import com.goafanti.common.bo.MyCollection;
  18. import com.goafanti.common.dao.JtBusinessCategoryMapper;
  19. import com.goafanti.common.dao.JtBusinessProjectMapper;
  20. import com.goafanti.common.dao.JtCommodityCommentMapper;
  21. import com.goafanti.common.dao.JtTagMapper;
  22. import com.goafanti.common.enums.BusinessCategoryModule;
  23. import com.goafanti.common.enums.ProjectAuditStatus;
  24. import com.goafanti.common.enums.UserAuthentication;
  25. import com.goafanti.common.model.JtBusinessCategory;
  26. import com.goafanti.common.model.JtBusinessProject;
  27. import com.goafanti.common.model.JtTag;
  28. import com.goafanti.common.utils.StringUtils;
  29. import com.goafanti.core.mybatis.BaseMybatisDao;
  30. import com.goafanti.core.mybatis.page.Pagination;
  31. import com.goafanti.core.shiro.token.TokenManager;
  32. import com.goafanti.order.enums.AuditState;
  33. @Service
  34. public class JtBusinessServiceImpl extends BaseMybatisDao<JtBusinessProjectMapper> implements JtBusinessService{
  35. @Autowired
  36. JtBusinessCategoryMapper jtBusinessCategoryMapper;
  37. @Autowired
  38. JtBusinessProjectMapper jtBusinessProjectMapper;
  39. @Autowired
  40. private JtTagMapper jtTagMapper;
  41. @Autowired
  42. private JtCommodityCommentMapper jtCommodityCommentMapper;
  43. @Override
  44. public JtBusinessCategory getBusinessCategoryByLayerAndName(Integer layer, String name) {
  45. // TODO Auto-generated method stub
  46. return jtBusinessCategoryMapper.getBusinessCategoryByLayerAndName(layer, name);
  47. }
  48. @Override
  49. public List<JtBusinessCategory> getBusinessCategoryBySuperId(String id,Integer size) {
  50. // TODO Auto-generated method stub
  51. return jtBusinessCategoryMapper.getBusinessCategoryBySuperId(id,size);
  52. }
  53. @Override
  54. public List<JtBusinessProject> getBusinessProjectByCategoryId(String id,Integer size,Integer isHot) {
  55. // TODO Auto-generated method stub
  56. return jtBusinessProjectMapper.getBusinessProjectByCategoryId(id,size,isHot);
  57. }
  58. @Override
  59. public JtBusinessProjectResult getBusinessProjectDetail(String id) {
  60. String uid=TokenManager.getUserId();
  61. JtBusinessProjectResult j=jtBusinessProjectMapper.selectByPrimaryKeyWithModule(id,uid);
  62. j.setCommentDetailResult(jtCommodityCommentMapper.selectByProjectId(id));
  63. j.setTags(jtTagMapper.selectProjectTag(id));
  64. if (StringUtils.isBlank(j.getAdvertisement()))j.setAdvertisement("暂无描述");
  65. return j;
  66. }
  67. @Override
  68. public JtBusinessCategoryTree getCategoryTree(String id) {
  69. // TODO Auto-generated method stub
  70. return jtBusinessCategoryMapper.getCategoryTree(id);
  71. }
  72. public List<JtBusinessCategoryBo>getCategoryBoList(Integer module){
  73. return jtBusinessCategoryMapper.getCategoryBoList(module);
  74. }
  75. /*
  76. * 登录用户0 项目列表页1 privateProject
  77. * ownerId优先级高于privateProject
  78. *
  79. * ordetType---0 发布时间 1价格 2成交量
  80. * orderSort ----0大->小 1小->大
  81. *
  82. *
  83. * */
  84. @SuppressWarnings("unchecked")
  85. @Override
  86. public Pagination<JtBusinessProjectResult> getProjects(String tag,String topId, String secondId, String name, Integer pageSize,
  87. Integer pageNo,Integer privateProject,Integer auditStatus,Integer module,Integer isHot,Integer orderType,Integer orderSort,String ownerId) {
  88. if(orderType==null)orderType=0;
  89. if(orderSort==null)orderSort=0;
  90. // TODO Auto-generated method stub
  91. if (pageNo == null || pageNo < 0) {
  92. pageNo = 1;
  93. }
  94. if (pageSize == null || pageSize < 0 ) {
  95. pageSize = 10;
  96. }
  97. Map<String, Object> params=disposeParams(topId, secondId, name);
  98. if(auditStatus!=null ) {
  99. params.put("auditStatus", auditStatus);
  100. }
  101. if(privateProject!=null && privateProject ==0)
  102. params.put("ownerId", TokenManager.getUserId());
  103. if(StringUtils.isNotBlank(ownerId)) {
  104. params.put("ownerId", ownerId);
  105. }
  106. if(module!=null)params.put("module", module);
  107. if(isHot!=null)params.put("isHot", isHot);
  108. if(orderType!=null)params.put("orderType", orderType);
  109. if(orderSort!=null)params.put("orderSort", orderSort);
  110. if(StringUtils.isNotBlank(tag))params.put("tag", tag);
  111. Pagination<JtBusinessProjectResult> pagination=(Pagination<JtBusinessProjectResult>)findPage("findJtBusinessProjectByPage","findJtBusinessCountByPage",params,pageNo,pageSize);
  112. List<JtBusinessProjectResult> list =(List<JtBusinessProjectResult>) pagination.getList();
  113. for (JtBusinessProjectResult j : list) {
  114. if (StringUtils.isBlank(j.getAdvertisement()))j.setAdvertisement("暂无描述");
  115. }
  116. return pagination;
  117. }
  118. private Map<String, Object> disposeParams(String topId, String secondId, String name) {
  119. Map<String, Object> params = new HashMap<>();
  120. if (StringUtils.isNotBlank(topId)) {
  121. params.put("topId", topId);
  122. }
  123. if (StringUtils.isNotBlank(secondId)) {
  124. params.put("secondId", secondId);
  125. }
  126. if (StringUtils.isNotBlank(name)) {
  127. params.put("name", name);
  128. }
  129. return params;
  130. }
  131. @Override
  132. public int insertCategory(JtBusinessCategory jtBusinessCategory) {
  133. // TODO Auto-generated method stub
  134. // jtBusinessCategoryMapper.autoIncreaseSort(jtBusinessCategory.getLayer(),jtBusinessCategory.getSort());
  135. if(jtBusinessCategory.getSuperId()!=null && jtBusinessCategory.getLayer().intValue()==1 && jtBusinessCategory.getSuperId().length()>0)return -2;
  136. //String number="BC";
  137. String number=BusinessCategoryModule.getStatus(jtBusinessCategory.getModule()).toString();
  138. if(jtBusinessCategory.getLayer().intValue()==2) {
  139. //2层,先加第一层
  140. //找到当前品类父级品类
  141. JtBusinessCategory sp=jtBusinessCategoryMapper.selectByPrimaryKey(jtBusinessCategory.getSuperId());
  142. if(sp==null || sp.getLayer()!=1) {
  143. //找到的父级品类层数不是1 或者未找到
  144. return -2;
  145. }
  146. //加前层
  147. //父级品类层数为1的情况下 第一层编号为父级sort序号
  148. int size1=sp.getSort();
  149. if(size1>99)return -1;
  150. if(size1<10)number+="0";
  151. number+=size1;
  152. }
  153. //加层
  154. int size2;
  155. //通过父级id获取当前层列表
  156. List<JtBusinessCategory>businessCategories =jtBusinessCategoryMapper.getBusinessCategoryBySuperId(jtBusinessCategory.getSuperId(), null);
  157. //列表为0,当前层编号size2设置为1,大于0 设置为当前最大sort+1
  158. if(businessCategories.size()>0)
  159. size2=businessCategories.get(businessCategories.size()-1).getSort()+1;
  160. else size2=1;
  161. //每层最多99个
  162. if(size2>99)return -1;
  163. //增加0
  164. if(size2<10)number+="0";
  165. //完成编号
  166. number+=size2;
  167. jtBusinessCategory.setNumber(number);
  168. //设置sort序号
  169. jtBusinessCategory.setSort(size2);
  170. jtBusinessCategory.setCreateTime(new Date());
  171. jtBusinessCategory.setId(UUID.randomUUID().toString());
  172. return jtBusinessCategoryMapper.insertSelective(jtBusinessCategory);
  173. }
  174. @Override
  175. public int deleteCategoryById(String id) {
  176. // TODO Auto-generated method stub
  177. //查找品类
  178. JtBusinessCategory sp=jtBusinessCategoryMapper.selectByPrimaryKey(id);
  179. //查找子品类 存在子品类不允许删除
  180. List<JtBusinessCategory> chidren=jtBusinessCategoryMapper.getBusinessCategoryBySuperId(sp.getId(), null);
  181. if(chidren.size()>0) {
  182. return -1;
  183. }
  184. List<JtBusinessProject> childrenProject=jtBusinessProjectMapper.getBusinessProjectByCategoryId(id, 100,null);
  185. if(childrenProject!= null && childrenProject.size()>0) {
  186. return -1;
  187. }
  188. return jtBusinessCategoryMapper.deleteByPrimaryKey(id);
  189. }
  190. @Override
  191. public JtBusinessCategory getCategoryById(String id) {
  192. // TODO Auto-generated method stub
  193. return jtBusinessCategoryMapper.selectByPrimaryKey(id);
  194. }
  195. @Override
  196. public int updateCategory(JtBusinessCategory jtBusinessCategory) {
  197. // 层级不会变
  198. // TODO Auto-generated method stub
  199. //修改不影响结构的数据
  200. JtBusinessCategory category = new JtBusinessCategory();
  201. category.setId(jtBusinessCategory.getId());
  202. category.setImgUrl(jtBusinessCategory.getImgUrl());
  203. category.setName(jtBusinessCategory.getName());
  204. category.setSummary(jtBusinessCategory.getSummary());
  205. jtBusinessCategoryMapper.updateByPrimaryKeySelective(category);
  206. //是否修改了模块类别
  207. boolean moduleChange = null != jtBusinessCategory.getModule() ? !jtBusinessCategory.getModule().equals(jtBusinessCategory.getNextModule()) : false;
  208. //是否有上级id,并且改变了上级id
  209. boolean existSuperId = StringUtils.isNotBlank(jtBusinessCategory.getSuperId()) ? !jtBusinessCategory.getSuperId().equals(jtBusinessCategory.getOldSuperId()) : false;
  210. //获得更改前的自己的number
  211. String oldNumber = jtBusinessCategoryMapper.selectByPrimaryKey(jtBusinessCategory.getId()).getNumber();
  212. String number = null;
  213. //一级更换模块
  214. if(moduleChange && !existSuperId){
  215. jtBusinessCategory.setLayer(1);
  216. //根据模块获得字母前缀
  217. String prefix = BusinessCategoryModule.getStatus(jtBusinessCategory.getNextModule()).toString();
  218. jtBusinessCategory.setNumber(prefix + "__");
  219. number = prefix;
  220. category.setModule(jtBusinessCategory.getNextModule());
  221. jtBusinessCategory.setModule(jtBusinessCategory.getNextModule());
  222. }
  223. //存在上级说明是二级修改到不同模块的某品类中
  224. if(existSuperId){
  225. JtBusinessCategory b = jtBusinessCategoryMapper.selectByPrimaryKey(jtBusinessCategory.getSuperId());
  226. category.setModule(b.getModule());
  227. jtBusinessCategory.setLayer(2);
  228. jtBusinessCategory.setModule(b.getModule());
  229. number = b.getNumber();
  230. //获得前缀
  231. String prefix = BusinessCategoryModule.getStatus(b.getModule()).toString();
  232. number = prefix + number.substring(prefix.length()) ;
  233. jtBusinessCategory.setNumber(number + "__");
  234. category.setSuperId(jtBusinessCategory.getSuperId());//上级id也要修改
  235. }
  236. if((!moduleChange && !existSuperId) && !existSuperId){
  237. return 1;
  238. }
  239. //获得当前更改后模块的最大值
  240. String newNumber = jtBusinessCategoryMapper.getCurrentMaxNumber(jtBusinessCategory);
  241. Integer n = null != newNumber ? Integer.valueOf(newNumber.substring(newNumber.length() - 2)) : 0;
  242. if(n < 99){
  243. //将最大值加一
  244. n += 1;
  245. newNumber = number + (n<10? "0"+ n : n);
  246. } else {
  247. newNumber = jtBusinessCategoryMapper.getCurrentMaxNumber(jtBusinessCategory);
  248. n = Integer.valueOf(newNumber.substring(newNumber.length() - 2));
  249. if(n == 1 || n == 01){
  250. return -1;
  251. }
  252. //将最小值减一
  253. n -= 1;
  254. newNumber = number + (n<10? "0"+ n : n);
  255. }
  256. //修改自己和自己下级的前缀
  257. jtBusinessCategory.setLayer(newNumber.length() + 1);//截取前缀的长度位置
  258. jtBusinessCategory.setNumber(oldNumber + "%");
  259. jtBusinessCategory.setName(newNumber );
  260. //将模块前面字母替换
  261. jtBusinessCategoryMapper.updateNumberPrefix(jtBusinessCategory);
  262. //得到sort
  263. category.setSort(n);
  264. //修改自己的number
  265. category.setNumber(newNumber);
  266. //修改自己的模块
  267. jtBusinessCategoryMapper.updateByPrimaryKeySelective(category);
  268. return 1;//jtBusinessCategoryMapper.updateByPrimaryKeySelective(jtBusinessCategory);
  269. }
  270. private Map<String, Object> disposeCategoryParams(String name,Integer layer ) {
  271. Map<String, Object> params = new HashMap<>();
  272. if (layer!=null) {
  273. params.put("layer", layer);
  274. }
  275. if (StringUtils.isNotBlank(name)) {
  276. params.put("name", name);
  277. }
  278. return params;
  279. }
  280. @Override
  281. public int insertProject(JtBusinessProject jtBusinessProject) {
  282. // TODO Auto-generated method stub
  283. jtBusinessProject.setCreateTime(new Date());
  284. jtBusinessProject.setId(UUID.randomUUID().toString());
  285. jtBusinessProject.setOwnerId(TokenManager.getUserId());
  286. jtBusinessProject.setAuditStatus(ProjectAuditStatus.CREATE.getCode());
  287. List<JtBusinessProject>projects=jtBusinessProjectMapper.findProjectOrderByNumber();
  288. int cSize = 1;
  289. if(projects!=null && projects.size()>0)
  290. {
  291. String number=projects.get(projects.size()-1).getNumber();
  292. if(number!=null && number.length()==6)
  293. {
  294. String nbString=number.substring(2);
  295. try {
  296. cSize=Integer.parseInt(nbString)+1;
  297. cSize=Math.max(cSize, projects.size()+1);
  298. }catch (Exception e) {
  299. // TODO: handle exception
  300. return -1;
  301. }
  302. }
  303. else cSize=1;
  304. }
  305. else cSize=1;
  306. String nbString="BP";
  307. String sizeString="000"+cSize;
  308. sizeString=sizeString.substring(sizeString.length()-4);
  309. nbString+=sizeString;
  310. jtBusinessProject.setNumber(nbString);
  311. jtBusinessProjectMapper.insertSelective(jtBusinessProject);
  312. return 1;
  313. }
  314. @Override
  315. public int deleteProjectById(String id) {
  316. return jtBusinessProjectMapper.deleteByPrimaryKey(id);
  317. }
  318. @Override
  319. public int updateProject(JtBusinessProject jtBusinessProject) {
  320. jtBusinessProjectMapper.updateByPrimaryKeySelective(jtBusinessProject);
  321. if(StringUtils.isNotBlank(jtBusinessProject.getTag())){
  322. String str=jtBusinessProject.getTag();
  323. String[] strs = str.split(",");
  324. jtTagMapper.deleteByProjectId(jtBusinessProject.getId());
  325. for (String s : strs) {
  326. jtTagMapper.insertProjectTag(UUID.randomUUID().toString(),s,jtBusinessProject.getId());
  327. }
  328. }
  329. return 1;
  330. }
  331. @Override
  332. public List<JtBusinessProject> getProjectsLimit(Integer size) {
  333. // TODO Auto-generated method stub
  334. return jtBusinessProjectMapper.findProjectOrderByNumber();
  335. }
  336. @Override
  337. public int deleteByIdAndUid(String id) {
  338. // TODO Auto-generated method stub
  339. if(TokenManager.getUserId()==null)return -1;
  340. return jtBusinessProjectMapper.deleteByIdAndUid(id,TokenManager.getUserId());
  341. }
  342. @SuppressWarnings("unchecked")
  343. @Override
  344. public Pagination<JtBusinessProject> listProjectIInterestedIn(Integer pageNo,Integer pageSize) {
  345. // TODO Auto-generated method stub
  346. if (pageNo == null || pageNo < 0) {
  347. pageNo = 1;
  348. }
  349. if (pageSize == null || pageSize < 0 || pageSize > 10) {
  350. pageSize = 10;
  351. }
  352. Map<String,Object> params=new HashMap<String,Object>();
  353. params.put("uid", TokenManager.getUserId());
  354. //params.put("uid", "1180fa62-7c42-44be-bc41-5583814d69f4");
  355. return (Pagination<JtBusinessProject>) findPage("findInterestedProjcet", "findInterestedProjcetCount", params, pageNo, pageSize);
  356. }
  357. @SuppressWarnings("unchecked")
  358. @Override
  359. public Pagination<MyCollection> myCollectionProject(Integer pageNo, Integer pageSize) {
  360. if (pageNo == null || pageNo < 0) pageNo = 1;
  361. if (pageSize == null || pageSize < 0 || pageSize > 10) pageSize = 10;
  362. Map<String,Object> params=new HashMap<String,Object>();
  363. params.put("uid", TokenManager.getUserId());
  364. // params.put("uid", "1180fa62-7c42-44be-bc41-5583814d69f4");
  365. return (Pagination<MyCollection>) findPage("myCollectionProjectList", "myCollectionProjectCount", params, pageNo, pageSize);
  366. }
  367. @Override
  368. public List<makeMoneyCategoryListBo> makeMoneyCategoryList() {
  369. List<makeMoneyCategoryListBo> l=new ArrayList<makeMoneyCategoryListBo>();
  370. //所属模块 0科技服务 1知识产权服务 2高新技术企业服务 3军民融合 4科技咨询 5科技项目
  371. l.add(new makeMoneyCategoryListBo(2,"高新技术企业服务"));
  372. l.add(new makeMoneyCategoryListBo(3,"军民融合"));
  373. l.add(new makeMoneyCategoryListBo(4,"科技咨询"));
  374. l.add(new makeMoneyCategoryListBo(5,"科技项目"));
  375. for (makeMoneyCategoryListBo m : l) {
  376. m.setList(getCategoryBoList(m.getModule()));
  377. }
  378. return l;
  379. }
  380. @SuppressWarnings("unchecked")
  381. @Override
  382. public Pagination<MyCollection> recommendedApplication(Integer type,Integer pageNo, Integer pageSize) {
  383. Map<String,Object> params=new HashMap<String,Object>();
  384. if (null!=type)params.put("type", type);
  385. return (Pagination<MyCollection>) findPage("recommendedApplicationList", "recommendedApplicationCount", params, pageNo, pageSize);
  386. }
  387. @Override
  388. public List<JtBusinessCategory> getCategoryByModule(Integer module) {
  389. return jtBusinessCategoryMapper.getCategoryByModule(module);
  390. }
  391. @Override
  392. public List<JtBusinessProject> getKJListByIds(Integer module,
  393. Integer isHost, Integer size) {
  394. return jtBusinessProjectMapper.getKJListByIds( module, isHost, size);
  395. }
  396. }