| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package com.izouma.nineth.web;
- import com.izouma.nineth.enums.OperationType;
- import com.izouma.nineth.exception.BusinessException;
- import com.izouma.nineth.service.CacheService;
- import com.izouma.nineth.service.CollectionService;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.util.Objects;
- @RestController
- @RequestMapping("/cache")
- @AllArgsConstructor
- @Slf4j
- public class CacheController {
- private final CacheService cacheService;
- private final CollectionService collectionService;
- @RequestMapping("/clear")
- @PreAuthorize("hasRole('ADMIN')")
- public void clear(String name, String stringParam, Long longParam) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
- Method method;
- if (StringUtils.isNotEmpty(stringParam)) {
- method = CacheService.class.getMethod("clear" + StringUtils.capitalize((name)), String.class);
- method.invoke(cacheService, stringParam);
- } else if (longParam != null) {
- method = CacheService.class.getMethod("clear" + StringUtils.capitalize((name)), Long.class);
- method.invoke(cacheService, longParam);
- } else {
- method = CacheService.class.getMethod("clear" + StringUtils.capitalize((name)));
- method.invoke(cacheService);
- }
- }
- @PostMapping(value = "/operating/{collectionId}/{num}/{operationType}")
- public void operatingStockOrSale(@PathVariable Long collectionId, @PathVariable int num, @PathVariable OperationType operationType) {
- if (Objects.isNull(collectionId)) {
- throw new BusinessException("collectionId参数错误");
- }
- if (0 >= num) {
- throw new BusinessException("num参数错误");
- }
- if (Objects.isNull(operationType)) {
- throw new BusinessException("操作类型不可为空");
- }
- switch (operationType) {
- case INCREASE_STOCK:
- log.info(String.format("collectionId:[%S] 加库存:[%S]", collectionId, num));
- collectionService.increaseStock(collectionId, num);
- break;
- case DECREASE_STOCK:
- log.info(String.format("collectionId:[%S] 减库存:[%S]", collectionId, num));
- collectionService.decreaseStock(collectionId, num);
- break;
- case INCREASE_SALE:
- log.info(String.format("collectionId:[%S] 加销量:[%S]", collectionId, num));
- collectionService.increaseSale(collectionId, num);
- break;
- case DECREASE_SALE:
- log.info(String.format("collectionId:[%S] 减销量:[%S]", collectionId, num));
- collectionService.decreaseSale(collectionId, num);
- break;
- default:
- String err = String.format("暂不支持的操作类型:[%S]", operationType);
- log.info(err);
- throw new BusinessException(err);
- }
- }
- }
|