瀏覽代碼

feat(system): 新增热词搜索功能并优化相关接口

- 新增 AppSearchHot 实体类字段:startTime 和 endTime
- 实现 IAppSearchHotService 接口的各个方法
- 创建 WebSearchHotController 控制器,提供热词搜索相关接口
- 优化 AppGameScheduleController 和 AppTeachingTimeController 的请求映射
- 调整 ESignServiceImpl 中的 remoteUrl 为常量,并移除未使用的代码
SheepHy 2 天之前
父節點
當前提交
4a41698216

+ 6 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java

@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -234,7 +235,11 @@ public class AppHomeServiceImpl implements IAppHomeService {
     @Override
     public List<AppSearchHot> getHotSearch() {
         return appSearchHotMapper.selectList(Wrappers.<AppSearchHot>lambdaQuery()
-                .last("LIMIT 10").orderByDesc(AppSearchHot::getSearchCount));
+                // 新增条件:当前时间在 startTime 和 endTime 之间
+                .le(AppSearchHot::getStartTime, new Date())  // 开始时间 <= 当前时间
+                .ge(AppSearchHot::getEndTime, new Date())    // 结束时间 >= 当前时间
+                .last("LIMIT 10")
+                .orderByDesc(AppSearchHot::getSearchCount));
     }
 
     /**

+ 2 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/ESignServiceImpl.java

@@ -55,6 +55,7 @@ public class ESignServiceImpl implements IESignService {
     private static final String REDIRECT_URL = "";
     private static final String NAME_MAIN_ORGANIZATION = "中数未来(海南)系统集成有限公司";
     private static final String MAIN_CARD_NUM = "91460105MAA9A6L75X";
+    private static final String REMOTE_URL = "http://127.0.0.1:8080/jeecg-boot/sys/common/static/";
     private static final String[] PERSON_AUTH_MODES = {"PSN_MOBILE3"};
     private static final String[] WILLINGNESS_MODES = {"CODE_SMS"};
     private static final String[] ORG_AUTH_MODES = {"ORG_ALIPAY_CREDIT", "ORG_LEGALREP"};
@@ -116,7 +117,7 @@ public class ESignServiceImpl implements IESignService {
     @Override
     public boolean uploadContractTemplate(AppContractInfoDTO appContractInfoDTO) throws EsignDemoException {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-        String remoteUrl = "http://127.0.0.1:8080/jeecg-boot/sys/common/static/" + appContractInfoDTO.getFilePath();
+        String remoteUrl = REMOTE_URL + appContractInfoDTO.getFilePath();
         String fileType = getFileExtension(appContractInfoDTO.getFilePath());
         if (fileType.isEmpty()) {
             throw new JeecgBootException("未指定文件类型");
@@ -323,7 +324,6 @@ public class ESignServiceImpl implements IESignService {
         positionGroup.getCustomer().forEach(position -> {
             signer1.add("signFields", buildSignFields(contractInfo.getFileId(), position.getX(), position.getY(), 100, 0, 0,false,""));
         });
-//        signer1.add("signFields", buildSignFields(contractInfo.getFileId(), 100, 200, 96, 100, 100,false,""));
         // 企业签署人
         JsonObject signer2 = new JsonObject();
         signer2.addProperty("signerType", 1);
@@ -336,8 +336,6 @@ public class ESignServiceImpl implements IESignService {
                 throw new RuntimeException(e);
             }
         });
-//        signer2.add("signFields", buildSignFields(contractInfo.getFileId(), 300, 200, 159, 300, 100,true,orgAuthorizedSeal(orgId)));
-
         signers.add(signer1);
         signers.add(signer2);
         return signers;

+ 13 - 14
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppGameScheduleController.java

@@ -1,26 +1,25 @@
 package org.jeecg.modules.system.app.controller;
 
-import java.util.Arrays;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.system.app.entity.AppGameSchedule;
-import org.jeecg.modules.system.app.service.IAppGameScheduleService;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
-
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.system.app.entity.AppGameSchedule;
+import org.jeecg.modules.system.app.service.IAppGameScheduleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import org.jeecg.common.aspect.annotation.AutoLog;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
  /**
  * @Description: 赛程安排表
  * @Author: jeecg-boot
@@ -29,7 +28,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
  */
 @Tag(name="赛程安排表")
 @RestController
