Commit 38ec88a1 by 程裕兵

feat:cashier

parent ff44d57d
package com.jiejing.fitness.finance.api.cashier;
import com.jiejing.common.model.JsonResult;
import com.jiejing.common.model.PageVO;
import com.jiejing.fitness.finance.api.cashier.request.GetBrandCashierByIdRequest;
import com.jiejing.fitness.finance.api.cashier.request.ListBrandCashierByOrderNoRequest;
......@@ -21,14 +22,14 @@ public interface BrandCashierApi {
@ApiOperation(value = "分页筛选收银流水", tags = {TAG})
@PostMapping(value = "/private/brandCashier/page")
PageVO<BrandCashierRecordVO> page(PageBrandCashierRequest request);
JsonResult<PageVO<BrandCashierRecordVO>> page(PageBrandCashierRequest request);
@ApiOperation(value = "查询收银流水详情", tags = {TAG})
@PostMapping(value = "/private/brandCashier/getById")
BrandCashierRecordVO getById(GetBrandCashierByIdRequest request);
JsonResult<BrandCashierRecordVO> getById(GetBrandCashierByIdRequest request);
@ApiOperation(value = "根据订单号查询收银列表", tags = {TAG})
@PostMapping(value = "/private/brandCashier/getById")
List<BrandCashierRecordVO> listByOrderNo(ListBrandCashierByOrderNoRequest request);
JsonResult<List<BrandCashierRecordVO>> listByOrderNo(ListBrandCashierByOrderNoRequest request);
}
package com.jiejing.fitness.finance.api.cashier;
import com.jiejing.common.model.JsonResult;
import com.jiejing.common.model.PageVO;
import com.jiejing.fitness.finance.api.cashier.request.GetBrandCashierByIdRequest;
import com.jiejing.fitness.finance.api.cashier.request.ListBrandCashierByOrderNoRequest;
import com.jiejing.fitness.finance.api.cashier.request.PageBrandCashierRequest;
import com.jiejing.fitness.finance.api.cashier.vo.BrandCashierRecordVO;
import feign.hystrix.FallbackFactory;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
......@@ -14,6 +21,21 @@ public class BrandCashierApiFallback implements FallbackFactory<BrandCashierApi>
@Override
public BrandCashierApi create(Throwable throwable) {
return null;
return new BrandCashierApi() {
@Override
public JsonResult<PageVO<BrandCashierRecordVO>> page(PageBrandCashierRequest request) {
return JsonResult.rpcError();
}
@Override
public JsonResult<BrandCashierRecordVO> getById(GetBrandCashierByIdRequest request) {
return JsonResult.rpcError();
}
@Override
public JsonResult<List<BrandCashierRecordVO>> listByOrderNo(ListBrandCashierByOrderNoRequest request) {
return JsonResult.rpcError();
}
};
}
}
package com.jiejing.fitness.finance.app.controller.cashier;
import com.jiejing.common.model.JsonResult;
import com.jiejing.common.model.PageVO;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.finance.api.cashier.BrandCashierApi;
import com.jiejing.fitness.finance.api.cashier.request.GetBrandCashierByIdRequest;
import com.jiejing.fitness.finance.api.cashier.request.ListBrandCashierByOrderNoRequest;
import com.jiejing.fitness.finance.api.cashier.request.PageBrandCashierRequest;
import com.jiejing.fitness.finance.api.cashier.vo.BrandCashierRecordVO;
import com.jiejing.fitness.finance.service.cashier.BrandCashierService;
import com.jiejing.fitness.finance.service.cashier.params.PageBrandCashierParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author chengyubing
* @since 2024/2/29 10:41
*/
public class BrandCashierController {
@RestController
public class BrandCashierController implements BrandCashierApi {
@Resource
private BrandCashierService brandCashierService;
@ApiOperation(value = "分页筛选收银流水", tags = {TAG})
@PostMapping(value = "/private/brandCashier/page")
@Override
public JsonResult<PageVO<BrandCashierRecordVO>> page(PageBrandCashierRequest request) {
PageBrandCashierParams params = BeanUtil.map(request, PageBrandCashierParams.class);
return JsonResult.success(brandCashierService.page(params));
}
@ApiOperation(value = "查询收银流水详情", tags = {TAG})
@PostMapping(value = "/private/brandCashier/getById")
@Override
public JsonResult<BrandCashierRecordVO> getById(GetBrandCashierByIdRequest request) {
return JsonResult.success(brandCashierService.getById(request.getId()));
}
@ApiOperation(value = "根据订单号查询收银列表", tags = {TAG})
@PostMapping(value = "/private/brandCashier/getById")
@Override
public JsonResult<List<BrandCashierRecordVO>> listByOrderNo(ListBrandCashierByOrderNoRequest request) {
return JsonResult.success(brandCashierService.listByOrderNo(request.getOrderNo()));
}
}
package com.jiejing.fitness.finance.repository.query;
import com.jiejing.fitness.finance.api.enums.BrandCashierTransStateEnums;
import com.jiejing.fitness.finance.api.enums.BrandCashierTransTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.SubChannelEnums;
import java.util.Date;
import lombok.Data;
/**
* 品牌收银流水分页
*
* @author chengyubing
* @since 2024/2/29 11:12
*/
@Data
public class PageBrandCashierRecordQuery {
/**
* 场馆订单号
*/
private String orderNo;
/**
* 交易流水号
*/
private String transNo;
/**
* 三方交易单号
*/
private String thirdTransNo;
/**
* 场馆ID
*/
private String studioId;
/**
* 购买人姓名
*/
private String buyerName;
/**
* 交易状态
*/
private BrandCashierTransStateEnums transState;
/**
* 业务订单类型(来源)
*/
private Integer orderType;
/**
* 交易类型:PAY-收款;REFUND-退款;
*/
private BrandCashierTransTypeEnums transType;
/**
* 交易方式
*/
private SubChannelEnums subChannel;
/**
* 交易创建开始时间
*/
private Date createStartTime;
/**
* 交易创建结束时间
*/
private Date createEndTime;
/**
* 交易成功开始时间
*/
private Date successStartTime;
/**
* 交易成功结束时间
*/
private Date successEndTime;
/**
* 页码:0开始
*/
private Integer current;
/**
* 分页大小
*/
private Integer size;
}
......@@ -14,11 +14,15 @@
package com.jiejing.fitness.finance.repository.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jiejing.common.utils.text.StringUtil;
import com.jiejing.fitness.finance.repository.entity.BrandCashierRecord;
import com.jiejing.fitness.finance.repository.mapper.BrandCashierRecordMapper;
import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery;
import com.jiejing.mbp.MapperRepoService;
import java.math.BigDecimal;
import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
/**
......@@ -36,4 +40,53 @@ public class BrandCashierRecordRpService extends
return this.baseMapper.sumRefundActualAmountByPayTransNo(payTransNo);
}
public List<BrandCashierRecord> listByOrderNo(String orderNo) {
QueryWrapper<BrandCashierRecord> wrapper = new QueryWrapper<>();
wrapper.eq(BrandCashierRecord.ORDER_NO, orderNo);
return this.baseMapper.selectList(wrapper);
}
public Page<BrandCashierRecord> page(PageBrandCashierRecordQuery query) {
QueryWrapper<BrandCashierRecord> wrapper = new QueryWrapper<>();
if (StringUtil.isNotBlank(query.getOrderNo())) {
wrapper.eq(BrandCashierRecord.ORDER_NO, query.getOrderNo());
}
if (StringUtil.isNotBlank(query.getTransNo())) {
wrapper.eq(BrandCashierRecord.TRANS_NO, query.getTransNo());
}
if (StringUtil.isNotBlank(query.getThirdTransNo())) {
wrapper.eq(BrandCashierRecord.THIRD_TRANS_NO, query.getThirdTransNo());
}
if (null != query.getStudioId()) {
wrapper.eq(BrandCashierRecord.STUDIO_ID, query.getStudioId());
}
if (StringUtil.isNotBlank(query.getBuyerName())) {
wrapper.eq(BrandCashierRecord.BUYER_NAME, query.getBuyerName());
}
if (null != query.getTransState()) {
wrapper.eq(BrandCashierRecord.TRANS_STATE, query.getTransState());
}
if (null != query.getOrderType()) {
wrapper.eq(BrandCashierRecord.ORDER_TYPE, query.getOrderType());
}
if (null != query.getTransType()) {
wrapper.eq(BrandCashierRecord.TRANS_TYPE, query.getTransType());
}
if (null != query.getSubChannel()) {
wrapper.eq(BrandCashierRecord.SUB_CHANNEL, query.getSubChannel());
}
if (null != query.getCreateStartTime()) {
wrapper.ge(BrandCashierRecord.CREATE_TIME, query.getCreateStartTime());
}
if (null != query.getCreateEndTime()) {
wrapper.le(BrandCashierRecord.CREATE_TIME, query.getCreateEndTime());
}
if (null != query.getSuccessStartTime()) {
wrapper.ge(BrandCashierRecord.SUCCESS_TIME, query.getSuccessStartTime());
}
if (null != query.getSuccessEndTime()) {
wrapper.le(BrandCashierRecord.SUCCESS_TIME, query.getSuccessEndTime());
}
return this.findByWrapperPage(wrapper, query.getCurrent(), query.getSize());
}
}
package com.jiejing.fitness.finance.service.cashier;
import com.jiejing.common.model.PageVO;
import com.jiejing.fitness.finance.api.cashier.vo.BrandCashierRecordVO;
import com.jiejing.fitness.finance.service.cashier.params.PageBrandCashierParams;
import java.util.List;
/**
* @author chengyubing
* @since 2024/2/29 11:05
*/
public interface BrandCashierService {
/**
* 查询详情
*
* @param id ID
* @return 结果
*/
BrandCashierRecordVO getById(Long id);
/**
* 根据订单号查询列表
*
* @param orderNo 订单号
* @return 结果
*/
List<BrandCashierRecordVO> listByOrderNo(String orderNo);
/**
* 分页
*
* @param params 参数
* @return 结果
*/
PageVO<BrandCashierRecordVO> page(PageBrandCashierParams params);
}
package com.jiejing.fitness.finance.service.cashier.convert;
import com.google.common.collect.Lists;
import com.jiejing.common.model.PageVO;
import com.jiejing.common.utils.collection.CollectionUtil;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.finance.api.cashier.vo.BrandCashierRecordVO;
import com.jiejing.fitness.finance.repository.entity.BrandCashierRecord;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.data.domain.Page;
/**
* @author chengyubing
* @since 2024/2/29 11:09
*/
public class CashierConvert {
public static BrandCashierRecordVO convertVO(BrandCashierRecord record) {
return BeanUtil.map(record, BrandCashierRecordVO.class);
}
public static List<BrandCashierRecordVO> convertList(List<BrandCashierRecord> list) {
if (CollectionUtil.isEmpty(list)) {
return Lists.newArrayList();
}
return list.stream().map(CashierConvert::convertVO).collect(Collectors.toList());
}
public static PageVO<BrandCashierRecordVO> convertPageVO(Page<BrandCashierRecord> page) {
return PageVO.convert(page, convertList(page.getContent()));
}
}
package com.jiejing.fitness.finance.service.cashier.impl;
import com.jiejing.common.model.PageVO;
import com.jiejing.common.utils.convert.BeanUtil;
import com.jiejing.fitness.finance.api.cashier.vo.BrandCashierRecordVO;
import com.jiejing.fitness.finance.repository.entity.BrandCashierRecord;
import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery;
import com.jiejing.fitness.finance.repository.service.BrandCashierRecordRpService;
import com.jiejing.fitness.finance.service.cashier.BrandCashierService;
import com.jiejing.fitness.finance.service.cashier.convert.CashierConvert;
import com.jiejing.fitness.finance.service.cashier.params.PageBrandCashierParams;
import java.util.List;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
/**
* @author chengyubing
* @since 2024/2/29 11:08
*/
@Slf4j
@Service
public class BrandCashierServiceImpl implements BrandCashierService {
@Resource
private BrandCashierRecordRpService brandCashierRecordRpService;
@Override
public BrandCashierRecordVO getById(Long id) {
BrandCashierRecord record = brandCashierRecordRpService.getById(id).orElse(null);
if (null == record) {
return null;
}
return CashierConvert.convertVO(record);
}
@Override
public List<BrandCashierRecordVO> listByOrderNo(String orderNo) {
List<BrandCashierRecord> list = brandCashierRecordRpService.listByOrderNo(orderNo);
return CashierConvert.convertList(list);
}
@Override
public PageVO<BrandCashierRecordVO> page(PageBrandCashierParams params) {
PageBrandCashierRecordQuery query = BeanUtil.map(params, PageBrandCashierRecordQuery.class);
Page<BrandCashierRecord> page = brandCashierRecordRpService.page(query);
return CashierConvert.convertPageVO(page);
}
}
package com.jiejing.fitness.finance.service.cashier.params;
import com.jiejing.fitness.finance.api.enums.BrandCashierTransStateEnums;
import com.jiejing.fitness.finance.api.enums.BrandCashierTransTypeEnums;
import com.jiejing.paycenter.common.enums.merchant.SubChannelEnums;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chengyubing
* @since 2024/2/29 10:46
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "品牌收银流水分页Params")
public class PageBrandCashierParams {
@ApiModelProperty(value = "场馆订单号")
private String orderNo;
@ApiModelProperty(value = "交易流水号")
private String transNo;
@ApiModelProperty("三方交易单号")
private String thirdTransNo;
@ApiModelProperty(value = "场馆ID")
private String studioId;
@ApiModelProperty(value = "购买人姓名")
private String buyerName;
@ApiModelProperty("交易状态")
private BrandCashierTransStateEnums transState;
@ApiModelProperty("业务订单类型(来源)")
private Integer orderType;
@ApiModelProperty("交易类型:PAY-收款;REFUND-退款;")
private BrandCashierTransTypeEnums transType;
@ApiModelProperty("交易方式")
private SubChannelEnums subChannel;
@ApiModelProperty(value = "交易创建开始时间")
private Date createStartTime;
@ApiModelProperty(value = "交易创建结束时间")
private Date createEndTime;
@ApiModelProperty(value = "交易成功开始时间")
private Date successStartTime;
@ApiModelProperty(value = "交易成功结束时间")
private Date successEndTime;
@ApiModelProperty(value = "页码:0开始", required = true)
@NotNull(message = "页码不能为空")
private Integer current;
@ApiModelProperty(value = "分页大小", required = true)
@NotNull(message = "分页大小不能为空")
private Integer size;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment