feat: 产品中心

This commit is contained in:
曹鹏飞 2025-06-09 16:01:13 +08:00
parent 55e63b36e6
commit 73d46a1eac
23 changed files with 492 additions and 122 deletions

View File

@ -1,6 +1,7 @@
package com.nflg.mobilebroken.admin.controller; package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.common.constant.PublishState; import com.nflg.mobilebroken.common.constant.PublishState;
import com.nflg.mobilebroken.common.constant.STATE; import com.nflg.mobilebroken.common.constant.STATE;
@ -11,6 +12,7 @@ import com.nflg.mobilebroken.common.pojo.dto.ProductModelParamsExcelDTO;
import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.request.*;
import com.nflg.mobilebroken.common.pojo.vo.*; import com.nflg.mobilebroken.common.pojo.vo.*;
import com.nflg.mobilebroken.common.util.EecExcelUtil; import com.nflg.mobilebroken.common.util.EecExcelUtil;
import com.nflg.mobilebroken.common.util.PageUtil;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.*; import com.nflg.mobilebroken.repository.entity.*;
import com.nflg.mobilebroken.repository.service.*; import com.nflg.mobilebroken.repository.service.*;
@ -21,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
@ -273,6 +276,24 @@ public class ProductModelController extends ControllerBase{
return ApiResult.success(request.getModelParamsId()); return ApiResult.success(request.getModelParamsId());
} }
/**
* 删除设备技术参数指标
* @param request 请求参数
* @return 机型参数id
*/
@PostMapping("/deleteParamsIndexName")
public ApiResult<Integer> deleteParamsIndexName(@Valid @RequestBody ParamsIndexNameDeleteRequest request) {
ProductModelParams info = productModelParamsService.getById(request.getModelParamsId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
if (Objects.equals(info.getState(), PublishState.Published.getState())) {
Integer oldId = request.getModelParamsId();
request.setModelParamsId(productModelParamsService.add(info.getModelId()));
productModelParamsService.copyItems(oldId, request.getModelParamsId());
}
productModelParamsItemService.deleteIndexName(request);
return ApiResult.success(request.getModelParamsId());
}
/** /**
* 添加设备技术参数项 * 添加设备技术参数项
* @param request 请求参数 * @param request 请求参数
@ -596,7 +617,7 @@ public class ProductModelController extends ControllerBase{
* @param request 请求参数 * @param request 请求参数
*/ */
@PostMapping("/addFile") @PostMapping("/addFile")
public ApiResult<Void> addFile(@Valid @RequestBody ProductModelFileAddRequest request){ public ApiResult<Void> addFile(@Valid @RequestBody @NotEmpty ProductModelFileAddRequest request){
productModelFileService.add(request); productModelFileService.add(request);
return ApiResult.success(); return ApiResult.success();
} }
@ -646,17 +667,41 @@ public class ProductModelController extends ControllerBase{
* @param request 请求参数 * @param request 请求参数
*/ */
@PostMapping("/getFileList") @PostMapping("/getFileList")
public ApiResult<PageData<ProductModelFile>> getFileList(@Valid @RequestBody ProductModelImageSearchRequest request){ public ApiResult<PageData<ProductModelFileVO>> getFileList(@Valid @RequestBody ProductModelImageSearchRequest request){
return ApiResult.success(productModelFileService.getList(request)); return ApiResult.success(PageUtil.convert(productModelFileService.getList(request), d -> {
ProductModelFileVO vo=Convert.convert(ProductModelFileVO.class, d);
vo.setLanguages(Convert.toList(ProductModelFileItemAddRequest.class,productModelFileService.getLanguages(vo.getId())));
return vo;
}));
}
// /**
// * 获取资料详情
// * @param modelFileId 视频ID
// */
// @GetMapping("/getFileInfo")
// public ApiResult<ProductModelFileInfoVO> getFileInfo(@RequestParam Integer modelFileId){
// return ApiResult.success(productModelFileService.getInfo(modelFileId));
// }
/**
* 获取机型资料默认文件
* @param modelId 机型ID
* @return 配置信息
*/
@GetMapping("/getFileDefaultCondig")
public ApiResult<List<FileDefaultConfigVO>> getFileDefaultCondig(@Valid @RequestParam @NotNull Integer modelId){
return ApiResult.success(productModelFileService.getDefaultConfig(modelId));
} }
/** /**
* 获取资料详情 * 设置机型资料默认文件
* @param modelFileId 视频ID * @param request 配置信息
*/ */
@GetMapping("/getFileInfo") @PostMapping("/setFileDefaultCondig")
public ApiResult<ProductModelFileInfoVO> getFileInfo(@RequestParam Integer modelFileId){ public ApiResult<Void> setFileDefaultCondig(@Valid @RequestBody FileDefaultConfigRequest request){
return ApiResult.success(productModelFileService.getInfo(modelFileId)); productModelFileService.setFileDefaultCondig(request);
return ApiResult.success();
} }
/** /**

View File

@ -0,0 +1,20 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class FileDefaultConfigItemRequest {
/**
* 语言编码
*/
@NotBlank
private String languageCode;
/**
* 文件项ID
*/
private Integer fileItemId;
}

View File

@ -0,0 +1,23 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class FileDefaultConfigRequest {
/**
* 机型ID
*/
@NotNull
private Integer modelId;
/**
* 配置项
*/
@NotEmpty
private List<FileDefaultConfigItemRequest> items;
}

View File

@ -0,0 +1,28 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ParamsIndexNameDeleteRequest {
/**
* 机型参数id
*/
@NotNull
private Integer modelParamsId;
/**
* 语言代码
*/
@NotBlank
private String languageCode;
/**
* 指标名称
*/
@NotBlank
private String indexName;
}

View File

@ -1,6 +1,7 @@
package com.nflg.mobilebroken.common.pojo.request; package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data; import lombok.Data;
import org.apache.commons.io.FilenameUtils;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -21,13 +22,32 @@ public class ProductModelFileAddRequest {
@NotBlank @NotBlank
private String name; private String name;
/**
* 文件路径
*/
@NotBlank
private String url;
/**
* 文件大小
*/
private Integer size;
/**
* 文件类型
*/
private String type;
/**
* 多语言数据
*/
private List<ProductModelFileItemAddRequest> items;
/** /**
* 排序 * 排序
*/ */
private Integer sort; private Integer sort;
/** public String getType() {
* return "." + FilenameUtils.getExtension(name);
*/ }
private List<ProductFileAddRequest> items; }
}

