Просмотр исходного кода

`fix add 微信小程序登录`

wenhongquan 1 год назад
Родитель
Сommit
356a4ede3d
43 измененных файлов с 2152 добавлено и 24 удалено
  1. 13 1
      pom.xml
  2. 0 3
      ruoyi-admin/pom.xml
  3. 15 1
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  4. 7 2
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
  5. 8 4
      ruoyi-admin/src/main/resources/application-dev.yml
  6. 8 0
      ruoyi-admin/src/main/resources/application.yml
  7. 2 2
      ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/maxkey/AuthMaxKeyRequest.java
  8. 1 0
      ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
  9. 3 0
      ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java
  10. 105 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteBagController.java
  11. 105 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteCompanycodeController.java
  12. 105 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SitePunterController.java
  13. 105 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteSiteController.java
  14. 92 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteBag.java
  15. 42 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteCompanycode.java
  16. 72 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SitePunter.java
  17. 77 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteSite.java
  18. 98 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteBagBo.java
  19. 42 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteCompanycodeBo.java
  20. 74 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SitePunterBo.java
  21. 80 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteSiteBo.java
  22. 106 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteBagVo.java
  23. 50 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteCompanycodeVo.java
  24. 82 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SitePunterVo.java
  25. 88 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteSiteVo.java
  26. 15 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteBagMapper.java
  27. 15 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteCompanycodeMapper.java
  28. 15 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SitePunterMapper.java
  29. 15 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteSiteMapper.java
  30. 49 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteBagService.java
  31. 49 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteCompanycodeService.java
  32. 49 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISitePunterService.java
  33. 49 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteSiteService.java
  34. 119 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteBagServiceImpl.java
  35. 110 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteCompanycodeServiceImpl.java
  36. 115 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SitePunterServiceImpl.java
  37. 116 0
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteSiteServiceImpl.java
  38. 23 10
      ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/TblCarInfoServiceImpl.java
  39. 7 0
      ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteBagMapper.xml
  40. 7 0
      ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteCompanycodeMapper.xml
  41. 7 0
      ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SitePunterMapper.xml
  42. 7 0
      ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteSiteMapper.xml
  43. 5 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

+ 13 - 1
pom.xml

@@ -39,7 +39,8 @@
         <mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
         <lombok.version>1.18.30</lombok.version>
         <bouncycastle.version>1.76</bouncycastle.version>
-        <justauth.version>1.16.6</justauth.version>
+<!--        <justauth.version>1.16.6</justauth.version>-->
+        <justauth.version>1.16.7-SNAPSHOT</justauth.version>
         <!-- 离线IP地址定位库 -->
         <ip2region.version>2.7.0</ip2region.version>
         <camel.version>4.4.0</camel.version>
@@ -465,6 +466,17 @@
                 <enabled>true</enabled>
             </releases>
         </repository>
+        <repository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
     </repositories>
 
     <pluginRepositories>

+ 0 - 3
ruoyi-admin/pom.xml

@@ -101,9 +101,6 @@
         </dependency>
 
 
-
-
-
         <!-- skywalking 整合 logback -->
 <!--        <dependency>-->
 <!--            <groupId>org.apache.skywalking</groupId>-->

+ 15 - 1
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import me.zhyd.oauth.model.AuthCallback;
 import me.zhyd.oauth.model.AuthResponse;
 import me.zhyd.oauth.model.AuthUser;
 import me.zhyd.oauth.request.AuthRequest;
