package com.ruoyi.system.service.impl.config; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.system.api.constant.ConfigEnum; import com.ruoyi.system.api.domain.poji.config.Activeness; 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.MgtCustomConfigVo; import com.ruoyi.system.domain.vo.MgtOperLogPageVo; import com.ruoyi.system.mapper.config.CustomConfigMapper; import com.ruoyi.system.service.config.ActivenessService; import com.ruoyi.system.service.config.AdvertService; import com.ruoyi.system.service.config.CustomConfigService; import com.ruoyi.system.service.config.RecommendCooperationService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** *

* 系统配置 服务实现类 *

* * @author jqs * @since 2023-04-25 */ @Service public class CustomConfigServiceImpl extends ServiceImpl implements CustomConfigService { @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; /** * @param key * @return CustomConfig * @description 通过key获取系统自定义配置 * @author jqs * @date 2023/6/6 11:55 */ @Override public CustomConfig getByKey(String key) { return customConfigMapper.getByKey(key); } /** * @param mgtServiceMobileEditDto * @return void * @description 修改客服号码 * @author jqs * @date 2023/6/6 11:53 */ @Override public void editServiceMobile(MgtServiceMobileEditDto mgtServiceMobileEditDto) { // 获取平台服务电话的配置 CustomConfig customConfig = getByKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey()); // 如果配置不存在,则创建一个新的配置 if (customConfig == null) { customConfig = new CustomConfig(); customConfig.setCreateTime(new Date()); customConfig.setDelFlag(0); } // 设置配置的类型、键、名称、值和更新时间 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); } /** * @param * @return MgtCustomConfigVo * @description 平台获取自定义配置 * @author jqs * @date 2023/6/7 15:02 */ @Override public MgtAllCustomConfigVo getAllCustomConfig() { MgtAllCustomConfigVo mgtAllCustomConfigVo = new MgtAllCustomConfigVo(); //获取自定义配置 List customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper().eq(CustomConfig::getDelFlag, 0)); Optional.ofNullable(customConfigList).ifPresent(list -> { Map 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_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; 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.setLinkUrl(advert.getLinkUrl()); mgtAllCustomConfigVo.setJumpType(advert.getJumpType()); mgtAllCustomConfigVo.setJumpId(advert.getJumpId()); } //获取活跃度配置 List activenessList = activenessService.listActiveness(); if (activenessList != null && !activenessList.isEmpty()) { List 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 updateTime * @return void * @description 删除历史配置 * @author jqs * @date 2023/6/7 16:37 */ private void deletePastConfig(Date updateTime) { List customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper() .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); case SUGGEST_PLATFORM_INTEGRAL: customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestPlatformIntegral().toString()); this.saveOrUpdate(customConfig); case SIGN_IN_INTEGRAL: customConfig.setConfigValue(mgtOtherConfigEditDto.getSignInIntegral().toString()); this.saveOrUpdate(customConfig); case SUGGEST_SHOP_INTEGRAL: customConfig.setConfigValue(mgtOtherConfigEditDto.getSuggestShopIntegral().toString()); this.saveOrUpdate(customConfig); case ORDER_AUTO_CANCEL_TIME: customConfig.setConfigValue(mgtOtherConfigEditDto.getOrderAutoCancelTime().toString()); this.saveOrUpdate(customConfig); case PAY_MONEY_INTEGRAL: customConfig.setConfigValue(mgtOtherConfigEditDto.getPayMoneyIntegral().toString()); this.saveOrUpdate(customConfig); case HOME_STYLE: customConfig.setConfigValue(mgtOtherConfigEditDto.getHomeStyle().toString()); this.saveOrUpdate(customConfig); 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 customConfigList = customConfigMapper.selectList( new LambdaQueryWrapper() .eq(CustomConfig::getDelFlag, 0) .eq(CustomConfig::getConfigType, 3) ); if (customConfigList != null && !customConfigList.isEmpty()) { String key; String oldValue; String newValue = null; List updatedCustomConfigs = new ArrayList<>(); // 遍历配置列表,根据 key 更新配置值 for (CustomConfig customConfig : customConfigList) { key = customConfig.getConfigKey(); oldValue = customConfig.getConfigValue(); switch (key) { case "SHOP_EMERGENCY_DEGREE": newValue = mgtShopConfigEditDto.getShopEmergencyDegree(); break; case "SHOP_FOLLOW_TYPE": newValue = mgtShopConfigEditDto.getShopFollowType(); break; case "SHOP_CUSTOM_STATUS": newValue = mgtShopConfigEditDto.getShopCustomStatus(); break; case "SHOP_SOURCE_CHANNEL": newValue = mgtShopConfigEditDto.getShopSourceChannel(); break; default: break; } customConfig.setConfigValue(newValue); customConfig.setUpdateTime(updateTime); handleChangeConfig(oldValue, newValue, key); updatedCustomConfigs.add(customConfig); } 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); } } /** * @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 customConfigList = customConfigMapper.selectList( new LambdaQueryWrapper() .eq(CustomConfig::getDelFlag, 0) .eq(CustomConfig::getConfigType, 4) ); if (customConfigList != null && !customConfigList.isEmpty()) { String key; String oldValue; String newValue = null; List updatedCustomConfigs = new ArrayList<>(); // 遍历配置列表,根据 key 更新配置值 for (CustomConfig customConfig : customConfigList) { key = customConfig.getConfigKey(); oldValue = customConfig.getConfigValue(); switch (key) { case "MEMBER_SOURCE_CHANNEL": newValue = mgtMemberConfigEditDto.getMemberSourceChannel(); break; case "MEMBER_CHARACTER": newValue = mgtMemberConfigEditDto.getMemberCharacter(); break; case "MEMBER_LEVEL": newValue = mgtMemberConfigEditDto.getMemberLevel(); break; case "MEMBER_TYPE": newValue = mgtMemberConfigEditDto.getMemberType(); break; case "NURSE_PROBLEM": newValue = mgtMemberConfigEditDto.getNurseProblem(); break; default: break; } customConfig.setConfigValue(newValue); customConfig.setUpdateTime(updateTime); handleChangeConfig(oldValue, newValue, key); updatedCustomConfigs.add(customConfig); } 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 oldSet = new HashSet<>(Arrays.asList(oldValue.split(","))); Set newSet = new HashSet<>(Arrays.asList(newValue.split(","))); List 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 */ @Override public List pageOperLog(Page page, MgtOperLogPageDto mgtOperLogPageDto){ return customConfigMapper.pageOperLog(page, mgtOperLogPageDto); } /** * @description 获取单个自定义配置 * @author jqs * @date 2023/6/9 15:40 * @param mgtCustomConfigDto * @return MgtCustomConfigVo */ @Override public MgtCustomConfigVo getCustomConfig(MgtCustomConfigDto mgtCustomConfigDto){ CustomConfig customConfig = this.getByKey(mgtCustomConfigDto.getConfigType()); MgtCustomConfigVo mgtCustomConfigVo = new MgtCustomConfigVo(); if(customConfig!=null){ mgtCustomConfigVo.setCustomConfig(customConfig.getConfigValue()); mgtCustomConfigVo.setConfigType(mgtCustomConfigDto.getConfigType()); } return mgtCustomConfigVo; } /** * @description getBulletinBoard * @param * @return MgtBulletinBoardVo * @author jqs34 * @date 2023/6/18 16:41 */ @Override public MgtBulletinBoardVo getBulletinBoard(){ // 创建 MgtBulletinBoardVo 对象 MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo(); // 获取会员信息 MgtBulletinBoardVo mgtBulletinBoardVoMember = remoteMemberService.boardMemberTotal().getData(); mgtBulletinBoardVo.setMemberTotal(mgtBulletinBoardVoMember.getMemberTotal()); mgtBulletinBoardVo.setMemberToday(mgtBulletinBoardVoMember.getMemberToday()); // 获取推荐合作信息 MgtBulletinBoardVo mgtBulletinBoardVoCustom = recommendCooperationService.boardMemberTotal(); mgtBulletinBoardVo.setCustomTotal(mgtBulletinBoardVoCustom.getCustomTotal()); mgtBulletinBoardVo.setCustomToday(mgtBulletinBoardVoCustom.getCustomToday()); // 获取店铺信息 MgtBulletinBoardVo mgtBulletinBoardVoShop = remoteShopService.boardShopTotal().getData(); mgtBulletinBoardVo.setShopTotal(mgtBulletinBoardVoShop.getShopTotal()); mgtBulletinBoardVo.setAgencyTotal(mgtBulletinBoardVoShop.getAgencyTotal()); mgtBulletinBoardVo.setDealerTotal(mgtBulletinBoardVoShop.getDealerTotal()); mgtBulletinBoardVo.setFollowShopToday(mgtBulletinBoardVoShop.getFollowShopToday()); mgtBulletinBoardVo.setFollowUserToday(0); // 获取订单信息 MgtBulletinBoardVo mgtBulletinBoardVoOrder = remoteOrderService.boardOrderTotal().getData(); mgtBulletinBoardVo.setSalesTotal(mgtBulletinBoardVoOrder.getSalesTotal()); mgtBulletinBoardVo.setUnUseOrderTotal(mgtBulletinBoardVoOrder.getUnUseOrderTotal()); mgtBulletinBoardVo.setActivityOrderTotal(mgtBulletinBoardVoOrder.getActivityOrderTotal()); // 获取活动信息 MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData(); mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoActivity.getActivityUserTotal()); // 返回 MgtBulletinBoardVo 对象 return mgtBulletinBoardVo; } }