ad6fbeacd4761cc56cd3fadfb19edba4e5a1170a.svn-base 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. package com.chinacreator.videoalliance.order.service;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import org.apache.commons.beanutils.BeanUtils;
  7. import org.apache.log4j.Logger;
  8. import com.chinacreator.cache.CacheManager;
  9. import com.chinacreator.cache.ICache;
  10. import com.chinacreator.cache.process.OrderInfo;
  11. import com.chinacreator.common.support.util.SpringContextUtil;
  12. import com.chinacreator.videoalliance.common.bean.CPInfo;
  13. import com.chinacreator.videoalliance.common.dao.CPDao;
  14. import com.chinacreator.videoalliance.order.bean.SpCpInfo;
  15. import com.chinacreator.videoalliance.order.dao.OrderCacheDao;
  16. import com.chinacreator.videoalliance.order.dao.OrderLogDao;
  17. import com.chinacreator.videoalliance.order.dao.SpCpDao;
  18. public class CacheOrderService implements Runnable{
  19. private static Logger logger = Logger.getLogger(CacheOrderService.class);
  20. private static final String CATALOG = "order";
  21. private OrderLogDao orderLogDao;
  22. private OrderCacheDao orderCacheDao;
  23. private SpCpDao spcpDao;
  24. private List<String> users;
  25. public CacheOrderService(List<String> users) {
  26. this.users = users;
  27. orderLogDao = SpringContextUtil.getBean(OrderLogDao.class);
  28. orderCacheDao = SpringContextUtil.getBean(OrderCacheDao.class);
  29. spcpDao = SpringContextUtil.getBean(SpCpDao.class);
  30. }
  31. public void run() {
  32. ICache cache = null;
  33. try {
  34. if(users != null && users.size() > 0) {
  35. cache = CacheManager.getInstance().getCache();
  36. int index = 0;
  37. for(String userid : users) {
  38. doCache(userid, cache);
  39. if(logger.isDebugEnabled()) {
  40. logger.debug("[" + (++index) + "/" + users.size() + "]");
  41. }
  42. }
  43. }
  44. } catch (Exception e) {
  45. logger.error("添加缓存失败", e);
  46. try {
  47. orderLogDao.addCacheLog("order", null, e.getMessage());
  48. } catch (Exception e1) {}
  49. } finally {
  50. if(cache != null) {
  51. cache.doRelease();
  52. }
  53. }
  54. }
  55. public void doCache(String userid, ICache cache) throws SQLException {
  56. try {
  57. List<OrderInfo> orderInfos = orderCacheDao.queryUserOrders(userid);
  58. if(orderInfos == null || orderInfos.size() == 0) {
  59. cache.remove(CATALOG, userid);
  60. } else {
  61. List<OrderInfo> newOrderInfos = new ArrayList<OrderInfo>();
  62. for(OrderInfo orderInfo : orderInfos) {
  63. if(orderInfo.getType().equals("2")) {
  64. List<SpCpInfo> spCpBeans = spcpDao.querySpCps(orderInfo.getProductid());
  65. for(SpCpInfo spCpBean : spCpBeans) {
  66. OrderInfo newOrderInfo = (OrderInfo) BeanUtils.cloneBean(orderInfo);
  67. newOrderInfo.setCpid(spCpBean.getCpid());
  68. newOrderInfo.setSpid(spCpBean.getProductid());
  69. CPInfo cpInfo = SpringContextUtil.getBean(CPDao.class).findById(spCpBean.getCpid());
  70. if(cpInfo != null) {
  71. newOrderInfo.setSpid(cpInfo.getSdspid());
  72. }
  73. newOrderInfos.add(newOrderInfo);
  74. }
  75. }
  76. newOrderInfos.add(orderInfo);
  77. }
  78. cache.set(CATALOG, userid, newOrderInfos);
  79. }
  80. orderCacheDao.updateCacheStatus(userid, 0);
  81. } catch (Exception e) {
  82. logger.error("添加缓存失败", e);
  83. orderCacheDao.updateCacheStatus(userid, 1);
  84. orderLogDao.addCacheLog("order", userid, e.getMessage());
  85. }
  86. }
  87. public void doCache(String userid) throws SQLException {
  88. ICache cache = null;
  89. try {
  90. cache = CacheManager.getInstance().getCache();
  91. doCache(userid, cache);
  92. } finally {
  93. if(cache != null) {
  94. cache.doRelease();
  95. }
  96. }
  97. }
  98. }
  99. */