CompareItemData.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "CompareItemData.h"
  2. /* 初始化 */
  3. bool CompareItemDataManager::init()
  4. {
  5. if(m_logger == nullptr)
  6. {
  7. m_logger = spdlog::get("CompareItemData");
  8. if(m_logger == nullptr)
  9. {
  10. fmt::print("CompareItemDataManager: 初始化日志失败");
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. /* 添加一个对比项 */
  17. bool CompareItemDataManager::addCompareItem(const CompareItemInfo_t& item)
  18. {
  19. if(isCompareItemExist(item.nID))
  20. {
  21. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 已经存在,无法添加", item.nID);
  22. return false;
  23. }
  24. m_listCompareItems.append(item);
  25. return true;
  26. }
  27. /* 根据对比项ID删除一个对比项 */
  28. bool CompareItemDataManager::removeCompareItem(int nID)
  29. {
  30. for(auto it = m_listCompareItems.begin(); it != m_listCompareItems.end(); ++it)
  31. {
  32. if(it->nID == nID)
  33. {
  34. m_listCompareItems.erase(it);
  35. return true;
  36. }
  37. }
  38. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法删除", nID);
  39. return false;
  40. }
  41. /* 通过一个ID查找一个对比项 */
  42. CompareItemInfo_t CompareItemDataManager::findCompareItemByID(int nID) const
  43. {
  44. for(const auto& compareItem : m_listCompareItems)
  45. {
  46. if(compareItem.nID == nID)
  47. {
  48. return compareItem;
  49. }
  50. }
  51. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在", nID);
  52. return CompareItemInfo_t(); // 返回一个默认构造的对比项
  53. }
  54. /* 通过一个ID判断该对比项是否存在 */
  55. bool CompareItemDataManager::isCompareItemExist(int nID) const
  56. {
  57. for(const auto& compareItem : m_listCompareItems)
  58. {
  59. if(compareItem.nID == nID)
  60. {
  61. return true;
  62. }
  63. }
  64. return false;
  65. }
  66. /* 修改一个对比项 */
  67. bool CompareItemDataManager::modifyCompareItem(const CompareItemInfo_t& item)
  68. {
  69. for(auto& compareItem : m_listCompareItems)
  70. {
  71. if(compareItem.nID == item.nID)
  72. {
  73. compareItem = item; // 使用赋值运算符更新对比项
  74. return true;
  75. }
  76. }
  77. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法修改", item.nID);
  78. return false;
  79. }
  80. /* 获取一个未使用的对比项ID */
  81. int CompareItemDataManager::getUnusedCompareItemID() const
  82. {
  83. int nID = 1; // 从1开始
  84. while(isCompareItemExist(nID))
  85. {
  86. ++nID;
  87. }
  88. return nID;
  89. }