View File

@ -0,0 +1,19 @@
package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data;
@Data
public class ProductModelFileItemAddRequest {
private Integer id;
/**
* 语言编码
*/
private String languageCode;
/**
* 文件名
*/
private String name;
}

View File

@ -3,10 +3,16 @@ package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
@Data @Data
public class ProductModelFileUpdateRequest extends ProductModelFileAddRequest{ public class ProductModelFileUpdateRequest{
@NotNull @NotNull
private Integer id; private Integer id;
}
/**
* 多语言数据
*/
private List<ProductModelFileItemAddRequest> items;
}

View File

@ -0,0 +1,21 @@
package com.nflg.mobilebroken.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class FileDefaultConfigItemVO {
private Integer id;
/**
* 文件名称
*/
private String name;
/**
* 是否是当前的选择项
*/
private Boolean selected;
}

View File

@ -0,0 +1,26 @@
package com.nflg.mobilebroken.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class FileDefaultConfigVO {
/**
* 语言编码
*/
private String languageCode;
/**
* 语言名称
*/
private String languageName;
/**
* 语言项
*/
private List<FileDefaultConfigItemVO> items;
}

View File

@ -0,0 +1,96 @@
package com.nflg.mobilebroken.common.pojo.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.nflg.mobilebroken.common.pojo.request.ProductModelFileItemAddRequest;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ProductModelFileVO {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 产品机型id
*/
private Integer modelId;
/**
* 文件名称
*/
private String name;
/**
* 文件后缀
*/
private String type;
/**
* 下载地址
*/
private String url;
/**
* 文件大小单位KB
*/
private Integer size;
/**
* 排序
*/
private Integer sort;
/**
* 是否启用
*/
private Boolean enable;
/**
* 是否显示在列表
*/
private Boolean showInList;
/**
* 发布状态0未发布1-已发布2-已废弃
*/
private Integer state;
/**
* 发布人
*/
private String publishBy;
/**
* 发布时间
*/
private LocalDateTime publishTime;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 适用语种
*/
private List<ProductModelFileItemAddRequest> languages;
}

