Commit a7d669e3 by 程裕兵

feat:settle

parent 988a43aa
package com.jiejing.fitness.finance.api.cashier.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chengyubing
* @since 2024/4/7 18:00
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "场馆结算记录VO")
public class StudioSettleVO {
@ApiModelProperty(value = "主键")
private Long id;
@ApiModelProperty(value = "场馆ID")
private Long studioId;
@ApiModelProperty(value = "商户ID")
private Long merchantId;
@ApiModelProperty(value = "商户号")
private String merchantNo;
@ApiModelProperty(value = "状态")
private String transState;
@ApiModelProperty(value = "结算金额(元)")
private BigDecimal transAmount;
@ApiModelProperty(value = "结算银行卡号")
private String cardNo;
@ApiModelProperty(value = "结算银行")
private String bankName;
@ApiModelProperty(value = "结算日期")
private Date settleDate;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
......@@ -53,6 +53,11 @@ public class StudioSettleRecord implements Serializable {
private Long studioId;
/**
* 备注: 场馆名称 是否允许为null: YES
*/
private String studioName;
/**
* 备注: 商户ID 是否允许为null: YES
*/
private Long merchantId;
......@@ -109,6 +114,8 @@ public class StudioSettleRecord implements Serializable {
public static final String STUDIO_ID = "studio_id";
public static final String STUDIO_NAME = "studio_name";
public static final String MERCHANT_ID = "merchant_id";
public static final String MERCHANT_NO = "merchant_no";
......
......@@ -17,7 +17,7 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, studio_id, merchant_id, merchant_no, trans_state, trans_amount, card_no, bank_name, salt, settle_date, create_time, update_time
id, studio_id, studio_name, merchant_id, merchant_no, trans_state, trans_amount, card_no, bank_name, salt, settle_date, create_time, update_time
</sql>
</mapper>
package com.jiejing.fitness.finance.repository.query;
import com.jiejing.paycenter.common.enums.common.TransStateEnums;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 分页查询场馆结算记录参数
*
* @author chengyubing
* @since 2024/4/7 18:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PageStudioSettleQuery {
/**
* 场馆名称
*/
private String studioName;
/**
* 场馆ID
*/
private Long studioId;
/**
* 商户号
*/
private String merchantNo;
/**
* 结算状态
*/
private TransStateEnums transState;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 页码:0开始
*/
private Integer current;
/**
* 分页大小
*/
private Integer size;
}
......@@ -15,14 +15,18 @@
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.StudioSettleRecord;
import com.jiejing.fitness.finance.repository.mapper.StudioSettleRecordMapper;
import com.jiejing.fitness.finance.repository.query.PageStudioSettleQuery;
import com.jiejing.mbp.MapperRepoService;
import com.jiejing.paycenter.common.enums.common.TransStateEnums;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
/**
......@@ -46,4 +50,27 @@ public class StudioSettleRecordRpService extends
return Optional.ofNullable(list).orElse(new ArrayList<>()).stream().findFirst().orElse(null);
}
public Page<StudioSettleRecord> page(PageStudioSettleQuery query) {
QueryWrapper<StudioSettleRecord> wrapper = new QueryWrapper<>();
if (Objects.nonNull(query.getStudioId())) {
wrapper.eq(StudioSettleRecord.STUDIO_ID, query.getStudioId());
}
if (StringUtil.isNotBlank(query.getStudioName())) {
wrapper.like(StudioSettleRecord.STUDIO_NAME, query.getStudioName());
}
if (StringUtil.isNotBlank(query.getMerchantNo())) {
wrapper.like(StudioSettleRecord.MERCHANT_NO, query.getMerchantNo());
}
if (Objects.nonNull(query.getTransState())) {
wrapper.eq(StudioSettleRecord.TRANS_STATE, query.getTransState().getCode());
}
if (Objects.nonNull(query.getStartTime())) {
wrapper.ge(StudioSettleRecord.SETTLE_DATE, query.getStartTime());
}
if (Objects.nonNull(query.getEndTime())) {
wrapper.le(StudioSettleRecord.SETTLE_DATE, query.getEndTime());
}
wrapper.orderByDesc(StudioSettleRecord.ID);
return findByWrapperPage(wrapper, query.getCurrent(), query.getSize());
}
}
\ No newline at end of file
......@@ -2,7 +2,9 @@ package com.jiejing.fitness.finance.service.cashier;
import com.jiejing.common.model.PageVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioSettleParams;
import java.util.List;
/**
......@@ -36,11 +38,20 @@ public interface StudioCashierService {
List<StudioCashierRecordVO> listBySubOrderNo(String subOrderNo);
/**
* 分页
* 分页查询收银流水
*
* @param params 参数
* @return 结果
*/
PageVO<StudioCashierRecordVO> page(PageStudioCashierParams params);
/**
* 分页查询结算记录
*
* @param params 参数
* @return 结果
*/
PageVO<StudioSettleVO> page(PageStudioSettleParams params);
}
......@@ -3,8 +3,13 @@ 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.common.utils.crypt.AesUtil;
import com.jiejing.common.utils.text.SensitiveUtil;
import com.jiejing.fitness.finance.api.cashier.vo.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.entity.StudioSettleRecord;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.data.domain.Page;
......@@ -61,4 +66,20 @@ public class CashierConvert {
return PageVO.convert(page, convertList(page.getContent()));
}
public static PageVO<StudioSettleVO> convertSettlePageVO(Page<StudioSettleRecord> page) {
return PageVO.convert(page, convertSettleList(page.getContent()));
}
private static List<StudioSettleVO> convertSettleList(List<StudioSettleRecord> list) {
if (CollectionUtil.isEmpty(list)) {
return Lists.newArrayList();
}
return list.stream().map(CashierConvert::convertSettleVO).collect(Collectors.toList());
}
private static StudioSettleVO convertSettleVO(StudioSettleRecord record) {
StudioSettleVO vo = BeanUtil.map(record, StudioSettleVO.class);
vo.setCardNo(SensitiveUtil.bankCard(AesUtil.decrypt(record.getSalt(), record.getCardNo())));
return vo;
}
}
......@@ -3,12 +3,17 @@ 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.StudioCashierRecordVO;
import com.jiejing.fitness.finance.api.cashier.vo.StudioSettleVO;
import com.jiejing.fitness.finance.repository.entity.StudioCashierRecord;
import com.jiejing.fitness.finance.repository.entity.StudioSettleRecord;
import com.jiejing.fitness.finance.repository.query.PageBrandCashierRecordQuery;
import com.jiejing.fitness.finance.repository.query.PageStudioSettleQuery;
import com.jiejing.fitness.finance.repository.service.StudioCashierRecordRpService;
import com.jiejing.fitness.finance.repository.service.StudioSettleRecordRpService;
import com.jiejing.fitness.finance.service.cashier.StudioCashierService;
import com.jiejing.fitness.finance.service.cashier.convert.CashierConvert;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioCashierParams;
import com.jiejing.fitness.finance.service.cashier.params.PageStudioSettleParams;
import java.util.List;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
......@@ -26,6 +31,9 @@ public class StudioCashierServiceImpl implements StudioCashierService {
@Resource
private StudioCashierRecordRpService studioCashierRecordRpService;
@Resource
private StudioSettleRecordRpService studioSettleRecordRpService;
@Override
public StudioCashierRecordVO getById(Long id) {
StudioCashierRecord record = studioCashierRecordRpService.getById(id).orElse(null);
......@@ -53,4 +61,11 @@ public class StudioCashierServiceImpl implements StudioCashierService {
Page<StudioCashierRecord> page = studioCashierRecordRpService.page(query);
return CashierConvert.convertPageVO(page);
}
@Override
public PageVO<StudioSettleVO> page(PageStudioSettleParams params) {
PageStudioSettleQuery query = BeanUtil.map(params, PageStudioSettleQuery.class);
Page<StudioSettleRecord> page = studioSettleRecordRpService.page(query);
return CashierConvert.convertSettlePageVO(page);
}
}
package com.jiejing.fitness.finance.service.cashier.params;
import com.jiejing.paycenter.common.enums.common.TransStateEnums;
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/4/7 18:03
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "分页查询场馆结算记录参数")
public class PageStudioSettleParams {
@ApiModelProperty(value = "场馆名称")
private String studioName;
@ApiModelProperty(value = "场馆ID")
private Long studioId;
@ApiModelProperty(value = "商户号")
private String merchantNo;
@ApiModelProperty(value = "结算状态")
private TransStateEnums transState;
@ApiModelProperty(value = "开始时间")
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
@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