diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java index 8e98259..9c2e3df 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseSiteController.java @@ -115,6 +115,9 @@ public class BaseSiteController extends BaseController { @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { List list = new ArrayList<>(Arrays.asList(ids)); + if (list.contains("main")){ + return error("请勿删除主站点"); + } return toAjax(baseSiteService.removeByIds(list)); } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java index dd0328d..3604c36 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java @@ -64,6 +64,8 @@ public class WebController extends BaseController { @Autowired private IBusiChatMainService busiChatMainService; @Autowired + private IBusiThirdItemService busiThirdItemService; + @Autowired private IBusiPageService pageService; @Autowired private CommonUtils commonUtils; @@ -373,7 +375,6 @@ public class WebController extends BaseController { @ApiImplicitParam(name = "tenantId", value = "站点唯一码", required = true, dataType = "string", paramType = "query", dataTypeClass = String.class) @GetMapping("/inquirySet") public R inquirySet(@RequestParam(required = true) String tenantId, HttpServletRequest request) { - String ip = CommonUtils.getIpAddr(request); return R.ok(baseInquiryService.getInquiry(tenantId)); } @@ -526,4 +527,27 @@ public class WebController extends BaseController { } } + /** + * 三方询盘点击记录次数 + * + * @return com.ruoyi.common.core.domain.AjaxResult + * @author vinjor-M + * @date 10:04 2025/7/8 + **/ + @ApiOperation("三方询盘点击记录次数") + @ApiImplicitParams(value = { + @ApiImplicitParam(name = "thirdSoft", value = "三方程序类型(Email|WhatsApp|Tel)", required = true, paramType = "body"), + @ApiImplicitParam(name = "tenantId", value = "站点编码", required = true, paramType = "body"), + @ApiImplicitParam(name = "equipment", value = "设备类型(移动端|电脑端)", required = true, paramType = "body") + }) + @PostMapping("/thirdItemSave") + public R thirdItemSave(@ApiIgnore @RequestBody BusiThirdItem thirdItem, HttpServletRequest request) { + thirdItem.setViewType("漂浮询盘"); + Map ipMap = commonUtils.getIPAndCountry(request); + thirdItem.setIp(ipMap.get("ip")); + thirdItem.setNational(ipMap.get("national")); + thirdItem.setOceania(ipMap.get("oceania")); + busiThirdItemService.save(thirdItem); + return R.ok(); + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiProdNew.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiProdNew.java index d9edbc9..5962a47 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiProdNew.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiProdNew.java @@ -1,6 +1,7 @@ package com.ruoyi.busi.domain; import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -70,9 +71,15 @@ public class BusiProdNew extends DlBaseEntity @ApiModelProperty("文章来源") private String newsFrom; + /** 展示平台(PC、APP) */ + @Excel(name = "展示平台(PC、APP)") + @ApiModelProperty("展示平台(PC、APP)") + private String showPlat; + /** 文章发布日期 */ @Excel(name = "文章发布日期") @ApiModelProperty("文章发布日期") + @JsonFormat(pattern = "yyyy-MM-dd") private Date publicDate; /** 产品主图或文章图片 */ diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiThirdItem.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiThirdItem.java index 8a99f01..dc91bbe 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiThirdItem.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiThirdItem.java @@ -39,6 +39,9 @@ public class BusiThirdItem extends DlBaseEntity /** 来源国家 */ @Excel(name = "来源国家") private String national; + /** 来源洲 */ + @Excel(name = "来源洲") + private String oceania; /** 所属email/电话/teams账户 */ @Excel(name = "所属email/电话/teams账户") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java index 1ddc4f5..4a557b1 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiCategoryServiceImpl.java @@ -40,20 +40,18 @@ public class BusiCategoryServiceImpl extends ServiceImpl treeCategory(BusiCategory category) { //查询全部栏目 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag,0) - .eq(BusiCategory::getTenantId,category.getTenantId()); - if(StringUtils.isNotEmpty(category.getCatgType())){ - lambdaQueryWrapper.eq(BusiCategory::getCatgType,category.getCatgType()); + lambdaQueryWrapper.eq(DlBaseEntity::getDelFlag, 0) + .eq(BusiCategory::getTenantId, category.getTenantId()); + if (StringUtils.isNotEmpty(category.getCatgType())) { + lambdaQueryWrapper.eq(BusiCategory::getCatgType, category.getCatgType()); } if (!StringUtils.isEmpty(category.getCatgName())) { lambdaQueryWrapper.like(BusiCategory::getCatgName, category.getCatgName()); } - lambdaQueryWrapper.orderByAsc(BusiCategory::getSort); + lambdaQueryWrapper.orderByDesc(BusiCategory::getSort); List list = list(lambdaQueryWrapper); List rtnList = buildCategoryTree(list); - return rtnList.stream().sorted(Comparator.comparing(BusiCategoryVO::getSort, - Comparator.nullsLast(Comparator.reverseOrder()))) - .collect(Collectors.toList()); + return rtnList; } /** @@ -152,12 +150,10 @@ public class BusiCategoryServiceImpl extends ServiceImpl - * @author PQZ - * @date 14:11 2025/6/23 **/ private List buildCategoryTree(List list) { // Map存放id到VO的映射 @@ -165,7 +161,7 @@ public class BusiCategoryServiceImpl extends ServiceImpl nodes) { + if (nodes == null || nodes.isEmpty()) { + return; + } + + // 对当前层级节点排序 + nodes.sort(Comparator.comparing(BusiCategoryVO::getSort, + Comparator.nullsLast(Comparator.reverseOrder()))); + + // 递归对子节点排序 + for (BusiCategoryVO node : nodes) { + if (node.getChildren() != null && !node.getChildren().isEmpty()) { + sortTreeNodes(node.getChildren()); + } + } + } + + /** * @param id 查询的栏目ID * @return java.util.List @@ -207,54 +230,55 @@ public class BusiCategoryServiceImpl extends ServiceImpl dealFirstId(List busiCategoryVOList) { - busiCategoryVOList.forEach(item->{ + busiCategoryVOList.forEach(item -> { String thisMaxParentId = item.getId(); item.setMaxParentId(thisMaxParentId); - if(null!=item.getChildren() && !item.getChildren().isEmpty()){ + if (null != item.getChildren() && !item.getChildren().isEmpty()) { //有子级 - this.setChildMaxParentId(item.getChildren(),thisMaxParentId); + this.setChildMaxParentId(item.getChildren(), thisMaxParentId); } }); return busiCategoryVOList; } - private void setChildMaxParentId(List childList,String maxParentId){ - childList.forEach(item->{ + private void setChildMaxParentId(List childList, String maxParentId) { + childList.forEach(item -> { item.setMaxParentId(maxParentId); - if(null!=item.getChildren()&& !item.getChildren().isEmpty()){ - this.setChildMaxParentId(item.getChildren(),maxParentId); + if (null != item.getChildren() && !item.getChildren().isEmpty()) { + this.setChildMaxParentId(item.getChildren(), maxParentId); } }); } /** * 给所有子级设置最父级ID并且反回map格式 - * @author vinjor-M - * @date 11:23 2025/7/19 + * * @param busiCategoryVOList 栏目树 * @return java.util.List + * @author vinjor-M + * @date 11:23 2025/7/19 **/ @Override - public Map dealFirstIdRtnMap(List busiCategoryVOList){ - Map rtnMap = new HashMap<>(); - busiCategoryVOList.forEach(item->{ + public Map dealFirstIdRtnMap(List busiCategoryVOList) { + Map rtnMap = new HashMap<>(); + busiCategoryVOList.forEach(item -> { String thisMaxParentId = item.getId(); item.setMaxParentId(thisMaxParentId); - rtnMap.put(item.getId(),thisMaxParentId); - if(null!=item.getChildren() && !item.getChildren().isEmpty()){ + rtnMap.put(item.getId(), thisMaxParentId); + if (null != item.getChildren() && !item.getChildren().isEmpty()) { //有子级 - this.setChildMaxParentIdMap(item.getChildren(),thisMaxParentId,rtnMap); + this.setChildMaxParentIdMap(item.getChildren(), thisMaxParentId, rtnMap); } }); return rtnMap; } - private void setChildMaxParentIdMap(List childList,String maxParentId,Map rtnMap){ - childList.forEach(item->{ + private void setChildMaxParentIdMap(List childList, String maxParentId, Map rtnMap) { + childList.forEach(item -> { item.setMaxParentId(maxParentId); - rtnMap.put(item.getId(),maxParentId); - if(null!=item.getChildren()&& !item.getChildren().isEmpty()){ - this.setChildMaxParentIdMap(item.getChildren(),maxParentId,rtnMap); + rtnMap.put(item.getId(), maxParentId); + if (null != item.getChildren() && !item.getChildren().isEmpty()) { + this.setChildMaxParentIdMap(item.getChildren(), maxParentId, rtnMap); } }); } diff --git a/dl_admin/ruoyi-admin/src/main/resources/application-druid.yml b/dl_admin/ruoyi-admin/src/main/resources/application-druid.yml index 15f87da..95f124b 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/application-druid.yml +++ b/dl_admin/ruoyi-admin/src/main/resources/application-druid.yml @@ -5,15 +5,15 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver druid: # # 主库数据源-点亮开发库 -# master: -# url: jdbc:mysql://82.156.161.160:3306/dl_site_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: site -# password: 123456 -# 主库数据源-客户测试服务器 master: - url: jdbc:mysql://1.92.99.15:3306/dl_site_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://82.156.161.160:3306/dl_site_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: site password: 123456 +# 主库数据源-客户生产服务器 +# master: +# url: jdbc:mysql://8.220.74.244:3306/dl_site_system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: site +# password: Chengda@2025~ # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/dl_admin/ruoyi-admin/src/main/resources/application.yml b/dl_admin/ruoyi-admin/src/main/resources/application.yml index 348b02e..cbd191b 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/application.yml +++ b/dl_admin/ruoyi-admin/src/main/resources/application.yml @@ -7,7 +7,7 @@ ruoyi: # 版权年份 copyrightYear: 2025 # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: D:/ruoyi/uploadPath + profile: /uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数字计算 char 字符验证 @@ -146,10 +146,10 @@ xss: # 阿里云OSS配置 aliyun: oss: - end-point: oss-cn-qingdao.aliyuncs.com - access-key-id: LTAI5tLThQFWgMLRTf3siNjb - access-key-secret: M5HjOyB8ir5tYEPFOQwImfJNgsumaG - bucket-name: dianliang123 + end-point: oss-eu-central-1.aliyuncs.com + access-key-id: LTAI5tB7zL8KuHDnMsdUhXRy + access-key-secret: bZ28G69DLR6Q3WhvvrWyxWw3lEbfzk + bucket-name: sd-chengda #google ads配置 google: ads: diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiKeywordMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiKeywordMapper.xml index ce8e748..9a110e6 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiKeywordMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/busi/BusiKeywordMapper.xml @@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, tenant_id from dl_busi_keyword - DELETE dl_busi_keyword WHERE id =#{id} AND tenant_id=#{tenantId} + DELETE FROM dl_busi_keyword WHERE id =#{id} AND tenant_id=#{tenantId}