Update SpecController.java

cyj
pbvfus8to 8 months ago
parent adff03961d
commit c7b45e47d3

@ -31,95 +31,137 @@ import java.util.Objects;
/**
*
*
* idid
* @author lgh
*/
@RestController
@RequestMapping("/prod/spec")
public class SpecController {
// 通过Spring的自动注入机制注入ProdPropService对象用于调用业务层处理商品属性相关的业务逻辑
@Autowired
private ProdPropService prodPropService;
// 通过Spring的自动注入机制注入ProdPropValueService对象用于调用业务层处理商品属性值相关的业务逻辑
@Autowired
private ProdPropValueService prodPropValueService;
/**
*
*
*
* @param prodProp
* @param page
* @return ServerResponseEntity<IPage<ProdProp>>
*/
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('prod:spec:page')")
public ServerResponseEntity<IPage<ProdProp>> page(ProdProp prodProp,PageParam<ProdProp> page) {
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'prod:spec:page'权限的用户才能访问该接口
public ServerResponseEntity<IPage<ProdProp>> page(ProdProp prodProp, PageParam<ProdProp> page) {
// 设置规格的规则为指定的规格类型SPEC这里通过枚举值来表示
prodProp.setRule(ProdPropRule.SPEC.value());
// 设置规格所属店铺的id从当前登录用户信息中获取
prodProp.setShopId(SecurityUtils.getSysUser().getShopId());
// 调用业务层方法获取规格以及对应规格值的分页数据具体逻辑由业务层的pagePropAndValue方法决定
IPage<ProdProp> list = prodPropService.pagePropAndValue(prodProp, page);
return ServerResponseEntity.success(list);
}
/**
*
*
*
* @return ServerResponseEntity<List<ProdProp>>
*/
@GetMapping("/list")
public ServerResponseEntity<List<ProdProp>> list() {
List<ProdProp> list = prodPropService.list(new LambdaQueryWrapper<ProdProp>().eq(ProdProp::getRule, ProdPropRule.SPEC.value()).eq(ProdProp::getShopId, SecurityUtils.getSysUser().getShopId()));
// 使用MyBatis Plus的LambdaQueryWrapper构建查询条件筛选出规则为指定规格类型SPEC且属于当前登录用户店铺的规格信息
List<ProdProp> list = prodPropService.list(new LambdaQueryWrapper<ProdProp>()
.eq(ProdProp::getRule, ProdPropRule.SPEC.value())
.eq(ProdProp::getShopId, SecurityUtils.getSysUser().getShopId()));
return ServerResponseEntity.success(list);
}
/**
* id
* id
* id
* @param specId id
* @return ServerResponseEntity<List<ProdPropValue>>id
*/
@GetMapping("/listSpecValue/{specId}")
public ServerResponseEntity<List<ProdPropValue>> listSpecValue(@PathVariable("specId") Long specId) {
List<ProdPropValue> list = prodPropValueService.list(new LambdaQueryWrapper<ProdPropValue>().eq(ProdPropValue::getPropId, specId));
// 使用MyBatis Plus的LambdaQueryWrapper构建查询条件筛选出属性id即规格id为传入specId的规格值信息
List<ProdPropValue> list = prodPropValueService.list(new LambdaQueryWrapper<ProdPropValue>()
.eq(ProdPropValue::getPropId, specId));
return ServerResponseEntity.success(list);
}
/**
*
*
*
* @param prodProp
* @return ServerResponseEntity<Void>
*/
@PostMapping
@PreAuthorize("@pms.hasPermission('prod:spec:save')")
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'prod:spec:save'权限的用户才能访问该接口
public ServerResponseEntity<Void> save(@Valid @RequestBody ProdProp prodProp) {
// 设置规格的规则为指定的规格类型SPEC这里通过枚举值来表示
prodProp.setRule(ProdPropRule.SPEC.value());
// 设置规格所属店铺的id从当前登录用户信息中获取
prodProp.setShopId(SecurityUtils.getSysUser().getShopId());
// 调用业务层方法保存规格以及对应的规格值信息具体逻辑由业务层的saveProdPropAndValues方法决定
prodPropService.saveProdPropAndValues(prodProp);
return ServerResponseEntity.success();
}
/**
*
*
*
* @param prodProp
* @return ServerResponseEntity<Void>
*/
@PutMapping
@PreAuthorize("@pms.hasPermission('prod:spec:update')")
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'prod:spec:update'权限的用户才能访问该接口
public ServerResponseEntity<Void> update(@Valid @RequestBody ProdProp prodProp) {
// 根据传入的规格id从数据库中获取对应的规格对象用于后续权限校验等操作
ProdProp dbProdProp = prodPropService.getById(prodProp.getPropId());
if (!Objects.equals(dbProdProp.getShopId(), SecurityUtils.getSysUser().getShopId())) {
// 如果当前登录用户所属店铺id与要修改的规格所属店铺id不一致则抛出异常提示没有权限获取该商品规格信息
throw new YamiShopBindException("没有权限获取该商品规格信息");
}
// 设置规格的规则为指定的规格类型SPEC这里通过枚举值来表示
prodProp.setRule(ProdPropRule.SPEC.value());
// 设置规格所属店铺的id从当前登录用户信息中获取
prodProp.setShopId(SecurityUtils.getSysUser().getShopId());
// 调用业务层方法更新规格以及对应的规格值信息具体逻辑由业务层的updateProdPropAndValues方法决定
prodPropService.updateProdPropAndValues(prodProp);
return ServerResponseEntity.success();
}
/**
*
*
* id
* @param id id
* @return ServerResponseEntity<Void>
*/
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('prod:spec:delete')")
// 使用 @PreAuthorize 注解进行权限校验,只有拥有'prod:spec:delete'权限的用户才能访问该接口
public ServerResponseEntity<Void> delete(@PathVariable Long id) {
// 调用业务层方法删除规格以及对应的规格值信息传入规格id、规格规则类型以及当前登录用户所属店铺id等参数具体逻辑由业务层的deleteProdPropAndValues方法决定
prodPropService.deleteProdPropAndValues(id, ProdPropRule.SPEC.value(), SecurityUtils.getSysUser().getShopId());
return ServerResponseEntity.success();
}
/**
* id
* id
* id
* @return ServerResponseEntity<Long>id0L
*/
@GetMapping("/listSpecMaxValueId")
public ServerResponseEntity<Long> listSpecMaxValueId() {
// 使用MyBatis Plus的LambdaQueryWrapper构建查询条件按照规格值的自增id降序排列并通过last方法限制只取第一条记录即获取最大的自增id对应的规格值对象
ProdPropValue propValue = prodPropValueService.getOne(new LambdaQueryWrapper<ProdPropValue>()
.orderByDesc(ProdPropValue::getValueId).last("limit 1"));
return ServerResponseEntity.success(Objects.isNull(propValue) ? 0L : propValue.getValueId());
.orderByDesc(ProdPropValue::getValueId).last("limit 1"));
return ServerResponseEntity.success(Objects.isNull(propValue)? 0L : propValue.getValueId());
}
}
}
Loading…
Cancel
Save