jiangping
2023-09-18 81182562d3328ff9b722e807d07277478c7690bb
休bug
已添加2个文件
已修改19个文件
392 ■■■■■ 文件已修改
server/company/src/main/java/com/doumee/api/business/BrandController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/business/CategoryController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/business/GoodsController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/system/SystemController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/BaseGoodsController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Category.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/dto/BaseGoodsImportDTO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/BaseGoodsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/CategoryService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BaseCategoryServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BaseGoodsServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/WebParamServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/business/BrandController.java
@@ -4,12 +4,14 @@
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Brand;
import com.doumee.service.business.BrandService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
server/company/src/main/java/com/doumee/api/business/CategoryController.java
@@ -179,4 +179,10 @@
        return ApiResponse.success(baseCategory);
    }
    @ApiOperation("列表 - SaaSH5")
    @PostMapping("/saasList")
    public ApiResponse<List<Category>> saasList (@RequestBody Category category) {
        return ApiResponse.success(categoryService.findListSaaS(category));
    }
}
server/company/src/main/java/com/doumee/api/business/GoodsController.java
@@ -12,6 +12,7 @@
import com.doumee.dao.business.model.dto.GoodsRequest;
import com.doumee.service.business.GoodsService;
import io.swagger.annotations.*;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -152,6 +153,8 @@
    @ApiOperation("列表 - H5")
    @PostMapping("/list")
    public ApiResponse<List<Goods>> findList (@RequestBody Goods goods) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        goods.setCompanyId(user.getCompanyId());
        return ApiResponse.success(goodsService.findList(goods));
    }
server/company/src/main/java/com/doumee/api/system/SystemController.java
@@ -9,13 +9,16 @@
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.dto.UpdatePwdDto;
import com.doumee.dao.system.dto.WebLoginDTO;
import com.doumee.service.system.SystemLoginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -39,12 +42,21 @@
    private SystemLoginService systemLoginService;
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录")
    @ApiOperation("登录 - åŽç«¯")
    @PostMapping("/login")
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPassword(dto, Constants.ONE, request));
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录 - H5")
    @PostMapping("/loginH5")
    public ApiResponse<String> loginH5 (@Validated @RequestBody WebLoginDTO dto, HttpServletRequest request) {
        LoginDTO loginDTO = new LoginDTO();
        BeanUtils.copyProperties(dto,loginDTO);
        return ApiResponse.success(systemLoginService.loginByPassword(loginDTO, Constants.TWO, request));
    }
    @ApiOperation("退出登录")
    @PostMapping("/logout")
    public ApiResponse logout () {
server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -89,15 +89,33 @@
        Map<String, String> map = new LinkedHashMap<>();
        // è·¯å¾„拦截配置
        // è·¯å¾„拦截配置
//        map.put("/system/dictData/companyUserRules","anon");
//        map.put("/system/login", "anon");
//        map.put("/system/logout", "anon");
//        map.put("/common/captcha", "anon");
//        map.put("/business/areas/*", "anon");
//        map.put("/public/uploadPicture","anon");
//        map.put("/public/uploadLocal","anon");
        map.put("/system/dictData/companyUserRules","anon");
        map.put("/system/login", "anon");
        map.put("/system/logout", "anon");
        map.put("/system/loginH5", "anon");
        map.put("/common/captcha", "anon");
        map.put("/business/areas/*", "anon");
        map.put("/public/uploadPicture","anon");
        map.put("/public/uploadLocal","anon");
        map.put("/business/company/register", "anon");
        map.put("/business/labels/page","anon");
        map.put("/business/*/list","anon");
        map.put("/business/goods/goodsPage","anon");
        map.put("/business/goods/h5Image","anon");
        map.put("/business/goods/export","anon");
        map.put("/business/goods/listForH5","anon");
        // - æ”¾è¡Œswagger
        map.put("/doc.html", "anon");
        map.put("/webjars/**", "anon");
server/platform/src/main/java/com/doumee/api/business/BaseGoodsController.java
@@ -10,13 +10,15 @@
import com.doumee.dao.business.model.dto.BaseGoodsCreateOrUpdateRequest;
import com.doumee.dao.business.model.dto.BaseGoodsDTO;
import com.doumee.service.business.BaseGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -142,4 +144,14 @@
        baseGoodsService.update(baseGoods);
        return ApiResponse.success(null);
    }
    @ApiOperation("导入模板")
    @PostMapping("/importExcel")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
    })
    @RequiresPermissions("business:basegoods:create")
    public ApiResponse<Integer> importExcel (@ApiParam(value = "file") MultipartFile file) {
        return ApiResponse.success(baseGoodsService.importBaseGoodsBatch(file));
    }
}
server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java
@@ -91,6 +91,7 @@
        map.put("/system/dictData/companyUserRules","anon");
        map.put("/system/login", "anon");
        map.put("/system/logout", "anon");
        map.put("/system/loginH5", "anon");
        map.put("/common/captcha", "anon");
        map.put("/business/areas/*", "anon");
        map.put("/public/uploadPicture","anon");
