JtBusinessServiceImpl.java 16 KB

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