feat(用户余额): 新增用户余额交易记录功能
添加用户余额交易记录相关功能,包括实体类、Mapper、Service、Controller等组件 实现交易记录的增删改查及状态管理功能 移除数据库表中transaction_time字段及相关索引
This commit is contained in:
parent
27489e68eb
commit
1a6d627482
|
@ -0,0 +1,67 @@
|
|||
package com.agileboot.admin.controller.ab98.balance;
|
||||
|
||||
import com.agileboot.admin.customize.aop.accessLog.AccessLog;
|
||||
import com.agileboot.common.core.base.BaseController;
|
||||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.common.enums.common.BusinessTypeEnum;
|
||||
import com.agileboot.domain.ab98.balance.UserBalanceRecordApplicationService;
|
||||
import com.agileboot.domain.ab98.balance.command.AddUserBalanceRecordCommand;
|
||||
import com.agileboot.domain.ab98.balance.command.UpdateUserBalanceRecordCommand;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import com.agileboot.domain.ab98.balance.query.SearchUserBalanceRecordQuery;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import java.util.List;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/ab98/balance-records")
|
||||
@RequiredArgsConstructor
|
||||
@Validated
|
||||
public class UserBalanceRecordController extends BaseController {
|
||||
|
||||
private final UserBalanceRecordApplicationService userBalanceRecordApplicationService;
|
||||
|
||||
@Operation(summary = "余额记录列表")
|
||||
@GetMapping
|
||||
public ResponseDTO<PageDTO<UserBalanceRecordEntity>> list(SearchUserBalanceRecordQuery<UserBalanceRecordEntity> query) {
|
||||
PageDTO<UserBalanceRecordEntity> page = userBalanceRecordApplicationService.getUserBalanceRecordList(query);
|
||||
return ResponseDTO.ok(page);
|
||||
}
|
||||
|
||||
@Operation(summary = "新增余额记录")
|
||||
@AccessLog(title = "余额记录管理", businessType = BusinessTypeEnum.ADD)
|
||||
@PostMapping
|
||||
public ResponseDTO<Void> add(@Validated @RequestBody AddUserBalanceRecordCommand command) {
|
||||
userBalanceRecordApplicationService.addUserBalanceRecord(command);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "修改余额记录")
|
||||
@AccessLog(title = "余额记录管理", businessType = BusinessTypeEnum.MODIFY)
|
||||
@PutMapping("/{id}")
|
||||
public ResponseDTO<Void> edit(@PathVariable Long id, @Validated @RequestBody UpdateUserBalanceRecordCommand command) {
|
||||
command.setBalanceRecordId(id);
|
||||
userBalanceRecordApplicationService.updateUserBalanceRecord(command);
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "删除余额记录")
|
||||
@AccessLog(title = "余额记录管理", businessType = BusinessTypeEnum.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public ResponseDTO<Void> remove(@PathVariable @NotNull List<Long> ids) {
|
||||
userBalanceRecordApplicationService.deleteUserBalanceRecord(new BulkOperationCommand<>(ids));
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package com.agileboot.domain.ab98.balance;
|
||||
|
||||
import com.agileboot.common.core.page.PageDTO;
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.agileboot.domain.ab98.balance.command.AddUserBalanceRecordCommand;
|
||||
import com.agileboot.domain.ab98.balance.command.UpdateUserBalanceRecordCommand;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordService;
|
||||
import com.agileboot.domain.ab98.balance.model.UserBalanceRecordModel;
|
||||
import com.agileboot.domain.ab98.balance.model.UserBalanceRecordModelFactory;
|
||||
import com.agileboot.domain.common.command.BulkOperationCommand;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class UserBalanceRecordApplicationService {
|
||||
|
||||
private final UserBalanceRecordService userBalanceRecordService;
|
||||
private final UserBalanceRecordModelFactory userBalanceRecordModelFactory;
|
||||
|
||||
public PageDTO<UserBalanceRecordEntity> getUserBalanceRecordList(AbstractPageQuery<UserBalanceRecordEntity> query) {
|
||||
Page<UserBalanceRecordEntity> page = userBalanceRecordService.getUserBalanceRecordList(query);
|
||||
List<UserBalanceRecordEntity> records = page.getRecords();
|
||||
return new PageDTO<>(records, page.getTotal());
|
||||
}
|
||||
|
||||
public void addUserBalanceRecord(AddUserBalanceRecordCommand command) {
|
||||
UserBalanceRecordModel model = userBalanceRecordModelFactory.create();
|
||||
model.loadAddCommand(command);
|
||||
model.insert();
|
||||
}
|
||||
|
||||
public void updateUserBalanceRecord(UpdateUserBalanceRecordCommand command) {
|
||||
UserBalanceRecordModel model = userBalanceRecordModelFactory.loadById(command.getBalanceRecordId());
|
||||
model.loadUpdateCommand(command);
|
||||
model.updateById();
|
||||
}
|
||||
|
||||
public void deleteUserBalanceRecord(BulkOperationCommand<Long> command) {
|
||||
for (Long id : command.getIds()) {
|
||||
UserBalanceRecordModel model = userBalanceRecordModelFactory.loadById(id);
|
||||
model.deleteById();
|
||||
}
|
||||
}
|
||||
|
||||
public List<UserBalanceRecordEntity> selectAllSuccessRecords() {
|
||||
return userBalanceRecordService.selectAllSuccessRecords();
|
||||
}
|
||||
|
||||
public UserBalanceRecordEntity getFirstSuccessRecord() {
|
||||
return userBalanceRecordService.getFirstSuccessRecord();
|
||||
}
|
||||
|
||||
public UserBalanceRecordEntity getByAb98UserId(Long ab98UserId) {
|
||||
return userBalanceRecordService.getByAb98UserId(ab98UserId);
|
||||
}
|
||||
|
||||
public UserBalanceRecordEntity getByTradeId(String tradeId) {
|
||||
return userBalanceRecordService.getByTradeId(tradeId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.agileboot.domain.ab98.balance.command;
|
||||
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class AddUserBalanceRecordCommand extends UserBalanceRecordEntity {
|
||||
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package com.agileboot.domain.ab98.balance.command;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.PositiveOrZero;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class UpdateUserBalanceRecordCommand extends AddUserBalanceRecordCommand {
|
||||
|
||||
@NotNull
|
||||
@PositiveOrZero
|
||||
private Long balanceRecordId;
|
||||
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package com.agileboot.domain.ab98.balance.db;
|
||||
|
||||
import com.agileboot.common.core.base.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户余额交易记录表
|
||||
* </p>
|
||||
*
|
||||
* @author valarchie
|
||||
* @since 2025-07-07
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("user_balance_record")
|
||||
@ApiModel(value = "UserBalanceRecordEntity对象", description = "用户余额交易记录表")
|
||||
public class UserBalanceRecordEntity extends BaseEntity<UserBalanceRecordEntity> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("主键ID")
|
||||
@TableId(value = "balance_record_id", type = IdType.AUTO)
|
||||
private Long balanceRecordId;
|
||||
|
||||
@ApiModelProperty("汇邦云用户唯一ID")
|
||||
@TableField("ab98_user_id")
|
||||
private Long ab98UserId;
|
||||
|
||||
@ApiModelProperty("openid")
|
||||
@TableField("openid")
|
||||
private String openid;
|
||||
|
||||
@ApiModelProperty("交易类型(1充值 2消费 3退款)")
|
||||
@TableField("transaction_type")
|
||||
private Integer transactionType;
|
||||
|
||||
@ApiModelProperty("消费或退款时使用的充值id")
|
||||
@TableField("use_record_id")
|
||||
private Long useRecordId;
|
||||
|
||||
@ApiModelProperty("交易金额,单位分")
|
||||
@TableField("amount")
|
||||
private Integer amount;
|
||||
|
||||
@ApiModelProperty("交易状态(0未完成 1成功 2失败)")
|
||||
@TableField("`status`")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("支付网关交易id")
|
||||
@TableField("trade_id")
|
||||
private String tradeId;
|
||||
|
||||
@ApiModelProperty("业务系统订单ID(对接外部系统)")
|
||||
@TableField("biz_order_id")
|
||||
private String bizOrderId;
|
||||
|
||||
|
||||
@Override
|
||||
public Serializable pkVal() {
|
||||
return this.balanceRecordId;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.agileboot.domain.ab98.balance.db;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户余额交易记录表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author valarchie
|
||||
* @since 2025-07-07
|
||||
*/
|
||||
public interface UserBalanceRecordMapper extends BaseMapper<UserBalanceRecordEntity> {
|
||||
|
||||
@Select("SELECT balance_record_id, ab98_user_id, openid, transaction_type, use_record_id, amount, status, trade_id, biz_order_id, create_time, update_time " +
|
||||
"FROM user_balance_record " +
|
||||
"${ew.customSqlSegment}")
|
||||
Page<UserBalanceRecordEntity> getUserBalanceRecordList(
|
||||
Page<UserBalanceRecordEntity> page,
|
||||
@Param(Constants.WRAPPER) Wrapper<UserBalanceRecordEntity> queryWrapper
|
||||
);
|
||||
|
||||
@Select("SELECT * " +
|
||||
"FROM user_balance_record " +
|
||||
"WHERE status = 1 " +
|
||||
"ORDER BY create_time DESC " +
|
||||
"LIMIT 1")
|
||||
UserBalanceRecordEntity selectFirstSuccessRecord();
|
||||
|
||||
@Select("SELECT * " +
|
||||
"FROM user_balance_record " +
|
||||
"WHERE status = 1 " +
|
||||
"ORDER BY create_time DESC")
|
||||
List<UserBalanceRecordEntity> selectAllSuccessRecords();
|
||||
|
||||
@Select("SELECT * FROM user_balance_record WHERE ab98_user_id = #{ab98UserId} LIMIT 1")
|
||||
UserBalanceRecordEntity selectByAb98UserId(Long ab98UserId);
|
||||
|
||||
@Select("SELECT * FROM user_balance_record WHERE trade_id = #{tradeId} LIMIT 1")
|
||||
UserBalanceRecordEntity selectByTradeId(String tradeId);
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package com.agileboot.domain.ab98.balance.db;
|
||||
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户余额交易记录表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author valarchie
|
||||
* @since 2025-07-07
|
||||
*/
|
||||
public interface UserBalanceRecordService extends IService<UserBalanceRecordEntity> {
|
||||
|
||||
Page<UserBalanceRecordEntity> getUserBalanceRecordList(AbstractPageQuery<UserBalanceRecordEntity> query);
|
||||
|
||||
List<UserBalanceRecordEntity> selectAllSuccessRecords();
|
||||
|
||||
UserBalanceRecordEntity getFirstSuccessRecord();
|
||||
|
||||
UserBalanceRecordEntity getByAb98UserId(Long ab98UserId);
|
||||
|
||||
UserBalanceRecordEntity getByTradeId(String tradeId);
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.agileboot.domain.ab98.balance.db;
|
||||
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户余额交易记录表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author valarchie
|
||||
* @since 2025-07-07
|
||||
*/
|
||||
@Service
|
||||
public class UserBalanceRecordServiceImpl extends ServiceImpl<UserBalanceRecordMapper, UserBalanceRecordEntity> implements UserBalanceRecordService {
|
||||
|
||||
@Override
|
||||
public Page<UserBalanceRecordEntity> getUserBalanceRecordList(AbstractPageQuery<UserBalanceRecordEntity> query) {
|
||||
return baseMapper.getUserBalanceRecordList(query.toPage(), query.toQueryWrapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserBalanceRecordEntity> selectAllSuccessRecords() {
|
||||
return baseMapper.selectAllSuccessRecords();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserBalanceRecordEntity getFirstSuccessRecord() {
|
||||
return baseMapper.selectFirstSuccessRecord();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserBalanceRecordEntity getByAb98UserId(Long ab98UserId) {
|
||||
return baseMapper.selectByAb98UserId(ab98UserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserBalanceRecordEntity getByTradeId(String tradeId) {
|
||||
return baseMapper.selectByTradeId(tradeId);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
package com.agileboot.domain.ab98.balance.dto;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.agileboot.common.annotation.ExcelColumn;
|
||||
import com.agileboot.common.annotation.ExcelSheet;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ExcelSheet(name = "用户余额交易记录")
|
||||
@Data
|
||||
public class UserBalanceRecordDTO {
|
||||
|
||||
public UserBalanceRecordDTO(UserBalanceRecordEntity entity) {
|
||||
if (entity != null) {
|
||||
BeanUtil.copyProperties(entity, this);
|
||||
|
||||
// 交易类型转换
|
||||
if (entity.getTransactionType() != null) {
|
||||
switch (entity.getTransactionType()) {
|
||||
case 1:
|
||||
this.transactionTypeStr = "充值";
|
||||
break;
|
||||
case 2:
|
||||
this.transactionTypeStr = "消费";
|
||||
break;
|
||||
case 3:
|
||||
this.transactionTypeStr = "退款";
|
||||
break;
|
||||
default:
|
||||
this.transactionTypeStr = "未知";
|
||||
}
|
||||
}
|
||||
|
||||
// 交易状态转换
|
||||
if (entity.getStatus() != null) {
|
||||
switch (entity.getStatus()) {
|
||||
case 0:
|
||||
this.statusStr = "未完成";
|
||||
break;
|
||||
case 1:
|
||||
this.statusStr = "成功";
|
||||
break;
|
||||
case 2:
|
||||
this.statusStr = "失败";
|
||||
break;
|
||||
default:
|
||||
this.statusStr = "未知";
|
||||
}
|
||||
}
|
||||
|
||||
// 格式化创建时间
|
||||
if (entity.getCreateTime() != null) {
|
||||
this.createTimeStr = DateUtil.format(entity.getCreateTime(), "yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ExcelColumn(name = "主键ID")
|
||||
private Long balanceRecordId;
|
||||
|
||||
@ExcelColumn(name = "汇邦云用户唯一ID")
|
||||
private Long ab98UserId;
|
||||
|
||||
@ExcelColumn(name = "openid")
|
||||
private String openid;
|
||||
|
||||
@ExcelColumn(name = "交易类型")
|
||||
private String transactionTypeStr;
|
||||
|
||||
private Integer transactionType;
|
||||
|
||||
@ExcelColumn(name = "关联充值记录ID")
|
||||
private Long useRecordId;
|
||||
|
||||
@ExcelColumn(name = "交易金额(分)")
|
||||
private Integer amount;
|
||||
|
||||
@ExcelColumn(name = "交易状态")
|
||||
private String statusStr;
|
||||
|
||||
private Integer status;
|
||||
|
||||
@ExcelColumn(name = "支付网关交易ID")
|
||||
private String tradeId;
|
||||
|
||||
@ExcelColumn(name = "业务系统订单ID")
|
||||
private String bizOrderId;
|
||||
|
||||
@ExcelColumn(name = "创建时间")
|
||||
private String createTimeStr;
|
||||
|
||||
private Date createTime;
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.agileboot.domain.ab98.balance.model;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.agileboot.common.exception.ApiException;
|
||||
import com.agileboot.common.exception.error.ErrorCode;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordService;
|
||||
import com.agileboot.domain.ab98.balance.command.AddUserBalanceRecordCommand;
|
||||
import com.agileboot.domain.ab98.balance.command.UpdateUserBalanceRecordCommand;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class UserBalanceRecordModel extends UserBalanceRecordEntity {
|
||||
|
||||
private UserBalanceRecordService userBalanceRecordService;
|
||||
|
||||
public UserBalanceRecordModel(UserBalanceRecordEntity entity, UserBalanceRecordService userBalanceRecordService) {
|
||||
this(userBalanceRecordService);
|
||||
if (entity != null) {
|
||||
BeanUtil.copyProperties(entity, this);
|
||||
}
|
||||
}
|
||||
|
||||
public UserBalanceRecordModel(UserBalanceRecordService userBalanceRecordService) {
|
||||
this.userBalanceRecordService = userBalanceRecordService;
|
||||
}
|
||||
|
||||
public void loadAddCommand(AddUserBalanceRecordCommand command) {
|
||||
if (command != null) {
|
||||
BeanUtil.copyProperties(command, this, "balanceRecordId");
|
||||
}
|
||||
}
|
||||
|
||||
public void loadUpdateCommand(UpdateUserBalanceRecordCommand command) {
|
||||
if (command != null) {
|
||||
loadAddCommand(command);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.agileboot.domain.ab98.balance.model;
|
||||
|
||||
import com.agileboot.common.exception.ApiException;
|
||||
import com.agileboot.common.exception.error.ErrorCode;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class UserBalanceRecordModelFactory {
|
||||
|
||||
private final UserBalanceRecordService userBalanceRecordService;
|
||||
|
||||
public UserBalanceRecordModel loadById(Long balanceRecordId) {
|
||||
UserBalanceRecordEntity entity = userBalanceRecordService.getById(balanceRecordId);
|
||||
if (entity == null) {
|
||||
throw new ApiException(ErrorCode.Business.COMMON_OBJECT_NOT_FOUND, balanceRecordId, "用户余额交易记录");
|
||||
}
|
||||
return new UserBalanceRecordModel(entity, userBalanceRecordService);
|
||||
}
|
||||
|
||||
public UserBalanceRecordModel create() {
|
||||
return new UserBalanceRecordModel(userBalanceRecordService);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.agileboot.domain.ab98.balance.query;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.agileboot.domain.ab98.balance.db.UserBalanceRecordEntity;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SearchUserBalanceRecordQuery<T> extends AbstractPageQuery<T> {
|
||||
|
||||
private Long ab98UserId;
|
||||
private String openid;
|
||||
private Integer transactionType;
|
||||
private Integer status;
|
||||
private String tradeId;
|
||||
private String bizOrderId;
|
||||
private Date startTime;
|
||||
private Date endTime;
|
||||
|
||||
@Override
|
||||
public QueryWrapper<T> addQueryCondition() {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
queryWrapper
|
||||
.eq(ab98UserId != null, "ab98_user_id", ab98UserId)
|
||||
.like(StrUtil.isNotEmpty(openid), "openid", openid)
|
||||
.eq(transactionType != null, "transaction_type", transactionType)
|
||||
.eq(status != null, "status", status)
|
||||
.like(StrUtil.isNotEmpty(tradeId), "trade_id", tradeId)
|
||||
.like(StrUtil.isNotEmpty(bizOrderId), "biz_order_id", bizOrderId)
|
||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime);
|
||||
|
||||
this.timeRangeColumn = "create_time";
|
||||
|
||||
return queryWrapper;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<?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.agileboot.domain.ab98.balance.db.UserBalanceRecordMapper">
|
||||
|
||||
</mapper>
|
|
@ -61,7 +61,7 @@ public class CodeGenerator {
|
|||
//生成的类 放在orm子模块下的/target/generated-code目录底下
|
||||
.module("/agileboot-orm/target/generated-code")
|
||||
.parentPackage("com.agileboot")
|
||||
.tableName("approval_goods_cell")
|
||||
.tableName("user_balance_record")
|
||||
// 决定是否继承基类
|
||||
.isExtendsFromBaseEntity(true)
|
||||
.build();
|
||||
|
|
|
@ -8,13 +8,11 @@ CREATE TABLE `user_balance_record` (
|
|||
`status` tinyint NOT NULL DEFAULT 0 COMMENT '交易状态(0未完成 1成功 2失败)',
|
||||
`trade_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '支付网关交易id',
|
||||
`biz_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '业务系统订单ID(对接外部系统)',
|
||||
`transaction_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '交易时间',
|
||||
`creator_id` bigint DEFAULT 0 COMMENT '创建者ID',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater_id` bigint DEFAULT 0 COMMENT '更新者ID',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
PRIMARY KEY (`balance_record_id`),
|
||||
KEY `idx_ab98_user_id` (`ab98_user_id`),
|
||||
KEY `idx_transaction_time` (`transaction_time`)
|
||||
KEY `idx_ab98_user_id` (`ab98_user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户余额交易记录表';
|
Loading…
Reference in New Issue