@@ -67,6 +68,8 @@ public class AuthController {
     private final ScheduledExecutorService scheduledExecutorService;
 
 
+
+
     /**
      * 登录方法
      *
@@ -108,12 +111,23 @@ public class AuthController {
      * @return 结果
      */
     @GetMapping("/binding/{source}")
-    public R<String> authBinding(@PathVariable("source") String source) {
+    public R<String> authBinding(@PathVariable("source") String source,@RequestParam(required = false) String code) {
         SocialLoginConfigProperties obj = socialProperties.getType().get(source);
         if (ObjectUtil.isNull(obj)) {
             return R.fail(source + "平台账号暂不支持");
         }
         AuthRequest authRequest = SocialUtils.getAuthRequest(source, socialProperties);
+
+        if(source.equals("wechat_mini_program")){
+            if(code==null) return  R.fail("请填写小程序code");
+            AuthResponse<AuthUser> response = authRequest.login(AuthCallback.builder().code(code).build());
+            AuthUser authUserData = response.getData();
+            if (!response.ok()) {
+                return R.fail(response.getMsg());
+            }
+            loginService.socialRegister(authUserData);
+            return R.ok("操作成功");
+        }
         String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
         return R.ok("操作成功", authorizeUrl);
     }

+ 7 - 2
ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java

@@ -52,6 +52,7 @@ public class SocialAuthStrategy implements IAuthStrategy {
     private final SysUserMapper userMapper;
     private final SysLoginService loginService;
 
+
     /**
      * 登录-第三方授权登录
      *
@@ -70,7 +71,6 @@ public class SocialAuthStrategy implements IAuthStrategy {
         }
         AuthUser authUserData = response.getData();
         if ("GITEE".equals(authUserData.getSource())) {
-            // 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖
             HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus")
                     .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
                     .executeAsync();
@@ -83,7 +83,12 @@ public class SocialAuthStrategy implements IAuthStrategy {
         if (CollUtil.isEmpty(list)) {
             throw new ServiceException("你还没有绑定第三方账号,绑定后才可以登录!");
         }
-        Optional<SysSocialVo> opt = list.stream().filter(x -> x.getTenantId().equals(loginBody.getTenantId())).findAny();
+        Optional<SysSocialVo> opt = list.stream().findAny();
+        if (TenantHelper.isEnable()) {
+           opt = list.stream().filter(x -> x.getTenantId().equals(loginBody.getTenantId())).findAny();
+        }
+
+
         if (opt.isEmpty()) {
             throw new ServiceException("对不起,你没有权限登录当前租户!");
         }

+ 8 - 4
ruoyi-admin/src/main/resources/application-dev.yml

@@ -178,9 +178,9 @@ sms:
 
 --- # 三方授权
 justauth:
-  enabled: false
+  enabled: true
   # 前端外网访问地址
-  address: http://localhost:80
+  address: https://khy.xiaole.vip/api
   type:
     maxkey:
       # maxkey 服务器地址
@@ -233,9 +233,13 @@ justauth:
       client-secret: 1f7d08**********5b7**********29e
       redirect-uri: ${justauth.address}/social-callback?source=wechat_open
     wechat_mp:
-      client-id: 10**********6
-      client-secret: 1f7d08**********5b7**********29e
+      client-id: wx01d09951c567089d
+      client-secret: 079494f2fa6ecdc47c46f872bae769e7
       redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
+    wechat_mini_program:
+      client-id: wx01d09951c567089d
+      client-secret: 079494f2fa6ecdc47c46f872bae769e7
+      redirect-uri: ${justauth.address}/social-callback?source=wechat_mini_program
     wechat_enterprise:
       client-id: 10**********6
       client-secret: 1f7d08**********5b7**********29e

+ 8 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -274,4 +274,12 @@ forest:
   connect-timeout: 3000        # 连接超时时间,单位为毫秒
   read-timeout: 3000           # 数据读取超时时间,单位为毫秒
 
+wx:
+  miniapp:
+    configs:
+       appid: wx01d09951c567089d #微信小程序的appid
+       secret: 079494f2fa6ecdc47c46f872bae769e7 #微信小程序的Secret
+       aesKey: 1KCaxm0aNaDljRKW+nFywcs6218h9k5Ek3Mj9u60HGU= #微信小程序消息服务器配置的EncodingAESKey
+       msgDataFormat: JSON
+
 

+ 2 - 2
ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/maxkey/AuthMaxKeyRequest.java

@@ -30,7 +30,7 @@ public class AuthMaxKeyRequest extends AuthDefaultRequest {
     }
 
     @Override
-    protected AuthToken getAccessToken(AuthCallback authCallback) {
+    public AuthToken getAccessToken(AuthCallback authCallback) {
         String body = doPostAuthorizationCode(authCallback.getCode());
         Dict object = JsonUtils.parseMap(body);
         // oauth/token 验证异常
@@ -51,7 +51,7 @@ public class AuthMaxKeyRequest extends AuthDefaultRequest {
     }
 
     @Override
-    protected AuthUser getUserInfo(AuthToken authToken) {
+    public AuthUser getUserInfo(AuthToken authToken) {
         String body = doGetUserInfo(authToken);
         Dict object = JsonUtils.parseMap(body);
         // oauth/token 验证异常

+ 1 - 0
ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java

@@ -61,6 +61,7 @@ public class SocialUtils  {
             case "wechat_enterprise" -> new AuthWeChatEnterpriseQrcodeRequest(builder.agentId("").build(), STATE_CACHE);
             case "gitlab" -> new AuthGitlabRequest(builder.build(), STATE_CACHE);
             case "wechat_mp" -> new AuthWeChatMpRequest(builder.build(), STATE_CACHE);
+            case "wechat_mini_program" -> new AuthWechatMiniProgramRequest(builder.ignoreCheckRedirectUri(true).ignoreCheckState(true).build(), STATE_CACHE);
             case "aliyun" -> new AuthAliyunRequest(builder.build(), STATE_CACHE);
             case "maxkey" -> new AuthMaxKeyRequest(builder.build(), STATE_CACHE);
             default -> throw new AuthException("未获取到有效的Auth配置");

+ 3 - 0
ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java

@@ -223,6 +223,9 @@ public class GenUtils {
     public static Integer getColumnLength(String columnType) {
         if (StringUtils.indexOf(columnType, "(") > 0) {
             String length = StringUtils.substringBetween(columnType, "(", ")");
+            if(length.contains(",")){
+                return 10;
+            }
             return Integer.valueOf(length);
         } else {
             return 0;

+ 105 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteBagController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SiteBagVo;
+import org.dromara.system.domain.bo.SiteBagBo;
+import org.dromara.system.service.ISiteBagService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/bag")
+public class SiteBagController extends BaseController {
+
+    private final ISiteBagService siteBagService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:bag:list")
+    @GetMapping("/list")
+    public TableDataInfo<SiteBagVo> list(SiteBagBo bo, PageQuery pageQuery) {
+        return siteBagService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:bag:export")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SiteBagBo bo, HttpServletResponse response) {
+        List<SiteBagVo> list = siteBagService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", SiteBagVo.class, response);
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:bag:query")
+    @GetMapping("/{id}")
+    public R<SiteBagVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(siteBagService.queryById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @SaCheckPermission("system:bag:add")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SiteBagBo bo) {
+        return toAjax(siteBagService.insertByBo(bo));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @SaCheckPermission("system:bag:edit")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SiteBagBo bo) {
+        return toAjax(siteBagService.updateByBo(bo));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:bag:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(siteBagService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteCompanycodeController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SiteCompanycodeVo;
+import org.dromara.system.domain.bo.SiteCompanycodeBo;
+import org.dromara.system.service.ISiteCompanycodeService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/companycode")
+public class SiteCompanycodeController extends BaseController {
+
+    private final ISiteCompanycodeService siteCompanycodeService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:companycode:list")
+    @GetMapping("/list")
+    public TableDataInfo<SiteCompanycodeVo> list(SiteCompanycodeBo bo, PageQuery pageQuery) {
+        return siteCompanycodeService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:companycode:export")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SiteCompanycodeBo bo, HttpServletResponse response) {
+        List<SiteCompanycodeVo> list = siteCompanycodeService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", SiteCompanycodeVo.class, response);
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:companycode:query")
+    @GetMapping("/{id}")
+    public R<SiteCompanycodeVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String id) {
+        return R.ok(siteCompanycodeService.queryById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @SaCheckPermission("system:companycode:add")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SiteCompanycodeBo bo) {
+        return toAjax(siteCompanycodeService.insertByBo(bo));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @SaCheckPermission("system:companycode:edit")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SiteCompanycodeBo bo) {
+        return toAjax(siteCompanycodeService.updateByBo(bo));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:companycode:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] ids) {
+        return toAjax(siteCompanycodeService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SitePunterController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SitePunterVo;
+import org.dromara.system.domain.bo.SitePunterBo;
+import org.dromara.system.service.ISitePunterService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/punter")
+public class SitePunterController extends BaseController {
+
+    private final ISitePunterService sitePunterService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:punter:list")
+    @GetMapping("/list")
+    public TableDataInfo<SitePunterVo> list(SitePunterBo bo, PageQuery pageQuery) {
+        return sitePunterService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:punter:export")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SitePunterBo bo, HttpServletResponse response) {
+        List<SitePunterVo> list = sitePunterService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", SitePunterVo.class, response);
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:punter:query")
+    @GetMapping("/{id}")
+    public R<SitePunterVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(sitePunterService.queryById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @SaCheckPermission("system:punter:add")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SitePunterBo bo) {
+        return toAjax(sitePunterService.insertByBo(bo));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @SaCheckPermission("system:punter:edit")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SitePunterBo bo) {
+        return toAjax(sitePunterService.updateByBo(bo));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:punter:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(sitePunterService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 105 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/SiteSiteController.java

@@ -0,0 +1,105 @@
+package org.dromara.system.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.SiteSiteVo;
+import org.dromara.system.domain.bo.SiteSiteBo;
+import org.dromara.system.service.ISiteSiteService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/site")
+public class SiteSiteController extends BaseController {
+
+    private final ISiteSiteService siteSiteService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:site:list")
+    @GetMapping("/list")
+    public TableDataInfo<SiteSiteVo> list(SiteSiteBo bo, PageQuery pageQuery) {
+        return siteSiteService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @SaCheckPermission("system:site:export")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SiteSiteBo bo, HttpServletResponse response) {
+        List<SiteSiteVo> list = siteSiteService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", SiteSiteVo.class, response);
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("system:site:query")
+    @GetMapping("/{id}")
+    public R<SiteSiteVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(siteSiteService.queryById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @SaCheckPermission("system:site:add")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody SiteSiteBo bo) {
+        return toAjax(siteSiteService.insertByBo(bo));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @SaCheckPermission("system:site:edit")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody SiteSiteBo bo) {
+        return toAjax(siteSiteService.updateByBo(bo));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("system:site:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(siteSiteService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 92 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteBag.java

@@ -0,0 +1,92 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 site_bag
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("site_bag")
+public class SiteBag implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 快递公司
+     */
+    private String bagCompany;
+
+    /**
+     * 快递单号
+     */
+    private String bagNumber;
+
+    /**
+     * 出库状态,待取件0,出库1,异常2,异常已处理3
+     */
+    private String bagStatus;
+
+    /**
+     * 出库时间
+     */
+    private Date bagOutTime;
+
+    /**
+     * 货架号
+     */
+    private String bagLocal;
+
+    /**
+     * 层号
+     */
+    private String bagLocal2;
+
+    /**
+     * 入库时间,停用
+     */
+    private Date bagInTime;
+
+    /**
+     * 异常原因,如退件、损坏等
+     */
+    private String bagReason;
+
+    /**
+     * 所在站点
+     */
+    private String bagSite;
+
+    /**
+     * 修改时间
+     */
+    @TableField("updatedAt")
+    private Date updatedAt;
+
+    /**
+     * 创建时间,入库时间
+     */
+    @TableField("createdAt")
+    private Date createdAt;
+
+
+}

+ 42 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteCompanycode.java

@@ -0,0 +1,42 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 【请填写功能名称】对象 site_companycode
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("site_companycode")
+public class SiteCompanycode implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private String id;
+
+    /**
+     *
+     */
+    private String ShipperCode;
+
+    /**
+     *
+     */
+    private String Company;
+
+
+}

+ 72 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SitePunter.java

@@ -0,0 +1,72 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 site_punter
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("site_punter")
+public class SitePunter  implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     *
+     */
+    private String address;
+
+    /**
+     *
+     */
+    private String telnumber;
+
+    /**
+     *
+     */
+    @TableField("createdAt")
+    private Date createdAt;
+
+    /**
+     *
+     */
+    @TableField("updatedAt")
+    private Date updatedAt;
+
+    /**
+     *
+     */
+    private String puntername;
+
+    /**
+     *
+     */
+    private String notes;
+
+    /**
+     *
+     */
+    private String site;
+
+
+}

