Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
471e0a96fa
@ -10,7 +10,7 @@
|
||||
|
||||
<name>ruoyi</name>
|
||||
<url>http://www.ruoyi.vip</url>
|
||||
<description>通告快接管理后台</description>
|
||||
<description>成事达管理后台</description>
|
||||
|
||||
<properties>
|
||||
<ruoyi.version>3.8.9</ruoyi.version>
|
||||
@ -37,6 +37,8 @@
|
||||
<spring-framework.version>5.3.39</spring-framework.version>
|
||||
<hutool.version>5.8.26</hutool.version>
|
||||
<mybatis-plus.version>3.5.1</mybatis-plus.version>
|
||||
<aliyun.sdk.oss.version>3.17.4</aliyun.sdk.oss.version>
|
||||
<httpclient.version>4.5.13</httpclient.version>
|
||||
</properties>
|
||||
|
||||
<!-- 依赖声明 -->
|
||||
@ -229,7 +231,18 @@
|
||||
<artifactId>ruoyi-common</artifactId>
|
||||
<version>${ruoyi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里云OSS-->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>${aliyun.sdk.oss.version}</version>
|
||||
</dependency>
|
||||
<!-- 简化HTTP请求处理 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>${httpclient.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
@ -9,13 +9,25 @@
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>ruoyi-admin</artifactId>
|
||||
<artifactId>nuxt-site</artifactId>
|
||||
|
||||
<description>
|
||||
web服务入口
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>3.17.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<!--微信支付SDK-->
|
||||
|
||||
<dependency>
|
||||
@ -106,6 +118,38 @@
|
||||
<artifactId>weixin-java-common</artifactId>
|
||||
<version>4.6.0</version>
|
||||
</dependency>
|
||||
<!-- 阿里云OSS-->
|
||||
<dependency>
|
||||
<groupId>com.aliyun.oss</groupId>
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
</dependency>
|
||||
<!-- 简化HTTP请求处理 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-websocket</artifactId>
|
||||
<version>5.3.31</version>
|
||||
</dependency>
|
||||
<!-- ip2region-->
|
||||
<dependency>
|
||||
<groupId>org.lionsoul</groupId>
|
||||
<artifactId>ip2region</artifactId>
|
||||
<version>2.7.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jsoup</groupId>
|
||||
<artifactId>jsoup</artifactId>
|
||||
<version>1.11.3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.api-ads</groupId>
|
||||
<artifactId>google-ads</artifactId>
|
||||
<version>38.0.0</version> <!-- 使用最新版本 -->
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
@ -0,0 +1,112 @@
|
||||
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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.BaseApp;
|
||||
import com.ruoyi.base.service.IBaseAppService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* app版本管理Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/app")
|
||||
public class BaseAppController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBaseAppService baseAppService;
|
||||
|
||||
/**
|
||||
* 查询app版本管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BaseApp baseApp,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BaseApp> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BaseApp> list = baseAppService.queryListPage(baseApp,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出app版本管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:export')")
|
||||
@Log(title = "app版本管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BaseApp baseApp)
|
||||
{
|
||||
List<BaseApp> list = baseAppService.list();
|
||||
ExcelUtil<BaseApp> util = new ExcelUtil<BaseApp>(BaseApp.class);
|
||||
util.exportExcel(response, list, "app版本管理数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取app版本管理详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(baseAppService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增app版本管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:add')")
|
||||
@Log(title = "app版本管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BaseApp baseApp)
|
||||
{
|
||||
return toAjax(baseAppService.save(baseApp));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改app版本管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:edit')")
|
||||
@Log(title = "app版本管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BaseApp baseApp)
|
||||
{
|
||||
return toAjax(baseAppService.updateById(baseApp));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除app版本管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:app:remove')")
|
||||
@Log(title = "app版本管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(baseAppService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.BaseInquiry;
|
||||
import com.ruoyi.base.service.IBaseInquiryService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 在线询盘设置Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/inquiry")
|
||||
public class BaseInquiryController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBaseInquiryService baseInquiryService;
|
||||
|
||||
/**
|
||||
* 获取在线询盘设置详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:inquiry:query')")
|
||||
@GetMapping(value = "/getInquiry")
|
||||
public AjaxResult getInquiry(String tenantId)
|
||||
{
|
||||
return success(baseInquiryService.getInquiry(tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增在线询盘设置
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:inquiry:add')")
|
||||
@Log(title = "在线询盘设置", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BaseInquiry baseInquiry)
|
||||
{
|
||||
return toAjax(baseInquiryService.saveOrUpdate(baseInquiry));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改在线询盘设置
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:inquiry:edit')")
|
||||
@Log(title = "在线询盘设置", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BaseInquiry baseInquiry)
|
||||
{
|
||||
return toAjax(baseInquiryService.saveOrUpdate(baseInquiry));
|
||||
}
|
||||
|
||||
}
|
@ -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<BaseManager> page = new Page<>(pageNum, pageSize);
|
||||
IPage<ManagerVO> 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<BaseManager> list = baseManagerService.list();
|
||||
ExcelUtil<BaseManager> util = new ExcelUtil<BaseManager>(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<BaseManager> lambdaQueryWrapper = new LambdaQueryWrapper<BaseManager>()
|
||||
.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<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(baseManagerService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.BasePic;
|
||||
import com.ruoyi.base.service.IBasePicService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 轮播图管理Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/pic")
|
||||
public class BasePicController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBasePicService basePicService;
|
||||
|
||||
/**
|
||||
* 查询轮播图管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BasePic basePic,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BasePic> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BasePic> list = basePicService.queryListPage(basePic,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出轮播图管理列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:export')")
|
||||
@Log(title = "轮播图管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BasePic basePic)
|
||||
{
|
||||
List<BasePic> list = basePicService.list();
|
||||
ExcelUtil<BasePic> util = new ExcelUtil<BasePic>(BasePic.class);
|
||||
util.exportExcel(response, list, "轮播图管理数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取轮播图管理详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(basePicService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增轮播图管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:add')")
|
||||
@Log(title = "轮播图管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BasePic basePic)
|
||||
{
|
||||
return toAjax(basePicService.save(basePic));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改轮播图管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:edit')")
|
||||
@Log(title = "轮播图管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BasePic basePic)
|
||||
{
|
||||
return toAjax(basePicService.updateById(basePic));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除轮播图管理
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pic:remove')")
|
||||
@Log(title = "轮播图管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(basePicService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.base.vo.PicsVO;
|
||||
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.BasePics;
|
||||
import com.ruoyi.base.service.IBasePicsService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 图片库Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/pics")
|
||||
public class BasePicsController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBasePicsService basePicsService;
|
||||
|
||||
/**
|
||||
* 查询图片库列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BasePics basePics,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BasePics> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BasePics> list = basePicsService.queryListPage(basePics,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出图片库列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:export')")
|
||||
@Log(title = "图片库", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BasePics basePics)
|
||||
{
|
||||
List<BasePics> list = basePicsService.list();
|
||||
ExcelUtil<BasePics> util = new ExcelUtil<BasePics>(BasePics.class);
|
||||
util.exportExcel(response, list, "图片库数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图片库详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(basePicsService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增图片库
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:add')")
|
||||
@Log(title = "图片库", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody PicsVO basePics)
|
||||
{
|
||||
List<BasePics> basePicsList = basePics.getFileList();
|
||||
basePicsList.forEach(item->{
|
||||
item.setFileType(basePics.getFileType());
|
||||
item.setTenantId(basePics.getTenantId());
|
||||
});
|
||||
return toAjax(basePicsService.saveBatch(basePicsList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改图片库
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:edit')")
|
||||
@Log(title = "图片库", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BasePics basePics)
|
||||
{
|
||||
return toAjax(basePicsService.updateById(basePics));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除图片库
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:pics:remove')")
|
||||
@Log(title = "图片库", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(basePicsService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package com.ruoyi.base.controller;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
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.KeywordVO;
|
||||
import com.ruoyi.busi.service.GoogleKeywordService;
|
||||
import com.ruoyi.common.config.GoogleConfig;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
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.BaseSeo;
|
||||
import com.ruoyi.base.service.IBaseSeoService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
import static com.ruoyi.constant.StrConstants.COUNTRY;
|
||||
import static com.ruoyi.constant.StrConstants.LANGUAGE;
|
||||
|
||||
/**
|
||||
* SEO用到的国家和语言Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-04
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/seo")
|
||||
public class BaseSeoController extends BaseController {
|
||||
@Autowired
|
||||
private GoogleConfig googleConfig;
|
||||
@Autowired
|
||||
private IBaseSeoService baseSeoService;
|
||||
@Autowired
|
||||
private GoogleKeywordService googleKeywordService;
|
||||
|
||||
/**
|
||||
* 查询SEO用到的国家和语言列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list() {
|
||||
LambdaQueryWrapper<BaseSeo> queryWrapper = new LambdaQueryWrapper<BaseSeo>().orderByAsc(BaseSeo::getSort);
|
||||
List<BaseSeo> list = baseSeoService.list(queryWrapper);
|
||||
List<BaseSeo> languageList = list.stream().filter(item -> LANGUAGE.equals(item.getDataType())).collect(Collectors.toList());
|
||||
List<BaseSeo> countryList = list.stream().filter(item -> COUNTRY.equals(item.getDataType())).collect(Collectors.toList());
|
||||
languageList.forEach(item->item.setTitle(item.getTitle()+"("+item.getCn()+")"));
|
||||
countryList.forEach(item->item.setTitle(item.getTitle()+"("+item.getCn()+")"));
|
||||
Map<String, Object> rtnMap = new HashMap<>();
|
||||
rtnMap.put("language", languageList);
|
||||
rtnMap.put("country", countryList);
|
||||
return success(rtnMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取google关键词
|
||||
*
|
||||
* @param language 语言
|
||||
* @param country 国家
|
||||
* @param title 关键词
|
||||
* @param url 产品预览网址
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 17:51 2025/8/4
|
||||
**/
|
||||
@GetMapping("/getKeywords")
|
||||
public AjaxResult getKeywords(String language, String country, String title, String url) {
|
||||
Map<String,Object> rtnMap = new HashMap<>();
|
||||
rtnMap.put("searchDown",googleConfig.getSearchDown());
|
||||
rtnMap.put("dataList",googleKeywordService.getKeywords(language, country, title, url));
|
||||
return success(rtnMap);
|
||||
}
|
||||
}
|
@ -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<BaseSite> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BaseSite> list = baseSiteService.queryListPage(baseSite, page);
|
||||
IPage<SiteVO> 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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -39,41 +39,15 @@ public class BaseSiteInfoController extends BaseController
|
||||
@Autowired
|
||||
private IBaseSiteInfoService baseSiteInfoService;
|
||||
|
||||
/**
|
||||
* 查询站点基础信息列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:info:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BaseSiteInfo baseSiteInfo,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BaseSiteInfo> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BaseSiteInfo> list = baseSiteInfoService.queryListPage(baseSiteInfo,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出站点基础信息列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:info:export')")
|
||||
@Log(title = "站点基础信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BaseSiteInfo baseSiteInfo)
|
||||
{
|
||||
List<BaseSiteInfo> list = baseSiteInfoService.list();
|
||||
ExcelUtil<BaseSiteInfo> util = new ExcelUtil<BaseSiteInfo>(BaseSiteInfo.class);
|
||||
util.exportExcel(response, list, "站点基础信息数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取站点基础信息详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:info:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
@GetMapping(value = "/getSiteInfo")
|
||||
public AjaxResult getInfo(String tenantId)
|
||||
{
|
||||
return success(baseSiteInfoService.getById(id));
|
||||
return success(baseSiteInfoService.getSiteInfo(tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -84,7 +58,7 @@ public class BaseSiteInfoController extends BaseController
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BaseSiteInfo baseSiteInfo)
|
||||
{
|
||||
return toAjax(baseSiteInfoService.save(baseSiteInfo));
|
||||
return toAjax(baseSiteInfoService.saveOrUpdate(baseSiteInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -98,15 +72,4 @@ public class BaseSiteInfoController extends BaseController
|
||||
return toAjax(baseSiteInfoService.updateById(baseSiteInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除站点基础信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:info:remove')")
|
||||
@Log(title = "站点基础信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(baseSiteInfoService.removeByIds(list));
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,112 @@
|
||||
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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.BaseTemp;
|
||||
import com.ruoyi.base.service.IBaseTempService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 模板库Controller
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-08-07
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/base/temp")
|
||||
public class BaseTempController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBaseTempService baseTempService;
|
||||
|
||||
/**
|
||||
* 查询模板库列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BaseTemp baseTemp,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BaseTemp> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BaseTemp> list = baseTempService.queryListPage(baseTemp,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出模板库列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:export')")
|
||||
@Log(title = "模板库", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BaseTemp baseTemp)
|
||||
{
|
||||
List<BaseTemp> list = baseTempService.list();
|
||||
ExcelUtil<BaseTemp> util = new ExcelUtil<BaseTemp>(BaseTemp.class);
|
||||
util.exportExcel(response, list, "模板库数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板库详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(baseTempService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增模板库有3万块钱的购物卡么
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:add')")
|
||||
@Log(title = "模板库", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BaseTemp baseTemp)
|
||||
{
|
||||
return toAjax(baseTempService.save(baseTemp));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改模板库
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:edit')")
|
||||
@Log(title = "模板库", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BaseTemp baseTemp)
|
||||
{
|
||||
return toAjax(baseTempService.updateById(baseTemp));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板库
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('base:temp:remove')")
|
||||
@Log(title = "模板库", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(baseTempService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,91 @@
|
||||
package com.ruoyi.base.controller;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.ruoyi.busi.domain.BusiChatItem;
|
||||
import com.ruoyi.busi.domain.BusiChatMain;
|
||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||
import com.ruoyi.busi.service.IBusiChatMainService;
|
||||
import com.ruoyi.busi.utils.CommonUtils;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 会话接口 专用Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@Api("会话接口")
|
||||
@RestController
|
||||
@RequestMapping("/chat")
|
||||
public class ChatController {
|
||||
@Autowired
|
||||
private IBusiChatMainService busiChatMainService;
|
||||
@Autowired
|
||||
private CommonUtils commonUtils;
|
||||
@Autowired
|
||||
private IBusiChatItemService busiChatItemService;
|
||||
/**
|
||||
* 创建新会话
|
||||
*/
|
||||
@PostMapping("/newChat")
|
||||
public AjaxResult createSession(@RequestBody BusiChatMain busiChatMain, HttpServletRequest request) {
|
||||
Map<String, String> ipMap = commonUtils.getIPAndCountry(request);
|
||||
busiChatMain.setIp(ipMap.get("ip"));
|
||||
busiChatMain.setNational(ipMap.get("national"));
|
||||
busiChatMain.setOceania(ipMap.get("oceania"));
|
||||
return AjaxResult.success(busiChatMainService.createSession(busiChatMain));
|
||||
}
|
||||
/**
|
||||
* 发送消息
|
||||
*/
|
||||
@PostMapping("/newMes")
|
||||
public AjaxResult sendMessage(@RequestBody BusiChatItem message) {
|
||||
return AjaxResult.success(busiChatItemService.sendMessage(message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户活跃会话
|
||||
*/
|
||||
@GetMapping("/active")
|
||||
public AjaxResult getActiveSession(String tenantId, String deviceCode,@RequestParam(value = "prodId", required = false) String prodId, HttpServletRequest request) {
|
||||
BusiChatMain session = busiChatMainService.selectActiveSession(tenantId, CommonUtils.getIpAddr(request), deviceCode,prodId);
|
||||
return AjaxResult.success(session);
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束会话
|
||||
*/
|
||||
@PutMapping("/close/{sessionId}")
|
||||
public AjaxResult closeSession(@PathVariable String sessionId) {
|
||||
boolean success = busiChatMainService.closeSession(sessionId);
|
||||
return success ? AjaxResult.success() : AjaxResult.error("结束会话失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据会话ID查询消息列表
|
||||
*/
|
||||
@GetMapping("/session/{sessionId}")
|
||||
public AjaxResult getBySessionId(@PathVariable String sessionId) {
|
||||
List<BusiChatItem> messages = busiChatItemService.selectBySessionId(sessionId);
|
||||
return AjaxResult.success(messages);
|
||||
}
|
||||
|
||||
/**
|
||||
* 标记消息为已读
|
||||
*/
|
||||
@PutMapping("/read/{sessionId}")
|
||||
public AjaxResult markAsRead(@PathVariable String sessionId, @RequestParam String receiverId) {
|
||||
busiChatItemService.markAsRead(sessionId, receiverId);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
@ -0,0 +1,526 @@
|
||||
package com.ruoyi.base.controller;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
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.domain.BaseApp;
|
||||
import com.ruoyi.base.domain.BaseInquiry;
|
||||
import com.ruoyi.base.domain.BasePic;
|
||||
import com.ruoyi.base.domain.BaseSiteInfo;
|
||||
import com.ruoyi.base.service.*;
|
||||
import com.ruoyi.busi.domain.*;
|
||||
import com.ruoyi.busi.service.*;
|
||||
import com.ruoyi.busi.utils.CommonUtils;
|
||||
import com.ruoyi.busi.vo.BusiCategoryVO;
|
||||
import com.ruoyi.busi.vo.SiteMapVO;
|
||||
import com.ruoyi.busi.vo.WebDetailVO;
|
||||
import com.ruoyi.common.config.GoogleConfig;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.system.service.ISysDictDataService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.*;
|
||||
|
||||
import static com.ruoyi.constant.DictConstants.*;
|
||||
import static com.ruoyi.constant.DictConstants.CATG_TYPE_WZ;
|
||||
|
||||
/**
|
||||
* Web 专用Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@Api("站点接口")
|
||||
@RestController
|
||||
@RequestMapping("/web")
|
||||
public class WebController extends BaseController {
|
||||
@Autowired
|
||||
private IBasePicService basePicService;
|
||||
@Autowired
|
||||
private IBaseInquiryService baseInquiryService;
|
||||
@Autowired
|
||||
private IBusiCategoryService categoryService;
|
||||
@Autowired
|
||||
private IBaseSiteInfoService siteInfoService;
|
||||
@Autowired
|
||||
private IBusiProdNewService prodNewService;
|
||||
@Autowired
|
||||
private IBusiInquiryItemService inquiryItemService;
|
||||
@Autowired
|
||||
private IBusiChatMainService busiChatMainService;
|
||||
@Autowired
|
||||
private IBusiPageService pageService;
|
||||
@Autowired
|
||||
private CommonUtils commonUtils;
|
||||
@Autowired
|
||||
private ISysDictDataService dictDataService;
|
||||
@Autowired
|
||||
private IBaseAppService appService;
|
||||
@Autowired
|
||||
private GoogleConfig googleConfig;
|
||||
|
||||
/**
|
||||
* 导航栏接口--所有分类
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("获取站点分类树--所有分类")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/category")
|
||||
public R<List<BusiCategoryVO>> categoryList(@RequestParam(required = true) String tenantId) {
|
||||
BusiCategory category = new BusiCategory();
|
||||
category.setTenantId(tenantId);
|
||||
List<BusiCategoryVO> busiCategoryVOList = categoryService.treeCategory(category);
|
||||
return R.ok(categoryService.dealFirstId(busiCategoryVOList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取站点产品分类树--产品分类
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("获取站点分类树--根据一级分类ID查询所有子级分类树")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "catgId", value = "一级分类ID", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
})
|
||||
@GetMapping("/prodCategory")
|
||||
public R<List<BusiCategoryVO>> prodCategoryList(@RequestParam(required = true) String tenantId, @RequestParam(required = true) String catgId) {
|
||||
BusiCategory category = new BusiCategory();
|
||||
category.setTenantId(tenantId);
|
||||
List<BusiCategoryVO> busiCategoryVOList = categoryService.treeCategory(category);
|
||||
for (BusiCategoryVO categoryVO : busiCategoryVOList) {
|
||||
if (catgId.equals(categoryVO.getId())) {
|
||||
return R.ok(categoryVO.getChildren());
|
||||
}
|
||||
}
|
||||
//最顶级的产品分类不反回
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param id 查询单个分类栏目详情--单页面栏目和询盘栏目使用
|
||||
* @return com.ruoyi.common.core.domain.R<com.ruoyi.busi.domain.BusiCategory>
|
||||
* @author vinjor-M
|
||||
* @date 15:44 2025/7/8
|
||||
**/
|
||||
@ApiOperation("查询单个分类栏目详情--单页面栏目和询盘栏目使用")
|
||||
@ApiImplicitParam(name = "id", value = "主键ID", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/categoryInfo")
|
||||
public R<BusiCategory> categoryInfo(@RequestParam(required = true) String id) {
|
||||
return R.ok(categoryService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 轮播图
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("轮播图")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/pic")
|
||||
public R<List<BasePic>> picList(@RequestParam(required = true) String tenantId) {
|
||||
return R.ok(basePicService.list(tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 公司介绍-富文本-首页展示区域
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("公司介绍-富文本-首页展示区域")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/indexCompanyInfo")
|
||||
public R<Map<String, String>> indexCompanyInfo(@RequestParam(required = true) String tenantId) {
|
||||
BaseSiteInfo baseSiteInfo = siteInfoService.getSiteInfo(tenantId);
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("content", baseSiteInfo.getCompanyInfo());
|
||||
map.put("contentApp", baseSiteInfo.getCompanyInfoApp());
|
||||
return R.ok(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 热门产品-前10
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("热门产品-前10")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/hotProduct")
|
||||
public R<List<BusiProdNew>> hotProduct(@RequestParam(required = true) String tenantId) {
|
||||
return R.ok(prodNewService.hotProdOrNews(tenantId, DATA_TYPE_PRODUCT, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通产品-前10
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("普通产品-前10")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/product")
|
||||
public R<List<BusiProdNew>> product(@RequestParam(required = true) String tenantId) {
|
||||
return R.ok(prodNewService.hotProdOrNews(tenantId, DATA_TYPE_PRODUCT, false));
|
||||
}
|
||||
|
||||
/**
|
||||
* 热门新闻-前10
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("热门新闻-前10")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/hotNews")
|
||||
public R<List<BusiProdNew>> hotNews(@RequestParam(required = true) String tenantId) {
|
||||
return R.ok(prodNewService.hotProdOrNews(tenantId, DATA_TYPE_NEWS, true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 页面底部
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("页面底部")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/footerInfo")
|
||||
public R<BaseSiteInfo> footerInfo(@RequestParam(required = true) String tenantId) {
|
||||
return R.ok(siteInfoService.getSiteInfo(tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 产品列表分页
|
||||
*
|
||||
* @param tenantId 租户id
|
||||
* @param catgId 分类ID
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 15:17 2025/7/8
|
||||
**/
|
||||
@ApiOperation("产品列表分页")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "pageNum", value = "页码(1开始)", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示数量", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "catgId", value = "分类id", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "text", value = "搜索内容", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
})
|
||||
@GetMapping("/prodPageList")
|
||||
public R<IPage<BusiProdNew>> prodPageList(String tenantId, String catgId, String text,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<BusiProdNew> page = new Page<>(pageNum, pageSize);
|
||||
LambdaQueryWrapper<BusiProdNew> queryWrapper = new LambdaQueryWrapper<BusiProdNew>()
|
||||
.eq(BusiProdNew::getDataType, DATA_TYPE_PRODUCT)
|
||||
.eq(BusiProdNew::getIfPublic, true)
|
||||
.eq(BusiProdNew::getTenantId, tenantId);
|
||||
if (StringUtils.isNotEmpty(text)) {
|
||||
queryWrapper.and(wq -> wq
|
||||
.like(BusiProdNew::getTitle, text)
|
||||
.or().like(BusiProdNew::getDescription, text)
|
||||
.or().like(BusiProdNew::getContent, text)
|
||||
);
|
||||
}
|
||||
if (StringUtils.isNotEmpty(catgId)) {
|
||||
List<String> catgIdList = new ArrayList<>();
|
||||
catgIdList.add(catgId);
|
||||
catgIdList.addAll(categoryService.getAllChildrenId(catgId));
|
||||
queryWrapper.in(BusiProdNew::getCatgId, catgIdList);
|
||||
}
|
||||
queryWrapper.orderByDesc(BusiProdNew::getSort);
|
||||
//查所有栏目
|
||||
BusiCategory category = new BusiCategory();
|
||||
category.setTenantId(tenantId);
|
||||
category.setCatgType(CATG_TYPE_CP);
|
||||
List<BusiCategoryVO> busiCategoryVOList = categoryService.treeCategory(category);
|
||||
//转map
|
||||
Map<String, String> catgMap = categoryService.dealFirstIdRtnMap(busiCategoryVOList);
|
||||
IPage<BusiProdNew> rtnPage = prodNewService.page(page, queryWrapper);
|
||||
rtnPage.getRecords().forEach(item -> item.setMaxCatgId(catgMap.getOrDefault(item.getCatgId(), "")));
|
||||
return R.ok(rtnPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新闻列表分页
|
||||
*
|
||||
* @param tenantId 租户id
|
||||
* @param catgId 分类ID
|
||||
* @param pageNum
|
||||
* @param pageSize
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 15:17 2025/7/8
|
||||
**/
|
||||
@ApiOperation("新闻列表分页")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "pageNum", value = "页码(1开始)", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示数量", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "catgId", value = "分类id", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "text", value = "搜索内容", required = false, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
})
|
||||
@GetMapping("/newsPageList")
|
||||
public R<IPage<BusiProdNew>> newsPageList(String tenantId, String catgId, String text,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<BusiProdNew> page = new Page<>(pageNum, pageSize);
|
||||
LambdaQueryWrapper<BusiProdNew> queryWrapper = new LambdaQueryWrapper<BusiProdNew>()
|
||||
.eq(BusiProdNew::getDataType, DATA_TYPE_NEWS)
|
||||
.eq(BusiProdNew::getIfPublic, true)
|
||||
.eq(BusiProdNew::getTenantId, tenantId);
|
||||
if (StringUtils.isNotEmpty(text)) {
|
||||
queryWrapper.and(wq -> wq
|
||||
.like(BusiProdNew::getTitle, text)
|
||||
.or().like(BusiProdNew::getDescription, text)
|
||||
.or().like(BusiProdNew::getContent, text)
|
||||
);
|
||||
}
|
||||
if (StringUtils.isNotEmpty(catgId)) {
|
||||
List<String> catgIdList = new ArrayList<>();
|
||||
catgIdList.add(catgId);
|
||||
catgIdList.addAll(categoryService.getAllChildrenId(catgId));
|
||||
queryWrapper.in(BusiProdNew::getCatgId, catgIdList);
|
||||
}
|
||||
queryWrapper.orderByDesc(BusiProdNew::getSort);
|
||||
//查所有栏目
|
||||
BusiCategory category = new BusiCategory();
|
||||
category.setTenantId(tenantId);
|
||||
category.setCatgType(CATG_TYPE_WZ);
|
||||
List<BusiCategoryVO> busiCategoryVOList = categoryService.treeCategory(category);
|
||||
//转map
|
||||
Map<String, String> catgMap = categoryService.dealFirstIdRtnMap(busiCategoryVOList);
|
||||
IPage<BusiProdNew> rtnPage = prodNewService.page(page, queryWrapper);
|
||||
rtnPage.getRecords().forEach(item -> item.setMaxCatgId(catgMap.getOrDefault(item.getCatgId(), "")));
|
||||
return R.ok(rtnPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 产品或新闻详情
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("产品或新闻详情")
|
||||
@ApiImplicitParam(name = "id", value = "产品或新闻ID", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/prodNewsInfo")
|
||||
public R<WebDetailVO> prodNewsInfo(@RequestParam(required = true) String id) {
|
||||
return R.ok(prodNewService.getProdNewInfo(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 全站搜索
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("全站搜索")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "pageNum", value = "页码(1开始)", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示数量", required = true, dataType = "int", paramType = "query", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "text", value = "搜索内容", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
})
|
||||
@GetMapping("/searchText")
|
||||
public R<IPage<BusiProdNew>> searchText(String tenantId, String text,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||
Page<BusiProdNew> page = new Page<>(pageNum, pageSize);
|
||||
return R.ok(prodNewService.searchTextAll(tenantId, text, page));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询盘设置-都有哪些字段需要填写,是否必填
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("查询盘设置-都有哪些字段需要填写,是否必填")
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/inquirySet")
|
||||
public R<BaseInquiry> inquirySet(@RequestParam(required = true) String tenantId, HttpServletRequest request) {
|
||||
String ip = CommonUtils.getIpAddr(request);
|
||||
return R.ok(baseInquiryService.getInquiry(tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交在线询盘表单
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("提交在线询盘表单")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "companyName", value = "公司名称", required = false, paramType = "body"),
|
||||
@ApiImplicitParam(name = "name", value = "姓名", required = false, paramType = "body"),
|
||||
@ApiImplicitParam(name = "tel", value = "电话或WhatsApp", required = false, paramType = "body"),
|
||||
@ApiImplicitParam(name = "title", value = "标题", required = false, paramType = "body"),
|
||||
@ApiImplicitParam(name = "content", value = "内容", required = true, paramType = "body"),
|
||||
@ApiImplicitParam(name = "email", value = "email", required = false, paramType = "body"),
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点编码", required = true, paramType = "body"),
|
||||
@ApiImplicitParam(name = "equipment", value = "设备类型(移动端|电脑端)", required = true, paramType = "body")
|
||||
})
|
||||
@PostMapping("/inquirySave")
|
||||
public R<String> inquirySave(@ApiIgnore @RequestBody BusiInquiryItem inquiryItem, HttpServletRequest request) {
|
||||
Map<String, String> 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导航栏接口--所有分类
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@ApiOperation("站点地图使用接口")
|
||||
@ApiImplicitParams(value = {
|
||||
@ApiImplicitParam(name = "catgType", value = "栏目类型", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class),
|
||||
@ApiImplicitParam(name = "tenantId", value = "站点编码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
})
|
||||
@GetMapping("/siteMap")
|
||||
public R<List<SiteMapVO>> siteMap(@RequestParam(required = true) String tenantId, @RequestParam(required = true) String catgType) {
|
||||
return R.ok(prodNewService.getSiteMap(tenantId, catgType));
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录网页访问次数
|
||||
*
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author vinjor-M
|
||||
* @date 10:04 2025/7/8
|
||||
**/
|
||||
@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<String> pageSave(@ApiIgnore @RequestBody BusiPage busiPage, HttpServletRequest request) {
|
||||
busiPage.setIp(CommonUtils.getIpAddr(request));
|
||||
busiPage.setCreateTime(new Date());
|
||||
pageService.pageSave(busiPage);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@ApiOperation("查询栏目id-APP专用(APP默认主站-main,本接口无需传站点编码,其他接口因需要PC端共用还是要传的)")
|
||||
@ApiImplicitParam(name = "catgName", value = "栏目名称(Products|News|About|Contact)", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class)
|
||||
@GetMapping("/getCatgIdApp")
|
||||
public R<String> getCatgIdApp(@RequestParam(required = true) String catgName) {
|
||||
return R.ok(dictDataService.selectDictLabel(APP_MENU_KEY,catgName));
|
||||
}
|
||||
|
||||
@ApiOperation("查询最新版本APP")
|
||||
@GetMapping("/getNewApp")
|
||||
public R<BaseApp> getNewApp() {
|
||||
return R.ok(appService.selectNewApp());
|
||||
}
|
||||
|
||||
@ApiOperation("下载APK文件")
|
||||
@GetMapping("/downloadApk")
|
||||
public void downloadApk(HttpServletResponse response) {
|
||||
try {
|
||||
// APK文件路径
|
||||
File file = new File(googleConfig.getAppDownload());
|
||||
|
||||
// 检查文件是否存在
|
||||
if (!file.exists()) {
|
||||
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
||||
response.getWriter().write("文件不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
// 设置响应头
|
||||
response.setContentType("application/vnd.android.package-archive");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=truck.apk");
|
||||
response.setHeader("Content-Length", String.valueOf(file.length()));
|
||||
|
||||
// 写入响应流
|
||||
FileInputStream fis = new FileInputStream(file);
|
||||
OutputStream os = response.getOutputStream();
|
||||
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytesRead;
|
||||
while ((bytesRead = fis.read(buffer)) != -1) {
|
||||
os.write(buffer, 0, bytesRead);
|
||||
}
|
||||
|
||||
fis.close();
|
||||
os.flush();
|
||||
os.close();
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
response.getWriter().write("文件下载失败: " + e.getMessage());
|
||||
} catch (Exception ex) {
|
||||
logger.error("下载APK文件时发生错误", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存在线聊天内容
|
||||
*
|
||||
* @param busiChatMain {@link BusiChatMain}
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author PQZ
|
||||
* @date 15:24 2025/7/17
|
||||
**/
|
||||
@PostMapping("/chatMain")
|
||||
public AjaxResult saveChatMain(@RequestBody BusiChatMain busiChatMain, HttpServletRequest request) {
|
||||
String ip = CommonUtils.getIpAddr(request);
|
||||
ip = StringUtils.isNotEmpty(ip) ? ip : "未知";
|
||||
BusiChatMain result = busiChatMainService.queryByIpAndCusCode(ip, busiChatMain.getCusCode(), busiChatMain.getProdId());
|
||||
if (result != null) {
|
||||
return success(result);
|
||||
} else {
|
||||
Map<String, String> ipMap = commonUtils.getIPAndCountry(request);
|
||||
busiChatMain.setIp(ipMap.get("ip"));
|
||||
busiChatMain.setNational(ipMap.get("national"));
|
||||
busiChatMain.setOceania(ipMap.get("oceania"));
|
||||
busiChatMainService.save(busiChatMain);
|
||||
return success(busiChatMain);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.ruoyi.base.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
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;
|
||||
|
||||
/**
|
||||
* app版本管理对象 dl_base_app
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-25
|
||||
*/
|
||||
@TableName("dl_base_app")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseApp extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 版本 */
|
||||
@Excel(name = "版本")
|
||||
private String version;
|
||||
|
||||
/** 本次升级描述 */
|
||||
@Excel(name = "本次升级描述")
|
||||
private String content;
|
||||
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
/**
|
||||
* 在线询盘设置对象 dl_base_inquiry
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@TableName("dl_base_inquiry")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BaseInquiry", description = "询盘设置实体")
|
||||
public class BaseInquiry extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/** 是否开启填写公司名称 */
|
||||
@Excel(name = "公司名称")
|
||||
@ApiModelProperty("公司名称字段是否显示")
|
||||
private Boolean company;
|
||||
|
||||
/** 公司名称是否必填 */
|
||||
@Excel(name = "公司名称是否必填")
|
||||
@ApiModelProperty("公司名称是否必填")
|
||||
private Boolean companyMust;
|
||||
|
||||
/** 是否开启填写email */
|
||||
@Excel(name = "是否开启填写email")
|
||||
@ApiModelProperty("email字段是否显示")
|
||||
private Boolean email;
|
||||
|
||||
/** email是否必填 */
|
||||
@Excel(name = "email是否必填")
|
||||
@ApiModelProperty("email字段是否必填")
|
||||
private Boolean emailMust;
|
||||
|
||||
/** 是否开启填写电话/WhatsApp */
|
||||
@Excel(name = "电话/WhatsApp")
|
||||
@ApiModelProperty("电话/WhatsApp字段是否显示")
|
||||
private Boolean tel;
|
||||
|
||||
/** 是否必填 */
|
||||
@Excel(name = "是否必填")
|
||||
@ApiModelProperty("电话/WhatsApp字段是否必填")
|
||||
private Boolean telMust;
|
||||
|
||||
/** 是否开启填写标题 */
|
||||
@Excel(name = "标题")
|
||||
@ApiModelProperty("标题字段是否显示")
|
||||
private Boolean title;
|
||||
|
||||
/** 是否必填 */
|
||||
@Excel(name = "是否必填")
|
||||
@ApiModelProperty("标题字段是否必填")
|
||||
private Boolean titleMust;
|
||||
|
||||
/** 是否开启填写姓名 */
|
||||
@Excel(name = "姓名")
|
||||
@ApiModelProperty("姓名字段是否显示")
|
||||
private Boolean name;
|
||||
|
||||
/** 是否必填 */
|
||||
@Excel(name = "是否必填")
|
||||
@ApiModelProperty("姓名字段是否必填")
|
||||
private Boolean nameMust;
|
||||
|
||||
/** 提示文字(内容) */
|
||||
@Excel(name = "提示文字", readConverterExp = "内=容")
|
||||
@ApiModelProperty("提示文字(以placeholder形式显示在多行文本框中,要求输入内容时,这个提示以其他方式显示在多行文本框上方或下方)")
|
||||
private String content;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
@ApiModelProperty("站点唯一编码")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
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_national
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-11
|
||||
*/
|
||||
@TableName("dl_base_national")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseNational
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private Integer id;
|
||||
|
||||
/** 国家 */
|
||||
@Excel(name = "国家")
|
||||
private String national;
|
||||
|
||||
/** 洲 */
|
||||
@Excel(name = "洲")
|
||||
private String oceania;
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
/**
|
||||
* 轮播图管理对象 dl_base_pic
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@TableName("dl_base_pic")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BasePic", description = "轮播图")
|
||||
public class BasePic extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
@ApiModelProperty("标题")
|
||||
private String title;
|
||||
|
||||
/** 排序 */
|
||||
@Excel(name = "排序")
|
||||
@ApiModelProperty("排序")
|
||||
private Long sort;
|
||||
|
||||
/** 图片 */
|
||||
@Excel(name = "图片")
|
||||
@ApiModelProperty("图片路径")
|
||||
private String pic;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
@ApiModelProperty("站点唯一编码")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.ruoyi.base.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
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_pics
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@TableName("dl_base_pics")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BasePics extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 所属分类 */
|
||||
@Excel(name = "所属分类")
|
||||
private String fileType;
|
||||
|
||||
/** 图片名称 */
|
||||
@Excel(name = "图片名称")
|
||||
private String name;
|
||||
|
||||
/** 图片路径 */
|
||||
@Excel(name = "图片路径")
|
||||
private String url;
|
||||
|
||||
/** 图片大小 */
|
||||
@Excel(name = "图片大小")
|
||||
private BigDecimal size;
|
||||
|
||||
/** 图片宽 */
|
||||
@Excel(name = "图片宽")
|
||||
private Long width;
|
||||
|
||||
/** 图片高 */
|
||||
@Excel(name = "图片高")
|
||||
private Long height;
|
||||
|
||||
/** 备注 */
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
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;
|
||||
|
||||
/**
|
||||
* SEO用到的国家和语言对象 dl_base_seo
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-04
|
||||
*/
|
||||
@TableName("dl_base_seo")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseSeo extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private Long id;
|
||||
|
||||
/** 数据类型(language-语言|country-国家) */
|
||||
@Excel(name = "数据类型", readConverterExp = "l=anguage-语言|country-国家")
|
||||
private String dataType;
|
||||
|
||||
/** 排序 */
|
||||
@Excel(name = "排序")
|
||||
private Long sort;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 值 */
|
||||
@Excel(name = "值")
|
||||
private String content;
|
||||
|
||||
/** 描述 */
|
||||
@Excel(name = "描述")
|
||||
private String description;
|
||||
|
||||
/** 图片 */
|
||||
@Excel(name = "图片")
|
||||
private String pic;
|
||||
|
||||
/** 中文 */
|
||||
@Excel(name = "中文")
|
||||
private String cn;
|
||||
|
||||
}
|
@ -4,6 +4,8 @@ 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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
@ -20,64 +22,101 @@ import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BaseSiteInfo", description = "站点信息实体")
|
||||
public class BaseSiteInfo extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/** 公司名称 */
|
||||
@Excel(name = "公司名称")
|
||||
@ApiModelProperty("公司名称")
|
||||
private String companyName;
|
||||
|
||||
/** 传真号码 */
|
||||
@Excel(name = "传真号码")
|
||||
@ApiModelProperty("传真号码")
|
||||
private String faxNumber;
|
||||
|
||||
/** 品牌名称 */
|
||||
@Excel(name = "品牌名称")
|
||||
@ApiModelProperty("品牌名称")
|
||||
private String brandName;
|
||||
|
||||
/** 手机号码(发询盘短信要用到,格式:+8618612345678 或者 +886970123456) */
|
||||
@Excel(name = "手机号码(发询盘短信要用到,格式:+8618612345678 或者 +886970123456)")
|
||||
@ApiModelProperty("手机号码")
|
||||
private String tel;
|
||||
/** whatsapp号码(询盘用) */
|
||||
@Excel(name = "whatsapp号码(询盘用)")
|
||||
@ApiModelProperty("whatsapp号码(询盘用)")
|
||||
private String whatsapp;
|
||||
|
||||
/** Email(询盘用) */
|
||||
@Excel(name = "Email", readConverterExp = "询=盘用")
|
||||
@ApiModelProperty("Email")
|
||||
private String email;
|
||||
|
||||
/** Teams账号(询盘用) */
|
||||
@Excel(name = "Teams账号", readConverterExp = "询=盘用")
|
||||
@ApiModelProperty("Teams账号")
|
||||
private String teams;
|
||||
|
||||
/** 版权文字 */
|
||||
@Excel(name = "版权文字")
|
||||
@ApiModelProperty("版权文字")
|
||||
private String copyright;
|
||||
|
||||
/** 联系地址 */
|
||||
@Excel(name = "联系地址")
|
||||
@ApiModelProperty("联系地址")
|
||||
private String address;
|
||||
|
||||
/** 站点icon */
|
||||
@Excel(name = "站点icon")
|
||||
@ApiModelProperty("站点icon")
|
||||
private String icon;
|
||||
|
||||
/** 站点logo */
|
||||
@Excel(name = "站点logo")
|
||||
@ApiModelProperty("站点logo")
|
||||
private String logo;
|
||||
/** 站点logo-移动端 */
|
||||
@Excel(name = "站点logo-移动端")
|
||||
@ApiModelProperty("站点logo-移动端")
|
||||
private String mobileLogo;
|
||||
/** 询盘logo */
|
||||
@Excel(name = "询盘logo")
|
||||
@ApiModelProperty("询盘logo")
|
||||
private String formLogo;
|
||||
|
||||
/** 站点二维码(或手机访问二维码) */
|
||||
@Excel(name = "站点二维码", readConverterExp = "或=手机访问二维码")
|
||||
@ApiModelProperty("站点二维码")
|
||||
private String qrCode;
|
||||
|
||||
/** 站点联系方式html */
|
||||
@Excel(name = "站点联系方式html")
|
||||
@ApiModelProperty("站点联系方式html")
|
||||
private String contactUs;
|
||||
|
||||
/** 公司介绍 */
|
||||
@Excel(name = "公司介绍")
|
||||
@ApiModelProperty("公司介绍")
|
||||
private String companyInfo;
|
||||
|
||||
/** 公司介绍-移动端 */
|
||||
@Excel(name = "公司介绍-移动端")
|
||||
@ApiModelProperty("公司介绍-移动端")
|
||||
private String companyInfoApp;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
@ApiModelProperty("站点唯一编码")
|
||||
private String tenantId;
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
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_temp
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-08-07
|
||||
*/
|
||||
@TableName("dl_base_temp")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseTemp extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
private String title;
|
||||
|
||||
/** 图片 */
|
||||
@Excel(name = "图片")
|
||||
private String file;
|
||||
|
||||
/** 描述 */
|
||||
@Excel(name = "描述")
|
||||
private String remark;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BaseApp;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* app版本管理Mapper接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-25
|
||||
*/
|
||||
@Mapper
|
||||
public interface BaseAppMapper extends BaseMapper<BaseApp>
|
||||
{
|
||||
IPage<BaseApp> queryListPage(@Param("entity") BaseApp entity, Page<BaseApp> page);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BaseInquiry;
|
||||
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-06-24
|
||||
*/
|
||||
@Mapper
|
||||
public interface BaseInquiryMapper extends BaseMapper<BaseInquiry>
|
||||
{
|
||||
IPage<BaseInquiry> queryListPage(@Param("entity") BaseInquiry entity, Page<BaseInquiry> page);
|
||||
}
|
@ -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<BaseManager>
|
||||
{
|
||||
IPage<ManagerVO> queryListPage(@Param("entity") ManagerVO entity, Page<BaseManager> page);
|
||||
|
||||
List<SysUser> selectManagerUserByTenantId(@Param("tenantId")String tenantId);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BaseNational;
|
||||
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-07-11
|
||||
*/
|
||||
@Mapper
|
||||
public interface BaseNationalMapper extends BaseMapper<BaseNational>
|
||||
{
|
||||
IPage<BaseNational> queryListPage(@Param("entity") BaseNational entity, Page<BaseNational> page);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BasePic;
|
||||
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-06-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface BasePicMapper extends BaseMapper<BasePic>
|
||||
{
|
||||
IPage<BasePic> queryListPage(@Param("entity") BasePic entity, Page<BasePic> page);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BasePics;
|
||||
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-06-24
|
||||
*/
|
||||
@Mapper
|
||||
public interface BasePicsMapper extends BaseMapper<BasePics>
|
||||
{
|
||||
IPage<BasePics> queryListPage(@Param("entity") BasePics entity, Page<BasePics> page);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
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.BaseSeo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* SEO用到的国家和语言Mapper接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-04
|
||||
*/
|
||||
@Mapper
|
||||
public interface BaseSeoMapper extends BaseMapper<BaseSeo>
|
||||
{
|
||||
IPage<BaseSeo> queryListPage(@Param("entity") BaseSeo entity, Page<BaseSeo> page);
|
||||
}
|
@ -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<BaseSite>
|
||||
{
|
||||
IPage<BaseSite> queryListPage(@Param("entity") BaseSite entity, Page<BaseSite> page);
|
||||
IPage<SiteVO> queryListPage(@Param("entity") BaseSite entity, Page<BaseSite> page);
|
||||
|
||||
List<BaseSite> selectByUserId(@Param("userId")Long userId);
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
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.BaseTemp;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 模板库Mapper接口
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-08-07
|
||||
*/
|
||||
@Mapper
|
||||
public interface BaseTempMapper extends BaseMapper<BaseTemp>
|
||||
{
|
||||
IPage<BaseTemp> queryListPage(@Param("entity") BaseTemp entity, Page<BaseTemp> page);
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
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.BaseApp;
|
||||
|
||||
/**
|
||||
* app版本管理Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-25
|
||||
*/
|
||||
public interface IBaseAppService extends IService<BaseApp>
|
||||
{
|
||||
IPage<BaseApp> queryListPage(BaseApp pageReqVO, Page<BaseApp> page);
|
||||
|
||||
BaseApp selectNewApp();
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
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.BaseInquiry;
|
||||
|
||||
/**
|
||||
* 在线询盘设置Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
public interface IBaseInquiryService extends IService<BaseInquiry>
|
||||
{
|
||||
IPage<BaseInquiry> queryListPage(BaseInquiry pageReqVO, Page<BaseInquiry> page);
|
||||
|
||||
/**
|
||||
* 查询站点询盘设置
|
||||
* @author vinjor-M
|
||||
* @date 11:01 2025/6/24
|
||||
* @param tenantId 租户id
|
||||
* @return com.ruoyi.base.domain.BaseInquiry
|
||||
**/
|
||||
BaseInquiry getInquiry(String tenantId);
|
||||
}
|
@ -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<BaseManager> {
|
||||
IPage<ManagerVO> queryListPage(ManagerVO pageReqVO, Page<BaseManager> page);
|
||||
|
||||
/**
|
||||
* 根据站点编码查负责的用户
|
||||
* @author vinjor-M
|
||||
* @date 15:33 2025/8/11
|
||||
* @param tenantId TODO
|
||||
* @return java.util.List<com.ruoyi.common.core.domain.entity.SysUser>
|
||||
**/
|
||||
List<SysUser> getManagerUserByTenantId(String tenantId);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.ruoyi.base.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.base.domain.BaseNational;
|
||||
|
||||
/**
|
||||
* 国家列Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-11
|
||||
*/
|
||||
public interface IBaseNationalService extends IService<BaseNational>
|
||||
{
|
||||
IPage<BaseNational> queryListPage(BaseNational pageReqVO, Page<BaseNational> page);
|
||||
|
||||
/**
|
||||
* 返回所有国家列表map
|
||||
* @author vinjor-M
|
||||
* @date 11:36 2025/7/11
|
||||
* @return java.util.Map<java.lang.String,java.lang.String>
|
||||
**/
|
||||
Map<String,String> getNationalMap();
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
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.BasePic;
|
||||
|
||||
/**
|
||||
* 轮播图管理Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
public interface IBasePicService extends IService<BasePic>
|
||||
{
|
||||
IPage<BasePic> queryListPage(BasePic pageReqVO, Page<BasePic> page);
|
||||
|
||||
/**
|
||||
* 查询轮播图列表,不分页
|
||||
* @author vinjor-M
|
||||
* @date 10:33 2025/7/8
|
||||
* @param tenantId 租户id
|
||||
* @return java.util.List<com.ruoyi.base.domain.BasePic>
|
||||
**/
|
||||
List<BasePic> list(String tenantId);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
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.BasePics;
|
||||
|
||||
/**
|
||||
* 图片库Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
public interface IBasePicsService extends IService<BasePics>
|
||||
{
|
||||
IPage<BasePics> queryListPage(BasePics pageReqVO, Page<BasePics> page);
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
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.BaseSeo;
|
||||
|
||||
/**
|
||||
* SEO用到的国家和语言Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-04
|
||||
*/
|
||||
public interface IBaseSeoService extends IService<BaseSeo>
|
||||
{
|
||||
IPage<BaseSeo> queryListPage(BaseSeo pageReqVO, Page<BaseSeo> page);
|
||||
}
|
@ -15,4 +15,13 @@ import com.ruoyi.base.domain.BaseSiteInfo;
|
||||
public interface IBaseSiteInfoService extends IService<BaseSiteInfo>
|
||||
{
|
||||
IPage<BaseSiteInfo> queryListPage(BaseSiteInfo pageReqVO, Page<BaseSiteInfo> page);
|
||||
|
||||
/**
|
||||
* 查询站点详情
|
||||
* @author vinjor-M
|
||||
* @date 11:47 2025/6/23
|
||||
* @param tenantId TODO
|
||||
* @return com.ruoyi.base.domain.BaseSiteInfo
|
||||
**/
|
||||
BaseSiteInfo getSiteInfo(String tenantId);
|
||||
}
|
||||
|
@ -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<BaseSite>
|
||||
{
|
||||
IPage<BaseSite> queryListPage(BaseSite pageReqVO, Page<BaseSite> page);
|
||||
IPage<SiteVO> queryListPage(BaseSite pageReqVO, Page<BaseSite> page);
|
||||
|
||||
/**
|
||||
* 查询本人可以管理的站点
|
||||
* @author vinjor-M
|
||||
* @date 16:17 2025/8/11
|
||||
* @return java.util.List<com.ruoyi.base.domain.BaseSite>
|
||||
**/
|
||||
List<BaseSite> getMySiteList();
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
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.BaseTemp;
|
||||
|
||||
/**
|
||||
* 模板库Service接口
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-08-07
|
||||
*/
|
||||
public interface IBaseTempService extends IService<BaseTemp>
|
||||
{
|
||||
IPage<BaseTemp> queryListPage(BaseTemp pageReqVO, Page<BaseTemp> page);
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
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.BaseAppMapper;
|
||||
import com.ruoyi.base.domain.BaseApp;
|
||||
import com.ruoyi.base.service.IBaseAppService;
|
||||
|
||||
/**
|
||||
* app版本管理Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-25
|
||||
*/
|
||||
@Service
|
||||
public class BaseAppServiceImpl extends ServiceImpl<BaseAppMapper,BaseApp> implements IBaseAppService
|
||||
{
|
||||
@Autowired
|
||||
private BaseAppMapper baseAppMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseApp> queryListPage(BaseApp pageReqVO, Page<BaseApp> page) {
|
||||
return baseAppMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseApp selectNewApp() {
|
||||
LambdaQueryWrapper<BaseApp> queryWrapper = new LambdaQueryWrapper<BaseApp>().orderByDesc(BaseApp::getVersion).orderByDesc(DlBaseEntity::getCreateTime);
|
||||
List<BaseApp> list = this.list(queryWrapper);
|
||||
return list.isEmpty()?null:list.get(0);
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ruoyi.base.domain.BaseSiteInfo;
|
||||
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.BaseInquiryMapper;
|
||||
import com.ruoyi.base.domain.BaseInquiry;
|
||||
import com.ruoyi.base.service.IBaseInquiryService;
|
||||
|
||||
/**
|
||||
* 在线询盘设置Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@Service
|
||||
public class BaseInquiryServiceImpl extends ServiceImpl<BaseInquiryMapper,BaseInquiry> implements IBaseInquiryService
|
||||
{
|
||||
@Autowired
|
||||
private BaseInquiryMapper baseInquiryMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseInquiry> queryListPage(BaseInquiry pageReqVO, Page<BaseInquiry> page) {
|
||||
return baseInquiryMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询站点询盘设置
|
||||
*
|
||||
* @param tenantId 租户id
|
||||
* @return com.ruoyi.base.domain.BaseInquiry
|
||||
* @author vinjor-M
|
||||
* @date 11:01 2025/6/24
|
||||
**/
|
||||
@Override
|
||||
public BaseInquiry getInquiry(String tenantId) {
|
||||
LambdaQueryWrapper<BaseInquiry> queryWrapper = new LambdaQueryWrapper<BaseInquiry>()
|
||||
.eq(BaseInquiry::getTenantId,tenantId);
|
||||
List<BaseInquiry> list = this.list(queryWrapper);
|
||||
return list.isEmpty()?null:list.get(0);
|
||||
}
|
||||
}
|
@ -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<BaseManagerMapper,BaseManager> implements IBaseManagerService
|
||||
{
|
||||
@Autowired
|
||||
private BaseManagerMapper baseManagerMapper;
|
||||
|
||||
@Override
|
||||
public IPage<ManagerVO> queryListPage(ManagerVO pageReqVO, Page<BaseManager> page) {
|
||||
return baseManagerMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据站点编码查负责的用户
|
||||
*
|
||||
* @param tenantId TODO
|
||||
* @return java.util.List<com.ruoyi.common.core.domain.entity.SysUser>
|
||||
* @author vinjor-M
|
||||
* @date 15:33 2025/8/11
|
||||
**/
|
||||
@Override
|
||||
public List<SysUser> getManagerUserByTenantId(String tenantId) {
|
||||
return baseManagerMapper.selectManagerUserByTenantId(tenantId);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
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.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.base.mapper.BaseNationalMapper;
|
||||
import com.ruoyi.base.domain.BaseNational;
|
||||
import com.ruoyi.base.service.IBaseNationalService;
|
||||
|
||||
/**
|
||||
* 国家列Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-11
|
||||
*/
|
||||
@Service
|
||||
public class BaseNationalServiceImpl extends ServiceImpl<BaseNationalMapper,BaseNational> implements IBaseNationalService
|
||||
{
|
||||
@Autowired
|
||||
private BaseNationalMapper baseNationalMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseNational> queryListPage(BaseNational pageReqVO, Page<BaseNational> page) {
|
||||
return baseNationalMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回所有国家列表map
|
||||
*
|
||||
* @return java.util.Map<java.lang.String, java.lang.String>
|
||||
* @author vinjor-M
|
||||
* @date 11:36 2025/7/11
|
||||
**/
|
||||
@Override
|
||||
@Cacheable("national_map")
|
||||
public Map<String, String> getNationalMap() {
|
||||
return this.list().stream().collect(Collectors.toMap(BaseNational::getNational,BaseNational::getOceania));
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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.BasePicMapper;
|
||||
import com.ruoyi.base.domain.BasePic;
|
||||
import com.ruoyi.base.service.IBasePicService;
|
||||
|
||||
/**
|
||||
* 轮播图管理Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-23
|
||||
*/
|
||||
@Service
|
||||
public class BasePicServiceImpl extends ServiceImpl<BasePicMapper,BasePic> implements IBasePicService
|
||||
{
|
||||
@Autowired
|
||||
private BasePicMapper basePicMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BasePic> queryListPage(BasePic pageReqVO, Page<BasePic> page) {
|
||||
return basePicMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询轮播图列表,不分页
|
||||
*
|
||||
* @param tenantId 租户id
|
||||
* @return java.util.List<com.ruoyi.base.domain.BasePic>
|
||||
* @author vinjor-M
|
||||
* @date 10:33 2025/7/8
|
||||
**/
|
||||
@Override
|
||||
public List<BasePic> list(String tenantId) {
|
||||
LambdaQueryWrapper<BasePic> queryWrapper = new LambdaQueryWrapper<BasePic>()
|
||||
.eq(BasePic::getTenantId,tenantId)
|
||||
.orderByDesc(BasePic::getSort);
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
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.BasePicsMapper;
|
||||
import com.ruoyi.base.domain.BasePics;
|
||||
import com.ruoyi.base.service.IBasePicsService;
|
||||
|
||||
/**
|
||||
* 图片库Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-24
|
||||
*/
|
||||
@Service
|
||||
public class BasePicsServiceImpl extends ServiceImpl<BasePicsMapper,BasePics> implements IBasePicsService
|
||||
{
|
||||
@Autowired
|
||||
private BasePicsMapper basePicsMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BasePics> queryListPage(BasePics pageReqVO, Page<BasePics> page) {
|
||||
return basePicsMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
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.BaseSeoMapper;
|
||||
import com.ruoyi.base.domain.BaseSeo;
|
||||
import com.ruoyi.base.service.IBaseSeoService;
|
||||
|
||||
/**
|
||||
* SEO用到的国家和语言Service业务层处理
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-04
|
||||
*/
|
||||
@Service
|
||||
public class BaseSeoServiceImpl extends ServiceImpl<BaseSeoMapper,BaseSeo> implements IBaseSeoService
|
||||
{
|
||||
@Autowired
|
||||
private BaseSeoMapper baseSeoMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseSeo> queryListPage(BaseSeo pageReqVO, Page<BaseSeo> page) {
|
||||
return baseSeoMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -27,4 +29,20 @@ public class BaseSiteInfoServiceImpl extends ServiceImpl<BaseSiteInfoMapper,Base
|
||||
public IPage<BaseSiteInfo> queryListPage(BaseSiteInfo pageReqVO, Page<BaseSiteInfo> page) {
|
||||
return baseSiteInfoMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询站点详情
|
||||
*
|
||||
* @param tenantId TODO
|
||||
* @return com.ruoyi.base.domain.BaseSiteInfo
|
||||
* @author vinjor-M
|
||||
* @date 11:47 2025/6/23
|
||||
**/
|
||||
@Override
|
||||
public BaseSiteInfo getSiteInfo(String tenantId) {
|
||||
LambdaQueryWrapper<BaseSiteInfo> queryWrapper = new LambdaQueryWrapper<BaseSiteInfo>()
|
||||
.eq(BaseSiteInfo::getTenantId,tenantId);
|
||||
List<BaseSiteInfo> list = this.list(queryWrapper);
|
||||
return list.isEmpty()?null:list.get(0);
|
||||
}
|
||||
}
|
||||
|
@ -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<BaseSiteMapper,BaseSite> i
|
||||
private BaseSiteMapper baseSiteMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseSite> queryListPage(BaseSite pageReqVO, Page<BaseSite> page) {
|
||||
public IPage<SiteVO> queryListPage(BaseSite pageReqVO, Page<BaseSite> page) {
|
||||
return baseSiteMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询本人可以管理的站点
|
||||
*
|
||||
* @return java.util.List<com.ruoyi.base.domain.BaseSite>
|
||||
* @author vinjor-M
|
||||
* @date 16:17 2025/8/11
|
||||
**/
|
||||
@Override
|
||||
public List<BaseSite> getMySiteList() {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if(1==userId){
|
||||
//超级管理员,查所有站点
|
||||
return this.list();
|
||||
}
|
||||
return baseSiteMapper.selectByUserId(userId);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,30 @@
|
||||
package com.ruoyi.base.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
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.BaseTempMapper;
|
||||
import com.ruoyi.base.domain.BaseTemp;
|
||||
import com.ruoyi.base.service.IBaseTempService;
|
||||
|
||||
/**
|
||||
* 模板库Service业务层处理
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-08-07
|
||||
*/
|
||||
@Service
|
||||
public class BaseTempServiceImpl extends ServiceImpl<BaseTempMapper,BaseTemp> implements IBaseTempService
|
||||
{
|
||||
@Autowired
|
||||
private BaseTempMapper baseTempMapper;
|
||||
|
||||
@Override
|
||||
public IPage<BaseTemp> queryListPage(BaseTemp pageReqVO, Page<BaseTemp> page) {
|
||||
return baseTempMapper.queryListPage(pageReqVO, page);
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.ruoyi.base.vo;
|
||||
|
||||
import com.ruoyi.base.domain.BasePics;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 谷歌关键词规划师VO
|
||||
* @author vinjor-M
|
||||
* @date 17:53 2025/8/4
|
||||
**/
|
||||
@Data
|
||||
public class KeywordVO {
|
||||
/**
|
||||
* 关键词
|
||||
**/
|
||||
private String title;
|
||||
/**
|
||||
* 月搜索量
|
||||
**/
|
||||
private Long searchMonth;
|
||||
/**
|
||||
* 竞争程度
|
||||
**/
|
||||
private String competition;
|
||||
}
|
@ -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;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package com.ruoyi.base.vo;
|
||||
|
||||
import com.ruoyi.base.domain.BasePics;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class PicsVO extends BasePics {
|
||||
|
||||
/**
|
||||
* 批量传的图片
|
||||
**/
|
||||
private List<BasePics> fileList;
|
||||
}
|
@ -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;
|
||||
}
|
@ -4,6 +4,7 @@ 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 org.springframework.security.access.prepost.PreAuthorize;
|
||||
@ -28,84 +29,67 @@ import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 网站栏目Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-06-19
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/category")
|
||||
public class BusiCategoryController extends BaseController
|
||||
{
|
||||
public class BusiCategoryController extends BaseController {
|
||||
@Autowired
|
||||
private IBusiCategoryService busiCategoryService;
|
||||
|
||||
/**
|
||||
* 查询网站栏目列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:list')")
|
||||
* 网站栏目树形结构
|
||||
*
|
||||
* @param busiCategory {@link BusiCategory}
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
* @author PQZ
|
||||
* @date 14:01 2025/6/23
|
||||
**/
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BusiCategory busiCategory,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiCategory> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BusiCategory> list = busiCategoryService.queryListPage(busiCategory,page);
|
||||
return success(list);
|
||||
public AjaxResult list(BusiCategory busiCategory) {
|
||||
return success(busiCategoryService.treeCategory(busiCategory));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出网站栏目列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:export')")
|
||||
@Log(title = "网站栏目", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiCategory busiCategory)
|
||||
{
|
||||
List<BusiCategory> list = busiCategoryService.list();
|
||||
ExcelUtil<BusiCategory> util = new ExcelUtil<BusiCategory>(BusiCategory.class);
|
||||
util.exportExcel(response, list, "网站栏目数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网站栏目详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:query')")
|
||||
* 获取网站栏目信息
|
||||
* @author PQZ
|
||||
* @date 11:54 2025/6/30
|
||||
* @param id id
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
public AjaxResult getInfo(@PathVariable("id") String id) {
|
||||
return success(busiCategoryService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增网站栏目
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:add')")
|
||||
* 保存网站栏目
|
||||
* @author PQZ
|
||||
* @date 11:54 2025/6/30
|
||||
* @param busiCategory {@link BusiCategory}
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@Log(title = "网站栏目", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BusiCategory busiCategory)
|
||||
{
|
||||
return toAjax(busiCategoryService.save(busiCategory));
|
||||
public AjaxResult add(@RequestBody BusiCategory busiCategory) {
|
||||
return toAjax(busiCategoryService.saveOrUpdate(busiCategory));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改网站栏目
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:edit')")
|
||||
@Log(title = "网站栏目", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiCategory busiCategory)
|
||||
{
|
||||
return toAjax(busiCategoryService.updateById(busiCategory));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除网站栏目
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:category:remove')")
|
||||
* @author PQZ
|
||||
* @date 11:55 2025/6/30
|
||||
* @param ids 删除id
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@Log(title = "网站栏目", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids) {
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiCategoryService.removeByIds(list));
|
||||
}
|
||||
|
@ -0,0 +1,63 @@
|
||||
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 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.BusiChatItem;
|
||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 在线聊天记录Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/chatItem")
|
||||
public class BusiChatItemController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiChatItemService busiChatItemService;
|
||||
|
||||
/**
|
||||
* 查询在线聊天记录列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BusiChatItem busiChatItem)
|
||||
{
|
||||
return success(busiChatItemService.queryList(busiChatItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出在线聊天记录列表
|
||||
*/
|
||||
@Log(title = "在线聊天记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiChatItem busiChatItem)
|
||||
{
|
||||
List<BusiChatItem> list = busiChatItemService.list();
|
||||
ExcelUtil<BusiChatItem> util = new ExcelUtil<BusiChatItem>(BusiChatItem.class);
|
||||
util.exportExcel(response, list, "在线聊天记录数据");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
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.domain.BusiChatItem;
|
||||
import com.ruoyi.busi.service.IBusiChatItemService;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
import com.ruoyi.common.core.domain.model.LoginUser;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
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.BusiChatMain;
|
||||
import com.ruoyi.busi.service.IBusiChatMainService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 在线聊天Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/chatMain")
|
||||
public class BusiChatMainController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiChatMainService busiChatMainService;
|
||||
@Autowired
|
||||
private IBusiChatItemService busiChatItemService;
|
||||
|
||||
/**
|
||||
* 查询在线聊天列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ChatMainVO busiChatMain,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiChatMain> page = new Page<>(pageNum, pageSize);
|
||||
IPage<ChatMainVO> list = busiChatMainService.queryListPage(busiChatMain,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出在线聊天列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:export')")
|
||||
@Log(title = "在线聊天", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiChatMain busiChatMain)
|
||||
{
|
||||
List<BusiChatMain> list = busiChatMainService.list();
|
||||
ExcelUtil<BusiChatMain> util = new ExcelUtil<BusiChatMain>(BusiChatMain.class);
|
||||
util.exportExcel(response, list, "在线聊天数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线聊天详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiChatMainService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增在线聊天
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:add')")
|
||||
@Log(title = "在线聊天", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BusiChatMain busiChatMain)
|
||||
{
|
||||
return toAjax(busiChatMainService.save(busiChatMain));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改在线聊天
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:edit')")
|
||||
@Log(title = "在线聊天", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiChatMain busiChatMain)
|
||||
{
|
||||
return toAjax(busiChatMainService.updateById(busiChatMain));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除在线聊天
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:chatMain:remove')")
|
||||
@Log(title = "在线聊天", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiChatMainService.removeByIds(list));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据客服ID查询会话列表---只有服务端使用,所以挪过来
|
||||
*/
|
||||
@GetMapping("/service")
|
||||
public AjaxResult getByServiceId() {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
List<BusiChatMain> sessions = busiChatMainService.selectByServiceId(loginUser.getUserId());
|
||||
return AjaxResult.success(sessions);
|
||||
}
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
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.InquiryItemVO;
|
||||
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.BusiInquiryItem;
|
||||
import com.ruoyi.busi.service.IBusiInquiryItemService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 在线询盘记录Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-10
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/inquiryItem")
|
||||
public class BusiInquiryItemController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiInquiryItemService busiInquiryItemService;
|
||||
|
||||
/**
|
||||
* 查询在线询盘记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(InquiryItemVO busiInquiryItem,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiInquiryItem> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BusiInquiryItem> list = busiInquiryItemService.queryListPage(busiInquiryItem,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出在线询盘记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:export')")
|
||||
@Log(title = "在线询盘记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiInquiryItem busiInquiryItem)
|
||||
{
|
||||
List<BusiInquiryItem> list = busiInquiryItemService.list();
|
||||
ExcelUtil<BusiInquiryItem> util = new ExcelUtil<BusiInquiryItem>(BusiInquiryItem.class);
|
||||
util.exportExcel(response, list, "在线询盘记录数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取在线询盘记录详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiInquiryItemService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增在线询盘记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:add')")
|
||||
@Log(title = "在线询盘记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BusiInquiryItem busiInquiryItem)
|
||||
{
|
||||
return toAjax(busiInquiryItemService.save(busiInquiryItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改在线询盘记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:edit')")
|
||||
@Log(title = "在线询盘记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiInquiryItem busiInquiryItem)
|
||||
{
|
||||
return toAjax(busiInquiryItemService.updateById(busiInquiryItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除在线询盘记录
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:inquiryItem:remove')")
|
||||
@Log(title = "在线询盘记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiInquiryItemService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,126 @@
|
||||
package com.ruoyi.busi.controller;
|
||||
|
||||
import java.util.*;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.busi.vo.BusiKeywordItemQueryVO;
|
||||
import com.ruoyi.busi.vo.BusiKeywordRankStatVO;
|
||||
import com.ruoyi.busi.vo.ChartDataVO;
|
||||
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.BusiKeywordItem;
|
||||
import com.ruoyi.busi.service.IBusiKeywordItemService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 关键词排名明细Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/keywordItem")
|
||||
public class BusiKeywordItemController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiKeywordItemService busiKeywordItemService;
|
||||
|
||||
/**
|
||||
* 查询关键词排名明细列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:list')")
|
||||
@GetMapping("/rankStat")
|
||||
public AjaxResult inquiryCountryList(BusiKeywordItemQueryVO queryVO,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){
|
||||
Page<BusiKeywordRankStatVO> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BusiKeywordRankStatVO> result = busiKeywordItemService.selectKeywordRankStatPage(page, queryVO);
|
||||
return success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计当天1-10名和11-20名的关键词数量
|
||||
*/
|
||||
@GetMapping("/todayRankStat")
|
||||
public AjaxResult todayRankStat(String tenantId) {
|
||||
if (tenantId == null || tenantId.isEmpty()) {
|
||||
return AjaxResult.error("租户ID不能为空");
|
||||
}
|
||||
|
||||
Map<String, Integer> result = busiKeywordItemService.selectTodayRankStat( tenantId);
|
||||
return AjaxResult.success(result);
|
||||
}
|
||||
/**
|
||||
* 导出关键词排名明细列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:export')")
|
||||
@Log(title = "关键词排名明细", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiKeywordItem busiKeywordItem)
|
||||
{
|
||||
List<BusiKeywordItem> list = busiKeywordItemService.list();
|
||||
ExcelUtil<BusiKeywordItem> util = new ExcelUtil<BusiKeywordItem>(BusiKeywordItem.class);
|
||||
util.exportExcel(response, list, "关键词排名明细数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取关键词排名明细详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiKeywordItemService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增关键词排名明细
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:add')")
|
||||
@Log(title = "关键词排名明细", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BusiKeywordItem busiKeywordItem)
|
||||
{
|
||||
return toAjax(busiKeywordItemService.save(busiKeywordItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改关键词排名明细
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:edit')")
|
||||
@Log(title = "关键词排名明细", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiKeywordItem busiKeywordItem)
|
||||
{
|
||||
return toAjax(busiKeywordItemService.updateById(busiKeywordItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除关键词排名明细
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:keywordItem:remove')")
|
||||
@Log(title = "关键词排名明细", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiKeywordItemService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,203 @@
|
||||
package com.ruoyi.busi.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.base.service.IBasePicsService;
|
||||
import com.ruoyi.busi.domain.BusiProdNew;
|
||||
import com.ruoyi.busi.domain.BusiProdRandom;
|
||||
import com.ruoyi.busi.service.IBusiProdNewService;
|
||||
import com.ruoyi.busi.service.IBusiProdRandomService;
|
||||
import com.ruoyi.busi.utils.SimHash;
|
||||
import com.ruoyi.busi.utils.TextPreprocessor;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
import com.ruoyi.busi.vo.ProdRandomVO;
|
||||
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.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static com.ruoyi.constant.DictConstants.*;
|
||||
|
||||
/**
|
||||
* 新闻Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/new")
|
||||
public class BusiNewController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiProdNewService busiProdNewService;
|
||||
@Autowired
|
||||
private IBasePicsService basePicsService;
|
||||
@Autowired
|
||||
private IBusiProdRandomService prodRandomService;
|
||||
|
||||
/**
|
||||
* 查询新闻列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ProdNewVO busiProdNew,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiProdNew> page = new Page<>(pageNum, pageSize);
|
||||
//只查新闻
|
||||
busiProdNew.setDataType(DATA_TYPE_NEWS);
|
||||
IPage<ProdNewVO> list = busiProdNewService.queryListPage(busiProdNew,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查某新闻的随机关联产品
|
||||
* @author vinjor-M
|
||||
* @date 16:35 2025/6/27
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
*
|
||||
**/
|
||||
@GetMapping("/randomList")
|
||||
public AjaxResult randomList(BusiProdRandom prodRandom){
|
||||
return success(prodRandomService.randomList(prodRandom));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出新闻列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:export')")
|
||||
@Log(title = "新闻", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiProdNew busiProdNew)
|
||||
{
|
||||
List<BusiProdNew> list = busiProdNewService.list();
|
||||
ExcelUtil<BusiProdNew> util = new ExcelUtil<BusiProdNew>(BusiProdNew.class);
|
||||
util.exportExcel(response, list, "文章数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取新闻详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiProdNewService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取新闻表当前最大排序
|
||||
*/
|
||||
@GetMapping(value = "/getMaxSort")
|
||||
public AjaxResult getMaxSort(String tenantId)
|
||||
{
|
||||
return success(busiProdNewService.getMaxSort(tenantId,DATA_TYPE_NEWS));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增新闻
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:add')")
|
||||
@Log(title = "新闻", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_NEWS);
|
||||
prodNewVO.setSimHash(SimHash.compute(TextPreprocessor.combineFields(prodNewVO.getTitle(),prodNewVO.getDescription(),prodNewVO.getContent())));
|
||||
busiProdNewService.save(prodNewVO);
|
||||
if(null!=prodNewVO.getFileList() && !prodNewVO.getFileList().isEmpty()){
|
||||
prodNewVO.getFileList().forEach(item->{
|
||||
item.setTenantId(prodNewVO.getTenantId());
|
||||
item.setFileType(FILE_TYPE_NEWS);
|
||||
});
|
||||
basePicsService.saveBatch(prodNewVO.getFileList());
|
||||
}
|
||||
busiProdNewService.setAmount(prodNewVO.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改新闻
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:edit')")
|
||||
@Log(title = "新闻", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_NEWS);
|
||||
prodNewVO.setSimHash(SimHash.compute(TextPreprocessor.combineFields(prodNewVO.getTitle(),prodNewVO.getDescription(),prodNewVO.getContent())));
|
||||
busiProdNewService.updateById(prodNewVO);
|
||||
if(null!=prodNewVO.getFileList() && !prodNewVO.getFileList().isEmpty()){
|
||||
prodNewVO.getFileList().forEach(item->{
|
||||
item.setTenantId(prodNewVO.getTenantId());
|
||||
item.setFileType(FILE_TYPE_NEWS);
|
||||
});
|
||||
basePicsService.saveBatch(prodNewVO.getFileList());
|
||||
}
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除新闻
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:new:remove')")
|
||||
@Log(title = "新闻", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids){
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
BusiProdNew prodNew = busiProdNewService.getById(list.get(0));
|
||||
busiProdNewService.removeByIds(list);
|
||||
busiProdNewService.setAmount(prodNew.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存新闻关联的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 17:41 2025/6/27
|
||||
* @param randomVO TODO
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@PostMapping("/saveRandom")
|
||||
public AjaxResult add(@RequestBody ProdRandomVO randomVO){
|
||||
List<BusiProdRandom> randomList = new ArrayList<>();
|
||||
randomVO.getRandomIdList().forEach(item->{
|
||||
BusiProdRandom random = new ProdRandomVO();
|
||||
random.setProdId(randomVO.getProdId());
|
||||
random.setRandomId(item);
|
||||
random.setTenantId(randomVO.getTenantId());
|
||||
randomList.add(random);
|
||||
});
|
||||
prodRandomService.saveBatch(randomList);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除新闻关联的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 9:38 2025/6/30
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@PostMapping("/delProdRandom")
|
||||
public AjaxResult delProdRandom(@RequestBody ProdRandomVO randomVO){
|
||||
prodRandomService.delProdRandom(randomVO.getProdId(),randomVO.getRandomId(),randomVO.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 相似度检测
|
||||
*/
|
||||
@PostMapping("/checkContent")
|
||||
public AjaxResult checkContent(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_NEWS);
|
||||
return success(busiProdNewService.checkContent(prodNewVO));
|
||||
}
|
||||
}
|
@ -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<BusiPage> list = busiPageService.list();
|
||||
ExcelUtil<BusiPage> util = new ExcelUtil<BusiPage>(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<Long> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiPageService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,214 @@
|
||||
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.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.base.service.IBasePicsService;
|
||||
import com.ruoyi.busi.domain.BusiProdRandom;
|
||||
import com.ruoyi.busi.service.IBusiProdRandomService;
|
||||
import com.ruoyi.busi.utils.SimHash;
|
||||
import com.ruoyi.busi.utils.TextPreprocessor;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
import com.ruoyi.busi.vo.ProdRandomVO;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
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.BusiProdNew;
|
||||
import com.ruoyi.busi.service.IBusiProdNewService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
import static com.ruoyi.constant.DictConstants.*;
|
||||
|
||||
/**
|
||||
* 产品Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-25
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/prod")
|
||||
public class BusiProdController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiProdNewService busiProdNewService;
|
||||
@Autowired
|
||||
private IBasePicsService basePicsService;
|
||||
@Autowired
|
||||
private IBusiProdRandomService prodRandomService;
|
||||
|
||||
/**
|
||||
* 查询产品列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ProdNewVO busiProdNew,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiProdNew> page = new Page<>(pageNum, pageSize);
|
||||
//只查产品
|
||||
busiProdNew.setDataType(DATA_TYPE_PRODUCT);
|
||||
IPage<ProdNewVO> list = busiProdNewService.queryListPage(busiProdNew,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查某产品的随机关联产品
|
||||
* @author vinjor-M
|
||||
* @date 16:35 2025/6/27
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
*
|
||||
**/
|
||||
@GetMapping("/randomList")
|
||||
public AjaxResult randomList(BusiProdRandom prodRandom){
|
||||
return success(prodRandomService.randomList(prodRandom));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出产品列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:export')")
|
||||
@Log(title = "产品", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiProdNew busiProdNew)
|
||||
{
|
||||
List<BusiProdNew> list = busiProdNewService.list();
|
||||
ExcelUtil<BusiProdNew> util = new ExcelUtil<BusiProdNew>(BusiProdNew.class);
|
||||
util.exportExcel(response, list, "产品、文章数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取产品详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiProdNewService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取产品表当前最大排序
|
||||
*/
|
||||
@GetMapping(value = "/getMaxSort")
|
||||
public AjaxResult getMaxSort(String tenantId)
|
||||
{
|
||||
return success(busiProdNewService.getMaxSort(tenantId,DATA_TYPE_PRODUCT));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增产品
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:add')")
|
||||
@Log(title = "产品", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_PRODUCT);
|
||||
prodNewVO.setSimHash(SimHash.compute(TextPreprocessor.combineFields(prodNewVO.getTitle(),prodNewVO.getDescription(),prodNewVO.getContent())));
|
||||
busiProdNewService.save(prodNewVO);
|
||||
if(null!=prodNewVO.getFileList() && !prodNewVO.getFileList().isEmpty()){
|
||||
prodNewVO.getFileList().forEach(item->{
|
||||
item.setTenantId(prodNewVO.getTenantId());
|
||||
item.setFileType(FILE_TYPE_PRODUCT);
|
||||
});
|
||||
basePicsService.saveBatch(prodNewVO.getFileList());
|
||||
}
|
||||
busiProdNewService.setAmount(prodNewVO.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改产品
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:edit')")
|
||||
@Log(title = "产品", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_PRODUCT);
|
||||
prodNewVO.setSimHash(SimHash.compute(TextPreprocessor.combineFields(prodNewVO.getTitle(),prodNewVO.getDescription(),prodNewVO.getContent())));
|
||||
busiProdNewService.updateById(prodNewVO);
|
||||
if(null!=prodNewVO.getFileList() && !prodNewVO.getFileList().isEmpty()){
|
||||
prodNewVO.getFileList().forEach(item->{
|
||||
item.setTenantId(prodNewVO.getTenantId());
|
||||
item.setFileType(FILE_TYPE_PRODUCT);
|
||||
});
|
||||
basePicsService.saveBatch(prodNewVO.getFileList());
|
||||
}
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除产品
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:prod:remove')")
|
||||
@Log(title = "产品", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids){
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
BusiProdNew prodNew = busiProdNewService.getById(list.get(0));
|
||||
busiProdNewService.removeByIds(list);
|
||||
busiProdNewService.setAmount(prodNew.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存产品关联的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 17:41 2025/6/27
|
||||
* @param randomVO TODO
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@PostMapping("/saveRandom")
|
||||
public AjaxResult add(@RequestBody ProdRandomVO randomVO){
|
||||
List<BusiProdRandom> randomList = new ArrayList<>();
|
||||
randomVO.getRandomIdList().forEach(item->{
|
||||
BusiProdRandom random = new ProdRandomVO();
|
||||
random.setProdId(randomVO.getProdId());
|
||||
random.setRandomId(item);
|
||||
random.setTenantId(randomVO.getTenantId());
|
||||
randomList.add(random);
|
||||
});
|
||||
prodRandomService.saveBatch(randomList);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除产品关联的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 9:38 2025/6/30
|
||||
* @return com.ruoyi.common.core.domain.AjaxResult
|
||||
**/
|
||||
@PostMapping("/delProdRandom")
|
||||
public AjaxResult delProdRandom(@RequestBody ProdRandomVO randomVO){
|
||||
prodRandomService.delProdRandom(randomVO.getProdId(),randomVO.getRandomId(),randomVO.getTenantId());
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 相似度检测
|
||||
*/
|
||||
@PostMapping("/checkContent")
|
||||
public AjaxResult checkContent(@RequestBody ProdNewVO prodNewVO){
|
||||
prodNewVO.setDataType(DATA_TYPE_PRODUCT);
|
||||
return success(busiProdNewService.checkContent(prodNewVO));
|
||||
}
|
||||
}
|
@ -0,0 +1,125 @@
|
||||
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.RelationVO;
|
||||
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.BusiRelation;
|
||||
import com.ruoyi.busi.service.IBusiRelationService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 产品、新闻等与员工关系Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-30
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/relation")
|
||||
public class BusiRelationController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiRelationService busiRelationService;
|
||||
|
||||
/**
|
||||
* 查询产品、新闻等与员工关系列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(BusiRelation busiRelation,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiRelation> page = new Page<>(pageNum, pageSize);
|
||||
IPage<BusiRelation> list = busiRelationService.queryListPage(busiRelation,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出产品、新闻等与员工关系列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:export')")
|
||||
@Log(title = "产品、新闻等与员工关系", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiRelation busiRelation)
|
||||
{
|
||||
List<BusiRelation> list = busiRelationService.list();
|
||||
ExcelUtil<BusiRelation> util = new ExcelUtil<BusiRelation>(BusiRelation.class);
|
||||
util.exportExcel(response, list, "产品、新闻等与员工关系数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取产品、新闻等与员工关系详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiRelationService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增产品、新闻等与员工关系
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:add')")
|
||||
@Log(title = "产品、新闻等与员工关系", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody RelationVO busiRelation)
|
||||
{
|
||||
List<String> userIdList = Arrays.asList(busiRelation.getLeaderId().split(","));
|
||||
List<BusiRelation> busiRelationList = new ArrayList<>();
|
||||
userIdList.forEach(item->{
|
||||
BusiRelation relation = new BusiRelation();
|
||||
relation.setUserId(item);
|
||||
relation.setProdId(busiRelation.getProdId());
|
||||
relation.setTenantId(busiRelation.getTenantId());
|
||||
busiRelationList.add(relation);
|
||||
});
|
||||
//先删除原来的负责人
|
||||
busiRelationService.deleteByProdId(busiRelation.getProdId(),busiRelation.getTenantId());
|
||||
busiRelationService.saveBatch(busiRelationList);
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改产品、新闻等与员工关系
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:edit')")
|
||||
@Log(title = "产品、新闻等与员工关系", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiRelation busiRelation)
|
||||
{
|
||||
return toAjax(busiRelationService.updateById(busiRelation));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除产品、新闻等与员工关系
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:relation:remove')")
|
||||
@Log(title = "产品、新闻等与员工关系", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiRelationService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
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.ThirdVO;
|
||||
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.BusiThirdItem;
|
||||
import com.ruoyi.busi.service.IBusiThirdItemService;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 三方程序跳转记录Controller
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-02
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/busi/thirdItem")
|
||||
public class BusiThirdItemController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private IBusiThirdItemService busiThirdItemService;
|
||||
|
||||
/**
|
||||
* 查询三方程序跳转记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:thirdItem:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(ThirdVO busiThirdItem,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize)
|
||||
{
|
||||
Page<BusiThirdItem> page = new Page<>(pageNum, pageSize);
|
||||
IPage<ThirdVO> list = busiThirdItemService.queryListPage(busiThirdItem,page);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出三方程序跳转记录列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('busi:thirdItem:export')")
|
||||
@Log(title = "三方程序跳转记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, BusiThirdItem busiThirdItem)
|
||||
{
|
||||
List<BusiThirdItem> list = busiThirdItemService.list();
|
||||
ExcelUtil<BusiThirdItem> util = new ExcelUtil<BusiThirdItem>(BusiThirdItem.class);
|
||||
util.exportExcel(response, list, "三方程序跳转记录数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取三方程序跳转记录详细信息
|
||||
*/
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") String id)
|
||||
{
|
||||
return success(busiThirdItemService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增三方程序跳转记录
|
||||
*/
|
||||
@Log(title = "三方程序跳转记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody BusiThirdItem busiThirdItem)
|
||||
{
|
||||
return toAjax(busiThirdItemService.save(busiThirdItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改三方程序跳转记录
|
||||
*/
|
||||
@Log(title = "三方程序跳转记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody BusiThirdItem busiThirdItem)
|
||||
{
|
||||
return toAjax(busiThirdItemService.updateById(busiThirdItem));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除三方程序跳转记录
|
||||
*/
|
||||
@Log(title = "三方程序跳转记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable String[] ids)
|
||||
{
|
||||
List<String> list = new ArrayList<>(Arrays.asList(ids));
|
||||
return toAjax(busiThirdItemService.removeByIds(list));
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
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.ChartDataVO;
|
||||
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<String, Object> rtnMap = new HashMap<>();
|
||||
//文章、产品数量
|
||||
rtnMap.put("prodNews",prodNewService.getIndexData(tenantId));
|
||||
//询盘流量
|
||||
rtnMap.put("ipInquiry",busiThirdItemService.inquiryMap(tenantId));
|
||||
//询盘来源前十国家
|
||||
rtnMap.put("nationalData",busiThirdItemService.nationalData(tenantId,null,null,10));
|
||||
//询盘设备
|
||||
rtnMap.put("equipmentData",busiThirdItemService.equipmentData(tenantId));
|
||||
//近一个月询盘数
|
||||
rtnMap.put("dataList",busiThirdItemService.dataList(tenantId));
|
||||
return success(rtnMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 询盘走势图,指定时间范围
|
||||
*/
|
||||
@GetMapping("/inquiryChart")
|
||||
public AjaxResult inquiryChart(String tenantId,String startDate,String endDate){
|
||||
return success(busiThirdItemService.inquiryChart(tenantId,startDate,endDate));
|
||||
}
|
||||
/**
|
||||
* 询盘国家分布,指定时间范围
|
||||
*/
|
||||
@GetMapping("/countryChart")
|
||||
public AjaxResult countryChart(String tenantId,String startDate,String endDate){
|
||||
return success(busiThirdItemService.nationalData(tenantId,startDate,endDate,10));
|
||||
}
|
||||
|
||||
/**
|
||||
* 询盘国家列表--分页表格
|
||||
*/
|
||||
@GetMapping("/inquiryCountryList")
|
||||
public AjaxResult inquiryCountryList(@RequestParam(name = "tenantId",required = true) String tenantId,
|
||||
@RequestParam(name = "startDate", required = false) String startDate,
|
||||
@RequestParam(name = "endDate", required = false) String endDate,
|
||||
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){
|
||||
List<ChartDataVO> list = busiThirdItemService.nationalData(tenantId,startDate,endDate,null);
|
||||
int startIndex = (pageNum-1)*pageSize;
|
||||
int endIndex = Math.min(startIndex+pageSize,list.size());
|
||||
Map<String,Object> rtnMap = new HashMap<>();
|
||||
rtnMap.put("records",list.subList(startIndex,endIndex));
|
||||
rtnMap.put("current",pageNum);
|
||||
rtnMap.put("total",list.size());
|
||||
return success(rtnMap);
|
||||
}
|
||||
}
|
@ -1,16 +1,19 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
/**
|
||||
* 网站栏目对象 dl_busi_category
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @author pqz
|
||||
* @date 2025-06-19
|
||||
*/
|
||||
@TableName("dl_busi_category")
|
||||
@ -20,72 +23,93 @@ import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BusiCategory", description = "网站栏目分类")
|
||||
public class BusiCategory extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/** 栏目code */
|
||||
@Excel(name = "栏目code")
|
||||
private String code;
|
||||
|
||||
/** 栏目名称 */
|
||||
@Excel(name = "栏目名称")
|
||||
@ApiModelProperty("栏目名称")
|
||||
private String catgName;
|
||||
|
||||
/** 栏目级别 */
|
||||
@Excel(name = "栏目级别")
|
||||
@ApiModelProperty("栏目级别")
|
||||
private Long catgLevel;
|
||||
|
||||
/** 栏目类型(一级才栏目才设置) */
|
||||
@Excel(name = "栏目类型(一级才栏目才设置)")
|
||||
@ApiModelProperty("栏目类型(一级才栏目才设置)")
|
||||
private String catgType;
|
||||
|
||||
/** 上级栏目id */
|
||||
@Excel(name = "上级栏目id")
|
||||
@ApiModelProperty("上级栏目id")
|
||||
private String parentId;
|
||||
|
||||
/** 直接下级产品数 */
|
||||
@Excel(name = "直接下级产品数")
|
||||
private Long prodsJunior;
|
||||
private Integer prodsJunior;
|
||||
|
||||
/** 递归产品数 */
|
||||
@Excel(name = "递归产品数")
|
||||
private Long prodsAll;
|
||||
private Integer prodsAll;
|
||||
|
||||
/** 页面title */
|
||||
@Excel(name = "页面title")
|
||||
@ApiModelProperty("页面title")
|
||||
private String title;
|
||||
|
||||
/** 页面keyword */
|
||||
@Excel(name = "页面keyword")
|
||||
@ApiModelProperty("页面keyword")
|
||||
private String keyword;
|
||||
|
||||
/** 页面description */
|
||||
@Excel(name = "页面description")
|
||||
@ApiModelProperty("页面description")
|
||||
private String description;
|
||||
|
||||
/** 排序 */
|
||||
@Excel(name = "排序")
|
||||
@ApiModelProperty("排序")
|
||||
private Long sort;
|
||||
|
||||
/** 内容html(适用于单页面+询盘) */
|
||||
@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")
|
||||
@ApiModelProperty("站点唯一编码")
|
||||
private String tenantId;
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,56 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 在线聊天记录对象 dl_busi_chat_item
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@TableName("dl_busi_chat_item")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiChatItem {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 会话id */
|
||||
@Excel(name = "会话id")
|
||||
private String mainId;
|
||||
|
||||
/** 发送方(customer-客户|platform-平台) */
|
||||
@Excel(name = "发送方(customer-客户|platform-平台)")
|
||||
private String dataFrom;
|
||||
|
||||
/** 发送者ID */
|
||||
private String senderId;
|
||||
|
||||
/** 接收者ID */
|
||||
private String receiverId;
|
||||
|
||||
/** 聊天内容 */
|
||||
@Excel(name = "聊天内容")
|
||||
private String content;
|
||||
|
||||
/** 是否已读(0-未读,1-已读) */
|
||||
@Excel(name = "是否已读(0-未读,1-已读)")
|
||||
private Integer isRead;
|
||||
/** 创建时间 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import io.swagger.models.auth.In;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 在线聊天对象 dl_busi_chat_main
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@TableName("dl_busi_chat_main")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiChatMain extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 产品id */
|
||||
@Excel(name = "产品id")
|
||||
private String prodId;
|
||||
|
||||
/** 来源IP */
|
||||
@Excel(name = "来源IP")
|
||||
private String ip;
|
||||
|
||||
/** 来源国家 */
|
||||
@Excel(name = "来源国家")
|
||||
private String national;
|
||||
|
||||
/** 来源洲 */
|
||||
@Excel(name = "来源洲")
|
||||
private String oceania;
|
||||
|
||||
/** 浏览器唯一编码(客户方) */
|
||||
@Excel(name = "浏览器唯一编码", readConverterExp = "客=户方")
|
||||
private String cusCode;
|
||||
|
||||
/** 设备类型 */
|
||||
@Excel(name = "设备类型")
|
||||
private String equipment;
|
||||
|
||||
/** 状态:0-未开始,1-进行中,2-已结束 */
|
||||
@Excel(name = "状态:0-未开始,1-进行中,2-已结束")
|
||||
private Integer status;
|
||||
|
||||
/** 员工id */
|
||||
@Excel(name = "员工id")
|
||||
private Long userId;
|
||||
|
||||
/** 最后一条消息 */
|
||||
@Excel(name = "最后一条消息", readConverterExp = "最后一条消息")
|
||||
private String lastMessage;
|
||||
|
||||
/** 最后消息时间 */
|
||||
@Excel(name = "最后消息时间", readConverterExp = "最后消息时间")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date lastTime;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
/** 未读消息数量 */
|
||||
@TableField(exist = false)
|
||||
private Integer unreadCount;
|
||||
|
||||
/** 产品名称 */
|
||||
@TableField(exist = false)
|
||||
private String prodName;
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
package com.ruoyi.busi.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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
/**
|
||||
* 在线询盘记录对象 dl_busi_inquiry_item
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-10
|
||||
*/
|
||||
@TableName("dl_busi_inquiry_item")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BusiInquiryItem", description = "在线询盘实体")
|
||||
public class BusiInquiryItem extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 公司名称 */
|
||||
@Excel(name = "公司名称")
|
||||
@ApiModelProperty("公司名称")
|
||||
private String companyName;
|
||||
|
||||
/** 姓名 */
|
||||
@Excel(name = "姓名")
|
||||
@ApiModelProperty("姓名")
|
||||
private String name;
|
||||
|
||||
/** 电话 */
|
||||
@Excel(name = "电话")
|
||||
@ApiModelProperty("电话")
|
||||
private String tel;
|
||||
|
||||
/** 标题 */
|
||||
@Excel(name = "标题")
|
||||
@ApiModelProperty("标题")
|
||||
private String title;
|
||||
|
||||
/** 内容 */
|
||||
@Excel(name = "内容")
|
||||
@ApiModelProperty("内容")
|
||||
private String content;
|
||||
|
||||
/** 电子邮件 */
|
||||
@Excel(name = "电子邮件")
|
||||
@ApiModelProperty("电子邮件")
|
||||
private String email;
|
||||
|
||||
/** 来源IP */
|
||||
@Excel(name = "来源IP")
|
||||
@ApiModelProperty("来源IP")
|
||||
private String ip;
|
||||
|
||||
/** 来源国家 */
|
||||
@Excel(name = "来源国家")
|
||||
@ApiModelProperty("来源国家")
|
||||
private String national;
|
||||
|
||||
/** 洲 */
|
||||
@Excel(name = "洲")
|
||||
@ApiModelProperty("洲")
|
||||
private String oceania;
|
||||
/** 设备类型 */
|
||||
@Excel(name = "设备类型")
|
||||
private String equipment;
|
||||
|
||||
/** 页面路径 */
|
||||
private String pageUrl;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
@ApiModelProperty("站点唯一编码")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 站点使用的关键词对象 dl_busi_keyword
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@TableName("dl_busi_keyword")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiKeyword
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 关键词 */
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租户id")
|
||||
private String tenantId;
|
||||
|
||||
/** 创建时间 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
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_busi_keyword_item
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
@TableName("dl_busi_keyword_item")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiKeywordItem
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 关键词 */
|
||||
@Excel(name = "关键词")
|
||||
private String title;
|
||||
|
||||
/** 日期 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date selectDate;
|
||||
|
||||
/** 排名 */
|
||||
@Excel(name = "排名")
|
||||
private Integer ranking;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
package com.ruoyi.busi.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
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 io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import com.ruoyi.common.core.domain.DlBaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 产品、文章对象 dl_busi_prod_new
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-25
|
||||
*/
|
||||
@TableName("dl_busi_prod_new")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(value = "BusiProdNew", description = "产品或新闻实体")
|
||||
public class BusiProdNew extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@ApiModelProperty("主键")
|
||||
private String id;
|
||||
|
||||
/** 所属栏目id */
|
||||
@Excel(name = "所属栏目id")
|
||||
@ApiModelProperty("所属栏目id")
|
||||
private String catgId;
|
||||
|
||||
/** 数据类型 */
|
||||
@Excel(name = "数据类型")
|
||||
@ApiModelProperty("数据类型")
|
||||
private String dataType;
|
||||
|
||||
/** 产品名称或文章标题 */
|
||||
@Excel(name = "产品名称或文章标题")
|
||||
@ApiModelProperty("产品名称或文章标题")
|
||||
private String title;
|
||||
|
||||
/** 页面title */
|
||||
@Excel(name = "页面title")
|
||||
@ApiModelProperty("页面title")
|
||||
private String prodTitle;
|
||||
|
||||
/** 页面keyword */
|
||||
@Excel(name = "页面keyword")
|
||||
@ApiModelProperty("页面keyword")
|
||||
private String prodKeyword;
|
||||
|
||||
/** 页面description */
|
||||
@Excel(name = "页面description")
|
||||
@ApiModelProperty("页面description")
|
||||
private String prodDescription;
|
||||
|
||||
/** 文章来源 */
|
||||
@Excel(name = "文章来源")
|
||||
@ApiModelProperty("文章来源")
|
||||
private String newsFrom;
|
||||
|
||||
/** 文章发布日期 */
|
||||
@Excel(name = "文章发布日期")
|
||||
@ApiModelProperty("文章发布日期")
|
||||
private Date publicDate;
|
||||
|
||||
/** 产品主图或文章图片 */
|
||||
@Excel(name = "产品主图或文章图片")
|
||||
@ApiModelProperty("产品主图或文章图片")
|
||||
private String mainPic;
|
||||
|
||||
/** 产品图(多张) */
|
||||
@Excel(name = "产品图", readConverterExp = "多张")
|
||||
@ApiModelProperty("产品图")
|
||||
private String pics;
|
||||
|
||||
/** 产品简介或文章简介(支持换行符) */
|
||||
@Excel(name = "产品简介或文章简介", readConverterExp = "支=持换行符")
|
||||
@ApiModelProperty("产品简介或文章简介")
|
||||
private String description;
|
||||
|
||||
/** 产品内容或文章内容(富文本) */
|
||||
@ApiModelProperty("产品内容或文章内容(富文本)")
|
||||
private String content;
|
||||
|
||||
/** 排序 */
|
||||
@ApiModelProperty("排序")
|
||||
private Long sort;
|
||||
|
||||
/** simHash值 */
|
||||
@ApiModelProperty("simHash值")
|
||||
private Long simHash;
|
||||
|
||||
/** 是否首页推荐显示 */
|
||||
@Excel(name = "是否首页推荐显示")
|
||||
@ApiModelProperty("是否首页推荐显示")
|
||||
private Boolean ifReco;
|
||||
|
||||
/** 是否发布(未发布的在草稿箱) */
|
||||
@Excel(name = "是否发布", readConverterExp = "未=发布的在草稿箱")
|
||||
@ApiModelProperty("是否发布")
|
||||
private Boolean ifPublic;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@ApiModelProperty("站点唯一编码(租户id)")
|
||||
private String tenantId;
|
||||
|
||||
/** 最父级分类id */
|
||||
@ApiModelProperty("最父级分类id")
|
||||
@TableField(exist = false)
|
||||
private String maxCatgId;
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.ruoyi.busi.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_busi_prod_random
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-27
|
||||
*/
|
||||
@TableName("dl_busi_prod_random")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiProdRandom extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 产品或文章id */
|
||||
@Excel(name = "产品或文章id")
|
||||
private String prodId;
|
||||
|
||||
/** 关联的随机产品id */
|
||||
@Excel(name = "关联的随机产品id")
|
||||
private String randomId;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package com.ruoyi.busi.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_busi_relation
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-30
|
||||
*/
|
||||
@TableName("dl_busi_relation")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiRelation extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 用户id */
|
||||
@Excel(name = "用户id")
|
||||
private String userId;
|
||||
|
||||
/** 产品、新闻id */
|
||||
@Excel(name = "产品、新闻id")
|
||||
private String prodId;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.ruoyi.busi.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_busi_third_item
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-02
|
||||
*/
|
||||
@TableName("dl_busi_third_item")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BusiThirdItem extends DlBaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
private String id;
|
||||
|
||||
/** 产品id */
|
||||
@Excel(name = "产品id")
|
||||
private String prodId;
|
||||
|
||||
/** 三方程序类型 */
|
||||
@Excel(name = "三方程序类型")
|
||||
private String thirdSoft;
|
||||
|
||||
/** 来源国家 */
|
||||
@Excel(name = "来源国家")
|
||||
private String national;
|
||||
|
||||
/** 所属email/电话/teams账户 */
|
||||
@Excel(name = "所属email/电话/teams账户")
|
||||
private String thirdAccount;
|
||||
|
||||
/** 浏览记录 */
|
||||
@Excel(name = "浏览记录")
|
||||
private String viewType;
|
||||
|
||||
/** 页面路径 */
|
||||
private String pageUrl;
|
||||
|
||||
/** 设备类型 */
|
||||
@Excel(name = "设备类型")
|
||||
private String equipment;
|
||||
|
||||
/** 来源IP */
|
||||
@Excel(name = "来源IP")
|
||||
private String ip;
|
||||
|
||||
/** 站点唯一编码(租户id) */
|
||||
@Excel(name = "站点唯一编码", readConverterExp = "租=户id")
|
||||
private String tenantId;
|
||||
|
||||
}
|
@ -1,21 +1,20 @@
|
||||
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.BusiCategory;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.ruoyi.busi.domain.BusiCategory;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 网站栏目Mapper接口
|
||||
*
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-19
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiCategoryMapper extends BaseMapper<BusiCategory>
|
||||
{
|
||||
IPage<BusiCategory> queryListPage(@Param("entity") BusiCategory entity, Page<BusiCategory> page);
|
||||
public interface BusiCategoryMapper extends BaseMapper<BusiCategory> {
|
||||
|
||||
List<String> selectAllChildren(@Param("id")String id);
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
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.BusiChatItem;
|
||||
import com.ruoyi.busi.vo.ChatItemVO;
|
||||
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-07-03
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiChatItemMapper extends BaseMapper<BusiChatItem>
|
||||
{
|
||||
IPage<BusiChatItem> queryListPage(@Param("entity") BusiChatItem entity, Page<BusiChatItem> page);
|
||||
|
||||
List<ChatItemVO> selectListData(@Param("entity")BusiChatItem entity);
|
||||
|
||||
/**
|
||||
* 根据会话ID查询消息列表
|
||||
* @param sessionId 会话ID
|
||||
* @return 消息列表
|
||||
*/
|
||||
List<BusiChatItem> selectBySessionId(@Param("sessionId") String sessionId);
|
||||
|
||||
/**
|
||||
* 查询未读消息数量
|
||||
* @param mainId 会话id
|
||||
* @param senderType 发送者类型
|
||||
* @return 未读消息数量
|
||||
*/
|
||||
int selectUnreadCount(@Param("mainId") String mainId, @Param("senderType") String senderType);
|
||||
|
||||
/**
|
||||
* 标记消息为已读
|
||||
* @param sessionId 会话ID
|
||||
* @param receiverId 接收者ID
|
||||
* @return 影响行数
|
||||
*/
|
||||
int updateReadStatus(@Param("sessionId") String sessionId, @Param("receiverId") String receiverId);
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
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.BusiChatMain;
|
||||
import com.ruoyi.busi.vo.ChartDataVO;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
import com.ruoyi.busi.vo.ThirdSoftVO;
|
||||
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-07-03
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiChatMainMapper extends BaseMapper<BusiChatMain>
|
||||
{
|
||||
IPage<ChatMainVO> queryListPage(@Param("entity") ChatMainVO entity, Page<BusiChatMain> page);
|
||||
|
||||
/**
|
||||
* 查询IP数量
|
||||
* @author vinjor-M
|
||||
* @date 16:29 2025/7/11
|
||||
* @param tenantId TODO
|
||||
* @param startDate TODO
|
||||
* @param endDate TODO
|
||||
* @return java.lang.Integer
|
||||
**/
|
||||
Integer selectIpCount(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
List<ChartDataVO> selectNationalSortList(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
/**
|
||||
* 查询询盘设备
|
||||
* @author vinjor-M
|
||||
* @date 10:49 2025/7/16
|
||||
* @param tenantId 站点ID
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> selectEquipmentSortList(@Param("tenantId")String tenantId);
|
||||
|
||||
List<ThirdSoftVO> selectChatVO(@Param("tenantId")String tenantId);
|
||||
|
||||
List<BusiChatMain> selectLineChart(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
/**
|
||||
* 根据客服ID查询会话列表
|
||||
* @param serviceId 客服ID
|
||||
* @return 会话列表
|
||||
*/
|
||||
List<BusiChatMain> selectByServiceId(@Param("serviceId") Long serviceId);
|
||||
|
||||
/**
|
||||
* 根据用户标识查询活跃会话
|
||||
* @param tenantId 租户ID
|
||||
* @param deviceCode 设备编码
|
||||
* @return 会话信息
|
||||
*/
|
||||
BusiChatMain selectActiveSession(@Param("tenantId") String tenantId,
|
||||
@Param("deviceCode") String deviceCode,
|
||||
@Param("prodId") String prodId);
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
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.BusiInquiryItem;
|
||||
import com.ruoyi.busi.vo.ChartDataVO;
|
||||
import com.ruoyi.busi.vo.InquiryItemVO;
|
||||
import com.ruoyi.busi.vo.ThirdSoftVO;
|
||||
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-07-10
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiInquiryItemMapper extends BaseMapper<BusiInquiryItem>
|
||||
{
|
||||
IPage<BusiInquiryItem> queryListPage(@Param("entity") InquiryItemVO entity, Page<BusiInquiryItem> page);
|
||||
|
||||
/**
|
||||
* 查询IP数量
|
||||
* @author vinjor-M
|
||||
* @date 16:29 2025/7/11
|
||||
* @param tenantId TODO
|
||||
* @param startDate TODO
|
||||
* @param endDate TODO
|
||||
* @return java.lang.Integer
|
||||
**/
|
||||
Integer selectIpCount(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
List<ChartDataVO> selectNationalSortList(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
/**
|
||||
* 查询询盘设备
|
||||
* @author vinjor-M
|
||||
* @date 10:49 2025/7/16
|
||||
* @param tenantId 站点ID
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> selectEquipmentSortList(@Param("tenantId")String tenantId);
|
||||
|
||||
/**
|
||||
* 查询在线询盘-近30天
|
||||
* @author vinjor-M
|
||||
* @date 16:19 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ThirdSoftVO>
|
||||
**/
|
||||
List<ThirdSoftVO> selectinquiryItemVO(@Param("tenantId")String tenantId);
|
||||
|
||||
List<BusiInquiryItem> selectLineChart(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package com.ruoyi.busi.mapper;
|
||||
|
||||
import java.util.Date;
|
||||
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.ruoyi.busi.domain.BusiKeywordItem;
|
||||
import com.ruoyi.busi.vo.BusiKeywordRankStatVO;
|
||||
import lombok.Data;
|
||||
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-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiKeywordItemMapper extends BaseMapper<BusiKeywordItem>
|
||||
{
|
||||
IPage<BusiKeywordItem> queryListPage(@Param("entity") BusiKeywordItem entity, Page<BusiKeywordItem> page);
|
||||
|
||||
int deleteBySelectDateInt(@Param("date") String date);
|
||||
|
||||
/**
|
||||
* 分页查询关键词基础信息
|
||||
*/
|
||||
IPage<BusiKeywordRankStatVO> selectKeywordPage(
|
||||
IPage<BusiKeywordRankStatVO> page,
|
||||
@Param("title") String title,
|
||||
@Param("tenantId") String tenantId
|
||||
);
|
||||
|
||||
/**
|
||||
* 查询关键词在时间范围内的排名数据
|
||||
*/
|
||||
List<KeywordRankData> selectRankDataByKeywordIds(
|
||||
@Param("keywordIds") List<String> keywordIds,
|
||||
@Param("beginDate") Date beginDate,
|
||||
@Param("endDate") Date endDate,
|
||||
@Param("tenantId") String tenantId
|
||||
);
|
||||
|
||||
@Data
|
||||
class KeywordRankData {
|
||||
private String keywordId;
|
||||
private String selectDate;
|
||||
private Integer ranking;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计指定日期1-10名和11-20名的关键词数量
|
||||
* @param selectDate 选择日期
|
||||
* @param tenantId 租户ID
|
||||
* @return 排名区间统计列表
|
||||
*/
|
||||
List<Map<String, Object>> selectTodayRankStat(
|
||||
@Param("selectDate") Date selectDate,
|
||||
@Param("tenantId") String tenantId
|
||||
);
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.ruoyi.busi.mapper;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.busi.domain.BusiKeyword;
|
||||
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-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiKeywordMapper extends BaseMapper<BusiKeyword>
|
||||
{
|
||||
IPage<BusiKeyword> queryListPage(@Param("entity") BusiKeyword entity, Page<BusiKeyword> page);
|
||||
/**
|
||||
* 最新一次添加关键词的 时间
|
||||
* @author vinjor-M
|
||||
* @date 14:32 2025/8/21
|
||||
**/
|
||||
Date selectNewDate();
|
||||
|
||||
}
|
@ -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<BusiPage>
|
||||
{
|
||||
IPage<BusiPage> queryListPage(@Param("entity") BusiPage entity, Page<BusiPage> page);
|
||||
|
||||
List<BusiPageVO> selectListCus(@Param("entity")BusiPageVO busiPageVO);
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package com.ruoyi.busi.mapper;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.busi.domain.BusiProdNew;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
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-06-25
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiProdNewMapper extends BaseMapper<BusiProdNew>
|
||||
{
|
||||
IPage<ProdNewVO> queryListPage(@Param("entity") ProdNewVO entity, Page<BusiProdNew> page);
|
||||
|
||||
List<ProdNewVO> selectCusList(@Param("entity") ProdNewVO entity);
|
||||
|
||||
Long selectMaxSort(@Param("tenantId")String tenantId,@Param("dataType")String dataType);
|
||||
|
||||
/**
|
||||
* 统计分类下产品数量
|
||||
* @author PQZ
|
||||
* @date 14:06 2025/6/30
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ProdNewVO>
|
||||
**/
|
||||
List<ProdNewVO> getCatgAmount(@Param("tenantId")String tenantId);
|
||||
|
||||
/**
|
||||
* 查询上一个下一个产品或新闻
|
||||
* @author vinjor-M
|
||||
* @date 16:16 2025/7/8
|
||||
* @param dataType 数据类型
|
||||
* @param sort 排序
|
||||
* @param sortType 上一个或下一个
|
||||
* @param tenantId 站点ID
|
||||
* @param catgId 分类ID
|
||||
* @return com.ruoyi.busi.domain.BusiProdNew
|
||||
**/
|
||||
BusiProdNew selectPreOrNext(@Param("dataType") String dataType,@Param("sort") Long sort,@Param("sortType") String sortType,
|
||||
@Param("tenantId") String tenantId,@Param("catgId") String catgId);
|
||||
/**
|
||||
* 查数据库中最新编辑的时间
|
||||
* @author vinjor-M
|
||||
* @date 14:29 2025/8/21
|
||||
* @return java.util.Date
|
||||
**/
|
||||
Date selectNewDate();
|
||||
|
||||
/**
|
||||
* 查询更新时间晚于或等于某个时间的数据
|
||||
* @author vinjor-M
|
||||
* @date 14:36 2025/8/21
|
||||
* @param updateTime 某个时间
|
||||
* @return java.util.List<com.ruoyi.busi.domain.BusiProdNew>
|
||||
**/
|
||||
List<BusiProdNew> selectDataByUpdateTime(@Param("updateTime")String updateTime);
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
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.BusiProdRandom;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
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-06-27
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiProdRandomMapper extends BaseMapper<BusiProdRandom>
|
||||
{
|
||||
IPage<BusiProdRandom> queryListPage(@Param("entity") BusiProdRandom entity, Page<BusiProdRandom> page);
|
||||
|
||||
/**
|
||||
* 查某产品管理的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 16:36 2025/6/27
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ProdNewVO>
|
||||
**/
|
||||
List<ProdNewVO> selectRandomList(@Param("map") BusiProdRandom prodRandom);
|
||||
/**
|
||||
* 删除产品关联的随机产品
|
||||
*
|
||||
* @param prodId 产品id
|
||||
* @param randomId 随机产品id
|
||||
* @param tenantId 租户id
|
||||
* @author vinjor-M
|
||||
* @date 9:40 2025/6/30
|
||||
**/
|
||||
Integer deleteProdRandom(@Param("prodId") String prodId,@Param("randomId") String randomId, @Param("tenantId") String tenantId);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
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.BusiRelation;
|
||||
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-06-30
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiRelationMapper extends BaseMapper<BusiRelation>
|
||||
{
|
||||
IPage<BusiRelation> queryListPage(@Param("entity") BusiRelation entity, Page<BusiRelation> page);
|
||||
|
||||
Integer deleteByProdId(@Param("prodId")String prodId,@Param("tenantId")String tenantId);
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
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.BusiThirdItem;
|
||||
import com.ruoyi.busi.vo.*;
|
||||
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-07-02
|
||||
*/
|
||||
@Mapper
|
||||
public interface BusiThirdItemMapper extends BaseMapper<BusiThirdItem>
|
||||
{
|
||||
IPage<ThirdVO> queryListPage(@Param("entity") ThirdVO entity, Page<BusiThirdItem> page);
|
||||
/**
|
||||
* 查询IP数量
|
||||
* @author vinjor-M
|
||||
* @date 16:29 2025/7/11
|
||||
* @param tenantId TODO
|
||||
* @param startDate TODO
|
||||
* @param endDate TODO
|
||||
* @return java.lang.Integer
|
||||
**/
|
||||
Integer selectIpCount(@Param("tenantId")String tenantId,@Param("thirdSoft")String thirdSoft,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
/**
|
||||
* 查询盘三方来源国家数量,按国家分组计数
|
||||
* @author vinjor-M
|
||||
* @date 10:49 2025/7/16
|
||||
* @param tenantId 站点ID
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> selectNationalSortList(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
|
||||
/**
|
||||
* 查询询盘设备
|
||||
* @author vinjor-M
|
||||
* @date 10:49 2025/7/16
|
||||
* @param tenantId 站点ID
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> selectEquipmentSortList(@Param("tenantId")String tenantId);
|
||||
|
||||
List<ThirdSoftVO> selectThirdSoft(@Param("tenantId")String tenantId);
|
||||
|
||||
List<BusiThirdItem> selectLineChart(@Param("tenantId")String tenantId,@Param("startDate")String startDate,@Param("endDate")String endDate);
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
package com.ruoyi.busi.service;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.google.ads.googleads.lib.GoogleAdsClient;
|
||||
import com.google.ads.googleads.v20.enums.KeywordPlanNetworkEnum;
|
||||
import com.google.ads.googleads.v20.services.*;
|
||||
import com.google.auth.oauth2.GoogleCredentials;
|
||||
import com.google.auth.oauth2.ServiceAccountCredentials;
|
||||
import com.ruoyi.base.vo.KeywordVO;
|
||||
import com.ruoyi.common.config.GoogleConfig;
|
||||
import com.ruoyi.constant.CompetitionEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
public class GoogleKeywordService {
|
||||
@Autowired
|
||||
private GoogleConfig googleConfig;
|
||||
|
||||
/**
|
||||
* 获取谷歌关键词规划师规划的关键词
|
||||
*
|
||||
* @param language 语言编码
|
||||
* @param country 国家编码,多个英文逗号隔开
|
||||
* @param title 关键词,多个英文逗号分隔
|
||||
* @param url url
|
||||
* @return java.util.List<com.ruoyi.base.vo.KeywordVO>
|
||||
* @author vinjor-M
|
||||
* @date 17:55 2025/8/4
|
||||
**/
|
||||
public List<KeywordVO> getKeywords(String language, String country, String title, String url) {
|
||||
List<KeywordVO> keywordList = new ArrayList<>();
|
||||
try {
|
||||
// 1. 检查文件是否存在
|
||||
File file = ResourceUtils.getFile("file:" + googleConfig.getJsonPath());
|
||||
boolean fileExists = file.exists();
|
||||
System.out.println("JSON 文件是否存在: " + fileExists);
|
||||
|
||||
// 2. 加载 JSON 凭证
|
||||
GoogleCredentials credentials = ServiceAccountCredentials.fromStream(
|
||||
new FileInputStream(file)
|
||||
);
|
||||
// 2. 构建 GoogleAdsClient(自动读取环境变量)
|
||||
GoogleAdsClient googleAdsClient = GoogleAdsClient.newBuilder()
|
||||
.setCredentials(credentials)
|
||||
.setDeveloperToken(googleConfig.getDeveloperToken())
|
||||
.setLoginCustomerId(googleConfig.getCustomerId())
|
||||
.build();
|
||||
|
||||
// 2. 设置参数
|
||||
List<String> seedKeywords = Arrays.asList(title.split(StrUtil.COMMA));
|
||||
// 语言
|
||||
language = "languageConstants/"+language;
|
||||
// 国家/地区
|
||||
List<String> geoTargetList = new ArrayList<>();
|
||||
for (String item:country.split(StrUtil.COMMA)){
|
||||
geoTargetList.add("geoTargetConstants/"+item);
|
||||
}
|
||||
// 3. 获取关键词提示
|
||||
List<GenerateKeywordIdeaResult> keywordIdeas = generateKeywordIdeas(
|
||||
googleAdsClient, googleConfig.getCustomerId(), seedKeywords, language, geoTargetList,url);
|
||||
|
||||
// 4. 输出结果
|
||||
for (GenerateKeywordIdeaResult idea : keywordIdeas) {
|
||||
// 获取关键词文本
|
||||
String text = idea.getText();
|
||||
KeywordVO keywordVO = new KeywordVO();
|
||||
keywordVO.setTitle(text);
|
||||
// 获取关键词指标(可选)
|
||||
if (idea.hasKeywordIdeaMetrics()) {
|
||||
long avgMonthlySearches = idea.getKeywordIdeaMetrics().getAvgMonthlySearches();
|
||||
String competition = String.valueOf(idea.getKeywordIdeaMetrics().getCompetition());
|
||||
if(avgMonthlySearches>=googleConfig.getSearchDown()){
|
||||
//大于要求的最低月搜索量,返回
|
||||
keywordVO.setSearchMonth(avgMonthlySearches);
|
||||
keywordVO.setCompetition(CompetitionEnum.getTitleByCode(competition).getTitle());
|
||||
keywordList.add(keywordVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.printf("初始化 Google Ads 客户端失败: %s%n", e.getMessage());
|
||||
}
|
||||
// 倒序排列
|
||||
keywordList.sort((o1, o2) -> Long.compare(o2.getSearchMonth(), o1.getSearchMonth()));
|
||||
return keywordList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成关键词提示
|
||||
*
|
||||
* @param googleAdsClient Google Ads 客户端
|
||||
* @param customerId 客户ID
|
||||
* @param seedKeywords 种子关键词列表
|
||||
* @param language 语言常量 (如 "languageConstants/1000" 表示英语)
|
||||
* @param geoTargets 地理位置目标常量 (如 "geoTargetConstants/2840" 表示美国)
|
||||
* @param url 网址
|
||||
* @return 关键词提示列表
|
||||
* @throws IOException 如果API调用失败
|
||||
*/
|
||||
public static List<GenerateKeywordIdeaResult> generateKeywordIdeas(
|
||||
GoogleAdsClient googleAdsClient,
|
||||
long customerId,
|
||||
List<String> seedKeywords,
|
||||
String language,
|
||||
List<String> geoTargets,String url) throws IOException {
|
||||
List<GenerateKeywordIdeaResult> allKeywordIdeas = new ArrayList<>();
|
||||
//分页token
|
||||
String nextPageToken = null;
|
||||
//组装关键词请求体
|
||||
KeywordAndUrlSeed urlSeed = null;
|
||||
KeywordSeed seed = null;
|
||||
if(StringUtils.isNotEmpty(url)){
|
||||
urlSeed = KeywordAndUrlSeed.newBuilder()
|
||||
.addAllKeywords(seedKeywords)
|
||||
.setUrl(url)
|
||||
.build();
|
||||
}else{
|
||||
seed = KeywordSeed.newBuilder()
|
||||
.addAllKeywords(seedKeywords)
|
||||
.build();
|
||||
}
|
||||
do {
|
||||
try (KeywordPlanIdeaServiceClient client =
|
||||
googleAdsClient.getLatestVersion().createKeywordPlanIdeaServiceClient()) {
|
||||
GenerateKeywordIdeasRequest.Builder requestBuilder = GenerateKeywordIdeasRequest.newBuilder()
|
||||
.setCustomerId(Long.toString(customerId))
|
||||
.setLanguage(language)
|
||||
.addAllGeoTargetConstants(geoTargets)
|
||||
.setKeywordPlanNetwork(KeywordPlanNetworkEnum.KeywordPlanNetwork.GOOGLE_SEARCH_AND_PARTNERS);
|
||||
if(StringUtils.isNotEmpty(url)){
|
||||
requestBuilder.setKeywordAndUrlSeed(urlSeed);
|
||||
}else{
|
||||
requestBuilder.setKeywordSeed(seed);
|
||||
}
|
||||
// 仅在非首次请求时设置 pageToken
|
||||
if (nextPageToken != null) {
|
||||
requestBuilder.setPageToken(nextPageToken);
|
||||
}
|
||||
GenerateKeywordIdeasRequest request = requestBuilder.build();
|
||||
GenerateKeywordIdeaResponse response = client.generateKeywordIdeasCallable().call(request);
|
||||
allKeywordIdeas.addAll(response.getResultsList());
|
||||
nextPageToken = response.getNextPageToken();
|
||||
}
|
||||
} while (StringUtils.isNotEmpty(nextPageToken));
|
||||
System.out.println("关键词总数:" + allKeywordIdeas.size());
|
||||
return allKeywordIdeas;
|
||||
}
|
||||
|
||||
}
|
@ -1,18 +1,63 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiCategory;
|
||||
import com.ruoyi.busi.vo.BusiCategoryVO;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 网站栏目Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
*
|
||||
* @author pqz
|
||||
* @date 2025-06-19
|
||||
*/
|
||||
public interface IBusiCategoryService extends IService<BusiCategory>
|
||||
{
|
||||
IPage<BusiCategory> queryListPage(BusiCategory pageReqVO, Page<BusiCategory> page);
|
||||
public interface IBusiCategoryService extends IService<BusiCategory> {
|
||||
|
||||
/**
|
||||
* 树形结构查询网站栏目
|
||||
*
|
||||
* @param category {@link BusiCategory}
|
||||
* @return java.util.List<com.ruoyi.busi.vo.BusiCategoryVO>
|
||||
* @author PQZ
|
||||
* @date 14:06 2025/6/23
|
||||
**/
|
||||
List<BusiCategoryVO> treeCategory(BusiCategory category);
|
||||
|
||||
|
||||
/**
|
||||
* 设置直接产品数、递归产品数
|
||||
* @author PQZ
|
||||
* @date 14:12 2025/6/30
|
||||
**/
|
||||
void setCategoryAmount(List<ProdNewVO> list,String tenantId);
|
||||
|
||||
/**
|
||||
*
|
||||
* @author vinjor-M
|
||||
* @date 15:30 2025/7/8
|
||||
* @param id 查询的栏目ID
|
||||
* @return java.util.List<java.lang.String>
|
||||
**/
|
||||
List<String> getAllChildrenId(String id);
|
||||
|
||||
/**
|
||||
* 给所有子级设置最父级ID
|
||||
* @author vinjor-M
|
||||
* @date 11:23 2025/7/19
|
||||
* @param busiCategoryVOList TODO
|
||||
* @return java.util.List<com.ruoyi.busi.vo.BusiCategoryVO>
|
||||
**/
|
||||
List<BusiCategoryVO> dealFirstId(List<BusiCategoryVO> busiCategoryVOList);
|
||||
|
||||
/**
|
||||
* 给所有子级设置最父级ID并且反回map格式
|
||||
* @author vinjor-M
|
||||
* @date 11:23 2025/7/19
|
||||
* @param busiCategoryVOList 栏目树
|
||||
* @return java.util.List<com.ruoyi.busi.vo.BusiCategoryVO>
|
||||
**/
|
||||
Map<String,String> dealFirstIdRtnMap(List<BusiCategoryVO> busiCategoryVOList);
|
||||
}
|
||||
|
@ -0,0 +1,49 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiChatItem;
|
||||
import com.ruoyi.busi.vo.ChatItemVO;
|
||||
|
||||
/**
|
||||
* 在线聊天记录Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
public interface IBusiChatItemService extends IService<BusiChatItem>
|
||||
{
|
||||
List<ChatItemVO> queryList(BusiChatItem pageReqVO);
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
* @param message 消息内容
|
||||
* @return 消息ID
|
||||
*/
|
||||
BusiChatItem sendMessage(BusiChatItem message);
|
||||
|
||||
/**
|
||||
* 根据会话ID查询消息列表
|
||||
* @param sessionId 会话ID
|
||||
* @return 消息列表
|
||||
*/
|
||||
List<BusiChatItem> selectBySessionId(String sessionId);
|
||||
|
||||
/**
|
||||
* 查询未读消息数量
|
||||
* @param mainId 会话id
|
||||
* @param senderType 发送者类型
|
||||
* @return 未读消息数量
|
||||
*/
|
||||
int selectUnreadCount(String mainId, String senderType);
|
||||
|
||||
/**
|
||||
* 标记消息为已读
|
||||
* @param sessionId 会话ID
|
||||
* @param receiverId 接收者ID
|
||||
* @return 操作结果
|
||||
*/
|
||||
boolean markAsRead(String sessionId, String receiverId);
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiChatMain;
|
||||
import com.ruoyi.busi.vo.ChatMainVO;
|
||||
|
||||
/**
|
||||
* 在线聊天Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
public interface IBusiChatMainService extends IService<BusiChatMain> {
|
||||
IPage<ChatMainVO> queryListPage(ChatMainVO pageReqVO, Page<BusiChatMain> page);
|
||||
|
||||
/**
|
||||
* 校验是否需要新增
|
||||
*
|
||||
* @param ip ip
|
||||
* @param cusCode 浏览器唯一编码
|
||||
* @return void
|
||||
* @author PQZ
|
||||
* @date 15:31 2025/7/17
|
||||
**/
|
||||
BusiChatMain queryByIpAndCusCode(String ip, String cusCode,String prodId);
|
||||
|
||||
|
||||
/**
|
||||
* 创建新会话
|
||||
* @param session 会话信息
|
||||
* @return 会话ID
|
||||
*/
|
||||
BusiChatMain createSession(BusiChatMain session);
|
||||
|
||||
/**
|
||||
* 根据客服ID查询会话列表
|
||||
* @param serviceId 客服ID
|
||||
* @return 会话列表
|
||||
*/
|
||||
List<BusiChatMain> selectByServiceId(Long serviceId);
|
||||
|
||||
/**
|
||||
* 根据用户标识查询活跃会话
|
||||
* @param tenantId 租户ID
|
||||
* @param userIp 用户IP
|
||||
* @param deviceCode 设备编码
|
||||
* @return 会话信息
|
||||
*/
|
||||
BusiChatMain selectActiveSession(String tenantId, String userIp, String deviceCode,String prodId);
|
||||
|
||||
/**
|
||||
* 结束会话
|
||||
* @param sessionId 会话ID
|
||||
* @return 操作结果
|
||||
*/
|
||||
boolean closeSession(String sessionId);
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiInquiryItem;
|
||||
import com.ruoyi.busi.vo.InquiryItemVO;
|
||||
|
||||
/**
|
||||
* 在线询盘记录Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-10
|
||||
*/
|
||||
public interface IBusiInquiryItemService extends IService<BusiInquiryItem>
|
||||
{
|
||||
IPage<BusiInquiryItem> queryListPage(InquiryItemVO pageReqVO, Page<BusiInquiryItem> page);
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package com.ruoyi.busi.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
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.BusiKeywordItem;
|
||||
import com.ruoyi.busi.vo.BusiKeywordItemQueryVO;
|
||||
import com.ruoyi.busi.vo.BusiKeywordRankStatVO;
|
||||
|
||||
/**
|
||||
* 关键词排名明细Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface IBusiKeywordItemService extends IService<BusiKeywordItem>
|
||||
{
|
||||
IPage<BusiKeywordItem> queryListPage(BusiKeywordItem pageReqVO, Page<BusiKeywordItem> page);
|
||||
|
||||
/**
|
||||
* 获取所有关键词的google排名
|
||||
* @author vinjor-M
|
||||
* @date 15:10 2025/8/21
|
||||
**/
|
||||
void getKeywordRanking();
|
||||
|
||||
/**
|
||||
* 分页查询关键词排名统计
|
||||
* @param page 分页参数
|
||||
* @param queryVO 查询参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
IPage<BusiKeywordRankStatVO> selectKeywordRankStatPage(IPage<BusiKeywordRankStatVO> page, BusiKeywordItemQueryVO queryVO);
|
||||
|
||||
/**
|
||||
* 统计当天1-10名和11-20名的关键词数量
|
||||
* @param selectDate 选择日期
|
||||
* @param tenantId 租户ID
|
||||
* @return Map形式的统计结果 {key1: 1-10名数量, key2: 11-20名数量}
|
||||
*/
|
||||
Map<String, Integer> selectTodayRankStat( String tenantId);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiKeyword;
|
||||
|
||||
/**
|
||||
* 站点使用的关键词Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-08-21
|
||||
*/
|
||||
public interface IBusiKeywordService extends IService<BusiKeyword> {
|
||||
IPage<BusiKeyword> queryListPage(BusiKeyword pageReqVO, Page<BusiKeyword> page);
|
||||
/**
|
||||
* 检索全站使用的关键词
|
||||
* @author vinjor-M
|
||||
* @date 14:26 2025/8/21
|
||||
**/
|
||||
void getAllKeyword();
|
||||
}
|
@ -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<BusiPage>
|
||||
{
|
||||
IPage<BusiPage> queryListPage(BusiPage pageReqVO, Page<BusiPage> 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<com.ruoyi.busi.vo.BusiPageVO>
|
||||
**/
|
||||
List<BusiPageVO> queryListNum(BusiPageVO busiPage);
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
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.BusiProdNew;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
import com.ruoyi.busi.vo.SiteMapVO;
|
||||
import com.ruoyi.busi.vo.WebDetailVO;
|
||||
|
||||
/**
|
||||
* 产品、文章Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-25
|
||||
*/
|
||||
public interface IBusiProdNewService extends IService<BusiProdNew>
|
||||
{
|
||||
IPage<ProdNewVO> queryListPage(ProdNewVO pageReqVO, Page<BusiProdNew> page);
|
||||
|
||||
/**
|
||||
* 获取产品表当前最大排序
|
||||
* @author vinjor-M
|
||||
* @date 16:15 2025/6/25
|
||||
* @param tenantId 站点id
|
||||
* @return java.lang.Long
|
||||
**/
|
||||
Long getMaxSort(String tenantId,String dataType);
|
||||
|
||||
|
||||
/**
|
||||
* 为网站栏目中递归产品数和下级产品数赋值
|
||||
* @author PQZ
|
||||
* @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<java.lang.String,java.lang.Object>
|
||||
**/
|
||||
Map<String,Object> getIndexData(String tenantId);
|
||||
|
||||
/**
|
||||
* 首页查询热门产品
|
||||
* @author vinjor-M
|
||||
* @date 11:33 2025/7/8
|
||||
* @param tenantId 租户id
|
||||
* @return java.util.List<com.ruoyi.busi.domain.BusiProdNew>
|
||||
**/
|
||||
List<BusiProdNew> hotProdOrNews(String tenantId,String dateType,Boolean ifHot);
|
||||
|
||||
/**
|
||||
* web站点查看详情
|
||||
* @author vinjor-M
|
||||
* @date 16:10 2025/7/8
|
||||
* @param id TODO
|
||||
* @return com.ruoyi.busi.vo.WebDetailVO
|
||||
**/
|
||||
WebDetailVO getProdNewInfo(String id);
|
||||
|
||||
/**
|
||||
* 全站搜索产品和文章
|
||||
* @author vinjor-M
|
||||
* @date 13:55 2025/7/9
|
||||
* @param tenantId 站点ID
|
||||
* @param text 搜索内容
|
||||
* @param page 分页对象
|
||||
* @return com.baomidou.mybatisplus.core.metadata.IPage<com.ruoyi.busi.vo.ProdNewVO>
|
||||
**/
|
||||
IPage<BusiProdNew> searchTextAll(String tenantId, String text,Page<BusiProdNew> page);
|
||||
|
||||
/**
|
||||
* 相似度检测
|
||||
* @author vinjor-M
|
||||
* @date 10:24 2025/7/18
|
||||
* @param prodNewVO
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ProdNewVO>
|
||||
**/
|
||||
List<ProdNewVO> checkContent(ProdNewVO prodNewVO);
|
||||
|
||||
/**
|
||||
* 获取站点分类地图
|
||||
* @author vinjor-M
|
||||
* @date 14:12 2025/8/4
|
||||
* @param tenantId 站点编码
|
||||
* @param catgType 栏目类型
|
||||
* @return java.util.List<com.ruoyi.busi.vo.SiteMapVO>
|
||||
**/
|
||||
List<SiteMapVO> getSiteMap(String tenantId, String catgType);
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiProdRandom;
|
||||
import com.ruoyi.busi.vo.ProdNewVO;
|
||||
|
||||
/**
|
||||
* 随机产品关联关系Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-27
|
||||
*/
|
||||
public interface IBusiProdRandomService extends IService<BusiProdRandom>
|
||||
{
|
||||
IPage<BusiProdRandom> queryListPage(BusiProdRandom pageReqVO, Page<BusiProdRandom> page);
|
||||
|
||||
/**
|
||||
* 查某产品的随机关联产品
|
||||
* @author vinjor-M
|
||||
* @date 16:35 2025/6/27
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ProdNewVO>
|
||||
**/
|
||||
List<ProdNewVO> randomList(BusiProdRandom prodRandom);
|
||||
|
||||
/**
|
||||
* 删除产品关联的随机产品
|
||||
* @author vinjor-M
|
||||
* @date 9:40 2025/6/30
|
||||
* @param prodId 产品id
|
||||
* @param randomId 随机产品id
|
||||
* @param tenantId 租户id
|
||||
**/
|
||||
void delProdRandom(String prodId, String randomId, String tenantId);
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.ruoyi.busi.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.busi.domain.BusiRelation;
|
||||
|
||||
/**
|
||||
* 产品、新闻等与员工关系Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-06-30
|
||||
*/
|
||||
public interface IBusiRelationService extends IService<BusiRelation>
|
||||
{
|
||||
IPage<BusiRelation> queryListPage(BusiRelation pageReqVO, Page<BusiRelation> page);
|
||||
|
||||
/**
|
||||
* 删除某产品的负责人
|
||||
* @author vinjor-M
|
||||
* @date 13:48 2025/6/30
|
||||
* @param prodId TODO
|
||||
* @param tenantId TODO
|
||||
* @return java.lang.Integer
|
||||
**/
|
||||
Integer deleteByProdId(String prodId,String tenantId);
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
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.BusiThirdItem;
|
||||
import com.ruoyi.busi.vo.ChartDataVO;
|
||||
import com.ruoyi.busi.vo.IndexInquiryVO;
|
||||
import com.ruoyi.busi.vo.ThirdVO;
|
||||
|
||||
/**
|
||||
* 三方程序跳转记录Service接口
|
||||
*
|
||||
* @author vinjor-m
|
||||
* @date 2025-07-02
|
||||
*/
|
||||
public interface IBusiThirdItemService extends IService<BusiThirdItem>
|
||||
{
|
||||
IPage<ThirdVO> queryListPage(ThirdVO pageReqVO, Page<BusiThirdItem> page);
|
||||
|
||||
/**
|
||||
* 首页询盘总流量
|
||||
* @author vinjor-M
|
||||
* @date 16:25 2025/7/11
|
||||
* @param tenantId TODO
|
||||
* @return java.util.Map<java.lang.String,java.lang.Object>
|
||||
**/
|
||||
Map<String,Object> inquiryMap(String tenantId);
|
||||
|
||||
/**
|
||||
* 查询询盘来源前十国家
|
||||
* @author vinjor-M
|
||||
* @date 10:47 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> nationalData(String tenantId,String startDate,String endDate,Integer num);
|
||||
|
||||
/**
|
||||
* 查询盘设备
|
||||
* @author vinjor-M
|
||||
* @date 15:15 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @return java.util.List<com.ruoyi.busi.vo.ChartDataVO>
|
||||
**/
|
||||
List<ChartDataVO> equipmentData(String tenantId);
|
||||
|
||||
/**
|
||||
* 首页查询近30天询盘数
|
||||
* @author vinjor-M
|
||||
* @date 15:26 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @return java.util.List<com.ruoyi.busi.vo.IndexInquiryVO>
|
||||
**/
|
||||
List<IndexInquiryVO> dataList(String tenantId);
|
||||
|
||||
/**
|
||||
* 询盘走势
|
||||
* @author vinjor-M
|
||||
* @date 17:12 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return java.util.Map<java.lang.String,java.lang.Object>
|
||||
**/
|
||||
Map<String, Object> inquiryChart(String tenantId,String startDate,String endDate);
|
||||
/**
|
||||
* 询盘国家分布
|
||||
* @author vinjor-M
|
||||
* @date 17:12 2025/7/16
|
||||
* @param tenantId 站点编码
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return java.util.Map<java.lang.String,java.lang.Object>
|
||||
**/
|
||||
Map<String, Object> countryChart(String tenantId, String startDate, String endDate);
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user