diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/StatisticsController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/StatisticsController.java new file mode 100644 index 0000000..2904a55 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/StatisticsController.java @@ -0,0 +1,47 @@ +package com.ruoyi.busi.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.busi.domain.BusiThirdItem; +import com.ruoyi.busi.service.IBusiProdNewService; +import com.ruoyi.busi.service.IBusiThirdItemService; +import com.ruoyi.busi.vo.ThirdVO; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.*; + +/** + * 数据统计Controller + * + * @author vinjor-m + * @date 2025-07-02 + */ +@RestController +@RequestMapping("/statistics") +public class StatisticsController extends BaseController +{ + @Autowired + private IBusiThirdItemService busiThirdItemService; + @Autowired + private IBusiProdNewService prodNewService; + + /** + * 首页数据统计 + */ + @GetMapping("/indexData") + public AjaxResult list(String tenantId){ + Map> rtnMap = new HashMap<>(); + //文章、产品数量 + rtnMap.put("prodNews",prodNewService.getIndexData(tenantId)); + return success(rtnMap); + } + +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiProdNewService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiProdNewService.java index bf87cea..7d87c94 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiProdNewService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiProdNewService.java @@ -1,6 +1,8 @@ package com.ruoyi.busi.service; import java.util.List; +import java.util.Map; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -33,4 +35,13 @@ public interface IBusiProdNewService extends IService * @date 14:03 2025/6/30 **/ void setAmount(String tenantId); + + /** + * 首页数据统计接口 + * @author vinjor-M + * @date 16:48 2025/7/4 + * @param tenantId TODO + * @return java.util.Map + **/ + Map getIndexData(String tenantId); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiProdNewServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiProdNewServiceImpl.java index 195a412..94c6446 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiProdNewServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiProdNewServiceImpl.java @@ -1,7 +1,13 @@ package com.ruoyi.busi.service.impl; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.busi.service.IBusiCategoryService; import com.ruoyi.busi.vo.ProdNewVO; import com.ruoyi.common.utils.DateUtils; @@ -14,6 +20,9 @@ import com.ruoyi.busi.mapper.BusiProdNewMapper; import com.ruoyi.busi.domain.BusiProdNew; import com.ruoyi.busi.service.IBusiProdNewService; +import static com.ruoyi.constant.DictConstants.DATA_TYPE_NEWS; +import static com.ruoyi.constant.DictConstants.DATA_TYPE_PRODUCT; + /** * 产品、文章Service业务层处理 * @@ -68,4 +77,56 @@ public class BusiProdNewServiceImpl extends ServiceImpl + * @author vinjor-M + * @date 16:34 2025/7/4 + **/ + @Override + public Map getIndexData(String tenantId) { + Map rtnMap = new HashMap<>(); + Integer prodAll = 0; + Integer newsAll = 0; + Integer prodAdd = 0; + Integer prodEdit = 0; + Integer newsAdd = 0; + Integer newsEdit = 0; + List list = this.list(new LambdaQueryWrapper().eq(BusiProdNew::getTenantId,tenantId)); + //当前日期 + String nowDate = DateUtil.formatDate(new Date()); + for (BusiProdNew item:list){ + if(DATA_TYPE_PRODUCT.equals(item.getDataType())){ + //产品 + prodAll++; + if(null!=item.getCreateTime() && nowDate.equals(DateUtil.formatDate(item.getCreateTime()))){ + //今天添加的 + prodAdd++; + } + if(null!=item.getUpdateTime() && nowDate.equals(DateUtil.formatDate(item.getUpdateTime()))){ + prodEdit++; + } + }else if(DATA_TYPE_NEWS.equals(item.getDataType())){ + //文章 + newsAll++; + if(null!=item.getCreateTime() && nowDate.equals(DateUtil.formatDate(item.getCreateTime()))){ + //今天添加的 + newsAdd++; + } + if(null!=item.getUpdateTime() && nowDate.equals(DateUtil.formatDate(item.getUpdateTime()))){ + newsEdit++; + } + } + } + rtnMap.put("prodAll",prodAll); + rtnMap.put("newsAll",newsAll); + rtnMap.put("prodAdd",prodAdd); + rtnMap.put("prodEdit",prodEdit); + rtnMap.put("newsAdd",newsAdd); + rtnMap.put("newsEdit",newsEdit); + return rtnMap; + } } diff --git a/dl_vue/src/App.vue b/dl_vue/src/App.vue index 06cd695..836534a 100644 --- a/dl_vue/src/App.vue +++ b/dl_vue/src/App.vue @@ -30,4 +30,21 @@ export default { justify-content: start; align-items: center } +/deep/.dl-flex-column-center { + display: flex; + justify-content: center; + align-items: center +} +/deep/.dl-flex-column-center span{ + padding-left: 3px; +} +/deep/.custom-class th{ + background-color: rgba(240, 247, 255, 1) !important; + font-size: 14px !important; + color: rgba(41, 43, 45, 1) !important; + border:none !important; +} +/deep/.custom-row-class td{ + border-bottom: 1px dashed rgba(218, 218, 218, 1); +} diff --git a/dl_vue/src/api/statistics/statistics.js b/dl_vue/src/api/statistics/statistics.js new file mode 100644 index 0000000..9382a98 --- /dev/null +++ b/dl_vue/src/api/statistics/statistics.js @@ -0,0 +1,11 @@ +import request from '@/utils/request' + +// 首页数据统计 +export function indexData(query) { + return request({ + url: '/statistics/indexData', + method: 'get', + params: query + }) +} + diff --git a/dl_vue/src/assets/images/logo.png b/dl_vue/src/assets/images/logo.png new file mode 100644 index 0000000..04a6f51 Binary files /dev/null and b/dl_vue/src/assets/images/logo.png differ diff --git a/dl_vue/src/assets/index/category.png b/dl_vue/src/assets/index/category.png new file mode 100644 index 0000000..d6542fe Binary files /dev/null and b/dl_vue/src/assets/index/category.png differ diff --git a/dl_vue/src/assets/index/chat-icon.png b/dl_vue/src/assets/index/chat-icon.png new file mode 100644 index 0000000..b946835 Binary files /dev/null and b/dl_vue/src/assets/index/chat-icon.png differ diff --git a/dl_vue/src/assets/index/chat-obline.png b/dl_vue/src/assets/index/chat-obline.png new file mode 100644 index 0000000..aadbdd2 Binary files /dev/null and b/dl_vue/src/assets/index/chat-obline.png differ diff --git a/dl_vue/src/assets/index/chat.png b/dl_vue/src/assets/index/chat.png new file mode 100644 index 0000000..13b2ca0 Binary files /dev/null and b/dl_vue/src/assets/index/chat.png differ diff --git a/dl_vue/src/assets/index/date.png b/dl_vue/src/assets/index/date.png new file mode 100644 index 0000000..8de11a4 Binary files /dev/null and b/dl_vue/src/assets/index/date.png differ diff --git a/dl_vue/src/assets/index/email.png b/dl_vue/src/assets/index/email.png new file mode 100644 index 0000000..e5ba57a Binary files /dev/null and b/dl_vue/src/assets/index/email.png differ diff --git a/dl_vue/src/assets/index/nav.png b/dl_vue/src/assets/index/nav.png new file mode 100644 index 0000000..5f0fb8f Binary files /dev/null and b/dl_vue/src/assets/index/nav.png differ diff --git a/dl_vue/src/assets/index/news.png b/dl_vue/src/assets/index/news.png new file mode 100644 index 0000000..d2e6fd9 Binary files /dev/null and b/dl_vue/src/assets/index/news.png differ diff --git a/dl_vue/src/assets/index/news_add.png b/dl_vue/src/assets/index/news_add.png new file mode 100644 index 0000000..cf791c3 Binary files /dev/null and b/dl_vue/src/assets/index/news_add.png differ diff --git a/dl_vue/src/assets/index/news_all.png b/dl_vue/src/assets/index/news_all.png new file mode 100644 index 0000000..ecfcd85 Binary files /dev/null and b/dl_vue/src/assets/index/news_all.png differ diff --git a/dl_vue/src/assets/index/news_edit.png b/dl_vue/src/assets/index/news_edit.png new file mode 100644 index 0000000..de96669 Binary files /dev/null and b/dl_vue/src/assets/index/news_edit.png differ diff --git a/dl_vue/src/assets/index/pic.png b/dl_vue/src/assets/index/pic.png new file mode 100644 index 0000000..eb9c753 Binary files /dev/null and b/dl_vue/src/assets/index/pic.png differ diff --git a/dl_vue/src/assets/index/prod_add.png b/dl_vue/src/assets/index/prod_add.png new file mode 100644 index 0000000..922276d Binary files /dev/null and b/dl_vue/src/assets/index/prod_add.png differ diff --git a/dl_vue/src/assets/index/prod_all.png b/dl_vue/src/assets/index/prod_all.png new file mode 100644 index 0000000..3b10679 Binary files /dev/null and b/dl_vue/src/assets/index/prod_all.png differ diff --git a/dl_vue/src/assets/index/prod_edit.png b/dl_vue/src/assets/index/prod_edit.png new file mode 100644 index 0000000..1a533d4 Binary files /dev/null and b/dl_vue/src/assets/index/prod_edit.png differ diff --git a/dl_vue/src/assets/index/productor.png b/dl_vue/src/assets/index/productor.png new file mode 100644 index 0000000..e962ccb Binary files /dev/null and b/dl_vue/src/assets/index/productor.png differ diff --git a/dl_vue/src/assets/index/site-info.png b/dl_vue/src/assets/index/site-info.png new file mode 100644 index 0000000..ca165b6 Binary files /dev/null and b/dl_vue/src/assets/index/site-info.png differ diff --git a/dl_vue/src/assets/index/teams.png b/dl_vue/src/assets/index/teams.png new file mode 100644 index 0000000..2a53e3f Binary files /dev/null and b/dl_vue/src/assets/index/teams.png differ diff --git a/dl_vue/src/assets/index/third.png b/dl_vue/src/assets/index/third.png new file mode 100644 index 0000000..2dcc198 Binary files /dev/null and b/dl_vue/src/assets/index/third.png differ diff --git a/dl_vue/src/assets/index/whatsApp.png b/dl_vue/src/assets/index/whatsApp.png new file mode 100644 index 0000000..bf39f9b Binary files /dev/null and b/dl_vue/src/assets/index/whatsApp.png differ diff --git a/dl_vue/src/assets/index/xunpan-icon.png b/dl_vue/src/assets/index/xunpan-icon.png new file mode 100644 index 0000000..ce8cb25 Binary files /dev/null and b/dl_vue/src/assets/index/xunpan-icon.png differ diff --git a/dl_vue/src/assets/index/xunpan.png b/dl_vue/src/assets/index/xunpan.png new file mode 100644 index 0000000..9c56a1f Binary files /dev/null and b/dl_vue/src/assets/index/xunpan.png differ diff --git a/dl_vue/src/assets/logo/logo-icon.png b/dl_vue/src/assets/logo/logo-icon.png new file mode 100644 index 0000000..78cea98 Binary files /dev/null and b/dl_vue/src/assets/logo/logo-icon.png differ diff --git a/dl_vue/src/assets/logo/logo.png b/dl_vue/src/assets/logo/logo.png index 78cea98..04a6f51 100644 Binary files a/dl_vue/src/assets/logo/logo.png and b/dl_vue/src/assets/logo/logo.png differ diff --git a/dl_vue/src/assets/styles/variables.scss b/dl_vue/src/assets/styles/variables.scss index 34484d4..2e07434 100644 --- a/dl_vue/src/assets/styles/variables.scss +++ b/dl_vue/src/assets/styles/variables.scss @@ -11,15 +11,15 @@ $panGreen: #30B08F; // 默认菜单主题风格 $base-menu-color:#bfcbd9; $base-menu-color-active:#f4f4f5; -$base-menu-background:#304156; +$base-menu-background:#022959; $base-logo-title-color: #ffffff; $base-menu-light-color:rgba(0,0,0,.70); $base-menu-light-background:#ffffff; $base-logo-light-title-color: #001529; -$base-sub-menu-background:#1f2d3d; -$base-sub-menu-hover:#001528; +$base-sub-menu-background:#0A376D; +$base-sub-menu-hover:rgba(19, 139, 255, 0.48); // 自定义暗色菜单风格 /** diff --git a/dl_vue/src/layout/components/Sidebar/Logo.vue b/dl_vue/src/layout/components/Sidebar/Logo.vue index 2774cc8..161ce35 100644 --- a/dl_vue/src/layout/components/Sidebar/Logo.vue +++ b/dl_vue/src/layout/components/Sidebar/Logo.vue @@ -2,12 +2,12 @@ @@ -15,6 +15,7 @@ - - diff --git a/dl_vue/vue.config.js b/dl_vue/vue.config.js index d079495..09f6619 100644 --- a/dl_vue/vue.config.js +++ b/dl_vue/vue.config.js @@ -7,7 +7,7 @@ function resolve(dir) { const CompressionPlugin = require('compression-webpack-plugin') -const name = process.env.VUE_APP_TITLE || '通告快接管理后台' // 网页标题 +const name = process.env.VUE_APP_TITLE || '成事达管理平台' // 网页标题 const port = process.env.port || process.env.npm_config_port || 80 // 端口