View File

@ -32,7 +32,7 @@ public class ProductModelVO {
private List<ProductModelParamVO> params; private List<ProductModelParamVO> params;
/** /**
* 文件列表 * 文件
*/ */
private List<ProductFileVO> files; private ProductFileVO file;
} }

View File

@ -3,12 +3,13 @@ package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 产品中心-产品机型-文件 * 产品中心-产品机型-文件
@ -38,6 +39,21 @@ public class ProductModelFile implements Serializable {
*/ */
private String name; private String name;
/**
* 文件后缀
*/
private String type;
/**
* 下载地址
*/
private String url;
/**
* 文件大小单位KB
*/
private Integer size;
/** /**
* 排序 * 排序
*/ */

View File

@ -3,11 +3,12 @@ package com.nflg.mobilebroken.repository.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
/** /**
* <p> * <p>
* 产品中心-产品机型-文件 * 产品中心-产品机型-文件
@ -27,6 +28,11 @@ public class ProductModelFileItem implements Serializable {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; private Integer id;
/**
* 产品机型id
*/
private Integer modelId;
/** /**
* 产品机型id * 产品机型id
*/ */
@ -43,17 +49,7 @@ public class ProductModelFileItem implements Serializable {
private String name; private String name;
/** /**
* 文件后缀 * 是否显示在列表
*/ */
private String type; private Boolean showInList;
/**
* 下载地址
*/
private String url;
/**
* 文件大小单位KB
*/
private Integer size;
} }

View File

@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO; import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO;
import com.nflg.mobilebroken.repository.entity.ProductModelFile; import com.nflg.mobilebroken.repository.entity.ProductModelFile;
import java.util.List;
/** /**
* <p> * <p>
* 产品中心-产品机型-文件 Mapper 接口 * 产品中心-产品机型-文件 Mapper 接口
@ -16,7 +14,7 @@ import java.util.List;
*/ */
public interface ProductModelFileMapper extends BaseMapper<ProductModelFile> { public interface ProductModelFileMapper extends BaseMapper<ProductModelFile> {
List<ProductFileVO> getListByLanguage(Integer modelId, String language); ProductFileVO getListByLanguage(Integer modelId, String language);
void copyItems(Integer oldId, Integer newId); void copyItems(Integer oldId, Integer newId);
} }

View File

@ -1,8 +1,9 @@
package com.nflg.mobilebroken.repository.service; package com.nflg.mobilebroken.repository.service;
import com.nflg.mobilebroken.common.pojo.request.ProductFileAddRequest;
import com.nflg.mobilebroken.repository.entity.ProductModelFileItem;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.common.pojo.request.FileDefaultConfigRequest;
import com.nflg.mobilebroken.common.pojo.request.ProductModelFileItemAddRequest;
import com.nflg.mobilebroken.repository.entity.ProductModelFileItem;
import java.util.List; import java.util.List;
@ -16,9 +17,9 @@ import java.util.List;
*/ */
public interface IProductModelFileItemService extends IService<ProductModelFileItem> { public interface IProductModelFileItemService extends IService<ProductModelFileItem> {
void add(Integer id, List<ProductFileAddRequest> items); void add(Integer modelId,Integer id, List<ProductModelFileItemAddRequest> items);
void update(List<ProductFileAddRequest> items); void update(Integer id, List<ProductModelFileItemAddRequest> items);
List<ProductFileAddRequest> getInfo(Integer modelFileId); void setFileDefaultCondig(FileDefaultConfigRequest request);
} }

View File