+ 77 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/SiteSite.java

@@ -0,0 +1,77 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 site_site
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("site_site")
+public class SiteSite  implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 站点名称
+     */
+    private String siteName;
+
+    /**
+     * 站点电话
+     */
+    private String siteTelnum;
+
+    /**
+     * 站点地址
+     */
+    private String siteAddress;
+
+    /**
+     * 站点定位
+     */
+    private String siteGps;
+
+    /**
+     * 站点管理员
+     */
+    private String siteManager;
+
+    /**
+     * 站点头像/图片
+     */
+    private String siteLogo;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createdAt")
+    private Date createdAt;
+
+    /**
+     * 更新时间
+     */
+    @TableField("updatedAt")
+    private Date updatedAt;
+
+
+}

+ 98 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteBagBo.java

@@ -0,0 +1,98 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SiteBag;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 【请填写功能名称】业务对象 site_bag
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SiteBag.class, reverseConvertGenerate = false)
+public class SiteBagBo extends BaseEntity {
+
+    /**
+     * id
+     */
+    @NotNull(message = "id不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 快递公司
+     */
+    @NotBlank(message = "快递公司不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagCompany;
+
+    /**
+     * 快递单号
+     */
+    @NotBlank(message = "快递单号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagNumber;
+
+    /**
+     * 出库状态,待取件0,出库1,异常2,异常已处理3
+     */
+    @NotBlank(message = "出库状态,待取件0,出库1,异常2,异常已处理3不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagStatus;
+
+    /**
+     * 出库时间
+     */
+    @NotNull(message = "出库时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date bagOutTime;
+
+    /**
+     * 货架号
+     */
+    @NotBlank(message = "货架号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagLocal;
+
+    /**
+     * 层号
+     */
+    @NotBlank(message = "层号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagLocal2;
+
+    /**
+     * 入库时间,停用
+     */
+    @NotNull(message = "入库时间,停用不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date bagInTime;
+
+    /**
+     * 异常原因,如退件、损坏等
+     */
+    @NotBlank(message = "异常原因,如退件、损坏等不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagReason;
+
+    /**
+     * 所在站点
+     */
+    @NotBlank(message = "所在站点不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String bagSite;
+
+    /**
+     * 修改时间
+     */
+    @NotNull(message = "修改时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date updatedAt;
+
+    /**
+     * 创建时间,入库时间
+     */
+    @NotNull(message = "创建时间,入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date createdAt;
+
+
+}

+ 42 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteCompanycodeBo.java

@@ -0,0 +1,42 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SiteCompanycode;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 【请填写功能名称】业务对象 site_companycode
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SiteCompanycode.class, reverseConvertGenerate = false)
+public class SiteCompanycodeBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { EditGroup.class })
+    private String id;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String ShipperCode;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String Company;
+
+
+}

+ 74 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SitePunterBo.java

@@ -0,0 +1,74 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SitePunter;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 【请填写功能名称】业务对象 site_punter
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SitePunter.class, reverseConvertGenerate = false)
+public class SitePunterBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String address;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String telnumber;
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date createdAt;
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date updatedAt;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String puntername;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String notes;
+
+    /**
+     * 
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String site;
+
+
+}

+ 80 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/bo/SiteSiteBo.java

@@ -0,0 +1,80 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.SiteSite;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 【请填写功能名称】业务对象 site_site
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = SiteSite.class, reverseConvertGenerate = false)
+public class SiteSiteBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 站点名称
+     */
+    @NotBlank(message = "站点名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteName;
+
+    /**
+     * 站点电话
+     */
+    @NotBlank(message = "站点电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteTelnum;
+
+    /**
+     * 站点地址
+     */
+    @NotBlank(message = "站点地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteAddress;
+
+    /**
+     * 站点定位
+     */
+    @NotBlank(message = "站点定位不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteGps;
+
+    /**
+     * 站点管理员
+     */
+    @NotBlank(message = "站点管理员不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteManager;
+
+    /**
+     * 站点头像/图片
+     */
+    @NotBlank(message = "站点头像/图片不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String siteLogo;
+
+    /**
+     * 创建时间
+     */
+    @NotNull(message = "创建时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date createdAt;
+
+    /**
+     * 更新时间
+     */
+    @NotNull(message = "更新时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Date updatedAt;
+
+
+}

+ 106 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteBagVo.java

@@ -0,0 +1,106 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.SiteBag;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 site_bag
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SiteBag.class)
+public class SiteBagVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @ExcelProperty(value = "id")
+    private Long id;
+
+    /**
+     * 快递公司
+     */
+    @ExcelProperty(value = "快递公司")
+    private String bagCompany;
+
+    /**
+     * 快递单号
+     */
+    @ExcelProperty(value = "快递单号")
+    private String bagNumber;
+
+    /**
+     * 出库状态,待取件0,出库1,异常2,异常已处理3
+     */
+    @ExcelProperty(value = "出库状态,待取件0,出库1,异常2,异常已处理3")
+    private String bagStatus;
+
+    /**
+     * 出库时间
+     */
+    @ExcelProperty(value = "出库时间")
+    private Date bagOutTime;
+
+    /**
+     * 货架号
+     */
+    @ExcelProperty(value = "货架号")
+    private String bagLocal;
+
+    /**
+     * 层号
+     */
+    @ExcelProperty(value = "层号")
+    private String bagLocal2;
+
+    /**
+     * 入库时间,停用
+     */
+    @ExcelProperty(value = "入库时间,停用")
+    private Date bagInTime;
+
+    /**
+     * 异常原因,如退件、损坏等
+     */
+    @ExcelProperty(value = "异常原因,如退件、损坏等")
+    private String bagReason;
+
+    /**
+     * 所在站点
+     */
+    @ExcelProperty(value = "所在站点")
+    private String bagSite;
+
+    /**
+     * 修改时间
+     */
+    @ExcelProperty(value = "修改时间")
+    private Date updatedAt;
+
+    /**
+     * 创建时间,入库时间
+     */
+    @ExcelProperty(value = "创建时间,入库时间")
+    private Date createdAt;
+
+
+}

+ 50 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteCompanycodeVo.java

@@ -0,0 +1,50 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.SiteCompanycode;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 site_companycode
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SiteCompanycode.class)
+public class SiteCompanycodeVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String id;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String ShipperCode;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String Company;
+
+
+}

+ 82 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SitePunterVo.java

@@ -0,0 +1,82 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.SitePunter;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 site_punter
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SitePunter.class)
+public class SitePunterVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String address;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String telnumber;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Date createdAt;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Date updatedAt;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String puntername;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String notes;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String site;
+
+
+}

+ 88 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/domain/vo/SiteSiteVo.java

@@ -0,0 +1,88 @@
+package org.dromara.system.domain.vo;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.system.domain.SiteSite;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 site_site
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = SiteSite.class)
+public class SiteSiteVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 站点名称
+     */
+    @ExcelProperty(value = "站点名称")
+    private String siteName;
+
+    /**
+     * 站点电话
+     */
+    @ExcelProperty(value = "站点电话")
+    private String siteTelnum;
+
+    /**
+     * 站点地址
+     */
+    @ExcelProperty(value = "站点地址")
+    private String siteAddress;
+
+    /**
+     * 站点定位
+     */
+    @ExcelProperty(value = "站点定位")
+    private String siteGps;
+
+    /**
+     * 站点管理员
+     */
+    @ExcelProperty(value = "站点管理员")
+    private String siteManager;
+
+    /**
+     * 站点头像/图片
+     */
+    @ExcelProperty(value = "站点头像/图片")
+    private String siteLogo;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createdAt;
+
+    /**
+     * 更新时间
+     */
+    @ExcelProperty(value = "更新时间")
+    private Date updatedAt;
+
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteBagMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SiteBag;
+import org.dromara.system.domain.vo.SiteBagVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface SiteBagMapper extends BaseMapperPlus<SiteBag, SiteBagVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteCompanycodeMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SiteCompanycode;
+import org.dromara.system.domain.vo.SiteCompanycodeVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface SiteCompanycodeMapper extends BaseMapperPlus<SiteCompanycode, SiteCompanycodeVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SitePunterMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SitePunter;
+import org.dromara.system.domain.vo.SitePunterVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface SitePunterMapper extends BaseMapperPlus<SitePunter, SitePunterVo> {
+
+}

+ 15 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/mapper/SiteSiteMapper.java

@@ -0,0 +1,15 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.SiteSite;
+import org.dromara.system.domain.vo.SiteSiteVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface SiteSiteMapper extends BaseMapperPlus<SiteSite, SiteSiteVo> {
+
+}

+ 49 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteBagService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SiteBag;
+import org.dromara.system.domain.vo.SiteBagVo;
+import org.dromara.system.domain.bo.SiteBagBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface ISiteBagService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    SiteBagVo queryById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<SiteBagVo> queryPageList(SiteBagBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<SiteBagVo> queryList(SiteBagBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(SiteBagBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(SiteBagBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteCompanycodeService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SiteCompanycode;
+import org.dromara.system.domain.vo.SiteCompanycodeVo;
+import org.dromara.system.domain.bo.SiteCompanycodeBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface ISiteCompanycodeService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    SiteCompanycodeVo queryById(String id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<SiteCompanycodeVo> queryPageList(SiteCompanycodeBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<SiteCompanycodeVo> queryList(SiteCompanycodeBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(SiteCompanycodeBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(SiteCompanycodeBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISitePunterService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SitePunter;
+import org.dromara.system.domain.vo.SitePunterVo;
+import org.dromara.system.domain.bo.SitePunterBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface ISitePunterService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    SitePunterVo queryById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<SitePunterVo> queryPageList(SitePunterBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<SitePunterVo> queryList(SitePunterBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(SitePunterBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(SitePunterBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 49 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/ISiteSiteService.java

@@ -0,0 +1,49 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SiteSite;
+import org.dromara.system.domain.vo.SiteSiteVo;
+import org.dromara.system.domain.bo.SiteSiteBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+public interface ISiteSiteService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    SiteSiteVo queryById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<SiteSiteVo> queryPageList(SiteSiteBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<SiteSiteVo> queryList(SiteSiteBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(SiteSiteBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(SiteSiteBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 119 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteBagServiceImpl.java

@@ -0,0 +1,119 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SiteBagBo;
+import org.dromara.system.domain.vo.SiteBagVo;
+import org.dromara.system.domain.SiteBag;
+import org.dromara.system.mapper.SiteBagMapper;
+import org.dromara.system.service.ISiteBagService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@RequiredArgsConstructor
+@Service
+public class SiteBagServiceImpl implements ISiteBagService {
+
+    private final SiteBagMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public SiteBagVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<SiteBagVo> queryPageList(SiteBagBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SiteBag> lqw = buildQueryWrapper(bo);
+        Page<SiteBagVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<SiteBagVo> queryList(SiteBagBo bo) {
+        LambdaQueryWrapper<SiteBag> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SiteBag> buildQueryWrapper(SiteBagBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SiteBag> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getBagCompany()), SiteBag::getBagCompany, bo.getBagCompany());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagNumber()), SiteBag::getBagNumber, bo.getBagNumber());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagStatus()), SiteBag::getBagStatus, bo.getBagStatus());
+        lqw.eq(bo.getBagOutTime() != null, SiteBag::getBagOutTime, bo.getBagOutTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagLocal()), SiteBag::getBagLocal, bo.getBagLocal());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagLocal2()), SiteBag::getBagLocal2, bo.getBagLocal2());
+        lqw.eq(bo.getBagInTime() != null, SiteBag::getBagInTime, bo.getBagInTime());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagReason()), SiteBag::getBagReason, bo.getBagReason());
+        lqw.eq(StringUtils.isNotBlank(bo.getBagSite()), SiteBag::getBagSite, bo.getBagSite());
+        lqw.eq(bo.getUpdatedAt() != null, SiteBag::getUpdatedAt, bo.getUpdatedAt());
+        lqw.eq(bo.getCreatedAt() != null, SiteBag::getCreatedAt, bo.getCreatedAt());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(SiteBagBo bo) {
+        SiteBag add = MapstructUtils.convert(bo, SiteBag.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(SiteBagBo bo) {
+        SiteBag update = MapstructUtils.convert(bo, SiteBag.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SiteBag entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 110 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteCompanycodeServiceImpl.java

@@ -0,0 +1,110 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SiteCompanycodeBo;
+import org.dromara.system.domain.vo.SiteCompanycodeVo;
+import org.dromara.system.domain.SiteCompanycode;
+import org.dromara.system.mapper.SiteCompanycodeMapper;
+import org.dromara.system.service.ISiteCompanycodeService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@RequiredArgsConstructor
+@Service
+public class SiteCompanycodeServiceImpl implements ISiteCompanycodeService {
+
+    private final SiteCompanycodeMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public SiteCompanycodeVo queryById(String id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<SiteCompanycodeVo> queryPageList(SiteCompanycodeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SiteCompanycode> lqw = buildQueryWrapper(bo);
+        Page<SiteCompanycodeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<SiteCompanycodeVo> queryList(SiteCompanycodeBo bo) {
+        LambdaQueryWrapper<SiteCompanycode> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SiteCompanycode> buildQueryWrapper(SiteCompanycodeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SiteCompanycode> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getShipperCode()), SiteCompanycode::getShipperCode, bo.getShipperCode());
+        lqw.eq(StringUtils.isNotBlank(bo.getCompany()), SiteCompanycode::getCompany, bo.getCompany());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(SiteCompanycodeBo bo) {
+        SiteCompanycode add = MapstructUtils.convert(bo, SiteCompanycode.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(SiteCompanycodeBo bo) {
+        SiteCompanycode update = MapstructUtils.convert(bo, SiteCompanycode.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SiteCompanycode entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 115 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SitePunterServiceImpl.java

@@ -0,0 +1,115 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SitePunterBo;
+import org.dromara.system.domain.vo.SitePunterVo;
+import org.dromara.system.domain.SitePunter;
+import org.dromara.system.mapper.SitePunterMapper;
+import org.dromara.system.service.ISitePunterService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@RequiredArgsConstructor
+@Service
+public class SitePunterServiceImpl implements ISitePunterService {
+
+    private final SitePunterMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public SitePunterVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<SitePunterVo> queryPageList(SitePunterBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SitePunter> lqw = buildQueryWrapper(bo);
+        Page<SitePunterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<SitePunterVo> queryList(SitePunterBo bo) {
+        LambdaQueryWrapper<SitePunter> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SitePunter> buildQueryWrapper(SitePunterBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SitePunter> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getAddress()), SitePunter::getAddress, bo.getAddress());
+        lqw.eq(StringUtils.isNotBlank(bo.getTelnumber()), SitePunter::getTelnumber, bo.getTelnumber());
+        lqw.eq(bo.getCreatedAt() != null, SitePunter::getCreatedAt, bo.getCreatedAt());
+        lqw.eq(bo.getUpdatedAt() != null, SitePunter::getUpdatedAt, bo.getUpdatedAt());
+        lqw.like(StringUtils.isNotBlank(bo.getPuntername()), SitePunter::getPuntername, bo.getPuntername());
+        lqw.eq(StringUtils.isNotBlank(bo.getNotes()), SitePunter::getNotes, bo.getNotes());
+        lqw.eq(StringUtils.isNotBlank(bo.getSite()), SitePunter::getSite, bo.getSite());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(SitePunterBo bo) {
+        SitePunter add = MapstructUtils.convert(bo, SitePunter.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(SitePunterBo bo) {
+        SitePunter update = MapstructUtils.convert(bo, SitePunter.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SitePunter entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 116 - 0
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/SiteSiteServiceImpl.java

@@ -0,0 +1,116 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.SiteSiteBo;
+import org.dromara.system.domain.vo.SiteSiteVo;
+import org.dromara.system.domain.SiteSite;
+import org.dromara.system.mapper.SiteSiteMapper;
+import org.dromara.system.service.ISiteSiteService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2024-10-31
+ */
+@RequiredArgsConstructor
+@Service
+public class SiteSiteServiceImpl implements ISiteSiteService {
+
+    private final SiteSiteMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public SiteSiteVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<SiteSiteVo> queryPageList(SiteSiteBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SiteSite> lqw = buildQueryWrapper(bo);
+        Page<SiteSiteVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<SiteSiteVo> queryList(SiteSiteBo bo) {
+        LambdaQueryWrapper<SiteSite> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<SiteSite> buildQueryWrapper(SiteSiteBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SiteSite> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getSiteName()), SiteSite::getSiteName, bo.getSiteName());
+        lqw.eq(StringUtils.isNotBlank(bo.getSiteTelnum()), SiteSite::getSiteTelnum, bo.getSiteTelnum());
+        lqw.eq(StringUtils.isNotBlank(bo.getSiteAddress()), SiteSite::getSiteAddress, bo.getSiteAddress());
+        lqw.eq(StringUtils.isNotBlank(bo.getSiteGps()), SiteSite::getSiteGps, bo.getSiteGps());
+        lqw.eq(StringUtils.isNotBlank(bo.getSiteManager()), SiteSite::getSiteManager, bo.getSiteManager());
+        lqw.eq(StringUtils.isNotBlank(bo.getSiteLogo()), SiteSite::getSiteLogo, bo.getSiteLogo());
+        lqw.eq(bo.getCreatedAt() != null, SiteSite::getCreatedAt, bo.getCreatedAt());
+        lqw.eq(bo.getUpdatedAt() != null, SiteSite::getUpdatedAt, bo.getUpdatedAt());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(SiteSiteBo bo) {
+        SiteSite add = MapstructUtils.convert(bo, SiteSite.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(SiteSiteBo bo) {
+        SiteSite update = MapstructUtils.convert(bo, SiteSite.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(SiteSite entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+}

+ 23 - 10
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/TblCarInfoServiceImpl.java

@@ -16,6 +16,7 @@ import org.dromara.system.domain.GpsData;
 import org.dromara.system.domain.TblCarSchedule;
 import org.dromara.system.domain.bo.CountDataBo;
 import org.dromara.system.domain.vo.CountDataVo;
+import org.dromara.system.domain.vo.GpsDataVo;
 import org.dromara.system.mapper.TblCountDataMapper;
 import org.dromara.system.mapper.TblGpsDataMapper;
 import org.dromara.system.service.ITblCountDataService;
@@ -70,18 +71,30 @@ public class TblCarInfoServiceImpl implements ITblCarInfoService {
     public TableDataInfo<TblCarInfoVo> queryPageList(TblCarInfoBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<TblCarInfo> lqw = buildQueryWrapper(bo);
         Page<TblCarInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        try {
+
             result.getRecords().forEach(carInfoVo -> {
-                JSONUtil.parseArray(carInfoVo.getDeviceInfos()).toList(JSONObject.class).forEach(deviceInfo -> {
-                    if(deviceInfo.getStr("type").equals("gps")){
-                        carInfoVo.setLocation(RedisUtils.getCacheObject(StringUtils.format("gps_{}", deviceInfo.getStr("code"))));
-                    }
-                    if(deviceInfo.getStr("type").equals("people_count")){
-                        carInfoVo.setLastCountTime(RedisUtils.getCacheObject(StringUtils.format("count_{}", deviceInfo.getStr("code"))));
-                    }
-                });
+                try {
+                    JSONUtil.parseArray(carInfoVo.getDeviceInfos()).toList(JSONObject.class).forEach(deviceInfo -> {
+                        if (deviceInfo.getStr("type").equals("gps")) {
+                            if (RedisUtils.getCacheObject(StringUtils.format("gps_{}", deviceInfo.getStr("code"))) == null) {
+                                try {
+                                    List<GpsDataVo> d = gpsDataMapper.selectVoPage((new PageQuery()).build(), Wrappers.<GpsData>lambdaQuery().eq(GpsData::getDevicecode, deviceInfo.getStr("code")).orderByDesc(GpsData::getTs));
+                                    if (d != null && d.size() > 0) {
+                                        carInfoVo.setLocation(d.get(0));
+                                    }
+                                } catch (Exception e) {
+                                }
+                            } else {
+                                carInfoVo.setLocation(RedisUtils.getCacheObject(StringUtils.format("gps_{}", deviceInfo.getStr("code"))));
+                            }
+                        }
+                        if (deviceInfo.getStr("type").equals("people_count")) {
+                            carInfoVo.setLastCountTime(RedisUtils.getCacheObject(StringUtils.format("count_{}", deviceInfo.getStr("code"))));
+                        }
+                    });
+                }catch (Exception e){}
             });
-        }catch (Exception e){}
+
 
         return TableDataInfo.build(result);
     }

+ 7 - 0
ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteBagMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.SiteBagMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteCompanycodeMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.SiteCompanycodeMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SitePunterMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.SitePunterMapper">
+
+</mapper>

+ 7 - 0
ruoyi-modules/ruoyi-khy/src/main/resources/mapper/system/SiteSiteMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.system.mapper.SiteSiteMapper">
+
+</mapper>

+ 5 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -61,7 +61,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
         QueryWrapper<SysUser> wrapper = (QueryWrapper<SysUser>)this.buildQueryWrapper(user);
         if(user.getParams()!=null && user.getParams().get("roleNames")!=null){
-            wrapper.in("u.role_names", user.getParams().get("roleNames").toString().split(","));
+            if(user.getParams().get("roleNames").toString().contains(",")){
+                wrapper.in("u.role_names", user.getParams().get("roleNames").toString().split(","));
+            }else{
+                wrapper.like("u.role_names", user.getParams().get("roleNames").toString());
+            }
         }
         Page<SysUserVo> page = baseMapper.selectPageUserList(pageQuery.build(), wrapper);
         page.getRecords().forEach(sysUserVo -> {