-@RequestMapping("/org/jeecg/modules/system/app/appGameSchedule")
+@RequestMapping("/app/appGameSchedule")
 @Slf4j
 public class AppGameScheduleController extends JeecgController<AppGameSchedule, IAppGameScheduleService> {
 	@Autowired

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppTeachingTimeController.java

@@ -31,7 +31,7 @@ import java.util.List;
  */
 @Tag(name="教学/非教学维护表")
 @RestController
-@RequestMapping("/org/jeecg/modules/system/app/appTeachingTime")
+@RequestMapping("/app/appTeachingTime")
 @Slf4j
 public class AppTeachingTimeController extends JeecgController<AppTeachingTime, IAppTeachingTimeService> {
 	@Autowired

+ 86 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/WebSearchHotController.java

@@ -0,0 +1,86 @@
+package org.jeecg.modules.system.app.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.system.app.entity.AppSearchHot;
+import org.jeecg.modules.system.app.service.IAppSearchHotService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Tag(name="WEB热词相关接口")
+@RestController
+@RequestMapping("/web/search")
+@Slf4j
+public class WebSearchHotController {
+    @Resource
+    private IAppSearchHotService webSearchHotService;
+
+    /**
+     * @Author SheepHy
+     * @Description 查询全部热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    @GetMapping("/getHotSearch")
+    @Operation(summary = "查询全部热词")
+    public Result<List<AppSearchHot>> getHotSearch(){
+        return Result.ok(webSearchHotService.getHotSearch());
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 添加热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    @PutMapping("/addHotSearch")
+    @Operation(summary = "添加热词")
+    public Result<Boolean> addHotSearch(@RequestBody AppSearchHot appSearchHot){
+        return Result.ok(webSearchHotService.addHotSearch(appSearchHot));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 删除热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    @DeleteMapping("/deleteHotSearch")
+    @Operation(summary = "删除热词")
+    public Result<Boolean> deleteHotSearch(@RequestParam String id){
+        return Result.ok(webSearchHotService.deleteHotSearch(id));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 修改热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    @PutMapping("/updateHotSearch")
+    @Operation(summary = "修改热词")
+    public Result<Boolean> updateHotSearch(@RequestBody AppSearchHot appSearchHot){
+        return Result.ok(webSearchHotService.updateHotSearch(appSearchHot));
+    }
+
+    /**
+     * @Author SheepHy
+     * @Description 获取热词详情
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    @GetMapping("/getHotSearchById")
+    @Operation(summary = "获取热词详情")
+    public Result<AppSearchHot> getHotSearchById(@RequestParam String id){
+        return Result.ok(webSearchHotService.getHotSearchById(id));
+    }
+}

+ 18 - 2
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSearchHot.java

@@ -3,12 +3,16 @@ package org.jeecg.modules.system.app.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description: 运动类型表
@@ -31,13 +35,25 @@ public class AppSearchHot implements Serializable {
     private int searchCount;
     @Schema(description = "搜索内容")
     private String searchContent;
-    @Schema(description = "是否启用")
+    @Schema(description = "是否启用 0、未启用 1、启用")
     private int isActive;
-    @Schema(description = "是否推荐")
+    @Schema(description = "是否推荐 0、未推荐 1、推荐")
     private int isRecommend;
     @Schema(description = "关联分类ID")
     private String venueType;
     @Schema(description = "最后一次搜索用户ID")
     private String lastUser;
+    /**开始时间*/
+    @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "开始时间")
+    private Date startTime;
+    /**结束时间*/
+    @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "结束时间")
+    private Date endTime;
 
 }

+ 47 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSearchHotService.java

@@ -3,5 +3,52 @@ package org.jeecg.modules.system.app.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.system.app.entity.AppSearchHot;
 
+import java.util.List;
+
 public interface IAppSearchHotService extends IService<AppSearchHot> {
+    /**
+     * @Author SheepHy
+     * @Description 查询全部热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    List<AppSearchHot> getHotSearch();
+
+    /**
+     * @Author SheepHy
+     * @Description 添加热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    boolean addHotSearch(AppSearchHot appSearchHot);
+
+    /**
+     * @Author SheepHy
+     * @Description 删除热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    boolean deleteHotSearch(String id);
+
+    /**
+     * @Author SheepHy
+     * @Description 修改热词
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    boolean updateHotSearch(AppSearchHot appSearchHot);
+
+    /**
+     * @Author SheepHy
+     * @Description 获取热词详情
+     * @Date 9:52 2025/8/6
+     * @Param
+     * @return
+     **/
+    AppSearchHot getHotSearchById(String id);
+
 }

+ 29 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSearchHotServiceImpl.java

@@ -6,6 +6,35 @@ import org.jeecg.modules.system.app.mapper.AppSearchHotMapper;
 import org.jeecg.modules.system.app.service.IAppSearchHotService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 @Service
 public class AppSearchHotServiceImpl extends ServiceImpl<AppSearchHotMapper, AppSearchHot> implements IAppSearchHotService {
+    @Resource
+    private AppSearchHotMapper appSearchHotMapper;
+    @Override
+    public List<AppSearchHot> getHotSearch() {
+        return appSearchHotMapper.selectList(null);
+    }
+
+    @Override
+    public boolean addHotSearch(AppSearchHot appSearchHot) {
+        return appSearchHotMapper.insert(appSearchHot) > 0;
+    }
+
+    @Override
+    public boolean deleteHotSearch(String id) {
+        return appSearchHotMapper.deleteById(id) > 0;
+    }
+
+    @Override
+    public boolean updateHotSearch(AppSearchHot appSearchHot) {
+        return appSearchHotMapper.updateById(appSearchHot) > 0;
+    }
+
+    @Override
+    public AppSearchHot getHotSearchById(String id) {
+        return appSearchHotMapper.selectById(id);
+    }
 }