Compare commits

...

3 Commits

Author SHA1 Message Date
曹鹏飞 30011ce2b0 Merge branch 'feature/bug-1344' into feature/quotation
# Conflicts:
#	nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/ProductTypeServiceImpl.java
2026-03-11 10:22:07 +08:00
曹鹏飞 58dd7806de feat: bug-1344 产品中心首页的案例,产品机型里的案例,部件管理中无法上传纯英文或其他语种视频,都必须要勾选中文,需要优化 2026-03-11 10:17:37 +08:00
曹鹏飞 c32bd930fa feat(shopping): 添加购物初始化接口并优化分页数据结构
- 在PageData类中添加Collections.emptyList()默认值防止空指针异常
- 为PageData类中的getter方法添加标准格式的空格
- 新增ShoppingInitRequest请求实体类用于接收购物初始化参数
- 添加modelId和targetId字段的非空验证注解
- 实现ShoppingController中的init接口方法并返回成功响应
- 导入必要的RequestBody、Valid注解和ShoppingInitRequest类
2026-03-11 09:39:27 +08:00
7 changed files with 64 additions and 72 deletions

View File

@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
@Getter
@Accessors(chain = true)
@ -38,18 +39,18 @@ public class PageData<T> implements Serializable {
//是否有下一页
private boolean hasNextPage;
public boolean isHasNextPage(){
public boolean isHasNextPage() {
return page < getTotalPages();
}
//是否有上一页
private boolean hasPrevPage;
public boolean isHasPrevPage(){
public boolean isHasPrevPage() {
return page > 1;
}
//分页数据
@Setter
private Collection<T> items;
private Collection<T> items = Collections.emptyList();
}

View File

@ -4,13 +4,16 @@ import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.vo.SimpleUserVO;
import com.nflg.mobilebroken.common.util.AppUserUtil;
import com.nflg.mobilebroken.quotation.controller.ControllerBase;
import com.nflg.mobilebroken.quotation.pojo.request.ShoppingInitRequest;
import com.nflg.mobilebroken.repository.entity.TBaseCustomer;
import com.nflg.mobilebroken.repository.service.IAppUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.stream.Collectors;
@ -47,4 +50,9 @@ public class ShoppingController extends ControllerBase {
);
}
}
}
public ApiResult init(@Valid @RequestBody ShoppingInitRequest request){
//TODO
return ApiResult.success();
}
}

View File

@ -0,0 +1,21 @@
package com.nflg.mobilebroken.quotation.pojo.request;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ShoppingInitRequest {
/**
* 机型ID
*/
@NotNull
private Long modelId;
/**
* 报价对象ID
*/
@NotNull
private Integer targetId;
}

View File