@ -3,12 +3,14 @@ package com.nflg.mobilebroken.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.request.*;
import com.nflg.mobilebroken.common.pojo.vo.FileDefaultConfigVO;
import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO; import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO;
import com.nflg.mobilebroken.common.pojo.vo.ProductModelFileInfoVO;
import com.nflg.mobilebroken.repository.entity.ProductModelFile; import com.nflg.mobilebroken.repository.entity.ProductModelFile;
import com.nflg.mobilebroken.repository.entity.ProductModelFileItem;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**
@ -33,9 +35,7 @@ public interface IProductModelFileService extends IService<ProductModelFile> {
IPage<ProductModelFile> getList(@Valid ProductModelImageSearchRequest request); IPage<ProductModelFile> getList(@Valid ProductModelImageSearchRequest request);
ProductModelFileInfoVO getInfo(Integer modelFileId); ProductFileVO getDefaultByLanguage(Integer modelId, String language);
List<ProductFileVO> getListByLanguage(Integer modelId, String language);
void deleteByModel(@NotEmpty List<Integer> ids); void deleteByModel(@NotEmpty List<Integer> ids);
@ -44,4 +44,10 @@ public interface IProductModelFileService extends IService<ProductModelFile> {
void saveSort(@NotEmpty List<Integer> ids); void saveSort(@NotEmpty List<Integer> ids);
void copyItems(Integer oldId, Integer newId); void copyItems(Integer oldId, Integer newId);
List<ProductModelFileItem> getLanguages(Integer id);
List<FileDefaultConfigVO> getDefaultConfig(@Valid @NotNull Integer modelId);
void setFileDefaultCondig(@Valid FileDefaultConfigRequest request);
} }

View File

@ -43,4 +43,6 @@ public interface IProductModelParamsItemService extends IService<ProductModelPar
void importModelParamsItem(@Valid @NotNull Integer modelParamsId, List<ProductModelParamsExcelDTO> datas); void importModelParamsItem(@Valid @NotNull Integer modelParamsId, List<ProductModelParamsExcelDTO> datas);
void updateItem(@Valid ProductModelParamsItemUpdateRequest1 request); void updateItem(@Valid ProductModelParamsItemUpdateRequest1 request);
void deleteIndexName(@Valid ParamsIndexNameDeleteRequest request);
} }

View File

@ -1,14 +1,18 @@
package com.nflg.mobilebroken.repository.service.impl; package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.request.ProductFileAddRequest; import com.nflg.mobilebroken.common.pojo.request.FileDefaultConfigRequest;
import com.nflg.mobilebroken.common.pojo.request.ProductModelFileItemAddRequest;
import com.nflg.mobilebroken.repository.entity.ProductModelFileItem; import com.nflg.mobilebroken.repository.entity.ProductModelFileItem;
import com.nflg.mobilebroken.repository.mapper.ProductModelFileItemMapper; import com.nflg.mobilebroken.repository.mapper.ProductModelFileItemMapper;
import com.nflg.mobilebroken.repository.service.IProductModelFileItemService; import com.nflg.mobilebroken.repository.service.IProductModelFileItemService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -25,54 +29,53 @@ public class ProductModelFileItemServiceImpl extends ServiceImpl<ProductModelFil
@Transactional @Transactional
@Override @Override
public void add(Integer id, List<ProductFileAddRequest> items) { public void add(Integer modelId,Integer id, List<ProductModelFileItemAddRequest> items) {
if (CollectionUtil.isNotEmpty(items)){ if (CollectionUtil.isNotEmpty(items)){
saveBatch( List<ProductModelFileItem> forAdd = new ArrayList<>();
items.stream() items.forEach(item -> {
.map(it -> new ProductModelFileItem() if (StrUtil.isNotBlank(item.getName())) {
.setModelFileId(id) forAdd.add(new ProductModelFileItem()
.setLanguageCode(it.getLanguageCode()) .setModelId(modelId)
.setName(it.getName()) .setModelFileId(id)
.setType(it.getType()) .setLanguageCode(item.getLanguageCode())
.setUrl(it.getUrl()) .setName(item.getName()));
.setSize(it.getSize()) }
) });
.collect(Collectors.toList()) if (CollectionUtil.isNotEmpty(forAdd)) {
); saveBatch(forAdd);
}
} }
} }
@Transactional @Transactional
@Override @Override
public void update(List<ProductFileAddRequest> items) { public void update(Integer id, List<ProductModelFileItemAddRequest> items) {
if (CollectionUtil.isNotEmpty(items)){ remove(new LambdaQueryWrapper<ProductModelFileItem>()
updateBatchById( .eq(ProductModelFileItem::getModelFileId, id)
items.stream() .notIn(ProductModelFileItem::getId, items.stream().map(ProductModelFileItemAddRequest::getId).collect(Collectors.toList()))
.map(it -> new ProductModelFileItem() );
.setId(it.getId()) saveOrUpdateBatch(
.setName(it.getName()) items.stream()
.setType(it.getType()) .map(item -> new ProductModelFileItem()
.setUrl(it.getUrl()) .setId(item.getId())
.setSize(it.getSize()) .setName(item.getName())
) .setLanguageCode(item.getLanguageCode()))
.collect(Collectors.toList()) .collect(Collectors.toList())
); );
}
} }
@Transactional
@Override @Override
public List<ProductFileAddRequest> getInfo(Integer modelFileId) { public void setFileDefaultCondig(FileDefaultConfigRequest request) {
return lambdaQuery() lambdaUpdate()
.eq(ProductModelFileItem::getModelFileId,modelFileId) .set(ProductModelFileItem::getShowInList, false)
.list().stream() .eq(ProductModelFileItem::getModelId, request.getModelId())
.map(it -> new ProductFileAddRequest() .update();
.setId(it.getId()) request.getItems().forEach(item -> {
.setLanguageCode(it.getLanguageCode()) lambdaUpdate()
.setName(it.getName()) .set(ProductModelFileItem::getShowInList, true)
.setType(it.getType()) .eq(ProductModelFileItem::getId, item.getFileItemId())
.setUrl(it.getUrl()) .update();
.setSize(it.getSize()) });
)
.collect(Collectors.toList());
} }
} }

