From 8444084e6aa11efa23287e7f82474ac22378a5c4 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 01 四月 2025 16:03:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java |  772 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 755 insertions(+), 17 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
index 4c4c2f8..6ddda72 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java
@@ -1,15 +1,41 @@
 package com.ruoyi.system.service.impl.config;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ibm.icu.util.LocaleData;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.constant.ConfigEnum;
-import com.ruoyi.system.domain.dto.MgtServiceMobileEditDto;
+import com.ruoyi.system.api.constant.SecurityConstant;
+import com.ruoyi.system.api.domain.dto.BoardMemberTotalDto;
+import com.ruoyi.system.api.domain.poji.config.Activeness;
+import com.ruoyi.system.api.domain.poji.sys.SysUser;
+import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo;
+import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
+import com.ruoyi.system.api.service.RemoteActivityService;
+import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteOrderService;
+import com.ruoyi.system.api.service.RemoteShopService;
+import com.ruoyi.system.domain.dto.*;
+import com.ruoyi.system.domain.pojo.config.Advert;
 import com.ruoyi.system.domain.pojo.config.CustomConfig;
+import com.ruoyi.system.domain.vo.MgtActivenessVo;
+import com.ruoyi.system.domain.vo.MgtAllCustomConfigVo;
+import com.ruoyi.system.domain.vo.MgtOperLogPageVo;
 import com.ruoyi.system.mapper.config.CustomConfigMapper;
-import com.ruoyi.system.service.config.CustomConfigService;
+import com.ruoyi.system.service.config.*;
+import com.ruoyi.system.service.sys.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Date;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -25,25 +51,57 @@
     @Resource
     private CustomConfigMapper customConfigMapper;
 
+    @Resource
+    private AdvertService advertService;
+
+    @Resource
+    private ActivenessService activenessService;
+
+    @Resource
+    private RemoteMemberService remoteMemberService;
+
+    @Resource
+    private RecommendCooperationService recommendCooperationService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
+    @Resource
+    private RemoteOrderService remoteOrderService;
+
+    @Resource
+    private RemoteActivityService remoteActivityService;
+
+    @Resource
+    private StaffSuggestService staffSuggestService;
+
+    @Resource
+    private RedisService redisService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+
+
+
     /**
-     * @description  通过key获取系统自定义配置
-     * @author  jqs
-     * @date    2023/6/6 11:55
      * @param key
-     * @return  CustomConfig
+     * @return CustomConfig
+     * @description 通过key获取系统自定义配置
+     * @author jqs
+     * @date 2023/6/6 11:55
      */
     @Override