@ -44,12 +44,7 @@ public class ProductHonorServiceImpl extends ServiceImpl<ProductHonorMapper, Pro
@Override
public Integer add(ProductHonorAddRequest request) {
ProductHonor productHonor = new ProductHonor()
.setTitle(request.getItems().stream()
.filter(it-> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.get()
.getTitle()
.trim())
.setTitle(request.getItems().get(0).getTitle().trim())
.setObtainingTime(request.getObtainingTime())
.setBatchNumber(request.getBatchNumber())
.setEnable(request.getEnable())

View File

@ -42,13 +42,8 @@ public class ProductPartServiceImpl extends ServiceImpl<ProductPartMapper, Produ
@Transactional
@Override
public void add(ProductPartAddRequest request) {
ProductPartInfoAddRequest cn=request.getItems().stream()
.filter(it-> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
ProductPart part = new ProductPart()
.setName(cn.getName())
.setName(request.getItems().get(0).getName())
.setAttrId(request.getAttrId())
.setDescribe(request.getDescribe())
.setCreateBy(AdminUserUtil.getUserName())
@ -60,14 +55,9 @@ public class ProductPartServiceImpl extends ServiceImpl<ProductPartMapper, Produ
@Transactional
@Override
public void update(ProductPartUpdateRequest request) {
ProductPartInfoAddRequest cn = request.getItems().stream()
.filter(it -> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
lambdaUpdate()
.set(ProductPart::getAttrId, request.getAttrId())
.set(ProductPart::getName, cn.getName())
.set(ProductPart::getName, request.getItems().get(0).getName())
.set(ProductPart::getDescribe, request.getDescribe())
.set(ProductPart::getUpdateBy, AdminUserUtil.getUserName())
.set(ProductPart::getUpdateTime, LocalDateTime.now())

View File

@ -51,14 +51,9 @@ public class ProductSeriesServiceImpl extends ServiceImpl<ProductSeriesMapper, P
@Transactional
@Override
public Integer add(ProductSeriesAddRequest request) {
ProductSeriesInfoAddRequest cn=request.getItems().stream()
.filter(it-> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
ProductSeries productSeries = new ProductSeries()
.setModuleId(request.getModuleId())
.setName(cn.getName().trim())
.setName(request.getItems().get(0).getName().trim())
.setBatchNumber(IdUtil.getSnowflakeNextIdStr())
.setSort(RandomUtil.randomInt(0,10000))
.setCreateBy(AdminUserUtil.getUserName())
@ -88,13 +83,8 @@ public class ProductSeriesServiceImpl extends ServiceImpl<ProductSeriesMapper, P
save(info);
productSeriesInfoService.add(info.getId(), request.getItems());
} else {
ProductSeriesInfoAddRequest cn = request.getItems().stream()
.filter(it -> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
info.setModuleId(request.getModuleId());
info.setName(cn.getName().trim());
info.setName(request.getItems().get(0).getName().trim());
// info.setSort(request.getSort());
info.setUpdateBy(AdminUserUtil.getUserName());
info.setUpdateTime(LocalDateTime.now());

View File

@ -2,10 +2,8 @@ package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.constant.Constant;
import com.nflg.mobilebroken.common.constant.PublishState;
import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException;
@ -34,7 +32,6 @@ import java.util.Objects;
* <p>
* 产品中心-产品类型 服务实现类
* </p>
*
* @author 代码生成器生成
* @since 2025
*/
@ -43,7 +40,7 @@ import java.util.Objects;
public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, ProductType> implements IProductTypeService {
@Resource
private IProductTypeInfoService productTypeInfoService;
private IProductTypeInfoService productTypeInfoService;
@Resource
private IProductTypeFileService productTypeFileService;
@ -54,17 +51,12 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
@Transactional
@Override
public Integer add(ProductTypeAddRequest request) {
ProductTypeInfoAddRequest cn=request.getItems().stream()
.filter(it-> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
ProductType productType = new ProductType()
.setModuleId(request.getModuleId())
.setSeriesNumber(request.getSeriesNumber())
.setBatchNumber(request.getBatchNumber())
.setName(cn.getName().trim())
.setSort(RandomUtil.randomInt(0,10000))
.setName(request.getItems().get(0).getName().trim())
.setSort(RandomUtil.randomInt(0, 10000))
.setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
save(productType);
@ -73,17 +65,17 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
.setId(productType.getId())
.setState(PublishState.Published.getState()));
}
productTypeInfoService.add(productType.getId(),request.getItems());
List<ProductFileAddRequest> files=new ArrayList<>();
request.getItems().forEach(item->{
if (CollectionUtil.isNotEmpty(item.getFiles())){
item.getFiles().forEach(file->{
productTypeInfoService.add(productType.getId(), request.getItems());
List<ProductFileAddRequest> files = new ArrayList<>();
request.getItems().forEach(item -> {
if (CollectionUtil.isNotEmpty(item.getFiles())) {
item.getFiles().forEach(file -> {
file.setLanguageCode(item.getLanguageCode());
files.add(file);
});
}
});
productTypeFileService.add(productType.getId(),files);
productTypeFileService.add(productType.getId(), files);
return productType.getId();
}
@ -97,12 +89,7 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
return id;
// baseMapper.copyItems(request.getId(), id);
} else {
ProductTypeInfoAddRequest cn=request.getItems().stream()
.filter(it-> StrUtil.equals(it.getLanguageCode(), Constant.DEFAULT_LANGUAGE_CODE))
.findFirst()
.orElse(null);
VUtils.trueThrowBusinessError(Objects.isNull(cn)).throwMessage("必须包含中文数据");
info.setName(cn.getName().trim());
info.setName(request.getItems().get(0).getName().trim());
info.setModuleId(request.getModuleId());
info.setSeriesNumber(request.getSeriesNumber());
// info.setSort(request.getSort());
@ -115,9 +102,9 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
.setState(PublishState.Published.getState()));
}
productTypeInfoService.update(request.getItems());
List<ProductFileAddRequest> files=new ArrayList<>();
request.getItems().forEach(item->{
if (CollectionUtil.isNotEmpty(item.getFiles())){
List<ProductFileAddRequest> files = new ArrayList<>();
request.getItems().forEach(item -> {
if (CollectionUtil.isNotEmpty(item.getFiles())) {
files.addAll(item.getFiles());
}
});
@ -128,7 +115,7 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
@Override
public Page<ProductTypeSearchVO> getList(ProductTypeSearchRequest request) {
return baseMapper.getList(request,new Page<>(request.getPage(), request.getPageSize()));
return baseMapper.getList(request, new Page<>(request.getPage(), request.getPageSize()));
}
@Override
@ -142,17 +129,17 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
@Override
public void enable(EnableRequest request) {
ProductType info=getById(request.getId());
ProductType info = getById(request.getId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
if (request.getEnable()){
if (request.getEnable()) {
//启用
info.setEnable(true);
info.setUpdateBy(AdminUserUtil.getUserName());
info.setUpdateTime(LocalDateTime.now());
updateById(info);
}else {
} else {
//禁用
VUtils.trueThrowBusinessError(Objects.equals(info.getState(),PublishState.Published.getState()))
VUtils.trueThrowBusinessError(Objects.equals(info.getState(), PublishState.Published.getState()))
.throwMessage("不能禁用已发布的数据");
info.setEnable(false);
info.setUpdateBy(AdminUserUtil.getUserName());
@ -244,7 +231,7 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
List<ProductTypeInfoAddRequest> items = productTypeInfoService.getInfo(typeId);
items.forEach(item -> {
item.setFiles(productTypeFileService.getInfo(typeId,item.getLanguageCode()));
item.setFiles(productTypeFileService.getInfo(typeId, item.getLanguageCode()));
});
return new ProductTypeInfoVO()
.setId(info.getId())
@ -308,12 +295,12 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
@Override
public ProductTypeLanguageInfoVO getInfoByLanguage(String typeNumber, String language) {
return productTypeInfoService.getInfoByLanguage(typeNumber,language);
return productTypeInfoService.getInfoByLanguage(typeNumber, language);
}
@Override
public List<ProductTypeSimpleVO> getSimpleListByLanguage(String batchNumber, String language) {
return baseMapper.getSimpleListByLanguage(batchNumber,language);
return baseMapper.getSimpleListByLanguage(batchNumber, language);
}
@Override
@ -321,14 +308,14 @@ public class ProductTypeServiceImpl extends ServiceImpl<ProductTypeMapper, Produ
return baseMapper.searchSimpleList(request,language);
}
private void delete(Integer typeId){
ProductType info=getById(typeId);
private void delete(Integer typeId) {
ProductType info = getById(typeId);
removeById(typeId);
productTypeInfoService.delete(Collections.singletonList(typeId));
productTypeFileService.delete(Collections.singletonList(typeId));
if(!lambdaQuery()
if (!lambdaQuery()
.eq(ProductType::getSeriesNumber, info.getSeriesNumber())
.exists()){
.exists()) {
log.info("删除对应的设备机型数据");
productModelService.deleteByParent(info.getBatchNumber());
}