電商項目——初識電商——第一章——上篇
電商項目——分布式基礎概念和電商項目微服務架構圖,劃分圖的詳解——第二章——上篇
電商項目——電商項目的虛拟機環境搭建_VirtualBox,Vagrant——第三章——上篇
電商項目——Linux虛拟機中安裝docker,mysql,redis_VirtualBox——第四章——上篇
電商項目——電商項目的環境搭建_開發工具&環境搭建——第五章——上篇
電商項目——快速開發人人開源搭建背景管理系統&代碼生成器逆向工程搭建——第六章——上篇
電商項目——分布式元件(SpringCloud Alibaba,SpringCloud)——第七章——上篇
電商項目——前端基礎——第八章——上篇
電商項目——商品服務-API-三級分類——第九章——上篇
電商項目——商品服務-API-品牌管理——第十章——上篇
電商項目——商品服務-API-屬性分組——第十一章——上篇
電商項目——商品服務-API-品牌管理——第十二章——上篇
電商項目——商品服務-API-平台屬性——第十三章——上篇
電商項目——商品服務-API-新增商品——第十四章——上篇
電商項目——商品服務-API-商品管理——第十五章——上篇
電商項目——商品服務-API-倉庫管理——第十六章——上篇
文章目錄
- 1:整合ware服務&建立采購需求
- 2:查詢庫存&建立采購需求
- 3:合并采購需求
- 4:領取采購單
- 5:完成采購
- 6:商品管理-SPU規格維護
1:整合ware服務&建立采購需求
WareInfoController
@RestController
@RequestMapping("ware/wareinfo")
public class WareInfoController {
@Autowired
private WareInfoService wareInfoService;
/**
* 清單
*/
@RequestMapping("/list")
//@RequiresPermissions("ware:wareinfo:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = wareInfoService.queryPageByCondition(params);
return R.ok().put("page", page);
}
WareInfoServiceImpl
@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
QueryWrapper<WareInfoEntity> wrapper = new QueryWrapper<>();
String key = (String) params.get("key");
if (!StringUtils.isEmpty(key)){
wrapper.eq("id",key).or().like("name",key).or().like("address",key).or().like("areacode",key);
}
IPage<WareInfoEntity> page = this.page(
new Query<WareInfoEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}
2:查詢庫存&建立采購需求
WareSkuController
@RestController
@RequestMapping("ware/waresku")
public class WareSkuController {
@Autowired
private WareSkuService wareSkuService;
/**
* 清單
*/
@RequestMapping("/list")
//@RequiresPermissions("ware:waresku:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = wareSkuService.queryPageByCondition(params);
return R.ok().put("page", page);
}
WareSkuServiceImpl
/**
* {
page: 1,//目前頁碼
limit: 10,//每頁記錄數
sidx: 'id',//排序字段
order: 'asc/desc',//排序方式
wareId: 123,//倉庫id
skuId: 123//商品id
}
* @param params
* @return
*/
@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
QueryWrapper<WareSkuEntity> wrapper = new QueryWrapper<>();
String wareId = (String) params.get("wareId");
if (!StringUtils.isEmpty(wareId)){
wrapper.eq("ware_Id",wareId);
}
String skuId = (String) params.get("skuId");
if (!StringUtils.isEmpty(skuId)){
wrapper.eq("sku_Id",skuId);
}
IPage<WareSkuEntity> page = this.page(
new Query<WareSkuEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
}
PurchaseDetailController
@RestController
@RequestMapping("ware/purchasedetail")
public class PurchaseDetailController {
@Autowired
private PurchaseDetailService purchaseDetailService;
/**
* 清單
*/
@RequestMapping("/list")
//@RequiresPermissions("ware:purchasedetail:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = purchaseDetailService.queryPageByCondition(params);
return R.ok().put("page", page);
}
PurchaseDetailServiceImpl
3:合并采購需求
前面我們建立了兩個采購需求,接下來,我們要将這兩個采購需求進行合并,成采購單
第一步:完成合并采購單功能
PurchaseController
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 清單
*/
@RequestMapping("/unreceive/list")
//@RequiresPermissions("ware:purchase:list")
public R unreceiveList(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPageUnreceiveList(params);
return R.ok().put("page", page);
}
PurchaseServiceImpl
@Override
public PageUtils queryPageUnreceiveList(Map<String, Object> params) {
QueryWrapper<PurchaseEntity> wrapper = new QueryWrapper<>();
//查詢出1,0的資料為status
wrapper.eq("status",0).or().eq("status",1);
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),wrapper
);
return new PageUtils(page);
}
PurchaseController
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
@RequestMapping("/merge")
//@RequiresPermissions("ware:purchase:list")
public R merge(@RequestBody MergeVo mergeVo){
purchaseService.merge(mergeVo);
return R.ok();
}
PurchaseServiceImpl
@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {
@Autowired
PurchaseDetailService purchaseDetailService;
@Transactional
@Override
public void merge(MergeVo mergeVo) {
Long purchaseId = mergeVo.getPurchaseId();
if (purchaseId==null){
PurchaseEntity purchaseEntity=new PurchaseEntity();
purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.CREATE.getCode());
purchaseEntity.setUpdateTime(new Date());
purchaseEntity.setUpdateTime(new Date());
this.save(purchaseEntity);
Long purchaseEntityId = purchaseEntity.getId();
}
List<Long> items=mergeVo.getItems();
Long finalPurchaseEntityId=purchaseId;
List<PurchaseDetailEntity> collect = items.stream().map(i -> {
PurchaseDetailEntity purchaseEntity = new PurchaseDetailEntity();
purchaseEntity.setStatus(WareConstant.PurchaseDetailsStatusEnum.ASSIGEND.getCode());
purchaseEntity.setPurchaseId(finalPurchaseEntityId);
purchaseEntity.setId(i);
return purchaseEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(collect);
}
4:領取采購單
PurchaseController
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 領取采購單
* @param ids
* @return
*/
///ware/purchase/received
public R received(@RequestBody List<Long> ids){
purchaseService.received(ids);
return R.ok();
}
PurchaseServiceImpl
/**
*
* @param ids 采購單id
*/
@Override
public void received(List<Long> ids) {
//1:确認目前采購單是建立或者已配置設定狀态
//把采購單的詳細資訊查出來
List<PurchaseEntity> purchaseEntities = ids.stream().map(id -> {
PurchaseEntity byId = this.getById(id);
return byId;
}).filter(item->{
if (item.getStatus()==WareConstant.PurchaseStatusEnum.CREATE.getCode()||
item.getStatus()==WareConstant.PurchaseStatusEnum.ASSIGEND.getCode() ){
return true;
}
return false;
}).map(items->{
items.setStatus(WareConstant.PurchaseStatusEnum.RECEIVE.getCode());
items.setUpdateTime(new Date());
return items;
}).collect(Collectors.toList());
//2:改變采購單的狀态
this.updateBatchById(purchaseEntities);
//3:改變采購項的狀态
purchaseEntities.forEach((item->{
List<PurchaseDetailEntity> entities= purchaseDetailService.listDetailByPurchaseId(item.getId());
List<PurchaseDetailEntity> purchaseDetailEntities = entities.stream().map(entitiess -> {
PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity();
purchaseDetailEntity.setId(entitiess.getId());
purchaseDetailEntity.setStatus(WareConstant.PurchaseDetailsStatusEnum.BUYING.getCode());
return purchaseDetailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(purchaseDetailEntities);
}));
}
5:完成采購
6:商品管理-SPU規格維護
AttrController
@RestController
@RequestMapping("product/attr")
public class AttrController {
@Autowired
private AttrService attrService;
@Autowired
ProductAttrValueService productAttrValueService;
@GetMapping("/base/listforspu/{spuId}")
public R baseAttrlistforspu(@PathVariable("spuId") Long spuId){
List<ProductAttrValueEntity> entities= productAttrValueService.baseAttrlistforspu(spuId);
return R.ok().put("data",entities);
}
ProductAttrValueServiceImpl
@Override
public List<ProductAttrValueEntity> baseAttrlistforspu(Long spuId) {
List<ProductAttrValueEntity> entities = this.baseMapper.selectList(new QueryWrapper<ProductAttrValueEntity>().eq("spu_id", spuId));
return entities;
}
AttrController
@PostMapping("/update/{spuId}")
// @RequiresPermissions("product:attr:update")
public R updateSpuAttr(@RequestBody List<ProductAttrValueEntity> attr,@PathVariable("spuId") Long spuId){
productAttrValueService.updateSpuAttr(spuId,attr);
return R.ok();
}
ProductAttrValueServiceImpl
@Transactional
@Override
public void updateSpuAttr(Long spuId, List<ProductAttrValueEntity> attr) {
//1:删除這個spuId之前對應的所有屬性
this.baseMapper.delete(new QueryWrapper<ProductAttrValueEntity>().eq("spu_id",spuId));
List<ProductAttrValueEntity> collect = attr.stream().map(item -> {
item.setSpuId(spuId);
return item;
}).collect(Collectors.toList());
this.saveBatch(collect);
}