版本管理、优化订单模块

This commit is contained in:
fxh 2025-07-04 14:53:25 +08:00
parent 96b611f014
commit 19581d153a
73 changed files with 684 additions and 564 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

View File

@ -23,8 +23,8 @@ import java.util.Map;
@RestController
public class IndexController {
@Autowired
private IndexService indexService;
private final IndexService indexService;
/**
* 访问首页提示语

View File

@ -9,17 +9,20 @@ import com.wzj.soopin.member.service.IMemberAccountService;
import com.wzj.soopin.order.mapper.OrderMapper;
import com.wzj.soopin.transaction.domain.po.Withdraw;
import com.wzj.soopin.transaction.service.IWithdrawService;
import lombok.RequiredArgsConstructor;
import org.dromara.system.mapper.SysIntegralHistoryMapper;
import org.dromara.system.mapper.SysTenantMapper;
import org.dromara.system.mapper.SystemStatisticsMapper;
import org.dromara.web.service.IndexService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author fxh
*/
@Service
@RequiredArgsConstructor
public class IndexServiceImpl implements IndexService {
@ -33,71 +36,68 @@ public class IndexServiceImpl implements IndexService {
private final ProductMapper productMapper;
private final OrderMapper orderMapper;
public IndexServiceImpl(SysTenantMapper sysTenantMapper, VlogMapper vlogMapper, IMemberAccountService memberService, IFeedbackService feedbackService, IWithdrawService withdrawService, SystemStatisticsMapper systemStatisticsMapper, SysIntegralHistoryMapper sysIntegralHistoryMapper, ProductMapper productMapper, OrderMapper orderMapper) {
this.sysTenantMapper = sysTenantMapper;
this.vlogMapper = vlogMapper;
this.memberService = memberService;
this.feedbackService = feedbackService;
this.withdrawService = withdrawService;
this.systemStatisticsMapper = systemStatisticsMapper;
this.sysIntegralHistoryMapper = sysIntegralHistoryMapper;
this.productMapper = productMapper;
this.orderMapper = orderMapper;
}
@Override
public Map<String, Object> getCount() {
Map<String, Object> result = new HashMap<>();
//用户数量
result.put("memberCount", memberService.count());
//待审核视频
result.put("vlogCount", vlogMapper.countVlog());
Map<String, Object> result = new HashMap<>(16);
// 待审核举报统计
QueryWrapper<Feedback> FeedbackWrapper = new QueryWrapper<>();
FeedbackWrapper.eq("status", 0);
result.put("feedbackCount", feedbackService.count(FeedbackWrapper));
// 待审核提现统计
QueryWrapper<Withdraw> withdrawQueryWrapper = new QueryWrapper<>();
withdrawQueryWrapper.eq("audit_status", 0);
result.put("WithdrawCount", withdrawService.count(withdrawQueryWrapper));
//用户视频举报提现
addBasicStatistics(result);
// 商品统计待审核商品统计
Map<String, Object> productCounts = productMapper.countProduct();
result.put("productCount", productCounts.get("count1"));
result.put("productAudit", productCounts.get("count2"));
//商品店铺订单
addCompositeStatistics(result);
// 店铺统计待审核店铺统计
Map<String, Object> StoreCounts = sysTenantMapper.countProduct();
result.put("storeCount", StoreCounts.get("count1"));
result.put("StoreAudit", StoreCounts.get("count2"));
// Top20排行榜
addTop20Statistics(result);
// 订单统计待审核退款统计
Map<String, Object> OrderCounts = orderMapper.countOrder();
result.put("orderCount", OrderCounts.get("count1"));
result.put("orderAudit", OrderCounts.get("count2"));
// 店铺TOP20
List<Map<String, Object>> top20Stores = sysTenantMapper.getTop20Stores();
result.put("top20Stores", top20Stores);
// 商品TOP20
List<Map<String, Object>> top20Product = productMapper.getTop20Product();
result.put("top20Product", top20Product);
// 分月用户量统计
List<Map<String, Object>> monthlyUserVolume = systemStatisticsMapper.getMonthlyUserVolume();
result.put("monthlyUserVolume", monthlyUserVolume);
// 分月短视频统计
List<Map<String, Object>> monthlyVlog = vlogMapper.getMonthlyVlog();
result.put("monthlyVlog", monthlyVlog);
// 分月收入支出统计
List<Map<String, Object>> monthlyIncomeExpense = sysIntegralHistoryMapper.getIncomeExpense();
result.put("monthlyIncomeExpense", monthlyIncomeExpense);
// 月度趋势统计
addMonthlyTrendStatistics(result);
return result;
}
private void addBasicStatistics(Map<String, Object> result) {
result.put("memberCount", memberService.count());
result.put("vlogCount", vlogMapper.countVlog());
// 待审核举报
result.put("feedbackCount", feedbackService.count(
new QueryWrapper<Feedback>().eq("status", 0)
));
// 待审核提现
result.put("WithdrawCount", withdrawService.count(
new QueryWrapper<Withdraw>().eq("audit_status", 0)
));
}
private void addCompositeStatistics(Map<String, Object> result) {
// 商品统计
Map<String, Object> productCounts = productMapper.countProduct();
result.put("productCount", productCounts.get("count2"));
result.put("productAudit", productCounts.get("count1"));
// 店铺统计
Map<String, Object> storeCounts = sysTenantMapper.countProduct();
result.put("storeCount", storeCounts.get("count1"));
result.put("StoreAudit", storeCounts.get("count2"));
// 订单统计
Map<String, Object> orderCounts = orderMapper.countOrder();
result.put("orderCount", orderCounts.get("count1"));
result.put("orderAudit", orderCounts.get("count2"));
}
/** Top20排行榜 */
private void addTop20Statistics(Map<String, Object> result) {
result.put("top20Stores", sysTenantMapper.getTop20Stores());
result.put("top20Product", productMapper.getTop20Product());
}
/** 月度趋势统计 */
private void addMonthlyTrendStatistics(Map<String, Object> result) {
result.put("monthlyUserVolume", systemStatisticsMapper.getMonthlyUserVolume());
result.put("monthlyVlog", vlogMapper.getMonthlyVlog());
result.put("monthlyIncomeExpense", sysIntegralHistoryMapper.getIncomeExpense());
}
}

View File

@ -52,9 +52,9 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: root
url: jdbc:mysql://82.156.121.2:23306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: wzj
password: A085F27A43B0
# # 从库数据源
# slave:
# lazy: true

View File

@ -176,6 +176,11 @@ tenant:
- trans_divide_detail
- trans_divide_rule
- trans_divide_rule_detail
- aws_system_statistics
- act_integral_history
- sys_version
# MyBatisPlus配置
# https://baomidou.com/config/

View File

@ -1,24 +1,19 @@
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.impl.BrandServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -31,11 +26,11 @@ import java.util.List;
@Tag(name ="品牌管理接口列表")
@RestController
@RequestMapping("/pms/brand")
@RequiredArgsConstructor
public class BrandController extends BaseController {
@Autowired
private BrandServiceImpl service;
@Autowired
private BrandConvert convert;
private final BrandServiceImpl service;
private final BrandConvert convert;
@Tag(name ="所有品牌管理列表")
@ -47,13 +42,14 @@ public class BrandController extends BaseController {
@Tag(name ="导出品牌管理列表")
@Log(title = "品牌管理", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(BrandBo query) {
@PostMapping("export")
public R<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), "品牌管理数据"));
return R.ok(util.writeExcel(convert.toVO(list), "品牌管理数据"));
}
@Tag(name ="获取品牌管理详细信息")
@GetMapping(value = "/{id}")
public R getInfo(@PathVariable("id") Long id) {

View File

@ -2,26 +2,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.impl.ProductCategoryServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 商品分类Controller
@ -32,11 +24,11 @@ import java.util.List;
@Tag(name ="商品分类接口列表")
@RestController
@RequestMapping("/pms/productCategory")
@RequiredArgsConstructor
public class ProductCategoryController extends BaseController {
@Autowired
private ProductCategoryServiceImpl service;
@Autowired
private ProductCategoryConvert convert;
private final ProductCategoryServiceImpl service;
private final ProductCategoryConvert convert;
@Tag(name ="查询商品分类列表")
@PostMapping("list")

View File

@ -4,28 +4,18 @@ package com.wzj.soopin.goods.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -38,13 +28,12 @@ import java.util.List;
@Tag(name ="商品信息接口列表")
@RestController
@RequestMapping("/pms/product")
@RequiredArgsConstructor
public class ProductController extends BaseController {
@Autowired
private ProductServiceImpl service;
@Autowired
private ProductConvert convert;
@Autowired
private ProductService productService;
private final ProductServiceImpl service;
private final ProductConvert convert;
private final ProductService productService;
@Tag(name ="查询商品信息列表")
@PostMapping("list")
@ -55,14 +44,13 @@ public class ProductController extends BaseController {
@Tag(name ="导出商品信息列表")
@Log(title = "商品信息", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(ProductBo query) {
@PostMapping("export")
public R<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), "商品信息数据"));
return R.ok(util.writeExcel(convert.toVO(list), "商品信息数据"));
}
@Tag(name ="获取商品信息详细信息")
@GetMapping(value = "/{id}")
public R getInfo(@PathVariable("id") Long id) {
@ -95,14 +83,17 @@ public class ProductController extends BaseController {
@Tag(name ="审核商品")
@Log(title = "审核商品", businessType = BusinessType.UPDATE)
@GetMapping("/audit")
public R audit( @RequestParam Long id, @RequestParam Integer authFlag,@RequestParam(required = false) String reasons) {
public R audit( @RequestParam Long id,
@RequestParam Integer authFlag,
@RequestParam(required = false) String reasons) {
return R.ok(service.audit(id,authFlag,reasons));
}
@Tag(name ="上下架商品")
@Log(title = "上下架商品", businessType = BusinessType.UPDATE)
@GetMapping("/publish")
public R publish( @RequestParam Long id, @RequestParam Integer publishStatus) {
public R publish( @RequestParam Long id,
@RequestParam Integer publishStatus) {
return R.ok(service.publish(id,publishStatus));
}

View File

@ -3,24 +3,17 @@ package com.wzj.soopin.goods.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.impl.SkuServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -28,16 +21,16 @@ import java.util.List;
* sku信息Controller
*
* @author zcc
* @date 2022-11-28
* &#064;date 2022-11-28
*/
@Tag(name ="sku信息接口列表")
@RestController
@RequestMapping("/pms/sku")
@RequiredArgsConstructor
public class SkuController extends BaseController {
@Autowired
private SkuServiceImpl service;
@Autowired
private SkuConvert convert;
private final SkuServiceImpl service;
private final SkuConvert convert;
@Tag(name ="查询商品信息列表")
@PostMapping("list")
@ -45,14 +38,13 @@ public class SkuController extends BaseController {
return R.ok(service.getList(query,page));
}
@Tag(name ="导出sku信息列表")
@Log(title = "sku信息", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(SkuBo query) {
@PostMapping("export")
public R<String> export(SkuBo query) {
List<Sku> list = service.list(query.toWrapper());
ExcelUtil<SkuVO> util = new ExcelUtil<>(SkuVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "sku信息数据"));
return R.ok(util.writeExcel(convert.toVO(list), "sku信息数据"));
}
@Tag(name ="获取sku信息详细信息")

View File

@ -6,7 +6,6 @@ import com.wzj.soopin.goods.domain.vo.BrandVO;
import org.dromara.common.web.core.BaseConverter;
import org.mapstruct.Mapper;
import java.util.List;
/**
* 品牌管理 DO <=> DTO <=> VO / BO / Query
*
@ -15,5 +14,4 @@ import java.util.List;
@Mapper(componentModel = "spring")
public interface BrandConvert extends BaseConverter<BrandVO, BrandBo,Brand> {
// List<BrandVO> dos2vos(List<Brand> list);
}

View File

@ -1,7 +1,6 @@
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;
@ -16,7 +15,4 @@ import java.util.List;
@Mapper(componentModel = "spring")
public interface ProductCategoryConvert extends BaseConverter<ProductCategoryVO, ProductCategoryBo, ProductCategory> {
// List<ProductCategoryVO> dos2vos(List<ProductCategory> list);
//
// CategoryDTO do2dto(ProductCategory it);
}

View File

@ -3,13 +3,10 @@ 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;
/**
* 商品信息 DO <=> DTO <=> VO / BO / Query
*
@ -18,9 +15,4 @@ import java.util.List;
@Mapper(componentModel = "spring")
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);
}

View File

@ -6,7 +6,6 @@ import com.wzj.soopin.goods.domain.vo.SkuVO;
import org.dromara.common.web.core.BaseConverter;
import org.mapstruct.Mapper;
import java.util.List;
/**
* sku信息 DO <=> DTO <=> VO / BO / Query
*
@ -15,5 +14,4 @@ import java.util.List;
@Mapper(componentModel = "spring")
public interface SkuConvert extends BaseConverter<SkuVO, SkuBo, Sku> {
// List<SkuVO> dos2vos(List<Sku> list);
}

View File

@ -2,7 +2,6 @@ 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.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -71,7 +70,6 @@ public class ProductBo {
@Schema(description = "搜索关键字")
private String search;
// 排查的id
@Schema(description = "排除的商品ID列表")
private List<Long> excludeProductIds;

View File

@ -6,9 +6,9 @@ import com.wzj.soopin.goods.domain.entity.ProductCategory;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author fxh
*/
@Data
@Schema(description = "商品分类 查询 对象")
public class ProductCategoryBo {

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wzj.soopin.goods.domain.entity.Sku;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.excel.annotation.Excel;
import java.math.BigDecimal;

View File

@ -92,7 +92,7 @@ public class Product extends BaseAudit {
@Schema(description = "店铺id")
@Excel(name = "店铺id")
private String tenantId;
private Long tenantId;
@Schema(description = "审核状态 1.待审核;->2.审核通过;3->审核驳回")
@Excel(name = "审核状态 1.待审核;->2.审核通过;3->审核驳回")

View File

@ -3,6 +3,7 @@ package com.wzj.soopin.goods.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.domain.model.BaseAudit;
import org.dromara.common.excel.annotation.Excel;
@ -13,6 +14,7 @@ import java.math.BigDecimal;
*
* @author zcc
*/
@EqualsAndHashCode(callSuper = true)
@Schema(description = "SKU信息对象")
@Data
@TableName("pms_sku")

View File

@ -113,7 +113,7 @@ public class ProductVO extends BaseAudit {
private String contactPhone;
@Schema(description = "店铺id")
private String tenantId;
private Long tenantId;
@Schema(description = "审核状态 1.待审核、2.审核通过、3.审核驳回")
private String authFlag;

View File

@ -32,12 +32,6 @@ public interface ProductMapper extends BaseMapper<Product> {
@Select("SELECT " +
"SUM(CASE WHEN auth_flag = 1 THEN 1 ELSE 0 END) AS count1, " +
"SUM(CASE WHEN auth_flag = 2 THEN 1 ELSE 0 END) AS count2 " +
"FROM pms_product")
Map<String, Object> countProduct();
@Select("SELECT " +
"name, " +
"sales, " +
@ -50,4 +44,10 @@ public interface ProductMapper extends BaseMapper<Product> {
ProductVO selectProductWithSkus(@Param("id") Long id);
@Select("SELECT " +
"SUM(CASE WHEN auth_flag = 1 THEN 1 ELSE 0 END) AS count1, " +
"SUM(CASE WHEN auth_flag = 2 THEN 1 ELSE 0 END) AS count2 " +
"FROM pms_product")
Map<String, Object> countProduct();
}

View File

@ -8,5 +8,7 @@ import com.wzj.soopin.goods.domain.entity.Product;
import com.wzj.soopin.goods.domain.vo.ProductVO;
public interface ProductService extends IService<Product> {
IPage<ProductVO> getList(ProductBo query, Page<Product> page);
}

View File

@ -1,20 +1,12 @@
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业务层处理
*

View File

@ -1,33 +1,11 @@
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业务层处理

View File

@ -1,35 +1,15 @@
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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wzj.soopin.goods.convert.ProductConvert;
import com.wzj.soopin.goods.domain.bo.ProductBo;
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 lombok.RequiredArgsConstructor;
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业务层处理
@ -38,19 +18,21 @@ import java.util.stream.Collectors;
* @author zcc
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
@Autowired
private ProductMapper productMapper;
private final ProductMapper productMapper;
@Override
public IPage<ProductVO> getList(ProductBo query, Page<Product> page) {
IPage<ProductVO> resultPage = productMapper.getlist(page,query);
return resultPage;
return productMapper.getlist(page,query);
}
public Product audit(Long id, Integer authFlag,String reasons) {
Product productToUpdate = new Product();
productToUpdate.setId(id);
Product productToUpdate = productMapper.selectById(id);
if (productToUpdate == null) {
throw new RuntimeException("商品不存在");
}
productToUpdate.setAuthFlag(authFlag);
productToUpdate.setReasons(reasons);
productMapper.updateById(productToUpdate);
@ -58,8 +40,10 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
}
public Product publish(Long id, Integer publishStatus) {
Product product = new Product();
product.setId(id);
Product product = productMapper.selectById(id);
if (product == null) {
throw new RuntimeException("商品不存在");
}
product.setPublishStatus(publishStatus);
productMapper.updateById(product);
return product;

View File

@ -1,6 +1,5 @@
package com.wzj.soopin.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -9,12 +8,9 @@ import com.wzj.soopin.goods.domain.entity.Sku;
import com.wzj.soopin.goods.domain.vo.SkuVO;
import com.wzj.soopin.goods.mapper.SkuMapper;
import com.wzj.soopin.goods.service.SkuService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* sku信息Service业务层处理
@ -23,12 +19,13 @@ import java.util.List;
* @author zcc
*/
@Service
@RequiredArgsConstructor
public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuService {
@Autowired private SkuMapper skuMapper;
private final SkuMapper skuMapper;
public IPage<SkuVO> getList(SkuBo query, Page<Sku> page) {
IPage<SkuVO> resultPage = skuMapper.getlist(page,query);
return resultPage;
return skuMapper.getlist(page,query);
}
public SkuVO selectSkuByid(Long id) {

View File

@ -56,7 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="getlist" resultType="ProductVO">
<select id="getlist" resultType="com.wzj.soopin.goods.domain.vo.ProductVO">
SELECT
p.*,
b.name AS brandName,

View File

@ -2,6 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--suppress MybatisPlusMapperXmlInspection -->
<mapper namespace="com.wzj.soopin.goods.mapper.SkuMapper">
<resultMap type="Sku" id="SkuResult">

View File

@ -162,6 +162,10 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-content</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-im</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -10,6 +10,7 @@ import com.wzj.soopin.order.domain.form.DealWithAftersaleForm;
import com.wzj.soopin.order.domain.vo.*;
import com.wzj.soopin.order.service.impl.AftersaleServiceImpl;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
@ -19,7 +20,6 @@ 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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -35,18 +35,13 @@ import java.util.List;
@RestController
@RequestMapping("/oms/aftersale")
@Slf4j
@RequiredArgsConstructor
public class AftersaleController extends BaseController {
private final AftersaleServiceImpl service;
private final AftersaleConvert convert;
private final RedisService redisService;
public AftersaleController(AftersaleServiceImpl service, AftersaleConvert convert, RedisService redisService) {
this.service = service;
this.convert = convert;
this.redisService = redisService;
}
@Tag(name ="查询订单售后列表")
@PostMapping("/list")
@ -57,11 +52,11 @@ public class AftersaleController extends BaseController {
@Tag(name ="导出订单售后列表")
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(AftersaleBo query) {
@PostMapping("export")
public R<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), "订单售后数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
}
@Tag(name ="获取订单售后详细信息")

View File

@ -1,33 +1,20 @@
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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -41,13 +28,12 @@ import java.util.List;
@Tag(name ="订单售后接口列表")
@RestController
@RequestMapping("/oms/aftersaleItem")
@RequiredArgsConstructor
public class AftersaleItemController extends BaseController {
@Autowired
private AftersaleItemServiceImpl service;
@Autowired
private AftersaleItemConvert convert;
@Autowired
private AftersaleItemService aftersaleItemService;
private final AftersaleItemServiceImpl service;
private final AftersaleItemConvert convert;
private final AftersaleItemService aftersaleItemService;
@Tag(name ="查询订单售后列表")
@PostMapping("/list")
@ -56,15 +42,13 @@ public class AftersaleItemController extends BaseController {
return R.ok(convert.toVO(list));
}
@Tag(name ="导出订单售后列表")
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(AftersaleItemBo query) {
@PostMapping("export")
public R<String> export(AftersaleItemBo query) {
List<AftersaleItem> list = service.list(query.toWrapper());
ExcelUtil<AftersaleItemVO> util = new ExcelUtil<>(AftersaleItemVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单售后数据"));
}
@Tag(name ="获取订单售后详细信息")

View File

@ -10,6 +10,7 @@ import com.wzj.soopin.order.domain.vo.*;
import com.wzj.soopin.order.service.OrderService;
import com.wzj.soopin.order.service.impl.OrderServiceImpl;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.SecurityUtils;
@ -18,7 +19,6 @@ 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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -28,21 +28,19 @@ import java.util.List;
* 订单表Controller
*
* @author zcc
* @date 2022-12-01
* &#064;date 2022-12-01
*/
@Tag(name ="订单表接口列表")
@RestController
@RequestMapping("/oms/order")
@Slf4j
@RequiredArgsConstructor
public class OrderController extends BaseController {
@Autowired
private OrderServiceImpl service;
@Autowired
private OrderConvert convert;
@Autowired
private RedisService redisService;
@Autowired
private OrderService orderService;
private final OrderServiceImpl service;
private final OrderConvert convert;
private final RedisService redisService;
private final OrderService orderService;
@Tag(name ="查询订单列表")
@ -60,13 +58,12 @@ public class OrderController extends BaseController {
@Tag(name ="导出订单表列表")
@Log(title = "订单售后", businessType = BusinessType.EXPORT)
@PostMapping("export")
public ResponseEntity<String> export(OrderBo query) {
public R<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), "订单售后数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单列表数据"));
}
@Tag(name ="获取订单表详细信息")
@GetMapping(value = "/{id}")
public R<ManagerOrderDetailVO> getInfo(@PathVariable("id") Long id) {
@ -77,7 +74,16 @@ public class OrderController extends BaseController {
@Log(title = "订单表", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody Order order) {
return service.insert(order);
R<Order> result = service.insert(order);
if (result != null) {
// 订单创建成功发送消息
service.sendMessage(order);
log.info("订单创建成功消息已发送订单ID: {}", order.getId());
} else {
log.warn("订单创建失败: {}", "返回结果为null");
}
return result;
}
@Tag(name ="修改订单表")
@ -97,7 +103,7 @@ public class OrderController extends BaseController {
@Tag(name ="添加备注")
@Log(title = "订单表", businessType = BusinessType.UPDATE)
@PostMapping("/merchantNote/add")
public R<Order> saveMerchantNote(@RequestBody Order order){
public R saveMerchantNote(@RequestBody Order order){
return service.saveMerchantNote(order);
}

View File

@ -3,29 +3,18 @@ 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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -38,13 +27,12 @@ import java.util.List;
@Tag(name ="订单发货记录接口列表")
@RestController
@RequestMapping("/oms/orderDeliveryHistory")
@RequiredArgsConstructor
public class OrderDeliveryHistoryController extends BaseController {
@Autowired
private OrderDeliveryHistoryServiceImpl service;
@Autowired
private OrderDeliveryHistoryConvert convert;
@Autowired
private OrderDeliveryHistoryService historyService;
private final OrderDeliveryHistoryServiceImpl service;
private final OrderDeliveryHistoryConvert convert;
private final OrderDeliveryHistoryService historyService;
@Tag(name ="查询订单发货列表")
@PostMapping("/list")
@ -53,14 +41,13 @@ public class OrderDeliveryHistoryController extends BaseController {
return R.ok(convert.toVO(list));
}
@Tag(name ="导出订单发货记录列表")
@Log(title = "订单发货记录", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(OrderDeliveryHistoryBo query) {
@PostMapping("export")
public R<String> export(OrderDeliveryHistoryBo query) {
List<OrderDeliveryHistory> list = service.list(query.toWrapper());
ExcelUtil<OrderDeliveryHistoryVO> util = new ExcelUtil<>(OrderDeliveryHistoryVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单发货记录数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单发货记录数据"));
}

View File

@ -1,37 +1,20 @@
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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -44,13 +27,13 @@ import java.util.List;
@Tag(name ="订单中所包含的商品接口列表")
@RestController
@RequestMapping("/oms/orderItem")
@RequiredArgsConstructor
public class OrderItemController extends BaseController {
@Autowired
private OrderItemServiceImpl service;
@Autowired
private OrderItemConvert convert;
@Autowired
private OrderItemService orderItemService;
private final OrderItemServiceImpl service;
private final OrderItemConvert convert;
private final OrderItemService orderItemService;
@Tag(name = "查询订单中所包含的商品列表")
@PostMapping("/list")
@ -59,14 +42,13 @@ public class OrderItemController extends BaseController {
return R.ok(convert.toVO(list));
}
@Tag(name ="导出会员信息列表")
@Log(title = "会员信息", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(OrderItemBo query) {
@PostMapping("export")
public R<String> export(OrderItemBo query) {
List<OrderItem> list = service.list(query.toWrapper());
ExcelUtil<OrderItemVO> util = new ExcelUtil<>(OrderItemVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单中所包含的商品数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单中所包含的商品数据"));
}
@Tag(name = "获取订单中所包含的商品详细信息")

View File

@ -1,30 +1,19 @@
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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -37,11 +26,12 @@ import java.util.List;
@Tag(name ="订单操作历史记录接口列表")
@RestController
@RequestMapping("/oms/orderOperateHistory")
@RequiredArgsConstructor
public class OrderOperateHistoryController extends BaseController {
@Autowired
private OrderOperateHistoryServiceImpl service;
@Autowired
private OrderOperateHistoryConvert convert;
private final OrderOperateHistoryServiceImpl service;
private final OrderOperateHistoryConvert convert;
@Tag(name ="查询订单操作历史记录列表")
@PostMapping("/list")
@ -53,11 +43,11 @@ public class OrderOperateHistoryController extends BaseController {
@Tag(name ="导出订单操作历史记录列表")
@Log(title = "订单操作历史记录", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(OrderOperateHistoryBo query) {
@PostMapping("export")
public R<String> export(OrderOperateHistoryBo query) {
List<OrderOperateHistory> list = service.list(query.toWrapper());
ExcelUtil<OrderOperateHistoryVO> util = new ExcelUtil<>(OrderOperateHistoryVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "订单操作历史记录数据"));
return R.ok(util.writeExcel(convert.toVO(list), "订单操作历史记录数据"));
}
@Tag(name ="获取订单操作历史记录详细信息")

View File

@ -2,23 +2,25 @@ package com.wzj.soopin.order.controller;
import com.wzj.soopin.order.domain.dto.CodeVerificationDto;
import com.wzj.soopin.order.service.VerificationCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 核销码相关接口
* @author fxh
*/
@Tag(name = "核销码接口")
@RestController
@RequestMapping("/oms/verification")
@RequiredArgsConstructor
@Slf4j
public class VerificationCodeController {
@Autowired
private VerificationCodeService verificationCodeService;
private final VerificationCodeService verificationCodeService;
/**
@ -32,12 +34,19 @@ public class VerificationCodeController {
/**
* 扫码核销接口
* @return 核销结果z
* @return 核销结果
*/
@PostMapping("/verify")
@Tag(name = "扫码核销接口")
public R verifyCode(@RequestBody CodeVerificationDto codeVerificationDto) {
return verificationCodeService.verifyCode(codeVerificationDto);
R result = verificationCodeService.verifyCode(codeVerificationDto);
if (R.isSuccess(result)){
verificationCodeService.sendMessage(codeVerificationDto);
}
else{
verificationCodeService.sendMessageNo(codeVerificationDto);
}
return result;
}
}

View File

@ -3,27 +3,18 @@ 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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
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.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -31,18 +22,17 @@ import java.util.List;
* 微信订单表Controller
*
* @author zcc
* @date 2023-07-12
* &#064;date 2023-07-12
*/
@Tag(name ="微信订单表接口列表")
@RestController
@RequestMapping("/pms/omsWechatPaymentHistory")
@RequiredArgsConstructor
public class WechatPaymentHistoryController extends BaseController {
@Autowired
private WechatPaymentHistoryServiceImpl service;
@Autowired
private WechatPaymentHistoryConvert convert;
@Autowired
private WechatPaymentHistoryService wechatPaymentHistoryService;
private final WechatPaymentHistoryServiceImpl service;
private final WechatPaymentHistoryConvert convert;
private final WechatPaymentHistoryService wechatPaymentHistoryService;
@Tag(name ="查询微信订单表列表")
@PostMapping("/list")
public R<IPage<WechatPaymentHistoryVO>> list(@RequestBody WechatPaymentHistoryBo query, Page<WechatPaymentHistory> page) {
@ -50,14 +40,13 @@ public class WechatPaymentHistoryController extends BaseController {
return R.ok(convert.toVO(list));
}
@Tag(name ="导出微信订单表列表")
@Log(title = "微信订单表", businessType = BusinessType.EXPORT)
@GetMapping("export")
public ResponseEntity<String> export(WechatPaymentHistoryBo query) {
@PostMapping("export")
public R<String> export(WechatPaymentHistoryBo query) {
List<WechatPaymentHistory> list = service.list(query.toWrapper());
ExcelUtil<WechatPaymentHistoryVO> util = new ExcelUtil<>(WechatPaymentHistoryVO.class);
return ResponseEntity.ok(util.writeExcel(convert.toVO(list), "微信订单表数据"));
return R.ok(util.writeExcel(convert.toVO(list), "微信订单表数据"));
}
@Tag(name ="获取微信订单表详细信息")

View File

@ -34,7 +34,7 @@ public class Order extends BaseAudit {
private Long payId;
@Schema(description = "租户id")
private String tenantId;
private Long tenantId;
@Schema(description = "订单编号")
@Excel(name = "订单编号")

View File

@ -37,7 +37,7 @@ public class OrderVO extends BaseAudit {
private Long memberId;
@Schema(description ="租户id")
private String tenantId;
private Long tenantId;
@Schema(description ="用户帐号")
@Excel(name = "用户帐号")

View File

@ -1,12 +1,9 @@
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.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

View File

@ -8,8 +8,6 @@ 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 com.wzj.soopin.order.domain.vo.OrderAndAftersaleStatisticsVO;
import com.wzj.soopin.order.domain.vo.OrderVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

View File

@ -1,17 +1,8 @@
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.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;

View File

@ -3,6 +3,7 @@ package com.wzj.soopin.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzj.soopin.order.domain.entity.OrderItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -20,4 +21,17 @@ public interface OrderItemMapper extends BaseMapper<OrderItem> {
* @return 订单中所包含的商品集合
*/
List<OrderItem> selectByEntity(OrderItem orderItem);
/**
* 根据订单ID查询商品名称
*
* @param orderId 订单ID
* @return 商品名称
*/
@Select("SELECT p.name " +
"FROM oms_order_item oi " +
"JOIN pms_product p ON oi.product_id = p.id " +
"WHERE oi.order_id = #{orderId} " +
"LIMIT 1")
String getName(Long orderId);
}

View File

@ -7,13 +7,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.entity.Order;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.system.domain.SystemStatistics;
import com.wzj.soopin.order.domain.form.ManagerOrderQueryForm;
import com.wzj.soopin.order.domain.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

View File

@ -1,13 +1,8 @@
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.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

View File

@ -3,12 +3,17 @@ package com.wzj.soopin.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wzj.soopin.order.domain.entity.VerificationCodes;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Mapper
public interface VerificationCodesMapper extends BaseMapper<VerificationCodes> {
LocalDateTime verificationTime(String code);
Map<String, Object> getProduvtNameAndMemberId(String code);
String getReason(String code);
}

View File

@ -1,12 +1,8 @@
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.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

View File

@ -8,4 +8,6 @@ import java.util.List;
public interface OrderItemService extends IService<OrderItem> {
List<OrderItem> findByOrderId(Long orderId);
}

View File

@ -1,15 +1,12 @@
package com.wzj.soopin.order.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.entity.Order;
import com.wzj.soopin.order.domain.vo.OrderVO;
import com.wzj.soopin.order.domain.vo.PageVO;
import java.util.Map;
public interface OrderService extends IService<Order> {

View File

@ -11,4 +11,8 @@ public interface VerificationCodeService extends IService<VerificationCodes> {
R generateVerificationCode(Long orderId);
R verifyCode(CodeVerificationDto codeVerificationDto);
void sendMessage(CodeVerificationDto codeVerificationDto);
void sendMessageNo(CodeVerificationDto codeVerificationDto);
}

View File

@ -1,21 +1,11 @@
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业务层处理

View File

@ -1,6 +1,5 @@
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;
@ -20,27 +19,24 @@ import com.wzj.soopin.member.mapper.MemberMapper;
import com.wzj.soopin.member.mapper.MemberWechatMapper;
import com.wzj.soopin.order.domain.bo.AftersaleBo;
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.RequiredArgsConstructor;
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业务层处理
@ -49,31 +45,22 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class AftersaleServiceImpl extends ServiceImpl<AftersaleMapper, Aftersale> implements AftersaleService {
@Autowired
private AftersaleMapper aftersaleMapper;
private final AftersaleMapper aftersaleMapper;
private final OrderMapper orderMapper;
private final OrderItemMapper orderItemMapper;
private final OrderOperateHistoryMapper orderOperateHistoryMapper;
private final MemberMapper memberMapper;
private final SkuMapper skuMapper;
private final WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
private final MemberWechatMapper memberWechatMapper;
private final OrderOperateHistoryMapper operateHistoryMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private OrderOperateHistoryMapper orderOperateHistoryMapper;
@Autowired
private MemberMapper memberMapper;
@Autowired
private SkuMapper skuMapper;
@Autowired
private WechatPaymentHistoryMapper wechatPaymentHistoryMapper;
@Autowired
private MemberWechatMapper memberWechatMapper;
@Autowired(required = false)
private WechatPayService wechatPayService;
@Autowired
private OrderOperateHistoryMapper operateHistoryMapper;
/**
* 查询订单售后
@ -307,7 +294,6 @@ public class AftersaleServiceImpl extends ServiceImpl<AftersaleMapper, Aftersale
/**
* 订单退款回调MQ
*
* @param weChatRefundNotify
*/
@Transactional
public void refundOrderExc(RefundNotification weChatRefundNotify) {
@ -392,8 +378,7 @@ public class AftersaleServiceImpl extends ServiceImpl<AftersaleMapper, Aftersale
}
public IPage<AftersaleVO> getlist(Page<Aftersale> page, AftersaleBo query) {
IPage<AftersaleVO> resultPage = aftersaleMapper.getlist(page,query);
return resultPage;
return aftersaleMapper.getlist(page,query);
}
}

View File

@ -1,22 +1,11 @@
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业务层处理

View File

@ -1,26 +1,12 @@
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;
/**

View File

@ -1,24 +1,12 @@
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业务层处理
*

View File

@ -8,14 +8,10 @@ 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.domain.entity.Sku;
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.member.mapper.*;
import com.wzj.soopin.order.convert.OrderConvert;
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.entity.Order;
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
@ -31,15 +27,20 @@ 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.service.VerificationCodeService;
import lombok.RequiredArgsConstructor;
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.utils.PhoneUtils;
import org.dromara.common.core.utils.SecurityUtils;
import org.dromara.system.domain.SysTenant;
import org.dromara.system.mapper.SysOperLogMapper;
import org.dromara.system.domain.bo.SysMessageBo;
import org.dromara.system.domain.vo.SysMessageTemplateVo;
import org.dromara.system.mapper.SysTenantMapper;
import org.dromara.system.service.ISysMessageTemplateService;
import org.dromara.system.service.impl.SysMessageServiceImpl;
import org.dromara.system.service.impl.SysMessageTemplateServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@ -56,6 +57,8 @@ import java.util.stream.Collectors;
* @author zcc
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
private final OrderMapper orderMapper;
private final OrderItemMapper orderItemMapper;
@ -65,19 +68,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private final OrderDeliveryHistoryMapper orderDeliveryHistoryMapper;
private final VerificationCodeService verificationCodeService;
private final SysTenantMapper sysTenantMapper;
public OrderServiceImpl(OrderMapper orderMapper, OrderItemMapper orderItemMapper, SkuMapper skuMapper,
OrderOperateHistoryMapper orderOperateHistoryMapper, MemberMapper memberMapper, OrderDeliveryHistoryMapper orderDeliveryHistoryMapper, VerificationCodeService verificationCodeService, SysTenantMapper sysTenantMapper) {
this.orderMapper = orderMapper;
this.orderItemMapper = orderItemMapper;
this.skuMapper = skuMapper;
this.orderOperateHistoryMapper = orderOperateHistoryMapper;
this.memberMapper = memberMapper;
this.orderDeliveryHistoryMapper = orderDeliveryHistoryMapper;
this.verificationCodeService = verificationCodeService;
this.sysTenantMapper = sysTenantMapper;
}
private final ISysMessageTemplateService templateService;
private final SysMessageServiceImpl sysMessageService;
/**
* 查询订单表
@ -525,28 +517,32 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
return resultPage;
}
// @Override
// public Map<String, Object> getCount() {
// Map<String, Object> result = new HashMap<>();
// result.put("MemberCount", memberMapper.countMember());
// result.put("storeCount", sysTenantMapper.countStore());
// result.put("productCount", productMapper.countProduct());
// result.put("orderCount", orderMapper.countOrder());
//
//
//
//// result.put("productAudit", productMapper.AuditProduct());
////
//// List<Map<String, Object>> incomeExpenseList = incomeExpenseMapper.getIncomeExpenseByMonth();
//// result.put("incomeExpense", incomeExpenseList);
//
// return result;
// }
@Override
public Order getByNo(String orderNo) {
return baseMapper.selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn,orderNo));
}
public void sendMessage(Order order) {
Long memberId = order.getMemberId();
Long orderId = order.getId();
// 订单创建成功模板ID
Long templateId =1940586928850100226L;
// 查询模板信息
SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
log.info("模板信息为: {}", template);
if (template != null) {
String content = template.getTemplateContent()
.replace("${orderSn}", order.getOrderSn())
.replace("${productName}", orderItemMapper.getName(orderId));
log.info("模板内容为: {}", content);
SysMessageBo messageBo = new SysMessageBo();
messageBo.setTitle(template.getTitle());
messageBo.setContent(content);
messageBo.setSenderId(memberId);
sysMessageService.sendMessageToUser(messageBo, memberId);
}
}
}

View File

@ -12,18 +12,26 @@ import com.wzj.soopin.order.mapper.VerificationLogsMapper;
import com.wzj.soopin.order.service.VerificationCodeService;
import com.wzj.soopin.order.utils.QrCodeGenerator;
import com.wzj.soopin.order.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import org.dromara.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.dromara.system.domain.bo.SysMessageBo;
import org.dromara.system.domain.vo.SysMessageTemplateVo;
import org.dromara.system.service.ISysMessageTemplateService;
import org.dromara.system.service.impl.SysMessageServiceImpl;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
/**
* @author fxh
*/
@Service
@Slf4j
@RequiredArgsConstructor
public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesMapper, VerificationCodes> implements VerificationCodeService{
@ -32,13 +40,8 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
private final OrderMapper orderMapper;
private final QrCodeGenerator qrCodeGenerator;
private final VerificationLogsMapper logMapper;
public VerificationCodeServiceImpl(VerificationCodesMapper codeMapper, OrderMapper orderMapper, QrCodeGenerator qrCodeGenerator, VerificationLogsMapper logMapper) {
this.codeMapper = codeMapper;
this.orderMapper = orderMapper;
this.qrCodeGenerator = qrCodeGenerator;
this.logMapper = logMapper;
}
private final ISysMessageTemplateService templateService;
private final SysMessageServiceImpl sysMessageService;
/**
* 生成核销码并关联订单
@ -69,30 +72,30 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
code.setOrderId(orderId);
code.setExpireTime(expireTime);
code.setCreateTime(LocalDateTime.now());
code.setStatus(0); // 未使用状态
// 未使用状态
code.setStatus(0);
int insertResult = codeMapper.insert(code);
if (insertResult != 1) {
return R.fail("核销码生成失败");
}
// 构建保存路径
String filePath = "qrcode/" + orderId + ".png";
String qrCodeUrl = qrCodeGenerator.generateQrCode(
"核销码:" + codeValue + ",订单ID:" + orderId,
200,
200,
filePath
);
// 打印生成后的二维码URL
log.info("生成的二维码URL: {}", qrCodeUrl);
if (qrCodeUrl == null) {
log.error("二维码生成失败");
}
// // 构建保存路径
// String filePath = "qrcode/" + orderId + ".png";
// String qrCodeUrl = qrCodeGenerator.generateQrCode(
// "核销码:" + codeValue + ",订单ID:" + orderId,
// 200,
// 200,
// filePath
// );
// // 打印生成后的二维码URL
// log.info("生成的二维码URL: {}", qrCodeUrl);
// if (qrCodeUrl == null) {
// log.error("二维码生成失败");
// }
// 将二维码URL保存到订单表中
order.setCodeUrl(qrCodeUrl);
// // 将二维码URL保存到订单表中
// order.setCodeUrl(qrCodeUrl);
orderMapper.updateById(order);
return R.ok("核销码生成成功", code);
}
@ -148,7 +151,7 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
VerificationLogs existingLog = logMapper.selectOne(
new LambdaQueryWrapper<VerificationLogs>()
.eq(VerificationLogs::getOrderId, code.getOrderId())
.eq(VerificationLogs::getResult, 1) // 只检查成功核销的记录
.eq(VerificationLogs::getResult, 1)
);
if (existingLog != null) {
@ -158,7 +161,7 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
}
// 执行核销
code.setStatus(1); // 已使用
code.setStatus(1);
code.setUsedTime(LocalDateTime.now());
code.setUsedMerchantId(usedMerchantId);
int result = codeMapper.updateById(code);
@ -169,7 +172,7 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
}
// 更新订单状态
order.setStatus(7); // 已核销
order.setStatus(7);
order.setUsedTime(LocalDateTime.now());
orderMapper.updateById(order);
@ -213,4 +216,65 @@ public class VerificationCodeServiceImpl extends ServiceImpl<VerificationCodesM
String uuid = java.util.UUID.randomUUID().toString().replaceAll("-", "");
return uuid.substring(0, 16).toUpperCase();
}
@Override
public void sendMessage(CodeVerificationDto codeVerificationDto) {
String code = codeVerificationDto.getCodeValue();
Map<String, Object> resultMap = codeMapper.getProduvtNameAndMemberId(code);
String productName = (String) resultMap.get("productName");
Long memberId = (Long) resultMap.get("memberId");
LocalDateTime verificationTime = codeMapper.verificationTime(code);
String formattedTime = verificationTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 核销成功模板ID
Long templateId = 1940678210012340225L;
// 查询模板信息
SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
log.info("模板信息为: {}", template);
if (template != null) {
String content = template.getTemplateContent()
.replace("${productName}", productName)
.replace("${verificationTime}",formattedTime);
log.info("模板内容为: {}", content);
SysMessageBo messageBo = new SysMessageBo();
messageBo.setTitle(template.getTitle());
messageBo.setContent(content);
messageBo.setSenderId(memberId);
sysMessageService.sendMessageToUser(messageBo, memberId);
}
}
@Override
public void sendMessageNo(CodeVerificationDto codeVerificationDto) {
String code = codeVerificationDto.getCodeValue();
Map<String, Object> resultMap = codeMapper.getProduvtNameAndMemberId(code);
String productName = (String) resultMap.get("productName");
Long memberId = (Long) resultMap.get("memberId");
String reason = codeMapper.getReason(code);
// 核销成功模板ID
Long templateId = 1940687666448195586L;
// 查询模板信息
SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
log.info("模板信息为: {}", template);
if (template != null) {
String content = template.getTemplateContent()
.replace("${productName}", productName)
.replace("${reason}",reason);
log.info("模板内容为: {}", content);
SysMessageBo messageBo = new SysMessageBo();
messageBo.setTitle(template.getTitle());
messageBo.setContent(content);
messageBo.setSenderId(memberId);
sysMessageService.sendMessageToUser(messageBo, memberId);
}
}
}

View File

@ -6,6 +6,9 @@ import com.wzj.soopin.order.mapper.VerificationLogsMapper;
import com.wzj.soopin.order.service.VerificationLogsService;
import org.springframework.stereotype.Service;
/**
* @author fengxiaohang
*/
@Service
public class VerificationLogsServiceImpl extends ServiceImpl<VerificationLogsMapper, VerificationLogs> implements VerificationLogsService {
}

View File

@ -1,22 +1,11 @@
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业务层处理

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzj.soopin.order.mapper.VerificationCodesMapper">
<select id="getProduvtNameAndMemberId" resultType="map">
SELECT
p.name AS productName,
vc.member_id AS memberId
FROM oms_verification_codes vc
JOIN oms_order_item oi ON vc.order_id = oi.order_id
JOIN pms_product p ON oi.product_id = p.id
WHERE vc.code = #{code}
LIMIT 1
</select>
<select id="verificationTime" resultType="java.time.LocalDateTime">
SELECT vlogs.verification_time
FROM oms_verification_codes vcodes
JOIN oms_verification_logs vlogs ON vcodes.order_id = vlogs.order_id
WHERE vcodes.code = #{code}
LIMIT 1
</select>
<select id="getReason" resultType="java.lang.String">
SELECT logs.reason
FROM oms_verification_codes codes
JOIN oms_verification_logs logs ON codes.order_id = logs.order_id
WHERE codes.code = #{code}
LIMIT 1
</select>
</mapper>

View File

@ -0,0 +1,57 @@
package org.dromara.system.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.system.domain.SysVersion;
import org.dromara.system.domain.bo.SysVersionBo;
import org.dromara.system.domain.vo.SysVersionVo;
import org.dromara.system.service.ISysVerisonService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author fxh
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/version")
public class SysVersionController {
private final ISysVerisonService sysVerisonService;
@Tag(name ="查询app版本管理")
@PostMapping("/list")
public R<IPage<SysVersionVo>> list(@RequestBody SysVersionBo query, Page<SysVersion> page){
return R.ok(sysVerisonService.getList(page,query));
}
@Tag(name = "新增app版本管理")
@Log(title = "新增app版本管理", businessType = BusinessType.INSERT)
@PostMapping("/add")
public R add(@RequestBody SysVersion sysVersion) {
return R.ok(sysVerisonService.save(sysVersion));
}
@Tag(name ="修改状态")
@Log(title = "修改状态", businessType = BusinessType.UPDATE)
@GetMapping("/update")
public R updateStatus( @RequestParam Long id,
@RequestParam Integer status) {
return R.ok(sysVerisonService.updateStatus(id,status));
}
@Tag(name ="删除版本管理")
@Log(title = "删除版本管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public R remove(@PathVariable Long id) {
return R.ok(sysVerisonService.removeById(id));
}
}

View File

@ -0,0 +1,37 @@
package org.dromara.system.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
@Data
@TableName("sys_version")
public class SysVersion extends BaseAudit {
@Schema(description = "id")
private Long id;
@Schema(description = "平台类型")
private String platformType;
@Schema(description = "版本号")
private String versionCode;
@Schema(description = "版本名称")
private String versionName;
@Schema(description = "下载地址")
private String downloadUrl;
@Schema(description = "是否强制更新0否、1是")
private Integer isForceUpdate;
@Schema(description = "版本说明")
private String releaseNotes;
@Schema(description = "状态0停用/1启用")
private Integer status;
}

View File

@ -0,0 +1,17 @@
package org.dromara.system.domain.bo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class SysVersionBo {
@Schema(description = "平台类型ios/android")
private String platformType;
@Schema(description = "版本号")
private String versionCode;
@Schema(description = "版本名称")
private String versionName;
}

View File

@ -0,0 +1,36 @@
package org.dromara.system.domain.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.dromara.common.core.domain.model.BaseAudit;
@Data
public class SysVersionVo extends BaseAudit {
@Schema(description = "id")
private Long id;
@Schema(description = "平台类型")
private String platformType;
@Schema(description = "版本号")
private String versionCode;
@Schema(description = "版本名称")
private String versionName;
@Schema(description = "下载地址")
private String downloadUrl;
@Schema(description = "是否强制更新0否、1是")
private Integer isForceUpdate;
@Schema(description = "版本说明")
private String releaseNotes;
@Schema(description = "状态0停用/1启用")
private Integer status;
}

View File

@ -0,0 +1,16 @@
package org.dromara.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.system.domain.SysVersion;
import org.dromara.system.domain.bo.SysVersionBo;
import org.dromara.system.domain.vo.SysVersionVo;
@Mapper
public interface SysVerisonMapper extends BaseMapper<SysVersion> {
IPage<SysVersionVo> getList(@Param("page") Page<SysVersion> page, @Param("query") SysVersionBo query);
}

View File

@ -0,0 +1,15 @@
package org.dromara.system.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.system.domain.SysVersion;
import org.dromara.system.domain.bo.SysVersionBo;
import org.dromara.system.domain.vo.SysVersionVo;
public interface ISysVerisonService extends IService<SysVersion> {
IPage<SysVersionVo> getList(Page<SysVersion> page, SysVersionBo query);
SysVersion updateStatus(Long id, Integer status);
}

View File

@ -0,0 +1,37 @@
package org.dromara.system.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.system.domain.SysVersion;
import org.dromara.system.domain.bo.SysVersionBo;
import org.dromara.system.domain.vo.SysVersionVo;
import org.dromara.system.mapper.SysVerisonMapper;
import org.dromara.system.service.ISysVerisonService;
import org.springframework.stereotype.Service;
@Slf4j
@RequiredArgsConstructor
@Service
public class SysVerisonServiceImpl extends ServiceImpl<SysVerisonMapper, SysVersion> implements ISysVerisonService {
private final SysVerisonMapper sysVerisonMapper;
@Override
public IPage<SysVersionVo> getList(Page<SysVersion> page, SysVersionBo query) {
return sysVerisonMapper.getList(page,query);
}
@Override
public SysVersion updateStatus(Long id, Integer status) {
SysVersion sysVersion = sysVerisonMapper.selectById(id);
if (sysVersion == null) {
throw new RuntimeException("版本不存在");
}
sysVersion.setStatus(status);
sysVerisonMapper.updateById(sysVersion);
return sysVersion;
}
}

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.system.mapper.SysVerisonMapper">
<select id="getList" resultType="org.dromara.system.domain.vo.SysVersionVo">
SELECT *
FROM sys_version v
<where>
<if test="query.versionName != null and query.versionName != ''">
v.version_name LIKE CONCAT('%', #{query.versionName}, '%')
</if>
<if test="query.versionCode != null and query.versionCode != ''">
AND v.version_code LIKE CONCAT('%', #{query.versionCode}, '%')
</if>
<if test="query.platformType != null and query.platformType != ''">
AND v.platform_type LIKE CONCAT('%', #{query.platformType}, '%')
</if>
</where>
ORDER BY v.version_code asc
</select>
</mapper>