فهرست منبع

完善系统配置和短信配置

Huanyi 1 ماه پیش
والد
کامیت
3c706bbc7e
15فایلهای تغییر یافته به همراه158 افزوده شده و 15 حذف شده
  1. 25 0
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/WrapperUtils.java
  2. 3 1
      ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/utils/SmsUtils.java
  3. 10 0
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysSmsConfigController.java
  4. 1 1
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysSmsConfig.java
  5. 1 2
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/bo/SysSmsConfigBo.java
  6. 15 0
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/bo/SysSmsConfigChangeStatusBo.java
  7. 1 2
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/vo/SysSmsConfigVo.java
  8. 1 1
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteSmsConfigServiceImpl.java
  9. 3 0
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysSmsConfigService.java
  10. 34 3
      ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysSmsConfigServiceImpl.java
  11. 2 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysStoreController.java
  12. 16 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStorePageBo.java
  13. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysStoreVo.java
  14. 2 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysStoreService.java
  15. 36 3
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java

+ 25 - 0
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/utils/WrapperUtils.java

@@ -0,0 +1,25 @@
+package org.dromara.common.mybatis.utils;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * Wrapper工具类
+ * @Author: Huanyi
+ */
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class WrapperUtils {
+
+    /**
+     * {@code IN} 和 {@code NOT IN} 不能使用空的集合
+     */
+    public static final List<Long> NONE_IN_LIST = List.of(-1L);
+
+    public static List<Long> convertIds(List<Long> ids) {
+        return ids == null || ids.isEmpty() ? NONE_IN_LIST : ids;
+    }
+
+}

+ 3 - 1
ruoyi-common/ruoyi-common-sms/src/main/java/org/dromara/common/sms/utils/SmsUtils.java

@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.sms.model.SmsModel;
 import org.dromara.sms4j.aliyun.config.AlibabaConfig;
 import org.dromara.sms4j.provider.config.BaseConfig;
+import org.dromara.sms4j.qiniu.config.QiNiuConfig;
 import org.dromara.sms4j.tencent.config.TencentConfig;
 import org.dromara.sms4j.yunpian.config.YunpianConfig;
 
@@ -24,7 +25,8 @@ public class SmsUtils {
     private static final Map<String, Supplier<BaseConfig>> CONFIG_FACTORY_MAP = Map.of(
         "alibaba", AlibabaConfig::new,
         "tencent", TencentConfig::new,
-        "yunpian", YunpianConfig::new
+        "yunpian", YunpianConfig::new,
+        "qiniu", QiNiuConfig::new
     );
 
     /**

+ 10 - 0
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/controller/SysSmsConfigController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.resource.domain.bo.SysSmsConfigChangeStatusBo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -103,4 +104,13 @@ public class SysSmsConfigController extends BaseController {
                           @PathVariable("ids") Long[] ids) {
         return toAjax(sysSmsConfigService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    @RepeatSubmit()
+    @SaCheckPermission("resource:smsConfig:changeStatus")
+    @Log(title = "短信配置", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@Validated @RequestBody SysSmsConfigChangeStatusBo bo) {
+        return toAjax(sysSmsConfigService.updateStatus(bo));
+    }
+
 }

+ 1 - 1
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/SysSmsConfig.java

@@ -60,7 +60,7 @@ public class SysSmsConfig extends BaseEntity {
     /**
      * 状态
      */
-    private Integer status;
+    private Boolean status;
 
 
 }

+ 1 - 2
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/bo/SysSmsConfigBo.java

@@ -65,7 +65,6 @@ public class SysSmsConfigBo extends BaseEntity {
     /**
      * 状态
      */
-    private Integer status;
-
+    private Boolean status;
 
 }

+ 15 - 0
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/bo/SysSmsConfigChangeStatusBo.java

@@ -0,0 +1,15 @@
+package org.dromara.resource.domain.bo;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class SysSmsConfigChangeStatusBo {
+
+    @NotNull(message = "请从正确途径发出")
+    private Long id;
+
+    @NotNull(message = "请选择一个状态")
+    private Boolean status;
+
+}

+ 1 - 2
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/domain/vo/SysSmsConfigVo.java

@@ -74,7 +74,6 @@ public class SysSmsConfigVo implements Serializable {
      * 状态
      */
     @ExcelProperty(value = "状态")
-    private Integer status;
-
+    private Boolean status;
 
 }

+ 1 - 1
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/dubbo/RemoteSmsConfigServiceImpl.java