View File

@ -5,14 +5,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.vo.FileDefaultConfigItemVO;
import com.nflg.mobilebroken.common.constant.PublishState; import com.nflg.mobilebroken.common.constant.PublishState;
import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.request.*;
import com.nflg.mobilebroken.common.pojo.vo.FileDefaultConfigVO;
import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO; import com.nflg.mobilebroken.common.pojo.vo.ProductFileVO;
import com.nflg.mobilebroken.common.pojo.vo.ProductModelFileInfoVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil; import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.Language;
import com.nflg.mobilebroken.repository.entity.ProductModelFile; import com.nflg.mobilebroken.repository.entity.ProductModelFile;
import com.nflg.mobilebroken.repository.entity.ProductModelFileItem;
import com.nflg.mobilebroken.repository.mapper.ProductModelFileMapper; import com.nflg.mobilebroken.repository.mapper.ProductModelFileMapper;
import com.nflg.mobilebroken.repository.service.ILanguageService;
import com.nflg.mobilebroken.repository.service.IProductModelFileItemService; import com.nflg.mobilebroken.repository.service.IProductModelFileItemService;
import com.nflg.mobilebroken.repository.service.IProductModelFileService; import com.nflg.mobilebroken.repository.service.IProductModelFileService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -22,7 +26,9 @@ import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -38,17 +44,23 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
@Resource @Resource
private IProductModelFileItemService productModelFileItemService; private IProductModelFileItemService productModelFileItemService;
@Resource
private ILanguageService languageService;
@Transactional @Transactional
@Override @Override
public void add(ProductModelFileAddRequest request) { public void add(ProductModelFileAddRequest request) {
ProductModelFile info = new ProductModelFile() ProductModelFile info = new ProductModelFile()
.setModelId(request.getModelId()) .setModelId(request.getModelId())
.setName(request.getName()) .setName(request.getName())
.setUrl(request.getUrl())
.setType(request.getType())
.setSize(request.getSize())
.setSort(request.getSort()) .setSort(request.getSort())
.setCreateBy(AdminUserUtil.getUserName()) .setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now()); .setCreateTime(LocalDateTime.now());
save(info); save(info);
productModelFileItemService.add(info.getId(), request.getItems()); productModelFileItemService.add(request.getModelId(),info.getId(), request.getItems());
} }
@Transactional @Transactional
@ -56,16 +68,10 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
public void update(ProductModelFileUpdateRequest request) { public void update(ProductModelFileUpdateRequest request) {
ProductModelFile info=getById(request.getId()); ProductModelFile info=getById(request.getId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据"); VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
if (Objects.equals(info.getState(), PublishState.Published.getState())){ info.setUpdateBy(AdminUserUtil.getUserName());
add(request); info.setUpdateTime(LocalDateTime.now());
}else { updateById(info);
info.setSort(request.getSort()); productModelFileItemService.update(info.getId(),request.getItems());
info.setName(request.getName());
info.setUpdateBy(AdminUserUtil.getUserName());
info.setUpdateTime(LocalDateTime.now());
updateById(info);
productModelFileItemService.update(request.getItems());
}
} }
@Override @Override
@ -152,18 +158,7 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
} }
@Override @Override
public ProductModelFileInfoVO getInfo(Integer modelFileId) { public ProductFileVO getDefaultByLanguage(Integer modelId, String language) {
ProductModelFile info=getById(modelFileId);
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
return new ProductModelFileInfoVO()
.setId(info.getId())
.setName(info.getName())
.setSort(info.getSort())
.setItems(productModelFileItemService.getInfo(modelFileId));
}
@Override
public List<ProductFileVO> getListByLanguage(Integer modelId, String language) {
return baseMapper.getListByLanguage(modelId,language); return baseMapper.getListByLanguage(modelId,language);
} }
@ -199,4 +194,41 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
public void copyItems(Integer oldId, Integer newId) { public void copyItems(Integer oldId, Integer newId) {
baseMapper.copyItems(oldId,newId); baseMapper.copyItems(oldId,newId);
} }
}
@Override
public List<ProductModelFileItem> getLanguages(Integer id) {
return productModelFileItemService.lambdaQuery()
.eq(ProductModelFileItem::getModelFileId, id)
.list();
}
@Override
public List<FileDefaultConfigVO> getDefaultConfig(Integer modelId) {
List<Language> languages = languageService.getAllLanguages();
List<ProductModelFileItem> list = productModelFileItemService.lambdaQuery()
.eq(ProductModelFileItem::getModelFileId, modelId)
.orderByAsc(ProductModelFileItem::getLanguageCode)
.orderByDesc(ProductModelFileItem::getShowInList)
.list();
List<FileDefaultConfigVO> vos=new ArrayList<>();
Map<String, List<ProductModelFileItem>> maps=list.stream().collect(Collectors.groupingBy(ProductModelFileItem::getLanguageCode));
maps.forEach((languageCode,data)->{
FileDefaultConfigVO vo=new FileDefaultConfigVO()
.setLanguageCode(languageCode)
.setLanguageName(languages.stream().filter(lang->lang.getCode().equals(languageCode)).findFirst().get().getName())
.setItems(data.stream().map(item->new FileDefaultConfigItemVO()
.setId(item.getId())
.setName(item.getName())
.setSelected(item.getShowInList()))
.collect(Collectors.toList())
);
vos.add(vo);
});
return vos;
}
@Override
public void setFileDefaultCondig(FileDefaultConfigRequest request) {
productModelFileItemService.setFileDefaultCondig(request);
}
}

