Merge branch 'feature/product' into test

This commit is contained in:
曹鹏飞 2025-08-12 14:41:20 +08:00
commit 14ba6d095e
6 changed files with 62 additions and 37 deletions

View File

@ -15,7 +15,10 @@ import com.nflg.mobilebroken.common.pojo.PageData;
import com.nflg.mobilebroken.common.pojo.dto.ProductModelParamsExcelDTO;
import com.nflg.mobilebroken.common.pojo.request.*;
import com.nflg.mobilebroken.common.pojo.vo.*;
import com.nflg.mobilebroken.common.util.*;
import com.nflg.mobilebroken.common.util.AdminUserUtil;
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.repository.entity.*;
import com.nflg.mobilebroken.repository.service.*;
import lombok.extern.slf4j.Slf4j;
@ -931,7 +934,7 @@ public class ProductModelController extends ControllerBase{
* @param request 请求参数
*/
@PostMapping("/publishFile")
public ApiResult<Void> publishFile(@Valid @RequestBody ProductPublishRequest request){
public ApiResult<Void> publishFile(@Valid @RequestBody ProductModelPublishRequest request) {
productModelFileService.publish(request);
return ApiResult.success();
}

View File

@ -0,0 +1,20 @@
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 ProductModelPublishRequest {
@NotEmpty
private List<Integer> ids;
/**
* 发布状态1发布2取消发布
*/
@NotNull
private Integer state;
}

View File

@ -31,7 +31,7 @@ public interface IProductModelFileService extends IService<ProductModelFile> {
void delete(@Valid BatchDeleteRequest request);
void publish(@Valid ProductPublishRequest request);
void publish(@Valid ProductModelPublishRequest request);
IPage<ProductModelFile> getList(@Valid ProductModelImageSearchRequest request);

View File

@ -131,27 +131,27 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
removeByIds(request.getIds());
}
@Transactional
@Override
public void publish(ProductPublishRequest request) {
ProductModelFile info = getById(request.getId());
VUtils.trueThrowBusinessError(Objects.isNull(info)).throwMessage("无效的数据");
VUtils.trueThrowBusinessError(Objects.equals(info.getState(), request.getState()))
.throwMessage("请勿重复操作");
public void publish(ProductModelPublishRequest request) {
List<ProductModelFile> datas = listByIds(request.getIds());
datas.removeIf(item -> !item.getEnable());
datas.forEach(info -> {
if (!Objects.equals(info.getState(), request.getState())) {
if (Objects.equals(request.getState(), PublishState.Published.getState())) {
VUtils.trueThrowBusinessError(!info.getEnable()).throwMessage("不能发布已禁用的数据");
info.setState(PublishState.Published.getState());
info.setPublishBy(AdminUserUtil.getUserName());
info.setPublishTime(LocalDateTime.now());
lambdaUpdate()
.set(ProductModelFile::getState, PublishState.Obsolete.getState())
.eq(ProductModelFile::getModelId, info.getModelId())
.eq(ProductModelFile::getBatchNumber,info.getBatchNumber())
.eq(ProductModelFile::getBatchNumber, info.getBatchNumber())
.eq(ProductModelFile::getState, PublishState.Published.getState())
.update();
} else {
ProductModelFile obsolete = lambdaQuery()
.eq(ProductModelFile::getModelId, info.getModelId())
.eq(ProductModelFile::getBatchNumber,info.getBatchNumber())
.eq(ProductModelFile::getBatchNumber, info.getBatchNumber())
.eq(ProductModelFile::getState, PublishState.Obsolete.getState())
.orderByDesc(ProductModelFile::getPublishTime)
.last("Limit 1")
@ -166,6 +166,8 @@ public class ProductModelFileServiceImpl extends ServiceImpl<ProductModelFileMap
}
updateById(info);
}
});
}
@Override
public IPage<ProductModelFile> getList(ProductModelImageSearchRequest request) {

View File

@ -10,7 +10,7 @@
</select>
<select id="getListByDictionaryCode" resultType="com.nflg.mobilebroken.repository.entity.DictionaryItem">
SELECT ifnull(dit.value,di.`name`) as 'name',di.*
SELECT fun_isBlank(dit.value,di.`name`) as 'name',di.*
FROM dictionary d
INNER JOIN dictionary_item di ON d.id=di.dictionary_id
LEFT JOIN dictionary_item_translate dit ON dit.dictionary_item_id=di.id and dit.language_code=#{language}

View File

@ -69,7 +69,7 @@
<select id="getFilesByLanguage" resultType="com.nflg.mobilebroken.common.pojo.vo.ProductFileVO">
SELECT ptf.*
FROM product_type pt
LEFT JOIN product_type_file ptf ON ptf.type_id=pt.id AND ptf.language_code=#{language}
INNER JOIN product_type_file ptf ON ptf.type_id=pt.id AND ptf.language_code=#{language}
WHERE pt.state=1 AND pt.enable=1 AND pt.module_id=#{moduleId}
<if test="seriesNumber != null and seriesNumber!=''">
AND pt.series_number=#{seriesNumber}