AchievementServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  1. package com.goafanti.achievement.service.impl;
  2. import java.text.ParseException;
  3. import java.util.ArrayList;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.UUID;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.cache.annotation.CacheEvict;
  16. import org.springframework.cache.annotation.Cacheable;
  17. import org.springframework.stereotype.Service;
  18. import com.goafanti.achievement.bo.AchievementImportBo;
  19. import com.goafanti.achievement.bo.AchievementListBo;
  20. import com.goafanti.achievement.bo.AchievementOrgOwnerDetailBo;
  21. import com.goafanti.achievement.bo.AchievementPartnerListBo;
  22. import com.goafanti.achievement.bo.AchievementUserOwnerDetailBo;
  23. import com.goafanti.achievement.service.AchievementService;
  24. import com.goafanti.common.constant.AFTConstants;
  25. import com.goafanti.common.dao.AchievementDemandCountMapper;
  26. import com.goafanti.common.dao.AchievementDemandMapper;
  27. import com.goafanti.common.dao.AchievementKeywordMapper;
  28. import com.goafanti.common.dao.AchievementMapper;
  29. import com.goafanti.common.dao.DemandKeywordMapper;
  30. import com.goafanti.common.dao.NoticeMapper;
  31. import com.goafanti.common.dao.OrganizationIdentityMapper;
  32. import com.goafanti.common.dao.UserIdentityMapper;
  33. import com.goafanti.common.dao.UserRoleMapper;
  34. import com.goafanti.common.enums.AchievementAuditStatus;
  35. import com.goafanti.common.enums.AchievementReleaseStatus;
  36. import com.goafanti.common.enums.AchievementSwitchSign;
  37. import com.goafanti.common.enums.DeleteStatus;
  38. import com.goafanti.common.enums.DemandAuditStatus;
  39. import com.goafanti.common.enums.DemandReleaseStatus;
  40. import com.goafanti.common.enums.NoticeReadStatus;
  41. import com.goafanti.common.enums.NoticeStatus;
  42. import com.goafanti.common.enums.UserType;
  43. import com.goafanti.common.model.Achievement;
  44. import com.goafanti.common.model.AchievementDemand;
  45. import com.goafanti.common.model.AchievementDemandCount;
  46. import com.goafanti.common.model.AchievementKeyword;
  47. import com.goafanti.common.model.Admin;
  48. import com.goafanti.common.model.Notice;
  49. import com.goafanti.common.model.OrganizationIdentity;
  50. import com.goafanti.common.model.UserIdentity;
  51. import com.goafanti.common.utils.DateUtils;
  52. import com.goafanti.common.utils.LoggerUtils;
  53. import com.goafanti.core.mybatis.BaseMybatisDao;
  54. import com.goafanti.core.mybatis.page.Pagination;
  55. import com.goafanti.core.shiro.token.TokenManager;
  56. import com.goafanti.demand.bo.DemandAchievementListBo;
  57. import com.goafanti.portal.bo.AchievementDetailBo;
  58. import com.goafanti.portal.bo.AchievementPortalDetailBo;
  59. import com.goafanti.portal.bo.AchievementPortalSimilarListBo;
  60. import com.goafanti.portal.bo.AchievementSearchListBo;
  61. import com.goafanti.portal.bo.BoutiqueListBo;
  62. import com.goafanti.portal.bo.InternationalListBo;
  63. @Service
  64. public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> implements AchievementService {
  65. @Autowired
  66. private AchievementMapper achievementMapper;
  67. @Autowired
  68. private UserRoleMapper userRoleMapper;
  69. @Autowired
  70. private NoticeMapper noticeMapper;
  71. @Autowired
  72. private AchievementKeywordMapper achievementKeywordMapper;
  73. @Autowired
  74. private AchievementDemandMapper achievementDemandMapper;
  75. @Autowired
  76. private DemandKeywordMapper demandKeywordMapper;
  77. @Autowired
  78. private AchievementDemandCountMapper achievementDemandCountMapper;
  79. @Autowired
  80. private UserIdentityMapper userIdentityMapper;
  81. @Autowired
  82. private OrganizationIdentityMapper organizationIdentityMapper;
  83. private static final Logger logger = LoggerFactory.getLogger(AchievementServiceImpl.class);
  84. @SuppressWarnings("unchecked")
  85. @Override
  86. public Pagination<AchievementListBo> listUserOwnerAchievement(String username, String ownerName, String ownerId,
  87. Integer auditStatus, Integer serialNumber, String name, String keyword, Integer category, Integer status,
  88. String releaseDateStartDate, String releaseDateEndDate, Integer releaseStatus, Integer pNo, Integer pSize,
  89. Integer boutique, Integer hot) {
  90. Map<String, Object> params = disposeParams(username, ownerName, ownerId, auditStatus, serialNumber, name, keyword, category, status,
  91. releaseDateStartDate, releaseDateEndDate, releaseStatus, UserType.ORGANIZATION.getCode(),
  92. boutique, hot,TokenManager.getAdminId());
  93. if (pNo == null || pNo < 0) {
  94. pNo = 1;
  95. }
  96. if (pSize == null || pSize < 0 || pSize > 10) {
  97. pSize = 10;
  98. }
  99. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN) && !TokenManager.hasRole(AFTConstants.AUDITORADMIN)) {
  100. params.put("adminId", TokenManager.getAdminId());
  101. }
  102. return (Pagination<AchievementListBo>) findPage("findUserOwnerAchievementListByPage",
  103. "findUserOwnerAchievementCount",params,
  104. pNo, pSize);
  105. }
  106. @SuppressWarnings("unchecked")
  107. @Override
  108. public Pagination<AchievementListBo> listOrgOwnerAchievement(String unitName, String ownerName, String ownerId,
  109. Integer auditStatus, Integer serialNumber, String name, String keyword, Integer category, Integer status,
  110. String releaseDateStartDate, String releaseDateEndDate, Integer releaseStatus, Integer pNo, Integer pSize,
  111. Integer boutique, Integer hot) {
  112. Map<String, Object> params = disposeParams(unitName, ownerName, ownerId, auditStatus, serialNumber, name, keyword, category, status,
  113. releaseDateStartDate, releaseDateEndDate, releaseStatus, UserType.ORGANIZATION.getCode(),
  114. boutique, hot,TokenManager.getAdminId());
  115. if (pNo == null || pNo < 0) {
  116. pNo = 1;
  117. }
  118. if (pSize == null || pSize < 0 || pSize > 10) {
  119. pSize = 10;
  120. }
  121. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN) && !TokenManager.hasRole(AFTConstants.AUDITORADMIN)) {
  122. params.put("adminId", TokenManager.getAdminId());
  123. }
  124. return (Pagination<AchievementListBo>) findPage("findOrgOwnerAchievementListByPage",
  125. "findOrgOwnerAchievementCount",params,pNo, pSize);
  126. }
  127. @Override
  128. public void saveAchievement(Achievement a, String[] keywords) {
  129. a.setId(UUID.randomUUID().toString());
  130. a.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  131. Calendar now = Calendar.getInstance();
  132. now.set(Calendar.MILLISECOND, 0);
  133. if (TokenManager.getToken() instanceof Admin) {
  134. a.setTechBrokerId(TokenManager.getAdminId());
  135. }
  136. a.setReleaseStatus(AchievementReleaseStatus.UNRELEASE.getCode());
  137. if (AchievementAuditStatus.SUBMIT.getCode().equals(a.getAuditStatus())) {
  138. a.setAuditStatus(DemandAuditStatus.INAUDIT.getCode());
  139. createAuditorNotice(a);
  140. } else {
  141. a.setAuditStatus(AchievementAuditStatus.CREATE.getCode());
  142. }
  143. a.setCreateTime(now.getTime());
  144. achievementMapper.insert(a);
  145. disposeAchievementKeyword(keywords, a, false);
  146. }
  147. @Override
  148. public int updateAchievement(Achievement a, String[] keywords, Integer switchSign) {
  149. if (AchievementAuditStatus.SUBMIT.getCode().equals(a.getAuditStatus())) {
  150. a.setAuditStatus(DemandAuditStatus.INAUDIT.getCode());
  151. createAuditorNotice(a);
  152. }
  153. disposeAchievementKeyword(keywords, a, true);
  154. achievementMapper.updateByPrimaryKeySelective(a);
  155. if (null != switchSign && AchievementSwitchSign.CLOSE.getCode().equals(switchSign)) {
  156. achievementMapper.updateOwnerId(a.getId());
  157. }
  158. return 1;
  159. }
  160. @Override
  161. public Achievement selectByPrimaryKey(String id) {
  162. return achievementMapper.selectByPrimaryKey(id);
  163. }
  164. @Override
  165. public int deleteByPrimaryKey(List<String> id) {
  166. achievementKeywordMapper.batchDeleteByAchievementIds(id);
  167. achievementDemandMapper.batchDeleteByAchievementIds(id);
  168. for (String s : id) {
  169. Achievement a = achievementMapper.selectByPrimaryKey(s);
  170. if (null != a && AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  171. && StringUtils.isNotBlank(a.getOwnerId())) {
  172. AchievementDemandCount adc = achievementDemandCountMapper.selectByUid(a.getOwnerId());
  173. if (null != adc) {
  174. adc.setAchievementCount(adc.getAchievementCount() - 1);
  175. if (adc.getAchievementCount() < 0) {
  176. adc.setAchievementCount(0);
  177. }
  178. achievementDemandCountMapper.updateByPrimaryKeySelective(adc);
  179. }
  180. }
  181. }
  182. return achievementMapper.batchDeleteByPrimaryKey(id);
  183. }
  184. @SuppressWarnings("unchecked")
  185. @Override
  186. public Pagination<AchievementListBo> listUserAchievement(Integer auditStatus, Integer serialNumber, String name,
  187. String keyword, Integer category, Integer ownerType, Integer status, String releaseDateStartDate,
  188. String releaseDateEndDate, Integer releaseStatus, Integer pNo, Integer pSize) {
  189. if (pNo == null || pNo < 0) {
  190. pNo = 1;
  191. }
  192. if (pSize == null || pSize < 0 || pSize > 10) {
  193. pSize = 10;
  194. }
  195. return (Pagination<AchievementListBo>) findPage("findAchievementListByPage", "findAchievementCount",
  196. disposeParams(null, null, TokenManager.getUserId(), auditStatus, serialNumber, name, keyword, category,
  197. status, releaseDateStartDate, releaseDateEndDate, releaseStatus, null, null, null,TokenManager.getAdminId()),
  198. pNo, pSize);
  199. }
  200. private Map<String, Object> disposeParams(String username, String ownerName, String ownerId, Integer auditStatus,
  201. Integer serialNumber, String name, String keyword, Integer category, Integer status,
  202. String releaseDateStartDate, String releaseDateEndDate, Integer releaseStatus, Integer type,
  203. Integer boutique, Integer hot,String techBrokerId) {
  204. Map<String, Object> params = new HashMap<>();
  205. Date rStart = null;
  206. Date rEnd = null;
  207. if (!StringUtils.isBlank(releaseDateStartDate)) {
  208. try {
  209. rStart = DateUtils.parseDate(releaseDateStartDate, AFTConstants.YYYYMMDD);
  210. } catch (ParseException e) {
  211. }
  212. }
  213. if (!StringUtils.isBlank(releaseDateEndDate)) {
  214. try {
  215. rEnd = DateUtils.addDays(DateUtils.parseDate(releaseDateEndDate, AFTConstants.YYYYMMDD), 1);
  216. } catch (ParseException e) {
  217. }
  218. }
  219. if (StringUtils.isNotBlank(ownerName)) {
  220. params.put("ownerName", ownerName);
  221. }
  222. if (null != type && StringUtils.isNotBlank(username)) {
  223. if (UserType.PERSONAL.getCode().equals(type)) {
  224. params.put("username", username);
  225. } else {
  226. params.put("unitName", username);
  227. }
  228. }
  229. if (null != rStart) {
  230. params.put("rStart", rStart);
  231. }
  232. if (null != rEnd) {
  233. params.put("rEnd", rEnd);
  234. }
  235. if (null != auditStatus) {
  236. params.put("auditStatus", auditStatus);
  237. }
  238. if (!StringUtils.isBlank(ownerId)) {
  239. params.put("ownerId", ownerId);
  240. }
  241. if (null != serialNumber) {
  242. params.put("serialNumber", serialNumber);
  243. }
  244. if (!StringUtils.isBlank(name)) {
  245. params.put("name", name);
  246. }
  247. if (!StringUtils.isBlank(keyword)) {
  248. params.put("keyword", keyword);
  249. }
  250. if (null != category) {
  251. params.put("category", category);
  252. }
  253. if (null != status) {
  254. params.put("status", status);
  255. }
  256. if (null != releaseStatus) {
  257. params.put("releaseStatus", releaseStatus);
  258. }
  259. if (null != boutique) {
  260. params.put("boutique", boutique);
  261. }
  262. if (null != hot) {
  263. params.put("hot", hot);
  264. }
  265. if (TokenManager.hasRole(AFTConstants.TECHBROKER)) {
  266. params.put("techBrokerId", TokenManager.getAdminId());
  267. }
  268. return params;
  269. }
  270. @Override
  271. public int updateAuditAchievement(Achievement a, String techBroderId, Integer auditStatus) {
  272. a.setAuditStatus(auditStatus);
  273. if (AchievementAuditStatus.AUDITED.getCode().equals(auditStatus)) {
  274. Calendar now = Calendar.getInstance();
  275. now.set(Calendar.MILLISECOND, 0);
  276. a.setReleaseDate(now.getTime());
  277. a.setReleaseStatus(DemandReleaseStatus.RELEASED.getCode());
  278. a.setTechBrokerId(techBroderId);
  279. if (StringUtils.isNotBlank(a.getKeyword())) {
  280. String[] keywords = a.getKeyword().trim().split(",|,");
  281. disposeAchievementKeyword(keywords, a, false);
  282. }
  283. String ownerId = a.getOwnerId();
  284. if (StringUtils.isNotBlank(ownerId)) {
  285. if (UserType.PERSONAL.getCode().equals(a.getOwnerType())) {
  286. UserIdentity ui = userIdentityMapper.selectUserIdentityByUserId(ownerId);
  287. if (null != ui) {
  288. a.setOwnerName(ui.getUsername());
  289. }
  290. } else if (UserType.ORGANIZATION.getCode().equals(a.getOwnerType())) {
  291. OrganizationIdentity oi = organizationIdentityMapper.selectOrgIdentityByUserId(ownerId);
  292. if (null != oi) {
  293. a.setOwnerName(oi.getUnitName());
  294. }
  295. }
  296. AchievementDemandCount adc = achievementDemandCountMapper.selectByUid(ownerId);
  297. if (null == adc) {
  298. AchievementDemandCount achievementDemandCount = new AchievementDemandCount();
  299. achievementDemandCount.setId(UUID.randomUUID().toString());
  300. achievementDemandCount.setUid(ownerId);
  301. achievementDemandCount.setAchievementCount(AFTConstants.ACHIEVEMENT_DEMAND_FIRST_COUNT);
  302. achievementDemandCount.setDemandCount(AFTConstants.ACHIEVEMENT_DEMAND_INIT_COUNT);
  303. achievementDemandCountMapper.insert(achievementDemandCount);
  304. } else {
  305. adc.setAchievementCount(adc.getAchievementCount() + 1);
  306. achievementDemandCountMapper.updateByPrimaryKeySelective(adc);
  307. }
  308. }
  309. } else {
  310. a.setReleaseStatus(DemandReleaseStatus.UNRELEASE.getCode());
  311. }
  312. createTechBorkerNotice(a);
  313. return achievementMapper.updateByPrimaryKeySelective(a);
  314. }
  315. @Override
  316. public int updateReleaseStatus(Achievement a) {
  317. a.setAuditStatus(AchievementAuditStatus.CREATE.getCode());
  318. a.setReleaseStatus(AchievementReleaseStatus.UNRELEASE.getCode());
  319. achievementDemandMapper.deleteByAchievementId(a.getId());
  320. achievementKeywordMapper.batchDeleteByAchievementId(a.getId());
  321. achievementMapper.updateByPrimaryKeySelective(a);
  322. if (StringUtils.isNotBlank(a.getOwnerId())) {
  323. AchievementDemandCount adc = achievementDemandCountMapper.selectByUid(a.getOwnerId());
  324. if (null != adc) {
  325. adc.setAchievementCount(adc.getAchievementCount() - 1);
  326. if (adc.getAchievementCount() < 0) {
  327. adc.setAchievementCount(0);
  328. }
  329. achievementDemandCountMapper.updateByPrimaryKeySelective(adc);
  330. }
  331. }
  332. return achievementMapper.updateReleaseDate(a.getId());
  333. }
  334. @Override
  335. public AchievementUserOwnerDetailBo selectUserOwnerDetail(String id) {
  336. return achievementMapper.selectUserOwnerDetail(id);
  337. }
  338. @Override
  339. public AchievementOrgOwnerDetailBo selectOrgOwnerDetail(String id) {
  340. return achievementMapper.selectOrgOwnerDetail(id);
  341. }
  342. @Override
  343. public List<DemandAchievementListBo> selectAchievementDemandListByAchievementId(String id) {
  344. return achievementDemandMapper.selectAchievementDemandListByAchievementId(id);
  345. }
  346. @Override
  347. public void insertImport(List<AchievementImportBo> data) {
  348. if (null == data || data.isEmpty()) {
  349. return;
  350. }
  351. Achievement a = null;
  352. AchievementKeyword ak = null;
  353. List<Achievement> achievementList = new ArrayList<>();
  354. List<AchievementKeyword> AchievementKeywordList = new ArrayList<>();
  355. Calendar now = Calendar.getInstance();
  356. now.set(Calendar.MILLISECOND, 0);
  357. String techBrokerId = TokenManager.getAdminId();
  358. for (AchievementImportBo bo : data) {
  359. a = new Achievement();
  360. BeanUtils.copyProperties(bo, a);
  361. a.setId(UUID.randomUUID().toString());
  362. a.setDeletedSign(DeleteStatus.UNDELETE.getCode());
  363. a.setCreateTime(now.getTime());
  364. a.setAuditStatus(AchievementAuditStatus.INAUDIT.getCode());
  365. a.setReleaseStatus(AchievementReleaseStatus.UNRELEASE.getCode());
  366. a.setTechBrokerId(techBrokerId);
  367. List<String> keywordsList = bo.getKeywords();
  368. if (null != keywordsList && keywordsList.size() > 0) {
  369. for (String s : keywordsList) {
  370. if (!StringUtils.isBlank(s)) {
  371. ak = new AchievementKeyword();
  372. ak.setAchievementId(a.getId());
  373. ak.setKeyword(s.trim());
  374. ak.setId(UUID.randomUUID().toString());
  375. AchievementKeywordList.add(ak);
  376. }
  377. }
  378. }
  379. achievementList.add(a);
  380. }
  381. achievementMapper.insertBatch(achievementList);
  382. achievementKeywordMapper.insertBatch(AchievementKeywordList);
  383. }
  384. @SuppressWarnings("unchecked")
  385. @Override
  386. public Pagination<AchievementSearchListBo> listAchievementSearchList(String keyword, Integer dataCategory,
  387. Integer category, Integer fieldA, String transferMode, Integer pNo, Integer pSize, Integer dateSort,
  388. String upperPrice, String lowerPrice) {
  389. Map<String, Object> params = new HashMap<>();
  390. if (!StringUtils.isBlank(keyword)) {
  391. params.put("keyword", keyword);
  392. }
  393. if (null != dataCategory) {
  394. params.put("dataCategory", dataCategory);
  395. }
  396. if (null != category) {
  397. params.put("category", category);
  398. }
  399. if (null != fieldA) {
  400. params.put("fieldA", fieldA);
  401. }
  402. if (!StringUtils.isBlank(transferMode)) {
  403. params.put("transferMode", transferMode);
  404. }
  405. if (dateSort != null) {
  406. params.put("dateSort", dateSort);
  407. }
  408. if (upperPrice != null) {
  409. params.put("upperPrice", upperPrice);
  410. }
  411. if (lowerPrice != null) {
  412. params.put("lowerPrice", lowerPrice);
  413. }
  414. if (pNo == null || pNo < 0) {
  415. pNo = 1;
  416. }
  417. if (pSize == null || pSize < 0 || pSize > 20) {
  418. pSize = 20;
  419. }
  420. Pagination<AchievementSearchListBo> result = (Pagination<AchievementSearchListBo>) findPage(
  421. "findSearchAchievementListByPage", "findSearchAchievementCount", params, pNo, pSize);
  422. List<AchievementSearchListBo> AchievementSearchList = (List<AchievementSearchListBo>) result.getList();
  423. for (int i = 0; i < AchievementSearchList.size(); i++) {
  424. String introduction = AchievementSearchList.get(i).getIntroduction();
  425. if (introduction != null)
  426. introduction = introduction.length() > 20 ? introduction.substring(0, 20) + "... ..." : introduction;
  427. }
  428. return result;
  429. }
  430. @Override
  431. public AchievementDetailBo selectAchievementSearchDetail(String uid, String id) {
  432. return achievementMapper.selectAchievementSearchDetail(uid, id);
  433. }
  434. private void createTechBorkerNotice(Achievement a) {
  435. noticeMapper.insert(disposeNotice(a, null));
  436. }
  437. // 给所有审核员发送审核通知
  438. private void createAuditorNotice(Achievement a) {
  439. List<String> ids = userRoleMapper.listAuditor();
  440. List<Notice> list = new ArrayList<>();
  441. if (null != ids && ids.size() > 0) {
  442. for (String s : ids) {
  443. list.add(disposeNotice(a, s));
  444. }
  445. noticeMapper.insertBatch(list);
  446. }
  447. }
  448. private Notice disposeNotice(Achievement a, String aid) {
  449. Notice n = new Notice();
  450. Calendar now = Calendar.getInstance();
  451. now.set(Calendar.MILLISECOND, 0);
  452. n.setId(UUID.randomUUID().toString());
  453. n.setCreateTime(now.getTime());
  454. n.setReaded(NoticeReadStatus.UNREAD.getCode());
  455. n.setRid(a.getId());
  456. if (StringUtils.isBlank(aid)) {
  457. n.setAid(a.getTechBrokerId());
  458. if (UserType.PERSONAL.getCode().equals(a.getOwnerType())) {
  459. n.setContent("编号" + a.getSerialNumber() + NoticeStatus.PERSONALACHIEVEMENTT.getDesc() + " "
  460. + (AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  461. ? AchievementAuditStatus.AUDITED.getDesc()
  462. : AchievementAuditStatus.UNAUDITED.getDesc()));
  463. n.setNoticeType(NoticeStatus.PERSONALACHIEVEMENTT.getCode());
  464. } else if (UserType.ORGANIZATION.getCode().equals(a.getOwnerType())) {
  465. n.setContent("编号" + a.getSerialNumber() + NoticeStatus.ORGANIZATIONACHIEVEMENT.getDesc() + " "
  466. + (AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
  467. ? AchievementAuditStatus.AUDITED.getDesc()
  468. : AchievementAuditStatus.UNAUDITED.getDesc()));
  469. n.setNoticeType(NoticeStatus.ORGANIZATIONACHIEVEMENT.getCode());
  470. }
  471. } else {
  472. n.setAid(aid);
  473. if (UserType.PERSONAL.getCode().equals(a.getOwnerType())) {
  474. n.setContent(
  475. NoticeStatus.PERSONALACHIEVEMENTT.getDesc() + " " + AchievementAuditStatus.SUBMIT.getDesc());
  476. n.setNoticeType(NoticeStatus.PERSONALACHIEVEMENTT.getCode());
  477. } else if (UserType.ORGANIZATION.getCode().equals(a.getOwnerType())) {
  478. n.setContent(
  479. NoticeStatus.ORGANIZATIONACHIEVEMENT.getDesc() + " " + AchievementAuditStatus.SUBMIT.getDesc());
  480. n.setNoticeType(NoticeStatus.ORGANIZATIONACHIEVEMENT.getCode());
  481. }
  482. }
  483. return n;
  484. }
  485. private void disposeAchievementKeyword(String[] keywords, Achievement a, boolean delete) {
  486. if (null != keywords && keywords.length > 0) {
  487. if (delete) {
  488. achievementKeywordMapper.batchDeleteByAchievementId(a.getId());
  489. }
  490. List<AchievementKeyword> list = new ArrayList<>();
  491. AchievementKeyword ak = null;
  492. for (int i = 0; i < keywords.length; i++) {
  493. ak = new AchievementKeyword();
  494. ak.setId(UUID.randomUUID().toString());
  495. ak.setAchievementId(a.getId());
  496. ak.setKeyword(keywords[i].trim());
  497. list.add(ak);
  498. }
  499. achievementKeywordMapper.insertBatch(list);
  500. }
  501. }
  502. @Override
  503. public int updateMatchDemand(Achievement a) {
  504. achievementDemandMapper.deleteByAchievementId(a.getId());// 删除之前匹配单
  505. List<AchievementKeyword> achievement = achievementKeywordMapper.selectKeywordsByAchievementId(a.getId());
  506. if (null != achievement && achievement.size() > 0) {
  507. List<String> keyword = new ArrayList<>();
  508. for (AchievementKeyword k : achievement) {
  509. if (!StringUtils.isBlank(k.getKeyword())) {
  510. keyword.add(k.getKeyword());
  511. }
  512. }
  513. List<AchievementDemand> list = demandKeywordMapper.selectAchievementDemand(keyword);
  514. if (null != list && list.size() > 0) {
  515. for (AchievementDemand ad : list) {
  516. ad.setAchievementId(a.getId());
  517. }
  518. return achievementDemandMapper.insertBatch(list);
  519. }
  520. }
  521. return 0;
  522. }
  523. @SuppressWarnings("unchecked")
  524. @Override
  525. public Pagination<AchievementPartnerListBo> listPartnerAchievement(String ownerId, Integer pNo, Integer pSize) {
  526. Map<String, Object> params = new HashMap<>();
  527. params.put("ownerId", ownerId);
  528. if (pNo == null || pNo < 0) {
  529. pNo = 1;
  530. }
  531. if (pSize == null || pSize < 0 || pSize > 10) {
  532. pSize = 10;
  533. }
  534. return (Pagination<AchievementPartnerListBo>) findPage("findPartnerAchievementListByPage",
  535. "findPartnerAchievementCount", params, pNo, pSize);
  536. }
  537. @Override
  538. public AchievementPortalDetailBo findUserPortalAchievementDetail(String id) {
  539. return achievementMapper.findUserPortalAchievementDetail(id, TokenManager.getUserId());
  540. }
  541. @Override
  542. public AchievementPortalDetailBo findOrgPortalAchievementDetail(String id) {
  543. return achievementMapper.findOrgPortalAchievementDetail(id, TokenManager.getUserId());
  544. }
  545. @Override
  546. public List<AchievementPortalSimilarListBo> findByFieldA(Integer fieldA, String id, Integer type) {
  547. if (UserType.PERSONAL.getCode().equals(type)) {
  548. return achievementMapper.findUserPortalSimilarByFieldA(fieldA, id);
  549. } else if (UserType.ORGANIZATION.getCode().equals(type)) {
  550. return achievementMapper.findOrgPortalSimilarByFieldA(fieldA, id);
  551. }
  552. return null;
  553. }
  554. @Override
  555. public int updateByPrimaryKeySelective(Achievement a) {
  556. return achievementMapper.updateByPrimaryKey(a);
  557. }
  558. @Override
  559. @Cacheable(value = "internationalAchievementList", key = "'internationalAchievementList:'+#internationalAchievementCacheKey")
  560. public List<InternationalListBo> selectInternationalAchievement(Integer internationalAchievementCacheKey) {
  561. return achievementMapper.selectInternationalAchievement();
  562. }
  563. @CacheEvict(value = "internationalAchievementList", allEntries = true)
  564. public void cleanInternationalAchievement() {
  565. LoggerUtils.debug(logger, "清除国际化技术列表");
  566. }
  567. @Override
  568. public Achievement selectAchievementDetail(String id) {
  569. return achievementMapper.selectByPrimaryKey(id);
  570. }
  571. @SuppressWarnings("unchecked")
  572. @Override
  573. public Pagination<BoutiqueListBo> boutiqueSearchList(Integer dataCategory, Integer category, Integer fieldA,
  574. Integer pNo, Integer pSize) {
  575. Map<String, Object> params = new HashMap<>();
  576. if (null != dataCategory) {
  577. params.put("dataCategory", dataCategory);
  578. }
  579. if (null != category) {
  580. params.put("category", category);
  581. }
  582. if (null != fieldA) {
  583. params.put("fieldA", fieldA);
  584. }
  585. return (Pagination<BoutiqueListBo>) findPage("findBoutiqueListByPage", "findBoutiqueCount", params, pNo, pSize);
  586. }
  587. @Override
  588. public List<AchievementListBo> getAchievement(Integer boutique) {
  589. return achievementMapper.listAchievement();
  590. }
  591. @Override
  592. public List<AchievementListBo> getPerhapLike() {
  593. return achievementMapper.selectCsutomerLike(); //查询出猜你喜欢
  594. }
  595. @Override
  596. public List<AchievementPartnerListBo> findPartnerAchievementList(String uid) {
  597. return achievementMapper.findPartnerAchievementListByPage(uid);
  598. }
  599. }