@Transactional public void publish2Item(Long userId, Long activityId, Long itemNumIid, String publishHtml) throws TaobaoAccessControlException, TaobaoEnhancedApiException, TaobaoSessionExpiredException { PosterRecommendPublishItem publishItem = posterRecommendPublishItemDAO.selectByUserIdAndActivityIdAndItemNumIidAndStatus( userId, activityId, itemNumIid, ImmutableList.of( PUBLISH_ITEM_STATUS_WAITING_PUBLISH, PUBLISH_ITEM_STATUS_PUBLISHED_FAILED, PUBLISH_ITEM_STATUS_UNPUBLISHED_SUCCESSFULLY, PUBLISH_ITEM_STATUS_UNPUBLISHED_FAILED)); if (null == publishItem) { return; } // 更新详情页 Item item = taobaoApiCache.getItem(userId, itemNumIid); // 1 备份 String backupDesc = item.getDesc(); // important String updatedDesc = PublishUtils.addHtml2DetailPage( publishItem.getDetailPagePosition(), HTML_TAG_RECOMMEND, activityId, publishHtml, backupDesc); // 插入详情页备份 PosterRecommendPublishItemDetailPage posterRecommendPublishItemDetailPage = new PosterRecommendPublishItemDetailPage(); posterRecommendPublishItemDetailPage.setUserId(userId); posterRecommendPublishItemDetailPage.setActivityId(activityId); posterRecommendPublishItemDetailPage.setItemNumIid(item.getNumIid()); posterRecommendPublishItemDetailPage.setItemTitle(item.getTitle()); posterRecommendPublishItemDetailPage.setItemPrice(new BigDecimal(item.getPrice())); posterRecommendPublishItemDetailPage.setItemPicUrl(item.getPicUrl()); posterRecommendPublishItemDetailPage.setBackupDesc(backupDesc); posterRecommendPublishItemDetailPage.setDesc(updatedDesc); posterRecommendPublishItemDetailPage.setAddTime(appService.getLocalSystemTime().toDate()); try { if (updatedDesc.equals(backupDesc)) { ItemUpdateRequest request = new ItemUpdateRequest(); request.setNumIid(itemNumIid); request.setDesc(updatedDesc); taobaoApiItemService.updateItem(userId, request); taobaoApiCache.invalidItem(itemNumIid); } posterRecommendPublishItemDetailPage.setStatus(DETAIL_PAGE_STATUS_NORMAL); publishSuccessful(userId, activityId, itemNumIid); } catch (BaseTaobaoApiException e) { publishFailed(userId, activityId, itemNumIid); posterRecommendPublishItemDetailPage.setStatus(DETAIL_PAGE_STATUS_PUBLISH_FAILED); throw e; } finally { posterRecommendPublishItemDetailPageDAO.insertSelective(posterRecommendPublishItemDetailPage); } }