Skip to content
This repository has been archived by the owner on Mar 4, 2022. It is now read-only.

Commit

Permalink
add product
Browse files Browse the repository at this point in the history
  • Loading branch information
itning committed Feb 14, 2020
1 parent 31ed25f commit 48ff960
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;

/**
* 商品控制器
*
Expand Down Expand Up @@ -118,4 +120,31 @@ public ResponseEntity<?> modify(@MustAdminLogin LoginUser loginUser,
commodityService.modify(commodity);
return RestModel.noContent();
}

/**
* 添加商品
*
* @param loginUser 登录用户
* @param name 标题
* @param price 价格
* @param stock 库存
* @param recommended 推荐商品
* @param commodityTypeId 商品分类ID
* @param imgMain 主图
* @param imgSecond 副图
* @param detail 商品详情
* @return ResponseEntity
*/
@PostMapping("/admin")
public ResponseEntity<?> add(@MustAdminLogin LoginUser loginUser,
@RequestParam String name,
@RequestParam BigDecimal price,
@RequestParam BigDecimal stock,
@RequestParam boolean recommended,
@RequestParam String commodityTypeId,
@RequestParam String imgMain,
@RequestParam String imgSecond,
@RequestParam(required = false) String detail) {
return RestModel.created(commodityService.add(name, price, stock.intValue(), recommended, commodityTypeId, imgMain, imgSecond, detail));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.math.BigDecimal;
import java.util.List;

/**
Expand Down Expand Up @@ -59,4 +60,19 @@ public interface CommodityService {
* @param commodity 商品
*/
void modify(CommodityDTO commodity);

/**
* 添加商品
*
* @param name 标题
* @param price 价格
* @param stock 库存
* @param recommended 推荐商品
* @param commodityTypeId 商品分类ID
* @param imgMain 主图
* @param imgSecond 副图
* @param detail 商品详情
* @return 商品
*/
Commodity add(String name, BigDecimal price, int stock, boolean recommended, String commodityTypeId, String imgMain, String imgSecond, String detail);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import com.sport.sportsmailserver.dto.CommodityDTO;
import com.sport.sportsmailserver.entity.Commodity;
import com.sport.sportsmailserver.entity.CommodityDetail;
import com.sport.sportsmailserver.entity.CommodityType;
import com.sport.sportsmailserver.exception.IdNotFoundException;
import com.sport.sportsmailserver.exception.NullFiledException;
import com.sport.sportsmailserver.exception.SecurityServerException;
import com.sport.sportsmailserver.repository.CommodityDetailRepository;
import com.sport.sportsmailserver.repository.CommodityRepository;
import com.sport.sportsmailserver.repository.CommodityTypeRepository;
import com.sport.sportsmailserver.service.CommodityService;
Expand All @@ -17,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

Expand All @@ -27,13 +30,17 @@
@Service
@Transactional(rollbackFor = Exception.class)
public class CommodityServiceImpl implements CommodityService {
private static final String SECOND_IMG_SUFFIX = ";";

private final CommodityRepository commodityRepository;
private final CommodityTypeRepository commodityTypeRepository;
private final CommodityDetailRepository commodityDetailRepository;

@Autowired
public CommodityServiceImpl(CommodityRepository commodityRepository, CommodityTypeRepository commodityTypeRepository) {
public CommodityServiceImpl(CommodityRepository commodityRepository, CommodityTypeRepository commodityTypeRepository, CommodityDetailRepository commodityDetailRepository) {
this.commodityRepository = commodityRepository;
this.commodityTypeRepository = commodityTypeRepository;
this.commodityDetailRepository = commodityDetailRepository;
}

@Override
Expand Down Expand Up @@ -105,7 +112,10 @@ public void modify(CommodityDTO commodity) {
// 7.副图片变
if (commodity.getImgSecond() != null) {
try {
String[] split = commodity.getImgSecond().split(";");
if (commodity.getImgSecond().endsWith(SECOND_IMG_SUFFIX)) {
commodity.setImgSecond(commodity.getImgSecond().substring(0, commodity.getImgSecond().length() - 1));
}
String[] split = commodity.getImgSecond().split(SECOND_IMG_SUFFIX);
System.out.println(Arrays.toString(split));
} catch (Exception e) {
throw new SecurityServerException("副图片格式错误", HttpStatus.BAD_REQUEST);
Expand All @@ -119,4 +129,44 @@ public void modify(CommodityDTO commodity) {
}
commodityRepository.save(saved);
}

@Override
public Commodity add(String name, BigDecimal price, int stock, boolean recommended, String commodityTypeId, String imgMain, String imgSecond, String detail) {
if (StringUtils.isAnyBlank(name, commodityTypeId, imgMain, imgSecond, detail)) {
throw new NullFiledException("字段为空");
}
if (price.intValue() < 0) {
throw new SecurityServerException("价格不能为负数", HttpStatus.BAD_REQUEST);
}
if (stock < 0) {
throw new SecurityServerException("库存不能为负数", HttpStatus.BAD_REQUEST);
}
try {
if (imgSecond.endsWith(SECOND_IMG_SUFFIX)) {
imgSecond = imgSecond.substring(0, imgSecond.length() - 1);
}
String[] split = imgSecond.split(SECOND_IMG_SUFFIX);
System.out.println(Arrays.toString(split));
} catch (Exception e) {
throw new SecurityServerException("副图片格式错误", HttpStatus.BAD_REQUEST);
}
CommodityType commodityType = commodityTypeRepository.findById(commodityTypeId).orElseThrow(() -> new IdNotFoundException("商品分类不存在"));
Commodity commodity = new Commodity();
commodity.setName(name);
commodity.setStock(stock);
commodity.setSales(0);
commodity.setPrice(price);
commodity.setImgMain(imgMain);
commodity.setImgSecond(imgSecond);
commodity.setRecommended(recommended);
commodity.setTakeOff(false);
commodity.setCommodityType(commodityType);
Commodity saved = commodityRepository.save(commodity);

CommodityDetail commodityDetail = new CommodityDetail();
commodityDetail.setCommodity(saved);
commodityDetail.setDetail(detail);
commodityDetailRepository.save(commodityDetail);
return saved;
}
}

0 comments on commit 48ff960

Please sign in to comment.