server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java
@@ -75,6 +75,7 @@
        map.put("/system/dictData/companyUserRules","anon");
        map.put("/system/login", "anon");
        map.put("/system/logout", "anon");
        map.put("/system/loginH5", "anon");
        map.put("/common/captcha", "anon");
        map.put("/business/areas/*", "anon");
        map.put("/business/company/register", "anon");
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -24,6 +24,11 @@
    public static final String ENDPOINT = "ENDPOINT";
    public static final String RESOURCE_PATH = "RESOURCE_PATH";
    public static final String WEB_PARAM = "WEB_PARAM";
    public static final String MAIN_COLOR = "MAIN_COLOR";
    public static final String BG_IMG = "BG_IMG";
    public static final String TOP_IMG = "TOP_IMG";
    public static final String PK_IMG = "PK_IMG";
    public static final String RANGE_SIZE = "RANGE_SIZE";
    public static final String SYSTEM ="SYSTEM";
server/service/src/main/java/com/doumee/dao/business/model/Category.java
@@ -103,11 +103,11 @@
    @TableField(exist = false)
    private List<CateParam> paramList;
    @ApiModelProperty(value = "属性1 åˆ—表值")
    @ApiModelProperty(value = "属性1 åˆ—表值"  ,hidden = true)
    @TableField(exist = false)
    private List<CateAttr> attrFirstList;
    @ApiModelProperty(value = "属性2 åˆ—表值")
    @ApiModelProperty(value = "属性2 åˆ—表值"  ,hidden = true)
    @TableField(exist = false)
    private List<CateAttr> attrSecondList;
@@ -115,4 +115,11 @@
    @TableField(exist = false)
    private List<CateBudget> budgetList;
    @ApiModelProperty(value = "属性1 åˆ—表值")
    @TableField(exist = false)
    private List<CateParamSelect> cateParamFirstList;
    @ApiModelProperty(value = "属性2 åˆ—表值")
    @TableField(exist = false)
    private List<CateParamSelect> cateParamSecondList;
}
server/service/src/main/java/com/doumee/dao/business/model/dto/BaseGoodsImportDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.doumee.dao.business.model.dto;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author T14
 */
@Data
@ApiModel("参数属性值")
public class BaseGoodsImportDTO {
    @ApiModelProperty(value = "商品ID")
    @ExcelColumn(name="商品ID")
    private String id;
    @ApiModelProperty(value = "商品名称")
    @ExcelColumn(name="商品名称")
    private String name;
    @ApiModelProperty(value = "商品类别")
    @ExcelColumn(name="商品类别")
    private String categoryName;
    @ApiModelProperty(value = "商品品牌")
    @ExcelColumn(name="商品品牌")
    private String brandName;
    @ApiModelProperty(value = "指导价")
    @ExcelColumn(name="指导价")
    private BigDecimal zdPrice;
    @ApiModelProperty(value = "入手价")
    @ExcelColumn(name="入手价")
    private BigDecimal price;
    @ApiModelProperty(value = "产品参数")
    @ExcelColumn(name="产品参数")
    private String baseGoodsParamString;
}
server/service/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.doumee.dao.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * @author Eva.Caesar Liu
 * @date 2023/02/14 11:14
 */
