Commit 32cca12cd2a9cc8db4d4eb8c256045f8b034bab5

Authored by puhui999
1 parent 217a31a1

fix:seckillTime => seckillConfig

Showing 26 changed files with 949 additions and 554 deletions
sql/dm/ruoyi-vue-pro-dm8.sql
... ... @@ -1797,27 +1797,112 @@ INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT"
1797 1797 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2046,'满减送活动关闭','promotion:reward-activity:close',3,5,2041,'','','',null,0,1,1,1,'1','2022-11-05 10:42:53','1','2022-11-05 10:42:53',0);
1798 1798 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2047,'限时折扣活动','',2,7,2030,'discount-activity','time','mall/promotion/discountActivity/index','PromotionDiscountActivity',0,1,1,1,'','2022-11-05 17:12:15','1','2023-04-08 11:45:44',0);
1799 1799 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2048,'限时折扣活动查询','promotion:discount-activity:query',3,1,2047,'','','',null,0,1,1,1,'','2022-11-05 17:12:15','','2022-11-05 17:12:15',0);
1800   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2049,'限时折扣活动创建','promotion:discount-activity:create',3,2,2047,'','','',null,0,1,1,1,'','2022-11-05 17:12:15','','2022-11-05 17:12:15',0);
1801   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2050,'限时折扣活动更新','promotion:discount-activity:update',3,3,2047,'','','',null,0,1,1,1,'','2022-11-05 17:12:16','','2022-11-05 17:12:16',0);
1802   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2051,'限时折扣活动删除','promotion:discount-activity:delete',3,4,2047,'','','',null,0,1,1,1,'','2022-11-05 17:12:16','','2022-11-05 17:12:16',0);
1803   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2052,'限时折扣活动关闭','promotion:discount-activity:close',3,5,2047,'','','',null,0,1,1,1,'','2022-11-05 17:12:16','','2022-11-05 17:12:16',0);
1804   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2059,'秒杀活动管理','',2,0,2030,'seckill-activity','time-range','mall/promotion/seckill/seckillActivity/index','PromotionSeckillActivity',0,1,1,1,'','2022-11-06 22:24:49','1','2023-04-08 11:46:02',0);
1805   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2060,'秒杀活动查询','promotion:seckill-activity:query',3,1,2059,'','','',null,0,1,1,1,'','2022-11-06 22:24:49','','2022-11-06 22:24:49',0);
1806   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2061,'秒杀活动创建','promotion:seckill-activity:create',3,2,2059,'','','',null,0,1,1,1,'','2022-11-06 22:24:49','','2022-11-06 22:24:49',0);
1807   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2062,'秒杀活动更新','promotion:seckill-activity:update',3,3,2059,'','','',null,0,1,1,1,'','2022-11-06 22:24:49','','2022-11-06 22:24:49',0);
1808   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2063,'秒杀活动删除','promotion:seckill-activity:delete',3,4,2059,'','','',null,0,1,1,1,'','2022-11-06 22:24:49','','2022-11-06 22:24:49',0);
1809   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2064,'秒杀活动导出','promotion:seckill-activity:export',3,5,2059,'','','',null,0,1,1,1,'','2022-11-06 22:24:49','','2022-11-06 22:24:49',0);
1810   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2066,'秒杀时段管理','',2,0,2030,'seckill-time','','mall/promotion/seckill/seckillTime/index','PromotionSeckillTime',0,0,1,1,'','2022-11-15 19:46:50','1','2023-04-08 11:46:17',0);
1811   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2067,'秒杀时段查询','promotion:seckill-time:query',3,1,2066,'','','',null,0,1,1,1,'','2022-11-15 19:46:51','','2022-11-15 19:46:51',0);
1812   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2068,'秒杀时段创建','promotion:seckill-time:create',3,2,2066,'','','',null,0,1,1,1,'','2022-11-15 19:46:51','','2022-11-15 19:46:51',0);
1813   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2069,'秒杀时段更新','promotion:seckill-time:update',3,3,2066,'','','',null,0,1,1,1,'','2022-11-15 19:46:51','','2022-11-15 19:46:51',0);
1814   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2070,'秒杀时段删除','promotion:seckill-time:delete',3,4,2066,'','','',null,0,1,1,1,'','2022-11-15 19:46:51','','2022-11-15 19:46:51',0);
1815   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2071,'秒杀时段导出','promotion:seckill-time:export',3,5,2066,'','','',null,0,1,1,1,'','2022-11-15 19:46:51','','2022-11-15 19:46:51',0);
1816   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2072,'订单中心','',1,65,0,'/trade','order',null,null,0,1,1,1,'1','2022-11-19 18:57:19','1','2022-12-10 16:32:57',0);
1817   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2073,'售后退款','',2,1,2072,'trade/after-sale','education','mall/trade/afterSale/index','TradeAfterSale',0,1,1,1,'','2022-11-19 20:15:32','1','2023-04-08 11:43:19',0);
1818   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2074,'售后查询','trade:after-sale:query',3,1,2073,'','','',null,0,1,1,1,'','2022-11-19 20:15:33','1','2022-12-10 21:04:29',0);
1819   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2075,'秒杀活动关闭','promotion:sekill-activity:close',3,6,2059,'','','',null,0,1,1,1,'1','2022-11-28 20:20:15','1','2022-11-28 20:20:15',0);
1820   -INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2076,'订单列表','',2,0,2072,'trade/order','list','mall/trade/order/index','TradeOrder',0,1,1,1,'1','2022-12-10 21:05:44','1','2023-04-08 11:42:23',0);
  1800 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1801 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1802 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1803 +VALUES (2049, '限时折扣活动创建', 'promotion:discount-activity:create', 3, 2, 2047, '', '', '', null, 0, 1, 1, 1, '',
  1804 + '2022-11-05 17:12:15', '', '2022-11-05 17:12:15', 0);
  1805 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1806 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1807 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1808 +VALUES (2050, '限时折扣活动更新', 'promotion:discount-activity:update', 3, 3, 2047, '', '', '', null, 0, 1, 1, 1, '',
  1809 + '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', 0);
  1810 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1811 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1812 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1813 +VALUES (2051, '限时折扣活动删除', 'promotion:discount-activity:delete', 3, 4, 2047, '', '', '', null, 0, 1, 1, 1, '',
  1814 + '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', 0);
  1815 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1816 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1817 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1818 +VALUES (2052, '限时折扣活动关闭', 'promotion:discount-activity:close', 3, 5, 2047, '', '', '', null, 0, 1, 1, 1, '',
  1819 + '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', 0);
  1820 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1821 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1822 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1823 +VALUES (2059, '秒杀活动管理', '', 2, 0, 2030, 'seckill-activity', 'time-range',
  1824 + 'mall/promotion/seckill/seckillActivity/index', 'PromotionSeckillActivity', 0, 1, 1, 1, '',
  1825 + '2022-11-06 22:24:49', '1', '2023-04-08 11:46:02', 0);
  1826 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1827 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1828 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1829 +VALUES (2060, '秒杀活动查询', 'promotion:seckill-activity:query', 3, 1, 2059, '', '', '', null, 0, 1, 1, 1, '',
  1830 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', 0);
  1831 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1832 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1833 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1834 +VALUES (2061, '秒杀活动创建', 'promotion:seckill-activity:create', 3, 2, 2059, '', '', '', null, 0, 1, 1, 1, '',
  1835 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', 0);
  1836 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1837 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1838 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1839 +VALUES (2062, '秒杀活动更新', 'promotion:seckill-activity:update', 3, 3, 2059, '', '', '', null, 0, 1, 1, 1, '',
  1840 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', 0);
  1841 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1842 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1843 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1844 +VALUES (2063, '秒杀活动删除', 'promotion:seckill-activity:delete', 3, 4, 2059, '', '', '', null, 0, 1, 1, 1, '',
  1845 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', 0);
  1846 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1847 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1848 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1849 +VALUES (2064, '秒杀活动导出', 'promotion:seckill-activity:export', 3, 5, 2059, '', '', '', null, 0, 1, 1, 1, '',
  1850 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', 0);
  1851 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1852 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1853 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1854 +VALUES (2066, '秒杀时段管理', '', 2, 0, 2030, 'seckill-time', '', 'mall/promotion/seckill/SeckillConfig/index',
  1855 + 'PromotionSeckillConfig', 0, 0, 1, 1, '', '2022-11-15 19:46:50', '1', '2023-04-08 11:46:17', 0);
  1856 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1857 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1858 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1859 +VALUES (2067, '秒杀时段查询', 'promotion:seckill-time:query', 3, 1, 2066, '', '', '', null, 0, 1, 1, 1, '',
  1860 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', 0);
  1861 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1862 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1863 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1864 +VALUES (2068, '秒杀时段创建', 'promotion:seckill-time:create', 3, 2, 2066, '', '', '', null, 0, 1, 1, 1, '',
  1865 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', 0);
  1866 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1867 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1868 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1869 +VALUES (2069, '秒杀时段更新', 'promotion:seckill-time:update', 3, 3, 2066, '', '', '', null, 0, 1, 1, 1, '',
  1870 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', 0);
  1871 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1872 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1873 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1874 +VALUES (2070, '秒杀时段删除', 'promotion:seckill-time:delete', 3, 4, 2066, '', '', '', null, 0, 1, 1, 1, '',
  1875 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', 0);
  1876 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1877 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1878 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1879 +VALUES (2071, '秒杀时段导出', 'promotion:seckill-time:export', 3, 5, 2066, '', '', '', null, 0, 1, 1, 1, '',
  1880 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', 0);
  1881 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1882 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1883 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1884 +VALUES (2072, '订单中心', '', 1, 65, 0, '/trade', 'order', null, null, 0, 1, 1, 1, '1', '2022-11-19 18:57:19', '1',
  1885 + '2022-12-10 16:32:57', 0);
  1886 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1887 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1888 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1889 +VALUES (2073, '售后退款', '', 2, 1, 2072, 'trade/after-sale', 'education', 'mall/trade/afterSale/index',
  1890 + 'TradeAfterSale', 0, 1, 1, 1, '', '2022-11-19 20:15:32', '1', '2023-04-08 11:43:19', 0);
  1891 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1892 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1893 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1894 +VALUES (2074, '售后查询', 'trade:after-sale:query', 3, 1, 2073, '', '', '', null, 0, 1, 1, 1, '', '2022-11-19 20:15:33',
  1895 + '1', '2022-12-10 21:04:29', 0);
  1896 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1897 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1898 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1899 +VALUES (2075, '秒杀活动关闭', 'promotion:sekill-activity:close', 3, 6, 2059, '', '', '', null, 0, 1, 1, 1, '1',
  1900 + '2022-11-28 20:20:15', '1', '2022-11-28 20:20:15', 0);
  1901 +INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID", "NAME", "PERMISSION", "TYPE", "SORT", "PARENT_ID", "PATH", "ICON",
  1902 + "COMPONENT", "COMPONENT_NAME", "STATUS", "VISIBLE", "KEEP_ALIVE",
  1903 + "ALWAYS_SHOW", "CREATOR", "CREATE_TIME", "UPDATER", "UPDATE_TIME", "DELETED")
  1904 +VALUES (2076, '订单列表', '', 2, 0, 2072, 'trade/order', 'list', 'mall/trade/order/index', 'TradeOrder', 0, 1, 1, 1,
  1905 + '1', '2022-12-10 21:05:44', '1', '2023-04-08 11:42:23', 0);
1821 1906 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2077,'物流公司管理管理','',2,0,2072,'express-company','','mall/trade/expressCompany/index',null,0,1,1,1,'','2022-12-20 23:27:55','1','2022-12-20 23:36:20',0);
1822 1907 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2078,'物流公司管理查询','trade:express-company:query',3,1,2077,'','','',null,0,1,1,1,'','2022-12-20 23:27:55','','2022-12-20 23:27:55',0);
1823 1908 INSERT INTO "RUOYI_VUE_PRO"."SYSTEM_MENU"("ID","NAME","PERMISSION","TYPE","SORT","PARENT_ID","PATH","ICON","COMPONENT","COMPONENT_NAME","STATUS","VISIBLE","KEEP_ALIVE","ALWAYS_SHOW","CREATOR","CREATE_TIME","UPDATER","UPDATE_TIME","DELETED") VALUES(2079,'物流公司管理创建','trade:express-company:create',3,2,2077,'','','',null,0,1,1,1,'','2022-12-20 23:27:55','','2022-12-20 23:27:55',0);
... ...
sql/mysql/ruoyi-vue-pro.sql
... ... @@ -1980,27 +1980,112 @@ INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_i
1980 1980 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2046, '满减送活动关闭', 'promotion:reward-activity:close', 3, 5, 2041, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-11-05 10:42:53', '1', '2022-11-05 10:42:53', b'0');
1981 1981 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2047, '限时折扣活动', '', 2, 7, 2030, 'discount-activity', 'time', 'mall/promotion/discountActivity/index', 'PromotionDiscountActivity', 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '1', '2023-04-08 11:45:44', b'0');
1982 1982 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2048, '限时折扣活动查询', 'promotion:discount-activity:query', 3, 1, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '', '2022-11-05 17:12:15', b'0');
1983   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2049, '限时折扣活动创建', 'promotion:discount-activity:create', 3, 2, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:15', '', '2022-11-05 17:12:15', b'0');
1984   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2050, '限时折扣活动更新', 'promotion:discount-activity:update', 3, 3, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
1985   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2051, '限时折扣活动删除', 'promotion:discount-activity:delete', 3, 4, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
1986   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2052, '限时折扣活动关闭', 'promotion:discount-activity:close', 3, 5, 2047, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
1987   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2059, '秒杀活动管理', '', 2, 0, 2030, 'seckill-activity', 'time-range', 'mall/promotion/seckill/seckillActivity/index', 'PromotionSeckillActivity', 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2023-04-08 11:46:02', b'0');
1988   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2060, '秒杀活动查询', 'promotion:seckill-activity:query', 3, 1, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
1989   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2061, '秒杀活动创建', 'promotion:seckill-activity:create', 3, 2, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
1990   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2062, '秒杀活动更新', 'promotion:seckill-activity:update', 3, 3, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
1991   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2063, '秒杀活动删除', 'promotion:seckill-activity:delete', 3, 4, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
1992   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2064, '秒杀活动导出', 'promotion:seckill-activity:export', 3, 5, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
1993   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2066, '秒杀时段管理', '', 2, 0, 2030, 'seckill-time', '', 'mall/promotion/seckill/seckillTime/index', 'PromotionSeckillTime', 0, b'0', b'1', b'1', '', '2022-11-15 19:46:50', '1', '2023-04-08 11:46:17', b'0');
1994   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2067, '秒杀时段查询', 'promotion:seckill-time:query', 3, 1, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
1995   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2068, '秒杀时段创建', 'promotion:seckill-time:create', 3, 2, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
1996   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2069, '秒杀时段更新', 'promotion:seckill-time:update', 3, 3, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
1997   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2070, '秒杀时段删除', 'promotion:seckill-time:delete', 3, 4, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
1998   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2071, '秒杀时段导出', 'promotion:seckill-time:export', 3, 5, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
1999   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2072, '订单中心', '', 1, 65, 0, '/trade', 'order', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-11-19 18:57:19', '1', '2022-12-10 16:32:57', b'0');
2000   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2073, '售后退款', '', 2, 1, 2072, 'trade/after-sale', 'education', 'mall/trade/afterSale/index', 'TradeAfterSale', 0, b'1', b'1', b'1', '', '2022-11-19 20:15:32', '1', '2023-04-08 11:43:19', b'0');
2001   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2074, '售后查询', 'trade:after-sale:query', 3, 1, 2073, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-19 20:15:33', '1', '2022-12-10 21:04:29', b'0');
2002   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2075, '秒杀活动关闭', 'promotion:sekill-activity:close', 3, 6, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '1', '2022-11-28 20:20:15', '1', '2022-11-28 20:20:15', b'0');
2003   -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2076, '订单列表', '', 2, 0, 2072, 'trade/order', 'list', 'mall/trade/order/index', 'TradeOrder', 0, b'1', b'1', b'1', '1', '2022-12-10 21:05:44', '1', '2023-04-08 11:42:23', b'0');
  1983 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  1984 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  1985 + `updater`, `update_time`, `deleted`)
  1986 +VALUES (2049, '限时折扣活动创建', 'promotion:discount-activity:create', 3, 2, 2047, '', '', '', NULL, 0, b'1', b'1',
  1987 + b'1', '', '2022-11-05 17:12:15', '', '2022-11-05 17:12:15', b'0');
  1988 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  1989 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  1990 + `updater`, `update_time`, `deleted`)
  1991 +VALUES (2050, '限时折扣活动更新', 'promotion:discount-activity:update', 3, 3, 2047, '', '', '', NULL, 0, b'1', b'1',
  1992 + b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
  1993 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  1994 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  1995 + `updater`, `update_time`, `deleted`)
  1996 +VALUES (2051, '限时折扣活动删除', 'promotion:discount-activity:delete', 3, 4, 2047, '', '', '', NULL, 0, b'1', b'1',
  1997 + b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
  1998 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  1999 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2000 + `updater`, `update_time`, `deleted`)
  2001 +VALUES (2052, '限时折扣活动关闭', 'promotion:discount-activity:close', 3, 5, 2047, '', '', '', NULL, 0, b'1', b'1',
  2002 + b'1', '', '2022-11-05 17:12:16', '', '2022-11-05 17:12:16', b'0');
  2003 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2004 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2005 + `updater`, `update_time`, `deleted`)
  2006 +VALUES (2059, '秒杀活动管理', '', 2, 0, 2030, 'seckill-activity', 'time-range',
  2007 + 'mall/promotion/seckill/seckillActivity/index', 'PromotionSeckillActivity', 0, b'1', b'1', b'1', '',
  2008 + '2022-11-06 22:24:49', '1', '2023-04-08 11:46:02', b'0');
  2009 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2010 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2011 + `updater`, `update_time`, `deleted`)
  2012 +VALUES (2060, '秒杀活动查询', 'promotion:seckill-activity:query', 3, 1, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2013 + '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
  2014 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2015 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2016 + `updater`, `update_time`, `deleted`)
  2017 +VALUES (2061, '秒杀活动创建', 'promotion:seckill-activity:create', 3, 2, 2059, '', '', '', NULL, 0, b'1', b'1', b'1',
  2018 + '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
  2019 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2020 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2021 + `updater`, `update_time`, `deleted`)
  2022 +VALUES (2062, '秒杀活动更新', 'promotion:seckill-activity:update', 3, 3, 2059, '', '', '', NULL, 0, b'1', b'1', b'1',
  2023 + '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
  2024 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2025 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2026 + `updater`, `update_time`, `deleted`)
  2027 +VALUES (2063, '秒杀活动删除', 'promotion:seckill-activity:delete', 3, 4, 2059, '', '', '', NULL, 0, b'1', b'1', b'1',
  2028 + '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
  2029 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2030 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2031 + `updater`, `update_time`, `deleted`)
  2032 +VALUES (2064, '秒杀活动导出', 'promotion:seckill-activity:export', 3, 5, 2059, '', '', '', NULL, 0, b'1', b'1', b'1',
  2033 + '', '2022-11-06 22:24:49', '', '2022-11-06 22:24:49', b'0');
  2034 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2035 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2036 + `updater`, `update_time`, `deleted`)
  2037 +VALUES (2066, '秒杀时段管理', '', 2, 0, 2030, 'seckill-time', '', 'mall/promotion/seckill/SeckillConfig/index',
  2038 + 'PromotionSeckillConfig', 0, b'0', b'1', b'1', '', '2022-11-15 19:46:50', '1', '2023-04-08 11:46:17', b'0');
  2039 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2040 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2041 + `updater`, `update_time`, `deleted`)
  2042 +VALUES (2067, '秒杀时段查询', 'promotion:seckill-time:query', 3, 1, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2043 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
  2044 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2045 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2046 + `updater`, `update_time`, `deleted`)
  2047 +VALUES (2068, '秒杀时段创建', 'promotion:seckill-time:create', 3, 2, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2048 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
  2049 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2050 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2051 + `updater`, `update_time`, `deleted`)
  2052 +VALUES (2069, '秒杀时段更新', 'promotion:seckill-time:update', 3, 3, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2053 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
  2054 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2055 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2056 + `updater`, `update_time`, `deleted`)
  2057 +VALUES (2070, '秒杀时段删除', 'promotion:seckill-time:delete', 3, 4, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2058 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
  2059 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2060 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2061 + `updater`, `update_time`, `deleted`)
  2062 +VALUES (2071, '秒杀时段导出', 'promotion:seckill-time:export', 3, 5, 2066, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2063 + '2022-11-15 19:46:51', '', '2022-11-15 19:46:51', b'0');
  2064 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2065 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2066 + `updater`, `update_time`, `deleted`)
  2067 +VALUES (2072, '订单中心', '', 1, 65, 0, '/trade', 'order', NULL, NULL, 0, b'1', b'1', b'1', '1', '2022-11-19 18:57:19',
  2068 + '1', '2022-12-10 16:32:57', b'0');
  2069 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2070 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2071 + `updater`, `update_time`, `deleted`)
  2072 +VALUES (2073, '售后退款', '', 2, 1, 2072, 'trade/after-sale', 'education', 'mall/trade/afterSale/index',
  2073 + 'TradeAfterSale', 0, b'1', b'1', b'1', '', '2022-11-19 20:15:32', '1', '2023-04-08 11:43:19', b'0');
  2074 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2075 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2076 + `updater`, `update_time`, `deleted`)
  2077 +VALUES (2074, '售后查询', 'trade:after-sale:query', 3, 1, 2073, '', '', '', NULL, 0, b'1', b'1', b'1', '',
  2078 + '2022-11-19 20:15:33', '1', '2022-12-10 21:04:29', b'0');
  2079 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2080 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2081 + `updater`, `update_time`, `deleted`)
  2082 +VALUES (2075, '秒杀活动关闭', 'promotion:sekill-activity:close', 3, 6, 2059, '', '', '', NULL, 0, b'1', b'1', b'1', '1',
  2083 + '2022-11-28 20:20:15', '1', '2022-11-28 20:20:15', b'0');
  2084 +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`,
  2085 + `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`,
  2086 + `updater`, `update_time`, `deleted`)
  2087 +VALUES (2076, '订单列表', '', 2, 0, 2072, 'trade/order', 'list', 'mall/trade/order/index', 'TradeOrder', 0, b'1', b'1',
  2088 + b'1', '1', '2022-12-10 21:05:44', '1', '2023-04-08 11:42:23', b'0');
2004 2089 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2077, '物流公司管理管理', '', 2, 0, 2072, 'express-company', '', 'mall/trade/expressCompany/index', NULL, 0, b'1', b'1', b'1', '', '2022-12-20 23:27:55', '1', '2022-12-20 23:36:20', b'0');
2005 2090 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2078, '物流公司管理查询', 'trade:express-company:query', 3, 1, 2077, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-12-20 23:27:55', '', '2022-12-20 23:27:55', b'0');
2006 2091 INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2079, '物流公司管理创建', 'trade:express-company:create', 3, 2, 2077, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-12-20 23:27:55', '', '2022-12-20 23:27:55', b'0');
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillConfigController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
  7 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigRespVO;
  8 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
  9 +import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
  10 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  11 +import cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig.SeckillConfigService;
  12 +import io.swagger.v3.oas.annotations.Operation;
  13 +import io.swagger.v3.oas.annotations.Parameter;
  14 +import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import org.springframework.security.access.prepost.PreAuthorize;
  16 +import org.springframework.validation.annotation.Validated;
  17 +import org.springframework.web.bind.annotation.*;
  18 +
  19 +import javax.annotation.Resource;
  20 +import javax.validation.Valid;
  21 +import java.util.List;
  22 +
  23 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  24 +
  25 +/**
  26 + * 管理后台 - 秒杀时段相关接口
  27 + *
  28 + * @author HUIHUI
  29 + */
  30 +@Tag(name = "管理后台 - 秒杀时段")
  31 +@RestController
  32 +@RequestMapping("/promotion/seckill-config")
  33 +@Validated
  34 +public class SeckillConfigController {
  35 +
  36 + @Resource
  37 + private SeckillConfigService seckillConfigService;
  38 +
  39 + @PostMapping("/create")
  40 + @Operation(summary = "创建秒杀时段")
  41 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:create')")
  42 + public CommonResult<Long> createSeckillConfig(@Valid @RequestBody SeckillConfigCreateReqVO createReqVO) {
  43 + return success(seckillConfigService.createSeckillConfig(createReqVO));
  44 + }
  45 +
  46 + @PutMapping("/update")
  47 + @Operation(summary = "更新秒杀时段")
  48 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:update')")
  49 + public CommonResult<Boolean> updateSeckillConfig(@Valid @RequestBody SeckillConfigUpdateReqVO updateReqVO) {
  50 + seckillConfigService.updateSeckillConfig(updateReqVO);
  51 + return success(true);
  52 + }
  53 +
  54 + @DeleteMapping("/delete")
  55 + @Operation(summary = "删除秒杀时段")
  56 + @Parameter(name = "id", description = "编号", required = true)
  57 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:delete')")
  58 + public CommonResult<Boolean> deleteSeckillConfig(@RequestParam("id") Long id) {
  59 + seckillConfigService.deleteSeckillConfig(id);
  60 + return success(true);
  61 + }
  62 +
  63 + @GetMapping("/get")
  64 + @Operation(summary = "获得秒杀时段")
  65 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  66 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
  67 + public CommonResult<SeckillConfigRespVO> getSeckillConfig(@RequestParam("id") Long id) {
  68 + SeckillConfigDO seckillConfig = seckillConfigService.getSeckillConfig(id);
  69 + return success(SeckillConfigConvert.INSTANCE.convert(seckillConfig));
  70 + }
  71 +
  72 + @GetMapping("/list")
  73 + @Operation(summary = "获得所有秒杀时段列表")
  74 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
  75 + public CommonResult<List<SeckillConfigRespVO>> getSeckillConfigList() {
  76 + List<SeckillConfigDO> list = seckillConfigService.getSeckillConfigList();
  77 + return success(SeckillConfigConvert.INSTANCE.convertList(list));
  78 + }
  79 +
  80 + @GetMapping("/page")
  81 + @Operation(summary = "获得秒杀活动分页")
  82 + @PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
  83 + public CommonResult<PageResult<SeckillConfigRespVO>> getSeckillActivityPage(@Valid SeckillConfigPageReqVO pageVO) {
  84 + PageResult<SeckillConfigDO> pageResult = seckillConfigService.getSeckillConfigPage(pageVO);
  85 + return success(SeckillConfigConvert.INSTANCE.convertPage(pageResult));
  86 + }
  87 +}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillTimeController.java deleted
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
5   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeRespVO;
6   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
7   -import cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime.SeckillTimeConvert;
8   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
9   -import cn.iocoder.yudao.module.promotion.service.seckill.seckilltime.SeckillTimeService;
10   -import io.swagger.v3.oas.annotations.Operation;
11   -import io.swagger.v3.oas.annotations.Parameter;
12   -import io.swagger.v3.oas.annotations.tags.Tag;
13   -import org.springframework.security.access.prepost.PreAuthorize;
14   -import org.springframework.validation.annotation.Validated;
15   -import org.springframework.web.bind.annotation.*;
16   -
17   -import javax.annotation.Resource;
18   -import javax.validation.Valid;
19   -import java.util.List;
20   -
21   -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
22   -
23   -@Tag(name = "管理后台 - 秒杀时段")
24   -@RestController
25   -@RequestMapping("/promotion/seckill-time")
26   -@Validated
27   -public class SeckillTimeController {
28   -
29   - @Resource
30   - private SeckillTimeService seckillTimeService;
31   -
32   - @PostMapping("/create")
33   - @Operation(summary = "创建秒杀时段")
34   - @PreAuthorize("@ss.hasPermission('promotion:seckill-time:create')")
35   - public CommonResult<Long> createSeckillTime(@Valid @RequestBody SeckillTimeCreateReqVO createReqVO) {
36   - return success(seckillTimeService.createSeckillTime(createReqVO));
37   - }
38   -
39   - @PutMapping("/update")
40   - @Operation(summary = "更新秒杀时段")
41   - @PreAuthorize("@ss.hasPermission('promotion:seckill-time:update')")
42   - public CommonResult<Boolean> updateSeckillTime(@Valid @RequestBody SeckillTimeUpdateReqVO updateReqVO) {
43   - seckillTimeService.updateSeckillTime(updateReqVO);
44   - return success(true);
45   - }
46   -
47   - @DeleteMapping("/delete")
48   - @Operation(summary = "删除秒杀时段")
49   - @Parameter(name = "id", description = "编号", required = true)
50   - @PreAuthorize("@ss.hasPermission('promotion:seckill-time:delete')")
51   - public CommonResult<Boolean> deleteSeckillTime(@RequestParam("id") Long id) {
52   - seckillTimeService.deleteSeckillTime(id);
53   - return success(true);
54   - }
55   -
56   - @GetMapping("/get")
57   - @Operation(summary = "获得秒杀时段")
58   - @Parameter(name = "id", description = "编号", required = true, example = "1024")
59   - @PreAuthorize("@ss.hasPermission('promotion:seckill-time:query')")
60   - public CommonResult<SeckillTimeRespVO> getSeckillTime(@RequestParam("id") Long id) {
61   - SeckillTimeDO seckillTime = seckillTimeService.getSeckillTime(id);
62   - return success(SeckillTimeConvert.INSTANCE.convert(seckillTime));
63   - }
64   -
65   - @GetMapping("/list")
66   - @Operation(summary = "获得所有秒杀时段列表")
67   - @PreAuthorize("@ss.hasPermission('promotion:seckill-time:query')")
68   - public CommonResult<List<SeckillTimeRespVO>> getSeckillTimeList() {
69   - List<SeckillTimeDO> list = seckillTimeService.getSeckillTimeList();
70   - return success(SeckillTimeConvert.INSTANCE.convertList(list));
71   - }
72   -}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/activity/SeckillActivityBaseVO.java
... ... @@ -54,7 +54,7 @@ public class SeckillActivityBaseVO {
54 54  
55 55 @Schema(description = "秒杀库存", example = "80")
56 56 @Min(value = 0, message = "秒杀库存需要大于等于 0")
57   - private Integer stock;
  57 + private Integer quota;
58 58  
59 59 @Schema(description = "每人限购", example = "10") // 如果为 0 则不限购
60 60 @Min(value = 0, message = "每人限购需要大于等于 0")
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeBaseVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigBaseVO.java
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
  5 +import org.springframework.format.annotation.DateTimeFormat;
5 6  
6 7 import javax.validation.constraints.NotNull;
7 8 import java.time.LocalTime;
8 9  
  10 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_HOUR_MINUTE_SECOND;
  11 +
9 12 /**
10 13 * 秒杀时段 Base VO,提供给添加、修改、详细的子 VO 使用
11 14 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  15 + *
  16 + * @author HUIHUI
12 17 */
13 18 @Data
14   -public class SeckillTimeBaseVO {
  19 +public class SeckillConfigBaseVO {
15 20  
16   - @Schema(description = "秒杀时段名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "上午场")
  21 + @Schema(description = "秒杀时段名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "早上场")
17 22 @NotNull(message = "秒杀时段名称不能为空")
18 23 private String name;
19 24  
20   - @Schema(description = "开始时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16:30:40")
  25 + @Schema(description = "开始时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "09:00:00")
21 26 @NotNull(message = "开始时间点不能为空")
  27 + @DateTimeFormat(pattern = FORMAT_HOUR_MINUTE_SECOND)
22 28 private LocalTime startTime;
23 29  
24   - @Schema(description = "结束时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16:30:40")
  30 + @Schema(description = "结束时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16:00:00")
25 31 @NotNull(message = "结束时间点不能为空")
  32 + @DateTimeFormat(pattern = FORMAT_HOUR_MINUTE_SECOND)
26 33 private LocalTime endTime;
27 34  
  35 + @Schema(description = "秒杀主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
  36 + @NotNull(message = "秒杀主图不能为空")
  37 + private String picUrl;
  38 +
  39 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  40 + @NotNull(message = "状态不能为空")
  41 + private Integer status;
  42 +
28 43 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeCreateReqVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigCreateReqVO.java
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5 import lombok.EqualsAndHashCode;
6 6 import lombok.ToString;
7 7  
  8 +/**
  9 + * 管理后台 秒杀时段创建 Request VO
  10 + *
  11 + * @author HUIHUI
  12 + */
8 13 @Schema(description = "管理后台 - 秒杀时段创建 Request VO")
9 14 @Data
10 15 @EqualsAndHashCode(callSuper = true)
11 16 @ToString(callSuper = true)
12   -public class SeckillTimeCreateReqVO extends SeckillTimeBaseVO {
  17 +public class SeckillConfigCreateReqVO extends SeckillConfigBaseVO {
13 18  
14 19 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimePageReqVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigPageReqVO.java
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 4 import io.swagger.v3.oas.annotations.media.Schema;
... ... @@ -9,21 +9,29 @@ import org.springframework.format.annotation.DateTimeFormat;
9 9  
10 10 import java.time.LocalTime;
11 11  
  12 +/**
  13 + * 管理后台 - 秒杀时段分页 Request VO
  14 + *
  15 + * @author HUIHUI
  16 + */
12 17 @Schema(description = "管理后台 - 秒杀时段分页 Request VO")
13 18 @Data
14 19 @EqualsAndHashCode(callSuper = true)
15 20 @ToString(callSuper = true)
16   -public class SeckillTimePageReqVO extends PageParam {
  21 +public class SeckillConfigPageReqVO extends PageParam {
17 22  
18 23 @Schema(description = "秒杀时段名称", example = "上午场")
19 24 private String name;
20 25  
  26 + @Schema(description = "状态", example = "0")
  27 + private Integer status;
  28 +
21 29 @Schema(description = "开始时间点", example = "16:30:40")
22 30 @DateTimeFormat(pattern = "HH:mm:ss")
23   - private LocalTime startTime;
  31 + private LocalTime[] startTime;
24 32  
25 33 @Schema(description = "结束时间点", example = "16:30:40")
26 34 @DateTimeFormat(pattern = "HH:mm:ss")
27   - private LocalTime endTime;
  35 + private LocalTime[] endTime;
28 36  
29 37 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeRespVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigRespVO.java
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5 import lombok.EqualsAndHashCode;
6 6 import lombok.ToString;
  7 +import org.springframework.format.annotation.DateTimeFormat;
7 8  
8 9 import java.time.LocalDateTime;
9 10  
  11 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  12 +
  13 +/**
  14 + * 管理后台 - 秒杀时段 Response VO
  15 + *
  16 + * @author HUIHUI
  17 + */
10 18 @Schema(description = "管理后台 - 秒杀时段 Response VO")
11 19 @Data
12 20 @EqualsAndHashCode(callSuper = true)
13 21 @ToString(callSuper = true)
14   -public class SeckillTimeRespVO extends SeckillTimeBaseVO {
  22 +public class SeckillConfigRespVO extends SeckillConfigBaseVO {
15 23  
16 24 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
17 25 private Long id;
18 26  
19   - @Schema(description = "秒杀活动数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  27 + @Schema(description = "秒杀活动数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
20 28 private Integer seckillActivityCount;
21 29  
22 30 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  31 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
23 32 private LocalDateTime createTime;
24 33  
25 34 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeUpdateReqVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigUpdateReqVO.java
1   -package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
  1 +package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
2 2  
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
... ... @@ -7,11 +7,16 @@ import lombok.ToString;
7 7  
8 8 import javax.validation.constraints.NotNull;
9 9  
  10 +/**
  11 + * 管理后台 - 秒杀时段更新 Request VO
  12 + *
  13 + * @author HUIHUI
  14 + */
10 15 @Schema(description = "管理后台 - 秒杀时段更新 Request VO")
11 16 @Data
12 17 @EqualsAndHashCode(callSuper = true)
13 18 @ToString(callSuper = true)
14   -public class SeckillTimeUpdateReqVO extends SeckillTimeBaseVO {
  19 +public class SeckillConfigUpdateReqVO extends SeckillConfigBaseVO {
15 20  
16 21 @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
17 22 @NotNull(message = "编号不能为空")
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckillconfig/SeckillConfigConvert.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigRespVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
  7 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  8 +import org.mapstruct.Mapper;
  9 +import org.mapstruct.Mapping;
  10 +import org.mapstruct.factory.Mappers;
  11 +
  12 +import java.util.List;
  13 +
  14 +/**
  15 + * 秒杀时段 Convert
  16 + *
  17 + * @author 芋道源码
  18 + */
  19 +@Mapper
  20 +public interface SeckillConfigConvert {
  21 +
  22 + SeckillConfigConvert INSTANCE = Mappers.getMapper(SeckillConfigConvert.class);
  23 +
  24 + SeckillConfigDO convert(SeckillConfigCreateReqVO bean);
  25 +
  26 + SeckillConfigDO convert(SeckillConfigUpdateReqVO bean);
  27 +
  28 + @Mapping(target = "s")
  29 + SeckillConfigRespVO convert(SeckillConfigDO bean);
  30 +
  31 + List<SeckillConfigRespVO> convertList(List<SeckillConfigDO> list);
  32 +
  33 + PageResult<SeckillConfigRespVO> convertPage(PageResult<SeckillConfigDO> page);
  34 +
  35 +}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckilltime/SeckillTimeConvert.java deleted
1   -package cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime;
2   -
3   -import java.util.*;
4   -
5   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
6   -
7   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
8   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeRespVO;
9   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
10   -import org.mapstruct.Mapper;
11   -import org.mapstruct.factory.Mappers;
12   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
13   -
14   -/**
15   - * 秒杀时段 Convert
16   - *
17   - * @author 芋道源码
18   - */
19   -@Mapper
20   -public interface SeckillTimeConvert {
21   -
22   - SeckillTimeConvert INSTANCE = Mappers.getMapper(SeckillTimeConvert.class);
23   -
24   - SeckillTimeDO convert(SeckillTimeCreateReqVO bean);
25   -
26   - SeckillTimeDO convert(SeckillTimeUpdateReqVO bean);
27   -
28   - SeckillTimeRespVO convert(SeckillTimeDO bean);
29   -
30   - List<SeckillTimeRespVO> convertList(List<SeckillTimeDO> list);
31   -
32   - PageResult<SeckillTimeRespVO> convertPage(PageResult<SeckillTimeDO> page);
33   -
34   -}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillactivity/SeckillProductDO.java
... ... @@ -57,7 +57,7 @@ public class SeckillProductDO extends BaseDO {
57 57 /**
58 58 * 秒杀库存
59 59 */
60   - private Integer stock;
  60 + private Integer quota;
61 61  
62 62 /**
63 63 * 每人限购
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckilltime/SeckillTimeDO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillconfig/SeckillConfigDO.java
1   -package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime;
  1 +package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig;
2 2  
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
3 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 5 import com.baomidou.mybatisplus.annotation.KeySequence;
5 6 import com.baomidou.mybatisplus.annotation.TableId;
... ... @@ -15,12 +16,12 @@ import java.time.LocalTime;
15 16 *
16 17 * @author 芋道源码
17 18 */
18   -@TableName("promotion_seckill_time")
19   -@KeySequence("promotion_seckill_time_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  19 +@TableName("promotion_seckill_config")
  20 +@KeySequence("promotion_seckill_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
20 21 @Data
21 22 @EqualsAndHashCode(callSuper = true)
22 23 @ToString(callSuper = true)
23   -public class SeckillTimeDO extends BaseDO {
  24 +public class SeckillConfigDO extends BaseDO {
24 25  
25 26 /**
26 27 * 编号
... ... @@ -40,8 +41,14 @@ public class SeckillTimeDO extends BaseDO {
40 41 */
41 42 private LocalTime endTime;
42 43 /**
43   - * 秒杀活动数量
  44 + * 秒杀主图
44 45 */
45   - private Integer seckillActivityCount;
  46 + private String picUrl;
  47 + /**
  48 + * 状态 开启:0 禁用:1
  49 + * <p>
  50 + * 枚举 {@link CommonStatusEnum 对应的类}
  51 + */
  52 + private Integer status;
46 53  
47 54 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
  7 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  8 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9 +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
  10 +import org.apache.ibatis.annotations.Mapper;
  11 +
  12 +import java.time.LocalTime;
  13 +import java.util.Collection;
  14 +import java.util.List;
  15 +
  16 +@Mapper
  17 +public interface SeckillConfigMapper extends BaseMapperX<SeckillConfigDO> {
  18 +
  19 + default List<SeckillConfigDO> selectListByTime(LocalTime time) {
  20 + return selectList(SeckillConfigDO::getStartTime, SeckillConfigDO::getEndTime, time);
  21 + }
  22 +
  23 + default List<SeckillConfigDO> selectListByTime(LocalTime startTime, LocalTime endTime) {
  24 + return selectList(new LambdaQueryWrapper<SeckillConfigDO>()
  25 + .ge(SeckillConfigDO::getStartTime, startTime)
  26 + .le(SeckillConfigDO::getEndTime, endTime));
  27 + }
  28 +
  29 + default void updateActivityCount(Collection<Long> ids, String type, Integer count) {
  30 + new LambdaUpdateChainWrapper<>(this)
  31 + .in(SeckillConfigDO::getId, ids)
  32 + .setSql("`seckill_activity_count` = `seckill_activity_count` " + type + count)
  33 + .update();
  34 + }
  35 +
  36 + default PageResult<SeckillConfigDO> selectPage(SeckillConfigPageReqVO reqVO) {
  37 + return selectPage(reqVO, new LambdaQueryWrapperX<SeckillConfigDO>()
  38 + .likeIfPresent(SeckillConfigDO::getName, reqVO.getName())
  39 + .betweenIfPresent(SeckillConfigDO::getStartTime, reqVO.getStartTime())
  40 + .betweenIfPresent(SeckillConfigDO::getEndTime, reqVO.getEndTime())
  41 + .eqIfPresent(SeckillConfigDO::getStatus, reqVO.getStatus())
  42 + .orderByDesc(SeckillConfigDO::getId));
  43 + }
  44 +
  45 +}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckilltime/SeckillTimeMapper.java deleted
1   -package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime;
2   -
3   -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
4   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
5   -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6   -import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
7   -import org.apache.ibatis.annotations.Mapper;
8   -
9   -import java.time.LocalTime;
10   -import java.util.Collection;
11   -import java.util.List;
12   -
13   -@Mapper
14   -public interface SeckillTimeMapper extends BaseMapperX<SeckillTimeDO> {
15   -
16   - default List<SeckillTimeDO> selectListByTime(LocalTime time) {
17   - return selectList(SeckillTimeDO::getStartTime, SeckillTimeDO::getEndTime, time);
18   - }
19   -
20   - default List<SeckillTimeDO> selectListByTime(LocalTime startTime, LocalTime endTime) {
21   - return selectList(new LambdaQueryWrapper<SeckillTimeDO>()
22   - .ge(SeckillTimeDO::getStartTime, startTime)
23   - .le(SeckillTimeDO::getEndTime, endTime));
24   - }
25   -
26   - default void updateActivityCount(Collection<Long> ids, String type, Integer count) {
27   - new LambdaUpdateChainWrapper<>(this)
28   - .in(SeckillTimeDO::getId, ids)
29   - .setSql("`seckill_activity_count` = `seckill_activity_count` " + type + count)
30   - .update();
31   - }
32   -}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillactivity/SeckillActivityService.java
1 1 package cn.iocoder.yudao.module.promotion.service.seckill.seckillactivity;
2 2  
3   -import java.util.*;
4   -import javax.validation.*;
5   -
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 4 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityCreateReqVO;
7 5 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityPageReqVO;
8 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO;
9 7 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
10   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
11 8 import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
12 9  
  10 +import javax.validation.Valid;
  11 +import java.util.Collection;
  12 +import java.util.List;
  13 +
13 14 /**
14 15 * 秒杀活动 Service 接口
15 16 *
... ... @@ -77,4 +78,5 @@ public interface SeckillActivityService {
77 78 * @return 活动商品列表
78 79 */
79 80 List<SeckillProductDO> getSeckillProductListByActivityId(Long id);
  81 +
80 82 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillactivity/SeckillActivityServiceImpl.java
... ... @@ -13,7 +13,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.
13 13 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper;
14 14 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper;
15 15 import cn.iocoder.yudao.module.promotion.enums.common.PromotionActivityStatusEnum;
16   -import cn.iocoder.yudao.module.promotion.service.seckill.seckilltime.SeckillTimeService;
  16 +import cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig.SeckillConfigService;
17 17 import cn.iocoder.yudao.module.promotion.util.PromotionUtils;
18 18 import org.springframework.stereotype.Service;
19 19 import org.springframework.validation.annotation.Validated;
... ... @@ -34,29 +34,30 @@ import static java.util.Arrays.asList;
34 34 @Service
35 35 @Validated
36 36 public class SeckillActivityServiceImpl implements SeckillActivityService {
  37 +
37 38 @Resource
38 39 private SeckillActivityMapper seckillActivityMapper;
39 40 @Resource
40 41 private SeckillProductMapper seckillProductMapper;
41 42 @Resource
42   - private SeckillTimeService seckillTimeService;
  43 + private SeckillConfigService seckillConfigService;
43 44  
44 45 @Override
45 46 public Long createSeckillActivity(SeckillActivityCreateReqVO createReqVO) {
46 47 // 校验商品是否冲突
47 48 validateSeckillActivityProductConflicts(null, createReqVO.getProducts());
48 49 // 校验秒杀时段是否存在
49   - seckillTimeService.validateSeckillTimeExists(createReqVO.getTimeIds());
  50 + seckillConfigService.validateSeckillConfigExists(createReqVO.getTimeIds());
50 51  
51 52 // 插入秒杀活动
52 53 SeckillActivityDO seckillActivity = SeckillActivityConvert.INSTANCE.convert(createReqVO)
53 54 .setStatus(PromotionUtils.calculateActivityStatus(createReqVO.getStartTime(), createReqVO.getEndTime()));
54 55 seckillActivityMapper.insert(seckillActivity);
55 56 // 插入商品
56   - List<SeckillProductDO> productDOS = SeckillActivityConvert.INSTANCE.convertList(createReqVO.getProducts(), seckillActivity);
57   - seckillProductMapper.insertBatch(productDOS);
  57 + List<SeckillProductDO> productDOs = SeckillActivityConvert.INSTANCE.convertList(createReqVO.getProducts(), seckillActivity);
  58 + seckillProductMapper.insertBatch(productDOs);
58 59 // 更新秒杀时段的秒杀活动数量
59   - seckillTimeService.sekillActivityCountIncr(createReqVO.getTimeIds());
  60 + seckillConfigService.seckillActivityCountIncr(createReqVO.getTimeIds());
60 61 return seckillActivity.getId();
61 62 }
62 63  
... ... @@ -77,17 +78,16 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
77 78 // 更新商品
78 79 updateSeckillProduct(updateReqVO);
79 80 // 更新秒杀时段的秒杀活动数量
80   - updateSeckillTimeActivityCount(seckillActivity, updateReqVO.getTimeIds());
  81 + updateSeckillConfigActivityCount(seckillActivity, updateReqVO.getTimeIds());
81 82 }
82 83  
83   -
84 84 /**
85 85 * 更新秒杀时段的秒杀活动数量
86 86 *
87 87 * @param seckillActivity 查询出的秒杀活动
88 88 * @param updateTimeIds 更新后的秒杀时段id列表
89 89 */
90   - private void updateSeckillTimeActivityCount(SeckillActivityDO seckillActivity, List<Long> updateTimeIds) {
  90 + private void updateSeckillConfigActivityCount(SeckillActivityDO seckillActivity, List<Long> updateTimeIds) {
91 91 // 查询出 timeIds
92 92 List<Long> existsTimeIds = seckillActivity.getTimeIds();
93 93 // 需要减少的时间段
... ... @@ -96,10 +96,10 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
96 96 updateTimeIds.removeIf(existsTimeIds::contains);
97 97 // 更新减少时间段和增加时间段
98 98 if (CollUtil.isNotEmpty(updateTimeIds)) {
99   - seckillTimeService.sekillActivityCountIncr(updateTimeIds);
  99 + seckillConfigService.seckillActivityCountIncr(updateTimeIds);
100 100 }
101 101 if (CollUtil.isNotEmpty(reduceIds)) {
102   - seckillTimeService.sekillActivityCountDecr(reduceIds);
  102 + seckillConfigService.seckillActivityCountDecr(reduceIds);
103 103 }
104 104 }
105 105  
... ... @@ -113,11 +113,11 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
113 113 * @param updateReqVO 更新的请求VO
114 114 */
115 115 private void updateSeckillProduct(SeckillActivityUpdateReqVO updateReqVO) {
116   - List<SeckillProductDO> seckillProductDOS = seckillProductMapper.selectListByActivityId(updateReqVO.getId());
  116 + List<SeckillProductDO> seckillProductDOs = seckillProductMapper.selectListByActivityId(updateReqVO.getId());
117 117 List<SeckillActivityBaseVO.Product> products = updateReqVO.getProducts();
118 118  
119 119 // 计算需要删除的数据
120   - List<Long> deleteIds = CollectionUtils.convertList(seckillProductDOS, SeckillProductDO::getId,
  120 + List<Long> deleteIds = CollectionUtils.convertList(seckillProductDOs, SeckillProductDO::getId,
121 121 seckillProductDO -> products.stream()
122 122 .noneMatch(product -> SeckillActivityConvert.INSTANCE.isEquals(seckillProductDO, product)));
123 123 if (CollUtil.isNotEmpty(deleteIds)) {
... ... @@ -127,7 +127,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
127 127 // 计算需要新增的数据
128 128 List<SeckillProductDO> newSeckillProductDOs = CollectionUtils.convertList(products,
129 129 product -> SeckillActivityConvert.INSTANCE.convert(product).setActivityId(updateReqVO.getId()));
130   - newSeckillProductDOs.removeIf(product -> seckillProductDOS.stream()
  130 + newSeckillProductDOs.removeIf(product -> seckillProductDOs.stream()
131 131 .anyMatch(seckillProduct -> SeckillActivityConvert.INSTANCE.isEquals(seckillProduct, product)));
132 132 if (CollUtil.isNotEmpty(newSeckillProductDOs)) {
133 133 seckillProductMapper.insertBatch(newSeckillProductDOs);
... ... @@ -147,21 +147,21 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
147 147 if (CollUtil.isEmpty(products)) {
148 148 return;
149 149 }
150   - List<SeckillProductDO> seckillProductDOS = seckillProductMapper
  150 + List<SeckillProductDO> seckillProductDOs = seckillProductMapper
151 151 .selectListBySkuIds(CollectionUtils.convertSet(products, SeckillActivityBaseVO.Product::getSkuId));
152   - if (CollUtil.isEmpty(seckillProductDOS)) {
  152 + if (CollUtil.isEmpty(seckillProductDOs)) {
153 153 return;
154 154 }
155   - List<SeckillActivityDO> seckillActivityDOS = seckillActivityMapper
156   - .selectBatchIds(CollectionUtils.convertSet(seckillProductDOS, SeckillProductDO::getActivityId));
  155 + List<SeckillActivityDO> seckillActivityDOs = seckillActivityMapper
  156 + .selectBatchIds(CollectionUtils.convertSet(seckillProductDOs, SeckillProductDO::getActivityId));
157 157 if (id != null) { // 排除自己这个活动
158   - seckillActivityDOS.removeIf(item -> id.equals(item.getId()));
  158 + seckillActivityDOs.removeIf(item -> id.equals(item.getId()));
159 159 }
160 160 // 排除不满足 status 的活动
161 161 List<Integer> statuses = asList(PromotionActivityStatusEnum.WAIT.getStatus(), PromotionActivityStatusEnum.RUN.getStatus());
162   - seckillActivityDOS.removeIf(item -> !statuses.contains(item.getStatus()));
  162 + seckillActivityDOs.removeIf(item -> !statuses.contains(item.getStatus()));
163 163 // 如果非空,则说明冲突
164   - if (CollUtil.isNotEmpty(seckillActivityDOS)) {
  164 + if (CollUtil.isNotEmpty(seckillActivityDOs)) {
165 165 throw exception(SECKILL_ACTIVITY_SPU_CONFLICTS);
166 166 }
167 167 }
... ... @@ -190,7 +190,7 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
190 190 throw exception(SECKILL_ACTIVITY_DELETE_FAIL_STATUS_NOT_CLOSED_OR_END);
191 191 }
192 192 // 更新秒杀时段的秒杀活动数量
193   - seckillTimeService.sekillActivityCountDecr(seckillActivity.getTimeIds());
  193 + seckillConfigService.seckillActivityCountDecr(seckillActivity.getTimeIds());
194 194 // 删除
195 195 seckillActivityMapper.deleteById(id);
196 196 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckilltime/SeckillTimeService.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillconfig/SeckillConfigService.java
1   -package cn.iocoder.yudao.module.promotion.service.seckill.seckilltime;
  1 +package cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig;
2 2  
3   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
4   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
5   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
  7 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
6 8  
7 9 import javax.validation.Valid;
8 10 import java.util.Collection;
... ... @@ -13,7 +15,7 @@ import java.util.List;
13 15 *
14 16 * @author halfninety
15 17 */
16   -public interface SeckillTimeService {
  18 +public interface SeckillConfigService {
17 19  
18 20 /**
19 21 * 创建秒杀时段
... ... @@ -21,21 +23,21 @@ public interface SeckillTimeService {
21 23 * @param createReqVO 创建信息
22 24 * @return 编号
23 25 */
24   - Long createSeckillTime(@Valid SeckillTimeCreateReqVO createReqVO);
  26 + Long createSeckillConfig(@Valid SeckillConfigCreateReqVO createReqVO);
25 27  
26 28 /**
27 29 * 更新秒杀时段
28 30 *
29 31 * @param updateReqVO 更新信息
30 32 */
31   - void updateSeckillTime(@Valid SeckillTimeUpdateReqVO updateReqVO);
  33 + void updateSeckillConfig(@Valid SeckillConfigUpdateReqVO updateReqVO);
32 34  
33 35 /**
34 36 * 删除秒杀时段
35 37 *
36 38 * @param id 编号
37 39 */
38   - void deleteSeckillTime(Long id);
  40 + void deleteSeckillConfig(Long id);
39 41  
40 42 /**
41 43 * 获得秒杀时段
... ... @@ -43,28 +45,28 @@ public interface SeckillTimeService {
43 45 * @param id 编号
44 46 * @return 秒杀时段
45 47 */
46   - SeckillTimeDO getSeckillTime(Long id);
  48 + SeckillConfigDO getSeckillConfig(Long id);
47 49  
48 50 /**
49 51 * 获得所有秒杀时段列表
50 52 *
51 53 * @return 所有秒杀时段列表
52 54 */
53   - List<SeckillTimeDO> getSeckillTimeList();
  55 + List<SeckillConfigDO> getSeckillConfigList();
54 56  
55 57 /**
56 58 * 校验秒杀时段是否存在
57 59 *
58 60 * @param timeIds 秒杀时段id集合
59 61 */
60   - void validateSeckillTimeExists(Collection<Long> timeIds);
  62 + void validateSeckillConfigExists(Collection<Long> timeIds);
61 63  
62 64 /**
63 65 * 秒杀时段列表的秒杀活动数量加 1
64 66 *
65 67 * @param ids 秒杀时段id列表
66 68 */
67   - void sekillActivityCountIncr(Collection<Long> ids);
  69 + void seckillActivityCountIncr(Collection<Long> ids);
68 70  
69 71  
70 72 /**
... ... @@ -72,5 +74,14 @@ public interface SeckillTimeService {
72 74 *
73 75 * @param ids 秒杀时段id列表
74 76 */
75   - void sekillActivityCountDecr(Collection<Long> ids);
  77 + void seckillActivityCountDecr(Collection<Long> ids);
  78 +
  79 + /**
  80 + * 获得秒杀时间段配置分页数据
  81 + *
  82 + * @param pageVO 分页请求参数
  83 + * @return 秒杀时段分页列表
  84 + */
  85 + PageResult<SeckillConfigDO> getSeckillConfigPage(SeckillConfigPageReqVO pageVO);
  86 +
76 87 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckilltime/SeckillTimeServiceImpl.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillconfig/SeckillConfigServiceImpl.java
1   -package cn.iocoder.yudao.module.promotion.service.seckill.seckilltime;
  1 +package cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
5   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
6   -import cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime.SeckillTimeConvert;
7   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
8   -import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime.SeckillTimeMapper;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
  7 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
  8 +import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
  9 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  10 +import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
9 11 import org.springframework.stereotype.Service;
10 12 import org.springframework.validation.annotation.Validated;
11 13  
... ... @@ -26,43 +28,43 @@ import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL
26 28 */
27 29 @Service
28 30 @Validated
29   -public class SeckillTimeServiceImpl implements SeckillTimeService {
  31 +public class SeckillConfigServiceImpl implements SeckillConfigService {
30 32  
31 33 @Resource
32   - private SeckillTimeMapper seckillTimeMapper;
  34 + private SeckillConfigMapper seckillConfigMapper;
33 35  
34 36 @Override
35   - public Long createSeckillTime(SeckillTimeCreateReqVO createReqVO) {
  37 + public Long createSeckillConfig(SeckillConfigCreateReqVO createReqVO) {
36 38 // 校验时间段是否冲突
37   - validateSeckillTimeConflict(null, createReqVO.getStartTime(), createReqVO.getEndTime());
  39 + validateSeckillConfigConflict(null, createReqVO.getStartTime(), createReqVO.getEndTime());
38 40 // 插入
39   - SeckillTimeDO seckillTime = SeckillTimeConvert.INSTANCE.convert(createReqVO);
40   - seckillTimeMapper.insert(seckillTime);
  41 + SeckillConfigDO seckillConfig = SeckillConfigConvert.INSTANCE.convert(createReqVO);
  42 + seckillConfigMapper.insert(seckillConfig);
41 43 // 返回
42   - return seckillTime.getId();
  44 + return seckillConfig.getId();
43 45 }
44 46  
45 47 @Override
46   - public void updateSeckillTime(SeckillTimeUpdateReqVO updateReqVO) {
  48 + public void updateSeckillConfig(SeckillConfigUpdateReqVO updateReqVO) {
47 49 // 校验存在
48   - this.validateSeckillTimeExists(updateReqVO.getId());
  50 + this.validateSeckillConfigExists(updateReqVO.getId());
49 51 // 校验时间段是否冲突
50   - validateSeckillTimeConflict(updateReqVO.getId(), updateReqVO.getStartTime(), updateReqVO.getEndTime());
  52 + validateSeckillConfigConflict(updateReqVO.getId(), updateReqVO.getStartTime(), updateReqVO.getEndTime());
51 53 // 更新
52   - SeckillTimeDO updateObj = SeckillTimeConvert.INSTANCE.convert(updateReqVO);
53   - seckillTimeMapper.updateById(updateObj);
  54 + SeckillConfigDO updateObj = SeckillConfigConvert.INSTANCE.convert(updateReqVO);
  55 + seckillConfigMapper.updateById(updateObj);
54 56 }
55 57  
56 58 @Override
57   - public void deleteSeckillTime(Long id) {
  59 + public void deleteSeckillConfig(Long id) {
58 60 // 校验存在
59   - this.validateSeckillTimeExists(id);
  61 + this.validateSeckillConfigExists(id);
60 62 // 删除
61   - seckillTimeMapper.deleteById(id);
  63 + seckillConfigMapper.deleteById(id);
62 64 }
63 65  
64   - private void validateSeckillTimeExists(Long id) {
65   - if (seckillTimeMapper.selectById(id) == null) {
  66 + private void validateSeckillConfigExists(Long id) {
  67 + if (seckillConfigMapper.selectById(id) == null) {
66 68 throw exception(SECKILL_TIME_NOT_EXISTS);
67 69 }
68 70 }
... ... @@ -73,17 +75,17 @@ public class SeckillTimeServiceImpl implements SeckillTimeService {
73 75 * @param startTime 开始时间
74 76 * @param endTime 结束时间
75 77 */
76   - private void validateSeckillTimeConflict(Long id, LocalTime startTime, LocalTime endTime) {
  78 + private void validateSeckillConfigConflict(Long id, LocalTime startTime, LocalTime endTime) {
77 79 //查询开始时间,结束时间,是否在别人的时间段内
78   - List<SeckillTimeDO> startTimeList = seckillTimeMapper.selectListByTime(startTime);
79   - List<SeckillTimeDO> endTimeList = seckillTimeMapper.selectListByTime(endTime);
  80 + List<SeckillConfigDO> startTimeList = seckillConfigMapper.selectListByTime(startTime);
  81 + List<SeckillConfigDO> endTimeList = seckillConfigMapper.selectListByTime(endTime);
80 82 //查询自己时间段内是否有时间段
81   - List<SeckillTimeDO> startEndTimeList = seckillTimeMapper.selectListByTime(startTime, endTime);
  83 + List<SeckillConfigDO> startEndTimeList = seckillConfigMapper.selectListByTime(startTime, endTime);
82 84 if (id != null) {
83 85 //移除自己
84   - startTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
85   - endTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
86   - startEndTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
  86 + startTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
  87 + endTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
  88 + startEndTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
87 89 }
88 90 if (CollUtil.isNotEmpty(startTimeList) || CollUtil.isNotEmpty(endTimeList)
89 91 || CollUtil.isNotEmpty(startEndTimeList)) {
... ... @@ -92,33 +94,38 @@ public class SeckillTimeServiceImpl implements SeckillTimeService {
92 94 }
93 95  
94 96 @Override
95   - public SeckillTimeDO getSeckillTime(Long id) {
96   - return seckillTimeMapper.selectById(id);
  97 + public SeckillConfigDO getSeckillConfig(Long id) {
  98 + return seckillConfigMapper.selectById(id);
97 99 }
98 100  
99 101 @Override
100   - public List<SeckillTimeDO> getSeckillTimeList() {
101   - return seckillTimeMapper.selectList();
  102 + public List<SeckillConfigDO> getSeckillConfigList() {
  103 + return seckillConfigMapper.selectList();
102 104 }
103 105  
104 106 @Override
105   - public void validateSeckillTimeExists(Collection<Long> timeIds) {
  107 + public void validateSeckillConfigExists(Collection<Long> timeIds) {
106 108 if (CollUtil.isEmpty(timeIds)) {
107 109 throw exception(SECKILL_TIME_NOT_EXISTS);
108 110 }
109   - if (seckillTimeMapper.selectBatchIds(timeIds).size() != timeIds.size()) {
  111 + if (seckillConfigMapper.selectBatchIds(timeIds).size() != timeIds.size()) {
110 112 throw exception(SECKILL_TIME_NOT_EXISTS);
111 113 }
112 114 }
113 115  
114 116 @Override
115   - public void sekillActivityCountIncr(Collection<Long> ids) {
116   - seckillTimeMapper.updateActivityCount(ids, "+", 1);
  117 + public void seckillActivityCountIncr(Collection<Long> ids) {
  118 + seckillConfigMapper.updateActivityCount(ids, "+", 1);
117 119 }
118 120  
119 121 @Override
120   - public void sekillActivityCountDecr(Collection<Long> ids) {
121   - seckillTimeMapper.updateActivityCount(ids, "-", 1);
  122 + public void seckillActivityCountDecr(Collection<Long> ids) {
  123 + seckillConfigMapper.updateActivityCount(ids, "-", 1);
  124 + }
  125 +
  126 + @Override
  127 + public PageResult<SeckillConfigDO> getSeckillConfigPage(SeckillConfigPageReqVO pageVO) {
  128 + return seckillConfigMapper.selectPage(pageVO);
122 129 }
123 130  
124 131 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/seckillconfig/SeckillConfigServiceImplTest.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.service.seckillconfig;
  2 +
  3 +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
  4 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
  5 +import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
  6 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  7 +import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
  8 +import cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig.SeckillConfigServiceImpl;
  9 +import com.fasterxml.jackson.core.JsonProcessingException;
  10 +import com.fasterxml.jackson.databind.ObjectMapper;
  11 +import org.junit.jupiter.api.Disabled;
  12 +import org.junit.jupiter.api.Test;
  13 +import org.springframework.context.annotation.Import;
  14 +
  15 +import javax.annotation.Resource;
  16 +
  17 +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
  18 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
  19 +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
  20 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
  21 +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
  22 +import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_NOT_EXISTS;
  23 +import static org.junit.jupiter.api.Assertions.assertNotNull;
  24 +import static org.junit.jupiter.api.Assertions.assertNull;
  25 +
  26 +/**
  27 + * {@link SeckillConfigServiceImpl} 的单元测试类
  28 + *
  29 + * @author 芋道源码
  30 + */
  31 +@Import(SeckillConfigServiceImpl.class)
  32 +@Disabled // TODO 芋艿:未来开启
  33 +public class SeckillConfigServiceImplTest extends BaseDbUnitTest {
  34 +
  35 + @Resource
  36 + private SeckillConfigServiceImpl SeckillConfigService;
  37 +
  38 + @Resource
  39 + private SeckillConfigMapper seckillConfigMapper;
  40 +
  41 + @Resource
  42 + private ObjectMapper objectMapper;
  43 +
  44 + @Test
  45 + public void testJacksonSerializ() {
  46 +
  47 + // 准备参数
  48 + SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class);
  49 +// ObjectMapper objectMapper = new ObjectMapper();
  50 + try {
  51 + String string = objectMapper.writeValueAsString(reqVO);
  52 + System.out.println(string);
  53 + } catch (JsonProcessingException e) {
  54 + e.printStackTrace();
  55 + }
  56 +
  57 +
  58 + }
  59 +
  60 + @Test
  61 + public void testCreateSeckillConfig_success() {
  62 + // 准备参数
  63 + SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class);
  64 +
  65 + // 调用
  66 + Long SeckillConfigId = SeckillConfigService.createSeckillConfig(reqVO);
  67 + // 断言
  68 + assertNotNull(SeckillConfigId);
  69 + // 校验记录的属性是否正确
  70 + SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(SeckillConfigId);
  71 + assertPojoEquals(reqVO, SeckillConfig);
  72 + }
  73 +
  74 + @Test
  75 + public void testUpdateSeckillConfig_success() {
  76 + // mock 数据
  77 + SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class);
  78 + seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据
  79 + // 准备参数
  80 + SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class, o -> {
  81 + o.setId(dbSeckillConfig.getId()); // 设置更新的 ID
  82 + });
  83 +
  84 + // 调用
  85 + SeckillConfigService.updateSeckillConfig(reqVO);
  86 + // 校验是否更新正确
  87 + SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(reqVO.getId()); // 获取最新的
  88 + assertPojoEquals(reqVO, SeckillConfig);
  89 + }
  90 +
  91 + @Test
  92 + public void testUpdateSeckillConfig_notExists() {
  93 + // 准备参数
  94 + SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class);
  95 +
  96 + // 调用, 并断言异常
  97 + assertServiceException(() -> SeckillConfigService.updateSeckillConfig(reqVO), SECKILL_TIME_NOT_EXISTS);
  98 + }
  99 +
  100 + @Test
  101 + public void testDeleteSeckillConfig_success() {
  102 + // mock 数据
  103 + SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class);
  104 + seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据
  105 + // 准备参数
  106 + Long id = dbSeckillConfig.getId();
  107 +
  108 + // 调用
  109 + SeckillConfigService.deleteSeckillConfig(id);
  110 + // 校验数据不存在了
  111 + assertNull(seckillConfigMapper.selectById(id));
  112 + }
  113 +
  114 + @Test
  115 + public void testDeleteSeckillConfig_notExists() {
  116 + // 准备参数
  117 + Long id = randomLongId();
  118 +
  119 + // 调用, 并断言异常
  120 + assertServiceException(() -> SeckillConfigService.deleteSeckillConfig(id), SECKILL_TIME_NOT_EXISTS);
  121 + }
  122 +
  123 + @Test
  124 + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
  125 + public void testGetSeckillConfigPage() {
  126 + // mock 数据
  127 +// SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到
  128 +// o.setName(null);
  129 +// o.setStartTime(null);
  130 +// o.setEndTime(null);
  131 +// o.setCreateTime(null);
  132 +// });
  133 +// seckillConfigMapper.insert(dbSeckillConfig);
  134 +// // 测试 name 不匹配
  135 +// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null)));
  136 +// // 测试 startTime 不匹配
  137 +// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null)));
  138 +// // 测试 endTime 不匹配
  139 +// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null)));
  140 +// // 测试 createTime 不匹配
  141 +// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null)));
  142 +// // 准备参数
  143 +// SeckillConfigPageReqVO reqVO = new SeckillConfigPageReqVO();
  144 +// reqVO.setName(null);
  145 +//// reqVO.setStartTime((new LocalTime()));
  146 +//// reqVO.setEndTime((new LocalTime[]{}));
  147 +//// reqVO.setCreateTime((new Date[]{}));
  148 +//
  149 +// // 调用
  150 +// PageResult<SeckillConfigDO> pageResult = SeckillConfigService.getSeckillConfigPage(reqVO);
  151 +// // 断言
  152 +// assertEquals(1, pageResult.getTotal());
  153 +// assertEquals(1, pageResult.getList().size());
  154 +// assertPojoEquals(dbSeckillConfig, pageResult.getList().get(0));
  155 + }
  156 +
  157 + @Test
  158 + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
  159 + public void testGetSeckillConfigList() {
  160 + // mock 数据
  161 + SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到
  162 + o.setName(null);
  163 + o.setStartTime(null);
  164 + o.setEndTime(null);
  165 + o.setCreateTime(null);
  166 + });
  167 + seckillConfigMapper.insert(dbSeckillConfig);
  168 + // 测试 name 不匹配
  169 + seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null)));
  170 + // 测试 startTime 不匹配
  171 + seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null)));
  172 + // 测试 endTime 不匹配
  173 + seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null)));
  174 + // 测试 createTime 不匹配
  175 + seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null)));
  176 + // 准备参数
  177 +// SeckillConfigExportReqVO reqVO = new SeckillConfigExportReqVO();
  178 +// reqVO.setName(null);
  179 +// reqVO.setStartTime((new LocalTime[]{}));
  180 +// reqVO.setEndTime((new LocalTime[]{}));
  181 +// reqVO.setCreateTime((new Date[]{}));
  182 +//
  183 +// // 调用
  184 +// List<SeckillConfigDO> list = SeckillConfigService.getSeckillConfigList(reqVO);
  185 +// // 断言
  186 +// assertEquals(1, list.size());
  187 +// assertPojoEquals(dbSeckillConfig, list.get(0));
  188 + }
  189 +
  190 +}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/seckilltime/SeckillTimeServiceImplTest.java deleted
1   -package cn.iocoder.yudao.module.promotion.service.seckilltime;
2   -
3   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
4   -import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
5   -import cn.iocoder.yudao.module.promotion.service.seckill.seckilltime.SeckillTimeServiceImpl;
6   -import com.fasterxml.jackson.core.JsonProcessingException;
7   -import com.fasterxml.jackson.databind.ObjectMapper;
8   -import org.junit.jupiter.api.Disabled;
9   -import org.junit.jupiter.api.Test;
10   -
11   -import javax.annotation.Resource;
12   -
13   -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
14   -
15   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
16   -import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime.SeckillTimeMapper;
17   -
18   -import org.springframework.context.annotation.Import;
19   -
20   -import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
21   -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
22   -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
23   -import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
24   -import static org.junit.jupiter.api.Assertions.*;
25   -
26   -/**
27   -* {@link SeckillTimeServiceImpl} 的单元测试类
28   -*
29   -* @author 芋道源码
30   -*/
31   -@Import(SeckillTimeServiceImpl.class)
32   -@Disabled // TODO 芋艿:未来开启
33   -public class SeckillTimeServiceImplTest extends BaseDbUnitTest {
34   -
35   - @Resource
36   - private SeckillTimeServiceImpl seckillTimeService;
37   -
38   - @Resource
39   - private SeckillTimeMapper seckillTimeMapper;
40   -
41   - @Resource
42   - private ObjectMapper objectMapper;
43   -
44   - @Test
45   - public void testJacksonSerializ(){
46   -
47   - // 准备参数
48   - SeckillTimeCreateReqVO reqVO = randomPojo(SeckillTimeCreateReqVO.class);
49   -// ObjectMapper objectMapper = new ObjectMapper();
50   - try {
51   - String string = objectMapper.writeValueAsString(reqVO);
52   - System.out.println(string);
53   - } catch (JsonProcessingException e) {
54   - e.printStackTrace();
55   - }
56   -
57   -
58   - }
59   -
60   - @Test
61   - public void testCreateSeckillTime_success() {
62   - // 准备参数
63   - SeckillTimeCreateReqVO reqVO = randomPojo(SeckillTimeCreateReqVO.class);
64   -
65   - // 调用
66   - Long seckillTimeId = seckillTimeService.createSeckillTime(reqVO);
67   - // 断言
68   - assertNotNull(seckillTimeId);
69   - // 校验记录的属性是否正确
70   - SeckillTimeDO seckillTime = seckillTimeMapper.selectById(seckillTimeId);
71   - assertPojoEquals(reqVO, seckillTime);
72   - }
73   -
74   - @Test
75   - public void testUpdateSeckillTime_success() {
76   - // mock 数据
77   - SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class);
78   - seckillTimeMapper.insert(dbSeckillTime);// @Sql: 先插入出一条存在的数据
79   - // 准备参数
80   - SeckillTimeUpdateReqVO reqVO = randomPojo(SeckillTimeUpdateReqVO.class, o -> {
81   - o.setId(dbSeckillTime.getId()); // 设置更新的 ID
82   - });
83   -
84   - // 调用
85   - seckillTimeService.updateSeckillTime(reqVO);
86   - // 校验是否更新正确
87   - SeckillTimeDO seckillTime = seckillTimeMapper.selectById(reqVO.getId()); // 获取最新的
88   - assertPojoEquals(reqVO, seckillTime);
89   - }
90   -
91   - @Test
92   - public void testUpdateSeckillTime_notExists() {
93   - // 准备参数
94   - SeckillTimeUpdateReqVO reqVO = randomPojo(SeckillTimeUpdateReqVO.class);
95   -
96   - // 调用, 并断言异常
97   - assertServiceException(() -> seckillTimeService.updateSeckillTime(reqVO), SECKILL_TIME_NOT_EXISTS);
98   - }
99   -
100   - @Test
101   - public void testDeleteSeckillTime_success() {
102   - // mock 数据
103   - SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class);
104   - seckillTimeMapper.insert(dbSeckillTime);// @Sql: 先插入出一条存在的数据
105   - // 准备参数
106   - Long id = dbSeckillTime.getId();
107   -
108   - // 调用
109   - seckillTimeService.deleteSeckillTime(id);
110   - // 校验数据不存在了
111   - assertNull(seckillTimeMapper.selectById(id));
112   - }
113   -
114   - @Test
115   - public void testDeleteSeckillTime_notExists() {
116   - // 准备参数
117   - Long id = randomLongId();
118   -
119   - // 调用, 并断言异常
120   - assertServiceException(() -> seckillTimeService.deleteSeckillTime(id), SECKILL_TIME_NOT_EXISTS);
121   - }
122   -
123   - @Test
124   - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
125   - public void testGetSeckillTimePage() {
126   - // mock 数据
127   -// SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class, o -> { // 等会查询到
128   -// o.setName(null);
129   -// o.setStartTime(null);
130   -// o.setEndTime(null);
131   -// o.setCreateTime(null);
132   -// });
133   -// seckillTimeMapper.insert(dbSeckillTime);
134   -// // 测试 name 不匹配
135   -// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setName(null)));
136   -// // 测试 startTime 不匹配
137   -// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setStartTime(null)));
138   -// // 测试 endTime 不匹配
139   -// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setEndTime(null)));
140   -// // 测试 createTime 不匹配
141   -// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setCreateTime(null)));
142   -// // 准备参数
143   -// SeckillTimePageReqVO reqVO = new SeckillTimePageReqVO();
144   -// reqVO.setName(null);
145   -//// reqVO.setStartTime((new LocalTime()));
146   -//// reqVO.setEndTime((new LocalTime[]{}));
147   -//// reqVO.setCreateTime((new Date[]{}));
148   -//
149   -// // 调用
150   -// PageResult<SeckillTimeDO> pageResult = seckillTimeService.getSeckillTimePage(reqVO);
151   -// // 断言
152   -// assertEquals(1, pageResult.getTotal());
153   -// assertEquals(1, pageResult.getList().size());
154   -// assertPojoEquals(dbSeckillTime, pageResult.getList().get(0));
155   - }
156   -
157   - @Test
158   - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
159   - public void testGetSeckillTimeList() {
160   - // mock 数据
161   - SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class, o -> { // 等会查询到
162   - o.setName(null);
163   - o.setStartTime(null);
164   - o.setEndTime(null);
165   - o.setCreateTime(null);
166   - });
167   - seckillTimeMapper.insert(dbSeckillTime);
168   - // 测试 name 不匹配
169   - seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setName(null)));
170   - // 测试 startTime 不匹配
171   - seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setStartTime(null)));
172   - // 测试 endTime 不匹配
173   - seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setEndTime(null)));
174   - // 测试 createTime 不匹配
175   - seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setCreateTime(null)));
176   - // 准备参数
177   -// SeckillTimeExportReqVO reqVO = new SeckillTimeExportReqVO();
178   -// reqVO.setName(null);
179   -// reqVO.setStartTime((new LocalTime[]{}));
180   -// reqVO.setEndTime((new LocalTime[]{}));
181   -// reqVO.setCreateTime((new Date[]{}));
182   -//
183   -// // 调用
184   -// List<SeckillTimeDO> list = seckillTimeService.getSeckillTimeList(reqVO);
185   -// // 断言
186   -// assertEquals(1, list.size());
187   -// assertPojoEquals(dbSeckillTime, list.get(0));
188   - }
189   -
190   -}
yudao-module-mall/yudao-module-promotion-biz/src/test/resources/sql/clean.sql
1   -DELETE FROM "market_activity";
2   -DELETE FROM "promotion_coupon_template";
3   -DELETE FROM "promotion_coupon";
4   -DELETE FROM "promotion_reward_activity";
5   -DELETE FROM "promotion_discount_activity";
6   -DELETE FROM "promotion_discount_product";
  1 +DELETE
  2 +FROM "market_activity";
  3 +DELETE
  4 +FROM "promotion_coupon_template";
  5 +DELETE
  6 +FROM "promotion_coupon";
  7 +DELETE
  8 +FROM "promotion_reward_activity";
  9 +DELETE
  10 +FROM "promotion_discount_activity";
  11 +DELETE
  12 +FROM "promotion_discount_product";
  13 +DELETE
  14 +FROM "promotion_seckill_config";
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/resources/sql/create_tables.sql
... ... @@ -108,17 +108,122 @@ CREATE TABLE IF NOT EXISTS &quot;promotion_discount_activity&quot; (
108 108 ) COMMENT '限时折扣活动';
109 109  
110 110 CREATE TABLE IF NOT EXISTS "promotion_discount_product" (
111   - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
112   - "activity_id" bigint NOT NULL,
113   - "spu_id" bigint NOT NULL,
114   - "sku_id" bigint NOT NULL,
115   - "discount_type" int NOT NULL,
116   - "discount_percent" int,
117   - "discount_price" int,
118   - "creator" varchar DEFAULT '',
119   - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
120   - "updater" varchar DEFAULT '',
121   - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
122   - "deleted" bit NOT NULL DEFAULT FALSE,
123   - PRIMARY KEY ("id")
124   -) COMMENT '限时折扣活动';
  111 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  112 + "activity_id" bigint NOT NULL,
  113 + "spu_id" bigint NOT NULL,
  114 + "sku_id" bigint NOT NULL,
  115 + "discount_type" int NOT NULL,
  116 + "discount_percent"
  117 + int,
  118 + "discount_price"
  119 + int,
  120 + "creator"
  121 + varchar
  122 + DEFAULT
  123 + '',
  124 + "create_time"
  125 + datetime
  126 + NOT
  127 + NULL
  128 + DEFAULT
  129 + CURRENT_TIMESTAMP,
  130 + "updater"
  131 + varchar
  132 + DEFAULT
  133 + '',
  134 + "update_time"
  135 + datetime
  136 + NOT
  137 + NULL
  138 + DEFAULT
  139 + CURRENT_TIMESTAMP
  140 + ON
  141 + UPDATE
  142 + CURRENT_TIMESTAMP,
  143 + "deleted"
  144 + bit
  145 + NOT
  146 + NULL
  147 + DEFAULT
  148 + FALSE,
  149 + PRIMARY
  150 + KEY
  151 +(
  152 + "id"
  153 +)
  154 + ) COMMENT '限时折扣活动';
  155 +
  156 +CREATE TABLE IF NOT EXISTS "promotion_seckill_config"
  157 +(
  158 + "id"
  159 + bigint
  160 + NOT
  161 + NULL
  162 + GENERATED
  163 + BY
  164 + DEFAULT AS
  165 + IDENTITY,
  166 + "name"
  167 + varchar
  168 + NOT
  169 + NULL,
  170 + "start_time"
  171 + varchar
  172 + NOT
  173 + NULL,
  174 + "end_time"
  175 + varchar
  176 + NOT
  177 + NULL,
  178 + "seckill_activity_count"
  179 + int
  180 + NOT
  181 + NULL,
  182 + "pic_url"
  183 + varchar
  184 + NOT
  185 + NULL,
  186 + "status"
  187 + varchar
  188 + NOT
  189 + NULL,
  190 + "creator"
  191 + varchar
  192 + DEFAULT
  193 + '',
  194 + "create_time"
  195 + datetime
  196 + NOT
  197 + NULL
  198 + DEFAULT
  199 + CURRENT_TIMESTAMP,
  200 + "updater"
  201 + varchar
  202 + DEFAULT
  203 + '',
  204 + "update_time"
  205 + datetime
  206 + NOT
  207 + NULL
  208 + DEFAULT
  209 + CURRENT_TIMESTAMP
  210 + ON
  211 + UPDATE
  212 + CURRENT_TIMESTAMP,
  213 + "deleted"
  214 + bit
  215 + NOT
  216 + NULL
  217 + DEFAULT
  218 + FALSE,
  219 + "tenant_id"
  220 + bigint
  221 + NOT
  222 + NULL,
  223 + PRIMARY
  224 + KEY
  225 +(
  226 + "id"
  227 +)
  228 + ) COMMENT '秒杀时段配置';
  229 +
... ...
yudao-ui-admin/src/views/mall/promotion/seckill/seckillActivity/index.vue
... ... @@ -17,7 +17,7 @@
17 17 </el-form-item>
18 18 <el-form-item label="参与场次" prop="timeId">
19 19 <el-select v-model="queryParams.timeId" placeholder="请选择参与场次" clearable size="small">
20   - <el-option v-for="item in seckillTimeList" :key="item.id" :label="item.name" :value="item.id" />
  20 + <el-option v-for="item in SeckillConfigList" :key="item.id" :label="item.name" :value="item.id"/>
21 21 </el-select>
22 22 </el-form-item>
23 23 <el-form-item label="创建时间" prop="createTime">
... ... @@ -38,8 +38,9 @@
38 38 v-hasPermi="['promotion:seckill-activity:create']">新增秒杀活动</el-button>
39 39 </el-col>
40 40 <el-col :span="1.5">
41   - <el-button type="primary" plain icon="el-icon-menu" size="mini" @click="openSeckillTime"
42   - v-hasPermi="['promotion:seckill-activity:create']">管理参与场次</el-button>
  41 + <el-button v-hasPermi="['promotion:seckill-activity:create']" icon="el-icon-menu" plain size="mini" type="primary"
  42 + @click="openSeckillConfig">管理参与场次
  43 + </el-button>
43 44 </el-col>
44 45 <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
45 46 </el-row>
... ... @@ -54,8 +55,8 @@
54 55 </el-table-column>
55 56 <el-table-column label="参与场次" prop="timeIds" width="250">
56 57 <template v-slot="scope">
57   - <span v-for="item in seckillTimeList" :key="item.id"
58   - v-if="scope.row.timeIds.includes(item.id)">
  58 + <span v-for="item in SeckillConfigList" v-if="scope.row.timeIds.includes(item.id)"
  59 + :key="item.id">
59 60 <el-tag style="margin:4px;" size="small">{{ item.name }}</el-tag>
60 61 </span>
61 62 </template>
... ... @@ -110,12 +111,13 @@
110 111 <el-form-item label="场次选择">
111 112 <el-select v-model="form.timeIds" placeholder="请选择参与场次" clearable size="small" multiple filterable
112 113 style="width: 880px">
113   - <el-option v-for="item in seckillTimeList" :key="item.id" :label="item.name" :value="item.id">
114   - <span style="float: left">{{ item.name + ': { ' }} {{ item.startTime }} -- {{ item.endTime +
115   - ' }'
116   - }}</span>
117   - <span style="float: right; color: #8492a6; font-size: 13px"></span>
118   - </el-option>
  114 + <el-option v-for="item in SeckillConfigList" :key="item.id" :label="item.name" :value="item.id">
  115 + <span style="float: left">{{ item.name + ': { ' }} {{ item.startTime }} -- {{
  116 + item.endTime +
  117 + ' }'
  118 + }}</span>
  119 + <span style="float: right; color: #8492a6; font-size: 13px"></span>
  120 + </el-option>
119 121 </el-select>
120 122 </el-form-item>
121 123 <el-form-item label="商品选择">
... ... @@ -186,10 +188,17 @@
186 188 </template>
187 189  
188 190 <script>
189   -import { getSkuOptionList } from "@/api/mall/product/sku";
190   -import { createSeckillActivity, updateSeckillActivity, closeSeckillActivity, deleteSeckillActivity, getSeckillActivity, getSeckillActivityPage, exportSeckillActivityExcel } from "@/api/mall/promotion/seckillActivity";
191   -import { getSeckillTimeList } from "@/api/mall/promotion/seckillTime";
192   -import { deepClone } from "@/utils";
  191 +import {getSkuOptionList} from "@/api/mall/product/sku";
  192 +import {
  193 + closeSeckillActivity,
  194 + createSeckillActivity,
  195 + deleteSeckillActivity,
  196 + getSeckillActivity,
  197 + getSeckillActivityPage,
  198 + updateSeckillActivity
  199 +} from "@/api/mall/promotion/seckillActivity";
  200 +import {getSeckillConfigList} from "@/api/mall/promotion/SeckillConfig";
  201 +import {deepClone} from "@/utils";
193 202  
194 203 export default {
195 204 name: "PromotionSeckillActivity",
... ... @@ -197,26 +206,26 @@ export default {
197 206 },
198 207 data() {
199 208 return {
200   - // 遮罩层
201   - loading: true,
202   - // 显示搜索条件
203   - showSearch: true,
204   - // 总条数
205   - total: 0,
206   - // 秒杀活动列表
207   - list: [],
208   - // 秒杀场次列表
209   - seckillTimeList: [],
210   - // 弹出层标题
211   - title: "",
212   - // 是否显示弹出层
213   - open: false,
214   - // 查询参数
215   - queryParams: {
216   - pageNo: 1,
217   - pageSize: 10,
218   - name: null,
219   - status: null,
  209 + // 遮罩层
  210 + loading: true,
  211 + // 显示搜索条件
  212 + showSearch: true,
  213 + // 总条数
  214 + total: 0,
  215 + // 秒杀活动列表
  216 + list: [],
  217 + // 秒杀场次列表
  218 + SeckillConfigList: [],
  219 + // 弹出层标题
  220 + title: "",
  221 + // 是否显示弹出层
  222 + open: false,
  223 + // 查询参数
  224 + queryParams: {
  225 + pageNo: 1,
  226 + pageSize: 10,
  227 + name: null,
  228 + status: null,
220 229 timeId: null,
221 230 createTime: [],
222 231 },
... ... @@ -261,18 +270,18 @@ export default {
261 270 this.total = response.data.total;
262 271 this.loading = false;
263 272 });
264   - if (timeId) {
265   - //查询完成后设置为空
266   - this.$route.params.timeId = undefined
267   - }
268   - // 获得 SKU 商品列表
269   - getSkuOptionList().then(response => {
270   - this.productSkus = response.data;
271   - });
272   - // 获取参与场次列表
273   - getSeckillTimeList().then(response => {
274   - this.seckillTimeList = response.data;
275   - });
  273 + if (timeId) {
  274 + //查询完成后设置为空
  275 + this.$route.params.timeId = undefined
  276 + }
  277 + // 获得 SKU 商品列表
  278 + getSkuOptionList().then(response => {
  279 + this.productSkus = response.data;
  280 + });
  281 + // 获取参与场次列表
  282 + getSeckillConfigList().then(response => {
  283 + this.SeckillConfigList = response.data;
  284 + });
276 285 },
277 286 /** 取消按钮 */
278 287 cancel() {
... ... @@ -306,10 +315,10 @@ export default {
306 315 this.resetForm("queryForm");
307 316 this.handleQuery();
308 317 },
309   - /**打开秒杀场次管理页面 */
310   - openSeckillTime() {
311   - this.$tab.openPage("秒杀场次管理", "/promotion/seckill-time");
312   - },
  318 + /**打开秒杀场次管理页面 */
  319 + openSeckillConfig() {
  320 + this.$tab.openPage("秒杀场次管理", "/promotion/seckill-time");
  321 + },
313 322 /** 新增按钮操作 */
314 323 handleAdd() {
315 324 this.reset();
... ...
yudao-ui-admin/src/views/mall/promotion/seckill/seckillTime/index.vue
... ... @@ -63,14 +63,19 @@
63 63 </template>
64 64  
65 65 <script>
66   -import { createSeckillTime, updateSeckillTime, deleteSeckillTime, getSeckillTime, getSeckillTimePage, exportSeckillTimeExcel, getSeckillTimeList } from "@/api/mall/promotion/seckillTime";
  66 +import {
  67 + createSeckillConfig,
  68 + deleteSeckillConfig,
  69 + getSeckillConfig,
  70 + getSeckillConfigList,
  71 + updateSeckillConfig
  72 +} from "@/api/mall/promotion/SeckillConfig";
67 73 import router from "@/router";
68   -import { deepClone } from "@/utils";
  74 +import {deepClone} from "@/utils";
69 75  
70 76 export default {
71   - name: "PromotionSeckillTime",
72   - components: {
73   - },
  77 + name: "PromotionSeckillConfig",
  78 + components: {},
74 79 data() {
75 80 return {
76 81 // 遮罩层
... ... @@ -104,7 +109,7 @@ export default {
104 109 getList() {
105 110 this.loading = true;
106 111 // 执行查询
107   - getSeckillTimeList().then(response => {
  112 + getSeckillConfigList().then(response => {
108 113 this.list = response.data;
109 114 this.loading = false;
110 115 });
... ... @@ -148,7 +153,7 @@ export default {
148 153 handleUpdate(row) {
149 154 this.reset();
150 155 const id = row.id;
151   - getSeckillTime(id).then(response => {
  156 + getSeckillConfig(id).then(response => {
152 157 response.data.startAndEndTime = [response.data.startTime, response.data.endTime]
153 158 this.form = response.data;
154 159 this.open = true;
... ... @@ -168,7 +173,7 @@ export default {
168 173 data.endTime = this.form.startAndEndTime[1];
169 174 // 修改的提交
170 175 if (this.form.id != null) {
171   - updateSeckillTime(data).then(response => {
  176 + updateSeckillConfig(data).then(response => {
172 177 this.$modal.msgSuccess("修改成功");
173 178 this.open = false;
174 179 this.getList();
... ... @@ -176,7 +181,7 @@ export default {
176 181 return;
177 182 }
178 183 // 添加的提交
179   - createSeckillTime(data).then(response => {
  184 + createSeckillConfig(data).then(response => {
180 185 this.$modal.msgSuccess("新增成功");
181 186 this.open = false;
182 187 this.getList();
... ... @@ -187,7 +192,7 @@ export default {
187 192 handleDelete(row) {
188 193 const id = row.id;
189 194 this.$modal.confirm('是否确认删除秒杀时段编号为"' + id + '"的数据项?').then(function () {
190   - return deleteSeckillTime(id);
  195 + return deleteSeckillConfig(id);
191 196 }).then(() => {
192 197 this.getList();
193 198 this.$modal.msgSuccess("删除成功");
... ...