修改goods和order模块
This commit is contained in:
parent
114840f26d
commit
bc3b62dd96
BIN
null/download/0e2d25a8f9d149f3ab4c445324053c02_品牌管理数据.xlsx
Normal file
BIN
null/download/0e2d25a8f9d149f3ab4c445324053c02_品牌管理数据.xlsx
Normal file
Binary file not shown.
BIN
null/download/1270f8e502594e65ad824f60a1143fec_订单发货记录数据.xlsx
Normal file
BIN
null/download/1270f8e502594e65ad824f60a1143fec_订单发货记录数据.xlsx
Normal file
Binary file not shown.
BIN
null/download/1bd4d07992404cfeb22b56531008c55c_订单操作历史记录数据.xlsx
Normal file
BIN
null/download/1bd4d07992404cfeb22b56531008c55c_订单操作历史记录数据.xlsx
Normal file
Binary file not shown.
BIN
null/download/58daf39a34a0464fbe04e2ce4ed6f64b_订单中所包含的商品数据.xlsx
Normal file
BIN
null/download/58daf39a34a0464fbe04e2ce4ed6f64b_订单中所包含的商品数据.xlsx
Normal file
Binary file not shown.
BIN
null/download/65f1eb5e9b024c058352c617c95c4fc7_微信订单表数据.xlsx
Normal file
BIN
null/download/65f1eb5e9b024c058352c617c95c4fc7_微信订单表数据.xlsx
Normal file
Binary file not shown.
BIN
null/download/6b5ae4bf0f974ac1b92e66c246a0dbce_订单售后数据.xlsx
Normal file
BIN
null/download/6b5ae4bf0f974ac1b92e66c246a0dbce_订单售后数据.xlsx
Normal file
Binary file not shown.
@ -144,6 +144,19 @@ tenant:
|
||||
- ums_member_account
|
||||
- ums_member_logininfor
|
||||
- ums_member_cart
|
||||
- oms_aftersale
|
||||
- oms_aftersale_item
|
||||
- oms_order
|
||||
- oms_order_delivery_history
|
||||
- oms_order_item
|
||||
- oms_order_operate_history
|
||||
- oms_wechat_payment_history
|
||||
- pms_brand
|
||||
- pms_product
|
||||
- pms_product_category
|
||||
- pms_product_snapshot
|
||||
- pms_sku
|
||||
- pms_sku_snapshot
|
||||
|
||||
# MyBatisPlus配置
|
||||
# https://baomidou.com/config/
|
||||
|
@ -1,5 +1,7 @@
|
||||
package org.dromara.common.core.utils.file;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
/**
|
||||
* 媒体类型工具类
|
||||
*
|
||||
@ -37,4 +39,29 @@ public class MimeTypeUtils {
|
||||
// pdf
|
||||
"pdf"};
|
||||
|
||||
|
||||
public static String getExtension(String prefix)
|
||||
{
|
||||
switch (prefix)
|
||||
{
|
||||
case IMAGE_PNG:
|
||||
return "png";
|
||||
case IMAGE_JPG:
|
||||
return "jpg";
|
||||
case IMAGE_JPEG:
|
||||
return "jpeg";
|
||||
case IMAGE_BMP:
|
||||
return "bmp";
|
||||
case IMAGE_GIF:
|
||||
return "gif";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isImg(String contentType) {
|
||||
String ext = MimeTypeUtils.getExtension(contentType);
|
||||
return StrUtil.isNotEmpty(ext);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,6 @@
|
||||
package org.dromara.common.web.core;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.mapstruct.MapperConfig;
|
||||
|
||||
import java.util.List;
|
||||
@ -19,6 +16,7 @@ public interface BaseConverter<V,B,T> {
|
||||
|
||||
/**
|
||||
* dto列表转vo
|
||||
*
|
||||
* @param tList
|
||||
* @return
|
||||
*/
|
||||
|
@ -1,21 +1,22 @@
|
||||
package com.wzj.soopin.goods.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.BrandConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.BrandBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.query.BrandQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.BrandVO;
|
||||
import com.wzj.soopin.goods.service.BrandService;
|
||||
import com.wzj.soopin.goods.service.impl.BrandServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -31,55 +32,51 @@ import java.util.List;
|
||||
@RequestMapping("/pms/brand")
|
||||
public class BrandController extends BaseController {
|
||||
@Autowired
|
||||
private BrandService service;
|
||||
private BrandServiceImpl service;
|
||||
@Autowired
|
||||
private BrandConvert convert;
|
||||
|
||||
// @ApiOperation("查询品牌管理列表")
|
||||
// @PostMapping("/list")
|
||||
// public ResponseEntity<Page<Brand>> list(@RequestBody BrandQuery query, Pageable page) {
|
||||
// List<Brand> list = service.selectList(query, page);
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("所有品牌管理列表")
|
||||
@PostMapping("/all")
|
||||
public ResponseEntity<List<Brand>> all(@RequestBody BrandQuery query) {
|
||||
return ResponseEntity.ok(service.selectList(query, null));
|
||||
@PostMapping("list")
|
||||
public R<Page<BrandVO>> list(@RequestBody BrandBo query, Page<Brand> page) {
|
||||
Page<Brand> brandPage = service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO(brandPage));
|
||||
}
|
||||
|
||||
@ApiOperation("导出品牌管理列表")
|
||||
@Log(title = "品牌管理", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(BrandQuery query) {
|
||||
List<Brand> list = service.selectList(query, null);
|
||||
ExcelUtil<BrandVO> util = new ExcelUtil(BrandVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "品牌管理数据"));
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(BrandBo query) {
|
||||
List<Brand> list = service.list(query.toWrapper());
|
||||
ExcelUtil<BrandVO> util = new ExcelUtil<>(BrandVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "品牌管理数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取品牌管理详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<Brand> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增品牌管理")
|
||||
@Log(title = "品牌管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody Brand brand) {
|
||||
return ResponseEntity.ok(service.insert(brand));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody Brand brand) {
|
||||
return R.ok(service.save(brand));
|
||||
}
|
||||
|
||||
@ApiOperation("修改品牌管理")
|
||||
@Log(title = "品牌管理", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody Brand brand) {
|
||||
return ResponseEntity.ok(service.update(brand));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody Brand brand) {
|
||||
return R.ok(service.updateById(brand));
|
||||
}
|
||||
|
||||
@ApiOperation("删除品牌管理")
|
||||
@Log(title = "品牌管理", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,18 @@
|
||||
package com.wzj.soopin.goods.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.ProductCategoryConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.BrandBo;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductCategoryBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.query.ProductCategoryQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.BrandVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import com.wzj.soopin.goods.service.ProductCategoryService;
|
||||
import com.wzj.soopin.goods.service.impl.ProductCategoryServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
@ -27,41 +33,41 @@ import java.util.List;
|
||||
@RequestMapping("/pms/productCategory")
|
||||
public class ProductCategoryController extends BaseController {
|
||||
@Autowired
|
||||
private ProductCategoryService service;
|
||||
private ProductCategoryServiceImpl service;
|
||||
@Autowired
|
||||
private ProductCategoryConvert convert;
|
||||
|
||||
@ApiOperation("查询商品分类列表")
|
||||
@PostMapping("/list")
|
||||
public ResponseEntity<List<ProductCategoryVO>> list(@RequestBody ProductCategoryQuery query) {
|
||||
List<ProductCategoryVO> list = service.selectList(query, null);
|
||||
return ResponseEntity.ok(list);
|
||||
@PostMapping("list")
|
||||
public R<Page<ProductCategoryVO>> list(@RequestBody ProductCategoryBo query, Page<ProductCategory> page) {
|
||||
Page<ProductCategory> productCategoryPage = service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO(productCategoryPage));
|
||||
}
|
||||
|
||||
@ApiOperation("获取商品分类详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<ProductCategory> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增商品分类")
|
||||
@Log(title = "商品分类", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody ProductCategory productCategory) {
|
||||
return ResponseEntity.ok(service.insert(productCategory));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody ProductCategory productCategory) {
|
||||
return R.ok(service.save(productCategory));
|
||||
}
|
||||
|
||||
@ApiOperation("修改商品分类")
|
||||
@Log(title = "商品分类", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody ProductCategory productCategory) {
|
||||
return ResponseEntity.ok(service.update(productCategory));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody ProductCategory productCategory) {
|
||||
return R.ok(service.updateById(productCategory));
|
||||
}
|
||||
|
||||
@ApiOperation("删除商品分类")
|
||||
@Log(title = "商品分类", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,27 @@
|
||||
package com.wzj.soopin.goods.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.BrandBo;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductBo;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductCategoryBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.query.ProductQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.BrandVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import com.wzj.soopin.goods.service.ProductService;
|
||||
import com.wzj.soopin.goods.service.impl.ProductServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -31,50 +37,52 @@ import java.util.List;
|
||||
@RequestMapping("/pms/product")
|
||||
public class ProductController extends BaseController {
|
||||
@Autowired
|
||||
private ProductService service;
|
||||
private ProductServiceImpl service;
|
||||
@Autowired
|
||||
private ProductConvert convert;
|
||||
|
||||
// @ApiOperation("查询商品信息列表")
|
||||
// @PostMapping("/list")
|
||||
// public ResponseEntity<Page<Product>> list(@RequestBody ProductQuery query, Pageable page) {
|
||||
// List<Product> list = service.selectList(query, page);
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
@ApiOperation("查询商品信息列表")
|
||||
@PostMapping("list")
|
||||
public R<Page<ProductVO>> list(@RequestBody ProductBo query, Page<Product> page) {
|
||||
Page<Product> productPage = service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO(productPage));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出商品信息列表")
|
||||
@Log(title = "商品信息", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(ProductQuery query) {
|
||||
List<Product> list = service.selectList(query, null);
|
||||
ExcelUtil<ProductVO> util = new ExcelUtil(ProductVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "商品信息数据"));
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(ProductBo query) {
|
||||
List<Product> list = service.list(query.toWrapper());
|
||||
ExcelUtil<ProductVO> util = new ExcelUtil<>(ProductVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "商品信息数据"));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取商品信息详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<ProductVO> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增商品信息")
|
||||
@Log(title = "商品信息", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody ProductVO product) {
|
||||
return ResponseEntity.ok(service.insert(product));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody Product product) {
|
||||
return R.ok(service.save(product));
|
||||
}
|
||||
|
||||
@ApiOperation("修改商品信息")
|
||||
@Log(title = "商品信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody ProductVO product) {
|
||||
return ResponseEntity.ok(service.update(product));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody Product product) {
|
||||
return R.ok(service.updateById(product));
|
||||
}
|
||||
|
||||
@ApiOperation("删除商品信息")
|
||||
@Log(title = "商品信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,23 @@
|
||||
package com.wzj.soopin.goods.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.SkuConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductBo;
|
||||
import com.wzj.soopin.goods.domain.bo.SkuBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.query.SkuQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import com.wzj.soopin.goods.domain.vo.SkuVO;
|
||||
import com.wzj.soopin.goods.service.SkuService;
|
||||
import com.wzj.soopin.goods.service.impl.SkuServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -30,50 +33,52 @@ import java.util.List;
|
||||
@RequestMapping("/pms/sku")
|
||||
public class SkuController extends BaseController {
|
||||
@Autowired
|
||||
private SkuService service;
|
||||
private SkuServiceImpl service;
|
||||
@Autowired
|
||||
private SkuConvert convert;
|
||||
|
||||
// @ApiOperation("查询sku信息列表")
|
||||
// @PostMapping("/list")
|
||||
// public ResponseEntity<Page<Sku>> list(@RequestBody SkuQuery query, Pageable page) {
|
||||
// List<Sku> list = service.selectList(query, page);
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("查询商品信息列表")
|
||||
@PostMapping("list")
|
||||
public R<Page<SkuVO>> list(@RequestBody SkuBo query, Page<Sku> page) {
|
||||
Page<Sku> skuPage = service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO(skuPage));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出sku信息列表")
|
||||
@Log(title = "sku信息", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(SkuQuery query) {
|
||||
List<Sku> list = service.selectList(query, null);
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(SkuBo query) {
|
||||
List<Sku> list = service.list(query.toWrapper());
|
||||
ExcelUtil<SkuVO> util = new ExcelUtil<>(SkuVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "sku信息数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "sku信息数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取sku信息详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<Sku> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增sku信息")
|
||||
@Log(title = "sku信息", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody Sku sku) {
|
||||
return ResponseEntity.ok(service.insert(sku));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody Sku sku) {
|
||||
return R.ok(service.save(sku));
|
||||
}
|
||||
|
||||
@ApiOperation("修改sku信息")
|
||||
@Log(title = "sku信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody Sku sku) {
|
||||
return ResponseEntity.ok(service.update(sku));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody Sku sku) {
|
||||
return R.ok(service.updateById(sku));
|
||||
}
|
||||
|
||||
@ApiOperation("删除sku信息")
|
||||
@Log(title = "sku信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
package com.wzj.soopin.goods.convert;
|
||||
|
||||
import com.wzj.soopin.goods.domain.bo.BrandBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.vo.BrandVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -11,7 +13,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface BrandConvert {
|
||||
public interface BrandConvert extends BaseConverter<BrandVO, BrandBo,Brand> {
|
||||
|
||||
List<BrandVO> dos2vos(List<Brand> list);
|
||||
// List<BrandVO> dos2vos(List<Brand> list);
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.wzj.soopin.goods.convert;
|
||||
|
||||
import com.wzj.soopin.goods.domain.bo.ProductCategoryBo;
|
||||
import com.wzj.soopin.goods.domain.dto.CategoryDTO;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -12,9 +14,9 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ProductCategoryConvert {
|
||||
public interface ProductCategoryConvert extends BaseConverter<ProductCategoryVO, ProductCategoryBo, ProductCategory> {
|
||||
|
||||
List<ProductCategoryVO> dos2vos(List<ProductCategory> list);
|
||||
|
||||
CategoryDTO do2dto(ProductCategory it);
|
||||
// List<ProductCategoryVO> dos2vos(List<ProductCategory> list);
|
||||
//
|
||||
// CategoryDTO do2dto(ProductCategory it);
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
package com.wzj.soopin.goods.convert;
|
||||
|
||||
|
||||
import com.wzj.soopin.goods.domain.bo.ProductBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.vo.H5ProductVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -14,11 +16,11 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ProductConvert {
|
||||
public interface ProductConvert extends BaseConverter<ProductVO, ProductBo, Product> {
|
||||
|
||||
List<ProductVO> dos2vos(List<Product> list);
|
||||
Product vo2do(ProductVO productVO);
|
||||
ProductVO do2vo(Product product);
|
||||
|
||||
List<H5ProductVO> dos2dtos(List<Product> products);
|
||||
// List<ProductVO> dos2vos(List<Product> list);
|
||||
// Product vo2do(ProductVO productVO);
|
||||
// ProductVO do2vo(Product product);
|
||||
//
|
||||
// List<H5ProductVO> dos2dtos(List<Product> products);
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
package com.wzj.soopin.goods.convert;
|
||||
|
||||
import com.wzj.soopin.goods.domain.bo.SkuBo;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.vo.SkuVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -11,7 +13,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface SkuConvert {
|
||||
public interface SkuConvert extends BaseConverter<SkuVO, SkuBo, Sku> {
|
||||
|
||||
List<SkuVO> dos2vos(List<Sku> list);
|
||||
// List<SkuVO> dos2vos(List<Sku> list);
|
||||
}
|
||||
|
@ -0,0 +1,48 @@
|
||||
package com.wzj.soopin.goods.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="品牌管理 查询 对象")
|
||||
public class BrandBo {
|
||||
|
||||
@ApiModelProperty("NAME 精确匹配")
|
||||
private String nameLike;
|
||||
|
||||
@ApiModelProperty("SORT 精确匹配")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("SHOW_STATUS 精确匹配")
|
||||
private Integer showStatus;
|
||||
|
||||
@ApiModelProperty("品牌logo 精确匹配")
|
||||
private String logo;
|
||||
|
||||
public Wrapper<Brand> toWrapper() {
|
||||
LambdaQueryWrapper<Brand> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
|
||||
if (nameLike != null && !nameLike.isEmpty()) {
|
||||
queryWrapper.like(Brand::getName, nameLike);
|
||||
}
|
||||
|
||||
// 精确匹配字段
|
||||
if (sort != null) {
|
||||
queryWrapper.eq(Brand::getSort, sort);
|
||||
}
|
||||
if (showStatus != null) {
|
||||
queryWrapper.eq(Brand::getShowStatus, showStatus);
|
||||
}
|
||||
if (logo != null && !logo.isEmpty()) {
|
||||
queryWrapper.eq(Brand::getLogo, logo);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,148 @@
|
||||
package com.wzj.soopin.goods.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "商品信息 查询 对象")
|
||||
public class ProductBo {
|
||||
|
||||
@ApiModelProperty("BRAND_ID 精确匹配")
|
||||
private Long brandId;
|
||||
|
||||
@ApiModelProperty("CATEGORY_ID 精确匹配")
|
||||
private Long categoryId;
|
||||
|
||||
@ApiModelProperty("商品编码 精确匹配")
|
||||
private String outProductId;
|
||||
|
||||
@ApiModelProperty("NAME 模糊匹配")
|
||||
private String nameLike;
|
||||
|
||||
@ApiModelProperty("主图 精确匹配")
|
||||
private String pic;
|
||||
|
||||
@ApiModelProperty("画册图片,连产品图片限制为5张,以逗号分割 精确匹配")
|
||||
private String albumPics;
|
||||
|
||||
@ApiModelProperty("上架状态:0->下架;1->上架 精确匹配")
|
||||
private Integer publishStatus;
|
||||
|
||||
@ApiModelProperty("排序 精确匹配")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("PRICE 精确匹配")
|
||||
private BigDecimal price;
|
||||
|
||||
@ApiModelProperty("单位 精确匹配")
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty(name = "商品销售属性,json格式")
|
||||
private String productAttr;
|
||||
|
||||
@ApiModelProperty("商品重量,默认为克 精确匹配")
|
||||
private BigDecimal weight;
|
||||
|
||||
@ApiModelProperty("产品详情网页内容 精确匹配")
|
||||
private String detailHtml;
|
||||
|
||||
@ApiModelProperty("移动端网页详情 精确匹配")
|
||||
private String detailMobileHtml;
|
||||
|
||||
@ApiModelProperty("品牌名称 模糊匹配")
|
||||
private String brandNameLike;
|
||||
|
||||
@ApiModelProperty("商品分类名称 模糊匹配")
|
||||
private String productCategoryNameLike;
|
||||
|
||||
@ApiModelProperty("排序字段")
|
||||
private String orderField = "sort";
|
||||
|
||||
@ApiModelProperty("排序规则")
|
||||
private String orderSort = "desc";
|
||||
|
||||
@ApiModelProperty("搜索关键字")
|
||||
private String search;
|
||||
|
||||
// 排查的id
|
||||
private List<Long> excludeProductIds;
|
||||
|
||||
private List<Long> ids;
|
||||
|
||||
public Wrapper<Product> toWrapper() {
|
||||
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// 精确匹配字段
|
||||
if (brandId != null) {
|
||||
queryWrapper.eq(Product::getBrandId, brandId);
|
||||
}
|
||||
if (categoryId != null) {
|
||||
queryWrapper.eq(Product::getCategoryId, categoryId);
|
||||
}
|
||||
if (outProductId != null && !outProductId.isEmpty()) {
|
||||
queryWrapper.eq(Product::getOutProductId, outProductId);
|
||||
}
|
||||
if (pic != null && !pic.isEmpty()) {
|
||||
queryWrapper.eq(Product::getPic, pic);
|
||||
}
|
||||
if (albumPics != null && !albumPics.isEmpty()) {
|
||||
queryWrapper.eq(Product::getAlbumPics, albumPics);
|
||||
}
|
||||
if (publishStatus != null) {
|
||||
queryWrapper.eq(Product::getPublishStatus, publishStatus);
|
||||
}
|
||||
if (sort != null) {
|
||||
queryWrapper.eq(Product::getSort, sort);
|
||||
}
|
||||
if (price != null) {
|
||||
queryWrapper.eq(Product::getPrice, price);
|
||||
}
|
||||
if (unit != null && !unit.isEmpty()) {
|
||||
queryWrapper.eq(Product::getUnit, unit);
|
||||
}
|
||||
if (productAttr != null && !productAttr.isEmpty()) {
|
||||
queryWrapper.eq(Product::getProductAttr, productAttr);
|
||||
}
|
||||
if (weight != null) {
|
||||
queryWrapper.eq(Product::getWeight, weight);
|
||||
}
|
||||
if (detailHtml != null && !detailHtml.isEmpty()) {
|
||||
queryWrapper.eq(Product::getDetailHtml, detailHtml);
|
||||
}
|
||||
if (detailMobileHtml != null && !detailMobileHtml.isEmpty()) {
|
||||
queryWrapper.eq(Product::getDetailMobileHtml, detailMobileHtml);
|
||||
}
|
||||
|
||||
// 模糊匹配字段
|
||||
if (nameLike != null && !nameLike.isEmpty()) {
|
||||
queryWrapper.like(Product::getName, nameLike);
|
||||
}
|
||||
if (brandNameLike != null && !brandNameLike.isEmpty()) {
|
||||
queryWrapper.like(Product::getBrandName, brandNameLike);
|
||||
}
|
||||
if (productCategoryNameLike != null && !productCategoryNameLike.isEmpty()) {
|
||||
queryWrapper.like(Product::getProductCategoryName, productCategoryNameLike);
|
||||
}
|
||||
|
||||
// 排除ID列表
|
||||
if (excludeProductIds != null && !excludeProductIds.isEmpty()) {
|
||||
queryWrapper.notIn(Product::getId, excludeProductIds);
|
||||
}
|
||||
|
||||
// 指定ID列表
|
||||
if (ids != null && !ids.isEmpty()) {
|
||||
queryWrapper.in(Product::getId, ids);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.wzj.soopin.goods.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="商品分类 查询 对象")
|
||||
public class ProductCategoryBo {
|
||||
|
||||
@ApiModelProperty("上级分类的编号:0表示一级分类 精确匹配")
|
||||
private Long parentId;
|
||||
|
||||
@ApiModelProperty("NAME 精确匹配")
|
||||
private String nameLike;
|
||||
|
||||
@ApiModelProperty("分类级别:0->1级;1->2级 精确匹配")
|
||||
private Integer level;
|
||||
|
||||
@ApiModelProperty("显示状态:0->不显示;1->显示 精确匹配")
|
||||
private Integer showStatus;
|
||||
|
||||
@ApiModelProperty("SORT 精确匹配")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("图标 精确匹配")
|
||||
private String icon;
|
||||
|
||||
public Wrapper<ProductCategory> toWrapper() {
|
||||
LambdaQueryWrapper<ProductCategory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// 精确匹配字段
|
||||
if (parentId != null) {
|
||||
queryWrapper.eq(ProductCategory::getParentId, parentId);
|
||||
}
|
||||
if (level != null) {
|
||||
queryWrapper.eq(ProductCategory::getLevel, level);
|
||||
}
|
||||
if (showStatus != null) {
|
||||
queryWrapper.eq(ProductCategory::getShowStatus, showStatus);
|
||||
}
|
||||
if (sort != null) {
|
||||
queryWrapper.eq(ProductCategory::getSort, sort);
|
||||
}
|
||||
if (icon != null && !icon.isEmpty()) {
|
||||
queryWrapper.eq(ProductCategory::getIcon, icon);
|
||||
}
|
||||
|
||||
// 模糊匹配字段
|
||||
if (nameLike != null && !nameLike.isEmpty()) {
|
||||
queryWrapper.like(ProductCategory::getName, nameLike);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.wzj.soopin.goods.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="sku信息 查询 对象")
|
||||
public class SkuBo {
|
||||
|
||||
@ApiModelProperty("PRODUCT_ID 精确匹配")
|
||||
private Long productId;
|
||||
|
||||
@ApiModelProperty("sku编码 精确匹配")
|
||||
private String outSkuId;
|
||||
|
||||
@ApiModelProperty("PRICE 精确匹配")
|
||||
private BigDecimal price;
|
||||
|
||||
@ApiModelProperty("展示图片 精确匹配")
|
||||
private String pic;
|
||||
|
||||
@ApiModelProperty("商品销售属性,json格式 精确匹配")
|
||||
private String spData;
|
||||
|
||||
public Wrapper<Sku> toWrapper() {
|
||||
LambdaQueryWrapper<Sku> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// 精确匹配字段
|
||||
if (productId != null) {
|
||||
queryWrapper.eq(Sku::getProductId, productId);
|
||||
}
|
||||
if (outSkuId != null && !outSkuId.isEmpty()) {
|
||||
queryWrapper.eq(Sku::getOutSkuId, outSkuId);
|
||||
}
|
||||
if (price != null) {
|
||||
queryWrapper.eq(Sku::getPrice, price);
|
||||
}
|
||||
if (pic != null && !pic.isEmpty()) {
|
||||
queryWrapper.eq(Sku::getPic, pic);
|
||||
}
|
||||
if (spData != null && !spData.isEmpty()) {
|
||||
queryWrapper.eq(Sku::getSpData, spData);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
@ -1,99 +1,7 @@
|
||||
package com.wzj.soopin.goods.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.query.BrandQuery;
|
||||
import com.wzj.soopin.goods.mapper.BrandMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 品牌管理Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class BrandService {
|
||||
@Autowired
|
||||
private BrandMapper brandMapper;
|
||||
|
||||
/**
|
||||
* 查询品牌管理
|
||||
*
|
||||
* @param id 品牌管理主键
|
||||
* @return 品牌管理
|
||||
*/
|
||||
public Brand selectById(Long id) {
|
||||
return brandMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询品牌管理列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 品牌管理
|
||||
*/
|
||||
public List<Brand> selectList(BrandQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Brand> qw = new QueryWrapper<>();
|
||||
String nameLike = query.getNameLike();
|
||||
if (!StringUtils.isEmpty(nameLike)) {
|
||||
qw.like("name", nameLike);
|
||||
}
|
||||
Integer sort = query.getSort();
|
||||
if (sort != null) {
|
||||
qw.eq("sort", sort);
|
||||
}
|
||||
Integer showStatus = query.getShowStatus();
|
||||
if (showStatus != null) {
|
||||
qw.eq("show_status", showStatus);
|
||||
}
|
||||
String logo = query.getLogo();
|
||||
if (!StringUtils.isEmpty(logo)) {
|
||||
qw.eq("logo", logo);
|
||||
}
|
||||
qw.orderByAsc("sort");
|
||||
return brandMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增品牌管理
|
||||
*
|
||||
* @param brand 品牌管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Brand brand) {
|
||||
brand.setCreateTime(LocalDateTime.now());
|
||||
return brandMapper.insert(brand);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改品牌管理
|
||||
*
|
||||
* @param brand 品牌管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Brand brand) {
|
||||
return brandMapper.updateById(brand);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除品牌管理信息
|
||||
*
|
||||
* @param id 品牌管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return brandMapper.deleteById(id);
|
||||
}
|
||||
public interface BrandService extends IService<Brand> {
|
||||
}
|
||||
|
@ -1,245 +1,7 @@
|
||||
package com.wzj.soopin.goods.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.ProductCategoryConvert;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.wzj.soopin.goods.domain.dto.CategoryDTO;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.query.ProductCategoryQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import com.wzj.soopin.goods.mapper.ProductCategoryMapper;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.common.core.exception.base.BaseException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品分类Service业务层处理
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class ProductCategoryService {
|
||||
@Autowired
|
||||
private ProductCategoryMapper productCategoryMapper;
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
@Autowired
|
||||
private ProductCategoryConvert convert;
|
||||
@Autowired
|
||||
private ProductConvert productConvert;
|
||||
|
||||
/**
|
||||
* 查询商品分类
|
||||
*
|
||||
* @param id 商品分类主键
|
||||
* @return 商品分类
|
||||
*/
|
||||
public ProductCategory selectById(Long id) {
|
||||
return productCategoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商品分类列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 商品分类
|
||||
*/
|
||||
public List<ProductCategoryVO> selectList(ProductCategoryQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
Long parentId = query.getParentId();
|
||||
if (parentId != null) {
|
||||
qw.eq("parent_id", parentId);
|
||||
}
|
||||
String nameLike = query.getNameLike();
|
||||
if (!StringUtils.isEmpty(nameLike)) {
|
||||
qw.like("name", nameLike);
|
||||
}
|
||||
Integer level = query.getLevel();
|
||||
if (level != null) {
|
||||
qw.eq("level", level);
|
||||
}
|
||||
Integer showStatus = query.getShowStatus();
|
||||
if (showStatus != null) {
|
||||
qw.eq("show_status", showStatus);
|
||||
}
|
||||
Integer sort = query.getSort();
|
||||
if (sort != null) {
|
||||
qw.eq("sort", sort);
|
||||
}
|
||||
String icon = query.getIcon();
|
||||
if (!StringUtils.isEmpty(icon)) {
|
||||
qw.eq("icon", icon);
|
||||
}
|
||||
qw.orderByAsc("sort");
|
||||
|
||||
List<ProductCategory> productCategories = productCategoryMapper.selectList(qw);
|
||||
List<ProductCategoryVO> productCategoryVOS = convert.dos2vos(productCategories);
|
||||
return formatTree(productCategoryVOS);
|
||||
|
||||
}
|
||||
|
||||
private List<ProductCategoryVO> formatTree(List<ProductCategoryVO> nodes) {
|
||||
List<ProductCategoryVO> tree = new ArrayList<>();
|
||||
List<ProductCategoryVO> children = new ArrayList<>();
|
||||
// 1)先获取到所有根节点
|
||||
for (ProductCategoryVO node : nodes) {
|
||||
if (node.getParentId() == null || node.getParentId() == 0) {
|
||||
tree.add(node);
|
||||
} else {
|
||||
children.add(node);
|
||||
}
|
||||
}
|
||||
// 2)把所有除根结点外的节点作为子节点,然后遍历每一个根节点
|
||||
for (ProductCategoryVO node : tree) {
|
||||
// 3)递归构建此根的子节点
|
||||
recur(node, children);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
private void recur(ProductCategoryVO rootNode, List<ProductCategoryVO> children) {
|
||||
// 1)遍历剩余子节点,找出当前根的子节点
|
||||
for (ProductCategoryVO node : children) {
|
||||
// 2)如果子节点的父id等于根节点的id,那么就将这个节点加到根节点的children列表中
|
||||
if (rootNode.getId() == node.getParentId()) {
|
||||
if (rootNode.getChildren() == null) {
|
||||
rootNode.setChildren(new ArrayList<>());
|
||||
}
|
||||
rootNode.getChildren().add(node);
|
||||
// 3)以当前节点作为根节点进行递归,检查是否还有子节点。
|
||||
recur(node, children);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增商品分类
|
||||
*
|
||||
* @param productCategory 商品分类
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(ProductCategory productCategory) {
|
||||
productCategory.setCreateTime(LocalDateTime.now());
|
||||
return productCategoryMapper.insert(productCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品分类
|
||||
*
|
||||
* @param productCategory 商品分类
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(ProductCategory productCategory) {
|
||||
return productCategoryMapper.updateById(productCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除商品分类信息
|
||||
*
|
||||
* @param id 商品分类主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return productCategoryMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public List<CategoryDTO> queryCategoryWithProductsForH5() {
|
||||
QueryWrapper<ProductCategory> qw1 = new QueryWrapper<>();
|
||||
// qw1.eq("level", 0);
|
||||
qw1.eq("show_status", 1);
|
||||
Page<ProductCategory> pageReq = new Page<>();
|
||||
pageReq.setCurrent(1L)
|
||||
.setSize(10)
|
||||
.setOrders(Collections.singletonList(OrderItem.desc("sort")));
|
||||
List<ProductCategory> categories = productCategoryMapper.selectPage(pageReq, qw1).getRecords();
|
||||
if (CollUtil.isEmpty(categories)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
;
|
||||
return categories.stream().map(it -> {
|
||||
CategoryDTO dto = convert.do2dto(it);
|
||||
// 寻找该分类下的所有子类
|
||||
List<Long> allChildCate = queryAllChildCate(Collections.singletonList(it.getId()), 0);
|
||||
QueryWrapper<Product> qw = new QueryWrapper<>();
|
||||
qw.select("id", "pic", "name", "price", "category_id");
|
||||
qw.in("category_id", allChildCate);
|
||||
qw.le("sort", 100);
|
||||
List<Product> categoryId2List = productMapper.selectList(qw);
|
||||
dto.setProductList(productConvert.dos2dtos(categoryId2List));
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private List<Long> queryAllChildCate(List<Long> categoryIds, int level) {
|
||||
List<Long> res = new ArrayList<>();
|
||||
QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
qw.select("id");
|
||||
List<Long> ids = categoryIds;
|
||||
while (true) {
|
||||
qw.clear();
|
||||
qw.in("parent_id", ids);
|
||||
qw.eq("level", level + 1);
|
||||
qw.eq("show_status", 1);
|
||||
ids = productCategoryMapper.selectList(qw).stream().map(ProductCategory::getId).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(ids)) {
|
||||
break;
|
||||
}
|
||||
res.addAll(ids);
|
||||
level++;
|
||||
}
|
||||
res.addAll(categoryIds);
|
||||
return res;
|
||||
}
|
||||
|
||||
public List<ProductCategory> h5Categories() {
|
||||
QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
qw.select("id", "parent_id", "name", "level", "sort", "icon");
|
||||
qw.eq("show_status", 1);
|
||||
// qw.le("level", 2);
|
||||
return productCategoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
public List<ProductCategory> getBrotherAndChild(Long id, boolean withChild) {
|
||||
ProductCategory category = productCategoryMapper.selectById(id);
|
||||
if (category == null) {
|
||||
throw new BaseException("参数错误");
|
||||
}
|
||||
LambdaQueryWrapper<ProductCategory> qw = new LambdaQueryWrapper<>();
|
||||
qw.eq(ProductCategory::getParentId, category.getParentId());
|
||||
qw.eq(ProductCategory::getLevel, category.getLevel());
|
||||
qw.eq(ProductCategory::getShowStatus, 1);
|
||||
qw.select(ProductCategory::getId, ProductCategory::getParentId, ProductCategory::getName, ProductCategory::getLevel, ProductCategory::getSort, ProductCategory::getIcon);
|
||||
List<ProductCategory> res = productCategoryMapper.selectList(qw);
|
||||
if (withChild) {
|
||||
qw.clear();
|
||||
qw.eq(ProductCategory::getParentId, category.getId());
|
||||
qw.eq(ProductCategory::getLevel, category.getLevel() + 1);
|
||||
qw.eq(ProductCategory::getShowStatus, 1);
|
||||
List<ProductCategory> childs = productCategoryMapper.selectList(qw);
|
||||
res.addAll(childs);
|
||||
}
|
||||
if (category.getParentId() != null && category.getParentId() != -1) {
|
||||
res.add(productCategoryMapper.selectById(category.getParentId()));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
public interface ProductCategoryService extends IService<ProductCategory> {
|
||||
}
|
||||
|
@ -1,210 +1,7 @@
|
||||
package com.wzj.soopin.goods.service;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.query.ProductQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductDetailVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import com.wzj.soopin.goods.mapper.BrandMapper;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品信息Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProductService {
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
@Autowired
|
||||
private BrandMapper brandMapper;
|
||||
@Autowired
|
||||
private ProductConvert convert;
|
||||
|
||||
/**
|
||||
* 查询商品信息
|
||||
*
|
||||
* @param id 商品信息主键
|
||||
* @return 商品信息
|
||||
*/
|
||||
public ProductVO selectById(Long id) {
|
||||
Product product = productMapper.selectById(id);
|
||||
ProductVO productVO = convert.do2vo(product);
|
||||
QueryWrapper<Sku> qw = new QueryWrapper<>();
|
||||
qw.eq("product_id", product.getId());
|
||||
List<Sku> skus = skuMapper.selectList(qw);
|
||||
productVO.setSkuList(skus);
|
||||
return productVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商品信息列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 商品信息
|
||||
*/
|
||||
public List<Product> selectList(ProductQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Product> qw = new QueryWrapper<>();
|
||||
if (StringUtils.isNoneEmpty(query.getOrderField())){
|
||||
if (StringUtils.isNotEmpty(query.getOrderSort()) && "desc".equalsIgnoreCase(query.getOrderSort())) {
|
||||
qw.orderByDesc(query.getOrderField());
|
||||
} else {
|
||||
qw.orderByAsc(query.getOrderField());
|
||||
}
|
||||
}else {
|
||||
qw.orderByDesc("publish_status");
|
||||
qw.orderByAsc("sort");
|
||||
}
|
||||
Long categoryId = query.getCategoryId();
|
||||
if (categoryId != null) {
|
||||
qw.eq("category_id", categoryId);
|
||||
}
|
||||
Integer publishStatus = query.getPublishStatus();
|
||||
if (publishStatus != null) {
|
||||
qw.eq("publish_status", publishStatus);
|
||||
}
|
||||
String search = query.getSearch();
|
||||
if (StringUtils.isNoneEmpty(search)){
|
||||
qw.like("name", "%".concat(query.getSearch().trim()).concat("%"));
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(query.getExcludeProductIds())) {
|
||||
qw.notIn("id",query.getExcludeProductIds());
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(query.getIds())) {
|
||||
qw.in("id",query.getIds());
|
||||
}
|
||||
return productMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*
|
||||
* @param productVO 商品信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional
|
||||
public int insert(ProductVO productVO) {
|
||||
|
||||
Product product = convert.vo2do(productVO);
|
||||
product.setCreateTime(LocalDateTime.now());
|
||||
List<Sku> skuList = productVO.getSkuList();
|
||||
productMapper.insert(product);
|
||||
if(skuList!=null){
|
||||
skuList.forEach(sku -> {
|
||||
sku.setProductId(product.getId());
|
||||
sku.setCreateTime(LocalDateTime.now());
|
||||
skuMapper.insert(sku);
|
||||
});
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*
|
||||
* @param productVO 商品信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional
|
||||
public int update(ProductVO productVO) {
|
||||
Product dbProduct = productMapper.selectById(productVO.getId());
|
||||
List<Long> idList = productVO.getSkuList().stream().filter(it -> it.getId() != null).map(it -> it.getId()).collect(Collectors.toList());
|
||||
if (dbProduct == null) {
|
||||
return 0;
|
||||
}
|
||||
// Long userId = SecurityUtils.getUserId();
|
||||
Product product = convert.vo2do(productVO);
|
||||
List<Sku> skuList = productVO.getSkuList();
|
||||
// product.setUpdateBy(userId);
|
||||
product.setUpdateTime(LocalDateTime.now());
|
||||
productMapper.updateById(product);
|
||||
//查找库中所有的sku
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
map.put("product_id", product.getId());
|
||||
Map<Long, Sku> skuMap = skuMapper.selectByMap(map).stream().collect(Collectors.toMap(it -> it.getId(), it -> it));
|
||||
//针对已有的进行编辑
|
||||
List<Sku> updateList = productVO.getSkuList().stream().filter(it -> it.getId() != null).collect(Collectors.toList());
|
||||
if (!CollectionUtil.isEmpty(updateList)) {
|
||||
log.info("共有{}个sku需要修改,{},productId:{}",updateList.size(), JSONUtil.toJsonStr(updateList),productVO.getId());
|
||||
updateList.forEach(it->{
|
||||
Sku sku = skuMap.get(it.getId());
|
||||
// sku.setUpdateBy(SecurityUtils.getUserId());
|
||||
sku.setUpdateTime(LocalDateTime.now());
|
||||
sku.setPrice(it.getPrice());
|
||||
sku.setSpData(it.getSpData());
|
||||
sku.setPic(it.getPic());
|
||||
sku.setOutSkuId(it.getOutSkuId());
|
||||
sku.setStock(it.getStock());
|
||||
skuMapper.updateById(sku);
|
||||
});
|
||||
}
|
||||
//针对没有的进行新增
|
||||
List<Sku> addList = productVO.getSkuList().stream().filter(it -> it.getId() == null).collect(Collectors.toList());
|
||||
if (!CollectionUtil.isEmpty(addList)) {
|
||||
log.info("共有{}个sku需要新增,{},productId:{}",addList.size(), JSONUtil.toJsonStr(addList),productVO.getId());
|
||||
addList.forEach(sku -> {
|
||||
sku.setProductId(product.getId());
|
||||
sku.setCreateTime(LocalDateTime.now());
|
||||
skuMapper.insert(sku);
|
||||
});
|
||||
}
|
||||
//删除
|
||||
List<Long> deleteIds = skuMap.keySet().stream().filter(it -> !idList.contains(it)).collect(Collectors.toList());
|
||||
if (!CollectionUtil.isEmpty(deleteIds)) {
|
||||
log.info("共有{}个sku需要删除,{},productId:{}",deleteIds.size(), JSONUtil.toJsonStr(deleteIds),productVO.getId());
|
||||
skuMapper.deleteBatchIds(deleteIds);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除商品信息信息
|
||||
*
|
||||
* @param id 商品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return productMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public ProductDetailVO queryDetail(Long id) {
|
||||
ProductDetailVO res = new ProductDetailVO();
|
||||
Product d = productMapper.selectById(id);
|
||||
res.setProduct(d);
|
||||
LambdaQueryWrapper<Sku> qw = new LambdaQueryWrapper<>();
|
||||
qw.eq(Sku::getProductId, id);
|
||||
res.setSkus(skuMapper.selectList(qw));
|
||||
if (d.getBrandId() != null) {
|
||||
res.setBrand(brandMapper.selectById(d.getBrandId()));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
public interface ProductService extends IService<Product> {
|
||||
}
|
||||
|
@ -1,102 +1,7 @@
|
||||
package com.wzj.soopin.goods.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.query.SkuQuery;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* sku信息Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class SkuService {
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
|
||||
/**
|
||||
* 查询sku信息
|
||||
*
|
||||
* @param id sku信息主键
|
||||
* @return sku信息
|
||||
*/
|
||||
public Sku selectById(Long id) {
|
||||
return skuMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询sku信息列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return sku信息
|
||||
*/
|
||||
public List<Sku> selectList(SkuQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Sku> qw = new QueryWrapper<>();
|
||||
Long productId = query.getProductId();
|
||||
if (productId != null) {
|
||||
qw.eq("product_id", productId);
|
||||
}
|
||||
String outSkuId = query.getOutSkuId();
|
||||
if (!StringUtils.isEmpty(outSkuId)) {
|
||||
qw.eq("out_sku_id", outSkuId);
|
||||
}
|
||||
BigDecimal price = query.getPrice();
|
||||
if (price != null) {
|
||||
qw.eq("price", price);
|
||||
}
|
||||
String pic = query.getPic();
|
||||
if (!StringUtils.isEmpty(pic)) {
|
||||
qw.eq("pic", pic);
|
||||
}
|
||||
String spData = query.getSpData();
|
||||
if (!StringUtils.isEmpty(spData)) {
|
||||
qw.eq("sp_data", spData);
|
||||
}
|
||||
return skuMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增sku信息
|
||||
*
|
||||
* @param sku sku信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Sku sku) {
|
||||
sku.setCreateTime(LocalDateTime.now());
|
||||
return skuMapper.insert(sku);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改sku信息
|
||||
*
|
||||
* @param sku sku信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Sku sku) {
|
||||
return skuMapper.updateById(sku);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除sku信息信息
|
||||
*
|
||||
* @param id sku信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return skuMapper.deleteById(id);
|
||||
}
|
||||
public interface SkuService extends IService<Sku> {
|
||||
}
|
||||
|
@ -0,0 +1,101 @@
|
||||
package com.wzj.soopin.goods.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.domain.entity.Brand;
|
||||
import com.wzj.soopin.goods.domain.query.BrandQuery;
|
||||
import com.wzj.soopin.goods.mapper.BrandMapper;
|
||||
import com.wzj.soopin.goods.service.BrandService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 品牌管理Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements BrandService {
|
||||
@Autowired
|
||||
private BrandMapper brandMapper;
|
||||
|
||||
/**
|
||||
* 查询品牌管理
|
||||
*
|
||||
* @param id 品牌管理主键
|
||||
* @return 品牌管理
|
||||
*/
|
||||
public Brand selectById(Long id) {
|
||||
return brandMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询品牌管理列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 品牌管理
|
||||
*/
|
||||
public List<Brand> selectList(BrandQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Brand> qw = new QueryWrapper<>();
|
||||
String nameLike = query.getNameLike();
|
||||
if (!StringUtils.isEmpty(nameLike)) {
|
||||
qw.like("name", nameLike);
|
||||
}
|
||||
Integer sort = query.getSort();
|
||||
if (sort != null) {
|
||||
qw.eq("sort", sort);
|
||||
}
|
||||
Integer showStatus = query.getShowStatus();
|
||||
if (showStatus != null) {
|
||||
qw.eq("show_status", showStatus);
|
||||
}
|
||||
String logo = query.getLogo();
|
||||
if (!StringUtils.isEmpty(logo)) {
|
||||
qw.eq("logo", logo);
|
||||
}
|
||||
qw.orderByAsc("sort");
|
||||
return brandMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增品牌管理
|
||||
*
|
||||
* @param brand 品牌管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Brand brand) {
|
||||
brand.setCreateTime(LocalDateTime.now());
|
||||
return brandMapper.insert(brand);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改品牌管理
|
||||
*
|
||||
* @param brand 品牌管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Brand brand) {
|
||||
return brandMapper.updateById(brand);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除品牌管理信息
|
||||
*
|
||||
* @param id 品牌管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return brandMapper.deleteById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,248 @@
|
||||
package com.wzj.soopin.goods.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.convert.ProductCategoryConvert;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.wzj.soopin.goods.domain.dto.CategoryDTO;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.query.ProductCategoryQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import com.wzj.soopin.goods.mapper.ProductCategoryMapper;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.goods.service.ProductCategoryService;
|
||||
import com.wzj.soopin.goods.service.ProductService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.common.core.exception.base.BaseException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品分类Service业务层处理
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class ProductCategoryServiceImpl extends ServiceImpl<ProductCategoryMapper, ProductCategory> implements ProductCategoryService {
|
||||
@Autowired
|
||||
private ProductCategoryMapper productCategoryMapper;
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
@Autowired
|
||||
private ProductCategoryConvert convert;
|
||||
@Autowired
|
||||
private ProductConvert productConvert;
|
||||
|
||||
/**
|
||||
* 查询商品分类
|
||||
*
|
||||
* @param id 商品分类主键
|
||||
* @return 商品分类
|
||||
*/
|
||||
public ProductCategory selectById(Long id) {
|
||||
return productCategoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商品分类列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 商品分类
|
||||
*/
|
||||
// public List<ProductCategoryVO> selectList(ProductCategoryQuery query, Pageable page) {
|
||||
//// if (page != null) {
|
||||
//// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
//// }
|
||||
// QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
// Long parentId = query.getParentId();
|
||||
// if (parentId != null) {
|
||||
// qw.eq("parent_id", parentId);
|
||||
// }
|
||||
// String nameLike = query.getNameLike();
|
||||
// if (!StringUtils.isEmpty(nameLike)) {
|
||||
// qw.like("name", nameLike);
|
||||
// }
|
||||
// Integer level = query.getLevel();
|
||||
// if (level != null) {
|
||||
// qw.eq("level", level);
|
||||
// }
|
||||
// Integer showStatus = query.getShowStatus();
|
||||
// if (showStatus != null) {
|
||||
// qw.eq("show_status", showStatus);
|
||||
// }
|
||||
// Integer sort = query.getSort();
|
||||
// if (sort != null) {
|
||||
// qw.eq("sort", sort);
|
||||
// }
|
||||
// String icon = query.getIcon();
|
||||
// if (!StringUtils.isEmpty(icon)) {
|
||||
// qw.eq("icon", icon);
|
||||
// }
|
||||
// qw.orderByAsc("sort");
|
||||
//
|
||||
// List<ProductCategory> productCategories = productCategoryMapper.selectList(qw);
|
||||
// List<ProductCategoryVO> productCategoryVOS = convert.dos2vos(productCategories);
|
||||
// return formatTree(productCategoryVOS);
|
||||
//
|
||||
// }
|
||||
|
||||
private List<ProductCategoryVO> formatTree(List<ProductCategoryVO> nodes) {
|
||||
List<ProductCategoryVO> tree = new ArrayList<>();
|
||||
List<ProductCategoryVO> children = new ArrayList<>();
|
||||
// 1)先获取到所有根节点
|
||||
for (ProductCategoryVO node : nodes) {
|
||||
if (node.getParentId() == null || node.getParentId() == 0) {
|
||||
tree.add(node);
|
||||
} else {
|
||||
children.add(node);
|
||||
}
|
||||
}
|
||||
// 2)把所有除根结点外的节点作为子节点,然后遍历每一个根节点
|
||||
for (ProductCategoryVO node : tree) {
|
||||
// 3)递归构建此根的子节点
|
||||
recur(node, children);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
private void recur(ProductCategoryVO rootNode, List<ProductCategoryVO> children) {
|
||||
// 1)遍历剩余子节点,找出当前根的子节点
|
||||
for (ProductCategoryVO node : children) {
|
||||
// 2)如果子节点的父id等于根节点的id,那么就将这个节点加到根节点的children列表中
|
||||
if (rootNode.getId() == node.getParentId()) {
|
||||
if (rootNode.getChildren() == null) {
|
||||
rootNode.setChildren(new ArrayList<>());
|
||||
}
|
||||
rootNode.getChildren().add(node);
|
||||
// 3)以当前节点作为根节点进行递归,检查是否还有子节点。
|
||||
recur(node, children);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增商品分类
|
||||
*
|
||||
* @param productCategory 商品分类
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(ProductCategory productCategory) {
|
||||
productCategory.setCreateTime(LocalDateTime.now());
|
||||
return productCategoryMapper.insert(productCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品分类
|
||||
*
|
||||
* @param productCategory 商品分类
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(ProductCategory productCategory) {
|
||||
return productCategoryMapper.updateById(productCategory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除商品分类信息
|
||||
*
|
||||
* @param id 商品分类主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return productCategoryMapper.deleteById(id);
|
||||
}
|
||||
//
|
||||
// public List<CategoryDTO> queryCategoryWithProductsForH5() {
|
||||
// QueryWrapper<ProductCategory> qw1 = new QueryWrapper<>();
|
||||
//// qw1.eq("level", 0);
|
||||
// qw1.eq("show_status", 1);
|
||||
// Page<ProductCategory> pageReq = new Page<>();
|
||||
// pageReq.setCurrent(1L)
|
||||
// .setSize(10)
|
||||
// .setOrders(Collections.singletonList(OrderItem.desc("sort")));
|
||||
// List<ProductCategory> categories = productCategoryMapper.selectPage(pageReq, qw1).getRecords();
|
||||
// if (CollUtil.isEmpty(categories)) {
|
||||
// return Collections.emptyList();
|
||||
// }
|
||||
// ;
|
||||
// return categories.stream().map(it -> {
|
||||
// CategoryDTO dto = convert.do2dto(it);
|
||||
// // 寻找该分类下的所有子类
|
||||
// List<Long> allChildCate = queryAllChildCate(Collections.singletonList(it.getId()), 0);
|
||||
// QueryWrapper<Product> qw = new QueryWrapper<>();
|
||||
// qw.select("id", "pic", "name", "price", "category_id");
|
||||
// qw.in("category_id", allChildCate);
|
||||
// qw.le("sort", 100);
|
||||
// List<Product> categoryId2List = productMapper.selectList(qw);
|
||||
// dto.setProductList(productConvert.dos2dtos(categoryId2List));
|
||||
// return dto;
|
||||
// }).collect(Collectors.toList());
|
||||
// }
|
||||
|
||||
private List<Long> queryAllChildCate(List<Long> categoryIds, int level) {
|
||||
List<Long> res = new ArrayList<>();
|
||||
QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
qw.select("id");
|
||||
List<Long> ids = categoryIds;
|
||||
while (true) {
|
||||
qw.clear();
|
||||
qw.in("parent_id", ids);
|
||||
qw.eq("level", level + 1);
|
||||
qw.eq("show_status", 1);
|
||||
ids = productCategoryMapper.selectList(qw).stream().map(ProductCategory::getId).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(ids)) {
|
||||
break;
|
||||
}
|
||||
res.addAll(ids);
|
||||
level++;
|
||||
}
|
||||
res.addAll(categoryIds);
|
||||
return res;
|
||||
}
|
||||
|
||||
public List<ProductCategory> h5Categories() {
|
||||
QueryWrapper<ProductCategory> qw = new QueryWrapper<>();
|
||||
qw.select("id", "parent_id", "name", "level", "sort", "icon");
|
||||
qw.eq("show_status", 1);
|
||||
// qw.le("level", 2);
|
||||
return productCategoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
public List<ProductCategory> getBrotherAndChild(Long id, boolean withChild) {
|
||||
ProductCategory category = productCategoryMapper.selectById(id);
|
||||
if (category == null) {
|
||||
throw new BaseException("参数错误");
|
||||
}
|
||||
LambdaQueryWrapper<ProductCategory> qw = new LambdaQueryWrapper<>();
|
||||
qw.eq(ProductCategory::getParentId, category.getParentId());
|
||||
qw.eq(ProductCategory::getLevel, category.getLevel());
|
||||
qw.eq(ProductCategory::getShowStatus, 1);
|
||||
qw.select(ProductCategory::getId, ProductCategory::getParentId, ProductCategory::getName, ProductCategory::getLevel, ProductCategory::getSort, ProductCategory::getIcon);
|
||||
List<ProductCategory> res = productCategoryMapper.selectList(qw);
|
||||
if (withChild) {
|
||||
qw.clear();
|
||||
qw.eq(ProductCategory::getParentId, category.getId());
|
||||
qw.eq(ProductCategory::getLevel, category.getLevel() + 1);
|
||||
qw.eq(ProductCategory::getShowStatus, 1);
|
||||
List<ProductCategory> childs = productCategoryMapper.selectList(qw);
|
||||
res.addAll(childs);
|
||||
}
|
||||
if (category.getParentId() != null && category.getParentId() != -1) {
|
||||
res.add(productCategoryMapper.selectById(category.getParentId()));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
@ -0,0 +1,212 @@
|
||||
package com.wzj.soopin.goods.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.wzj.soopin.goods.domain.entity.Product;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.query.ProductQuery;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductDetailVO;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import com.wzj.soopin.goods.mapper.BrandMapper;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.goods.service.ProductService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品信息Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
@Autowired
|
||||
private BrandMapper brandMapper;
|
||||
@Autowired
|
||||
private ProductConvert convert;
|
||||
|
||||
/**
|
||||
* 查询商品信息
|
||||
*
|
||||
* @param id 商品信息主键
|
||||
* @return 商品信息
|
||||
*/
|
||||
// public ProductVO selectById(Long id) {
|
||||
// Product product = productMapper.selectById(id);
|
||||
// ProductVO productVO = convert.do2vo(product);
|
||||
// QueryWrapper<Sku> qw = new QueryWrapper<>();
|
||||
// qw.eq("product_id", product.getId());
|
||||
// List<Sku> skus = skuMapper.selectList(qw);
|
||||
// productVO.setSkuList(skus);
|
||||
// return productVO;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 查询商品信息列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 商品信息
|
||||
*/
|
||||
public List<Product> selectList(ProductQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Product> qw = new QueryWrapper<>();
|
||||
if (StringUtils.isNoneEmpty(query.getOrderField())){
|
||||
if (StringUtils.isNotEmpty(query.getOrderSort()) && "desc".equalsIgnoreCase(query.getOrderSort())) {
|
||||
qw.orderByDesc(query.getOrderField());
|
||||
} else {
|
||||
qw.orderByAsc(query.getOrderField());
|
||||
}
|
||||
}else {
|
||||
qw.orderByDesc("publish_status");
|
||||
qw.orderByAsc("sort");
|
||||
}
|
||||
Long categoryId = query.getCategoryId();
|
||||
if (categoryId != null) {
|
||||
qw.eq("category_id", categoryId);
|
||||
}
|
||||
Integer publishStatus = query.getPublishStatus();
|
||||
if (publishStatus != null) {
|
||||
qw.eq("publish_status", publishStatus);
|
||||
}
|
||||
String search = query.getSearch();
|
||||
if (StringUtils.isNoneEmpty(search)){
|
||||
qw.like("name", "%".concat(query.getSearch().trim()).concat("%"));
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(query.getExcludeProductIds())) {
|
||||
qw.notIn("id",query.getExcludeProductIds());
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(query.getIds())) {
|
||||
qw.in("id",query.getIds());
|
||||
}
|
||||
return productMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*
|
||||
* @param productVO 商品信息
|
||||
* @return 结果
|
||||
*/
|
||||
// @Transactional
|
||||
// public int insert(ProductVO productVO) {
|
||||
//
|
||||
// Product product = convert.vo2do(productVO);
|
||||
// product.setCreateTime(LocalDateTime.now());
|
||||
// List<Sku> skuList = productVO.getSkuList();
|
||||
// productMapper.insert(product);
|
||||
// if(skuList!=null){
|
||||
// skuList.forEach(sku -> {
|
||||
// sku.setProductId(product.getId());
|
||||
// sku.setCreateTime(LocalDateTime.now());
|
||||
// skuMapper.insert(sku);
|
||||
// });
|
||||
// }
|
||||
// return 1;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*
|
||||
* @param productVO 商品信息
|
||||
* @return 结果
|
||||
*/
|
||||
// @Transactional
|
||||
// public int update(ProductVO productVO) {
|
||||
// Product dbProduct = productMapper.selectById(productVO.getId());
|
||||
// List<Long> idList = productVO.getSkuList().stream().filter(it -> it.getId() != null).map(it -> it.getId()).collect(Collectors.toList());
|
||||
// if (dbProduct == null) {
|
||||
// return 0;
|
||||
// }
|
||||
//// Long userId = SecurityUtils.getUserId();
|
||||
// Product product = convert.vo2do(productVO);
|
||||
// List<Sku> skuList = productVO.getSkuList();
|
||||
//// product.setUpdateBy(userId);
|
||||
// product.setUpdateTime(LocalDateTime.now());
|
||||
// productMapper.updateById(product);
|
||||
// //查找库中所有的sku
|
||||
// Map<String,Object> map = new HashMap<>();
|
||||
// map.put("product_id", product.getId());
|
||||
// Map<Long, Sku> skuMap = skuMapper.selectByMap(map).stream().collect(Collectors.toMap(it -> it.getId(), it -> it));
|
||||
// //针对已有的进行编辑
|
||||
// List<Sku> updateList = productVO.getSkuList().stream().filter(it -> it.getId() != null).collect(Collectors.toList());
|
||||
// if (!CollectionUtil.isEmpty(updateList)) {
|
||||
// log.info("共有{}个sku需要修改,{},productId:{}",updateList.size(), JSONUtil.toJsonStr(updateList),productVO.getId());
|
||||
// updateList.forEach(it->{
|
||||
// Sku sku = skuMap.get(it.getId());
|
||||
//// sku.setUpdateBy(SecurityUtils.getUserId());
|
||||
// sku.setUpdateTime(LocalDateTime.now());
|
||||
// sku.setPrice(it.getPrice());
|
||||
// sku.setSpData(it.getSpData());
|
||||
// sku.setPic(it.getPic());
|
||||
// sku.setOutSkuId(it.getOutSkuId());
|
||||
// sku.setStock(it.getStock());
|
||||
// skuMapper.updateById(sku);
|
||||
// });
|
||||
// }
|
||||
// //针对没有的进行新增
|
||||
// List<Sku> addList = productVO.getSkuList().stream().filter(it -> it.getId() == null).collect(Collectors.toList());
|
||||
// if (!CollectionUtil.isEmpty(addList)) {
|
||||
// log.info("共有{}个sku需要新增,{},productId:{}",addList.size(), JSONUtil.toJsonStr(addList),productVO.getId());
|
||||
// addList.forEach(sku -> {
|
||||
// sku.setProductId(product.getId());
|
||||
// sku.setCreateTime(LocalDateTime.now());
|
||||
// skuMapper.insert(sku);
|
||||
// });
|
||||
// }
|
||||
// //删除
|
||||
// List<Long> deleteIds = skuMap.keySet().stream().filter(it -> !idList.contains(it)).collect(Collectors.toList());
|
||||
// if (!CollectionUtil.isEmpty(deleteIds)) {
|
||||
// log.info("共有{}个sku需要删除,{},productId:{}",deleteIds.size(), JSONUtil.toJsonStr(deleteIds),productVO.getId());
|
||||
// skuMapper.deleteBatchIds(deleteIds);
|
||||
// }
|
||||
// return 1;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 删除商品信息信息
|
||||
*
|
||||
* @param id 商品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return productMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public ProductDetailVO queryDetail(Long id) {
|
||||
ProductDetailVO res = new ProductDetailVO();
|
||||
Product d = productMapper.selectById(id);
|
||||
res.setProduct(d);
|
||||
LambdaQueryWrapper<Sku> qw = new LambdaQueryWrapper<>();
|
||||
qw.eq(Sku::getProductId, id);
|
||||
res.setSkus(skuMapper.selectList(qw));
|
||||
if (d.getBrandId() != null) {
|
||||
res.setBrand(brandMapper.selectById(d.getBrandId()));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package com.wzj.soopin.goods.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.domain.entity.Sku;
|
||||
import com.wzj.soopin.goods.domain.query.SkuQuery;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.goods.service.SkuService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* sku信息Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuService {
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
|
||||
/**
|
||||
* 查询sku信息
|
||||
*
|
||||
* @param id sku信息主键
|
||||
* @return sku信息
|
||||
*/
|
||||
public Sku selectById(Long id) {
|
||||
return skuMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询sku信息列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return sku信息
|
||||
*/
|
||||
public List<Sku> selectList(SkuQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<Sku> qw = new QueryWrapper<>();
|
||||
Long productId = query.getProductId();
|
||||
if (productId != null) {
|
||||
qw.eq("product_id", productId);
|
||||
}
|
||||
String outSkuId = query.getOutSkuId();
|
||||
if (!StringUtils.isEmpty(outSkuId)) {
|
||||
qw.eq("out_sku_id", outSkuId);
|
||||
}
|
||||
BigDecimal price = query.getPrice();
|
||||
if (price != null) {
|
||||
qw.eq("price", price);
|
||||
}
|
||||
String pic = query.getPic();
|
||||
if (!StringUtils.isEmpty(pic)) {
|
||||
qw.eq("pic", pic);
|
||||
}
|
||||
String spData = query.getSpData();
|
||||
if (!StringUtils.isEmpty(spData)) {
|
||||
qw.eq("sp_data", spData);
|
||||
}
|
||||
return skuMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增sku信息
|
||||
*
|
||||
* @param sku sku信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Sku sku) {
|
||||
sku.setCreateTime(LocalDateTime.now());
|
||||
return skuMapper.insert(sku);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改sku信息
|
||||
*
|
||||
* @param sku sku信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Sku sku) {
|
||||
return skuMapper.updateById(sku);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除sku信息信息
|
||||
*
|
||||
* @param id sku信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return skuMapper.deleteById(id);
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package com.wzj.soopin.member.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.wzj.soopin.member.domain.po.Address;
|
||||
|
||||
@ -10,6 +11,7 @@ import java.util.List;
|
||||
*
|
||||
* @author sjm
|
||||
*/
|
||||
@InterceptorIgnore(tenantLine = "true") // 忽略租户过滤
|
||||
public interface AddressMapper extends BaseMapper<Address> {
|
||||
/**
|
||||
* 查询【请填写功能名称】列表
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.wzj.soopin.member.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@ -16,6 +17,7 @@ import java.util.List;
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
public interface MemberMapper extends BaseMapper<Member> {
|
||||
/**
|
||||
* 查询会员信息列表
|
||||
|
@ -143,5 +143,12 @@
|
||||
<version>0.2.9</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot Starter Data JPA -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
@ -1,28 +1,40 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.member.domain.bo.FeedbackBO;
|
||||
import com.wzj.soopin.member.domain.bo.MemberAccountBO;
|
||||
import com.wzj.soopin.member.domain.bo.MemberBO;
|
||||
import com.wzj.soopin.member.domain.po.Feedback;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.po.MemberAccount;
|
||||
import com.wzj.soopin.member.domain.vo.FeedbackVO;
|
||||
import com.wzj.soopin.member.domain.vo.MemberAccountVO;
|
||||
import com.wzj.soopin.member.domain.vo.MemberVO;
|
||||
import com.wzj.soopin.order.convert.AftersaleConvert;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.service.AftersaleService;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import com.wzj.soopin.order.domain.form.DealWithAftersaleForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleQuery;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerRefundOrderDetailVO;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerRefundOrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
|
||||
import com.wzj.soopin.order.service.AftersaleService;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.service.impl.AftersaleServiceImpl;
|
||||
import com.wzj.soopin.order.utils.SecurityUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.redis.redis.RedisService;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -40,27 +52,30 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class AftersaleController extends BaseController {
|
||||
@Autowired
|
||||
private AftersaleService service;
|
||||
private AftersaleServiceImpl service;
|
||||
@Autowired
|
||||
private AftersaleConvert convert;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private AftersaleService aftersaleService;
|
||||
|
||||
|
||||
@ApiOperation("查询订单售后列表")
|
||||
@PostMapping("/list")
|
||||
public R<Page<AftersaleVO>> list(@RequestBody AftersaleBo query, Page<Aftersale> page) {
|
||||
Page<Aftersale> list = aftersaleService.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
// @ApiOperation("查询订单售后列表")
|
||||
// @PostMapping("/list")
|
||||
// public ResponseEntity<Page<ManagerRefundOrderVO>> list(@RequestBody ManagerAftersaleOrderForm query, Pageable page) {
|
||||
// List<ManagerRefundOrderVO> list = service.selectList(query, page);
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("导出订单售后列表")
|
||||
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(AftersaleQuery query) {
|
||||
// List<Aftersale> list = service.selectList(query, null);
|
||||
// ExcelUtil<AftersaleVO> util = new ExcelUtil<>(AftersaleVO.class);
|
||||
// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单售后数据"));
|
||||
return null;
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(AftersaleBo query) {
|
||||
List<Aftersale> list = service.list(query.toWrapper());
|
||||
ExcelUtil<AftersaleVO> util = new ExcelUtil<>(AftersaleVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取订单售后详细信息")
|
||||
@ -71,16 +86,16 @@ public class AftersaleController extends BaseController {
|
||||
|
||||
@ApiOperation("新增订单售后")
|
||||
@Log(title = "订单售后", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody Aftersale aftersale) {
|
||||
return ResponseEntity.ok(service.insert(aftersale));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody AftersaleBo query) {
|
||||
return R.ok(service.save(convert.toPo(query)));
|
||||
}
|
||||
|
||||
@ApiOperation("修改订单售后")
|
||||
@Log(title = "订单售后", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody Aftersale aftersale) {
|
||||
return ResponseEntity.ok(service.update(aftersale));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody Aftersale aftersale) {
|
||||
return R.ok(service.updateById(aftersale));
|
||||
}
|
||||
|
||||
@ApiOperation("删除订单售后")
|
||||
@ -114,7 +129,7 @@ public class AftersaleController extends BaseController {
|
||||
|
||||
@ApiOperation("查看日志")
|
||||
@GetMapping("/log/{orderId}")
|
||||
public ResponseEntity<List<OrderOperateHistoryVO>> log(@PathVariable Long orderId){
|
||||
return ResponseEntity.ok(service.log(orderId));
|
||||
public R log(@PathVariable Long orderId){
|
||||
return R.ok(service.log(orderId));
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,32 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.member.domain.bo.MemberAccountBO;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.po.MemberAccount;
|
||||
import com.wzj.soopin.member.domain.vo.MemberAccountVO;
|
||||
import com.wzj.soopin.order.convert.AftersaleItemConvert;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleBo;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleItemBo;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.service.AftersaleItemService;
|
||||
import com.wzj.soopin.order.service.impl.AftersaleItemServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -31,9 +42,11 @@ import java.util.List;
|
||||
@RequestMapping("/oms/aftersaleItem")
|
||||
public class AftersaleItemController extends BaseController {
|
||||
@Autowired
|
||||
private AftersaleItemService service;
|
||||
private AftersaleItemServiceImpl service;
|
||||
@Autowired
|
||||
private AftersaleItemConvert convert;
|
||||
@Autowired
|
||||
private AftersaleItemService aftersaleItemService;
|
||||
|
||||
// @ApiOperation("查询订单售后列表")
|
||||
// @PostMapping("/list")
|
||||
@ -42,39 +55,50 @@ public class AftersaleItemController extends BaseController {
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("查询订单售后列表")
|
||||
@PostMapping("/list")
|
||||
public R<Page<AftersaleItemVO>> list(@RequestBody AftersaleItemBo query, Page<AftersaleItem> page) {
|
||||
Page<AftersaleItem> list = aftersaleItemService.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ApiOperation("导出订单售后列表")
|
||||
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(AftersaleItemQuery query) {
|
||||
List<AftersaleItem> list = service.selectList(query, null);
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(AftersaleItemBo query) {
|
||||
List<AftersaleItem> list = service.list(query.toWrapper());
|
||||
ExcelUtil<AftersaleItemVO> util = new ExcelUtil<>(AftersaleItemVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单售后数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取订单售后详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<AftersaleItem> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
return ResponseEntity.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增订单售后")
|
||||
@Log(title = "订单售后", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody AftersaleItem aftersaleItem) {
|
||||
return ResponseEntity.ok(service.insert(aftersaleItem));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody AftersaleItemBo aftersaleItem) {
|
||||
return R.ok(service.save(convert.toPo(aftersaleItem)));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("修改订单售后")
|
||||
@Log(title = "订单售后", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody AftersaleItem aftersaleItem) {
|
||||
return ResponseEntity.ok(service.update(aftersaleItem));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody AftersaleItem aftersaleItem) {
|
||||
return R.ok(service.updateById(aftersaleItem));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("删除订单售后")
|
||||
@Log(title = "订单售后", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +1,36 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.convert.OrderConvert;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleBo;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleItemBo;
|
||||
import com.wzj.soopin.order.domain.bo.OrderBo;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.form.DeliverProductForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.domain.query.OrderQuery;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerOrderDetailVO;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerOrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.service.OrderService;
|
||||
import com.wzj.soopin.order.service.impl.OrderServiceImpl;
|
||||
import com.wzj.soopin.order.utils.SecurityUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.redis.redis.RedisService;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -36,66 +46,81 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class OrderController extends BaseController {
|
||||
@Autowired
|
||||
private OrderService service;
|
||||
private OrderServiceImpl service;
|
||||
@Autowired
|
||||
private OrderConvert convert;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
@ApiOperation("查询订单表列表")
|
||||
|
||||
|
||||
|
||||
@ApiOperation("查询订单售后列表")
|
||||
@PostMapping("/list")
|
||||
public ResponseEntity<Page<ManagerOrderVO>> list(@RequestBody ManagerOrderQueryForm query, Pageable page) {
|
||||
return ResponseEntity.ok(service.selectList(query, page));
|
||||
public R<Page<OrderVO>> list(@RequestBody OrderBo query, Page<Order> page) {
|
||||
Page<Order> list = service.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
// @ApiOperation("查询订单表列表")
|
||||
// @PostMapping("/list")
|
||||
// public R<IPage<ManagerOrderVO>> list(@RequestBody ManagerOrderQueryForm query, IPage page) {
|
||||
// Page<Order> list = (Page<Order>) orderService.page(page,query.toWrapper() );
|
||||
// return R.ok(convert.toVO(list));
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@ApiOperation("修改收件人信息")
|
||||
@PostMapping("/receiver/update")
|
||||
public ResponseEntity<Boolean> updateReceiver(@RequestBody Order order) {
|
||||
return ResponseEntity.ok(service.updateReceiver(order));
|
||||
public R updateReceiver(@RequestBody Order order) {
|
||||
return R.ok(service.updateById(order));
|
||||
}
|
||||
|
||||
@ApiOperation("导出订单表列表")
|
||||
@Log(title = "订单表", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(OrderQuery query) {
|
||||
// List<Order> list = service.selectList(query, null);
|
||||
// ExcelUtil<OrderVO> util = new ExcelUtil<>(OrderVO.class);
|
||||
// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单表数据"));
|
||||
return null;
|
||||
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(OrderBo query) {
|
||||
List<Order> list = service.list(query.toWrapper());
|
||||
ExcelUtil<OrderVO> util = new ExcelUtil<>(OrderVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取订单表详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<ManagerOrderDetailVO> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R<ManagerOrderDetailVO> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.selectById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增订单表")
|
||||
@Log(title = "订单表", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody Order order) {
|
||||
return ResponseEntity.ok(service.insert(order));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody Order order) {
|
||||
return R.ok(service.save(order));
|
||||
}
|
||||
|
||||
@ApiOperation("修改订单表")
|
||||
@Log(title = "订单表", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody Order order) {
|
||||
return ResponseEntity.ok(service.update(order));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody Order order) {
|
||||
return R.ok(service.updateById(order));
|
||||
}
|
||||
|
||||
@ApiOperation("删除订单表")
|
||||
@Log(title = "订单表", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("添加备注")
|
||||
@Log(title = "订单表", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/merchantNote/add")
|
||||
public ResponseEntity<Integer> saveMerchantNote(@RequestBody Order order){
|
||||
return ResponseEntity.ok(service.saveMerchantNote(order));
|
||||
public R<Order> saveMerchantNote(@RequestBody Order order){
|
||||
return service.saveMerchantNote(order);
|
||||
}
|
||||
|
||||
@ApiOperation("管理后台订单发货")
|
||||
@ -121,14 +146,13 @@ public class OrderController extends BaseController {
|
||||
|
||||
@ApiOperation("订单日志")
|
||||
@GetMapping("/log/{orderId}")
|
||||
public ResponseEntity<List<OrderOperateHistoryVO>> log(@PathVariable Long orderId){
|
||||
return ResponseEntity.ok(service.log(orderId));
|
||||
public R log(@PathVariable Long orderId){
|
||||
return R.ok(service.log(orderId));
|
||||
}
|
||||
|
||||
@ApiOperation("订单解密")
|
||||
@GetMapping("/decryptPhone/{orderId}")
|
||||
public ResponseEntity<String> decryptPhone(@PathVariable Long orderId){
|
||||
String decryptPhone = service.decryptPhone(orderId);
|
||||
return ResponseEntity.ok(decryptPhone);
|
||||
public R decryptPhone(@PathVariable Long orderId){
|
||||
return service.decryptPhone(orderId);
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,29 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.convert.OrderDeliveryHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.bo.OrderBo;
|
||||
import com.wzj.soopin.order.domain.bo.OrderDeliveryHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.form.DeliverProductForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerOrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderDeliveryHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.service.OrderDeliveryHistoryService;
|
||||
import com.wzj.soopin.order.service.impl.OrderDeliveryHistoryServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -30,9 +39,11 @@ import java.util.List;
|
||||
@RequestMapping("/oms/orderDeliveryHistory")
|
||||
public class OrderDeliveryHistoryController extends BaseController {
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryService service;
|
||||
private OrderDeliveryHistoryServiceImpl service;
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryConvert convert;
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryService historyService;
|
||||
|
||||
// @ApiOperation("查询订单发货记录列表")
|
||||
// @PostMapping("/list")
|
||||
@ -41,39 +52,49 @@ public class OrderDeliveryHistoryController extends BaseController {
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("查询订单表列表")
|
||||
@PostMapping("/list")
|
||||
public R<IPage<OrderDeliveryHistoryVO>> list(@RequestBody OrderDeliveryHistoryBo query, Page<OrderDeliveryHistory> page) {
|
||||
Page<OrderDeliveryHistory> list = historyService.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出订单发货记录列表")
|
||||
@Log(title = "订单发货记录", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(OrderDeliveryHistoryQuery query) {
|
||||
List<OrderDeliveryHistory> list = service.selectList(query, null);
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(OrderDeliveryHistoryBo query) {
|
||||
List<OrderDeliveryHistory> list = service.list(query.toWrapper());
|
||||
ExcelUtil<OrderDeliveryHistoryVO> util = new ExcelUtil<>(OrderDeliveryHistoryVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单发货记录数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单发货记录数据"));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取订单发货记录详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<OrderDeliveryHistory> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R<OrderDeliveryHistory> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("新增订单发货记录")
|
||||
@Log(title = "订单发货记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return ResponseEntity.ok(service.insert(orderDeliveryHistory));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return R.ok(service.save(orderDeliveryHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("修改订单发货记录")
|
||||
@Log(title = "订单发货记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return ResponseEntity.ok(service.update(orderDeliveryHistory));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return R.ok(service.updateById(orderDeliveryHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("删除订单发货记录")
|
||||
@Log(title = "订单发货记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,35 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.member.domain.bo.MemberBO;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.vo.MemberVO;
|
||||
import com.wzj.soopin.order.convert.OrderItemConvert;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleBo;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleItemBo;
|
||||
import com.wzj.soopin.order.domain.bo.OrderDeliveryHistoryBo;
|
||||
import com.wzj.soopin.order.domain.bo.OrderItemBo;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderDeliveryHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.service.OrderItemService;
|
||||
import com.wzj.soopin.order.service.impl.OrderItemServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -30,9 +45,11 @@ import java.util.List;
|
||||
@RequestMapping("/oms/orderItem")
|
||||
public class OrderItemController extends BaseController {
|
||||
@Autowired
|
||||
private OrderItemService service;
|
||||
private OrderItemServiceImpl service;
|
||||
@Autowired
|
||||
private OrderItemConvert convert;
|
||||
@Autowired
|
||||
private OrderItemService orderItemService;
|
||||
|
||||
// @ApiOperation("查询订单中所包含的商品列表")
|
||||
// @PostMapping("/list")
|
||||
@ -41,39 +58,47 @@ public class OrderItemController extends BaseController {
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("导出订单中所包含的商品列表")
|
||||
@Log(title = "订单中所包含的商品", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(OrderItemQuery query) {
|
||||
List<OrderItem> list = service.selectList(query, null);
|
||||
@ApiOperation("查询订单中所包含的商品列表")
|
||||
@PostMapping("/list")
|
||||
public R<IPage<OrderItemVO>> list(@RequestBody OrderItemBo query, Page<OrderItem> page) {
|
||||
Page<OrderItem> list = orderItemService.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出会员信息列表")
|
||||
@Log(title = "会员信息", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(OrderItemBo query) {
|
||||
List<OrderItem> list = service.list(query.toWrapper());
|
||||
ExcelUtil<OrderItemVO> util = new ExcelUtil<>(OrderItemVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单中所包含的商品数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单中所包含的商品数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取订单中所包含的商品详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<OrderItem> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增订单中所包含的商品")
|
||||
@Log(title = "订单中所包含的商品", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody OrderItem orderItem) {
|
||||
return ResponseEntity.ok(service.insert(orderItem));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody OrderItem orderItem) {
|
||||
return R.ok(service.save(orderItem));
|
||||
}
|
||||
|
||||
@ApiOperation("修改订单中所包含的商品")
|
||||
@Log(title = "订单中所包含的商品", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody OrderItem orderItem) {
|
||||
return ResponseEntity.ok(service.update(orderItem));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody OrderItem orderItem) {
|
||||
return R.ok(service.updateById(orderItem));
|
||||
}
|
||||
|
||||
@ApiOperation("删除订单中所包含的商品")
|
||||
@Log(title = "订单中所包含的商品", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,28 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.bo.OrderItemBo;
|
||||
import com.wzj.soopin.order.domain.bo.OrderOperateHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.OrderItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.service.OrderOperateHistoryService;
|
||||
import com.wzj.soopin.order.service.impl.OrderOperateHistoryServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -30,9 +38,11 @@ import java.util.List;
|
||||
@RequestMapping("/oms/orderOperateHistory")
|
||||
public class OrderOperateHistoryController extends BaseController {
|
||||
@Autowired
|
||||
private OrderOperateHistoryService service;
|
||||
private OrderOperateHistoryServiceImpl service;
|
||||
@Autowired
|
||||
private OrderOperateHistoryConvert convert;
|
||||
@Autowired
|
||||
private OrderOperateHistoryService orderOperateHistoryService;
|
||||
|
||||
// @ApiOperation("查询订单操作历史记录列表")
|
||||
// @PostMapping("/list")
|
||||
@ -41,39 +51,47 @@ public class OrderOperateHistoryController extends BaseController {
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("查询订单操作历史记录列表")
|
||||
@PostMapping("/list")
|
||||
public R<IPage<OrderOperateHistoryVO>> list(@RequestBody OrderOperateHistoryBo query, Page<OrderOperateHistory> page) {
|
||||
Page<OrderOperateHistory> list = service.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出订单操作历史记录列表")
|
||||
@Log(title = "订单操作历史记录", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(OrderOperateHistoryQuery query) {
|
||||
List<OrderOperateHistory> list = service.selectList(query, null);
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(OrderOperateHistoryBo query) {
|
||||
List<OrderOperateHistory> list = service.list(query.toWrapper());
|
||||
ExcelUtil<OrderOperateHistoryVO> util = new ExcelUtil<>(OrderOperateHistoryVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "订单操作历史记录数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单操作历史记录数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取订单操作历史记录详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<OrderOperateHistory> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增订单操作历史记录")
|
||||
@Log(title = "订单操作历史记录", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody OrderOperateHistory orderOperateHistory) {
|
||||
return ResponseEntity.ok(service.insert(orderOperateHistory));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody OrderOperateHistory orderOperateHistory) {
|
||||
return R.ok(service.save(orderOperateHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("修改订单操作历史记录")
|
||||
@Log(title = "订单操作历史记录", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody OrderOperateHistory orderOperateHistory) {
|
||||
return ResponseEntity.ok(service.update(orderOperateHistory));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody OrderOperateHistory orderOperateHistory) {
|
||||
return R.ok(service.updateById(orderOperateHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("删除订单操作历史记录")
|
||||
@Log(title = "订单操作历史记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,27 @@
|
||||
package com.wzj.soopin.order.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.convert.WechatPaymentHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.bo.OrderOperateHistoryBo;
|
||||
import com.wzj.soopin.order.domain.bo.WechatPaymentHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.query.WechatPaymentHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.domain.vo.WechatPaymentHistoryVO;
|
||||
import com.wzj.soopin.order.service.WechatPaymentHistoryService;
|
||||
import com.wzj.soopin.order.service.impl.WechatPaymentHistoryServiceImpl;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -30,9 +37,11 @@ import java.util.List;
|
||||
@RequestMapping("/pms/omsWechatPaymentHistory")
|
||||
public class WechatPaymentHistoryController extends BaseController {
|
||||
@Autowired
|
||||
private WechatPaymentHistoryService service;
|
||||
private WechatPaymentHistoryServiceImpl service;
|
||||
@Autowired
|
||||
private WechatPaymentHistoryConvert convert;
|
||||
@Autowired
|
||||
private WechatPaymentHistoryService wechatPaymentHistoryService;
|
||||
|
||||
// @ApiOperation("查询微信订单表列表")
|
||||
// @PostMapping("/list")
|
||||
@ -41,39 +50,47 @@ public class WechatPaymentHistoryController extends BaseController {
|
||||
// return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
|
||||
// }
|
||||
|
||||
@ApiOperation("查询微信订单表列表")
|
||||
@PostMapping("/list")
|
||||
public R<IPage<WechatPaymentHistoryVO>> list(@RequestBody WechatPaymentHistoryBo query, Page<WechatPaymentHistory> page) {
|
||||
Page<WechatPaymentHistory> list = wechatPaymentHistoryService.page(page,query.toWrapper() );
|
||||
return R.ok(convert.toVO(list));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("导出微信订单表列表")
|
||||
@Log(title = "微信订单表", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public ResponseEntity<String> export(WechatPaymentHistoryQuery query) {
|
||||
List<WechatPaymentHistory> list = service.selectList(query, null);
|
||||
@GetMapping("export")
|
||||
public ResponseEntity<String> export(WechatPaymentHistoryBo query) {
|
||||
List<WechatPaymentHistory> list = service.list(query.toWrapper());
|
||||
ExcelUtil<WechatPaymentHistoryVO> util = new ExcelUtil<>(WechatPaymentHistoryVO.class);
|
||||
return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "微信订单表数据"));
|
||||
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "微信订单表数据"));
|
||||
}
|
||||
|
||||
@ApiOperation("获取微信订单表详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public ResponseEntity<WechatPaymentHistory> getInfo(@PathVariable("id") Long id) {
|
||||
return ResponseEntity.ok(service.selectById(id));
|
||||
public R getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.getById(id));
|
||||
}
|
||||
|
||||
@ApiOperation("新增微信订单表")
|
||||
@Log(title = "微信订单表", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public ResponseEntity<Integer> add(@RequestBody WechatPaymentHistory wechatPaymentHistory) {
|
||||
return ResponseEntity.ok(service.insert(wechatPaymentHistory));
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody WechatPaymentHistory wechatPaymentHistory) {
|
||||
return R.ok(service.save(wechatPaymentHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("修改微信订单表")
|
||||
@Log(title = "微信订单表", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public ResponseEntity<Integer> edit(@RequestBody WechatPaymentHistory wechatPaymentHistory) {
|
||||
return ResponseEntity.ok(service.update(wechatPaymentHistory));
|
||||
@PostMapping("/update")
|
||||
public R edit(@RequestBody WechatPaymentHistory wechatPaymentHistory) {
|
||||
return R.ok(service.updateById(wechatPaymentHistory));
|
||||
}
|
||||
|
||||
@ApiOperation("删除微信订单表")
|
||||
@Log(title = "微信订单表", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Integer> remove(@PathVariable Long id) {
|
||||
return ResponseEntity.ok(service.deleteById(id));
|
||||
public R remove(@PathVariable Long id) {
|
||||
return R.ok(service.removeById(id));
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,14 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
import com.wzj.soopin.member.domain.bo.MemberAddressBO;
|
||||
import com.wzj.soopin.member.domain.po.MemberAddress;
|
||||
import com.wzj.soopin.member.domain.vo.MemberAddressVO;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleBo;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerRefundOrderVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -11,7 +18,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface AftersaleConvert {
|
||||
public interface AftersaleConvert extends BaseConverter<AftersaleVO, AftersaleBo,Aftersale> {
|
||||
|
||||
List<AftersaleVO> dos2vos(List<Aftersale> list);
|
||||
// List<AftersaleVO> dos2vos(List<Aftersale> list);
|
||||
}
|
||||
|
@ -1,8 +1,14 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
import com.wzj.soopin.member.domain.bo.MemberAccountBO;
|
||||
import com.wzj.soopin.order.domain.bo.AftersaleItemBo;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -11,7 +17,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface AftersaleItemConvert {
|
||||
public interface AftersaleItemConvert extends BaseConverter<AftersaleItemVO, AftersaleItemBo, AftersaleItem> {
|
||||
|
||||
List<AftersaleItemVO> dos2vos(List<AftersaleItem> list);
|
||||
// List<AftersaleItemVO> dos2vos(List<AftersaleItem> list);
|
||||
}
|
||||
|
@ -1,9 +1,20 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
|
||||
import com.wzj.soopin.order.domain.bo.OrderBo;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.domain.query.OrderQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerOrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -12,9 +23,9 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface OrderConvert {
|
||||
public interface OrderConvert extends BaseConverter<OrderVO, OrderBo, Order> {
|
||||
|
||||
List<OrderVO> dos2vos(List<Order> list);
|
||||
// List<OrderVO> dos2vos(List<Order> list);
|
||||
|
||||
OrderVO do2vo(Order order);
|
||||
// OrderVO do2vo(Order order);
|
||||
}
|
||||
|
@ -1,8 +1,15 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.bo.OrderDeliveryHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.form.DeliverProductForm;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderDeliveryHistoryVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -11,7 +18,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface OrderDeliveryHistoryConvert {
|
||||
public interface OrderDeliveryHistoryConvert extends BaseConverter<OrderDeliveryHistoryVO, OrderDeliveryHistoryBo, OrderDeliveryHistory> {
|
||||
|
||||
List<OrderDeliveryHistoryVO> dos2vos(List<OrderDeliveryHistory> list);
|
||||
// List<OrderDeliveryHistoryVO> dos2vos(List<OrderDeliveryHistory> list);
|
||||
}
|
||||
|
@ -1,8 +1,13 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
import com.wzj.soopin.order.domain.bo.OrderItemBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderItemVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -11,7 +16,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface OrderItemConvert {
|
||||
public interface OrderItemConvert extends BaseConverter<OrderItemVO, OrderItemBo, OrderItem > {
|
||||
|
||||
List<OrderItemVO> dos2vos(List<OrderItem> list);
|
||||
// List<OrderItemVO> dos2vos(List<OrderItem> list);
|
||||
}
|
||||
|
@ -1,9 +1,14 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
|
||||
import com.wzj.soopin.order.domain.bo.OrderOperateHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -12,7 +17,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface OrderOperateHistoryConvert {
|
||||
public interface OrderOperateHistoryConvert extends BaseConverter<OrderOperateHistoryVO, OrderOperateHistoryBo,OrderOperateHistory> {
|
||||
|
||||
List<OrderOperateHistoryVO> dos2vos(List<OrderOperateHistory> list);
|
||||
// List<OrderOperateHistoryVO> dos2vos(List<OrderOperateHistory> list);
|
||||
}
|
||||
|
@ -1,8 +1,13 @@
|
||||
package com.wzj.soopin.order.convert;
|
||||
|
||||
import com.wzj.soopin.order.domain.bo.WechatPaymentHistoryBo;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import com.wzj.soopin.order.domain.query.WechatPaymentHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.AftersaleVO;
|
||||
import com.wzj.soopin.order.domain.vo.WechatPaymentHistoryVO;
|
||||
import org.dromara.common.web.core.BaseConverter;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
@ -11,7 +16,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface WechatPaymentHistoryConvert {
|
||||
public interface WechatPaymentHistoryConvert extends BaseConverter<WechatPaymentHistoryVO, WechatPaymentHistoryBo,WechatPaymentHistory> {
|
||||
|
||||
List<WechatPaymentHistoryVO> dos2vos(List<WechatPaymentHistory> list);
|
||||
// List<WechatPaymentHistoryVO> dos2vos(List<WechatPaymentHistory> list);
|
||||
}
|
||||
|
@ -0,0 +1,125 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单售后 查询 对象")
|
||||
public class AftersaleBo {
|
||||
@ApiModelProperty("MEMBER_ID 精确匹配")
|
||||
private Long memberId;
|
||||
|
||||
@ApiModelProperty("订单id 精确匹配")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("退款金额 精确匹配")
|
||||
private BigDecimal returnAmount;
|
||||
|
||||
@ApiModelProperty("售后类型:1:退款,2:退货退款 精确匹配")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("申请状态:0->待处理;1->退货中;2->已完成;3->已拒绝 精确匹配")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("处理时间 精确匹配")
|
||||
private LocalDateTime handleTime;
|
||||
|
||||
@ApiModelProperty("退货数量 精确匹配")
|
||||
private Integer quantity;
|
||||
|
||||
@ApiModelProperty("原因 精确匹配")
|
||||
private String reason;
|
||||
|
||||
@ApiModelProperty("描述 精确匹配")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("凭证图片,以逗号隔开 精确匹配")
|
||||
private String proofPics;
|
||||
|
||||
@ApiModelProperty("处理备注 精确匹配")
|
||||
private String handleNote;
|
||||
|
||||
@ApiModelProperty("处理人员 精确匹配")
|
||||
private String handleMan;
|
||||
|
||||
@ApiModelProperty(name = "startTime", value = "开始时间", required = true, dataType = "Date")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@ApiModelProperty(name = "endTime", value = "结束时间", required = true, dataType = "Date")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
public Wrapper<Aftersale> toWrapper() {
|
||||
LambdaQueryWrapper<Aftersale> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(Aftersale::getMemberId, memberId);
|
||||
}
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(Aftersale::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (returnAmount != null) {
|
||||
queryWrapper.eq(Aftersale::getReturnAmount, returnAmount);
|
||||
}
|
||||
|
||||
if (type != null) {
|
||||
queryWrapper.eq(Aftersale::getType, type);
|
||||
}
|
||||
|
||||
if (status != null) {
|
||||
queryWrapper.eq(Aftersale::getStatus, status);
|
||||
}
|
||||
|
||||
if (handleTime != null) {
|
||||
queryWrapper.eq(Aftersale::getHandleTime, handleTime);
|
||||
}
|
||||
|
||||
if (quantity != null) {
|
||||
queryWrapper.eq(Aftersale::getQuantity, quantity);
|
||||
}
|
||||
|
||||
if (reason != null && !reason.isEmpty()) {
|
||||
queryWrapper.eq(Aftersale::getReason, reason);
|
||||
}
|
||||
|
||||
if (description != null && !description.isEmpty()) {
|
||||
queryWrapper.eq(Aftersale::getDescription, description);
|
||||
}
|
||||
|
||||
if (proofPics != null && !proofPics.isEmpty()) {
|
||||
queryWrapper.eq(Aftersale::getProofPics, proofPics);
|
||||
}
|
||||
|
||||
if (handleNote != null && !handleNote.isEmpty()) {
|
||||
queryWrapper.eq(Aftersale::getHandleNote, handleNote);
|
||||
}
|
||||
|
||||
if (handleMan != null && !handleMan.isEmpty()) {
|
||||
queryWrapper.eq(Aftersale::getHandleMan, handleMan);
|
||||
}
|
||||
|
||||
if (startTime != null && endTime != null) {
|
||||
queryWrapper.between(Aftersale::getCreateTime, startTime, endTime);
|
||||
} else if (startTime != null) {
|
||||
queryWrapper.ge(Aftersale::getCreateTime, startTime);
|
||||
} else if (endTime != null) {
|
||||
queryWrapper.le(Aftersale::getCreateTime, endTime);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单中所包含的商品 查询 对象")
|
||||
public class AftersaleItemBo {
|
||||
|
||||
@ApiModelProperty("MEMBER_ID 精确匹配")
|
||||
private Long memberId;
|
||||
|
||||
@ApiModelProperty("订单id 精确匹配")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("子订单id 精确匹配")
|
||||
private Long orderItemId;
|
||||
|
||||
@ApiModelProperty("退款金额 精确匹配")
|
||||
private BigDecimal returnAmount;
|
||||
|
||||
@ApiModelProperty("退货数量 精确匹配")
|
||||
private Integer quantity;
|
||||
|
||||
@ApiModelProperty("售后单id")
|
||||
private Long aftersaleId;
|
||||
|
||||
public Wrapper<AftersaleItem> toWrapper() {
|
||||
LambdaQueryWrapper<AftersaleItem> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getMemberId, memberId);
|
||||
}
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (orderItemId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getOrderItemId, orderItemId);
|
||||
}
|
||||
|
||||
if (returnAmount != null) {
|
||||
queryWrapper.eq(AftersaleItem::getReturnAmount, returnAmount);
|
||||
}
|
||||
|
||||
if (quantity != null) {
|
||||
queryWrapper.eq(AftersaleItem::getQuantity, quantity);
|
||||
}
|
||||
|
||||
if (aftersaleId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getAftersaleId, aftersaleId);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
@ -0,0 +1,220 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import jakarta.persistence.PrePersist;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.Random;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单表 查询 对象")
|
||||
public class OrderBo {
|
||||
|
||||
@ApiModelProperty("MEMBER_ID 精确匹配")
|
||||
private Long memberId;
|
||||
|
||||
@ApiModelProperty("订单编号")
|
||||
private String orderSn;
|
||||
|
||||
@ApiModelProperty("用户帐号 精确匹配")
|
||||
private String memberUsernameLike;
|
||||
|
||||
@ApiModelProperty("订单总金额 精确匹配")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("采购价 精确匹配")
|
||||
private BigDecimal purchasePrice;
|
||||
|
||||
@ApiModelProperty("应付金额(实际支付金额) 精确匹配")
|
||||
private BigDecimal payAmount;
|
||||
|
||||
@ApiModelProperty("运费金额 精确匹配")
|
||||
private BigDecimal freightAmount;
|
||||
|
||||
@ApiModelProperty("支付方式:0->未支付;1->支付宝;2->微信 精确匹配")
|
||||
private Integer payType;
|
||||
|
||||
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 精确匹配")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功 精确匹配")
|
||||
private Integer aftersaleStatus;
|
||||
|
||||
@ApiModelProperty("物流公司 精确匹配")
|
||||
private String deliveryCompany;
|
||||
|
||||
@ApiModelProperty("物流单号 精确匹配")
|
||||
private String deliverySn;
|
||||
|
||||
@ApiModelProperty("自动确认时间(天) 精确匹配")
|
||||
private Integer autoConfirmDay;
|
||||
|
||||
@ApiModelProperty("收货人姓名 精确匹配")
|
||||
private String receiverNameLike;
|
||||
|
||||
@ApiModelProperty("收货人电话 精确匹配")
|
||||
private String receiverPhone;
|
||||
|
||||
@ApiModelProperty("收货人邮编 精确匹配")
|
||||
private String receiverPostCode;
|
||||
|
||||
@ApiModelProperty("省份/直辖市 精确匹配")
|
||||
private String receiverProvince;
|
||||
|
||||
@ApiModelProperty("城市 精确匹配")
|
||||
private String receiverCity;
|
||||
|
||||
@ApiModelProperty("区 精确匹配")
|
||||
private String receiverDistrict;
|
||||
|
||||
@ApiModelProperty("省份/直辖市id 精确匹配")
|
||||
private Long receiverProvinceId;
|
||||
|
||||
@ApiModelProperty("城市id 精确匹配")
|
||||
private Long receiverCityId;
|
||||
|
||||
@ApiModelProperty("区id 精确匹配")
|
||||
private Long receiverDistrictId;
|
||||
|
||||
@ApiModelProperty("详细地址 精确匹配")
|
||||
private String receiverDetailAddress;
|
||||
|
||||
@ApiModelProperty("订单备注 精确匹配")
|
||||
private String note;
|
||||
|
||||
@ApiModelProperty("商家备注")
|
||||
private String merchantNote;
|
||||
|
||||
@ApiModelProperty("确认收货状态:0->未确认;1->已确认 精确匹配")
|
||||
private Integer confirmStatus;
|
||||
|
||||
@ApiModelProperty("删除状态:0->未删除;1->已删除 精确匹配")
|
||||
private Integer deleteStatus;
|
||||
|
||||
@ApiModelProperty("支付时间 精确匹配")
|
||||
private LocalDateTime paymentTime;
|
||||
|
||||
@ApiModelProperty("发货时间 精确匹配")
|
||||
private LocalDateTime deliveryTime;
|
||||
|
||||
@ApiModelProperty("确认收货时间 精确匹配")
|
||||
private LocalDateTime receiveTime;
|
||||
|
||||
@ApiModelProperty("创建订单开始时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@ApiModelProperty("创建订单结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
public Wrapper<Order> toWrapper() {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// 精确匹配字段
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(Order::getMemberId, memberId);
|
||||
}
|
||||
if (orderSn != null) {
|
||||
queryWrapper.eq(Order::getOrderSn, orderSn);
|
||||
}
|
||||
if (totalAmount != null) {
|
||||
queryWrapper.eq(Order::getTotalAmount, totalAmount);
|
||||
}
|
||||
if (purchasePrice != null) {
|
||||
queryWrapper.eq(Order::getPurchasePrice, purchasePrice);
|
||||
}
|
||||
if (payAmount != null) {
|
||||
queryWrapper.eq(Order::getPayAmount, payAmount);
|
||||
}
|
||||
if (merchantNote != null) {
|
||||
queryWrapper.eq(Order::getMerchantNote, merchantNote);
|
||||
}
|
||||
if (freightAmount != null) {
|
||||
queryWrapper.eq(Order::getFreightAmount, freightAmount);
|
||||
}
|
||||
if (payType != null) {
|
||||
queryWrapper.eq(Order::getPayType, payType);
|
||||
}
|
||||
if (status != null) {
|
||||
queryWrapper.eq(Order::getStatus, status);
|
||||
}
|
||||
if (aftersaleStatus != null) {
|
||||
queryWrapper.eq(Order::getAftersaleStatus, aftersaleStatus);
|
||||
}
|
||||
if (deliveryCompany != null &&!deliveryCompany.isEmpty()) {
|
||||
queryWrapper.eq(Order::getDeliveryCompany, deliveryCompany);
|
||||
}
|
||||
if (deliverySn != null &&!deliverySn.isEmpty()) {
|
||||
queryWrapper.eq(Order::getDeliverySn, deliverySn);
|
||||
}
|
||||
if (autoConfirmDay != null) {
|
||||
queryWrapper.eq(Order::getAutoConfirmDay, autoConfirmDay);
|
||||
}
|
||||
if (receiverPhone != null &&!receiverPhone.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverPhone, receiverPhone);
|
||||
}
|
||||
if (receiverPostCode != null &&!receiverPostCode.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverPostCode, receiverPostCode);
|
||||
}
|
||||
if (receiverProvince != null &&!receiverProvince.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverProvince, receiverProvince);
|
||||
}
|
||||
if (receiverCity != null &&!receiverCity.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverCity, receiverCity);
|
||||
}
|
||||
if (receiverDistrict != null &&!receiverDistrict.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverDistrict, receiverDistrict);
|
||||
}
|
||||
if (receiverProvinceId != null) {
|
||||
queryWrapper.eq(Order::getReceiverProvinceId, receiverProvinceId);
|
||||
}
|
||||
if (receiverCityId != null) {
|
||||
queryWrapper.eq(Order::getReceiverCityId, receiverCityId);
|
||||
}
|
||||
if (receiverDistrictId != null) {
|
||||
queryWrapper.eq(Order::getReceiverDistrictId, receiverDistrictId);
|
||||
}
|
||||
if (receiverDetailAddress != null &&!receiverDetailAddress.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverDetailAddress, receiverDetailAddress);
|
||||
}
|
||||
if (note != null &&!note.isEmpty()) {
|
||||
queryWrapper.eq(Order::getNote, note);
|
||||
}
|
||||
if (confirmStatus != null) {
|
||||
queryWrapper.eq(Order::getConfirmStatus, confirmStatus);
|
||||
}
|
||||
if (deleteStatus != null) {
|
||||
queryWrapper.eq(Order::getDeleteStatus, deleteStatus);
|
||||
}
|
||||
if (paymentTime != null) {
|
||||
queryWrapper.eq(Order::getPaymentTime, paymentTime);
|
||||
}
|
||||
if (deliveryTime != null) {
|
||||
queryWrapper.eq(Order::getDeliveryTime, deliveryTime);
|
||||
}
|
||||
if (receiveTime != null) {
|
||||
queryWrapper.eq(Order::getReceiveTime, receiveTime);
|
||||
}
|
||||
|
||||
|
||||
// 时间范围查询
|
||||
if (startTime != null && endTime != null) {
|
||||
queryWrapper.between(Order::getCreateTime, startTime, endTime);
|
||||
} else if (startTime != null) {
|
||||
queryWrapper.ge(Order::getCreateTime, startTime);
|
||||
} else if (endTime != null) {
|
||||
queryWrapper.le(Order::getCreateTime, endTime);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单发货记录 查询 对象")
|
||||
public class OrderDeliveryHistoryBo {
|
||||
@ApiModelProperty("订单id 精确匹配")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("物流公司 精确匹配")
|
||||
private String deliveryCompany;
|
||||
|
||||
@ApiModelProperty("物流单号 精确匹配")
|
||||
private String deliverySn;
|
||||
|
||||
public Wrapper<OrderDeliveryHistory> toWrapper() {
|
||||
LambdaQueryWrapper<OrderDeliveryHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (deliveryCompany != null && !deliveryCompany.isEmpty()) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getDeliveryCompany, deliveryCompany);
|
||||
}
|
||||
|
||||
if (deliverySn != null && !deliverySn.isEmpty()) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getDeliverySn, deliverySn);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单中所包含的商品 查询 对象")
|
||||
public class OrderItemBo {
|
||||
@ApiModelProperty("订单id 精确匹配")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("PRODUCT_ID 精确匹配")
|
||||
private Long productId;
|
||||
|
||||
@ApiModelProperty("商品编码 精确匹配")
|
||||
private String outProductId;
|
||||
|
||||
@ApiModelProperty("商品sku id 精确匹配")
|
||||
private Long skuId;
|
||||
|
||||
@ApiModelProperty("sku编码 精确匹配")
|
||||
private String outSkuId;
|
||||
|
||||
@ApiModelProperty("商品快照id 精确匹配")
|
||||
private Long productSnapshotId;
|
||||
|
||||
@ApiModelProperty("sku快照id 精确匹配")
|
||||
private Long skuSnapshotId;
|
||||
|
||||
@ApiModelProperty("展示图片 精确匹配")
|
||||
private String pic;
|
||||
|
||||
@ApiModelProperty("PRODUCT_NAME 精确匹配")
|
||||
private String productNameLike;
|
||||
|
||||
@ApiModelProperty("销售价格 精确匹配")
|
||||
private BigDecimal salePrice;
|
||||
|
||||
@ApiModelProperty("采购价 精确匹配")
|
||||
private BigDecimal purchasePrice;
|
||||
|
||||
@ApiModelProperty("购买数量 精确匹配")
|
||||
private Integer quantity;
|
||||
|
||||
@ApiModelProperty("商品分类id 精确匹配")
|
||||
private Long productCategoryId;
|
||||
|
||||
@ApiModelProperty("商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}] 精确匹配")
|
||||
private String spData;
|
||||
|
||||
public Wrapper<OrderItem> toWrapper() {
|
||||
LambdaQueryWrapper<OrderItem> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(OrderItem::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (productId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductId, productId);
|
||||
}
|
||||
|
||||
if (outProductId != null && !outProductId.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getOutProductId, outProductId);
|
||||
}
|
||||
|
||||
if (skuId != null) {
|
||||
queryWrapper.eq(OrderItem::getSkuId, skuId);
|
||||
}
|
||||
|
||||
if (outSkuId != null && !outSkuId.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getOutSkuId, outSkuId);
|
||||
}
|
||||
|
||||
if (productSnapshotId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductSnapshotId, productSnapshotId);
|
||||
}
|
||||
|
||||
if (skuSnapshotId != null) {
|
||||
queryWrapper.eq(OrderItem::getSkuSnapshotId, skuSnapshotId);
|
||||
}
|
||||
|
||||
if (pic != null && !pic.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getPic, pic);
|
||||
}
|
||||
|
||||
if (productNameLike != null && !productNameLike.isEmpty()) {
|
||||
queryWrapper.like(OrderItem::getProductName, productNameLike);
|
||||
}
|
||||
|
||||
if (salePrice != null) {
|
||||
queryWrapper.eq(OrderItem::getSalePrice, salePrice);
|
||||
}
|
||||
|
||||
if (purchasePrice != null) {
|
||||
queryWrapper.eq(OrderItem::getPurchasePrice, purchasePrice);
|
||||
}
|
||||
|
||||
if (quantity != null) {
|
||||
queryWrapper.eq(OrderItem::getQuantity, quantity);
|
||||
}
|
||||
|
||||
if (productCategoryId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductCategoryId, productCategoryId);
|
||||
}
|
||||
|
||||
if (spData != null && !spData.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getSpData, spData);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="订单操作历史记录 查询 对象")
|
||||
public class OrderOperateHistoryBo {
|
||||
|
||||
@ApiModelProperty("订单号 精确匹配")
|
||||
private String orderSn;
|
||||
|
||||
@ApiModelProperty("操作人:用户;系统;后台管理员 精确匹配")
|
||||
private String operateMan;
|
||||
|
||||
@ApiModelProperty("订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单 精确匹配")
|
||||
private Integer orderStatus;
|
||||
|
||||
@ApiModelProperty("备注 精确匹配")
|
||||
private String note;
|
||||
|
||||
public Wrapper<OrderOperateHistory> toWrapper() {
|
||||
LambdaQueryWrapper<OrderOperateHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderSn != null && !orderSn.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOrderSn, orderSn);
|
||||
}
|
||||
|
||||
if (operateMan != null && !operateMan.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOperateMan, operateMan);
|
||||
}
|
||||
|
||||
if (orderStatus != null) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOrderStatus, orderStatus);
|
||||
}
|
||||
|
||||
if (note != null && !note.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getNote, note);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package com.wzj.soopin.order.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="微信订单表 查询 对象")
|
||||
public class WechatPaymentHistoryBo {
|
||||
@ApiModelProperty("payment_id 精确匹配")
|
||||
private String paymentId;
|
||||
|
||||
@ApiModelProperty("用户 ID 精确匹配")
|
||||
private Long memberId;
|
||||
|
||||
@ApiModelProperty("OPENID 精确匹配")
|
||||
private String openid;
|
||||
|
||||
@ApiModelProperty("真实姓名,提现需要 精确匹配")
|
||||
private String realNameLike;
|
||||
|
||||
@ApiModelProperty("标题|商品名称 精确匹配")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty("订单号 支付时是payId 其他为orderId 精确匹配")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("金额,单位分 精确匹配")
|
||||
private BigDecimal money;
|
||||
|
||||
@ApiModelProperty("交易类型(1为支付 2为提现 3为退款) 精确匹配")
|
||||
private Integer opType;
|
||||
|
||||
@ApiModelProperty("状态(0:未完成交易 1:完成关键交易) 精确匹配")
|
||||
private Integer paymentStatus;
|
||||
|
||||
@ApiModelProperty("附加数据 精确匹配")
|
||||
private String attach;
|
||||
|
||||
@ApiModelProperty("响应内容 精确匹配")
|
||||
private String responseBody;
|
||||
|
||||
public Wrapper<WechatPaymentHistory> toWrapper() {
|
||||
LambdaQueryWrapper<WechatPaymentHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (paymentId != null && !paymentId.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getPaymentId, paymentId);
|
||||
}
|
||||
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getMemberId, memberId);
|
||||
}
|
||||
|
||||
if (openid != null && !openid.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpenid, openid);
|
||||
}
|
||||
|
||||
if (realNameLike != null && !realNameLike.isEmpty()) {
|
||||
// 注意:字段名若为 real_name 需对应实体类属性
|
||||
queryWrapper.like(WechatPaymentHistory::getRealName, realNameLike);
|
||||
}
|
||||
|
||||
if (title != null && !title.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getTitle, title);
|
||||
}
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (money != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getMoney, money);
|
||||
}
|
||||
|
||||
if (opType != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpType, opType);
|
||||
}
|
||||
|
||||
if (paymentStatus != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getPaymentStatus, paymentStatus);
|
||||
}
|
||||
|
||||
if (attach != null && !attach.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getAttach, attach);
|
||||
}
|
||||
|
||||
if (responseBody != null && !responseBody.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getResponseBody, responseBody);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
@ -5,12 +5,17 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import jakarta.persistence.PrePersist;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.domain.model.BaseAudit;
|
||||
import org.dromara.common.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* 订单表对象 oms_order
|
||||
*
|
||||
@ -41,6 +46,10 @@ public class Order extends BaseAudit {
|
||||
@Excel(name = "用户帐号")
|
||||
private String memberUsername;
|
||||
|
||||
@ApiModelProperty("商家备注")
|
||||
@Excel(name = "商家备注")
|
||||
private String merchantNote;
|
||||
|
||||
@ApiModelProperty("订单总金额")
|
||||
@Excel(name = "订单总金额")
|
||||
private BigDecimal totalAmount;
|
||||
@ -129,10 +138,6 @@ public class Order extends BaseAudit {
|
||||
@Excel(name = "订单备注")
|
||||
private String note;
|
||||
|
||||
@ApiModelProperty("商家备注")
|
||||
@Excel(name = "商家备注")
|
||||
private String merchantNote;
|
||||
|
||||
@ApiModelProperty("确认收货状态:0->未确认;1->已确认")
|
||||
@Excel(name = "确认收货状态:0->未确认;1->已确认")
|
||||
private Integer confirmStatus;
|
||||
@ -159,4 +164,5 @@ public class Order extends BaseAudit {
|
||||
@ApiModelProperty("优惠券金额")
|
||||
private BigDecimal couponAmount;
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
package com.wzj.soopin.order.domain.form;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Getter;
|
||||
@ -24,4 +26,7 @@ public class DeliverProductForm {
|
||||
@Excel(name = "运单号")
|
||||
private String expressSn;
|
||||
|
||||
public Wrapper<OrderDeliveryHistory> toWrapper() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package com.wzj.soopin.order.domain.form;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.wzj.soopin.member.domain.po.MemberAddress;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -38,4 +41,32 @@ public class ManagerAftersaleOrderForm {
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
|
||||
|
||||
public QueryWrapper<Aftersale> toWrapper() {
|
||||
QueryWrapper<Aftersale> queryWrapper = new QueryWrapper<>();
|
||||
if (id != null) {
|
||||
queryWrapper.eq("id", id);
|
||||
}
|
||||
if (orderSn != null) {
|
||||
queryWrapper.eq("order_sn", orderSn);
|
||||
}
|
||||
if (userPhone != null) {
|
||||
queryWrapper.eq("user_phone", userPhone);
|
||||
}
|
||||
if (status != null) {
|
||||
queryWrapper.eq("status", status);
|
||||
}
|
||||
if (type != null) {
|
||||
queryWrapper.eq("type", type);
|
||||
}
|
||||
if (startTime != null) {
|
||||
queryWrapper.ge("create_time", startTime);
|
||||
}
|
||||
if (endTime != null) {
|
||||
queryWrapper.le("create_time", endTime);
|
||||
}
|
||||
queryWrapper.orderByDesc("id");
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.form;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerOrderVO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -51,4 +53,46 @@ public class ManagerOrderQueryForm {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
public LambdaQueryWrapper<ManagerOrderVO> toWrapper() {
|
||||
LambdaQueryWrapper<ManagerOrderVO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderSn != null &&!orderSn.isEmpty()) {
|
||||
queryWrapper.eq(ManagerOrderVO::getOrderSn, orderSn);
|
||||
}
|
||||
if (productId != null) {
|
||||
queryWrapper.eq(ManagerOrderVO::getProductId, productId);
|
||||
}
|
||||
if (productName != null &&!productName.isEmpty()) {
|
||||
queryWrapper.like(ManagerOrderVO::getProductName, productName);
|
||||
}
|
||||
if (userPhone != null &&!userPhone.isEmpty()) {
|
||||
queryWrapper.eq(ManagerOrderVO::getUserPhone, userPhone);
|
||||
}
|
||||
if (payType != null) {
|
||||
queryWrapper.eq(ManagerOrderVO::getPayType, payType);
|
||||
}
|
||||
if (status != null) {
|
||||
queryWrapper.eq(ManagerOrderVO::getStatus, status);
|
||||
}
|
||||
if (receiverProvince != null &&!receiverProvince.isEmpty()) {
|
||||
queryWrapper.eq(ManagerOrderVO::getReceiverProvince, receiverProvince);
|
||||
}
|
||||
if (receiverCity != null &&!receiverCity.isEmpty()) {
|
||||
queryWrapper.eq(ManagerOrderVO::getReceiverCity, receiverCity);
|
||||
}
|
||||
if (receiverDistrict != null &&!receiverDistrict.isEmpty()) {
|
||||
queryWrapper.eq(ManagerOrderVO::getReceiverDistrict, receiverDistrict);
|
||||
}
|
||||
if (startTime != null && endTime != null) {
|
||||
// 假设使用createTime作为时间查询字段,可根据实际情况修改
|
||||
queryWrapper.between(ManagerOrderVO::getCreateTime, startTime, endTime);
|
||||
} else if (startTime != null) {
|
||||
queryWrapper.ge(ManagerOrderVO::getCreateTime, startTime);
|
||||
} else if (endTime != null) {
|
||||
queryWrapper.le(ManagerOrderVO::getCreateTime, endTime);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -29,4 +32,29 @@ public class AftersaleItemQuery {
|
||||
@ApiModelProperty("退货数量 精确匹配")
|
||||
private Integer quantity;
|
||||
|
||||
public Wrapper<AftersaleItem> toWrapper() {
|
||||
LambdaQueryWrapper<AftersaleItem> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getMemberId, memberId);
|
||||
}
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (orderItemId != null) {
|
||||
queryWrapper.eq(AftersaleItem::getOrderItemId, orderItemId);
|
||||
}
|
||||
|
||||
if (returnAmount != null) {
|
||||
queryWrapper.eq(AftersaleItem::getReturnAmount, returnAmount);
|
||||
}
|
||||
|
||||
if (quantity != null) {
|
||||
queryWrapper.eq(AftersaleItem::getQuantity, quantity);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.wzj.soopin.order.domain.query;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.domain.BaseBO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@ -14,7 +15,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@ApiModel(description="订单售后 查询 对象")
|
||||
@Data
|
||||
public class AftersaleQuery {
|
||||
public class AftersaleQuery extends BaseBO {
|
||||
@ApiModelProperty("MEMBER_ID 精确匹配")
|
||||
private Long memberId;
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -21,4 +24,21 @@ public class OrderDeliveryHistoryQuery {
|
||||
@ApiModelProperty("物流单号 精确匹配")
|
||||
private String deliverySn;
|
||||
|
||||
public Wrapper<OrderDeliveryHistory> toWrapper() {
|
||||
LambdaQueryWrapper<OrderDeliveryHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (deliveryCompany != null && !deliveryCompany.isEmpty()) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getDeliveryCompany, deliveryCompany);
|
||||
}
|
||||
|
||||
if (deliverySn != null && !deliverySn.isEmpty()) {
|
||||
queryWrapper.eq(OrderDeliveryHistory::getDeliverySn, deliverySn);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -56,4 +59,65 @@ public class OrderItemQuery {
|
||||
@ApiModelProperty("商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}] 精确匹配")
|
||||
private String spData;
|
||||
|
||||
public Wrapper<OrderItem> toWrapper() {
|
||||
LambdaQueryWrapper<OrderItem> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(OrderItem::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (productId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductId, productId);
|
||||
}
|
||||
|
||||
if (outProductId != null && !outProductId.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getOutProductId, outProductId);
|
||||
}
|
||||
|
||||
if (skuId != null) {
|
||||
queryWrapper.eq(OrderItem::getSkuId, skuId);
|
||||
}
|
||||
|
||||
if (outSkuId != null && !outSkuId.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getOutSkuId, outSkuId);
|
||||
}
|
||||
|
||||
if (productSnapshotId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductSnapshotId, productSnapshotId);
|
||||
}
|
||||
|
||||
if (skuSnapshotId != null) {
|
||||
queryWrapper.eq(OrderItem::getSkuSnapshotId, skuSnapshotId);
|
||||
}
|
||||
|
||||
if (pic != null && !pic.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getPic, pic);
|
||||
}
|
||||
|
||||
if (productNameLike != null && !productNameLike.isEmpty()) {
|
||||
queryWrapper.like(OrderItem::getProductName, productNameLike);
|
||||
}
|
||||
|
||||
if (salePrice != null) {
|
||||
queryWrapper.eq(OrderItem::getSalePrice, salePrice);
|
||||
}
|
||||
|
||||
if (purchasePrice != null) {
|
||||
queryWrapper.eq(OrderItem::getPurchasePrice, purchasePrice);
|
||||
}
|
||||
|
||||
if (quantity != null) {
|
||||
queryWrapper.eq(OrderItem::getQuantity, quantity);
|
||||
}
|
||||
|
||||
if (productCategoryId != null) {
|
||||
queryWrapper.eq(OrderItem::getProductCategoryId, productCategoryId);
|
||||
}
|
||||
|
||||
if (spData != null && !spData.isEmpty()) {
|
||||
queryWrapper.eq(OrderItem::getSpData, spData);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -24,4 +27,25 @@ public class OrderOperateHistoryQuery {
|
||||
@ApiModelProperty("备注 精确匹配")
|
||||
private String note;
|
||||
|
||||
public Wrapper<OrderOperateHistory> toWrapper() {
|
||||
LambdaQueryWrapper<OrderOperateHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (orderSn != null && !orderSn.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOrderSn, orderSn);
|
||||
}
|
||||
|
||||
if (operateMan != null && !operateMan.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOperateMan, operateMan);
|
||||
}
|
||||
|
||||
if (orderStatus != null) {
|
||||
queryWrapper.eq(OrderOperateHistory::getOrderStatus, orderStatus);
|
||||
}
|
||||
|
||||
if (note != null && !note.isEmpty()) {
|
||||
queryWrapper.eq(OrderOperateHistory::getNote, note);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -104,4 +104,8 @@ public class OrderQuery {
|
||||
|
||||
@ApiModelProperty("创建订单结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
public Object toWrapper() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.wzj.soopin.order.domain.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -47,4 +50,54 @@ public class WechatPaymentHistoryQuery {
|
||||
@ApiModelProperty("响应内容 精确匹配")
|
||||
private String responseBody;
|
||||
|
||||
public Wrapper<WechatPaymentHistory> toWrapper() {
|
||||
LambdaQueryWrapper<WechatPaymentHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (paymentId != null && !paymentId.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getPaymentId, paymentId);
|
||||
}
|
||||
|
||||
if (memberId != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getMemberId, memberId);
|
||||
}
|
||||
|
||||
if (openid != null && !openid.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpenid, openid);
|
||||
}
|
||||
|
||||
if (realNameLike != null && !realNameLike.isEmpty()) {
|
||||
// 注意:字段名若为 real_name 需对应实体类属性
|
||||
queryWrapper.like(WechatPaymentHistory::getRealName, realNameLike);
|
||||
}
|
||||
|
||||
if (title != null && !title.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getTitle, title);
|
||||
}
|
||||
|
||||
if (orderId != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOrderId, orderId);
|
||||
}
|
||||
|
||||
if (money != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getMoney, money);
|
||||
}
|
||||
|
||||
if (opType != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpType, opType);
|
||||
}
|
||||
|
||||
if (paymentStatus != null) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getPaymentStatus, paymentStatus);
|
||||
}
|
||||
|
||||
if (attach != null && !attach.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getAttach, attach);
|
||||
}
|
||||
|
||||
if (responseBody != null && !responseBody.isEmpty()) {
|
||||
queryWrapper.eq(WechatPaymentHistory::getResponseBody, responseBody);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -8,6 +9,7 @@ import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@ApiModel("订单")
|
||||
@InterceptorIgnore(tenantLine = "true")
|
||||
public class ManagerOrderProductVO {
|
||||
@ApiModelProperty("商品id")
|
||||
private Long productId;
|
||||
|
@ -1,6 +1,9 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -101,4 +104,73 @@ public class ManagerOrderVO {
|
||||
private String mark;
|
||||
|
||||
private BigDecimal couponAmount;
|
||||
|
||||
public Wrapper<Order> toWrapper() {
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
if (id != null) {
|
||||
queryWrapper.eq(Order::getId, id);
|
||||
}
|
||||
if (orderSn != null &&!orderSn.isEmpty()) {
|
||||
queryWrapper.eq(Order::getOrderSn, orderSn);
|
||||
}
|
||||
|
||||
if (status != null) {
|
||||
queryWrapper.eq(Order::getStatus, status);
|
||||
}
|
||||
if (aftersaleStatus != null) {
|
||||
queryWrapper.eq(Order::getAftersaleStatus, aftersaleStatus);
|
||||
}
|
||||
if (totalAmount != null) {
|
||||
queryWrapper.eq(Order::getTotalAmount, totalAmount);
|
||||
}
|
||||
if (payAmount != null) {
|
||||
queryWrapper.eq(Order::getPayAmount, payAmount);
|
||||
}
|
||||
if (createTime != null) {
|
||||
queryWrapper.eq(Order::getCreateTime, createTime);
|
||||
}
|
||||
|
||||
if (payType != null) {
|
||||
queryWrapper.eq(Order::getPayType, payType);
|
||||
}
|
||||
if (receiveTime != null) {
|
||||
queryWrapper.eq(Order::getReceiveTime, receiveTime);
|
||||
}
|
||||
if (note != null &&!note.isEmpty()) {
|
||||
queryWrapper.like(Order::getNote, note);
|
||||
}
|
||||
if (merchantNote != null &&!merchantNote.isEmpty()) {
|
||||
queryWrapper.like(Order::getMerchantNote, merchantNote);
|
||||
}
|
||||
if (deliveryTime != null) {
|
||||
queryWrapper.eq(Order::getDeliveryTime, deliveryTime);
|
||||
}
|
||||
if (deliverySn != null &&!deliverySn.isEmpty()) {
|
||||
queryWrapper.eq(Order::getDeliverySn, deliverySn);
|
||||
}
|
||||
if (receiverName != null &&!receiverName.isEmpty()) {
|
||||
queryWrapper.like(Order::getReceiverName, receiverName);
|
||||
}
|
||||
if (receiverPhone != null &&!receiverPhone.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverPhone, receiverPhone);
|
||||
}
|
||||
if (receiverProvince != null &&!receiverProvince.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverProvince, receiverProvince);
|
||||
}
|
||||
if (receiverCity != null &&!receiverCity.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverCity, receiverCity);
|
||||
}
|
||||
if (receiverDistrict != null &&!receiverDistrict.isEmpty()) {
|
||||
queryWrapper.eq(Order::getReceiverDistrict, receiverDistrict);
|
||||
}
|
||||
if (receiverDetailAddress != null &&!receiverDetailAddress.isEmpty()) {
|
||||
queryWrapper.like(Order::getReceiverDetailAddress, receiverDetailAddress);
|
||||
}
|
||||
if (couponAmount != null) {
|
||||
queryWrapper.eq(Order::getCouponAmount, couponAmount);
|
||||
}
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.domain.model.BaseAudit;
|
||||
import org.dromara.common.excel.annotation.Excel;
|
||||
@ -28,7 +31,11 @@ public class OrderVO extends BaseAudit {
|
||||
/** 用户帐号 */
|
||||
@Excel(name = "用户帐号")
|
||||
private String memberUsername;
|
||||
/** 订单总金额 */
|
||||
/** 商家备注 */
|
||||
@Excel(name = "商家备注")
|
||||
private String merchantNote;
|
||||
|
||||
/** 订单总金额 */
|
||||
@Excel(name = "订单总金额")
|
||||
private BigDecimal totalAmount;
|
||||
/** 采购价 */
|
||||
|
@ -0,0 +1,46 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import com.wzj.soopin.order.utils.StringUtils;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 查询参数
|
||||
*
|
||||
* @author Chopper
|
||||
*/
|
||||
@Data
|
||||
public class PageVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "页号")
|
||||
private Integer page = 1;
|
||||
|
||||
@ApiModelProperty(value = "页面大小")
|
||||
private Integer size = 10;
|
||||
|
||||
@ApiModelProperty(value = "排序字段")
|
||||
private String sort;
|
||||
|
||||
@ApiModelProperty(value = "排序方式 asc/desc")
|
||||
private String order;
|
||||
|
||||
@ApiModelProperty(value = "需要驼峰转换蛇形", notes = "一般不做处理,如果数据库中就是蛇形,则这块需要处理。")
|
||||
private Boolean notConvert;
|
||||
|
||||
public String getSort() {
|
||||
if (CharSequenceUtil.isNotEmpty(sort)) {
|
||||
if (notConvert == null || Boolean.FALSE.equals(notConvert)) {
|
||||
return StringUtils.camel2Underline(sort);
|
||||
} else {
|
||||
return sort;
|
||||
}
|
||||
}
|
||||
return sort;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import com.wzj.soopin.order.utils.DateUtil;
|
||||
import com.wzj.soopin.order.utils.StringUtils;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 日期搜索参数
|
||||
*
|
||||
* @author Chopper
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SearchVO implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "起始日期")
|
||||
private String startDate;
|
||||
|
||||
@ApiModelProperty(value = "结束日期")
|
||||
private String endDate;
|
||||
|
||||
public Date getConvertStartDate() {
|
||||
if (StringUtils.isEmpty(startDate)) {
|
||||
return null;
|
||||
}
|
||||
return DateUtil.toDate(startDate, DateUtil.STANDARD_DATE_FORMAT);
|
||||
}
|
||||
|
||||
public Date getConvertEndDate() {
|
||||
if (StringUtils.isEmpty(endDate)) {
|
||||
return null;
|
||||
}
|
||||
//结束时间等于结束日期+1天 -1秒,
|
||||
Date date = DateUtil.toDate(endDate, DateUtil.STANDARD_DATE_FORMAT);
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1);
|
||||
calendar.set(Calendar.SECOND, -1);
|
||||
return calendar.getTime();
|
||||
}
|
||||
}
|
@ -1,7 +1,10 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@ -22,4 +25,5 @@ public interface AftersaleItemMapper extends BaseMapper<AftersaleItem> {
|
||||
|
||||
Integer insertBatch(@Param("list") List<AftersaleItem> list);
|
||||
|
||||
IPage<AftersaleItem> selectAftersale(@Param("query") AftersaleItemQuery query, IPage<AftersaleItem> pageParam);
|
||||
}
|
||||
|
@ -1,10 +1,13 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.vo.ManagerRefundOrderVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderAndAftersaleStatisticsVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -27,4 +30,5 @@ public interface AftersaleMapper extends BaseMapper<Aftersale> {
|
||||
int countByMemberId(Long memberId);
|
||||
|
||||
OrderAndAftersaleStatisticsVO statPendingAndProcessing();
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,16 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.OrderDeliveryHistoryVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,6 +20,10 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
public interface OrderDeliveryHistoryMapper extends BaseMapper<OrderDeliveryHistory> {
|
||||
|
||||
|
||||
IPage<OrderDeliveryHistoryVO> selectOderDeliveryHistory(@Param("query")OrderDeliveryHistoryQuery query, IPage<OrderDeliveryHistoryVO> pageParam);
|
||||
|
||||
/**
|
||||
* 查询订单发货记录列表
|
||||
*
|
||||
@ -18,4 +31,6 @@ public interface OrderDeliveryHistoryMapper extends BaseMapper<OrderDeliveryHist
|
||||
* @return 订单发货记录集合
|
||||
*/
|
||||
List<OrderDeliveryHistory> selectByEntity(OrderDeliveryHistory orderDeliveryHistory);
|
||||
|
||||
// IPage<OrderDeliveryHistoryVO> selectByEntity(OrderDeliveryHistoryQuery query ,Page<Object> objectPage);
|
||||
}
|
||||
|
@ -1,7 +1,11 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,6 +15,8 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
public interface OrderItemMapper extends BaseMapper<OrderItem> {
|
||||
|
||||
IPage<OrderItem> selectOrderItem(@Param("query") OrderItemQuery query, IPage<OrderItem> pageParam);
|
||||
/**
|
||||
* 查询订单中所包含的商品列表
|
||||
*
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
@ -25,6 +26,7 @@ public interface OrderMapper extends BaseMapper<Order> {
|
||||
*/
|
||||
List<Order> selectByEntity(Order order);
|
||||
|
||||
|
||||
List<ManagerOrderVO> selectManagerOrderPage(ManagerOrderQueryForm request);
|
||||
|
||||
List<H5OrderVO> orderPage(@Param("status") Integer status, @Param("memberId")Long memberId);
|
||||
|
@ -1,7 +1,12 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,6 +16,7 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
public interface OrderOperateHistoryMapper extends BaseMapper<OrderOperateHistory> {
|
||||
|
||||
/**
|
||||
* 查询订单操作历史记录列表
|
||||
*
|
||||
@ -18,4 +24,6 @@ public interface OrderOperateHistoryMapper extends BaseMapper<OrderOperateHistor
|
||||
* @return 订单操作历史记录集合
|
||||
*/
|
||||
List<OrderOperateHistory> selectByEntity(OrderOperateHistory orderOperateHistory);
|
||||
|
||||
IPage<OrderOperateHistory> selectOrderOperateHistory(@Param("query") OrderOperateHistoryQuery query, IPage<OrderItem> pageParam);
|
||||
}
|
||||
|
@ -1,7 +1,11 @@
|
||||
package com.wzj.soopin.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import com.wzj.soopin.order.domain.query.WechatPaymentHistoryQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -11,6 +15,9 @@ import java.util.List;
|
||||
* @author zcc
|
||||
*/
|
||||
public interface WechatPaymentHistoryMapper extends BaseMapper<WechatPaymentHistory> {
|
||||
|
||||
|
||||
IPage<WechatPaymentHistory> selectWechatPaymentHistory(@Param("query") WechatPaymentHistoryQuery query, IPage<WechatPaymentHistory> pageParam);
|
||||
/**
|
||||
* 查询微信订单表列表
|
||||
*
|
||||
|
@ -1,101 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.mapper.AftersaleItemMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单售后Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class AftersaleItemService {
|
||||
@Autowired
|
||||
private AftersaleItemMapper aftersaleItemMapper;
|
||||
|
||||
/**
|
||||
* 查询订单售后
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 订单售后
|
||||
*/
|
||||
public AftersaleItem selectById(Long id) {
|
||||
return aftersaleItemMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单售后列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单售后
|
||||
*/
|
||||
public List<AftersaleItem> selectList(AftersaleItemQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<AftersaleItem> qw = new QueryWrapper<>();
|
||||
Long memberId = query.getMemberId();
|
||||
if (memberId != null) {
|
||||
qw.eq("member_id", memberId);
|
||||
}
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
Long orderItemId = query.getOrderItemId();
|
||||
if (orderItemId != null) {
|
||||
qw.eq("order_item_id", orderItemId);
|
||||
}
|
||||
BigDecimal returnAmount = query.getReturnAmount();
|
||||
if (returnAmount != null) {
|
||||
qw.eq("return_amount", returnAmount);
|
||||
}
|
||||
Integer quantity = query.getQuantity();
|
||||
if (quantity != null) {
|
||||
qw.eq("quantity", quantity);
|
||||
}
|
||||
return aftersaleItemMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单售后
|
||||
*
|
||||
* @param aftersaleItem 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(AftersaleItem aftersaleItem) {
|
||||
aftersaleItem.setCreateTime(LocalDateTime.now());
|
||||
return aftersaleItemMapper.insert(aftersaleItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单售后
|
||||
*
|
||||
* @param aftersaleItem 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(AftersaleItem aftersaleItem) {
|
||||
return aftersaleItemMapper.updateById(aftersaleItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单售后信息
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return aftersaleItemMapper.deleteById(id);
|
||||
}
|
||||
public interface AftersaleItemService extends IService<AftersaleItem> {
|
||||
}
|
||||
|
@ -1,469 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.wechat.pay.java.service.refund.model.Refund;
|
||||
import com.wechat.pay.java.service.refund.model.RefundNotification;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.po.MemberWechat;
|
||||
import com.wzj.soopin.member.mapper.MemberMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberWechatMapper;
|
||||
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.entity.*;
|
||||
import com.wzj.soopin.order.domain.form.DealWithAftersaleForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.mapper.*;
|
||||
import com.wzj.soopin.order.wechat.WechatPayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.event.Constants;
|
||||
import org.dromara.common.core.enums.AftersaleStatus;
|
||||
import org.dromara.common.core.enums.OrderRefundStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.Aftersale;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单售后Service业务层处理
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AftersaleService {
|
||||
@Autowired
|
||||
private AftersaleMapper aftersaleMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderOperateHistoryConvert historyConvert;
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
// @Autowired
|
||||
// private MemberCouponService memberCouponService;
|
||||
@Autowired
|
||||
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
|
||||
@Autowired
|
||||
private MemberWechatMapper memberWechatMapper;
|
||||
@Autowired(required = false)
|
||||
private WechatPayService wechatPayService;
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper operateHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单售后
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 订单售后
|
||||
*/
|
||||
public ManagerRefundOrderDetailVO selectById(Long id) {
|
||||
Order order = orderMapper.selectById(id);
|
||||
if (order == null) {
|
||||
throw new RuntimeException("无该订单信息");
|
||||
}
|
||||
ManagerRefundOrderDetailVO result = new ManagerRefundOrderDetailVO();
|
||||
//订单基本信息
|
||||
result.setOrderId(order.getId());
|
||||
result.setOrderSn(order.getOrderSn());
|
||||
result.setCreateTime(order.getCreateTime());
|
||||
result.setPayType(order.getPayType());
|
||||
result.setPayTime(order.getPaymentTime());
|
||||
result.setStatus(order.getStatus());
|
||||
result.setExpressName(order.getDeliveryCompany());
|
||||
result.setDeliveryTime(order.getDeliveryTime());
|
||||
result.setExpressNo(order.getDeliverySn());
|
||||
result.setTotalAmount(order.getTotalAmount());
|
||||
result.setPayAmount(order.getPayAmount());
|
||||
//用户信息
|
||||
Member member = memberMapper.selectById(order.getMemberId());
|
||||
result.setNickName(member.getNickname());
|
||||
result.setPhone(member.getPhoneHidden());
|
||||
//收货信息
|
||||
OrderAddressVO orderAddressVO = new OrderAddressVO();
|
||||
orderAddressVO.setAddress(order.getReceiverDetailAddress());
|
||||
orderAddressVO.setName(order.getReceiverName());
|
||||
orderAddressVO.setUserPhone(order.getReceiverPhone());
|
||||
orderAddressVO.setArea(order.getReceiverProvince() + order.getReceiverCity() + order.getReceiverDistrict());
|
||||
result.setAddressInfo(orderAddressVO);
|
||||
//orderItem
|
||||
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
|
||||
orderItemQw.eq("order_id", id);
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(orderItem -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setPic(orderItem.getPic());
|
||||
productVO.setSpData(orderItem.getSpData());
|
||||
productVO.setProductName(orderItem.getProductName());
|
||||
productVO.setSalePrice(orderItem.getSalePrice());
|
||||
productVO.setBuyNum(orderItem.getQuantity());
|
||||
productVO.setProductId(orderItem.getProductId());
|
||||
productList.add(productVO);
|
||||
});
|
||||
result.setProductList(productList);
|
||||
//售后信息
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", order.getId());
|
||||
aftersaleQw.orderByDesc("create_time");
|
||||
List<Aftersale> aftersaleList = aftersaleMapper.selectList(aftersaleQw);
|
||||
List<RefundInfoVO> refundInfoList = new ArrayList<>();
|
||||
aftersaleList.forEach(aftersale -> {
|
||||
RefundInfoVO refundInfo = new RefundInfoVO();
|
||||
refundInfo.setId(aftersale.getId());
|
||||
refundInfo.setApplyRefundType(aftersale.getType());
|
||||
refundInfo.setApplyRefundTime(aftersale.getCreateTime());
|
||||
refundInfo.setRefundAmount(aftersale.getReturnAmount());
|
||||
refundInfo.setReason(aftersale.getReason());
|
||||
refundInfo.setDescription(aftersale.getDescription());
|
||||
refundInfo.setProofPics(aftersale.getProofPics());
|
||||
refundInfo.setRefundStatus(aftersale.getStatus());
|
||||
refundInfo.setRefundWpCode(aftersale.getRefundWpCode());
|
||||
refundInfo.setRefundWaybillCode(aftersale.getRefundWaybillCode());
|
||||
refundInfo.setRefundStatus(aftersale.getStatus());
|
||||
refundInfo.setRemark(aftersale.getHandleNote());
|
||||
refundInfoList.add(refundInfo);
|
||||
});
|
||||
result.setRefundInfoList(refundInfoList);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单售后列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单售后
|
||||
*/
|
||||
public List<ManagerRefundOrderVO> selectList(ManagerAftersaleOrderForm query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7) {
|
||||
query.setOrderSn(query.getOrderSn().substring(7));
|
||||
}
|
||||
List<ManagerRefundOrderVO> managerRefundOrderVOS = aftersaleMapper.selectManagerRefundOrder(query);
|
||||
if (CollectionUtil.isEmpty(managerRefundOrderVOS)) {
|
||||
return managerRefundOrderVOS;
|
||||
}
|
||||
Set<Long> idSet = managerRefundOrderVOS.stream().map(ManagerRefundOrderVO::getOrderId).collect(Collectors.toSet());
|
||||
//查一下orderSn集合
|
||||
QueryWrapper<Order> orderQw = new QueryWrapper<>();
|
||||
orderQw.in("id", idSet);
|
||||
Map<Long, Order> orderMap = orderMapper.selectList(orderQw).stream().collect(Collectors.toMap(Order::getId, it -> it));
|
||||
//封装售后单商品数据
|
||||
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
|
||||
orderItemQw.in("order_id", idSet);
|
||||
Map<Long, List<OrderItem>> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
managerRefundOrderVOS.forEach(vo -> {
|
||||
Order order = orderMap.get(vo.getOrderId());
|
||||
vo.setOrderSn(order.getOrderSn());
|
||||
List<OrderItem> orderItemList = orderItemMap.get(vo.getOrderId());
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setProductName(item.getProductName());
|
||||
productVO.setSalePrice(item.getSalePrice());
|
||||
productVO.setPic(item.getPic());
|
||||
productVO.setBuyNum(item.getQuantity());
|
||||
productVO.setProductId(item.getProductId());
|
||||
productVO.setSpData(item.getSpData());
|
||||
productList.add(productVO);
|
||||
});
|
||||
vo.setProductList(productList);
|
||||
});
|
||||
return managerRefundOrderVOS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单售后
|
||||
*
|
||||
* @param aftersale 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Aftersale aftersale) {
|
||||
aftersale.setCreateTime(LocalDateTime.now());
|
||||
return aftersaleMapper.insert(aftersale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单售后
|
||||
*
|
||||
* @param aftersale 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Aftersale aftersale) {
|
||||
return aftersaleMapper.updateById(aftersale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单售后信息
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return aftersaleMapper.deleteById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 售后处理
|
||||
*
|
||||
* @param request 请求体
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void dealWith(DealWithAftersaleForm request, Long userId, String optUserName) {
|
||||
Order order = orderMapper.selectById(request.getOrderId());
|
||||
if (order == null) {
|
||||
throw new RuntimeException("无该订单");
|
||||
}
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", request.getOrderId());
|
||||
if (request.getOptType() == 3) {
|
||||
aftersaleQw.eq("status", 1);
|
||||
} else {
|
||||
aftersaleQw.eq("status", 0);
|
||||
}
|
||||
Aftersale aftersale = aftersaleMapper.selectOne(aftersaleQw);
|
||||
if (aftersale == null) {
|
||||
throw new RuntimeException("没有售后单");
|
||||
}
|
||||
//售后状态与售后类型是否对应
|
||||
if (Constants.OptType.AGREE.equals(request.getOptType()) || Constants.OptType.REFUSE.equals(request.getOptType())) {
|
||||
if (!AftersaleStatus.APPLY.getType().equals(aftersale.getStatus())) {
|
||||
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
||||
}
|
||||
} else {
|
||||
if (!AftersaleStatus.WAIT.getType().equals(aftersale.getStatus())) {
|
||||
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
||||
}
|
||||
}
|
||||
//拒绝则理由必填
|
||||
if (Constants.OptType.REFUSE.equals(request.getOptType()) && StrUtil.isBlank(request.getRemark())) {
|
||||
throw new RuntimeException("请填写拒绝理由");
|
||||
}
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
//要创建的订单操作记录,status后续判断再设置
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(order.getId());
|
||||
optHistory.setOrderSn(order.getOrderSn());
|
||||
optHistory.setOperateMan("后台管理员");
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(userId);
|
||||
optHistory.setUpdateBy(userId);
|
||||
optHistory.setUpdateTime(optDate);
|
||||
//封装售后wrapper
|
||||
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
||||
aftersaleWrapper.eq("order_id", request.getOrderId());
|
||||
aftersaleWrapper.eq("status", AftersaleStatus.APPLY.getType());
|
||||
aftersaleWrapper.set("handle_man", optUserName);
|
||||
aftersaleWrapper.set("update_time", optDate);
|
||||
aftersaleWrapper.set("handle_time", optDate);
|
||||
aftersaleWrapper.set("update_by", userId);
|
||||
//封装订单wrapper
|
||||
UpdateWrapper<Order> orderWrapper = new UpdateWrapper<>();
|
||||
orderWrapper.eq("id", request.getOrderId());
|
||||
orderWrapper.set("update_time", optDate);
|
||||
orderWrapper.set("update_by", userId);
|
||||
//更新订单、售后单,创建操作记录
|
||||
if (request.getOptType().equals(Constants.OptType.REFUSE)) {
|
||||
aftersaleWrapper.set("status", AftersaleStatus.REJECT.getType());
|
||||
aftersaleWrapper.set("handle_note", request.getRemark());
|
||||
orderWrapper.set("aftersale_status", OrderRefundStatus.NO_REFUND.getType());
|
||||
optHistory.setOrderStatus(14);
|
||||
} else if (request.getOptType().equals(Constants.OptType.AGREE)) {
|
||||
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType());
|
||||
orderWrapper.set("aftersale_status", Objects.equals(aftersale.getType(), 1) ? 3 : 2);
|
||||
optHistory.setOrderStatus(12);
|
||||
} else {
|
||||
//如果是退货退款 order身上的售后状态应该是保持不变的 仅退款的话就进入退款了
|
||||
orderWrapper.set("aftersale_status", 3);
|
||||
int row = orderMapper.update(null, orderWrapper);
|
||||
if (row != 1) {
|
||||
throw new RuntimeException("修改订单状态失败");
|
||||
}
|
||||
}
|
||||
int rows = aftersaleMapper.update(null, aftersaleWrapper);
|
||||
// if (rows < 1) {
|
||||
// throw new RuntimeException("更新售后单失败");
|
||||
// }
|
||||
rows = orderMapper.update(null, orderWrapper);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("更新订单失败");
|
||||
}
|
||||
rows = orderOperateHistoryMapper.insert(optHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("创建订单操作记录失败");
|
||||
}
|
||||
// 是否需要发起退款
|
||||
if ((request.getOptType() == Constants.OptType.GIVING || (request.getOptType() == Constants.OptType.AGREE && aftersale.getType() == 1))) {
|
||||
tradeRefund(aftersale, order, optDate, userId);
|
||||
}
|
||||
}
|
||||
|
||||
public void tradeRefund(Aftersale returnApply, Order order, LocalDateTime optDate, Long userId) {
|
||||
//查一下微信订单
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getPayId()).eq("op_type", 1);
|
||||
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
//查用户的微信信息
|
||||
QueryWrapper<MemberWechat> wechatQw = new QueryWrapper<>();
|
||||
wechatQw.eq("member_id", order.getMemberId());
|
||||
MemberWechat memberWechat = memberWechatMapper.selectOne(wechatQw);
|
||||
//查订单item
|
||||
QueryWrapper<OrderItem> itemQw = new QueryWrapper<>();
|
||||
itemQw.eq("order_id", order.getId());
|
||||
OrderItem orderItem = orderItemMapper.selectList(itemQw).get(0);
|
||||
//开始退款
|
||||
Refund wechatResponse = wechatPayService.refundPay(returnApply.getId() + "",
|
||||
order.getPayId() + "",
|
||||
"https://mall.ichengle.top/api/no-auth/wechat/weChatRefundNotify",
|
||||
returnApply.getReturnAmount().multiply(new BigDecimal("100")).longValue(),
|
||||
history.getMoney().multiply(new BigDecimal("100")).longValue(), returnApply.getReason());
|
||||
log.info("发起微信退款返回信息,tradeRefund:{}", JSONObject.toJSONString(wechatResponse == null ? "" : wechatResponse));
|
||||
|
||||
if (wechatResponse != null && Arrays.asList("PROCESSING", "SUCCESS").contains(wechatResponse.getStatus().name())) {
|
||||
qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getId()).eq("op_type", 3);
|
||||
WechatPaymentHistory refundHistory = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
if (refundHistory == null) {
|
||||
WechatPaymentHistory wechatPaymentHistory = new WechatPaymentHistory();
|
||||
wechatPaymentHistory.setPaymentId(wechatResponse.getRefundId());
|
||||
wechatPaymentHistory.setMemberId(order.getMemberId());
|
||||
LambdaQueryWrapper<WechatPaymentHistory> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(WechatPaymentHistory::getOrderId, order.getPayId());
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpType, Constants.PaymentOpType.PAY);
|
||||
WechatPaymentHistory payHistory = wechatPaymentHistoryMapper.selectOne(queryWrapper);
|
||||
wechatPaymentHistory.setOpenid(payHistory.getOpenid());
|
||||
wechatPaymentHistory.setTitle(orderItem.getProductName());
|
||||
wechatPaymentHistory.setOrderId(order.getId());
|
||||
wechatPaymentHistory.setMoney(returnApply.getReturnAmount().multiply(new BigDecimal("100")));
|
||||
wechatPaymentHistory.setOpType(3);
|
||||
wechatPaymentHistory.setPaymentStatus(0);
|
||||
wechatPaymentHistory.setResponseBody(JSON.toJSONString(wechatResponse));
|
||||
wechatPaymentHistory.setCreateTime(optDate);
|
||||
wechatPaymentHistory.setUpdateTime(optDate);
|
||||
wechatPaymentHistory.setCreateBy(userId);
|
||||
wechatPaymentHistory.setUpdateBy(userId);
|
||||
wechatPaymentHistoryMapper.insert(wechatPaymentHistory);
|
||||
} else {
|
||||
UpdateWrapper<WechatPaymentHistory> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("id", refundHistory.getId())
|
||||
.set("payment_id", wechatResponse.getRefundId()).set("update_time", optDate);
|
||||
wechatPaymentHistoryMapper.update(null, updateWrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单退款回调MQ
|
||||
*
|
||||
* @param weChatRefundNotify
|
||||
*/
|
||||
@Transactional
|
||||
public void refundOrderExc(RefundNotification weChatRefundNotify) {
|
||||
log.info("收到订单回调MQ:" + JSONObject.toJSONString(weChatRefundNotify));
|
||||
if ("PROCESSING".equals(weChatRefundNotify.getRefundStatus().name())) {
|
||||
return;
|
||||
}
|
||||
//查一下微信订单
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
qw.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3);
|
||||
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
if (history == null) {
|
||||
log.info("未找到退款单");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
QueryWrapper<Order> orderQw = new QueryWrapper<>();
|
||||
orderQw.eq("id", history.getOrderId());
|
||||
Order order = orderMapper.selectOne(orderQw);
|
||||
if (order.getStatus() == OrderRefundStatus.SUCCESS.getType()) {
|
||||
log.info("订单已经是退款成功状态");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", history.getOrderId()).eq("status", AftersaleStatus.WAIT.getType());
|
||||
if ("SUCCESS".equals(weChatRefundNotify.getRefundStatus().name())) {
|
||||
//更改订单表
|
||||
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
||||
orderUpdateWrapper.eq("id", history.getOrderId())
|
||||
.set("aftersale_status", OrderRefundStatus.SUCCESS.getType());
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
|
||||
//更改 售后表
|
||||
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
||||
aftersaleWrapper.eq("order_id", history.getOrderId()).set("status", AftersaleStatus.SUCCESS.getType());
|
||||
aftersaleMapper.update(null, aftersaleWrapper);
|
||||
|
||||
//更改 微信表
|
||||
UpdateWrapper<WechatPaymentHistory> paymentWrapper = new UpdateWrapper<>();
|
||||
paymentWrapper.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3)
|
||||
.set("payment_status", 1);
|
||||
wechatPaymentHistoryMapper.update(null, paymentWrapper);
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(order.getId());
|
||||
optHistory.setOperateMan("系统");
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(order.getMemberId());
|
||||
optHistory.setUpdateBy(order.getMemberId());
|
||||
optHistory.setUpdateTime(optDate);
|
||||
optHistory.setOrderStatus(13);
|
||||
operateHistoryMapper.insert(optHistory);
|
||||
// 回滚商品和sku销量
|
||||
OrderItem orderItem = orderItemMapper.selectOne(new QueryWrapper<OrderItem>().eq("order_id", order.getId()));
|
||||
skuMapper.updateStockById(orderItem.getSkuId(), LocalDateTime.now(), -1 * orderItem.getQuantity());
|
||||
//退还优惠券
|
||||
// if (order.getMemberCouponId() != null) {
|
||||
// memberCouponService.backCoupon(Arrays.asList(order.getMemberCouponId()));
|
||||
// }
|
||||
} else {
|
||||
//更改订单表
|
||||
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
||||
orderUpdateWrapper.eq("id", history.getOrderId())
|
||||
.set("aftersale_status", OrderRefundStatus.FAIL.getType());
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
public List<OrderOperateHistoryVO> log(Long orderId) {
|
||||
LambdaQueryWrapper<OrderOperateHistory> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(OrderOperateHistory::getOrderId, orderId);
|
||||
wrapper.in(OrderOperateHistory::getOrderStatus, Arrays.asList(11, 12, 13, 14));
|
||||
wrapper.orderByDesc(OrderOperateHistory::getCreateTime);
|
||||
List<OrderOperateHistory> historyList = orderOperateHistoryMapper.selectList(wrapper);
|
||||
return historyConvert.dos2vos(historyList);
|
||||
}
|
||||
|
||||
public Aftersale queryAfterSale(Long orderId) {
|
||||
QueryWrapper<Aftersale> itemQw = new QueryWrapper<>();
|
||||
itemQw.eq("order_id",orderId);
|
||||
itemQw.in("status",Arrays.asList(AftersaleStatus.APPLY.getType(),AftersaleStatus.WAIT.getType()));
|
||||
return aftersaleMapper.selectOne(itemQw);
|
||||
}
|
||||
public interface AftersaleService extends IService<Aftersale> {
|
||||
}
|
||||
|
@ -1,93 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.mapper.OrderDeliveryHistoryMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单发货记录Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderDeliveryHistoryService {
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryMapper orderDeliveryHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单发货记录
|
||||
*
|
||||
* @param id 订单发货记录主键
|
||||
* @return 订单发货记录
|
||||
*/
|
||||
public OrderDeliveryHistory selectById(Long id) {
|
||||
return orderDeliveryHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单发货记录列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单发货记录
|
||||
*/
|
||||
public List<OrderDeliveryHistory> selectList(OrderDeliveryHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderDeliveryHistory> qw = new QueryWrapper<>();
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
String deliveryCompany = query.getDeliveryCompany();
|
||||
if (!StringUtils.isEmpty(deliveryCompany)) {
|
||||
qw.eq("delivery_company", deliveryCompany);
|
||||
}
|
||||
String deliverySn = query.getDeliverySn();
|
||||
if (!StringUtils.isEmpty(deliverySn)) {
|
||||
qw.eq("delivery_sn", deliverySn);
|
||||
}
|
||||
return orderDeliveryHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单发货记录
|
||||
*
|
||||
* @param orderDeliveryHistory 订单发货记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderDeliveryHistory orderDeliveryHistory) {
|
||||
orderDeliveryHistory.setCreateTime(LocalDateTime.now());
|
||||
return orderDeliveryHistoryMapper.insert(orderDeliveryHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单发货记录
|
||||
*
|
||||
* @param orderDeliveryHistory 订单发货记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return orderDeliveryHistoryMapper.updateById(orderDeliveryHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单发货记录信息
|
||||
*
|
||||
* @param id 订单发货记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderDeliveryHistoryMapper.deleteById(id);
|
||||
}
|
||||
public interface OrderDeliveryHistoryService extends IService<OrderDeliveryHistory> {
|
||||
}
|
||||
|
@ -1,172 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.order.domain.dto.OrderProductListDTO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.common.core.utils.IDGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单中所包含的商品Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderItemService extends ServiceImpl<OrderItemMapper, OrderItem> {
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
/**
|
||||
* 查询订单中所包含的商品
|
||||
*
|
||||
* @param id 订单中所包含的商品主键
|
||||
* @return 订单中所包含的商品
|
||||
*/
|
||||
public OrderItem selectById(Long id) {
|
||||
return orderItemMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单中所包含的商品列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单中所包含的商品
|
||||
*/
|
||||
public List<OrderItem> selectList(OrderItemQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
Long productId = query.getProductId();
|
||||
if (productId != null) {
|
||||
qw.eq("product_id", productId);
|
||||
}
|
||||
String outProductId = query.getOutProductId();
|
||||
if (!StringUtils.isEmpty(outProductId)) {
|
||||
qw.eq("out_product_id", outProductId);
|
||||
}
|
||||
Long skuId = query.getSkuId();
|
||||
if (skuId != null) {
|
||||
qw.eq("sku_id", skuId);
|
||||
}
|
||||
String outSkuId = query.getOutSkuId();
|
||||
if (!StringUtils.isEmpty(outSkuId)) {
|
||||
qw.eq("out_sku_id", outSkuId);
|
||||
}
|
||||
Long productSnapshotId = query.getProductSnapshotId();
|
||||
if (productSnapshotId != null) {
|
||||
qw.eq("product_snapshot_id", productSnapshotId);
|
||||
}
|
||||
Long skuSnapshotId = query.getSkuSnapshotId();
|
||||
if (skuSnapshotId != null) {
|
||||
qw.eq("sku_snapshot_id", skuSnapshotId);
|
||||
}
|
||||
String pic = query.getPic();
|
||||
if (!StringUtils.isEmpty(pic)) {
|
||||
qw.eq("pic", pic);
|
||||
}
|
||||
String productNameLike = query.getProductNameLike();
|
||||
if (!StringUtils.isEmpty(productNameLike)) {
|
||||
qw.like("product_name", productNameLike);
|
||||
}
|
||||
BigDecimal salePrice = query.getSalePrice();
|
||||
if (salePrice != null) {
|
||||
qw.eq("sale_price", salePrice);
|
||||
}
|
||||
BigDecimal purchasePrice = query.getPurchasePrice();
|
||||
if (purchasePrice != null) {
|
||||
qw.eq("purchase_price", purchasePrice);
|
||||
}
|
||||
Integer quantity = query.getQuantity();
|
||||
if (quantity != null) {
|
||||
qw.eq("quantity", quantity);
|
||||
}
|
||||
Long productCategoryId = query.getProductCategoryId();
|
||||
if (productCategoryId != null) {
|
||||
qw.eq("product_category_id", productCategoryId);
|
||||
}
|
||||
String spData = query.getSpData();
|
||||
if (!StringUtils.isEmpty(spData)) {
|
||||
qw.eq("sp_data", spData);
|
||||
}
|
||||
return orderItemMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单中所包含的商品
|
||||
*
|
||||
* @param orderItem 订单中所包含的商品
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderItem orderItem) {
|
||||
orderItem.setCreateTime(LocalDateTime.now());
|
||||
return orderItemMapper.insert(orderItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单中所包含的商品
|
||||
*
|
||||
* @param orderItem 订单中所包含的商品
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderItem orderItem) {
|
||||
return orderItemMapper.updateById(orderItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单中所包含的商品信息
|
||||
*
|
||||
* @param id 订单中所包含的商品主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderItemMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveOrderItem(Member member, LocalDateTime optTime,
|
||||
Long orderId, List<OrderProductListDTO> list){
|
||||
List<OrderItem> addOrderItemList = new ArrayList<>();
|
||||
list.forEach(item -> {
|
||||
OrderItem orderItem = new OrderItem();
|
||||
orderItem.setId(IDGenerator.generateId());
|
||||
orderItem.setOrderId(orderId);
|
||||
orderItem.setProductId(item.getProduct().getId());
|
||||
orderItem.setOutProductId(item.getProduct().getOutProductId());
|
||||
orderItem.setSkuId(item.getSku().getId());
|
||||
orderItem.setOutSkuId(item.getSku().getOutSkuId());
|
||||
orderItem.setPic(item.getSku().getPic());
|
||||
orderItem.setProductName(item.getProduct().getName());
|
||||
orderItem.setSalePrice(item.getSku().getPrice());
|
||||
orderItem.setQuantity(item.getQuantity());
|
||||
orderItem.setProductCategoryId(item.getProduct().getCategoryId());
|
||||
orderItem.setSpData(item.getSku().getSpData());
|
||||
orderItem.setCreateBy(member.getId());
|
||||
orderItem.setCreateTime(optTime);
|
||||
addOrderItemList.add(orderItem);
|
||||
});
|
||||
boolean flag = saveBatch(addOrderItemList);
|
||||
if (!flag){
|
||||
throw new RuntimeException("新增订单item失败");
|
||||
}
|
||||
}
|
||||
public interface OrderItemService extends IService<OrderItem> {
|
||||
}
|
||||
|
@ -1,100 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单操作历史记录Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderOperateHistoryService extends ServiceImpl<OrderOperateHistoryMapper, OrderOperateHistory> {
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单操作历史记录
|
||||
*
|
||||
* @param id 订单操作历史记录主键
|
||||
* @return 订单操作历史记录
|
||||
*/
|
||||
public OrderOperateHistory selectById(Long id) {
|
||||
return orderOperateHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单操作历史记录列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单操作历史记录
|
||||
*/
|
||||
public List<OrderOperateHistory> selectList(OrderOperateHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderOperateHistory> qw = new QueryWrapper<>();
|
||||
String orderSn = query.getOrderSn();
|
||||
if (StrUtil.isNotBlank(orderSn)) {
|
||||
qw.eq("order_sn", orderSn);
|
||||
}
|
||||
String operateMan = query.getOperateMan();
|
||||
if (!StringUtils.isEmpty(operateMan)) {
|
||||
qw.eq("operate_man", operateMan);
|
||||
}
|
||||
Integer orderStatus = query.getOrderStatus();
|
||||
if (orderStatus != null) {
|
||||
qw.eq("order_status", orderStatus);
|
||||
}
|
||||
String note = query.getNote();
|
||||
if (!StringUtils.isEmpty(note)) {
|
||||
qw.eq("note", note);
|
||||
}
|
||||
qw.orderByDesc("create_time");
|
||||
return orderOperateHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单操作历史记录
|
||||
*
|
||||
* @param orderOperateHistory 订单操作历史记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderOperateHistory orderOperateHistory) {
|
||||
orderOperateHistory.setCreateTime(LocalDateTime.now());
|
||||
return orderOperateHistoryMapper.insert(orderOperateHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单操作历史记录
|
||||
*
|
||||
* @param orderOperateHistory 订单操作历史记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderOperateHistory orderOperateHistory) {
|
||||
return orderOperateHistoryMapper.updateById(orderOperateHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单操作历史记录信息
|
||||
*
|
||||
* @param id 订单操作历史记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderOperateHistoryMapper.deleteById(id);
|
||||
}
|
||||
public interface OrderOperateHistoryService extends IService<OrderOperateHistory> {
|
||||
}
|
||||
|
@ -1,402 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.goods.convert.SkuConvert;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.order.convert.OrderConvert;
|
||||
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.form.DeliverProductForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
|
||||
import com.wzj.soopin.order.domain.query.OrderH5Query;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.mapper.OrderDeliveryHistoryMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
||||
import com.wzj.soopin.order.utils.AesCryptoUtils;
|
||||
import com.wzj.soopin.order.utils.SecurityUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.common.core.domain.event.Constants;
|
||||
import org.dromara.common.core.utils.PhoneUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.wzj.soopin.member.mapper.MemberAddressMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberCartMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberMapper;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单表Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderService {
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
@Autowired
|
||||
private OrderConvert orderConvert;
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
@Autowired
|
||||
private MemberAddressMapper memberAddressMapper;
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
@Autowired
|
||||
private SkuConvert skuConvert;
|
||||
@Autowired
|
||||
private OrderItemService orderItemService;
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
@Autowired
|
||||
private MemberCartMapper memberCartMapper;
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryMapper orderDeliveryHistoryMapper;
|
||||
@Autowired
|
||||
private OrderOperateHistoryConvert historyConvert;
|
||||
|
||||
/**
|
||||
* 查询订单表
|
||||
*
|
||||
* @param id 订单表主键
|
||||
* @return 订单表
|
||||
*/
|
||||
public ManagerOrderDetailVO selectById(Long id) {
|
||||
Order order = orderMapper.selectById(id);
|
||||
if (order == null){
|
||||
throw new RuntimeException("查不到订单信息");
|
||||
}
|
||||
ManagerOrderDetailVO managerOrderDetailVO = new ManagerOrderDetailVO();
|
||||
//封装订单信息
|
||||
managerOrderDetailVO.setOrderId(id);
|
||||
managerOrderDetailVO.setCouponAmount(order.getCouponAmount());
|
||||
managerOrderDetailVO.setOrderSn(order.getOrderSn());
|
||||
managerOrderDetailVO.setOrderStatus(order.getStatus());
|
||||
managerOrderDetailVO.setCreateTime(order.getCreateTime());
|
||||
managerOrderDetailVO.setDeliveryTime(order.getDeliveryTime());
|
||||
managerOrderDetailVO.setExpressName(order.getDeliveryCompany());
|
||||
managerOrderDetailVO.setExpressNo(order.getDeliverySn());
|
||||
managerOrderDetailVO.setPayAmount(order.getPayAmount());
|
||||
managerOrderDetailVO.setPayTime(order.getPaymentTime());
|
||||
managerOrderDetailVO.setPayType(order.getPayType());
|
||||
managerOrderDetailVO.setTotalAmount(order.getTotalAmount());
|
||||
managerOrderDetailVO.setPayAmount(order.getPayAmount());
|
||||
managerOrderDetailVO.setReceiveTime(order.getReceiveTime());
|
||||
//封装订单地址信息
|
||||
ManagerOrderAddressVo managerOrderAddressVo = new ManagerOrderAddressVo();
|
||||
managerOrderAddressVo.setUserPhone(order.getReceiverPhone());
|
||||
managerOrderAddressVo.setAddress(order.getReceiverDetailAddress());
|
||||
managerOrderAddressVo.setArea(
|
||||
order.getReceiverProvince() +
|
||||
order.getReceiverCity() +
|
||||
order.getReceiverDistrict());
|
||||
managerOrderAddressVo.setName(order.getReceiverName());
|
||||
managerOrderDetailVO.setAddressInfo(managerOrderAddressVo);
|
||||
//查询会员信息
|
||||
Member member = memberMapper.selectById(order.getMemberId());
|
||||
managerOrderDetailVO.setUserName(member.getNickname());
|
||||
managerOrderDetailVO.setUserPhone(member.getPhoneHidden());
|
||||
//查询购买商品信息
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getId());
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(qw);
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setProductId(item.getProductId());
|
||||
productVO.setBuyNum(item.getQuantity());
|
||||
productVO.setPic(item.getPic());
|
||||
productVO.setProductName(item.getProductName());
|
||||
productVO.setSalePrice(item.getSalePrice());
|
||||
productVO.setSpData(item.getSpData());
|
||||
productList.add(productVO);
|
||||
});
|
||||
managerOrderDetailVO.setProductInfo(productList);
|
||||
return managerOrderDetailVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单表列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单表
|
||||
*/
|
||||
public PageImpl<ManagerOrderVO> selectList(ManagerOrderQueryForm query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
if (!StringUtils.isEmpty(query.getUserPhone())){
|
||||
// query.setUserPhone(AesCryptoUtils.encrypt(aesKey, query.getUserPhone()));
|
||||
}
|
||||
List<ManagerOrderVO> managerOrderVOList = orderMapper.selectManagerOrderPage(query);
|
||||
if (CollectionUtil.isEmpty(managerOrderVOList)){
|
||||
return new PageImpl<>(managerOrderVOList, page, 0);
|
||||
}
|
||||
long total = managerOrderVOList.size();
|
||||
Map<Long, ManagerOrderVO> orderMap = managerOrderVOList.stream().collect(Collectors.toMap(ManagerOrderVO::getId, it -> it, (v1,v2) -> v2, LinkedHashMap::new));
|
||||
//查orderItem
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.in("order_id", orderMap.keySet());
|
||||
Map<Long, List<OrderItem>> groupedOrderItemMap = orderItemMapper.selectList(qw)
|
||||
.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
groupedOrderItemMap.keySet().forEach(key -> {
|
||||
ManagerOrderVO managerOrderVO = orderMap.get(key);
|
||||
managerOrderVO.setBuyNum(0);
|
||||
List<OrderItem> orderItemList = groupedOrderItemMap.get(key);
|
||||
List<ManagerOrderProductVO> addProductList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO vo = new ManagerOrderProductVO();
|
||||
vo.setProductName(item.getProductName());
|
||||
vo.setSalePrice(item.getSalePrice());
|
||||
vo.setPic(item.getPic());
|
||||
vo.setBuyNum(item.getQuantity());
|
||||
vo.setProductId(item.getProductId());
|
||||
vo.setSpData(item.getSpData());
|
||||
addProductList.add(vo);
|
||||
managerOrderVO.setBuyNum(managerOrderVO.getBuyNum() + item.getQuantity());
|
||||
});
|
||||
managerOrderVO.setProductList(addProductList);
|
||||
});
|
||||
return new PageImpl<>(new ArrayList<>(orderMap.values()), page, total);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单表
|
||||
*
|
||||
* @param order 订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Order order) {
|
||||
order.setCreateTime(LocalDateTime.now());
|
||||
return orderMapper.insert(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单表
|
||||
*
|
||||
* @param order 订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Order order) {
|
||||
return orderMapper.updateById(order);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单表信息
|
||||
*
|
||||
* @param id 订单表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public Page<OrderVO> queryOrderPage(OrderH5Query query, Pageable pageReq) {
|
||||
QueryWrapper<Order> qw = new QueryWrapper<>();
|
||||
qw.eq("member_id", SecurityUtils.getUserId());
|
||||
IPage<Order> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>();
|
||||
page.setCurrent(pageReq.getPageNumber())
|
||||
.setSize(pageReq.getPageSize());
|
||||
if (CollUtil.isEmpty(pageReq.getSort())) {
|
||||
pageReq.getSort().forEach(it -> {
|
||||
qw.orderBy(true, it.getDirection().isAscending(), it.getProperty());
|
||||
});
|
||||
}
|
||||
Integer tab = query.getTab();
|
||||
if (tab != null) {
|
||||
qw.eq("delete_status", 0);
|
||||
if (tab == 1) {
|
||||
qw.eq("status", 0);
|
||||
} else if (tab == 2) {
|
||||
qw.eq("status", 1);
|
||||
qw.eq("aftersale_status", 1);
|
||||
} else if (tab == 3) {
|
||||
qw.eq("status", 2);
|
||||
qw.eq("confirm_status", 0);
|
||||
} else if (tab == 4) {
|
||||
qw.eq("status", 2);
|
||||
qw.eq("confirm_status", 1);
|
||||
}
|
||||
}
|
||||
orderMapper.selectPage(page, qw);
|
||||
List<Order> orders = page.getRecords();
|
||||
long total = page.getPages();
|
||||
if (CollUtil.isEmpty(orders)) {
|
||||
return new PageImpl<>(Collections.emptyList(), pageReq, total);
|
||||
}
|
||||
LambdaQueryWrapper<OrderItem> qw1 = new LambdaQueryWrapper<>();
|
||||
qw1.in(OrderItem::getOrderId, orders.stream().map(Order::getId).collect(Collectors.toList()));
|
||||
Map<Long, List<OrderItem>> oid2items = orderItemMapper.selectList(qw1)
|
||||
.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
List<OrderVO> res = orderConvert.dos2vos(orders);
|
||||
res.forEach(it -> {
|
||||
it.setItems(oid2items.get(it.getId()));
|
||||
});
|
||||
return new PageImpl<>(res, pageReq, total);
|
||||
}
|
||||
|
||||
|
||||
public Integer saveMerchantNote(Order order) {
|
||||
Order orderInDb = orderMapper.selectById(order.getId());
|
||||
if (orderInDb == null){
|
||||
throw new RuntimeException("订单不存在");
|
||||
}
|
||||
UpdateWrapper<Order> qw = new UpdateWrapper<>();
|
||||
qw.eq("id", order.getId());
|
||||
qw.set("merchant_note", order.getMerchantNote());
|
||||
return orderMapper.update(null, qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理后台发货
|
||||
* 目前发货是这样的:待发货、已发货、已完成都能执行发货,每次都会创建一条新的发货记录且修改订单发货信息
|
||||
* @param request 发货请求
|
||||
* @param userId 操作人
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional
|
||||
public String deliverProduct(DeliverProductForm request, Long userId) {
|
||||
//查询订单
|
||||
Order order = orderMapper.selectById(request.getOrderId());
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", request.getOrderId());
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(qw);
|
||||
if (order == null || CollectionUtil.isEmpty(orderItemList)){
|
||||
throw new RuntimeException("未找到该订单信息");
|
||||
}
|
||||
// 是否为待发货、已发货 、已完成
|
||||
if (!(Constants.OrderStatus.SEND.equals(order.getStatus())
|
||||
|| Constants.OrderStatus.GET.equals(order.getStatus())
|
||||
|| Constants.OrderStatus.CONFIRM.equals(order.getStatus()))){
|
||||
throw new RuntimeException("订单状态错误");
|
||||
}
|
||||
Integer orderStatus =
|
||||
Constants.OrderStatus.SEND.equals(order.getStatus()) ? Constants.OrderStatus.GET : order.getStatus();
|
||||
//更新订单
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
order.setUpdateBy(null);
|
||||
order.setStatus(orderStatus);
|
||||
order.setDeliveryTime(optDate);
|
||||
order.setUpdateTime(optDate);
|
||||
order.setDeliveryCompany(request.getExpressName());
|
||||
order.setDeliverySn(request.getExpressSn());
|
||||
orderMapper.updateById(order);
|
||||
//创建新的发货记录
|
||||
this.createDeliveryHistory(request, userId, optDate);
|
||||
//创建订单操作记录
|
||||
this.createOrderOptHistory(order.getId(), order.getOrderSn(), orderStatus, userId, optDate);
|
||||
return "发货成功";
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建发货记录
|
||||
* @param request 发货请求
|
||||
* @param userId 操作人
|
||||
* @param optDate 操作时间
|
||||
*/
|
||||
private void createDeliveryHistory(DeliverProductForm request, Long userId, LocalDateTime optDate){
|
||||
OrderDeliveryHistory orderDeliveryHistory = new OrderDeliveryHistory();
|
||||
orderDeliveryHistory.setOrderId(request.getOrderId());
|
||||
orderDeliveryHistory.setDeliveryCompany(request.getExpressName());
|
||||
orderDeliveryHistory.setDeliverySn(request.getExpressSn());
|
||||
orderDeliveryHistory.setCreateTime(optDate);
|
||||
orderDeliveryHistory.setCreateBy(userId);
|
||||
int rows = orderDeliveryHistoryMapper.insert(orderDeliveryHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("新增订单发货记录失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建订单操作历史
|
||||
* @param orderId 订单id
|
||||
* @param orderStatus 订单状态
|
||||
* @param userId 操作人
|
||||
* @param optDate 操作时间
|
||||
*/
|
||||
private void createOrderOptHistory(Long orderId, String orderSn, Integer orderStatus, Long userId, LocalDateTime optDate){
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(orderId);
|
||||
optHistory.setOrderSn(orderSn);
|
||||
optHistory.setOperateMan(SecurityUtils.getUsername());
|
||||
optHistory.setOrderStatus(orderStatus);
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(userId);
|
||||
optHistory.setUpdateBy(userId);
|
||||
optHistory.setUpdateTime(optDate);
|
||||
int rows = orderOperateHistoryMapper.insert(optHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("新增订单操作记录失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单id查询订单操作日志
|
||||
* @param orderId 订单id
|
||||
* @return 结果
|
||||
*/
|
||||
public List<OrderOperateHistoryVO> log(Long orderId) {
|
||||
LambdaQueryWrapper<OrderOperateHistory> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(OrderOperateHistory::getOrderId, orderId);
|
||||
wrapper.in(OrderOperateHistory::getOrderStatus, Arrays.asList(0, 1, 2, 3, 4));
|
||||
wrapper.orderByDesc(OrderOperateHistory::getCreateTime);
|
||||
List<OrderOperateHistory> historyList = orderOperateHistoryMapper.selectList(wrapper);
|
||||
return historyConvert.dos2vos(historyList);
|
||||
}
|
||||
|
||||
public String decryptPhone(Long orderId) {
|
||||
Order order = orderMapper.selectById(orderId);
|
||||
String receiverPhoneEncrypted = order.getReceiverPhoneEncrypted();
|
||||
if(receiverPhoneEncrypted!=null){
|
||||
// return AesCryptoUtils.decrypt(aesKey,receiverPhoneEncrypted);
|
||||
return null;
|
||||
}else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean updateReceiver(Order order) {
|
||||
Order dbOrder = orderMapper.selectById(order.getId());
|
||||
if (dbOrder == null) {
|
||||
return false;
|
||||
}
|
||||
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("receiver_name",order.getReceiverName())
|
||||
.set("receiver_phone", PhoneUtils.hidePhone(order.getReceiverPhone()))
|
||||
.set("receiver_city",order.getReceiverCity())
|
||||
.set("receiver_district",order.getReceiverDistrict())
|
||||
.set("receiver_province",order.getReceiverProvince())
|
||||
.set("receiver_detail_address",order.getReceiverDetailAddress())
|
||||
// .set("receiver_phone_encrypted", AesCryptoUtils.encrypt(aesKey, order.getReceiverPhone()))
|
||||
.set("update_time",LocalDateTime.now());
|
||||
updateWrapper.eq("id",order.getId());
|
||||
int update = orderMapper.update(null, updateWrapper);
|
||||
return update == 1;
|
||||
}
|
||||
public interface OrderService extends IService<Order> {
|
||||
}
|
||||
|
@ -1,126 +1,7 @@
|
||||
package com.wzj.soopin.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import com.wzj.soopin.order.domain.query.WechatPaymentHistoryQuery;
|
||||
import com.wzj.soopin.order.mapper.WechatPaymentHistoryMapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 微信订单表Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class WechatPaymentHistoryService {
|
||||
@Autowired
|
||||
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询微信订单表
|
||||
*
|
||||
* @param id 微信订单表主键
|
||||
* @return 微信订单表
|
||||
*/
|
||||
public WechatPaymentHistory selectById(Long id) {
|
||||
return wechatPaymentHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询微信订单表列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 微信订单表
|
||||
*/
|
||||
public List<WechatPaymentHistory> selectList(WechatPaymentHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
String paymentId = query.getPaymentId();
|
||||
if (!StringUtils.isEmpty(paymentId)) {
|
||||
qw.eq("payment_id", paymentId);
|
||||
}
|
||||
Long memberId = query.getMemberId();
|
||||
if (memberId != null) {
|
||||
qw.eq("member_id", memberId);
|
||||
}
|
||||
String openid = query.getOpenid();
|
||||
if (!StringUtils.isEmpty(openid)) {
|
||||
qw.eq("openid", openid);
|
||||
}
|
||||
String realNameLike = query.getRealNameLike();
|
||||
if (!StringUtils.isEmpty(realNameLike)) {
|
||||
qw.like("real_name", realNameLike);
|
||||
}
|
||||
String title = query.getTitle();
|
||||
if (!StringUtils.isEmpty(title)) {
|
||||
qw.eq("title", title);
|
||||
}
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
BigDecimal money = query.getMoney();
|
||||
if (money != null) {
|
||||
qw.eq("money", money);
|
||||
}
|
||||
Integer opType = query.getOpType();
|
||||
if (opType != null) {
|
||||
qw.eq("op_type", opType);
|
||||
}
|
||||
Integer paymentStatus = query.getPaymentStatus();
|
||||
if (paymentStatus != null) {
|
||||
qw.eq("payment_status", paymentStatus);
|
||||
}
|
||||
String attach = query.getAttach();
|
||||
if (!StringUtils.isEmpty(attach)) {
|
||||
qw.eq("attach", attach);
|
||||
}
|
||||
String responseBody = query.getResponseBody();
|
||||
if (!StringUtils.isEmpty(responseBody)) {
|
||||
qw.eq("response_body", responseBody);
|
||||
}
|
||||
return wechatPaymentHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增微信订单表
|
||||
*
|
||||
* @param wechatPaymentHistory 微信订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(WechatPaymentHistory wechatPaymentHistory) {
|
||||
wechatPaymentHistory.setCreateTime(LocalDateTime.now());
|
||||
return wechatPaymentHistoryMapper.insert(wechatPaymentHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改微信订单表
|
||||
*
|
||||
* @param wechatPaymentHistory 微信订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(WechatPaymentHistory wechatPaymentHistory) {
|
||||
return wechatPaymentHistoryMapper.updateById(wechatPaymentHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除微信订单表信息
|
||||
*
|
||||
* @param id 微信订单表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return wechatPaymentHistoryMapper.deleteById(id);
|
||||
}
|
||||
public interface WechatPaymentHistoryService extends IService<WechatPaymentHistory> {
|
||||
}
|
||||
|
@ -0,0 +1,111 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.order.domain.entity.AftersaleItem;
|
||||
import com.wzj.soopin.order.domain.query.AftersaleItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.mapper.AftersaleItemMapper;
|
||||
import com.wzj.soopin.order.service.AftersaleItemService;
|
||||
import com.wzj.soopin.order.utils.PageUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单售后Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class AftersaleItemServiceImpl extends ServiceImpl<AftersaleItemMapper, AftersaleItem> implements AftersaleItemService {
|
||||
@Autowired
|
||||
private AftersaleItemMapper aftersaleItemMapper;
|
||||
|
||||
/**
|
||||
* 查询订单售后
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 订单售后
|
||||
*/
|
||||
public AftersaleItem selectById(Long id) {
|
||||
return aftersaleItemMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单售后列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单售后
|
||||
*/
|
||||
public List<AftersaleItem> selectList(AftersaleItemQuery query, Pageable page) {
|
||||
// if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
QueryWrapper<AftersaleItem> qw = new QueryWrapper<>();
|
||||
Long memberId = query.getMemberId();
|
||||
if (memberId != null) {
|
||||
qw.eq("member_id", memberId);
|
||||
}
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
Long orderItemId = query.getOrderItemId();
|
||||
if (orderItemId != null) {
|
||||
qw.eq("order_item_id", orderItemId);
|
||||
}
|
||||
BigDecimal returnAmount = query.getReturnAmount();
|
||||
if (returnAmount != null) {
|
||||
qw.eq("return_amount", returnAmount);
|
||||
}
|
||||
Integer quantity = query.getQuantity();
|
||||
if (quantity != null) {
|
||||
qw.eq("quantity", quantity);
|
||||
}
|
||||
return aftersaleItemMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单售后
|
||||
*
|
||||
* @param aftersaleItem 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(AftersaleItem aftersaleItem) {
|
||||
aftersaleItem.setCreateTime(LocalDateTime.now());
|
||||
return aftersaleItemMapper.insert(aftersaleItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单售后
|
||||
*
|
||||
* @param aftersaleItem 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(AftersaleItem aftersaleItem) {
|
||||
return aftersaleItemMapper.updateById(aftersaleItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单售后信息
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return aftersaleItemMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public IPage<AftersaleItem> pagelist(AftersaleItemQuery query, PageVO page) {
|
||||
IPage<AftersaleItem> pageParam = PageUtil.initPage(page);
|
||||
return aftersaleItemMapper.selectAftersale(query, pageParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,472 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wechat.pay.java.service.refund.model.Refund;
|
||||
import com.wechat.pay.java.service.refund.model.RefundNotification;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.po.MemberWechat;
|
||||
import com.wzj.soopin.member.mapper.MemberMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberWechatMapper;
|
||||
import com.wzj.soopin.order.service.AftersaleService;
|
||||
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.entity.*;
|
||||
import com.wzj.soopin.order.domain.form.DealWithAftersaleForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.mapper.*;
|
||||
import com.wzj.soopin.order.wechat.WechatPayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.event.Constants;
|
||||
import org.dromara.common.core.enums.AftersaleStatus;
|
||||
import org.dromara.common.core.enums.OrderRefundStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单售后Service业务层处理
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class AftersaleServiceImpl extends ServiceImpl<AftersaleMapper, Aftersale> implements AftersaleService {
|
||||
@Autowired
|
||||
private AftersaleMapper aftersaleMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderOperateHistoryConvert historyConvert;
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
// @Autowired
|
||||
// private MemberCouponService memberCouponService;
|
||||
@Autowired
|
||||
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
|
||||
@Autowired
|
||||
private MemberWechatMapper memberWechatMapper;
|
||||
@Autowired(required = false)
|
||||
private WechatPayService wechatPayService;
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper operateHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单售后
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 订单售后
|
||||
*/
|
||||
public ManagerRefundOrderDetailVO selectById(Long id) {
|
||||
Order order = orderMapper.selectById(id);
|
||||
if (order == null) {
|
||||
throw new RuntimeException("无该订单信息");
|
||||
}
|
||||
ManagerRefundOrderDetailVO result = new ManagerRefundOrderDetailVO();
|
||||
//订单基本信息
|
||||
result.setOrderId(order.getId());
|
||||
result.setOrderSn(order.getOrderSn());
|
||||
result.setCreateTime(order.getCreateTime());
|
||||
result.setPayType(order.getPayType());
|
||||
result.setPayTime(order.getPaymentTime());
|
||||
result.setStatus(order.getStatus());
|
||||
result.setExpressName(order.getDeliveryCompany());
|
||||
result.setDeliveryTime(order.getDeliveryTime());
|
||||
result.setExpressNo(order.getDeliverySn());
|
||||
result.setTotalAmount(order.getTotalAmount());
|
||||
result.setPayAmount(order.getPayAmount());
|
||||
//用户信息
|
||||
Member member = memberMapper.selectById(order.getMemberId());
|
||||
result.setNickName(member.getNickname());
|
||||
result.setPhone(member.getPhoneHidden());
|
||||
//收货信息
|
||||
OrderAddressVO orderAddressVO = new OrderAddressVO();
|
||||
orderAddressVO.setAddress(order.getReceiverDetailAddress());
|
||||
orderAddressVO.setName(order.getReceiverName());
|
||||
orderAddressVO.setUserPhone(order.getReceiverPhone());
|
||||
orderAddressVO.setArea(order.getReceiverProvince() + order.getReceiverCity() + order.getReceiverDistrict());
|
||||
result.setAddressInfo(orderAddressVO);
|
||||
//orderItem
|
||||
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
|
||||
orderItemQw.eq("order_id", id);
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(orderItem -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setPic(orderItem.getPic());
|
||||
productVO.setSpData(orderItem.getSpData());
|
||||
productVO.setProductName(orderItem.getProductName());
|
||||
productVO.setSalePrice(orderItem.getSalePrice());
|
||||
productVO.setBuyNum(orderItem.getQuantity());
|
||||
productVO.setProductId(orderItem.getProductId());
|
||||
productList.add(productVO);
|
||||
});
|
||||
result.setProductList(productList);
|
||||
//售后信息
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", order.getId());
|
||||
aftersaleQw.orderByDesc("create_time");
|
||||
List<Aftersale> aftersaleList = aftersaleMapper.selectList(aftersaleQw);
|
||||
List<RefundInfoVO> refundInfoList = new ArrayList<>();
|
||||
aftersaleList.forEach(aftersale -> {
|
||||
RefundInfoVO refundInfo = new RefundInfoVO();
|
||||
refundInfo.setId(aftersale.getId());
|
||||
refundInfo.setApplyRefundType(aftersale.getType());
|
||||
refundInfo.setApplyRefundTime(aftersale.getCreateTime());
|
||||
refundInfo.setRefundAmount(aftersale.getReturnAmount());
|
||||
refundInfo.setReason(aftersale.getReason());
|
||||
refundInfo.setDescription(aftersale.getDescription());
|
||||
refundInfo.setProofPics(aftersale.getProofPics());
|
||||
refundInfo.setRefundStatus(aftersale.getStatus());
|
||||
refundInfo.setRefundWpCode(aftersale.getRefundWpCode());
|
||||
refundInfo.setRefundWaybillCode(aftersale.getRefundWaybillCode());
|
||||
refundInfo.setRefundStatus(aftersale.getStatus());
|
||||
refundInfo.setRemark(aftersale.getHandleNote());
|
||||
refundInfoList.add(refundInfo);
|
||||
});
|
||||
result.setRefundInfoList(refundInfoList);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单售后列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单售后
|
||||
*/
|
||||
public List<ManagerRefundOrderVO> selectList(ManagerAftersaleOrderForm query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
if (StrUtil.isNotBlank(query.getOrderSn()) && query.getOrderSn().length() > 7) {
|
||||
query.setOrderSn(query.getOrderSn().substring(7));
|
||||
}
|
||||
List<ManagerRefundOrderVO> managerRefundOrderVOS = aftersaleMapper.selectManagerRefundOrder(query);
|
||||
if (CollectionUtil.isEmpty(managerRefundOrderVOS)) {
|
||||
return managerRefundOrderVOS;
|
||||
}
|
||||
Set<Long> idSet = managerRefundOrderVOS.stream().map(ManagerRefundOrderVO::getOrderId).collect(Collectors.toSet());
|
||||
//查一下orderSn集合
|
||||
QueryWrapper<Order> orderQw = new QueryWrapper<>();
|
||||
orderQw.in("id", idSet);
|
||||
Map<Long, Order> orderMap = orderMapper.selectList(orderQw).stream().collect(Collectors.toMap(Order::getId, it -> it));
|
||||
//封装售后单商品数据
|
||||
QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
|
||||
orderItemQw.in("order_id", idSet);
|
||||
Map<Long, List<OrderItem>> orderItemMap = orderItemMapper.selectList(orderItemQw).stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
managerRefundOrderVOS.forEach(vo -> {
|
||||
Order order = orderMap.get(vo.getOrderId());
|
||||
vo.setOrderSn(order.getOrderSn());
|
||||
List<OrderItem> orderItemList = orderItemMap.get(vo.getOrderId());
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setProductName(item.getProductName());
|
||||
productVO.setSalePrice(item.getSalePrice());
|
||||
productVO.setPic(item.getPic());
|
||||
productVO.setBuyNum(item.getQuantity());
|
||||
productVO.setProductId(item.getProductId());
|
||||
productVO.setSpData(item.getSpData());
|
||||
productList.add(productVO);
|
||||
});
|
||||
vo.setProductList(productList);
|
||||
});
|
||||
return managerRefundOrderVOS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单售后
|
||||
*
|
||||
* @param aftersale 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(Aftersale aftersale) {
|
||||
aftersale.setCreateTime(LocalDateTime.now());
|
||||
return aftersaleMapper.insert(aftersale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单售后
|
||||
*
|
||||
* @param aftersale 订单售后
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(Aftersale aftersale) {
|
||||
return aftersaleMapper.updateById(aftersale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单售后信息
|
||||
*
|
||||
* @param id 订单售后主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return aftersaleMapper.deleteById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 售后处理
|
||||
*
|
||||
* @param request 请求体
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void dealWith(DealWithAftersaleForm request, Long userId, String optUserName) {
|
||||
Order order = orderMapper.selectById(request.getOrderId());
|
||||
if (order == null) {
|
||||
throw new RuntimeException("无该订单");
|
||||
}
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", request.getOrderId());
|
||||
if (request.getOptType() == 3) {
|
||||
aftersaleQw.eq("status", 1);
|
||||
} else {
|
||||
aftersaleQw.eq("status", 0);
|
||||
}
|
||||
Aftersale aftersale = aftersaleMapper.selectOne(aftersaleQw);
|
||||
if (aftersale == null) {
|
||||
throw new RuntimeException("没有售后单");
|
||||
}
|
||||
//售后状态与售后类型是否对应
|
||||
if (Constants.OptType.AGREE.equals(request.getOptType()) || Constants.OptType.REFUSE.equals(request.getOptType())) {
|
||||
if (!AftersaleStatus.APPLY.getType().equals(aftersale.getStatus())) {
|
||||
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
||||
}
|
||||
} else {
|
||||
if (!AftersaleStatus.WAIT.getType().equals(aftersale.getStatus())) {
|
||||
throw new RuntimeException("订单状态错误,请刷新页面后重试!");
|
||||
}
|
||||
}
|
||||
//拒绝则理由必填
|
||||
if (Constants.OptType.REFUSE.equals(request.getOptType()) && StrUtil.isBlank(request.getRemark())) {
|
||||
throw new RuntimeException("请填写拒绝理由");
|
||||
}
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
//要创建的订单操作记录,status后续判断再设置
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(order.getId());
|
||||
optHistory.setOrderSn(order.getOrderSn());
|
||||
optHistory.setOperateMan("后台管理员");
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(userId);
|
||||
optHistory.setUpdateBy(userId);
|
||||
optHistory.setUpdateTime(optDate);
|
||||
//封装售后wrapper
|
||||
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
||||
aftersaleWrapper.eq("order_id", request.getOrderId());
|
||||
aftersaleWrapper.eq("status", AftersaleStatus.APPLY.getType());
|
||||
aftersaleWrapper.set("handle_man", optUserName);
|
||||
aftersaleWrapper.set("update_time", optDate);
|
||||
aftersaleWrapper.set("handle_time", optDate);
|
||||
aftersaleWrapper.set("update_by", userId);
|
||||
//封装订单wrapper
|
||||
UpdateWrapper<Order> orderWrapper = new UpdateWrapper<>();
|
||||
orderWrapper.eq("id", request.getOrderId());
|
||||
orderWrapper.set("update_time", optDate);
|
||||
orderWrapper.set("update_by", userId);
|
||||
//更新订单、售后单,创建操作记录
|
||||
if (request.getOptType().equals(Constants.OptType.REFUSE)) {
|
||||
aftersaleWrapper.set("status", AftersaleStatus.REJECT.getType());
|
||||
aftersaleWrapper.set("handle_note", request.getRemark());
|
||||
orderWrapper.set("aftersale_status", OrderRefundStatus.NO_REFUND.getType());
|
||||
optHistory.setOrderStatus(14);
|
||||
} else if (request.getOptType().equals(Constants.OptType.AGREE)) {
|
||||
aftersaleWrapper.set("status", AftersaleStatus.WAIT.getType());
|
||||
orderWrapper.set("aftersale_status", Objects.equals(aftersale.getType(), 1) ? 3 : 2);
|
||||
optHistory.setOrderStatus(12);
|
||||
} else {
|
||||
//如果是退货退款 order身上的售后状态应该是保持不变的 仅退款的话就进入退款了
|
||||
orderWrapper.set("aftersale_status", 3);
|
||||
int row = orderMapper.update(null, orderWrapper);
|
||||
if (row != 1) {
|
||||
throw new RuntimeException("修改订单状态失败");
|
||||
}
|
||||
}
|
||||
int rows = aftersaleMapper.update(null, aftersaleWrapper);
|
||||
// if (rows < 1) {
|
||||
// throw new RuntimeException("更新售后单失败");
|
||||
// }
|
||||
rows = orderMapper.update(null, orderWrapper);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("更新订单失败");
|
||||
}
|
||||
rows = orderOperateHistoryMapper.insert(optHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("创建订单操作记录失败");
|
||||
}
|
||||
// 是否需要发起退款
|
||||
if ((request.getOptType() == Constants.OptType.GIVING || (request.getOptType() == Constants.OptType.AGREE && aftersale.getType() == 1))) {
|
||||
tradeRefund(aftersale, order, optDate, userId);
|
||||
}
|
||||
}
|
||||
|
||||
public void tradeRefund(Aftersale returnApply, Order order, LocalDateTime optDate, Long userId) {
|
||||
//查一下微信订单
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getPayId()).eq("op_type", 1);
|
||||
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
//查用户的微信信息
|
||||
QueryWrapper<MemberWechat> wechatQw = new QueryWrapper<>();
|
||||
wechatQw.eq("member_id", order.getMemberId());
|
||||
MemberWechat memberWechat = memberWechatMapper.selectOne(wechatQw);
|
||||
//查订单item
|
||||
QueryWrapper<OrderItem> itemQw = new QueryWrapper<>();
|
||||
itemQw.eq("order_id", order.getId());
|
||||
OrderItem orderItem = orderItemMapper.selectList(itemQw).get(0);
|
||||
//开始退款
|
||||
Refund wechatResponse = wechatPayService.refundPay(returnApply.getId() + "",
|
||||
order.getPayId() + "",
|
||||
"https://mall.ichengle.top/api/no-auth/wechat/weChatRefundNotify",
|
||||
returnApply.getReturnAmount().multiply(new BigDecimal("100")).longValue(),
|
||||
history.getMoney().multiply(new BigDecimal("100")).longValue(), returnApply.getReason());
|
||||
log.info("发起微信退款返回信息,tradeRefund:{}", JSONObject.toJSONString(wechatResponse == null ? "" : wechatResponse));
|
||||
|
||||
if (wechatResponse != null && Arrays.asList("PROCESSING", "SUCCESS").contains(wechatResponse.getStatus().name())) {
|
||||
qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getId()).eq("op_type", 3);
|
||||
WechatPaymentHistory refundHistory = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
if (refundHistory == null) {
|
||||
WechatPaymentHistory wechatPaymentHistory = new WechatPaymentHistory();
|
||||
wechatPaymentHistory.setPaymentId(wechatResponse.getRefundId());
|
||||
wechatPaymentHistory.setMemberId(order.getMemberId());
|
||||
LambdaQueryWrapper<WechatPaymentHistory> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(WechatPaymentHistory::getOrderId, order.getPayId());
|
||||
queryWrapper.eq(WechatPaymentHistory::getOpType, Constants.PaymentOpType.PAY);
|
||||
WechatPaymentHistory payHistory = wechatPaymentHistoryMapper.selectOne(queryWrapper);
|
||||
wechatPaymentHistory.setOpenid(payHistory.getOpenid());
|
||||
wechatPaymentHistory.setTitle(orderItem.getProductName());
|
||||
wechatPaymentHistory.setOrderId(order.getId());
|
||||
wechatPaymentHistory.setMoney(returnApply.getReturnAmount().multiply(new BigDecimal("100")));
|
||||
wechatPaymentHistory.setOpType(3);
|
||||
wechatPaymentHistory.setPaymentStatus(0);
|
||||
wechatPaymentHistory.setResponseBody(JSON.toJSONString(wechatResponse));
|
||||
wechatPaymentHistory.setCreateTime(optDate);
|
||||
wechatPaymentHistory.setUpdateTime(optDate);
|
||||
wechatPaymentHistory.setCreateBy(userId);
|
||||
wechatPaymentHistory.setUpdateBy(userId);
|
||||
wechatPaymentHistoryMapper.insert(wechatPaymentHistory);
|
||||
} else {
|
||||
UpdateWrapper<WechatPaymentHistory> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("id", refundHistory.getId())
|
||||
.set("payment_id", wechatResponse.getRefundId()).set("update_time", optDate);
|
||||
wechatPaymentHistoryMapper.update(null, updateWrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单退款回调MQ
|
||||
*
|
||||
* @param weChatRefundNotify
|
||||
*/
|
||||
@Transactional
|
||||
public void refundOrderExc(RefundNotification weChatRefundNotify) {
|
||||
log.info("收到订单回调MQ:" + JSONObject.toJSONString(weChatRefundNotify));
|
||||
if ("PROCESSING".equals(weChatRefundNotify.getRefundStatus().name())) {
|
||||
return;
|
||||
}
|
||||
//查一下微信订单
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
qw.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3);
|
||||
WechatPaymentHistory history = wechatPaymentHistoryMapper.selectOne(qw);
|
||||
if (history == null) {
|
||||
log.info("未找到退款单");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
QueryWrapper<Order> orderQw = new QueryWrapper<>();
|
||||
orderQw.eq("id", history.getOrderId());
|
||||
Order order = orderMapper.selectOne(orderQw);
|
||||
if (order.getStatus() == OrderRefundStatus.SUCCESS.getType()) {
|
||||
log.info("订单已经是退款成功状态");
|
||||
throw new RuntimeException();
|
||||
}
|
||||
QueryWrapper<Aftersale> aftersaleQw = new QueryWrapper<>();
|
||||
aftersaleQw.eq("order_id", history.getOrderId()).eq("status", AftersaleStatus.WAIT.getType());
|
||||
if ("SUCCESS".equals(weChatRefundNotify.getRefundStatus().name())) {
|
||||
//更改订单表
|
||||
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
||||
orderUpdateWrapper.eq("id", history.getOrderId())
|
||||
.set("aftersale_status", OrderRefundStatus.SUCCESS.getType());
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
|
||||
//更改 售后表
|
||||
UpdateWrapper<Aftersale> aftersaleWrapper = new UpdateWrapper<>();
|
||||
aftersaleWrapper.eq("order_id", history.getOrderId()).set("status", AftersaleStatus.SUCCESS.getType());
|
||||
aftersaleMapper.update(null, aftersaleWrapper);
|
||||
|
||||
//更改 微信表
|
||||
UpdateWrapper<WechatPaymentHistory> paymentWrapper = new UpdateWrapper<>();
|
||||
paymentWrapper.eq("payment_id", weChatRefundNotify.getRefundId()).eq("op_type", 3)
|
||||
.set("payment_status", 1);
|
||||
wechatPaymentHistoryMapper.update(null, paymentWrapper);
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(order.getId());
|
||||
optHistory.setOperateMan("系统");
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(order.getMemberId());
|
||||
optHistory.setUpdateBy(order.getMemberId());
|
||||
optHistory.setUpdateTime(optDate);
|
||||
optHistory.setOrderStatus(13);
|
||||
operateHistoryMapper.insert(optHistory);
|
||||
// 回滚商品和sku销量
|
||||
OrderItem orderItem = orderItemMapper.selectOne(new QueryWrapper<OrderItem>().eq("order_id", order.getId()));
|
||||
skuMapper.updateStockById(orderItem.getSkuId(), LocalDateTime.now(), -1 * orderItem.getQuantity());
|
||||
//退还优惠券
|
||||
// if (order.getMemberCouponId() != null) {
|
||||
// memberCouponService.backCoupon(Arrays.asList(order.getMemberCouponId()));
|
||||
// }
|
||||
} else {
|
||||
//更改订单表
|
||||
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
|
||||
orderUpdateWrapper.eq("id", history.getOrderId())
|
||||
.set("aftersale_status", OrderRefundStatus.FAIL.getType());
|
||||
orderMapper.update(null, orderUpdateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
public R log(Long orderId) {
|
||||
LambdaQueryWrapper<OrderOperateHistory> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(OrderOperateHistory::getOrderId, orderId);
|
||||
wrapper.in(OrderOperateHistory::getOrderStatus, Arrays.asList(11, 12, 13, 14));
|
||||
wrapper.orderByDesc(OrderOperateHistory::getCreateTime);
|
||||
List<OrderOperateHistory> historyList = orderOperateHistoryMapper.selectList(wrapper);
|
||||
return R.ok(historyList);
|
||||
}
|
||||
|
||||
public Aftersale queryAfterSale(Long orderId) {
|
||||
QueryWrapper<Aftersale> itemQw = new QueryWrapper<>();
|
||||
itemQw.eq("order_id",orderId);
|
||||
itemQw.in("status",Arrays.asList(AftersaleStatus.APPLY.getType(),AftersaleStatus.WAIT.getType()));
|
||||
return aftersaleMapper.selectOne(itemQw);
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderDeliveryHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.OrderDeliveryHistoryVO;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.mapper.OrderDeliveryHistoryMapper;
|
||||
import com.wzj.soopin.order.service.OrderDeliveryHistoryService;
|
||||
import com.wzj.soopin.order.utils.PageUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单发货记录Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderDeliveryHistoryServiceImpl extends ServiceImpl<OrderDeliveryHistoryMapper, OrderDeliveryHistory> implements OrderDeliveryHistoryService {
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryMapper orderDeliveryHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单发货记录
|
||||
*
|
||||
* @param id 订单发货记录主键
|
||||
* @return 订单发货记录
|
||||
*/
|
||||
public OrderDeliveryHistory selectById(Long id) {
|
||||
return orderDeliveryHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单发货记录列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单发货记录
|
||||
*/
|
||||
public List<OrderDeliveryHistory> selectList(OrderDeliveryHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderDeliveryHistory> qw = new QueryWrapper<>();
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
String deliveryCompany = query.getDeliveryCompany();
|
||||
if (!StringUtils.isEmpty(deliveryCompany)) {
|
||||
qw.eq("delivery_company", deliveryCompany);
|
||||
}
|
||||
String deliverySn = query.getDeliverySn();
|
||||
if (!StringUtils.isEmpty(deliverySn)) {
|
||||
qw.eq("delivery_sn", deliverySn);
|
||||
}
|
||||
return orderDeliveryHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单发货记录
|
||||
*
|
||||
* @param orderDeliveryHistory 订单发货记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderDeliveryHistory orderDeliveryHistory) {
|
||||
orderDeliveryHistory.setCreateTime(LocalDateTime.now());
|
||||
return orderDeliveryHistoryMapper.insert(orderDeliveryHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单发货记录
|
||||
*
|
||||
* @param orderDeliveryHistory 订单发货记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderDeliveryHistory orderDeliveryHistory) {
|
||||
return orderDeliveryHistoryMapper.updateById(orderDeliveryHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单发货记录信息
|
||||
*
|
||||
* @param id 订单发货记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderDeliveryHistoryMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public IPage<OrderDeliveryHistoryVO> pagelist(OrderDeliveryHistoryQuery query, PageVO page) {
|
||||
IPage<OrderDeliveryHistoryVO> pageParam = PageUtil.initPage(page);
|
||||
return orderDeliveryHistoryMapper.selectOderDeliveryHistory(query, pageParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,181 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.order.domain.dto.OrderProductListDTO;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.query.OrderItemQuery;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||
import com.wzj.soopin.order.service.OrderItemService;
|
||||
import com.wzj.soopin.order.utils.PageUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.common.core.utils.IDGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单中所包含的商品Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem> implements OrderItemService {
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
|
||||
/**
|
||||
* 查询订单中所包含的商品
|
||||
*
|
||||
* @param id 订单中所包含的商品主键
|
||||
* @return 订单中所包含的商品
|
||||
*/
|
||||
public OrderItem selectById(Long id) {
|
||||
return orderItemMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单中所包含的商品列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单中所包含的商品
|
||||
*/
|
||||
public List<OrderItem> selectList(OrderItemQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
Long productId = query.getProductId();
|
||||
if (productId != null) {
|
||||
qw.eq("product_id", productId);
|
||||
}
|
||||
String outProductId = query.getOutProductId();
|
||||
if (!StringUtils.isEmpty(outProductId)) {
|
||||
qw.eq("out_product_id", outProductId);
|
||||
}
|
||||
Long skuId = query.getSkuId();
|
||||
if (skuId != null) {
|
||||
qw.eq("sku_id", skuId);
|
||||
}
|
||||
String outSkuId = query.getOutSkuId();
|
||||
if (!StringUtils.isEmpty(outSkuId)) {
|
||||
qw.eq("out_sku_id", outSkuId);
|
||||
}
|
||||
Long productSnapshotId = query.getProductSnapshotId();
|
||||
if (productSnapshotId != null) {
|
||||
qw.eq("product_snapshot_id", productSnapshotId);
|
||||
}
|
||||
Long skuSnapshotId = query.getSkuSnapshotId();
|
||||
if (skuSnapshotId != null) {
|
||||
qw.eq("sku_snapshot_id", skuSnapshotId);
|
||||
}
|
||||
String pic = query.getPic();
|
||||
if (!StringUtils.isEmpty(pic)) {
|
||||
qw.eq("pic", pic);
|
||||
}
|
||||
String productNameLike = query.getProductNameLike();
|
||||
if (!StringUtils.isEmpty(productNameLike)) {
|
||||
qw.like("product_name", productNameLike);
|
||||
}
|
||||
BigDecimal salePrice = query.getSalePrice();
|
||||
if (salePrice != null) {
|
||||
qw.eq("sale_price", salePrice);
|
||||
}
|
||||
BigDecimal purchasePrice = query.getPurchasePrice();
|
||||
if (purchasePrice != null) {
|
||||
qw.eq("purchase_price", purchasePrice);
|
||||
}
|
||||
Integer quantity = query.getQuantity();
|
||||
if (quantity != null) {
|
||||
qw.eq("quantity", quantity);
|
||||
}
|
||||
Long productCategoryId = query.getProductCategoryId();
|
||||
if (productCategoryId != null) {
|
||||
qw.eq("product_category_id", productCategoryId);
|
||||
}
|
||||
String spData = query.getSpData();
|
||||
if (!StringUtils.isEmpty(spData)) {
|
||||
qw.eq("sp_data", spData);
|
||||
}
|
||||
return orderItemMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单中所包含的商品
|
||||
*
|
||||
* @param orderItem 订单中所包含的商品
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderItem orderItem) {
|
||||
orderItem.setCreateTime(LocalDateTime.now());
|
||||
return orderItemMapper.insert(orderItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单中所包含的商品
|
||||
*
|
||||
* @param orderItem 订单中所包含的商品
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderItem orderItem) {
|
||||
return orderItemMapper.updateById(orderItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单中所包含的商品信息
|
||||
*
|
||||
* @param id 订单中所包含的商品主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderItemMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveOrderItem(Member member, LocalDateTime optTime,
|
||||
Long orderId, List<OrderProductListDTO> list){
|
||||
List<OrderItem> addOrderItemList = new ArrayList<>();
|
||||
list.forEach(item -> {
|
||||
OrderItem orderItem = new OrderItem();
|
||||
orderItem.setId(IDGenerator.generateId());
|
||||
orderItem.setOrderId(orderId);
|
||||
orderItem.setProductId(item.getProduct().getId());
|
||||
orderItem.setOutProductId(item.getProduct().getOutProductId());
|
||||
orderItem.setSkuId(item.getSku().getId());
|
||||
orderItem.setOutSkuId(item.getSku().getOutSkuId());
|
||||
orderItem.setPic(item.getSku().getPic());
|
||||
orderItem.setProductName(item.getProduct().getName());
|
||||
orderItem.setSalePrice(item.getSku().getPrice());
|
||||
orderItem.setQuantity(item.getQuantity());
|
||||
orderItem.setProductCategoryId(item.getProduct().getCategoryId());
|
||||
orderItem.setSpData(item.getSku().getSpData());
|
||||
orderItem.setCreateBy(member.getId());
|
||||
orderItem.setCreateTime(optTime);
|
||||
addOrderItemList.add(orderItem);
|
||||
});
|
||||
boolean flag = saveBatch(addOrderItemList);
|
||||
if (!flag){
|
||||
throw new RuntimeException("新增订单item失败");
|
||||
}
|
||||
}
|
||||
|
||||
public IPage<OrderItem> pagelist(OrderItemQuery query, PageVO page) {
|
||||
IPage<OrderItem> pageParam = PageUtil.initPage(page);
|
||||
return orderItemMapper.selectOrderItem(query, pageParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,110 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
||||
import com.wzj.soopin.order.service.OrderOperateHistoryService;
|
||||
import com.wzj.soopin.order.utils.PageUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单操作历史记录Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderOperateHistoryServiceImpl extends ServiceImpl<OrderOperateHistoryMapper, OrderOperateHistory> implements OrderOperateHistoryService {
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询订单操作历史记录
|
||||
*
|
||||
* @param id 订单操作历史记录主键
|
||||
* @return 订单操作历史记录
|
||||
*/
|
||||
public OrderOperateHistory selectById(Long id) {
|
||||
return orderOperateHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单操作历史记录列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单操作历史记录
|
||||
*/
|
||||
public List<OrderOperateHistory> selectList(OrderOperateHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<OrderOperateHistory> qw = new QueryWrapper<>();
|
||||
String orderSn = query.getOrderSn();
|
||||
if (StrUtil.isNotBlank(orderSn)) {
|
||||
qw.eq("order_sn", orderSn);
|
||||
}
|
||||
String operateMan = query.getOperateMan();
|
||||
if (!StringUtils.isEmpty(operateMan)) {
|
||||
qw.eq("operate_man", operateMan);
|
||||
}
|
||||
Integer orderStatus = query.getOrderStatus();
|
||||
if (orderStatus != null) {
|
||||
qw.eq("order_status", orderStatus);
|
||||
}
|
||||
String note = query.getNote();
|
||||
if (!StringUtils.isEmpty(note)) {
|
||||
qw.eq("note", note);
|
||||
}
|
||||
qw.orderByDesc("create_time");
|
||||
return orderOperateHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单操作历史记录
|
||||
*
|
||||
* @param orderOperateHistory 订单操作历史记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(OrderOperateHistory orderOperateHistory) {
|
||||
orderOperateHistory.setCreateTime(LocalDateTime.now());
|
||||
return orderOperateHistoryMapper.insert(orderOperateHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单操作历史记录
|
||||
*
|
||||
* @param orderOperateHistory 订单操作历史记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(OrderOperateHistory orderOperateHistory) {
|
||||
return orderOperateHistoryMapper.updateById(orderOperateHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单操作历史记录信息
|
||||
*
|
||||
* @param id 订单操作历史记录主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return orderOperateHistoryMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public IPage<OrderOperateHistory> pagelist(OrderOperateHistoryQuery query, PageVO page) {
|
||||
IPage<OrderItem> pageParam = PageUtil.initPage(page);
|
||||
return orderOperateHistoryMapper.selectOrderOperateHistory(query, pageParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,433 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.convert.SkuConvert;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.order.convert.OrderConvert;
|
||||
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
|
||||
import com.wzj.soopin.order.domain.form.DeliverProductForm;
|
||||
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
|
||||
import com.wzj.soopin.order.domain.query.OrderH5Query;
|
||||
import com.wzj.soopin.order.domain.vo.*;
|
||||
import com.wzj.soopin.order.mapper.OrderDeliveryHistoryMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
|
||||
import com.wzj.soopin.order.service.OrderService;
|
||||
import com.wzj.soopin.order.utils.SecurityUtils;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.event.Constants;
|
||||
import org.dromara.common.core.utils.PhoneUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import com.wzj.soopin.member.mapper.MemberAddressMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberCartMapper;
|
||||
import com.wzj.soopin.member.mapper.MemberMapper;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单表Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
||||
@Autowired
|
||||
private OrderMapper orderMapper;
|
||||
@Autowired
|
||||
private OrderConvert orderConvert;
|
||||
@Autowired
|
||||
private OrderItemMapper orderItemMapper;
|
||||
@Autowired
|
||||
private MemberAddressMapper memberAddressMapper;
|
||||
@Autowired
|
||||
private SkuMapper skuMapper;
|
||||
@Autowired
|
||||
private ProductMapper productMapper;
|
||||
@Autowired
|
||||
private SkuConvert skuConvert;
|
||||
@Autowired
|
||||
private OrderItemServiceImpl orderItemService;
|
||||
@Autowired
|
||||
private OrderOperateHistoryMapper orderOperateHistoryMapper;
|
||||
@Autowired
|
||||
private MemberCartMapper memberCartMapper;
|
||||
@Autowired
|
||||
private MemberMapper memberMapper;
|
||||
|
||||
@Autowired
|
||||
private OrderDeliveryHistoryMapper orderDeliveryHistoryMapper;
|
||||
@Autowired
|
||||
private OrderOperateHistoryConvert historyConvert;
|
||||
|
||||
/**
|
||||
* 查询订单表
|
||||
*
|
||||
* @param id 订单表主键
|
||||
* @return 订单表
|
||||
*/
|
||||
public ManagerOrderDetailVO selectById(Long id) {
|
||||
Order order = orderMapper.selectById(id);
|
||||
if (order == null){
|
||||
throw new RuntimeException("查不到订单信息");
|
||||
}
|
||||
ManagerOrderDetailVO managerOrderDetailVO = new ManagerOrderDetailVO();
|
||||
//封装订单信息
|
||||
managerOrderDetailVO.setOrderId(id);
|
||||
managerOrderDetailVO.setCouponAmount(order.getCouponAmount());
|
||||
managerOrderDetailVO.setOrderSn(order.getOrderSn());
|
||||
managerOrderDetailVO.setOrderStatus(order.getStatus());
|
||||
managerOrderDetailVO.setCreateTime(order.getCreateTime());
|
||||
managerOrderDetailVO.setDeliveryTime(order.getDeliveryTime());
|
||||
managerOrderDetailVO.setExpressName(order.getDeliveryCompany());
|
||||
managerOrderDetailVO.setExpressNo(order.getDeliverySn());
|
||||
managerOrderDetailVO.setPayAmount(order.getPayAmount());
|
||||
managerOrderDetailVO.setPayTime(order.getPaymentTime());
|
||||
managerOrderDetailVO.setPayType(order.getPayType());
|
||||
managerOrderDetailVO.setTotalAmount(order.getTotalAmount());
|
||||
managerOrderDetailVO.setPayAmount(order.getPayAmount());
|
||||
managerOrderDetailVO.setReceiveTime(order.getReceiveTime());
|
||||
//封装订单地址信息
|
||||
ManagerOrderAddressVo managerOrderAddressVo = new ManagerOrderAddressVo();
|
||||
managerOrderAddressVo.setUserPhone(order.getReceiverPhone());
|
||||
managerOrderAddressVo.setAddress(order.getReceiverDetailAddress());
|
||||
managerOrderAddressVo.setArea(
|
||||
order.getReceiverProvince() +
|
||||
order.getReceiverCity() +
|
||||
order.getReceiverDistrict());
|
||||
managerOrderAddressVo.setName(order.getReceiverName());
|
||||
managerOrderDetailVO.setAddressInfo(managerOrderAddressVo);
|
||||
//查询会员信息
|
||||
Member member = memberMapper.selectById(order.getMemberId());
|
||||
managerOrderDetailVO.setUserName(member.getNickname());
|
||||
managerOrderDetailVO.setUserPhone(member.getPhoneHidden());
|
||||
//查询购买商品信息
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", order.getId());
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(qw);
|
||||
List<ManagerOrderProductVO> productList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO productVO = new ManagerOrderProductVO();
|
||||
productVO.setProductId(item.getProductId());
|
||||
productVO.setBuyNum(item.getQuantity());
|
||||
productVO.setPic(item.getPic());
|
||||
productVO.setProductName(item.getProductName());
|
||||
productVO.setSalePrice(item.getSalePrice());
|
||||
productVO.setSpData(item.getSpData());
|
||||
productList.add(productVO);
|
||||
});
|
||||
managerOrderDetailVO.setProductInfo(productList);
|
||||
return managerOrderDetailVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订单表列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 订单表
|
||||
*/
|
||||
public PageImpl<ManagerOrderVO> selectList(ManagerOrderQueryForm query, Pageable page) {
|
||||
// if (page != null) {
|
||||
//// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
// }
|
||||
// if (!StringUtils.isEmpty(query.getUserPhone())){
|
||||
//// query.setUserPhone(AesCryptoUtils.encrypt(aesKey, query.getUserPhone()));
|
||||
// }
|
||||
List<ManagerOrderVO> managerOrderVOList = orderMapper.selectManagerOrderPage(query);
|
||||
if (CollectionUtil.isEmpty(managerOrderVOList)){
|
||||
return new PageImpl<>(managerOrderVOList, page, 0);
|
||||
}
|
||||
long total = managerOrderVOList.size();
|
||||
Map<Long, ManagerOrderVO> orderMap = managerOrderVOList.stream().collect(Collectors.toMap(ManagerOrderVO::getId, it -> it, (v1,v2) -> v2, LinkedHashMap::new));
|
||||
//查orderItem
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.in("order_id", orderMap.keySet());
|
||||
Map<Long, List<OrderItem>> groupedOrderItemMap = orderItemMapper.selectList(qw)
|
||||
.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
groupedOrderItemMap.keySet().forEach(key -> {
|
||||
ManagerOrderVO managerOrderVO = orderMap.get(key);
|
||||
managerOrderVO.setBuyNum(0);
|
||||
List<OrderItem> orderItemList = groupedOrderItemMap.get(key);
|
||||
List<ManagerOrderProductVO> addProductList = new ArrayList<>();
|
||||
orderItemList.forEach(item -> {
|
||||
ManagerOrderProductVO vo = new ManagerOrderProductVO();
|
||||
vo.setProductName(item.getProductName());
|
||||
vo.setSalePrice(item.getSalePrice());
|
||||
vo.setPic(item.getPic());
|
||||
vo.setBuyNum(item.getQuantity());
|
||||
vo.setProductId(item.getProductId());
|
||||
vo.setSpData(item.getSpData());
|
||||
addProductList.add(vo);
|
||||
managerOrderVO.setBuyNum(managerOrderVO.getBuyNum() + item.getQuantity());
|
||||
});
|
||||
managerOrderVO.setProductList(addProductList);
|
||||
});
|
||||
return new PageImpl<>(new ArrayList<>(orderMap.values()), page, total);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单表
|
||||
*
|
||||
* @param order 订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public R<Order> insert(Order order) {
|
||||
order.setCreateTime(LocalDateTime.now());
|
||||
int insert = orderMapper.insert(order);
|
||||
if (insert>1){
|
||||
return R.fail("订单创建失败");
|
||||
}else {
|
||||
return R.ok(order);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单表
|
||||
*
|
||||
* @param order 订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public R<Order> update(Order order) {
|
||||
int update = orderMapper.updateById(order);
|
||||
if (update>1){
|
||||
return R.fail("订单修改失败");
|
||||
}else {
|
||||
return R.ok(order);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单表信息
|
||||
*
|
||||
* @param id 订单表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public R<Order> deleteById(Long id) {
|
||||
Order order = orderMapper.selectById(id);
|
||||
|
||||
if (order == null) {
|
||||
return R.fail("订单不存在");
|
||||
}
|
||||
int affectedRows = orderMapper.deleteById(id);
|
||||
|
||||
return affectedRows > 0 ? R.ok(order) : R.fail("删除失败");
|
||||
}
|
||||
|
||||
public Page<OrderVO> queryOrderPage(OrderH5Query query, Pageable pageReq) {
|
||||
QueryWrapper<Order> qw = new QueryWrapper<>();
|
||||
qw.eq("member_id", SecurityUtils.getUserId());
|
||||
IPage<Order> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>();
|
||||
page.setCurrent(pageReq.getPageNumber())
|
||||
.setSize(pageReq.getPageSize());
|
||||
if (CollUtil.isEmpty(pageReq.getSort())) {
|
||||
pageReq.getSort().forEach(it -> {
|
||||
qw.orderBy(true, it.getDirection().isAscending(), it.getProperty());
|
||||
});
|
||||
}
|
||||
Integer tab = query.getTab();
|
||||
if (tab != null) {
|
||||
qw.eq("delete_status", 0);
|
||||
if (tab == 1) {
|
||||
qw.eq("status", 0);
|
||||
} else if (tab == 2) {
|
||||
qw.eq("status", 1);
|
||||
qw.eq("aftersale_status", 1);
|
||||
} else if (tab == 3) {
|
||||
qw.eq("status", 2);
|
||||
qw.eq("confirm_status", 0);
|
||||
} else if (tab == 4) {
|
||||
qw.eq("status", 2);
|
||||
qw.eq("confirm_status", 1);
|
||||
}
|
||||
}
|
||||
orderMapper.selectPage(page, qw);
|
||||
List<Order> orders = page.getRecords();
|
||||
long total = page.getPages();
|
||||
if (CollUtil.isEmpty(orders)) {
|
||||
return new PageImpl<>(Collections.emptyList(), pageReq, total);
|
||||
}
|
||||
LambdaQueryWrapper<OrderItem> qw1 = new LambdaQueryWrapper<>();
|
||||
qw1.in(OrderItem::getOrderId, orders.stream().map(Order::getId).collect(Collectors.toList()));
|
||||
Map<Long, List<OrderItem>> oid2items = orderItemMapper.selectList(qw1)
|
||||
.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
// List<OrderVO> res = orderConvert.dos2vos(orders);
|
||||
// res.forEach(it -> {
|
||||
// it.setItems(oid2items.get(it.getId()));
|
||||
// });
|
||||
// return new PageImpl<>(res, pageReq, total);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public R saveMerchantNote(Order order) {
|
||||
// 1. 查询现有订单
|
||||
Order orderInDb = orderMapper.selectById(order.getId());
|
||||
if (orderInDb == null) {
|
||||
return R.fail("订单不存在");
|
||||
}
|
||||
|
||||
// 2. 更新商家备注
|
||||
UpdateWrapper<Order> qw = new UpdateWrapper<>();
|
||||
qw.eq("id", order.getId());
|
||||
qw.set("merchant_note", order.getMerchantNote());
|
||||
int affectedRows = orderMapper.update(null, qw);
|
||||
|
||||
if (affectedRows > 0) {
|
||||
orderMapper.selectById(order.getId());
|
||||
return R.ok();
|
||||
}
|
||||
return R.fail("更新失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理后台发货
|
||||
* 目前发货是这样的:待发货、已发货、已完成都能执行发货,每次都会创建一条新的发货记录且修改订单发货信息
|
||||
* @param request 发货请求
|
||||
* @param userId 操作人
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional
|
||||
public String deliverProduct(DeliverProductForm request, Long userId) {
|
||||
//查询订单
|
||||
Order order = orderMapper.selectById(request.getOrderId());
|
||||
QueryWrapper<OrderItem> qw = new QueryWrapper<>();
|
||||
qw.eq("order_id", request.getOrderId());
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(qw);
|
||||
if (order == null || CollectionUtil.isEmpty(orderItemList)){
|
||||
throw new RuntimeException("未找到该订单信息");
|
||||
}
|
||||
// 是否为待发货、已发货 、已完成
|
||||
if (!(Constants.OrderStatus.SEND.equals(order.getStatus())
|
||||
|| Constants.OrderStatus.GET.equals(order.getStatus())
|
||||
|| Constants.OrderStatus.CONFIRM.equals(order.getStatus()))){
|
||||
throw new RuntimeException("订单状态错误");
|
||||
}
|
||||
Integer orderStatus =
|
||||
Constants.OrderStatus.SEND.equals(order.getStatus()) ? Constants.OrderStatus.GET : order.getStatus();
|
||||
//更新订单
|
||||
LocalDateTime optDate = LocalDateTime.now();
|
||||
order.setUpdateBy(null);
|
||||
order.setStatus(orderStatus);
|
||||
order.setDeliveryTime(optDate);
|
||||
order.setUpdateTime(optDate);
|
||||
order.setDeliveryCompany(request.getExpressName());
|
||||
order.setDeliverySn(request.getExpressSn());
|
||||
orderMapper.updateById(order);
|
||||
//创建新的发货记录
|
||||
this.createDeliveryHistory(request, userId, optDate);
|
||||
//创建订单操作记录
|
||||
this.createOrderOptHistory(order.getId(), order.getOrderSn(), orderStatus, userId, optDate);
|
||||
return "发货成功";
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建发货记录
|
||||
* @param request 发货请求
|
||||
* @param userId 操作人
|
||||
* @param optDate 操作时间
|
||||
*/
|
||||
private void createDeliveryHistory(DeliverProductForm request, Long userId, LocalDateTime optDate){
|
||||
OrderDeliveryHistory orderDeliveryHistory = new OrderDeliveryHistory();
|
||||
orderDeliveryHistory.setOrderId(request.getOrderId());
|
||||
orderDeliveryHistory.setDeliveryCompany(request.getExpressName());
|
||||
orderDeliveryHistory.setDeliverySn(request.getExpressSn());
|
||||
orderDeliveryHistory.setCreateTime(optDate);
|
||||
orderDeliveryHistory.setCreateBy(userId);
|
||||
int rows = orderDeliveryHistoryMapper.insert(orderDeliveryHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("新增订单发货记录失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建订单操作历史
|
||||
* @param orderId 订单id
|
||||
* @param orderStatus 订单状态
|
||||
* @param userId 操作人
|
||||
* @param optDate 操作时间
|
||||
*/
|
||||
private void createOrderOptHistory(Long orderId, String orderSn, Integer orderStatus, Long userId, LocalDateTime optDate){
|
||||
OrderOperateHistory optHistory = new OrderOperateHistory();
|
||||
optHistory.setOrderId(orderId);
|
||||
optHistory.setOrderSn(orderSn);
|
||||
optHistory.setOperateMan(SecurityUtils.getUsername());
|
||||
optHistory.setOrderStatus(orderStatus);
|
||||
optHistory.setCreateTime(optDate);
|
||||
optHistory.setCreateBy(userId);
|
||||
optHistory.setUpdateBy(userId);
|
||||
optHistory.setUpdateTime(optDate);
|
||||
int rows = orderOperateHistoryMapper.insert(optHistory);
|
||||
if (rows < 1) {
|
||||
throw new RuntimeException("新增订单操作记录失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单id查询订单操作日志
|
||||
* @param orderId 订单id
|
||||
* @return 结果
|
||||
*/
|
||||
public List<OrderOperateHistory> log(Long orderId) {
|
||||
LambdaQueryWrapper<OrderOperateHistory> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(OrderOperateHistory::getOrderId, orderId);
|
||||
wrapper.in(OrderOperateHistory::getOrderStatus, Arrays.asList(0, 1, 2, 3, 4));
|
||||
wrapper.orderByDesc(OrderOperateHistory::getCreateTime);
|
||||
List<OrderOperateHistory> historyList = orderOperateHistoryMapper.selectList(wrapper);
|
||||
return historyList;
|
||||
}
|
||||
|
||||
public R decryptPhone(Long orderId) {
|
||||
Order order = orderMapper.selectById(orderId);
|
||||
String receiverPhoneEncrypted = order.getReceiverPhoneEncrypted();
|
||||
if (receiverPhoneEncrypted != null) {
|
||||
return R.ok("操作成功", receiverPhoneEncrypted);
|
||||
} else {
|
||||
return R.fail("获取的电话号码加密字段为空");
|
||||
}
|
||||
}
|
||||
|
||||
public R<Order> updateReceiver(Order order) {
|
||||
Order dbOrder = orderMapper.selectById(order.getId());
|
||||
if (dbOrder == null) {
|
||||
return R.fail("无该订单信息");
|
||||
}
|
||||
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("receiver_name",order.getReceiverName())
|
||||
.set("receiver_phone", PhoneUtils.hidePhone(order.getReceiverPhone()))
|
||||
.set("receiver_city",order.getReceiverCity())
|
||||
.set("receiver_district",order.getReceiverDistrict())
|
||||
.set("receiver_province",order.getReceiverProvince())
|
||||
.set("receiver_detail_address",order.getReceiverDetailAddress())
|
||||
// .set("receiver_phone_encrypted", AesCryptoUtils.encrypt(aesKey, order.getReceiverPhone()))
|
||||
.set("update_time",LocalDateTime.now());
|
||||
updateWrapper.eq("id",order.getId());
|
||||
int update = orderMapper.update(null, updateWrapper);
|
||||
if (update>0){
|
||||
return R.ok(order);
|
||||
}else {
|
||||
return R.fail("修改失败");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
|
||||
import com.wzj.soopin.order.domain.query.WechatPaymentHistoryQuery;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.mapper.WechatPaymentHistoryMapper;
|
||||
import com.wzj.soopin.order.service.WechatPaymentHistoryService;
|
||||
import com.wzj.soopin.order.utils.PageUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 微信订单表Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author zcc
|
||||
*/
|
||||
@Service
|
||||
public class WechatPaymentHistoryServiceImpl extends ServiceImpl<WechatPaymentHistoryMapper, WechatPaymentHistory> implements WechatPaymentHistoryService {
|
||||
@Autowired
|
||||
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
|
||||
|
||||
/**
|
||||
* 查询微信订单表
|
||||
*
|
||||
* @param id 微信订单表主键
|
||||
* @return 微信订单表
|
||||
*/
|
||||
public WechatPaymentHistory selectById(Long id) {
|
||||
return wechatPaymentHistoryMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询微信订单表列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param page 分页条件
|
||||
* @return 微信订单表
|
||||
*/
|
||||
public List<WechatPaymentHistory> selectList(WechatPaymentHistoryQuery query, Pageable page) {
|
||||
if (page != null) {
|
||||
// PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
|
||||
}
|
||||
QueryWrapper<WechatPaymentHistory> qw = new QueryWrapper<>();
|
||||
String paymentId = query.getPaymentId();
|
||||
if (!StringUtils.isEmpty(paymentId)) {
|
||||
qw.eq("payment_id", paymentId);
|
||||
}
|
||||
Long memberId = query.getMemberId();
|
||||
if (memberId != null) {
|
||||
qw.eq("member_id", memberId);
|
||||
}
|
||||
String openid = query.getOpenid();
|
||||
if (!StringUtils.isEmpty(openid)) {
|
||||
qw.eq("openid", openid);
|
||||
}
|
||||
String realNameLike = query.getRealNameLike();
|
||||
if (!StringUtils.isEmpty(realNameLike)) {
|
||||
qw.like("real_name", realNameLike);
|
||||
}
|
||||
String title = query.getTitle();
|
||||
if (!StringUtils.isEmpty(title)) {
|
||||
qw.eq("title", title);
|
||||
}
|
||||
Long orderId = query.getOrderId();
|
||||
if (orderId != null) {
|
||||
qw.eq("order_id", orderId);
|
||||
}
|
||||
BigDecimal money = query.getMoney();
|
||||
if (money != null) {
|
||||
qw.eq("money", money);
|
||||
}
|
||||
Integer opType = query.getOpType();
|
||||
if (opType != null) {
|
||||
qw.eq("op_type", opType);
|
||||
}
|
||||
Integer paymentStatus = query.getPaymentStatus();
|
||||
if (paymentStatus != null) {
|
||||
qw.eq("payment_status", paymentStatus);
|
||||
}
|
||||
String attach = query.getAttach();
|
||||
if (!StringUtils.isEmpty(attach)) {
|
||||
qw.eq("attach", attach);
|
||||
}
|
||||
String responseBody = query.getResponseBody();
|
||||
if (!StringUtils.isEmpty(responseBody)) {
|
||||
qw.eq("response_body", responseBody);
|
||||
}
|
||||
return wechatPaymentHistoryMapper.selectList(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增微信订单表
|
||||
*
|
||||
* @param wechatPaymentHistory 微信订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert(WechatPaymentHistory wechatPaymentHistory) {
|
||||
wechatPaymentHistory.setCreateTime(LocalDateTime.now());
|
||||
return wechatPaymentHistoryMapper.insert(wechatPaymentHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改微信订单表
|
||||
*
|
||||
* @param wechatPaymentHistory 微信订单表
|
||||
* @return 结果
|
||||
*/
|
||||
public int update(WechatPaymentHistory wechatPaymentHistory) {
|
||||
return wechatPaymentHistoryMapper.updateById(wechatPaymentHistory);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除微信订单表信息
|
||||
*
|
||||
* @param id 微信订单表主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteById(Long id) {
|
||||
return wechatPaymentHistoryMapper.deleteById(id);
|
||||
}
|
||||
|
||||
public IPage<WechatPaymentHistory> pagelist(WechatPaymentHistoryQuery query, PageVO page) {
|
||||
IPage<WechatPaymentHistory> pageParam = PageUtil.initPage(page);
|
||||
return wechatPaymentHistoryMapper.selectWechatPaymentHistory(query, pageParam);
|
||||
}
|
||||
}
|
@ -0,0 +1,137 @@
|
||||
package com.wzj.soopin.order.utils;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* 对象属性复制
|
||||
*
|
||||
* @author Chopper
|
||||
*/
|
||||
public class BeanUtil {
|
||||
|
||||
/**
|
||||
* 复制属性
|
||||
*
|
||||
* @param objectFrom 源自对象
|
||||
* @param objectTo 复制给对象
|
||||
*/
|
||||
public static void copyProperties(Object objectFrom, Object objectTo) {
|
||||
BeanUtils.copyProperties(objectFrom, objectTo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取属性名数组
|
||||
*
|
||||
* @param o 获取字段的对象
|
||||
* @return 返回各个字段
|
||||
*/
|
||||
public static String[] getFiledName(Object o) {
|
||||
Field[] fields = o.getClass().getDeclaredFields();
|
||||
Field[] superFields = o.getClass().getSuperclass().getDeclaredFields();
|
||||
String[] fieldNames = new String[fields.length + superFields.length];
|
||||
int index = 0;
|
||||
for (int i = 0; i < fields.length; i++) {
|
||||
fieldNames[index] = fields[i].getName();
|
||||
index++;
|
||||
}
|
||||
for (int i = 0; i < superFields.length; i++) {
|
||||
if ("id".equals(superFields[i].getName())) {
|
||||
continue;
|
||||
}
|
||||
fieldNames[index] = superFields[i].getName();
|
||||
index++;
|
||||
}
|
||||
return fieldNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据属性名获取属性值
|
||||
*
|
||||
* @param fieldName 属性名
|
||||
* @param o 对象
|
||||
* @return 属性值
|
||||
*/
|
||||
public static Object getFieldValueByName(String fieldName, Object o) {
|
||||
try {
|
||||
String firstLetter = fieldName.substring(0, 1).toUpperCase();
|
||||
String getter = "get" + firstLetter + fieldName.substring(1);
|
||||
Method method = o.getClass().getMethod(getter, new Class[]{});
|
||||
Object value = method.invoke(o, new Object[]{});
|
||||
return value;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将对象转换为key value
|
||||
* A=a&B=b&C=c 格式
|
||||
*
|
||||
* @param object 对象
|
||||
* @return 格式化结果
|
||||
*/
|
||||
public static String formatKeyValuePair(Object object) {
|
||||
//准备接受的字符串
|
||||
StringBuilder stringBuffer = new StringBuilder();
|
||||
//获取对象字段
|
||||
String[] fieldNames = BeanUtil.getFiledName(object);
|
||||
//遍历所有属性
|
||||
for (int j = 0; j < fieldNames.length; j++) {
|
||||
//不是第一个并且不是最后一个,拼接&
|
||||
if (j != 0) {
|
||||
stringBuffer.append("&");
|
||||
}
|
||||
//获取属性的名字
|
||||
String key = fieldNames[j];
|
||||
//获取值
|
||||
Object value = BeanUtil.getFieldValueByName(key, object);
|
||||
assert value != null;
|
||||
stringBuffer.append(key).append("=").append(value.toString());
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* key value键值对 转换为 对象
|
||||
* A=a&B=b&C=c 格式 转换为对象
|
||||
*
|
||||
* @param str 对象字符串
|
||||
* @param t 范型
|
||||
* @param <T> 范型
|
||||
* @return 格式化结果
|
||||
*/
|
||||
public static <T> T formatKeyValuePair(String str, T t) {
|
||||
//填写对参数键值对
|
||||
String[] params = str.split("&");
|
||||
|
||||
//获取对象字段
|
||||
String[] fieldNames = BeanUtil.getFiledName(t);
|
||||
|
||||
try {
|
||||
//循环每个参数
|
||||
for (String param : params) {
|
||||
String[] keyValues = param.split("=");
|
||||
for (int i = 0; i < fieldNames.length; i++) {
|
||||
if (fieldNames[i].equals(keyValues[0])) {
|
||||
Field f = t.getClass().getDeclaredField(fieldNames[i]);
|
||||
f.setAccessible(true);
|
||||
//长度为2 才转换,否则不转
|
||||
if (keyValues.length == 2) {
|
||||
f.set(t, keyValues[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,398 @@
|
||||
package com.wzj.soopin.order.utils;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 日期相关的操作
|
||||
*
|
||||
* @author Chopper
|
||||
*/
|
||||
public class DateUtil {
|
||||
|
||||
public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
public static final String STANDARD_DATE_FORMAT = "yyyy-MM-dd";
|
||||
|
||||
public static final String STANDARD_DATE_NO_UNDERLINE_FORMAT = "yyyyMMdd";
|
||||
|
||||
public static final String FULL_DATE = "yyyyMMddHHmmss";
|
||||
|
||||
|
||||
/**
|
||||
* 当天的开始时间
|
||||
*
|
||||
* @return 今天开始时间
|
||||
*/
|
||||
public static Date startOfTodDayTime() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
calendar.set(Calendar.MILLISECOND, 0);
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 当天的开始时间
|
||||
*
|
||||
* @param date 时间
|
||||
* @return 根据传入的时间获取开始时间
|
||||
*/
|
||||
public static Date startOfTodDayTime(Date date) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
calendar.set(Calendar.MILLISECOND, 0);
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 当天的开始时间
|
||||
*
|
||||
* @return 今天开始时间
|
||||
*/
|
||||
public static long startOfTodDay() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
calendar.set(Calendar.MILLISECOND, 0);
|
||||
Date date = calendar.getTime();
|
||||
return date.getTime() / 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 当天的结束时间
|
||||
*
|
||||
* @return 今天结束时间
|
||||
*/
|
||||
public static Date endOfDate() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
||||
calendar.set(Calendar.MINUTE, 59);
|
||||
calendar.set(Calendar.SECOND, 59);
|
||||
calendar.set(Calendar.MILLISECOND, 999);
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 当天的结束时间
|
||||
*
|
||||
* @param date 传入日期
|
||||
* @return 获得传入日期当天结束时间
|
||||
*/
|
||||
public static Date endOfDate(Date date) {
|
||||
if (date == null) {
|
||||
date = new Date();
|
||||
}
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
||||
calendar.set(Calendar.MINUTE, 59);
|
||||
calendar.set(Calendar.SECOND, 59);
|
||||
calendar.set(Calendar.MILLISECOND, 999);
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 某天的年月日
|
||||
*
|
||||
* @param dayUntilNow 距今多少天以前
|
||||
* @return 年月日map key为 year month day
|
||||
*/
|
||||
public static Map<String, Object> getYearMonthAndDay(int dayUntilNow) {
|
||||
|
||||
Map<String, Object> map = new HashMap<String, Object>(3);
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||
calendar.set(Calendar.MINUTE, 0);
|
||||
calendar.set(Calendar.SECOND, 0);
|
||||
calendar.set(Calendar.MILLISECOND, 0);
|
||||
calendar.add(Calendar.DATE, -dayUntilNow);
|
||||
map.put("year", calendar.get(Calendar.YEAR));
|
||||
map.put("month", calendar.get(Calendar.MONTH) + 1);
|
||||
map.put("day", calendar.get(Calendar.DAY_OF_MONTH));
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将一个字符串转换成日期格式
|
||||
*
|
||||
* @param date 字符串日期
|
||||
* @param pattern 日期格式
|
||||
* @return date
|
||||
*/
|
||||
public static Date toDate(String date, String pattern) {
|
||||
if ("".equals("" + date)) {
|
||||
return null;
|
||||
}
|
||||
if (pattern == null) {
|
||||
pattern = STANDARD_DATE_FORMAT;
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.ENGLISH);
|
||||
Date newDate = new Date();
|
||||
try {
|
||||
newDate = sdf.parse(date);
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return newDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取上个月的开始结束时间
|
||||
*
|
||||
* @return 上个月的开始结束时间
|
||||
*/
|
||||
public static Long[] getLastMonth() {
|
||||
//取得系统当前时间
|
||||
Calendar cal = Calendar.getInstance();
|
||||
int year = cal.get(Calendar.YEAR);
|
||||
int month = cal.get(Calendar.MONTH) + 1;
|
||||
|
||||
//取得系统当前时间所在月第一天时间对象
|
||||
cal.set(Calendar.DAY_OF_MONTH, 1);
|
||||
|
||||
//日期减一,取得上月最后一天时间对象
|
||||
cal.add(Calendar.DAY_OF_MONTH, -1);
|
||||
|
||||
//输出上月最后一天日期
|
||||
int day = cal.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
String months = "";
|
||||
String days = "";
|
||||
|
||||
if (month > 1) {
|
||||
month--;
|
||||
} else {
|
||||
year--;
|
||||
month = 12;
|
||||
}
|
||||
if (String.valueOf(month).length() <= 1) {
|
||||
months = "0" + month;
|
||||
} else {
|
||||
months = String.valueOf(month);
|
||||
}
|
||||
if (String.valueOf(day).length() <= 1) {
|
||||
days = "0" + day;
|
||||
} else {
|
||||
days = String.valueOf(day);
|
||||
}
|
||||
String firstDay = "" + year + "-" + months + "-01";
|
||||
String lastDay = "" + year + "-" + months + "-" + days + " 23:59:59";
|
||||
|
||||
Long[] lastMonth = new Long[2];
|
||||
lastMonth[0] = DateUtil.getDateline(firstDay);
|
||||
lastMonth[1] = DateUtil.getDateline(lastDay, STANDARD_FORMAT);
|
||||
|
||||
return lastMonth;
|
||||
}
|
||||
|
||||
/**
|
||||
* 把日期转换成字符串型
|
||||
*
|
||||
* @param date 日期
|
||||
* @return 字符串时间
|
||||
*/
|
||||
public static String toString(Date date) {
|
||||
return toString(date, STANDARD_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把日期转换成字符串型
|
||||
*
|
||||
* @param date 日期
|
||||
* @return 字符串时间
|
||||
*/
|
||||
public static String toString(Long date) {
|
||||
return toString(date, STANDARD_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 把日期转换成字符串型
|
||||
*
|
||||
* @param date 日期
|
||||
* @param pattern 类型
|
||||
* @return 字符串时间
|
||||
*/
|
||||
public static String toString(Date date, String pattern) {
|
||||
if (date == null) {
|
||||
return "";
|
||||
}
|
||||
if (pattern == null) {
|
||||
pattern = STANDARD_DATE_FORMAT;
|
||||
}
|
||||
String dateString = "";
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
|
||||
try {
|
||||
dateString = sdf.format(date);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return dateString;
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间戳转换成时间类型
|
||||
*
|
||||
* @param time 时间戳
|
||||
* @param pattern 格式
|
||||
* @return 字符串时间
|
||||
*/
|
||||
public static String toString(Long time, String pattern) {
|
||||
if (time > 0) {
|
||||
if (time.toString().length() == 10) {
|
||||
time = time * 1000;
|
||||
}
|
||||
Date date = new Date(time);
|
||||
return DateUtil.toString(date, pattern);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前时间是否在某个时间范围
|
||||
*
|
||||
* @param start 开始时间,以秒为单位的时间戳
|
||||
* @param end 结束时间,以秒为单位的时间戳
|
||||
* @return 是否在范围内
|
||||
*/
|
||||
public static boolean inRangeOf(long start, long end) {
|
||||
long now = getDateline();
|
||||
return start <= now && end >= now;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定日期的时间戳
|
||||
*
|
||||
* @param date 指定日期
|
||||
* @return 时间戳
|
||||
*/
|
||||
public static long getDateline(String date) {
|
||||
return Objects.requireNonNull(toDate(date, STANDARD_DATE_FORMAT)).getTime() / 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前时间的时间戳
|
||||
*
|
||||
* @return 时间戳
|
||||
*/
|
||||
public static long getDateline() {
|
||||
return System.currentTimeMillis() / 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前时间格式化字符串
|
||||
*
|
||||
* @return 时间戳
|
||||
*/
|
||||
public static String getCurrentDateStr(String format) {
|
||||
return toString(new Date(), format);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前时间格式化字符串
|
||||
*
|
||||
* @return 格式化的时间
|
||||
*/
|
||||
public static String getCurrentDateStr() {
|
||||
return toString(new Date(), FULL_DATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据日期格式及日期获取时间戳
|
||||
*
|
||||
* @param date 日期
|
||||
* @param pattern 日期格式
|
||||
* @return 时间戳
|
||||
*/
|
||||
public static long getDateline(String date, String pattern) {
|
||||
return Objects.requireNonNull(toDate(date, pattern)).getTime() / 1000;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取几个月之前的日期时间戳
|
||||
*
|
||||
* @param beforeMonth 几个月之前
|
||||
* @return 时间戳
|
||||
*/
|
||||
public static long getBeforeMonthDateline(int beforeMonth) {
|
||||
SimpleDateFormat format = new SimpleDateFormat(STANDARD_FORMAT);
|
||||
Calendar c = Calendar.getInstance();
|
||||
|
||||
//过去一月
|
||||
c.setTime(new Date());
|
||||
c.add(Calendar.MONTH, (0 - beforeMonth));
|
||||
Date m = c.getTime();
|
||||
String mon = format.format(m);
|
||||
return getDateline(mon, STANDARD_FORMAT);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前天的结束时间
|
||||
*
|
||||
* @return 当前天的结束时间
|
||||
*/
|
||||
public static Date getCurrentDayEndTime() {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
cal.set(Calendar.DATE, cal.get(Calendar.DATE) + 1);
|
||||
cal.set(Calendar.SECOND, cal.get(Calendar.SECOND) - 1);
|
||||
return cal.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取延时时间(秒)
|
||||
*
|
||||
* @param startTime 开始时间
|
||||
* @return 延时时间(秒)
|
||||
*/
|
||||
public static Integer getDelayTime(Long startTime) {
|
||||
int time = Math.toIntExact((startTime - System.currentTimeMillis()) / 1000);
|
||||
//如果时间为负数则改为一秒后执行
|
||||
if (time <= 0) {
|
||||
time = 1;
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某年某月开始时间
|
||||
*
|
||||
* @param year 年
|
||||
* @param month 月
|
||||
* @return 开始时间
|
||||
*/
|
||||
public static Date getBeginTime(int year, int month) {
|
||||
YearMonth yearMonth = YearMonth.of(year, month);
|
||||
LocalDate localDate = yearMonth.atDay(1);
|
||||
LocalDateTime startOfDay = localDate.atStartOfDay();
|
||||
ZonedDateTime zonedDateTime = startOfDay.atZone(ZoneId.of("Asia/Shanghai"));
|
||||
|
||||
return Date.from(zonedDateTime.toInstant());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某年某月结束时间
|
||||
*
|
||||
* @param year 年
|
||||
* @param month 月
|
||||
* @return 结束时间
|
||||
*/
|
||||
public static Date getEndTime(int year, int month) {
|
||||
YearMonth yearMonth = YearMonth.of(year, month);
|
||||
LocalDate endOfMonth = yearMonth.atEndOfMonth();
|
||||
LocalDateTime localDateTime = endOfMonth.atTime(23, 59, 59, 999);
|
||||
ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
|
||||
return Date.from(zonedDateTime.toInstant());
|
||||
}
|
||||
}
|
@ -0,0 +1,173 @@
|
||||
package com.wzj.soopin.order.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.order.domain.vo.PageVO;
|
||||
import com.wzj.soopin.order.domain.vo.SearchVO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 分页工具
|
||||
*
|
||||
* @author Chopper
|
||||
* @version v4.0
|
||||
* @since 2020/11/26 15:23
|
||||
*/
|
||||
public class PageUtil {
|
||||
|
||||
|
||||
/**
|
||||
* Mybatis-Plus分页封装
|
||||
*
|
||||
* @param page 分页VO
|
||||
* @param <T> 范型
|
||||
* @return 分页响应
|
||||
*/
|
||||
public static <T> Page<T> initPage(PageVO page) {
|
||||
|
||||
Page<T> p;
|
||||
int pageNumber = page.getPage();
|
||||
int pageSize = page.getSize();
|
||||
String sort = page.getSort();
|
||||
String order = page.getOrder();
|
||||
|
||||
if (pageNumber < 1) {
|
||||
pageNumber = 1;
|
||||
}
|
||||
if (pageSize < 1) {
|
||||
pageSize = 10;
|
||||
}
|
||||
if (pageSize > 100) {
|
||||
pageSize = 100;
|
||||
}
|
||||
if (StrUtil.isNotBlank(sort)) {
|
||||
Boolean isAsc = false;
|
||||
if (StrUtil.isBlank(order)) {
|
||||
isAsc = false;
|
||||
} else {
|
||||
if ("desc".equals(order.toLowerCase())) {
|
||||
isAsc = false;
|
||||
} else if ("asc".equals(order.toLowerCase())) {
|
||||
isAsc = true;
|
||||
}
|
||||
}
|
||||
p = new Page<>(pageNumber, pageSize);
|
||||
if (isAsc) {
|
||||
p.addOrder(OrderItem.asc(sort));
|
||||
} else {
|
||||
p.addOrder(OrderItem.desc(sort));
|
||||
}
|
||||
|
||||
} else {
|
||||
p = new Page<>(pageNumber, pageSize);
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成条件搜索 全对象对比 equals
|
||||
* 如果需要like 需要另行处理
|
||||
*
|
||||
* @param object 对象(根据对象构建查询条件)
|
||||
* @return 查询wrapper
|
||||
*/
|
||||
public static <T> QueryWrapper<T> initWrapper(Object object) {
|
||||
return initWrapper(object, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成条件搜索 全对象对比
|
||||
*
|
||||
* @param object 对象
|
||||
* @param searchVo 查询条件
|
||||
* @return 查询wrapper
|
||||
*/
|
||||
public static <T> QueryWrapper<T> initWrapper(Object object, SearchVO searchVo) {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
//创建时间区间判定
|
||||
if (searchVo != null && StrUtil.isNotBlank(searchVo.getStartDate()) && StrUtil.isNotBlank(searchVo.getEndDate())) {
|
||||
Date start = DateUtil.parse(searchVo.getStartDate());
|
||||
Date end = DateUtil.parse(searchVo.getEndDate());
|
||||
queryWrapper.between("create_time", start, DateUtil.endOfDay(end));
|
||||
}
|
||||
if (object != null) {
|
||||
String[] fieldNames = BeanUtil.getFiledName(object);
|
||||
//遍历所有属性
|
||||
for (int j = 0; j < fieldNames.length; j++) {
|
||||
//获取属性的名字
|
||||
String key = fieldNames[j];
|
||||
//获取值
|
||||
Object value = BeanUtil.getFieldValueByName(key, object);
|
||||
//如果值不为空才做查询处理
|
||||
if (value != null && !"".equals(value)) {
|
||||
//字段数据库中,驼峰转下划线
|
||||
queryWrapper.eq(StringUtils.camel2Underline(key), value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* List 手动分页
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @param list 分页集合
|
||||
* @return 范型结果
|
||||
*/
|
||||
public static <T> List<T> listToPage(PageVO page, List<T> list) {
|
||||
|
||||
int pageNumber = page.getPage() - 1;
|
||||
int pageSize = page.getSize();
|
||||
|
||||
if (pageNumber < 0) {
|
||||
pageNumber = 0;
|
||||
}
|
||||
if (pageSize < 1) {
|
||||
pageSize = 10;
|
||||
}
|
||||
if (pageSize > 100) {
|
||||
pageSize = 100;
|
||||
}
|
||||
|
||||
int fromIndex = pageNumber * pageSize;
|
||||
int toIndex = pageNumber * pageSize + pageSize;
|
||||
|
||||
if (fromIndex > list.size()) {
|
||||
return new ArrayList<>();
|
||||
} else if (toIndex >= list.size()) {
|
||||
return list.subList(fromIndex, list.size());
|
||||
} else {
|
||||
return list.subList(fromIndex, toIndex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换分页类型
|
||||
*
|
||||
* @param originPage 原分页
|
||||
* @param records 新分页数据
|
||||
* @param <T> 新类型
|
||||
* @return 新类型分页
|
||||
*/
|
||||
public static <T> IPage<T> convertPage(IPage originPage, List<T> records) {
|
||||
IPage<T> resultPage = new Page<>();
|
||||
if (originPage != null) {
|
||||
resultPage.setCurrent(originPage.getCurrent());
|
||||
resultPage.setPages(originPage.getPages());
|
||||
resultPage.setTotal(originPage.getTotal());
|
||||
resultPage.setSize(originPage.getSize());
|
||||
resultPage.setRecords(records);
|
||||
}
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,181 @@
|
||||
package com.wzj.soopin.order.utils;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
import java.beans.Introspector;
|
||||
import java.beans.PropertyDescriptor;
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 字串工具类
|
||||
*
|
||||
* @author pikachu
|
||||
*/
|
||||
public class StringUtils extends StrUtil {
|
||||
|
||||
/**
|
||||
* MD5加密方法
|
||||
*
|
||||
* @param str String
|
||||
* @return String
|
||||
*/
|
||||
public static String md5(String str) {
|
||||
MessageDigest messageDigest = null;
|
||||
try {
|
||||
messageDigest = MessageDigest.getInstance("MD5");
|
||||
} catch (NoSuchAlgorithmException ex) {
|
||||
ex.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
byte[] resultByte = messageDigest.digest(str.getBytes());
|
||||
StringBuffer result = new StringBuffer();
|
||||
for (int i = 0; i < resultByte.length; ++i) {
|
||||
int v = 0xFF & resultByte[i];
|
||||
if (v < 16) {
|
||||
result.append("0");
|
||||
}
|
||||
result.append(Integer.toHexString(v));
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取随机数
|
||||
*
|
||||
* @param n 随机次数
|
||||
* @return
|
||||
*/
|
||||
public static String getRandStr(int n) {
|
||||
Random random = new Random();
|
||||
String sRand = "";
|
||||
for (int i = 0; i < n; i++) {
|
||||
String rand = String.valueOf(random.nextInt(10));
|
||||
sRand += rand;
|
||||
}
|
||||
return sRand;
|
||||
}
|
||||
|
||||
/**
|
||||
* 切个字符串,如果超出长度则切割
|
||||
*
|
||||
* @param var
|
||||
* @param size
|
||||
* @return
|
||||
*/
|
||||
public static String subStringLength(String var, Integer size) {
|
||||
if (var.length() > size) {
|
||||
return var.substring(0, (size - 4)).toString() + "...";
|
||||
}
|
||||
return var;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象转map
|
||||
*
|
||||
* @param obj
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static Map<String, Object> objectToMap(Object obj) throws Exception {
|
||||
if (obj == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, Object> map = new HashMap<String, Object>(16);
|
||||
|
||||
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
|
||||
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
|
||||
for (PropertyDescriptor property : propertyDescriptors) {
|
||||
String key = property.getName();
|
||||
if (key.compareToIgnoreCase("class") == 0) {
|
||||
continue;
|
||||
}
|
||||
Method getter = property.getReadMethod();
|
||||
Object value = getter != null ? getter.invoke(obj) : null;
|
||||
map.put(key, value);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 驼峰法转下划线
|
||||
*/
|
||||
public static String camel2Underline(String str) {
|
||||
|
||||
if (StrUtil.isBlank(str)) {
|
||||
return "";
|
||||
}
|
||||
if (str.length() == 1) {
|
||||
return str.toLowerCase();
|
||||
}
|
||||
StringBuffer sb = new StringBuffer();
|
||||
for (int i = 1; i < str.length(); i++) {
|
||||
if (Character.isUpperCase(str.charAt(i))) {
|
||||
sb.append("_" + Character.toLowerCase(str.charAt(i)));
|
||||
} else {
|
||||
sb.append(str.charAt(i));
|
||||
}
|
||||
}
|
||||
return (str.charAt(0) + sb.toString()).toLowerCase();
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果给定字符串{@code str}中不包含{@code appendStr},则在{@code str}后追加{@code appendStr};
|
||||
* 如果已包含{@code appendStr},则在{@code str}后追加{@code otherwise}
|
||||
*
|
||||
* @param str 给定的字符串
|
||||
* @param appendStr 需要追加的内容
|
||||
* @param otherwise 当{@code appendStr}不满足时追加到{@code str}后的内容
|
||||
* @return 追加后的字符串
|
||||
*/
|
||||
public static String appendIfNotContain(String str, String appendStr, String otherwise) {
|
||||
if (isEmpty(str) || isEmpty(appendStr)) {
|
||||
return str;
|
||||
}
|
||||
if (str.contains(appendStr)) {
|
||||
return str.concat(otherwise);
|
||||
}
|
||||
return str.concat(appendStr);
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤特殊字符串
|
||||
*
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public static String filterSpecialChart(String str) {
|
||||
String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
|
||||
Pattern p = Pattern.compile(regEx);
|
||||
Matcher m = p.matcher(str);
|
||||
return m.replaceAll("").trim();
|
||||
}
|
||||
|
||||
/**
|
||||
* double 转价格字符串
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static String toFen(Double doubleValue) {
|
||||
String str = doubleValue.toString();
|
||||
|
||||
if (!str.contains(".")) {
|
||||
str = str + ".00";
|
||||
} else if (str.substring(str.indexOf(".")).length() == 2) {
|
||||
str = str + "0";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -55,4 +55,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="quantity != null "> and quantity = #{quantity}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectAftersale" parameterType="AftersaleItem" resultMap="AftersaleItemResult">
|
||||
SELECT * FROM oms_aftersale_item
|
||||
<where>
|
||||
<if test="query.memberId != null and query.memberId != ''">
|
||||
AND member_id LIKE CONCAT('%', #{query.memberId}, '%')
|
||||
</if>
|
||||
<if test="query.orderId != null and query.orderId != ''">
|
||||
AND order_id LIKE CONCAT('%', #{query.orderId}, '%')
|
||||
</if>
|
||||
<if test="query.orderItemId != null and query.orderItemId != ''">
|
||||
AND order_item_id LIKE CONCAT('%', #{query.orderItemId}, '%')
|
||||
</if>
|
||||
<if test="query.returnAmount != null">
|
||||
AND return_amount = #{query.returnAmount}
|
||||
</if>
|
||||
<if test="query.quantity != null">
|
||||
AND quantity = #{query.quantity}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -31,4 +31,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="deliverySn != null and deliverySn != ''"> and delivery_sn = #{deliverySn}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectOderDeliveryHistory" parameterType="OrderDeliveryHistory" resultMap="OrderDeliveryHistoryResult">
|
||||
SELECT * FROM oms_order_delivery_history
|
||||
<where>
|
||||
<if test="query.orderId != null and query.orderId != ''">
|
||||
AND order_id LIKE CONCAT('%', #{query.orderId}, '%')
|
||||
</if>
|
||||
<if test="query.deliveryCompany != null and query.deliveryCompany != ''">
|
||||
AND delivery_company LIKE CONCAT('%', #{query.deliveryCompany}, '%')
|
||||
</if>
|
||||
<if test="query.deliverySn != null and query.deliverySn != ''">
|
||||
AND delivery_sn LIKE CONCAT('%', #{query.deliverySn}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -53,4 +53,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="spData != null and spData != ''"> and sp_data = #{spData}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectOrderItem" parameterType="OrderItem" resultMap="OrderItemResult">
|
||||
SELECT * FROM oms_order_item
|
||||
<where>
|
||||
<if test="query.orderId != null and query.orderId != ''">
|
||||
AND order_id LIKE CONCAT('%', #{query.orderId}, '%')
|
||||
</if>
|
||||
<if test="query.productId != null">
|
||||
AND product_id LIKE CONCAT('%', CAST(#{query.productId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.outProductId != null and query.outProductId != ''">
|
||||
AND out_product_id LIKE CONCAT('%', #{query.outProductId}, '%')
|
||||
</if>
|
||||
<if test="query.skuId != null">
|
||||
AND sku_id LIKE CONCAT('%', CAST(#{query.skuId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.outSkuId != null and query.outSkuId != ''">
|
||||
AND out_sku_id LIKE CONCAT('%', #{query.outSkuId}, '%')
|
||||
</if>
|
||||
<if test="query.productSnapshotId != null">
|
||||
AND product_snapshot_id LIKE CONCAT('%', CAST(#{query.productSnapshotId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.skuSnapshotId != null">
|
||||
AND sku_snapshot_id LIKE CONCAT('%', CAST(#{query.skuSnapshotId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.pic != null and query.pic != ''">
|
||||
AND pic LIKE CONCAT('%', #{query.pic}, '%')
|
||||
</if>
|
||||
<if test="query.productNameLike != null and query.productNameLike != ''">
|
||||
AND product_name LIKE CONCAT('%', #{query.productNameLike}, '%')
|
||||
</if>
|
||||
<if test="query.salePrice != null">
|
||||
AND sale_price = #{query.salePrice}
|
||||
</if>
|
||||
<if test="query.purchasePrice != null">
|
||||
AND purchase_price = #{query.purchasePrice}
|
||||
</if>
|
||||
<if test="query.quantity != null">
|
||||
AND quantity = #{query.quantity}
|
||||
</if>
|
||||
<if test="query.productCategoryId != null">
|
||||
AND product_category_id = #{query.productCategoryId}
|
||||
</if>
|
||||
<if test="query.spData != null and query.spData != ''">
|
||||
AND sp_data LIKE CONCAT('%', #{query.spData}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -91,6 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="receiveTime != null "> and receive_time = #{receiveTime}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectManagerOrderPage" resultType="com.wzj.soopin.order.domain.vo.ManagerOrderVO">
|
||||
select
|
||||
a.id,
|
||||
|
@ -34,4 +34,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="note != null and note != ''"> and note = #{note}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectOrderOperateHistory" parameterType="OrderOperateHistory" resultMap="OrderOperateHistoryResult">
|
||||
SELECT * FROM oms_order_operate_history
|
||||
<where>
|
||||
<if test="query.orderSn != null and query.orderSn != ''">
|
||||
AND order_sn LIKE CONCAT('%', #{query.orderSn}, '%')
|
||||
</if>
|
||||
<if test="query.operateMan != null and query.operateMan != ''">
|
||||
AND operate_man LIKE CONCAT('%', #{query.operateMan}, '%')
|
||||
</if>
|
||||
<if test="query.orderStatus != null">
|
||||
AND order_status = #{query.orderStatus}
|
||||
</if>
|
||||
<if test="query.note != null and query.note != ''">
|
||||
AND note LIKE CONCAT('%', #{query.note}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -48,4 +48,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="responseBody != null and responseBody != ''"> and response_body = #{responseBody}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectWechatPaymentHistory" parameterType="WechatPaymentHistory" resultMap="OmsWechatPaymentHistoryResult">
|
||||
SELECT * FROM oms_wechat_payment_history
|
||||
<where>
|
||||
<if test="query.paymentId != null and query.paymentId != ''">
|
||||
AND payment_id LIKE CONCAT('%', #{query.paymentId}, '%')
|
||||
</if>
|
||||
<if test="query.memberId != null">
|
||||
AND member_id LIKE CONCAT('%', CAST(#{query.memberId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.openid != null and query.openid != ''">
|
||||
AND openid LIKE CONCAT('%', #{query.openid}, '%')
|
||||
</if>
|
||||
<if test="query.realNameLike != null and query.realNameLike != ''">
|
||||
AND real_name LIKE CONCAT('%', #{query.realNameLike}, '%')
|
||||
</if>
|
||||
<if test="query.title != null and query.title != ''">
|
||||
AND title LIKE CONCAT('%', #{query.title}, '%')
|
||||
</if>
|
||||
<if test="query.orderId != null">
|
||||
AND order_id LIKE CONCAT('%', CAST(#{query.orderId} AS CHAR), '%')
|
||||
</if>
|
||||
<if test="query.money != null">
|
||||
AND money = #{query.money}
|
||||
</if>
|
||||
<if test="query.opType != null">
|
||||
AND op_type = #{query.opType}
|
||||
</if>
|
||||
<if test="query.paymentStatus != null">
|
||||
AND payment_status = #{query.paymentStatus}
|
||||
</if>
|
||||
<if test="query.attach != null and query.attach != ''">
|
||||
AND attach LIKE CONCAT('%', #{query.attach}, '%')
|
||||
</if>
|
||||
<if test="query.responseBody != null and query.responseBody != ''">
|
||||
AND response_body LIKE CONCAT('%', #{query.responseBody}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user