@Data
@ApiModel("H5主播登录参数")
public class WebLoginDTO implements Serializable {
    @NotBlank(message = "用户名不能为空")
    @ApiModelProperty(value = "用户名")
    private String username;
    @NotBlank(message = "密码不能为空")
    @ApiModelProperty(value = "密码")
    private String password;
}
server/service/src/main/java/com/doumee/service/business/BaseGoodsService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.business.model.BaseGoods;
import com.doumee.dao.business.model.dto.BaseGoodsCreateOrUpdateRequest;
import com.doumee.dao.business.model.dto.BaseGoodsDTO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -131,4 +132,13 @@
     * @return long
     */
    long count(BaseGoods baseGoods);
    /**
     * ä¼ä¸šç”¨æˆ·æ‰¹é‡å¯¼å…¥
     * @param file
     * @return
     */
    Integer importBaseGoodsBatch(MultipartFile file);
}
server/service/src/main/java/com/doumee/service/business/CategoryService.java
@@ -85,6 +85,8 @@
     */
    List<Category> findList(Category category);
    List<Category> findListSaaS(Category category);
    List<Category> companyFindList(Category category);
    /**
     * æŸ¥è¯¢ç±»åˆ«
server/service/src/main/java/com/doumee/service/business/impl/BaseCategoryServiceImpl.java
@@ -61,7 +61,7 @@
        BaseCategory baseCategory1 = baseCategoryMapper.selectOne(wrapper);
        if (Objects.nonNull(baseCategory1)){
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"品类信息表");
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"品类信息已存在");
        }
        BaseCategory baseCategory2 = new BaseCategory();
        baseCategory2.setCreator(loginUserInfo.getId());
server/service/src/main/java/com/doumee/service/business/impl/BaseGoodsServiceImpl.java
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -14,6 +15,7 @@
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.model.dto.BaseGoodsCreateOrUpdateRequest;
import com.doumee.dao.business.model.dto.BaseGoodsDTO;
import com.doumee.dao.business.model.dto.BaseGoodsImportDTO;
import com.doumee.dao.business.model.dto.BaseGoodsParamCreatRequest;
import com.doumee.service.business.BaseGoodsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,6 +23,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,16 +31,20 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * ç´ æåº“-商品信息表Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/09/07 11:41
 */
