diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseManagerController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseManagerController.java new file mode 100644 index 0000000..39eb5e7 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseManagerController.java @@ -0,0 +1,118 @@ +package com.ruoyi.base.controller; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.base.vo.ManagerVO; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +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.base.domain.BaseManager; +import com.ruoyi.base.service.IBaseManagerService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 站点分配Controller + * + * @author vinjor-m + * @date 2025-08-11 + */ +@RestController +@RequestMapping("/base/manager") +public class BaseManagerController extends BaseController +{ + @Autowired + private IBaseManagerService baseManagerService; + + /** + * 查询站点分配列表 + */ + @PreAuthorize("@ss.hasPermi('base:manager:list')") + @GetMapping("/list") + public AjaxResult list(ManagerVO baseManager, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) + { + Page page = new Page<>(pageNum, pageSize); + IPage list = baseManagerService.queryListPage(baseManager,page); + return success(list); + } + + /** + * 导出站点分配列表 + */ + @PreAuthorize("@ss.hasPermi('base:manager:export')") + @Log(title = "站点分配", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BaseManager baseManager) + { + List list = baseManagerService.list(); + ExcelUtil util = new ExcelUtil(BaseManager.class); + util.exportExcel(response, list, "站点分配数据"); + } + + /** + * 获取站点分配详细信息 + */ + @PreAuthorize("@ss.hasPermi('base:manager:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(baseManagerService.getById(id)); + } + + /** + * 新增站点分配 + */ + @PreAuthorize("@ss.hasPermi('base:manager:add')") + @Log(title = "站点分配", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody ManagerVO baseManager) { + baseManager.setTenantId(baseManager.getSiteId()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .eq(BaseManager::getTenantId,baseManager.getSiteId()); + baseManagerService.remove(lambdaQueryWrapper); + return toAjax(baseManagerService.save(baseManager)); + } + + /** + * 修改站点分配 + */ + @PreAuthorize("@ss.hasPermi('base:manager:edit')") + @Log(title = "站点分配", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BaseManager baseManager) + { + return toAjax(baseManagerService.updateById(baseManager)); + } + + /** + * 删除站点分配 + */ + @PreAuthorize("@ss.hasPermi('base:manager:remove')") + @Log(title = "站点分配", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + List list = new ArrayList<>(Arrays.asList(ids)); + return toAjax(baseManagerService.removeByIds(list)); + } +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java index a06b7a4..8e98259 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.base.vo.SiteVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -48,7 +49,7 @@ public class BaseSiteController extends BaseController { @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNum, pageSize); - IPage list = baseSiteService.queryListPage(baseSite, page); + IPage list = baseSiteService.queryListPage(baseSite, page); return success(list); } @@ -61,7 +62,7 @@ public class BaseSiteController extends BaseController { **/ @GetMapping("/listAll") public AjaxResult list() { - return success(baseSiteService.list()); + return success(baseSiteService.getMySiteList()); } /** diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java index 631ccef..5b010fa 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java @@ -12,10 +12,7 @@ import com.ruoyi.base.service.IBaseInquiryService; import com.ruoyi.base.service.IBaseNationalService; import com.ruoyi.base.service.IBasePicService; import com.ruoyi.base.service.IBaseSiteInfoService; -import com.ruoyi.busi.domain.BusiCategory; -import com.ruoyi.busi.domain.BusiChatMain; -import com.ruoyi.busi.domain.BusiInquiryItem; -import com.ruoyi.busi.domain.BusiProdNew; +import com.ruoyi.busi.domain.*; import com.ruoyi.busi.service.*; import com.ruoyi.busi.utils.CommonUtils; import com.ruoyi.busi.vo.BusiCategoryVO; @@ -68,13 +65,13 @@ public class WebController extends BaseController { @Autowired private IBusiProdNewService prodNewService; @Autowired - private IBaseNationalService nationalService; - @Autowired private IBusiInquiryItemService inquiryItemService; @Autowired private IBusiChatMainService busiChatMainService; @Autowired - private GoogleKeywordService googleKeywordService; + private IBusiPageService pageService; + @Autowired + private CommonUtils commonUtils; /** * 导航栏接口--所有分类 @@ -156,9 +153,12 @@ public class WebController extends BaseController { @ApiOperation("公司介绍-富文本-首页展示区域") @ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class) @GetMapping("/indexCompanyInfo") - public R indexCompanyInfo(@RequestParam(required = true) String tenantId) { + public R> indexCompanyInfo(@RequestParam(required = true) String tenantId) { BaseSiteInfo baseSiteInfo = siteInfoService.getSiteInfo(tenantId); - return R.ok(baseSiteInfo.getCompanyInfo()); + Map map = new HashMap<>(); + map.put("content",baseSiteInfo.getCompanyInfo()); + map.put("contentApp",baseSiteInfo.getCompanyInfoApp()); + return R.ok(map); } /** @@ -372,14 +372,7 @@ public class WebController extends BaseController { **/ @PostMapping("/chatMain") public AjaxResult saveChatMain(@RequestBody BusiChatMain busiChatMain, HttpServletRequest request) { - String ip = ""; - String nationalStr = ""; - try { - ip = CommonUtils.getIpAddr(request); - nationalStr = CommonUtils.getAddr(ip); - } catch (Exception e) { - logger.error("识别所属国家失败"); - } + String ip = CommonUtils.getIpAddr(request); ip = StringUtils.isNotEmpty(ip) ? ip : "未知"; BusiChatMain result = busiChatMainService.queryByIpAndCusCode(ip, busiChatMain.getCusCode(), busiChatMain.getProdId()); if (result != null) { @@ -389,17 +382,10 @@ public class WebController extends BaseController { } return success(result); } else { - nationalStr = StringUtils.isNotEmpty(nationalStr) ? nationalStr : "未知"; - String national = nationalStr.split("\\|")[0]; - System.out.println(ip + "-----" + nationalStr); - String oceania = "未知"; - Map nationalMap = nationalService.getNationalMap(); - if (nationalMap.containsKey(national)) { - oceania = nationalMap.get(national); - } - busiChatMain.setIp(ip); - busiChatMain.setNational(nationalStr); - busiChatMain.setOceania(oceania); + Map ipMap = commonUtils.getIPAndCountry(request); + busiChatMain.setIp(ipMap.get("ip")); + busiChatMain.setNational(ipMap.get("national")); + busiChatMain.setOceania(ipMap.get("oceania")); busiChatMain.setNums(0); busiChatMainService.save(busiChatMain); return success(busiChatMain); @@ -441,26 +427,10 @@ public class WebController extends BaseController { }) @PostMapping("/inquirySave") public R inquirySave(@ApiIgnore @RequestBody BusiInquiryItem inquiryItem, HttpServletRequest request) { - String ip = ""; - String nationalStr = ""; - try { - ip = CommonUtils.getIpAddr(request); - nationalStr = CommonUtils.getAddr(ip); - } catch (Exception e) { - logger.error("识别所属国家失败"); - } - ip = StringUtils.isNotEmpty(ip) ? ip : "未知"; - nationalStr = StringUtils.isNotEmpty(nationalStr) ? nationalStr : "未知"; - String national = nationalStr.split("\\|")[0]; - System.out.println(ip + "-----" + nationalStr); - String oceania = "未知"; - Map nationalMap = nationalService.getNationalMap(); - if (nationalMap.containsKey(national)) { - oceania = nationalMap.get(national); - } - inquiryItem.setIp(ip); - inquiryItem.setNational(national); - inquiryItem.setOceania(oceania); + Map ipMap = commonUtils.getIPAndCountry(request); + inquiryItem.setIp(ipMap.get("ip")); + inquiryItem.setNational(ipMap.get("national")); + inquiryItem.setOceania(ipMap.get("oceania")); inquiryItemService.save(inquiryItem); return R.ok(); } @@ -480,4 +450,24 @@ public class WebController extends BaseController { public R> siteMap(@RequestParam(required = true) String tenantId, @RequestParam(required = true) String catgType){ return R.ok(prodNewService.getSiteMap(tenantId,catgType)); } + + /** + * 记录网页访问次数 + * @author vinjor-M + * @date 10:04 2025/7/8 + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @ApiOperation("记录网页访问次数") + @ApiImplicitParams(value = { + @ApiImplicitParam(name = "url", value = "网页地址", required = true, paramType = "body"), + @ApiImplicitParam(name = "tenantId", value = "站点编码", required = true, paramType = "body"), + @ApiImplicitParam(name = "equipment", value = "设备类型(移动端|电脑端)", required = true, paramType = "body") + }) + @PostMapping("/pageSave") + public R pageSave(@ApiIgnore @RequestBody BusiPage busiPage, HttpServletRequest request) { + busiPage.setIp(CommonUtils.getIpAddr(request)); + busiPage.setCreateTime(new Date()); + pageService.pageSave(busiPage); + return R.ok(); + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseManager.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseManager.java new file mode 100644 index 0000000..9c764fc --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseManager.java @@ -0,0 +1,39 @@ +package com.ruoyi.base.domain; + +import com.ruoyi.common.annotation.Excel; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; +import com.ruoyi.common.core.domain.DlBaseEntity; + +/** + * 站点分配对象 dl_base_manager + * + * @author vinjor-m + * @date 2025-08-11 + */ +@TableName("dl_base_manager") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BaseManager extends DlBaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 用户id */ + @Excel(name = "用户id") + private Long userId; + + /** 站点唯一编码 */ + @Excel(name = "站点唯一编码") + private String tenantId; + +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseSiteInfo.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseSiteInfo.java index d95dfa5..5894efb 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseSiteInfo.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseSiteInfo.java @@ -97,6 +97,11 @@ public class BaseSiteInfo extends DlBaseEntity @ApiModelProperty("公司介绍") private String companyInfo; + /** 公司介绍-移动端 */ + @Excel(name = "公司介绍-移动端") + @ApiModelProperty("公司介绍-移动端") + private String companyInfoApp; + /** 站点唯一编码(租户id) */ @Excel(name = "站点唯一编码", readConverterExp = "租=户id") @ApiModelProperty("站点唯一编码") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseManagerMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseManagerMapper.java new file mode 100644 index 0000000..3108f7b --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseManagerMapper.java @@ -0,0 +1,25 @@ +package com.ruoyi.base.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.base.domain.BaseManager; +import com.ruoyi.base.vo.ManagerVO; +import com.ruoyi.common.core.domain.entity.SysUser; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 站点分配Mapper接口 + * + * @author vinjor-m + * @date 2025-08-11 + */ +@Mapper +public interface BaseManagerMapper extends BaseMapper +{ + IPage queryListPage(@Param("entity") ManagerVO entity, Page page); + + List selectManagerUserByTenantId(@Param("tenantId")String tenantId); +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseSiteMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseSiteMapper.java index 38b351c..213aa86 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseSiteMapper.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseSiteMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.base.domain.BaseSite; +import com.ruoyi.base.vo.SiteVO; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -17,5 +18,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface BaseSiteMapper extends BaseMapper { - IPage queryListPage(@Param("entity") BaseSite entity, Page page); + IPage queryListPage(@Param("entity") BaseSite entity, Page page); + + List selectByUserId(@Param("userId")Long userId); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseManagerService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseManagerService.java new file mode 100644 index 0000000..39f31ab --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseManagerService.java @@ -0,0 +1,30 @@ +package com.ruoyi.base.service; + +import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.base.domain.BaseManager; +import com.ruoyi.base.vo.ManagerVO; +import com.ruoyi.common.core.domain.entity.SysUser; + +/** + * 站点分配Service接口 + * + * @author vinjor-m + * @date 2025-08-11 + */ +public interface IBaseManagerService extends IService { + IPage queryListPage(ManagerVO pageReqVO, Page page); + + /** + * 根据站点编码查负责的用户 + * @author vinjor-M + * @date 15:33 2025/8/11 + * @param tenantId TODO + * @return java.util.List + **/ + List getManagerUserByTenantId(String tenantId); + + +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseSiteService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseSiteService.java index 473ea77..0585154 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseSiteService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseSiteService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.base.domain.BaseSite; +import com.ruoyi.base.vo.SiteVO; /** * 站点管理Service接口 @@ -14,5 +15,13 @@ import com.ruoyi.base.domain.BaseSite; */ public interface IBaseSiteService extends IService { - IPage queryListPage(BaseSite pageReqVO, Page page); + IPage queryListPage(BaseSite pageReqVO, Page page); + + /** + * 查询本人可以管理的站点 + * @author vinjor-M + * @date 16:17 2025/8/11 + * @return java.util.List + **/ + List getMySiteList(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseManagerServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseManagerServiceImpl.java new file mode 100644 index 0000000..f7cb308 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseManagerServiceImpl.java @@ -0,0 +1,46 @@ +package com.ruoyi.base.service.impl; + +import java.util.List; + +import com.ruoyi.base.vo.ManagerVO; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.utils.DateUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.base.mapper.BaseManagerMapper; +import com.ruoyi.base.domain.BaseManager; +import com.ruoyi.base.service.IBaseManagerService; + +/** + * 站点分配Service业务层处理 + * + * @author vinjor-m + * @date 2025-08-11 + */ +@Service +public class BaseManagerServiceImpl extends ServiceImpl implements IBaseManagerService +{ + @Autowired + private BaseManagerMapper baseManagerMapper; + + @Override + public IPage queryListPage(ManagerVO pageReqVO, Page page) { + return baseManagerMapper.queryListPage(pageReqVO, page); + } + + /** + * 根据站点编码查负责的用户 + * + * @param tenantId TODO + * @return java.util.List + * @author vinjor-M + * @date 15:33 2025/8/11 + **/ + @Override + public List getManagerUserByTenantId(String tenantId) { + return null; + } +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseSiteServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseSiteServiceImpl.java index a77ea7e..df30c94 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseSiteServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseSiteServiceImpl.java @@ -1,9 +1,12 @@ package com.ruoyi.base.service.impl; import java.util.List; + +import com.ruoyi.base.vo.SiteVO; import com.ruoyi.common.utils.DateUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -24,7 +27,24 @@ public class BaseSiteServiceImpl extends ServiceImpl i private BaseSiteMapper baseSiteMapper; @Override - public IPage queryListPage(BaseSite pageReqVO, Page page) { + public IPage queryListPage(BaseSite pageReqVO, Page page) { return baseSiteMapper.queryListPage(pageReqVO, page); } + + /** + * 查询本人可以管理的站点 + * + * @return java.util.List + * @author vinjor-M + * @date 16:17 2025/8/11 + **/ + @Override + public List getMySiteList() { + Long userId = SecurityUtils.getUserId(); + if(1==userId){ + //超级管理员,查所有站点 + return this.list(); + } + return baseSiteMapper.selectByUserId(userId); + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/ManagerVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/ManagerVO.java new file mode 100644 index 0000000..cdaf9c4 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/ManagerVO.java @@ -0,0 +1,25 @@ +package com.ruoyi.base.vo; + +import com.ruoyi.base.domain.BaseManager; +import com.ruoyi.base.domain.BasePics; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class ManagerVO extends BaseManager { + /** + * 站点名称 + **/ + private String siteName; + /** + * 用户名称 + **/ + private String userName; + /** + * 站点名称 + **/ + private String siteId; +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/SiteVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/SiteVO.java new file mode 100644 index 0000000..b8b4ad5 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/SiteVO.java @@ -0,0 +1,14 @@ +package com.ruoyi.base.vo; + +import com.ruoyi.base.domain.BaseSite; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SiteVO extends BaseSite { + /** + * 站点管理人姓名 + **/ + private String managerUser; +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiPageController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiPageController.java new file mode 100644 index 0000000..30c9ef8 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/controller/BusiPageController.java @@ -0,0 +1,108 @@ +package com.ruoyi.busi.controller; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.busi.vo.BusiPageVO; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +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.busi.domain.BusiPage; +import com.ruoyi.busi.service.IBusiPageService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 全站网页访问次数统计Controller + * + * @author vinjor-m + * @date 2025-08-07 + */ +@RestController +@RequestMapping("/busi/page") +public class BusiPageController extends BaseController +{ + @Autowired + private IBusiPageService busiPageService; + + /** + * 查询全站网页访问次数统计列表---排名前10 + */ + @PreAuthorize("@ss.hasPermi('busi:page:list')") + @GetMapping("/list") + public AjaxResult list(BusiPageVO busiPage){ + return success(busiPageService.queryListNum(busiPage)); + } + + /** + * 导出全站网页访问次数统计列表 + */ + @PreAuthorize("@ss.hasPermi('busi:page:export')") + @Log(title = "全站网页访问次数统计", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, BusiPage busiPage) + { + List list = busiPageService.list(); + ExcelUtil util = new ExcelUtil(BusiPage.class); + util.exportExcel(response, list, "全站网页访问次数统计数据"); + } + + /** + * 获取全站网页访问次数统计详细信息 + */ + @PreAuthorize("@ss.hasPermi('busi:page:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(busiPageService.getById(id)); + } + + /** + * 新增全站网页访问次数统计 + */ + @PreAuthorize("@ss.hasPermi('busi:page:add')") + @Log(title = "全站网页访问次数统计", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody BusiPage busiPage) + { + return toAjax(busiPageService.save(busiPage)); + } + + /** + * 修改全站网页访问次数统计 + */ + @PreAuthorize("@ss.hasPermi('busi:page:edit')") + @Log(title = "全站网页访问次数统计", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody BusiPage busiPage) + { + return toAjax(busiPageService.updateById(busiPage)); + } + + /** + * 删除全站网页访问次数统计 + */ + @PreAuthorize("@ss.hasPermi('busi:page:remove')") + @Log(title = "全站网页访问次数统计", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + List list = new ArrayList<>(Arrays.asList(ids)); + return toAjax(busiPageService.removeByIds(list)); + } +} 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 index 3a0bcd1..8840514 100644 --- 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 @@ -5,6 +5,7 @@ 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.ChartDataVO; import com.ruoyi.busi.vo.ThirdVO; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; @@ -66,4 +67,19 @@ public class StatisticsController extends BaseController public AjaxResult countryChart(String tenantId,String startDate,String endDate){ return success(busiThirdItemService.nationalData(tenantId,startDate,endDate,null)); } + + /** + * 询盘国家列表--分页表格 + */ + @GetMapping("/inquiryCountryList") + public AjaxResult inquiryCountryList(@RequestParam(name = "tenantId", defaultValue = "1") String tenantId, + @RequestParam(name = "startDate", defaultValue = "1") String startDate, + @RequestParam(name = "endDate", defaultValue = "1") String endDate, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + List list = busiThirdItemService.nationalData(tenantId,startDate,endDate,null); + int startIndex = (pageNum-1)*pageSize; + int endIndex = Math.min(startIndex+pageSize,list.size()); + return success(list.subList(startIndex,endIndex)); + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java index 4dd6fb6..b48c161 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiCategory.java @@ -84,16 +84,28 @@ public class BusiCategory extends DlBaseEntity @Excel(name = "内容html", readConverterExp = "适=用于单页面+询盘") @ApiModelProperty("内容html") private String content; + /** 内容html-移动端(适用于单页面+询盘) */ + @Excel(name = "内容html-移动端", readConverterExp = "适=用于单页面+询盘") + @ApiModelProperty("内容html-移动端") + private String contentApp; /** 产品上方内容html(适用于产品) */ @Excel(name = "产品上方内容html", readConverterExp = "适=用于产品") @ApiModelProperty("产品上方内容html") private String prodUp; + /** 产品上方内容html-移动端(适用于产品) */ + @Excel(name = "产品上方内容html-移动端", readConverterExp = "适=用于产品") + @ApiModelProperty("产品上方内容html-移动端") + private String prodUpApp; /** 产品下方内容html(适用于产品) */ @Excel(name = "产品下方内容html", readConverterExp = "适=用于产品") @ApiModelProperty("产品下方内容html") private String prodDown; + /** 产品下方内容html-移动端(适用于产品) */ + @Excel(name = "产品下方内容html-移动端", readConverterExp = "适=用于产品") + @ApiModelProperty("产品下方内容html-移动端") + private String prodDownApp; /** 站点唯一编码(租户id) */ @Excel(name = "站点唯一编码", readConverterExp = "租=户id") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiPage.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiPage.java new file mode 100644 index 0000000..9d26e54 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiPage.java @@ -0,0 +1,64 @@ +package com.ruoyi.busi.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; +import com.ruoyi.common.core.domain.DlBaseEntity; + +import java.util.Date; + +/** + * 全站网页访问次数统计对象 dl_busi_page + * + * @author vinjor-m + * @date 2025-08-07 + */ +@TableName("dl_busi_page") +@Data +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "BusiPage", description = "网页访问次数实体") +public class BusiPage +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** 网页地址 */ + @Excel(name = "网页地址") + @ApiModelProperty("网页地址") + private String url; + + /** 设备类型 */ + @Excel(name = "设备类型") + @ApiModelProperty("设备类型") + private String equipment; + + /** 来源IP */ + @Excel(name = "来源IP") + private String ip; + + /** 来源国家 */ + @Excel(name = "来源国家") + private String national; + /** 洲 */ + @Excel(name = "洲") + private String oceania; + + /** 站点唯一编码(租户id) */ + @Excel(name = "站点唯一编码", readConverterExp = "租=户id") + @ApiModelProperty("站点唯一编码") + private String tenantId; + /** 创建时间 */ + @TableField(fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiPageMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiPageMapper.java new file mode 100644 index 0000000..735202e --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/mapper/BusiPageMapper.java @@ -0,0 +1,24 @@ +package com.ruoyi.busi.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.busi.domain.BusiPage; +import com.ruoyi.busi.vo.BusiPageVO; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 全站网页访问次数统计Mapper接口 + * + * @author vinjor-m + * @date 2025-08-07 + */ +@Mapper +public interface BusiPageMapper extends BaseMapper +{ + IPage queryListPage(@Param("entity") BusiPage entity, Page page); + + List selectListCus(@Param("entity")BusiPageVO busiPageVO); +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiPageService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiPageService.java new file mode 100644 index 0000000..7609302 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiPageService.java @@ -0,0 +1,40 @@ +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; +import com.ruoyi.busi.domain.BusiPage; +import com.ruoyi.busi.vo.BusiPageVO; + +import javax.servlet.http.HttpServletRequest; + +/** + * 全站网页访问次数统计Service接口 + * + * @author vinjor-m + * @date 2025-08-07 + */ +public interface IBusiPageService extends IService +{ + IPage queryListPage(BusiPage pageReqVO, Page page); + + /** + * 保存网页访问记录 + * @author vinjor-M + * @date 11:13 2025/8/7 + * @param busiPage TODO + **/ + void pageSave(BusiPage busiPage); + + /** + * 查全站访问网页前十 + * @author vinjor-M + * @date 16:52 2025/8/7 + * @param busiPage TODO + * @return java.util.List + **/ + List queryListNum(BusiPageVO busiPage); +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiPageServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiPageServiceImpl.java new file mode 100644 index 0000000..acb5d13 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiPageServiceImpl.java @@ -0,0 +1,104 @@ +package com.ruoyi.busi.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.busi.utils.CommonUtils; +import com.ruoyi.busi.vo.BusiPageVO; +import com.ruoyi.common.utils.DateUtils; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.constant.StrConstants; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.busi.mapper.BusiPageMapper; +import com.ruoyi.busi.domain.BusiPage; +import com.ruoyi.busi.service.IBusiPageService; + +import javax.servlet.http.HttpServletRequest; + +/** + * 全站网页访问次数统计Service业务层处理 + * + * @author vinjor-m + * @date 2025-08-07 + */ +@Service +public class BusiPageServiceImpl extends ServiceImpl implements IBusiPageService +{ + @Autowired + private BusiPageMapper busiPageMapper; + @Autowired + private CommonUtils commonUtils; + + @Override + public IPage queryListPage(BusiPage pageReqVO, Page page) { + return busiPageMapper.queryListPage(pageReqVO, page); + } + + /** + * 保存网页访问记录 + * + * @param busiPage TODO + * @author vinjor-M + * @date 11:13 2025/8/7 + **/ + @Override + public void pageSave(BusiPage busiPage) { + // 2. 异步保存到数据库(RuoYi已内置线程池) + CompletableFuture.runAsync(() -> { + Map ipMap = commonUtils.getCountryByIp(busiPage.getIp()); + busiPage.setNational(ipMap.get("national")); + busiPage.setOceania(ipMap.get("oceania")); + this.save(busiPage); + }); + } + + /** + * 查全站访问网页前十 + * + * @param busiPage TODO + * @return java.util.List + * @author vinjor-M + * @date 16:52 2025/8/7 + **/ + @Override + public List queryListNum(BusiPageVO busiPage) { + if(StringUtils.isNotEmpty(busiPage.getStartDate())){ + busiPage.setStartDate(busiPage.getStartDate()+ StrConstants.START_DATE); + } + if(StringUtils.isNotEmpty(busiPage.getEndDate())){ + busiPage.setEndDate(busiPage.getEndDate()+StrConstants.END_DATE); + } + List rtnList = new ArrayList<>(); + List dataList = busiPageMapper.selectListCus(busiPage); + // 1. 按 url 分组并统计数量 + Map countMap = dataList.stream() + .collect(Collectors.groupingBy( + // 分组字段 + BusiPageVO::getUrl, + // 统计数量 + Collectors.counting() + )); + // 2. 按数量降序排序,并取前10 + List> top10 = countMap.entrySet().stream() + // 降序排序 + .sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue())) + // 取前10 + .limit(10) + .collect(Collectors.toList()); + top10.forEach(item->{ + BusiPageVO pageVO = new BusiPageVO(); + pageVO.setUrl(item.getKey()); + pageVO.setNum(item.getValue()); + rtnList.add(pageVO); + }); + return rtnList; + } +} diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/CommonUtils.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/CommonUtils.java index d15f980..e4d75ce 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/CommonUtils.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/utils/CommonUtils.java @@ -1,9 +1,12 @@ package com.ruoyi.busi.utils; import cn.hutool.core.util.StrUtil; +import com.ruoyi.base.service.IBaseNationalService; +import com.ruoyi.common.utils.StringUtils; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.poi.util.IOUtils; import org.lionsoul.ip2region.xdb.Searcher; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; @@ -24,6 +27,9 @@ import java.util.stream.Collectors; @Slf4j public class CommonUtils { + @Autowired + private IBaseNationalService nationalService; + private static final String UNKNOWN = "unknown"; /** @@ -102,4 +108,60 @@ public class CommonUtils { } return yearMonthList; } + + /** + * 根据请求查询IP、所属国家和洲 + * @author vinjor-M + * @date 15:48 2025/8/7 + * @return java.util.Map + **/ + public Map getIPAndCountry(HttpServletRequest request){ + Map rtnMap = new HashMap<>(); + String ip = ""; + String nationalStr = ""; + try { + ip = CommonUtils.getIpAddr(request); + nationalStr = CommonUtils.getAddr(ip); + } catch (Exception e) { + log.error("识别所属国家失败"); + } + ip = StringUtils.isNotEmpty(ip) ? ip : "未知"; + nationalStr = StringUtils.isNotEmpty(nationalStr) ? nationalStr : "未知"; + String national = nationalStr.split("\\|")[0]; + String oceania = "未知"; + Map nationalMap = nationalService.getNationalMap(); + if (nationalMap.containsKey(national)) { + oceania = nationalMap.get(national); + } + rtnMap.put("ip",ip); + rtnMap.put("national",national); + rtnMap.put("oceania",oceania); + return rtnMap; + } + + /** + * 根据IP查询所属国家和洲 + * @author vinjor-M + * @date 15:48 2025/8/7 + * @return java.util.Map + **/ + public Map getCountryByIp(String ip){ + Map rtnMap = new HashMap<>(); + String nationalStr = ""; + try { + nationalStr = CommonUtils.getAddr(ip); + } catch (Exception e) { + log.error("识别所属国家失败"); + } + nationalStr = StringUtils.isNotEmpty(nationalStr) ? nationalStr : "未知"; + String national = nationalStr.split("\\|")[0]; + String oceania = "未知"; + Map nationalMap = nationalService.getNationalMap(); + if (nationalMap.containsKey(national)) { + oceania = nationalMap.get(national); + } + rtnMap.put("national",national); + rtnMap.put("oceania",oceania); + return rtnMap; + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiPageVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiPageVO.java new file mode 100644 index 0000000..187a66d --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/vo/BusiPageVO.java @@ -0,0 +1,19 @@ +package com.ruoyi.busi.vo; + +import com.ruoyi.busi.domain.BusiPage; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@Data +public class BusiPageVO extends BusiPage { + + /** 时间范围-开始 */ + private String startDate; + /** 时间范围-结束 */ + private String endDate; + /** 访问次数 */ + private Long num; + /** 是否归属中国 */ + private Boolean ifChina; +} diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseManagerMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseManagerMapper.xml new file mode 100644 index 0000000..393f049 --- /dev/null +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseManagerMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + select id, user_id, tenant_id, creator, create_time, updater, update_time, del_flag from dl_base_manager + + + + + \ No newline at end of file diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseSiteInfoMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseSiteInfoMapper.xml index 6148c1d..71e21a6 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseSiteInfoMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseSiteInfoMapper.xml @@ -19,6 +19,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -28,7 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, company_name, fax_number, brand_name, tel, email, teams, copyright, address, icon, logo, qr_code, contact_us,company_info, tenant_id, creator, create_time, updater, update_time, del_flag from dl_base_site_info + select id, company_name, fax_number, brand_name, tel, email, teams, copyright, address, icon, logo, qr_code, contact_us,company_info,company_info_app, tenant_id, creator, create_time, updater, update_time, del_flag from dl_base_site_info - - - and del_flag='0' - and site_name like concat('%', #{entity.siteName}, '%') - and site_url = #{entity.siteUrl} - and site_content = #{entity.siteContent} - + SELECT + dbs.*, + GROUP_CONCAT( su.nick_name ) AS managerUser + FROM + dl_base_site dbs + LEFT JOIN dl_base_manager dbm ON dbs.id = dbm.tenant_id + AND dbm.del_flag = '0' + LEFT JOIN sys_user su ON dbm.user_id = su.user_id + WHERE + dbs.del_flag = '0' + and dbs.site_name like concat('%', #{entity.siteName}, '%') + and dbs.site_url = #{entity.siteUrl} + and dbs.site_content = #{entity.siteContent} + GROUP BY + dbs.id + + + \ No newline at end of file diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml index f268318..0fa0f0d 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiCategoryMapper.xml @@ -17,8 +17,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + @@ -28,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, catg_name, catg_level, catg_type, parent_id, prods_junior, prods_all, title, keyword, description, sort, content, prod_up, prod_down, tenant_id, creator, create_time, updater, update_time, del_flag from dl_busi_category + select id, catg_name, catg_level, catg_type, parent_id, prods_junior, prods_all, title, keyword, description, sort, content,content_app, prod_up,prod_up_app, prod_down,prod_down_app, tenant_id, creator, create_time, updater, update_time, del_flag from dl_busi_category + + + and url = #{entity.url} + and equipment = #{entity.equipment} + and ip = #{entity.ip} + and national = #{entity.national} + and tenant_id = #{entity.tenantId} + + + + \ No newline at end of file diff --git a/dl_vue/.env.development b/dl_vue/.env.development index a050276..5c95054 100644 --- a/dl_vue/.env.development +++ b/dl_vue/.env.development @@ -5,7 +5,7 @@ VUE_APP_TITLE = 成事达管理平台 ENV = 'development' # 成事达管理平台/开发环境 -VUE_APP_BASE_API = 'http://127.0.0.1:8099' +VUE_APP_BASE_API = 'http://192.168.1.13:8099' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/dl_vue/src/api/base/manager.js b/dl_vue/src/api/base/manager.js new file mode 100644 index 0000000..e4ec671 --- /dev/null +++ b/dl_vue/src/api/base/manager.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询站点分配列表 +export function listManager(query) { + return request({ + url: '/base/manager/list', + method: 'get', + params: query + }) +} + +// 查询站点分配详细 +export function getManager(id) { + return request({ + url: '/base/manager/' + id, + method: 'get' + }) +} + +// 新增站点分配 +export function addManager(data) { + return request({ + url: '/base/manager', + method: 'post', + data: data + }) +} + +// 修改站点分配 +export function updateManager(data) { + return request({ + url: '/base/manager', + method: 'put', + data: data + }) +} + +// 删除站点分配 +export function delManager(id) { + return request({ + url: '/base/manager/' + id, + method: 'delete' + }) +} diff --git a/dl_vue/src/api/busi/page.js b/dl_vue/src/api/busi/page.js new file mode 100644 index 0000000..b9ce068 --- /dev/null +++ b/dl_vue/src/api/busi/page.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询全站网页访问次数统计列表 +export function listPage(query) { + return request({ + url: '/busi/page/list', + method: 'get', + params: query + }) +} + +// 查询全站网页访问次数统计详细 +export function getPage(id) { + return request({ + url: '/busi/page/' + id, + method: 'get' + }) +} + +// 新增全站网页访问次数统计 +export function addPage(data) { + return request({ + url: '/busi/page', + method: 'post', + data: data + }) +} + +// 修改全站网页访问次数统计 +export function updatePage(data) { + return request({ + url: '/busi/page', + method: 'put', + data: data + }) +} + +// 删除全站网页访问次数统计 +export function delPage(id) { + return request({ + url: '/busi/page/' + id, + method: 'delete' + }) +} diff --git a/dl_vue/src/layout/components/Navbar.vue b/dl_vue/src/layout/components/Navbar.vue index 05d2895..d276c80 100644 --- a/dl_vue/src/layout/components/Navbar.vue +++ b/dl_vue/src/layout/components/Navbar.vue @@ -1,35 +1,37 @@ @@ -72,9 +75,9 @@ export default { }, data() { return { - tenantName:getTenantName(), + tenantName: getTenantName(), } - }, + }, computed: { ...mapGetters([ 'sidebar', @@ -98,6 +101,8 @@ export default { } } }, + created() { + }, methods: { toggleSideBar() { this.$store.dispatch('app/toggleSideBar') @@ -111,7 +116,11 @@ export default { this.$store.dispatch('LogOut').then(() => { location.href = '/index' }) - }).catch(() => {}) + }).catch(() => { + }) + }, + changeSite(){ + this.$emit("changeSite") } } } @@ -123,7 +132,7 @@ export default { overflow: hidden; position: relative; background: #fff; - box-shadow: 0 1px 4px rgba(0,21,41,.08); + box-shadow: 0 1px 4px rgba(0, 21, 41, .08); .hamburger-container { line-height: 46px; @@ -131,7 +140,7 @@ export default { float: left; cursor: pointer; transition: background .3s; - -webkit-tap-highlight-color:transparent; + -webkit-tap-highlight-color: transparent; &:hover { background: rgba(0, 0, 0, .025) diff --git a/dl_vue/src/layout/index.vue b/dl_vue/src/layout/index.vue index dba4393..d3ee9f4 100644 --- a/dl_vue/src/layout/index.vue +++ b/dl_vue/src/layout/index.vue @@ -4,7 +4,7 @@
- +
@@ -12,6 +12,26 @@
+ + + + + + + 取 消 + 确 定 + + @@ -21,6 +41,8 @@ import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components' import ResizeMixin from './mixin/ResizeHandler' import { mapState } from 'vuex' import variables from '@/assets/styles/variables.scss' +import { listAllSite } from '@/api/base/site' +import { getToken,getTenantId,setTenantId, setTenantName } from '@/utils/auth' export default { name: 'Layout', @@ -32,6 +54,14 @@ export default { Sidebar, TagsView }, + data(){ + return{ + centerDialogVisible: false, + //默认主站点 + chooseSiteCode: 'main', + options: [], + } + }, mixins: [ResizeMixin], computed: { ...mapState({ @@ -54,10 +84,40 @@ export default { return variables; } }, + created() { + this.chooseSiteCode = getTenantId() + this.getSiteList() + }, methods: { handleClickOutside() { this.$store.dispatch('app/closeSideBar', { withoutAnimation: false }) - } + }, + showChangeSite(){ + this.centerDialogVisible = true + }, + getSiteList(){ + listAllSite().then(response => { + if (response.data && response.data.length > 0) { + response.data.map((item) => { + this.options.push({ + value: item.id, + label: item.siteName + }) + }) + } + }) + }, + chooseSiteCodeFun() { + if (this.chooseSiteCode) { + this.centerDialogVisible = false + let chooseSiteObj = this.options.filter(item => item.value == this.chooseSiteCode)[0] + setTenantId(this.chooseSiteCode) + setTenantName(chooseSiteObj.label) + window.location.reload() + } else { + this.$modal.msgWarning('请选择管理的站点') + } + }, } } diff --git a/dl_vue/src/views/base/info/index.vue b/dl_vue/src/views/base/info/index.vue index 9dc6a82..57fe810 100644 --- a/dl_vue/src/views/base/info/index.vue +++ b/dl_vue/src/views/base/info/index.vue @@ -89,15 +89,20 @@ - - + + - - - + + + + + + + + @@ -130,6 +135,7 @@ export default { qrCode: null, contactUs: null, companyInfo: null, + companyInfoApp: null, tenantId: null, creator: null, createTime: null, diff --git a/dl_vue/src/views/base/manager/index.vue b/dl_vue/src/views/base/manager/index.vue new file mode 100644 index 0000000..c59f7e9 --- /dev/null +++ b/dl_vue/src/views/base/manager/index.vue @@ -0,0 +1,263 @@ + + + diff --git a/dl_vue/src/views/base/site/index.vue b/dl_vue/src/views/base/site/index.vue index 90acdc4..5cf9a0d 100644 --- a/dl_vue/src/views/base/site/index.vue +++ b/dl_vue/src/views/base/site/index.vue @@ -74,6 +74,7 @@ + diff --git a/dl_vue/src/views/statistics/inquiryItem/index.vue b/dl_vue/src/views/statistics/inquiryItem/index.vue index 7308795..353637e 100644 --- a/dl_vue/src/views/statistics/inquiryItem/index.vue +++ b/dl_vue/src/views/statistics/inquiryItem/index.vue @@ -287,7 +287,18 @@ export default { this.download('busi/inquiryItem/export', { ...this.queryParams }, `inquiryItem_${new Date().getTime()}.xlsx`) - } + }, + /** + * 格式化时间戳 + */ + formatDate(timestamp) { + const date = new Date(timestamp) + const year = date.getFullYear() + // 月份是从0开始的,所以要加1 + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` + }, } }; diff --git a/dl_vue/src/views/system/user/selectAllUser.vue b/dl_vue/src/views/system/user/selectAllUser.vue index 1b540ca..648269c 100644 --- a/dl_vue/src/views/system/user/selectAllUser.vue +++ b/dl_vue/src/views/system/user/selectAllUser.vue @@ -27,7 +27,7 @@ - + @@ -44,6 +44,22 @@ + + + + + + + + + + + +