-    public CustomConfig getByKey(String key){
+    public CustomConfig getByKey(String key) {
         return customConfigMapper.getByKey(key);
     }
 
-
     /**
-     * @description  修改客服号码
-     * @author  jqs
-     * @date    2023/6/6 11:53
      * @param mgtServiceMobileEditDto
-     * @return  void
+     * @return void
+     * @description 修改客服号码
+     * @author jqs
+     * @date 2023/6/6 11:53
      */
     @Override
     public void editServiceMobile(MgtServiceMobileEditDto mgtServiceMobileEditDto) {
@@ -53,14 +111,694 @@
         if (customConfig == null) {
             customConfig = new CustomConfig();
             customConfig.setCreateTime(new Date());
+            customConfig.setDelFlag(0);
         }
         // 设置配置的类型、键、名称、值和更新时间
-        customConfig.setType(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyType());
-        customConfig.setKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
-        customConfig.setName(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyName());
-        customConfig.setValue(mgtServiceMobileEditDto.getServiceMobile());
+        customConfig.setConfigType(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyType());
+        customConfig.setConfigKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
+        customConfig.setConfigName(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyName());
+        customConfig.setConfigValue(mgtServiceMobileEditDto.getServiceMobile());
         customConfig.setUpdateTime(new Date());
         // 保存或更新配置
         this.saveOrUpdate(customConfig);
     }
+
+    /**
+     * @description  修改客服二维码
+     * @author  jqs
+     * @date    2023/7/25 16:17
+     * @param mgtServiceCodeEditDto
+     * @return  void
+     */
+    @Override
+    public void editServiceCode(MgtServiceCodeEditDto mgtServiceCodeEditDto){
+        // 获取平台服务电话的配置
+        CustomConfig customConfig = getByKey(ConfigEnum.PLATFORM_SERVICE_CODE.getKey());
+        // 如果配置不存在,则创建一个新的配置
+        if (customConfig == null) {
+            customConfig = new CustomConfig();
+            customConfig.setCreateTime(new Date());
+            customConfig.setDelFlag(0);
+        }
+        // 设置配置的类型、键、名称、值和更新时间
+        customConfig.setConfigType(ConfigEnum.PLATFORM_SERVICE_CODE.getKeyType());
+        customConfig.setConfigKey(ConfigEnum.PLATFORM_SERVICE_CODE.getKey());
+        customConfig.setConfigName(ConfigEnum.PLATFORM_SERVICE_CODE.getKeyName());
+        customConfig.setConfigValue(mgtServiceCodeEditDto.getServiceCodeUrl());
+        customConfig.setUpdateTime(new Date());
+        // 保存或更新配置
+        this.saveOrUpdate(customConfig);
+    }
+
+    /**
+     * @description  修改统一分成
+     * @author  jqs
+     * @date    2023/9/4 18:05
+     * @param mgtShopCommonProportionEditDto
+     * @return  void
+     */
+    @Override
+    public void editShopProportion(MgtShopCommonProportionEditDto mgtShopCommonProportionEditDto){
+        // 获取平台统一分成的配置
+        CustomConfig customConfig = getByKey(ConfigEnum.SHOP_COMMON_PROPORTION.getKey());
+        // 如果配置不存在,则创建一个新的配置
+        if (customConfig == null) {
+            customConfig = new CustomConfig();
+            customConfig.setCreateTime(new Date());
+            customConfig.setDelFlag(0);
+        }
+        // 设置配置的类型、键、名称、值和更新时间
+        customConfig.setConfigType(ConfigEnum.SHOP_COMMON_PROPORTION.getKeyType());
+        customConfig.setConfigKey(ConfigEnum.SHOP_COMMON_PROPORTION.getKey());
+        customConfig.setConfigName(ConfigEnum.SHOP_COMMON_PROPORTION.getKeyName());
+        customConfig.setConfigValue(mgtShopCommonProportionEditDto.getShopCommonProportion());
+        customConfig.setUpdateTime(new Date());
+        // 保存或更新配置
+        this.saveOrUpdate(customConfig);
+        redisService.setCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION,mgtShopCommonProportionEditDto.getShopCommonProportion());
+    }
+
+    /**
+     * @param
+     * @return MgtCustomConfigVo
+     * @description 平台获取自定义配置
+     * @author jqs
+     * @date 2023/6/7 15:02
+     */
+    @Override
+    public MgtAllCustomConfigVo getAllCustomConfig() {
+        MgtAllCustomConfigVo mgtAllCustomConfigVo = new MgtAllCustomConfigVo();
+        //获取自定义配置
+        List<CustomConfig> customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper<CustomConfig>().eq(CustomConfig::getDelFlag, 0));
+        Optional.ofNullable(customConfigList).ifPresent(list -> {
+            Map<String, CustomConfig> configMap = list.stream().collect(Collectors.toMap(CustomConfig::getConfigKey, Function.identity()));
+            // 遍历配置映射,设置相应的属性值
+            configMap.forEach((key, value) -> {
+                switch (key) {
+                    case "SHARE_INTEGRAL":
+                        mgtAllCustomConfigVo.setShareIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SUGGEST_PLATFORM_INTEGRAL":
+                        mgtAllCustomConfigVo.setSuggestPlatformIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SIGN_IN_INTEGRAL":
+                        mgtAllCustomConfigVo.setSignInIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SUGGEST_SHOP_INTEGRAL":
+                        mgtAllCustomConfigVo.setSuggestShopIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "PAY_MONEY_INTEGRAL":
+                        mgtAllCustomConfigVo.setPayMoneyIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "ORDER_AUTO_CANCEL_TIME":
+                        mgtAllCustomConfigVo.setOrderAutoCancelTime(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "HOME_STYLE":
+                        mgtAllCustomConfigVo.setHomeStyle(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SHOP_EMERGENCY_DEGREE":
+                        mgtAllCustomConfigVo.setShopEmergencyDegree(value.getConfigValue());
+                        break;
+                    case "SHOP_COMMON_PROPORTION":
+                        mgtAllCustomConfigVo.setShopCommonProportion(value.getConfigValue());
+                        break;
+                    case "SHOP_FOLLOW_TYPE":
+                        mgtAllCustomConfigVo.setShopFollowType(value.getConfigValue());
+                        break;
+                    case "SHOP_CUSTOM_STATUS":
+                        mgtAllCustomConfigVo.setShopCustomStatus(value.getConfigValue());
+                        break;
+                    case "SHOP_SOURCE_CHANNEL":
+                        mgtAllCustomConfigVo.setShopSourceChannel(value.getConfigValue());
+                        break;
+                    case "MEMBER_SOURCE_CHANNEL":
+                        mgtAllCustomConfigVo.setMemberSourceChannel(value.getConfigValue());
+                        break;
+                    case "MEMBER_CHARACTER":
+                        mgtAllCustomConfigVo.setMemberCharacter(value.getConfigValue());
+                        break;
+                    case "MEMBER_LEVEL":
+                        mgtAllCustomConfigVo.setMemberLevel(value.getConfigValue());
+                        break;
+                    case "MEMBER_TYPE":
+                        mgtAllCustomConfigVo.setMemberType(value.getConfigValue());
+                        break;
+                    case "NURSE_PROBLEM":
+                        mgtAllCustomConfigVo.setNurseProblem(value.getConfigValue());
+                        break;
+                    case "STORE_COURSE_DISPLAY_NAME":
+                        mgtAllCustomConfigVo.setStoreCourseDisplayName(value.getConfigValue());
+                        break;
+                    case "STORE_COURSE_DISPLAY_PASSWORD":
+                        mgtAllCustomConfigVo.setStoreCourseDisplayPassword(value.getConfigValue());
+                        break;
+                    default:
+                        break;
+                }
+            });
+        });
+        //获取广告配置
+        Advert advert = advertService.getAdvert();
+        if (advert != null) {
+            mgtAllCustomConfigVo.setHomeSlogan(advert.getAdContent());
+            mgtAllCustomConfigVo.setHomeLogo(advert.getLogoUrl());
+            mgtAllCustomConfigVo.setAdUrl(advert.getAdUrl());
+            mgtAllCustomConfigVo.setTargetType(advert.getTargetType());
+            mgtAllCustomConfigVo.setLinkType(advert.getLinkType());
+            mgtAllCustomConfigVo.setLinkUrl(advert.getLinkUrl());
+            mgtAllCustomConfigVo.setJumpType(advert.getJumpType());
+            mgtAllCustomConfigVo.setJumpId(advert.getJumpId());
+        }
+        //获取活跃度配置
+        List<Activeness> activenessList = activenessService.listActiveness();
+        if (activenessList != null && !activenessList.isEmpty()) {
+            List<MgtActivenessVo> mgtActivenessVoList = activenessList.stream()
+                    .map(activeness -> {
+                        MgtActivenessVo mgtActivenessVo = new MgtActivenessVo();
+                        mgtActivenessVo.setActivenessId(activeness.getActivenessId());
+                        mgtActivenessVo.setActivenessName(activeness.getActivenessName());
+                        mgtActivenessVo.setStartDay(activeness.getStartDay());
+                        mgtActivenessVo.setEndDay(activeness.getEndDay());
+                        return mgtActivenessVo;
+                    })
+                    .collect(Collectors.toList());
+            mgtAllCustomConfigVo.setMgtActivenessVoList(mgtActivenessVoList);
+        }
+        return mgtAllCustomConfigVo;
+    }
+
+
+    /**
+     * @param mgtOtherConfigEditDto
+     * @return void
+     * @description 修改其他设置
+     * @author jqs
+     * @date 2023/6/7 16:07
+     */
+    @Override
+    public void editOtherConfig(MgtOtherConfigEditDto mgtOtherConfigEditDto) {
+        // 获取当前时间
+        Date updateTime = new Date();
+        // 删除历史配置
+        deletePastConfig(updateTime);
+        // 新建配置
+        createNewConfig(mgtOtherConfigEditDto, updateTime);
+    }
+    
+    
+    /**
+     * 修改门店课程配置
+     * @param mgtStoreCurriculumEditDto
+     */
+    @Override
+    public void editStoreCurriculum(MgtStoreCurriculumEditDto mgtStoreCurriculumEditDto) {
+        customConfigMapper.delete(new QueryWrapper<CustomConfig>().eq("config_type", ConfigEnum.STORE_COURSE_DISPLAY_NAME.getKeyType())
+                .eq("config_key", ConfigEnum.STORE_COURSE_DISPLAY_NAME.getKey()));
+        customConfigMapper.delete(new QueryWrapper<CustomConfig>().eq("config_type", ConfigEnum.STORE_COURSE_DISPLAY_PASSWORD.getKeyType())
+                .eq("config_key", ConfigEnum.STORE_COURSE_DISPLAY_PASSWORD.getKey()));
+    
+        CustomConfig customConfig = new CustomConfig();
+        customConfig.setDelFlag(0);
+        customConfig.setConfigType(2);
+        customConfig.setConfigKey(ConfigEnum.STORE_COURSE_DISPLAY_NAME.getKey());
+        customConfig.setConfigName(ConfigEnum.STORE_COURSE_DISPLAY_NAME.getKeyName());
+        customConfig.setCreateTime(new Date());
+        customConfig.setUpdateTime(new Date());
+        customConfig.setConfigValue(mgtStoreCurriculumEditDto.getStoreCourseDisplayName());
+        this.saveOrUpdate(customConfig);
+        
+        customConfig = new CustomConfig();
+        customConfig.setDelFlag(0);
+        customConfig.setConfigType(2);
+        customConfig.setConfigKey(ConfigEnum.STORE_COURSE_DISPLAY_PASSWORD.getKey());
+        customConfig.setConfigName(ConfigEnum.STORE_COURSE_DISPLAY_PASSWORD.getKeyName());
+        customConfig.setCreateTime(new Date());
+        customConfig.setUpdateTime(new Date());
+        customConfig.setConfigValue(mgtStoreCurriculumEditDto.getStoreCourseDisplayPassword());
+        this.saveOrUpdate(customConfig);
+    }
+    
+    
+
+    /**
+     * @param updateTime
+     * @return void
+     * @description 删除历史配置
+     * @author jqs
+     * @date 2023/6/7 16:37
+     */
+    private void deletePastConfig(Date updateTime) {
+        List<CustomConfig> customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper<CustomConfig>()
+                .eq(CustomConfig::getDelFlag, 0)
+                .eq(CustomConfig::getConfigType, 2));
+        for (CustomConfig customConfig : customConfigList) {
+            customConfig.setDelFlag(1);
+            customConfig.setUpdateTime(updateTime);
+        }
+        this.saveOrUpdateBatch(customConfigList);
+    }
+
+    /**
+     * @param mgtOtherConfigEditDto
+     * @param updateTime
+     * @return void
+     * @description 新建配置
+     * @author jqs
+     * @date 2023/6/7 16:37
+     */
+    private void createNewConfig(MgtOtherConfigEditDto mgtOtherConfigEditDto, Date updateTime) {
+        for (ConfigEnum configEnum : ConfigEnum.values()) {
+            CustomConfig customConfig = new CustomConfig();
+            customConfig.setDelFlag(0);
+            customConfig.setConfigType(configEnum.getKeyType());
+            customConfig.setConfigKey(configEnum.getKey());
+            customConfig.setConfigName(configEnum.getKeyName());
+            customConfig.setCreateTime(updateTime);
+            customConfig.setUpdateTime(updateTime);
+            switch (configEnum) {
+                //分享小程序可获得积分
+                case SHARE_INTEGRAL:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getShareIntegral().toString());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //平台建议可获得积分
+                case SUGGEST_PLATFORM_INTEGRAL:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestPlatformIntegral().toString());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //每日签到可获得积分
+                case SIGN_IN_INTEGRAL:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getSignInIntegral().toString());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //门店建议可获得积分
+                case SUGGEST_SHOP_INTEGRAL:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestShopIntegral().toString());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //C端订单自动取消时间
+                case ORDER_AUTO_CANCEL_TIME:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getOrderAutoCancelTime().toString());
+                    redisService.setCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME,mgtOtherConfigEditDto.getOrderAutoCancelTime());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //购物满1元可获得积分
+                case PAY_MONEY_INTEGRAL:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getPayMoneyIntegral().toString());
+                    redisService.setCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL,mgtOtherConfigEditDto.getPayMoneyIntegral());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                //首页风格
+                case HOME_STYLE:
+                    customConfig.setConfigValue(mgtOtherConfigEditDto.getHomeStyle().toString());
+                    this.saveOrUpdate(customConfig);
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+
+    /**
+     * @param mgtShopConfigEditDto
+     * @return void
+     * @description 修改合作商配置
+     * @author jqs
+     * @date 2023/6/7 16:41
+     */
+    @Override
+    public void editShopConfig(MgtShopConfigEditDto mgtShopConfigEditDto) {
+        // 获取当前时间
+        Date updateTime = new Date();
+        // 查询所有未删除、类型为3的自定义配置
+        List<CustomConfig> customConfigList = customConfigMapper.selectList(
+                new LambdaQueryWrapper<CustomConfig>()
+                        .eq(CustomConfig::getDelFlag, 0)
+                        .eq(CustomConfig::getConfigType, 3)
+        );
+        if (customConfigList != null && !customConfigList.isEmpty()) {
+            String key;
+            String oldValue;
+            String newValue = null;
+            List<CustomConfig> updatedCustomConfigs = new ArrayList<>();
+            // 遍历配置列表,根据 key 更新配置值
+            for (CustomConfig customConfig : customConfigList) {
+                key = customConfig.getConfigKey();
+                oldValue = customConfig.getConfigValue();
+                switch (key) {
+                    case "SHOP_EMERGENCY_DEGREE":
+                        newValue = mgtShopConfigEditDto.getShopEmergencyDegree();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "SHOP_FOLLOW_TYPE":
+                        newValue = mgtShopConfigEditDto.getShopFollowType();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "SHOP_CUSTOM_STATUS":
+                        newValue = mgtShopConfigEditDto.getShopCustomStatus();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "SHOP_SOURCE_CHANNEL":
+                        newValue = mgtShopConfigEditDto.getShopSourceChannel();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "SHOP_COMMON_PROPORTION":
+                        newValue = mgtShopConfigEditDto.getShopCommonProportion();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        updatedCustomConfigs.add(customConfig);
+                        redisService.setCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION,mgtShopConfigEditDto.getShopCommonProportion());
+                        break;
+                    default:
+                        break;
+                }
+
+            }
+            this.saveOrUpdateBatch(updatedCustomConfigs);
+        } else {
+            // 如果没有配置,则创建新配置
+            createNewConfig(ConfigEnum.SHOP_EMERGENCY_DEGREE, mgtShopConfigEditDto.getShopEmergencyDegree(), updateTime);
+            createNewConfig(ConfigEnum.SHOP_FOLLOW_TYPE, mgtShopConfigEditDto.getShopFollowType(), updateTime);
+            createNewConfig(ConfigEnum.SHOP_CUSTOM_STATUS, mgtShopConfigEditDto.getShopCustomStatus(), updateTime);
+            createNewConfig(ConfigEnum.SHOP_SOURCE_CHANNEL, mgtShopConfigEditDto.getShopSourceChannel(), updateTime);
+            createNewConfig(ConfigEnum.SHOP_COMMON_PROPORTION, mgtShopConfigEditDto.getShopCommonProportion(), updateTime);
+        }
+    }
+
+    /**
+     * @description  修改会员配置
+     * @author  jqs
+     * @date    2023/6/7 17:16
+     * @param mgtMemberConfigEditDto
+     * @return  void
+     */
+    @Override
+    public void editMemberConfig(MgtMemberConfigEditDto mgtMemberConfigEditDto){
+        // 获取当前时间
+        Date updateTime = new Date();
+        // 查询所有未删除、类型为3的自定义配置
+        List<CustomConfig> customConfigList = customConfigMapper.selectList(
+                new LambdaQueryWrapper<CustomConfig>()
+                        .eq(CustomConfig::getDelFlag, 0)
+                        .eq(CustomConfig::getConfigType, 4)
+        );
+        if (customConfigList != null && !customConfigList.isEmpty()) {
+            String key;
+            String oldValue;
+            String newValue = null;
+            List<CustomConfig> updatedCustomConfigs = new ArrayList<>();
+            // 遍历配置列表,根据 key 更新配置值
+            for (CustomConfig customConfig : customConfigList) {
+                key = customConfig.getConfigKey();
+                oldValue = customConfig.getConfigValue();
+                switch (key) {
+                    case "MEMBER_SOURCE_CHANNEL":
+                        newValue = mgtMemberConfigEditDto.getMemberSourceChannel();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "MEMBER_CHARACTER":
+                        newValue = mgtMemberConfigEditDto.getMemberCharacter();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "MEMBER_LEVEL":
+                        newValue = mgtMemberConfigEditDto.getMemberLevel();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "MEMBER_TYPE":
+                        newValue = mgtMemberConfigEditDto.getMemberType();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    case "NURSE_PROBLEM":
+                        newValue = mgtMemberConfigEditDto.getNurseProblem();
+                        customConfig.setConfigValue(newValue);
+                        customConfig.setUpdateTime(updateTime);
+                        if(oldValue!=null&&!oldValue.isEmpty()){
+                            handleChangeConfig(oldValue, newValue, key);
+                        }
+                        updatedCustomConfigs.add(customConfig);
+                        break;
+                    default:
+                        break;
+                }
+            }
+            this.saveOrUpdateBatch(updatedCustomConfigs);
+        } else {
+            // 如果没有配置,则创建新配置
+            createNewConfig(ConfigEnum.MEMBER_SOURCE_CHANNEL, mgtMemberConfigEditDto.getMemberSourceChannel(), updateTime);
+            createNewConfig(ConfigEnum.MEMBER_CHARACTER, mgtMemberConfigEditDto.getMemberCharacter(), updateTime);
+            createNewConfig(ConfigEnum.MEMBER_LEVEL, mgtMemberConfigEditDto.getMemberLevel(), updateTime);
+            createNewConfig(ConfigEnum.MEMBER_TYPE, mgtMemberConfigEditDto.getMemberType(), updateTime);
+            createNewConfig(ConfigEnum.NURSE_PROBLEM, mgtMemberConfigEditDto.getNurseProblem(), updateTime);
+        }
+    }
+
+    /**
+     * @description  新建配置
+     * @author  jqs
+     * @date    2023/6/7 17:06
+     * @param configEnum
+     * @param value
+     * @param updateTime
+     * @return  void
+     */
+    private void createNewConfig(ConfigEnum configEnum, String value, Date updateTime) {
+        CustomConfig customConfig = new CustomConfig();
+        customConfig.setDelFlag(0);
+        customConfig.setConfigType(configEnum.getKeyType());
+        customConfig.setConfigKey(configEnum.getKey());
+        customConfig.setConfigName(configEnum.getKeyName());
+        customConfig.setConfigValue(value);
+        customConfig.setCreateTime(updateTime);
+        customConfig.setUpdateTime(updateTime);
+        this.saveOrUpdate(customConfig);
+    }
+
+    /**
+     * @description  处理变动
+     * @author  jqs
+     * @date    2023/6/7 17:06
+     * @param oldValue
+     * @param newValue
+     * @param key
+     * @return  void
+     */
+    private void handleChangeConfig(String oldValue, String newValue, String key) {
+        Set<String> oldSet = new HashSet<>(Arrays.asList(oldValue.split(",")));
+        Set<String> newSet = new HashSet<>(Arrays.asList(newValue.split(",")));
+        List<String> changeList = new ArrayList<>(oldSet);
+        changeList.removeAll(newSet);
+        if(changeList!=null&&!changeList.isEmpty()){
+            switch(key){
+                case "SHOP_EMERGENCY_DEGREE":
+                    break;
+                case "SHOP_FOLLOW_TYPE":
+                    break;
+                case "SHOP_CUSTOM_STATUS":
+                    break;
+                case "SHOP_SOURCE_CHANNEL":
+                    break;
+                case "MEMBER_SOURCE_CHANNEL":
+                    break;
+                case "MEMBER_CHARACTER":
+                    break;
+                case "MEMBER_LEVEL":
+                    break;
+                case "MEMBER_TYPE":
+                    break;
+                case "NURSE_PROBLEM":
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+
+    /**
+     * @description  分页获取操作日志
+     * @author  jqs
+     * @date    2023/6/8 11:52
+     * @param page
+     * @param mgtOperLogPageDto
+     * @return  List<MgtOperLogPageVo>
+     */
+    @Override
+    public List<MgtOperLogPageVo> pageOperLog(Page page, MgtOperLogPageDto mgtOperLogPageDto){
+        return customConfigMapper.pageOperLog(page, mgtOperLogPageDto);
+    }
+
+    /**
+     * @description  删除日志
+     * @author  jqs
+     * @date    2023/8/1 19:39
+     * @param
+     * @return  void
+     */
+    @Override
+    public void deleteOperlog(){
+        customConfigMapper.deleteOperlog();
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/7/13 15:52
+     * @param
+     * @return  List<String>
+     */
+    @Override
+    public List<String> listOperTitle(){
+        return customConfigMapper.listOperTitle();
+    }
+
+    /**
+     * @description  获取单个自定义配置
+     * @author  jqs
+     * @date    2023/6/9 15:40
+     * @param mgtCustomConfigDto
+     * @return  MgtCustomConfigVo
+     */
+    @Override
+    public List<String> getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto){
+        CustomConfig customConfig = this.getByKey(mgtCustomConfigDto.getConfigType());
+        List<String> list = new ArrayList<>();
+        if(customConfig!=null&&StringUtils.isNotBlank(customConfig.getConfigValue())){
+            list = Arrays.asList(customConfig.getConfigValue().split(","));
+        }
+        return list;
+    }
+
+    /**
+     * @description getBulletinBoard
+     * @param
+     * @return MgtBulletinBoardVo
+     * @author jqs34
+     * @date 2023/6/18 16:41
+     */
+    @Override
+    public MgtBulletinBoardVo getBulletinBoard(){
+        List<Long> userIds = sysUserService.getScopeOfAuthorityUserId();
+        // 创建 MgtBulletinBoardVo 对象
+        MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
+        // 获取会员信息
+        BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+        boardMemberTotalDto.setUserIds(userIds);
+
+        MgtBulletinBoardVo mgtBulletinBoardVoMember = remoteMemberService.boardMemberTotal(boardMemberTotalDto).getData();
+        mgtBulletinBoardVo.setMemberTotal(mgtBulletinBoardVoMember.getMemberTotal());
+        mgtBulletinBoardVo.setMemberToday(mgtBulletinBoardVoMember.getMemberToday());
+        // 获取推荐合作信息
+        MgtBulletinBoardVo mgtBulletinBoardVoCustom = recommendCooperationService.boardMemberTotal(userIds);
+        mgtBulletinBoardVo.setCustomTotal(mgtBulletinBoardVoCustom.getCustomTotal());
+        mgtBulletinBoardVo.setCustomToday(mgtBulletinBoardVoCustom.getCustomToday());
+        mgtBulletinBoardVo.setFollowUserToday(mgtBulletinBoardVoCustom.getFollowUserToday());
+        // 获取店铺信息
+        MgtBulletinBoardVo mgtBulletinBoardVoShop = remoteShopService.boardShopTotal(boardMemberTotalDto).getData();
+        mgtBulletinBoardVo.setShopTotal(mgtBulletinBoardVoShop.getShopTotal());
+        mgtBulletinBoardVo.setAgencyTotal(mgtBulletinBoardVoShop.getAgencyTotal());
+        mgtBulletinBoardVo.setDealerTotal(mgtBulletinBoardVoShop.getDealerTotal());
+        mgtBulletinBoardVo.setFollowShopToday(mgtBulletinBoardVoShop.getFollowShopToday());
+        // 获取订单信息
+        MgtBulletinBoardVo mgtBulletinBoardVoOrder = remoteOrderService.boardOrderTotal(boardMemberTotalDto).getData();
+        mgtBulletinBoardVo.setSalesTotal(mgtBulletinBoardVoOrder.getSalesTotal());
+        mgtBulletinBoardVo.setUnUseOrderTotal(mgtBulletinBoardVoOrder.getUnUseOrderTotal());
+        mgtBulletinBoardVo.setActivityOrderTotal(mgtBulletinBoardVoOrder.getActivityOrderTotal());
+        mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoOrder.getActivityUserTotal());
+        // 获取活动信息
+        //MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData();
+        //待回复建议数量
+        Integer countA = remoteMemberService.getUnReplaySuggestVo().getData();
+        Integer countB = remoteShopService.getUnReplaySuggestVo().getData();
+        Integer countC = staffSuggestService.getUnReplaySuggestVo();
+        mgtBulletinBoardVo.setUnReplaySuggestTotal(countA+countB+countC);
+        // 返回 MgtBulletinBoardVo 对象
+        return mgtBulletinBoardVo;
+    }
+
+    /**
+     * @description  获取其他设置
+     * @author  jqs
+     * @date    2023/7/12 15:28
+     * @param
+     * @return  AppOtherConfigGetVo
+     */
+    @Override
+    public AppOtherConfigGetVo getAppOtherConfigGetVo(){
+        AppOtherConfigGetVo appOtherConfigGetVo = new AppOtherConfigGetVo();
+        //获取自定义配置
+        List<CustomConfig> customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper<CustomConfig>().eq(CustomConfig::getDelFlag, 0));
+        Optional.ofNullable(customConfigList).ifPresent(list -> {
+            Map<String, CustomConfig> configMap = list.stream().collect(Collectors.toMap(CustomConfig::getConfigKey, Function.identity()));
+            // 遍历配置映射,设置相应的属性值
+            configMap.forEach((key, value) -> {
+                switch (key) {
+                    case "SHARE_INTEGRAL":
+                        appOtherConfigGetVo.setShareIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SUGGEST_PLATFORM_INTEGRAL":
+                        appOtherConfigGetVo.setSuggestPlatformIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SIGN_IN_INTEGRAL":
+                        appOtherConfigGetVo.setSignInIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "SUGGEST_SHOP_INTEGRAL":
+                        appOtherConfigGetVo.setSuggestShopIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "PAY_MONEY_INTEGRAL":
+                        appOtherConfigGetVo.setPayMoneyIntegral(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "ORDER_AUTO_CANCEL_TIME":
+                        appOtherConfigGetVo.setOrderAutoCancelTime(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    case "HOME_STYLE":
+                        appOtherConfigGetVo.setHomeStyle(Integer.valueOf(value.getConfigValue()));
+                        break;
+                    default:
+                        break;
+                }
+            });
+        });
+        return appOtherConfigGetVo;
+    }
 }

--
Gitblit v1.7.1