@Slf4j
@Service
public class BaseGoodsServiceImpl implements BaseGoodsService {
@@ -64,6 +71,10 @@
    @Autowired
    private GoodsMapper goodsMapper;
    @Autowired
    private BaseCategoryMapper baseCategoryMapper;
    @Override
    public Integer create(BaseGoodsCreateOrUpdateRequest baseGoods) {
@@ -342,7 +353,7 @@
                    .selectAs(BaseCategory::getName,BaseGoods::getCategoryName)
                    .eq(BaseGoods::getIsdeleted, Constants.ZERO)
                    .like(StringUtils.isNotBlank(pageWrap.getModel().getName()), BaseGoods::getName,pageWrap.getModel().getName())
                    .eq(pageWrap.getModel().getId()!=null,BaseGoods::getId, pageWrap.getModel().getId())
                    .like(pageWrap.getModel().getId()!=null,BaseGoods::getId, pageWrap.getModel().getId())
                    .eq(pageWrap.getModel().getCategoryId()!=null,BaseGoods::getCategoryId, pageWrap.getModel().getCategoryId())
                    .eq(pageWrap.getModel().getBrandId()!=null,BaseGoods::getBrandId, pageWrap.getModel().getBrandId())
                    .eq(pageWrap.getModel().getStatus()!=null,BaseGoods::getStatus, pageWrap.getModel().getStatus());
@@ -362,4 +373,105 @@
        QueryWrapper<BaseGoods> wrapper = new QueryWrapper<>(baseGoods);
        return baseGoodsMapper.selectCount(wrapper);
    }
    @Override
    public Integer importBaseGoodsBatch(MultipartFile file) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        try {
            ExcelImporter ie = new ExcelImporter(file,0,0);
            List<BaseGoodsImportDTO> dataList = ie.getDataList(BaseGoodsImportDTO.class,null);
            if(dataList == null || dataList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!");
            }
            List<String> comNameList = dataList.stream().map(s -> s.getName().trim()).distinct().collect(Collectors.toList());
            if (!(dataList.size() == comNameList.size())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"商品名称有已存在");
            }
//            List<String> collect1 = dataList.stream().filter(s->{
//                if (StringUtils.isBlank(s.getBrandName())){
//                    throw new BusinessException(ResponseStatus.BAD_REQUEST);
//                }else {
//                    return true;
//                }
//            }).map(s -> s.getCategoryName()).collect(Collectors.toList());
//            QueryWrapper<BaseCategory> wrapper = new QueryWrapper<>();
//            wrapper.lambda()
//                    .in(BaseCategory::getName,collect1);
//            List<BaseCategory> baseCategories = baseCategoryMapper.selectList(wrapper);
            dataList.forEach(s->{
                BaseGoods baseGoods = new BaseGoods();
                baseGoods.setCreator(user.getId());
                baseGoods.setCreateDate(new Date());
                baseGoods.setEditor(user.getId());
                baseGoods.setEditDate(new Date());
                baseGoods.setIsdeleted(Constants.ZERO);
                baseGoods.setName(s.getName());
                baseGoods.setStatus(Constants.ZERO);
                if (StringUtils.isBlank(s.getCategoryName())){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"商品类别不可为空");
                }
                QueryWrapper<BaseCategory> categoryQuery = new QueryWrapper<>();
                categoryQuery.lambda()
                    .eq(BaseCategory::getName,s.getCategoryName());
                BaseCategory baseCategory = baseCategoryMapper.selectOne(categoryQuery);
                QueryWrapper<Brand> brandQuery = new QueryWrapper<>();
                brandQuery.lambda()
                        .eq(Brand::getName,s.getBrandName());
                Brand brand = brandMapper.selectOne(brandQuery);
//                baseGoods.setImgurl();
                baseGoods.setCategoryId(baseCategory.getId());
                baseGoods.setBrandId(brand.getId());
                baseGoodsMapper.insert(baseGoods);
                String baseGoodsParamString = s.getBaseGoodsParamString();
                List<List<String>> collect = Arrays.asList(baseGoodsParamString.split("\n"))
                        .stream().map(s1 -> Arrays.asList(s1.split("[:,:]")) ).collect(Collectors.toList());
                if (!CollectionUtils.isEmpty(collect)){
                    Integer i = 0;
                    collect.forEach(s2->{
                        if (!CollectionUtils.isEmpty(baseCategory.getBaseCateParamList())){
                            BaseCateParam baseCateParam = baseCategory.getBaseCateParamList()
                                    .stream().filter(s3 -> s3.getName().equals(s2.get(0))).findFirst()
                                    .orElseThrow(()->new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"配置参数不存在"));
                            BaseGoodsParam baseGoodsParam = new BaseGoodsParam();
                            baseGoodsParam.setCreator(user.getId());
                            baseGoodsParam.setCreateDate(new Date());
                            baseGoodsParam.setEditor(user.getId());
                            baseGoodsParam.setEditDate(new Date());
                            baseGoodsParam.setIsdeleted(Constants.ZERO);
                            baseGoodsParam.setName(baseCateParam.getName());
                            baseGoodsParam.setRemark(baseCateParam.getRemark());
                            baseGoodsParam.setStatus(Constants.ZERO);
                            baseGoodsParam.setSortnum(i+Constants.ONE);
                            baseGoodsParam.setPramaId(baseCateParam.getId());
                            baseGoodsParam.setVal(s2.size() > 1 ? s2.get(1) : null );
                            baseGoodsParam.setGoodsId(baseGoods.getId());
                            baseGoodsParamMapper.insert(baseGoodsParam);
                        }
                    });
                }
            });
        }catch (Exception e) {
            log.error(String.format("批量插入异常%s ",e.getMessage()));
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),e.getMessage());
        }finally {
        }
        return null;
    }
}
server/service/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java
@@ -158,8 +158,9 @@
        if (Constants.equalsInteger(user.getType(), Constants.UserType.SYSTEM.getKey())) {
            wrapper.lambda().eq(Brand::getType,Constants.ONE);
        }else {
            wrapper.lambda().and(wapper ->{wapper.eq(Brand::getType,brand.getCompanyId())
                    .or().eq(Brand::getType,Constants.ZERO);} );
            wrapper.lambda().and(i->i.eq(Brand::getCompanyId,user.getCompanyId())
                            .or().eq(Brand::getType,Constants.ZERO)
            );
        }
        List<Brand> list = brandMapper.selectList(wrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
@@ -189,10 +190,9 @@
        if (Objects.isNull(user.getCompanyId())) {
            queryWrapper.lambda().eq(Brand::getType,Constants.ONE);
        }else {
            queryWrapper.lambda().and(wreapper->{
                wreapper.eq(Brand::getType,pageWrap.getModel().getCompanyId())
                        .or().eq(Brand::getType,Constants.ZERO);});
            queryWrapper.lambda().and(i->i.eq(Brand::getCompanyId,user.getCompanyId())
                    .or().eq(Brand::getType,Constants.ZERO)
            );
        }
        queryWrapper.lambda().orderByAsc(Brand::getSortnum);
        IPage<Brand> brandIPage = brandMapper.selectPage(page, queryWrapper);
server/service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -11,6 +11,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CateAttrMapper;
import com.doumee.dao.business.CateParamMapper;
import com.doumee.dao.business.CateParamSelectMapper;
import com.doumee.dao.business.CategoryMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.CategoryService;
@@ -47,6 +48,9 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private CateParamSelectMapper cateParamSelectMapper;
    @Override
    public Integer create(Category category) {
@@ -410,13 +414,15 @@
    @Override
    public List<Category> findList(Category category) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        QueryWrapper<Category> wrapper = new QueryWrapper<>(category)
                .eq("STATUS",Constants.ZERO)
                .eq("ISDELETED",Constants.ZERO)
                .eq("COMPANY_ID",user.getCompanyId())
                .orderByAsc(" SORTNUM ");
        List<Category> list = categoryMapper.selectList(wrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode();
        for (Category c:list) {
            c.setPrefixUrl(prefixUrl);
            c.setAttrFirstList(cateAttrMapper.selectList(new QueryWrapper<CateAttr>().eq("TYPE",Constants.ZERO).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
@@ -426,6 +432,61 @@
        return list;
    }
    @Override
    public List<Category> findListSaaS(Category category) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!user.getType().equals(Constants.UserType.ZHUBO.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户类别错误,非主播用户!");
        }
        QueryWrapper<Category> wrapper = new QueryWrapper<>(category)
                .eq("STATUS",Constants.ZERO)
                .eq("ISDELETED",Constants.ZERO)
                .eq("COMPANY_ID",user.getCompanyId())
                .orderByAsc(" SORTNUM ");
        List<Category> list = categoryMapper.selectList(wrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode();
        for (Category c:list) {
            c.setPrefixUrl(prefixUrl);
//            c.setAttrFirstList(cateAttrMapper.selectList(new QueryWrapper<CateAttr>().eq("TYPE",Constants.ZERO).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
//            c.setAttrSecondList(cateAttrMapper.selectList(new QueryWrapper<CateAttr>().eq("TYPE",Constants.ONE).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
            c.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper<CateBudget>().eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
            this.getParamSelect(c);
        }
        return list;
    }
    public void getParamSelect(Category category){
        List<CateParam> cateParamList =  cateParamMapper.selectList(new QueryWrapper<CateParam>()
                .eq("CATEGORY_ID",category.getId())
                .eq("ISSELECT",Constants.ONE)
                .eq("ISDELETED",Constants.ZERO)
                .orderByAsc(" SORTNUM ")
                .last(" limit 2 ")
        );
        if(!Objects.isNull(cateParamList)&&cateParamList.size()>Constants.ZERO){
            for (int i = 0; i < cateParamList.size(); i++) {
                CateParam cateParam = cateParamList.get(i);
                List<CateParamSelect> cateParamSelectList = cateParamSelectMapper.selectList(new QueryWrapper<CateParamSelect>()
                        .eq("PARAM_ID",cateParam.getId())
                        .eq("ISDELETED",Constants.ZERO));
                if(i==0){
                    category.setAttrFirst(cateParam.getName());
                    category.setCateParamFirstList(cateParamSelectList);
                }else if(i==1){
                    category.setAttrSecond(cateParam.getName());
                    category.setCateParamSecondList(cateParamSelectList);
                }
            }
        }
    }
    @Override
    public List<Category> findListForGoods(Integer goodsId) {
        QueryWrapper<Category> wrapper = new QueryWrapper<Category>()
@@ -433,8 +494,8 @@
                .eq("ISDELETED",Constants.ZERO)
                .orderByAsc(" SORTNUM ");
        List<Category> list = categoryMapper.selectList(wrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode();
        for (Category c:list) {
            c.setPrefixUrl(prefixUrl);
            c.setAttrFirstList(cateAttrMapper.selectList(new QueryWrapper<CateAttr>().eq("TYPE",Constants.ZERO).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
@@ -491,8 +552,8 @@
                .eq("ISDELETED",Constants.ZERO)
                .orderByAsc(" SORTNUM ");
        List<Category> list = categoryMapper.selectList(wrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode();
        for (Category c:list) {
            c.setPrefixUrl(prefixUrl);
            c.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper<CateBudget>().eq("STATUS",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM ")));
server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -21,6 +21,7 @@
import com.doumee.service.business.BaseDataService;
import com.doumee.service.business.GoodsService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.java.Log;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -970,6 +971,7 @@
    @Override
    public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {
        try {
            LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
            String fileName = "产品导入表"+System.currentTimeMillis()+".xlsx";
            // èŽ·å–æ–‡ä»¶è¾“å…¥æµ
            InputStream inputStream =  this.getClass().getClassLoader().getResourceAsStream("static/file/goodsExcelTemp.xlsx");
@@ -983,7 +985,10 @@
            // sheet.getPhysicalNumberOfRows()获取总的行数
            // å¾ªçŽ¯è¯»å–æ¯ä¸€è¡Œ
            Row row = sheet.createRow(1);
            List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().eq("ISDELETED",0));
            List<Category> categoryList = categoryMapper.selectList(
                    new QueryWrapper<Category>().eq("ISDELETED",0)
                            .eq("COMPANY_ID",loginUserInfo.getCompanyId())
            );
            categoryList.forEach(i->{
                i.setParamList(cateParamMapper.selectList(new QueryWrapper<CateParam>().eq("ISDELETED",0).eq("CATEGORY_ID",i.getId())));
            });
@@ -1048,8 +1053,8 @@
                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getEPrice()), "  t.PRICE <=  "+pageWrap.getModel().getEPrice()+" ");
        queryWrapper.orderByDesc(Goods::getId);
        IPage<Goods> goodsIPage =  goodsJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
        goodsIPage.getRecords().forEach(i->{
            i.setPrefixUrl(prefixUrl);
            i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
@@ -1061,6 +1066,10 @@
    @Override
    public List<Goods> findListForH5(GoodsRequest goodsRequest) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!loginUserInfo.getType().equals(Constants.UserType.ZHUBO.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非主播用户无法使用");
        }
        MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Goods.class);
        queryWrapper.selectAs(Category::getName, Goods::getCategoryName);
@@ -1072,6 +1081,7 @@
        queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId);
        queryWrapper.eq(Goods::getStatus,Constants.ZERO);
        queryWrapper.eq(Goods::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Goods::getCompanyId,loginUserInfo.getCompanyId());
        queryWrapper.eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getCategoryId()), Goods::getCategoryId, goodsRequest.getCategoryId())
                .eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getBrandId()), Goods::getBrandId, goodsRequest.getBrandId())
                .and(!Objects.isNull(goodsRequest) && StringUtils.isNotBlank(goodsRequest.getKeyword()),
@@ -1085,8 +1095,8 @@
                .apply(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getEPrice()), "  t.PRICE <=  "+goodsRequest.getEPrice()+" ");
        queryWrapper.orderByDesc(Goods::getId);
        List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper);
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode()
                + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
        goodsList.forEach(i->{
            i.setPrefixUrl(prefixUrl);
            i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
server/service/src/main/java/com/doumee/service/business/impl/WebParamServiceImpl.java
@@ -48,6 +48,15 @@
        if(!Objects.isNull(webParam)){
            webParam.setResourcePath(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() +
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.WEB_PARAM).getCode());
        }else{
            webParam = new WebParam();
            webParam.setResourcePath(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() +
                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.WEB_PARAM).getCode());
            webParam.setBgImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.BG_IMG).getCode());
            webParam.setTopImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.TOP_IMG).getCode());
            webParam.setPkImg(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.PK_IMG).getCode());
            webParam.setMainColor(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.MAIN_COLOR).getCode());
            webParam.setRangeSize(systemDictDataBiz.queryByCode(Constants.WEB_PARAM,Constants.RANGE_SIZE).getCode());
        }
        return webParam;
    }
server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -3,6 +3,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.model.SystemLoginLog;
@@ -49,6 +50,7 @@
        loginLog.setOsInfo(Utils.User_Client.getOS(request));
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¡éªŒéªŒè¯ç 
        if(type!= Constants.TWO){
        try {
            if(captchaCheck){
                captchaService.check(dto.getUuid(), dto.getCode());
@@ -60,6 +62,7 @@
            systemLoginLogService.create(loginLog);
            throw e;
        }
        }
        // æ ¡éªŒç”¨æˆ·åå’Œå¯†ç 
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(dto.getUsername(), dto.getPassword());