jiangqs
2023-06-04 e9e504197c8e2fc9327d0fe6bdf7f513170594ab
优化部分代码
9个文件已修改
157 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysClassificationService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysClassificationServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/SysClassificationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -11,6 +11,7 @@
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
 * 系统配置服务
@@ -47,6 +48,11 @@
            public R<SysClassification> getSysClassification(Long classId) {
                return R.fail("获取分类失败:" + throwable.getMessage());
            }
            @Override
            public R<Map<Long, SysClassification>> getSysClassificationList(List<Long> classIds) {
                return R.fail("获取分类失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -13,6 +13,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
/**
 * @author jqs34
@@ -40,4 +41,11 @@
     */
    @PostMapping("/getSysClassification")
    public R<SysClassification> getSysClassification(@RequestBody Long classId);
    /**
     * 通过ids获取分类
     * @return
     */
    @PostMapping("/getSysClassificationList")
    public R<Map<Long,SysClassification>> getSysClassificationList(@RequestBody List<Long> classIds);
}
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -1,17 +1,11 @@
package com.ruoyi.goods.service.impl.goods;
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.baomidou.mybatisplus.mapper.EntityWrapper;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.goods.domain.dto.*;
import com.ruoyi.goods.domain.vo.*;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
import com.ruoyi.goods.mapper.goods.GoodsMapper;
import com.ruoyi.goods.service.activity.ActivityGoodsService;
import com.ruoyi.goods.service.goods.GoodsFileService;
@@ -19,15 +13,20 @@
import com.ruoyi.goods.service.goods.ShopGoodsService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
import com.ruoyi.system.api.service.RemoteConfigService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -99,17 +98,16 @@
    @Override
    public List<AppSimpleActivityGoodsVo> pageSearchActivityGoods(Page page, AppSearchGoodsPageDto appSearchGoodsPageDto){
        List<AppSimpleActivityGoodsVo> appSimpleGoodsVoList = goodsMapper.pageSearchActivityGoods(page,appSearchGoodsPageDto);
        Integer activityNumber;
        BigDecimal activityNumberBig;
        Integer salesNumber;
        BigDecimal salesNumberBig;
        int activityNumber;
        int salesNumber;
        BigDecimal salesPercent;
        for(AppSimpleActivityGoodsVo appSimpleActivityGoodsVo : appSimpleGoodsVoList){
            activityNumber = appSimpleActivityGoodsVo.getActivityNumber();
            salesNumber = appSimpleActivityGoodsVo.getSalesNumber();
            activityNumberBig = BigDecimal.valueOf(activityNumber);
            salesNumberBig = BigDecimal.valueOf(salesNumber);
            salesPercent = salesNumberBig.divide(activityNumberBig,2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.00"));
            salesPercent = BigDecimal.ZERO;
            if(activityNumber != 0){
                salesPercent = BigDecimal.valueOf(salesNumber).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(activityNumber), 2, BigDecimal.ROUND_HALF_UP);
            }
            appSimpleActivityGoodsVo.setSalesPercent(salesPercent);
        }
        return appSimpleGoodsVoList;
@@ -153,17 +151,17 @@
        }
        //商品图片
        List<GoodsFile> goodsFileList = goodsFileService.listByGoodsId(goods.getGoodsId());
        StringJoiner bannerSJ = new StringJoiner(",");
        List<String> bannerList = new ArrayList<>();
        if(goodsFileList!=null&&!goodsFileList.isEmpty()){
            for(GoodsFile goodsFile : goodsFileList){
                if(goodsFile.getFileType()==2){
                    appGoodsInfoVo.setGoodsVideo(goodsFile.getFileUrl());
                }else if(goodsFile.getFileType()==3){
                    bannerSJ.add(goodsFile.getFileUrl());
                    bannerList.add(goodsFile.getFileUrl());
                }
            }
            if(bannerSJ!=null&&bannerSJ.length()>0){
                appGoodsInfoVo.setGoodsBanners(bannerSJ.toString());
            if(!bannerList.isEmpty()){
                appGoodsInfoVo.setGoodsBanners(String.join(",", bannerList));
            }
        }
        return appGoodsInfoVo;
@@ -219,15 +217,29 @@
     * @return
     */
    @Override
    public List<MgtGoodsPageVo> pageMgtGoods(Page page, MgtGoodsPageDto mgtGoodsPageDto){
    public List<MgtGoodsPageVo> pageMgtGoods(Page page, MgtGoodsPageDto mgtGoodsPageDto) {
        // 调用goodsMapper的方法获取MgtGoodsPageVo列表
        List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsMapper.pageMgtGoods(page, mgtGoodsPageDto);
        if(mgtGoodsPageVoList!=null && !mgtGoodsPageVoList.isEmpty()){
            mgtGoodsPageVoList.stream()
                    .forEach(mgtGoodsPageVo -> {
                        SysClassification sysClassification = remoteConfigService.getSysClassification(Long.valueOf(mgtGoodsPageVo.getGoodsClass())).getData();
                        mgtGoodsPageVo.setGoodsClass(sysClassification.getClassName());
                    });
        // 如果列表不为空
        if (mgtGoodsPageVoList != null && !mgtGoodsPageVoList.isEmpty()) {
            // 获取所有商品分类的ID
            List<Long> goodsClassIds = mgtGoodsPageVoList.stream()
                    .map(MgtGoodsPageVo::getGoodsClass)
                    .map(Long::valueOf)
                    .collect(Collectors.toList());
            // 通过远程服务获取商品分类
            Map<Long, SysClassification> sysClassificationMap = remoteConfigService.getSysClassificationList(goodsClassIds).getData();
            // 遍历所有商品
            mgtGoodsPageVoList.forEach(mgtGoodsPageVo -> {
                // 获取商品分类
                SysClassification sysClassification = sysClassificationMap.get(Long.valueOf(mgtGoodsPageVo.getGoodsClass()));
                // 如果商品分类不为空,则设置商品分类名称
                if (sysClassification != null) {
                    mgtGoodsPageVo.setGoodsClass(sysClassification.getClassName());
                }
            });
        }
        // 返回处理后的商品列表
        return mgtGoodsPageVoList;
    }
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/goods/GoodsMapper.xml
@@ -258,12 +258,12 @@
        tg.goods_introduction goodsIntroduction,
        tg.goods_type goodsType,
        CASE tg.goods_type
        WHEN 1 THEN "周期"
        WHEN 2 THEN "服务"
        WHEN 3 THEN "体验"
        WHEN 4 THEN "单品"
        WHEN 1 THEN '周期'
        WHEN 2 THEN '服务'
        WHEN 3 THEN '体验'
        WHEN 4 THEN '单品'
        END goodsTag,
        GREATEST(tg.sales_price,IFNULL(tsg.sales_price,'0.00')) salesPrice,
        GREATEST(tg.sales_price, IFNULL(tsg.sales_price, 0.00)) salesPrice,
        tag.activity_price activityPrice,
        tgf.file_url goodsPicture,
        tg.goods_tags goodsNurses,
@@ -271,7 +271,7 @@
        tag.sales_number salesNumber
        FROM t_goods tg
        INNER JOIN t_activity_goods tag ON tg.goods_id = tag.goods_id
        LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
        INNER JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
        LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId}
        WHERE tg.del_flag = 0 AND tg.goods_status = 1
        <if test="param.keyword!=null and param.keyword != ''">
@@ -300,8 +300,8 @@
        tg.service_num defaultServiceNum,
        IFNULL(tsg.service_num,tg.service_num) serviceNum
        FROM t_goods tg
        LEFT JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
        LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId}
        INNER JOIN t_goods_file tgf ON tg.goods_id = tgf.goods_id AND tgf.del_flag = 0 AND tgf.file_type = 1
        LEFT JOIN t_shop_goods tsg ON tg.goods_id = tsg.goods_id AND tsg.shop_id = #{param.shopId} AND tsg.del_flag = 0
        WHERE tg.del_flag = 0 AND tg.goods_status = 1
        <if test="param.goodsType != null">
            AND tg.goods_type = #{param.goodsType}
@@ -311,7 +311,6 @@
        </if>
        ORDER BY tg.create_time DESC
    </select>
    <select id="pageMgtGoods" resultType="com.ruoyi.goods.domain.vo.MgtGoodsPageVo">
        SELECT
        tg.goods_id goodsId,
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -668,14 +668,13 @@
        List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
        Date nowDay = DateUtils.getNowDate();
        //处理活跃度筛选
        if(activenessList!=null&&!activenessList.isEmpty()){
            for(Activeness activeness : activenessList){
               if(activeness.getActivenessId().equals(merMemberPageDto.getActivenessId())){
                   merMemberPageDto.setActStartDate(DateUtils.addDays(nowDay,activeness.getEndDay()));
                   merMemberPageDto.setActEndDate(DateUtils.addDays(nowDay,activeness.getStartDay()));
               }
            }
        }
        activenessList.stream()
                .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId()))
                .findFirst()
                .ifPresent(activeness -> {
                    merMemberPageDto.setActStartDate(DateUtils.addDays(nowDay, activeness.getEndDay()));
                    merMemberPageDto.setActEndDate(DateUtils.addDays(nowDay, activeness.getStartDay()));
                });
        //查询获取结果列表
        List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
        //处理活跃度返回
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -11,6 +11,7 @@
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * @author jqs34
@@ -77,4 +78,15 @@
        SysClassification sysClassification = sysClassificationService.getById(classId);
        return R.ok(sysClassification);
    }
    /**
     * 通过ids获取分类
     * @return
     */
    @PostMapping("/getSysClassificationList")
    public R<Map<Long,SysClassification>> getSysClassificationList(@RequestBody List<Long> classIds)
    {
        Map<Long,SysClassification> sysClassificationMap = sysClassificationService.getSysClassificationList(classIds);
        return R.ok(sysClassificationMap);
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysClassificationService.java
@@ -3,6 +3,9 @@
import com.ruoyi.system.api.domain.poji.config.SysClassification;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 分类 服务类
@@ -13,4 +16,11 @@
 */
public interface SysClassificationService extends IService<SysClassification> {
    /**
    * @description: TODO
    * @author jqs34
    * @date 2023/6/4 12:00
    * @version 1.0
    */
    Map<Long,SysClassification> getSysClassificationList(List<Long> classIds);
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysClassificationServiceImpl.java
@@ -6,6 +6,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 分类 服务实现类
@@ -17,4 +21,20 @@
@Service
public class SysClassificationServiceImpl extends ServiceImpl<SysClassificationMapper, SysClassification> implements SysClassificationService {
    /**
     * @description: TODO
     * @author jqs34
     * @date 2023/6/4 11:59
     * @version 1.0
     */
    @Override
    public Map<Long,SysClassification> getSysClassificationList(List<Long> classIds){
        Map<Long, SysClassification> sysClassificationMap = new HashMap<>();
        List<SysClassification> sysClassifications = this.listByIds(classIds);
        for (SysClassification sysClassification : sysClassifications) {
            sysClassificationMap.put(sysClassification.getClassId(), sysClassification);
        }
        return sysClassificationMap;
    }
}
ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/SysClassificationMapper.xml
@@ -1,6 +1,6 @@
<?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="com.ruoyi.system.mapper.SysClassificationMapper">
<mapper namespace="com.ruoyi.system.mapper.config.SysClassificationMapper">
    <resultMap type="SysClassification" id="SysClassificationResult">
        <result property="classId"    column="class_id"    />
@@ -10,7 +10,8 @@
        <result property="classSort"    column="class_sort"    />
        <result property="relationNum"    column="relation_num"    />
        <result property="createTime"    column="create_time"    />
    </resultMap>
</mapper>