@@ -42,7 +42,7 @@ public class RemoteSmsConfigServiceImpl implements RemoteSmsConfigService {
     public List<RemoteSmsConfig> getConfigList() {
         List<SysSmsConfig> configs = baseMapper.selectList(
             Wrappers.lambdaQuery(SysSmsConfig.class)
-                .eq(SysSmsConfig::getStatus, 0)
+                .eq(SysSmsConfig::getStatus, true)
         );
 
         return configs.stream()

+ 3 - 0
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/ISysSmsConfigService.java

@@ -1,6 +1,7 @@
 package org.dromara.resource.service;
 
 import org.dromara.resource.domain.SysSmsConfig;
+import org.dromara.resource.domain.bo.SysSmsConfigChangeStatusBo;
 import org.dromara.resource.domain.vo.SysSmsConfigVo;
 import org.dromara.resource.domain.bo.SysSmsConfigBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -70,4 +71,6 @@ public interface ISysSmsConfigService {
     Long getAvailableId();
 
     SysSmsConfig getAvailableConfig();
+
+    boolean updateStatus(SysSmsConfigChangeStatusBo bo);
 }

+ 34 - 3
ruoyi-modules/ruoyi-resource/src/main/java/org/dromara/resource/service/impl/SysSmsConfigServiceImpl.java

@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.sms.config.DataSourceSmsReadConfig;
 import org.dromara.common.sms.model.SmsModel;
 import org.dromara.common.sms.utils.SmsUtils;
+import org.dromara.resource.domain.bo.SysSmsConfigChangeStatusBo;
 import org.dromara.sms4j.core.factory.SmsFactory;
 import org.springframework.stereotype.Service;
 import org.dromara.resource.domain.bo.SysSmsConfigBo;
@@ -19,10 +20,12 @@ import org.dromara.resource.domain.vo.SysSmsConfigVo;
 import org.dromara.resource.domain.SysSmsConfig;
 import org.dromara.resource.mapper.SysSmsConfigMapper;
 import org.dromara.resource.service.ISysSmsConfigService;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.Objects;
 
 /**
  * 短信配置Service业务层处理
@@ -104,7 +107,7 @@ public class SysSmsConfigServiceImpl implements ISysSmsConfigService {
         if (flag) {
             bo.setId(add.getId());
         }
-        SmsFactory.reload(String.valueOf(bo.getId()), config);
+        SmsFactory.createSmsBlend(config, String.valueOf(add.getId()));
         return flag;
     }
 
@@ -141,6 +144,7 @@ public class SysSmsConfigServiceImpl implements ISysSmsConfigService {
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
+        ids.forEach(id -> SmsFactory.unregister(id.toString()));
         return baseMapper.deleteByIds(ids) > 0;
     }
 
@@ -148,7 +152,7 @@ public class SysSmsConfigServiceImpl implements ISysSmsConfigService {
     public Long getAvailableId() {
         return baseMapper.selectOne(
             Wrappers.lambdaQuery(SysSmsConfig.class)
-                .eq(SysSmsConfig::getStatus, 0)
+                .eq(SysSmsConfig::getStatus, true)
                 .last("LIMIT 1")
         ).getId();
     }
@@ -157,8 +161,35 @@ public class SysSmsConfigServiceImpl implements ISysSmsConfigService {
     public SysSmsConfig getAvailableConfig() {
         return baseMapper.selectOne(
             Wrappers.lambdaQuery(SysSmsConfig.class)
-                .eq(SysSmsConfig::getStatus, 0)
+                .eq(SysSmsConfig::getStatus, true)
                 .last("LIMIT 1")
         );
     }
+
+    @Override
+    public boolean updateStatus(SysSmsConfigChangeStatusBo bo) {
+
+        List<SysSmsConfig> configs = baseMapper.selectList();
+
+        if (bo.getStatus()) {
+            configs.forEach(element -> {
+                if (!Objects.equals(element.getId(), bo.getId())) {
+                    if (element.getStatus()) {
+                        element.setStatus(false);
+                        SmsFactory.unregister(String.valueOf(element.getId()));
+                    }
+                } else {
+                    SmsFactory.createSmsBlend(config, String.valueOf(element.getId()));
+                    element.setStatus(bo.getStatus());
+                }
+            });
+        } else {
+            configs.forEach(element -> {
+                SmsFactory.createSmsBlend(config, String.valueOf(element.getId()));
+                element.setStatus(bo.getStatus());
+            });
+        }
+
+        return !baseMapper.updateById(configs).isEmpty();
+    }
 }

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysStoreController.java

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.bo.SysStorePageBo;
 import org.dromara.system.domain.vo.SysStoreStatusVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
@@ -43,7 +44,7 @@ public class SysStoreController extends BaseController {
      */
     @SaCheckPermission("system:store:list")
     @GetMapping("/list")
-    public TableDataInfo<SysStoreVo> list(SysStoreBo bo, PageQuery pageQuery) {
+    public TableDataInfo<SysStoreVo> list(SysStorePageBo bo, PageQuery pageQuery) {
         return sysStoreService.queryPageList(bo, pageQuery);
     }
 

+ 16 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStorePageBo.java

@@ -0,0 +1,16 @@
+package org.dromara.system.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysStorePageBo {
+
+    private String storeOrContact;
+
+    private Long area;
+
+    private Long station;
+
+    private Integer status;
+
+}

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysStoreVo.java

@@ -144,6 +144,14 @@ public class SysStoreVo implements Serializable {
      */
     private BigDecimal latitude;
 
+    /**
+     * 服务项目
+     */
     private List<Long> services;
 
+    /**
+     * 服务单
+     */
+    private Long serviceOrder;
+
 }

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysStoreService.java

@@ -1,6 +1,7 @@
 package org.dromara.system.service;
 
 import org.dromara.system.domain.SysStore;
+import org.dromara.system.domain.bo.SysStorePageBo;
 import org.dromara.system.domain.vo.SysStoreStatusVo;
 import org.dromara.system.domain.vo.SysStoreVo;
 import org.dromara.system.domain.bo.SysStoreBo;
@@ -33,7 +34,7 @@ public interface ISysStoreService {
      * @param pageQuery 分页参数
      * @return 门店管理分页列表
      */
-    TableDataInfo<SysStoreVo> queryPageList(SysStoreBo bo, PageQuery pageQuery);
+    TableDataInfo<SysStoreVo> queryPageList(SysStorePageBo bo, PageQuery pageQuery);
 
     /**
      * 查询符合条件的门店管理列表

+ 36 - 3
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysStoreServiceImpl.java

@@ -11,10 +11,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.mybatis.utils.WrapperUtils;
 import org.dromara.service.api.RemoteStoreServiceService;
 import org.dromara.service.api.domain.bo.RemoteStoreServiceBo;
+import org.dromara.system.domain.SysAreaStation;
+import org.dromara.system.domain.bo.SysStorePageBo;
 import org.dromara.system.domain.vo.SysStoreStatusVo;
+import org.dromara.system.enums.AreaStationStatusEnum;
 import org.dromara.system.enums.SysStoreStatusEnum;
+import org.dromara.system.mapper.SysAreaStationMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.bo.SysStoreBo;
 import org.dromara.system.domain.vo.SysStoreVo;
@@ -36,6 +41,7 @@ import java.util.*;
 public class SysStoreServiceImpl implements ISysStoreService {
 
     private final SysStoreMapper baseMapper;
+    private final SysAreaStationMapper areaStationMapper;
 
     @DubboReference
     private final RemoteStoreServiceService storeServiceService;
@@ -62,17 +68,44 @@ public class SysStoreServiceImpl implements ISysStoreService {
      * @return 门店管理分页列表
      */
     @Override
-    public TableDataInfo<SysStoreVo> queryPageList(SysStoreBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<SysStore> lqw = buildQueryWrapper(bo);
+    public TableDataInfo<SysStoreVo> queryPageList(SysStorePageBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SysStore> lqw = buildPageQueryWrapper(bo);
         Page<SysStoreVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
 
         List<Long> storeIds = new ArrayList<>();
         result.getRecords().forEach(e -> storeIds.add(e.getId()));
         Map<Long, List<Long>> map = storeServiceService.getByIds(storeIds);
-        result.getRecords().forEach(e -> e.setServices(map.get(e.getId())));
+        result.getRecords().forEach(e -> {
+            e.setServices(map.get(e.getId()));
+            e.setServiceOrder(0L);
+        });
         return TableDataInfo.build(result);
     }
 
+    private LambdaQueryWrapper<SysStore> buildPageQueryWrapper(SysStorePageBo bo) {
+
+        List<Long> siteIds = new ArrayList<>();
+
+        if (bo.getStation() == null) {
+            siteIds = areaStationMapper.selectList(
+                Wrappers.lambdaQuery(SysAreaStation.class)
+                    .select(SysAreaStation::getId)
+                    .eq(bo.getArea() != null, SysAreaStation::getParentId, bo.getArea())
+                    .eq(SysAreaStation::getStatus, AreaStationStatusEnum.ENABLE.getValue())
+            ).stream().map(SysAreaStation::getId).toList();
+        } else {
+            siteIds.add(bo.getStation());
+        }
+
+        return Wrappers.lambdaQuery(SysStore.class)
+            .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getName, bo.getStoreOrContact())
+            .or()
+            .like(StringUtils.isNotBlank(bo.getStoreOrContact()), SysStore::getContact, bo.getStoreOrContact())
+            .in(SysStore::getSite, WrapperUtils.convertIds(siteIds))
+            .eq(bo.getStatus() != null, SysStore::getStatus, bo.getStatus())
+            .orderByDesc(SysStore::getId);
+    }
+
     /**
      * 查询符合条件的门店管理列表
      *