View File

@ -32,6 +32,7 @@ public class ProductModelHotimageServiceImpl extends ServiceImpl<ProductModelHot
public void add(ProductModelHotImageAddRequest request) { public void add(ProductModelHotImageAddRequest request) {
save(new ProductModelHotimage() save(new ProductModelHotimage()
.setModelId(request.getModelId()) .setModelId(request.getModelId())
.setImage(request.getImage())
.setData(request.getData()) .setData(request.getData())
.setCreateBy(AdminUserUtil.getUserName()) .setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now()) .setCreateTime(LocalDateTime.now())

View File

@ -139,11 +139,11 @@ public class ProductModelParamsItemServiceImpl extends ServiceImpl<ProductModelP
Map<String, List<ProductModelParamsItem>> maps = datas.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getLanguageCode)); Map<String, List<ProductModelParamsItem>> maps = datas.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getLanguageCode));
List<ProductModelParamsItemVO> vos = new ArrayList<>(); List<ProductModelParamsItemVO> vos = new ArrayList<>();
maps.forEach((languageCode, data) -> { maps.forEach((languageCode, data) -> {
ProductModelParamsItemVO vo = new ProductModelParamsItemVO()
.setLanguageCode(languageCode);
Map<String, List<ProductModelParamsItem>> itemMap = data.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getIndexName)); Map<String, List<ProductModelParamsItem>> itemMap = data.stream().collect(Collectors.groupingBy(ProductModelParamsItem::getIndexName));
itemMap.forEach((indexName, itemData) -> { itemMap.forEach((indexName, itemData) -> {
ProductModelParamsItemVO vo = new ProductModelParamsItemVO() vo.setItems(data.stream().map(it -> new ProductModelMainParamsItemChildrenVO()
.setLanguageCode(languageCode)
.setItems(data.stream().map(it -> new ProductModelMainParamsItemChildrenVO()
.setIndexName(indexName) .setIndexName(indexName)
.setItems(itemData.stream() .setItems(itemData.stream()
.filter(pi->StrUtil.isNotBlank(pi.getName())) .filter(pi->StrUtil.isNotBlank(pi.getName()))
@ -254,4 +254,12 @@ public class ProductModelParamsItemServiceImpl extends ServiceImpl<ProductModelP
.eq(ProductModelParamsItem::getId, request.getModelParamsItemId()) .eq(ProductModelParamsItem::getId, request.getModelParamsItemId())
.update(); .update();
} }
@Override
public void deleteIndexName(ParamsIndexNameDeleteRequest request) {
remove(new LambdaQueryWrapper<ProductModelParamsItem>()
.eq(ProductModelParamsItem::getModelParamsId, request.getModelParamsId())
.eq(ProductModelParamsItem::getLanguageCode, request.getLanguageCode())
.eq(ProductModelParamsItem::getIndexName, request.getIndexName()));
}
} }

View File

@ -153,7 +153,7 @@ public class ProductModelServiceImpl extends ServiceImpl<ProductModelMapper, Pro
.setRecommend(item.getRecommend()) .setRecommend(item.getRecommend())
.setImage(item.getImage()) .setImage(item.getImage())
.setParams(productPartParamsService.getListByLanguage(item.getId(), language,main)) .setParams(productPartParamsService.getListByLanguage(item.getId(), language,main))
.setFiles(productModelFileService.getListByLanguage(item.getId(), language))) .setFile(productModelFileService.getDefaultByLanguage(item.getId(), language)))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
return Collections.emptyList(); return Collections.emptyList();

View File

@ -1,18 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.mobilebroken.repository.mapper.ProductModelFileMapper"> <mapper namespace="com.nflg.mobilebroken.repository.mapper.ProductModelFileMapper">
<select id="getListByLanguage" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductFileVO"> <select id="getListByLanguage" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductFileVO">
SELECT pmfi.* SELECT pmfi.name, pmfi.*
FROM product_model_file pmf FROM product_model_file pmf
INNER JOIN product_model_file_item pmfi ON pmf.id=pmfi.model_file_id INNER JOIN product_model_file_item pmfi ON pmf.id = pmfi.model_file_id
WHERE pmf.`enable`=1 AND pmf.state=1 AND pmf.model_id=#{modelId} AND pmfi.language_code=#{language} WHERE pmf.`enable` = 1
ORDER BY pmf.sort DESC AND pmf.state = 1
AND pmfi.show_in_list = 1
AND pmf.model_id = #{modelId}
AND pmfi.language_code = #{language}
LIMIT 1
</select> </select>
<select id="copyItems"> <select id="copyItems">
INSERT INTO product_model_file_item(model_file_id,language_code,`name`,type,url,size) INSERT INTO product_model_file_item(model_id,model_file_id,language_code,`name`,show_in_list)
SELECT #{newId},language_code,`name`,type,url,size SELECT model_id,#{newId},language_code,`name`,show_in_list
FROM product_model_file_item FROM product_model_file_item
WHERE model_file_id=#{oldId} WHERE model_file_id=#{oldId}
</select> </select>