From 5c37cb652606ad7703add4602c75b809cfd46f0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?LI-CCONG=5C=E6=9D=8E=E8=81=AA=E8=81=AA?= <1441652193@qq.com>
Date: Thu, 7 Mar 2024 18:15:46 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=A3=E6=88=B7=E4=BD=99=E9=A2=9D=E6=B5=81?=
=?UTF-8?q?=E6=B0=B4=E6=98=8E=E7=BB=86=E5=8A=9F=E8=83=BD=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../common/domain/LambdaQueryWrapperX.java | 140 ++++++++++++++++++
.../cc/yunxi/common/domain/PageQuery.java | 26 ++--
.../cc/yunxi/controller/ClientController.java | 18 ++-
.../yunxi/domain/po/ClientAccountDetail.java | 59 ++++++++
.../domain/query/ClientAccountQuery.java | 26 ++++
.../domain/vo/client/ClientAccountRespVO.java | 42 ++++++
.../yunxi/domain/vo/client/ClientRespVO.java | 14 +-
.../cc/yunxi/enums/BalanceChangeTypeEnum.java | 28 ++++
...equestReaderHttpServletRequestWrapper.java | 2 +-
.../yunxi/interceptor/StatsInterceptor.java | 2 +-
.../mapper/ClientAccountDetailMapper.java | 18 +++
.../java/cc/yunxi/service/IClientService.java | 14 +-
.../yunxi/service/impl/ClientServiceImpl.java | 26 +++-
.../mapper/ClientAccountDetailMapper.xml | 5 +
.../java/cc/yunxi/NxhsApplicationTest.java | 10 +-
15 files changed, 401 insertions(+), 29 deletions(-)
create mode 100644 nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaQueryWrapperX.java
create mode 100644 nxhs-service/src/main/java/cc/yunxi/domain/po/ClientAccountDetail.java
create mode 100644 nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java
create mode 100644 nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientAccountRespVO.java
create mode 100644 nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java
create mode 100644 nxhs-service/src/main/java/cc/yunxi/mapper/ClientAccountDetailMapper.java
create mode 100644 nxhs-service/src/main/resources/mapper/ClientAccountDetailMapper.xml
diff --git a/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaQueryWrapperX.java b/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaQueryWrapperX.java
new file mode 100644
index 0000000..efaf3c3
--- /dev/null
+++ b/nxhs-common/src/main/java/cc/yunxi/common/domain/LambdaQueryWrapperX.java
@@ -0,0 +1,140 @@
+package cc.yunxi.common.domain;
+
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import org.springframework.util.StringUtils;
+
+import java.util.Collection;
+
+/**
+ * 拓展 MyBatis Plus QueryWrapper 类,主要增加如下功能:
+ *
+ * 1. 拼接条件的方法,增加 xxxIfPresent 方法,用于判断值不存在的时候,不要拼接到条件中。
+ *
+ * @param 数据类型
+ */
+public class LambdaQueryWrapperX extends LambdaQueryWrapper {
+
+ public LambdaQueryWrapperX likeIfPresent(SFunction column, String val) {
+ if (StringUtils.hasText(val)) {
+ return (LambdaQueryWrapperX) super.like(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX inIfPresent(SFunction column, Collection> values) {
+ if (ObjectUtil.isAllNotEmpty(values) && !ArrayUtil.isEmpty(values)) {
+ return (LambdaQueryWrapperX) super.in(column, values);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX inIfPresent(SFunction column, Object... values) {
+ if (ObjectUtil.isAllNotEmpty(values) && !ArrayUtil.isEmpty(values)) {
+ return (LambdaQueryWrapperX) super.in(column, values);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX eqIfPresent(SFunction column, Object val) {
+ if (ObjectUtil.isNotEmpty(val)) {
+ return (LambdaQueryWrapperX) super.eq(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX neIfPresent(SFunction column, Object val) {
+ if (ObjectUtil.isNotEmpty(val)) {
+ return (LambdaQueryWrapperX) super.ne(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX gtIfPresent(SFunction column, Object val) {
+ if (val != null) {
+ return (LambdaQueryWrapperX) super.gt(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX geIfPresent(SFunction column, Object val) {
+ if (val != null) {
+ return (LambdaQueryWrapperX) super.ge(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX ltIfPresent(SFunction column, Object val) {
+ if (val != null) {
+ return (LambdaQueryWrapperX) super.lt(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX leIfPresent(SFunction column, Object val) {
+ if (val != null) {
+ return (LambdaQueryWrapperX) super.le(column, val);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX betweenIfPresent(SFunction column, Object val1, Object val2) {
+ if (val1 != null && val2 != null) {
+ return (LambdaQueryWrapperX) super.between(column, val1, val2);
+ }
+ if (val1 != null) {
+ return (LambdaQueryWrapperX) ge(column, val1);
+ }
+ if (val2 != null) {
+ return (LambdaQueryWrapperX) le(column, val2);
+ }
+ return this;
+ }
+
+ public LambdaQueryWrapperX betweenIfPresent(SFunction column, Object[] values) {
+ Object val1 = ArrayUtil.get(values, 0);
+ Object val2 = ArrayUtil.get(values, 1);
+ return betweenIfPresent(column, val1, val2);
+ }
+
+ // ========== 重写父类方法,方便链式调用 ==========
+
+ @Override
+ public LambdaQueryWrapperX eq(boolean condition, SFunction column, Object val) {
+ super.eq(condition, column, val);
+ return this;
+ }
+
+ @Override
+ public LambdaQueryWrapperX eq(SFunction column, Object val) {
+ super.eq(column, val);
+ return this;
+ }
+
+
+ @Override
+ public LambdaQueryWrapperX last(String lastSql) {
+ super.last(lastSql);
+ return this;
+ }
+
+ @Override
+ public LambdaQueryWrapperX in(SFunction column, Collection> coll) {
+ super.in(column, coll);
+ return this;
+ }
+
+
+ public LambdaQueryWrapperX orderByDesc(SFunction column) {
+ super.orderByDesc(true, column);
+ return this;
+ }
+
+ public LambdaQueryWrapperX orderByAsc(SFunction column) {
+ super.orderByAsc(true, column);
+ return this;
+ }
+
+}
\ No newline at end of file
diff --git a/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java b/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java
index cb912c5..a54dbc1 100644
--- a/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java
+++ b/nxhs-common/src/main/java/cc/yunxi/common/domain/PageQuery.java
@@ -28,11 +28,11 @@ import java.util.stream.Collectors;
public class PageQuery {
public static final Integer DEFAULT_PAGE_SIZE = 20;
public static final Integer DEFAULT_PAGE_NUM = 1;
- @ApiModelProperty(value = "页码", required = false, example = "1")
+ @ApiModelProperty(value = "页码", required = false, example = "1")
@Min(value = 1, message = "页码不能小于1")
private Integer pageNo = DEFAULT_PAGE_NUM;
- @ApiModelProperty(value = "每页个数", required = false, example = "10")
+ @ApiModelProperty(value = "每页个数", required = false, example = "10")
@Min(value = 1, message = "每页查询数量不能小于1")
private Integer pageSize = DEFAULT_PAGE_SIZE;
@@ -40,7 +40,12 @@ public class PageQuery {
private LinkedHashSet sortingFields;
- // 构建分页
+ // 忽略构建排序
+ public Page getPage() {
+ return Page.of(pageNo, pageSize);
+ }
+
+ // 构建分页排序
public Page buildPage(Class> clazz, OrderItem... orderItems) {
Page page = Page.of(pageNo, pageSize);
// 前端排序规则
@@ -60,8 +65,8 @@ public class PageQuery {
}).map(sortingField -> {
String column = StringUtils.camelToUnderline(sortingField.getField());
return SortingField.ORDER_ASC.equals(sortingField.getOrder()) ?
- OrderItem.asc(column) :
- OrderItem.desc(column);
+ OrderItem.asc(column) :
+ OrderItem.desc(column);
}).collect(Collectors.toList());
page.addOrder(orderItemList);
}
@@ -83,11 +88,12 @@ public class PageQuery {
public Page buildPageByDefaultOrder(SFunction defaultSortByFuc, boolean isAsc) {
OrderItem orderItem = new OrderItem();
- orderItem.setAsc(isAsc);
- String column = StringUtils.camelToUnderline(LambdaUtil.getFieldName(defaultSortByFuc));
- orderItem.setColumn(column);
Class> clazz = LambdaUtil.getClazz(defaultSortByFuc);
- return buildPage(clazz,orderItem);
+ String fieldName = LambdaUtil.getFieldName(defaultSortByFuc);
+ String column = StringUtils.camelToUnderline(fieldName); // @TableField重命名问题 todo
+ orderItem.setColumn(column);
+ orderItem.setAsc(isAsc);
+ return buildPage(clazz, orderItem);
}
@@ -113,7 +119,7 @@ public class PageQuery {
/**
* 顺序
*/
- @ApiModelProperty(value = "是否升序", required = true, allowableValues = "asc,desc")
+ @ApiModelProperty(value = "是否升序", required = true, allowableValues = "asc,desc", example = "asc")
private String order;
diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/ClientController.java b/nxhs-service/src/main/java/cc/yunxi/controller/ClientController.java
index 6902c36..fd446b5 100644
--- a/nxhs-service/src/main/java/cc/yunxi/controller/ClientController.java
+++ b/nxhs-service/src/main/java/cc/yunxi/controller/ClientController.java
@@ -1,14 +1,19 @@
package cc.yunxi.controller;
+import cc.yunxi.aspect.UserTypeAnnotation;
import cc.yunxi.common.domain.CommonResult;
import cc.yunxi.common.domain.PageDTO;
import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.domain.dto.UserDTO;
import cc.yunxi.domain.po.Client;
+import cc.yunxi.domain.po.ClientAccountDetail;
+import cc.yunxi.domain.query.ClientAccountQuery;
import cc.yunxi.domain.query.ClientQuery;
+import cc.yunxi.domain.vo.client.ClientAccountRespVO;
import cc.yunxi.domain.vo.client.ClientRespVO;
import cc.yunxi.domain.vo.client.ClientUpdateVO;
+import cc.yunxi.enums.UserTypeEnum;
import cc.yunxi.service.IClientService;
import cc.yunxi.utils.UserContext;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -29,6 +34,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/client")
@RequiredArgsConstructor
+@UserTypeAnnotation(UserTypeEnum.CLIENT)
public class ClientController {
private final IClientService clientService;
@@ -37,7 +43,7 @@ public class ClientController {
@PostMapping("/page")
public CommonResult> queryClientByPage(@RequestBody ClientQuery clientQuery) {
// 1.分页查询
- Page result = clientService.queryByPage(clientQuery);
+ Page result = clientService.queryClientByPage(clientQuery);
// 2.封装并返回
PageDTO clientPageVO = PageDTO.of(result, ClientRespVO.class);
return CommonResult.success(clientPageVO);
@@ -64,4 +70,14 @@ public class ClientController {
}
+ @ApiOperation("账户流水明细")
+ @PostMapping("/account-statement")
+ public CommonResult> myAccountStatement(@RequestBody ClientAccountQuery clientAccountQuery) {
+ UserDTO userDTO = UserContext.getUser();
+ clientAccountQuery.setClientId(userDTO.getId());
+ Page result = clientService.queryAccountStatementByPage(clientAccountQuery);
+ PageDTO clientAccountRespVO = PageDTO.of(result, ClientAccountRespVO.class);
+ return CommonResult.success(clientAccountRespVO);
+ }
+
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/ClientAccountDetail.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/ClientAccountDetail.java
new file mode 100644
index 0000000..e611f79
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/ClientAccountDetail.java
@@ -0,0 +1,59 @@
+package cc.yunxi.domain.po;
+
+import cc.yunxi.enums.BalanceChangeTypeEnum;
+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.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 散户-账户变动明细
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-07 04:03:37
+ */
+@Data
+@TableName("nx_client_account_detail")
+@ApiModel(value = "ClientAccountDetail", description = "散户-账户变动明细")
+public class ClientAccountDetail {
+
+ @ApiModelProperty("主键id")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("散户id")
+ @TableField("client_id")
+ private String clientId;
+
+ @ApiModelProperty("变更类型")
+ @TableField("change_type")
+ private BalanceChangeTypeEnum changeType;
+
+ @ApiModelProperty("金额")
+ @TableField("amount")
+ private BigDecimal amount;
+
+ @ApiModelProperty("账户余额")
+ @TableField("banlance")
+ private BigDecimal banlance;
+
+ @ApiModelProperty("备注")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("创建时间")
+ @TableField("f_creator_time")
+ private LocalDateTime creatorTime;
+
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java
new file mode 100644
index 0000000..72c5de2
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/query/ClientAccountQuery.java
@@ -0,0 +1,26 @@
+package cc.yunxi.domain.query;
+
+import cc.yunxi.common.domain.PageQuery;
+import cc.yunxi.enums.BalanceChangeTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.LocalDateTime;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "ClientAccountQuery", description = "散户余额明细查询条件")
+public class ClientAccountQuery extends PageQuery {
+
+ @ApiModelProperty(value = "散户ID", hidden = true, example = "1763507031581421570")
+ private String clientId;
+
+ @ApiModelProperty(value = "变更类型", required = false, example = "INCOME")
+ private BalanceChangeTypeEnum changeType;
+
+ @ApiModelProperty(value = "时间范围", required = false, example = "[\"2024-03-08 00:00:00\", \"2024-03-09 00:00:00\"]")
+ private LocalDateTime[] dateRange;
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientAccountRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientAccountRespVO.java
new file mode 100644
index 0000000..edb1f25
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientAccountRespVO.java
@@ -0,0 +1,42 @@
+package cc.yunxi.domain.vo.client;
+
+import cc.yunxi.enums.BalanceChangeTypeEnum;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ *
+ * 散户信息VO
+ *
+ *
+ * @author ccongli
+ * @since 2024-02-28 16:08:09
+ */
+@Data
+@ApiModel(description = "散户账户明细 Response VO")
+public class ClientAccountRespVO {
+
+ @ApiModelProperty("余额变更类型")
+ private BalanceChangeTypeEnum changeType;
+
+ @ApiModelProperty("变更金额")
+ private BigDecimal amount;
+
+ @ApiModelProperty("账户余额")
+ private BigDecimal banlance;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime creatorTime;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientRespVO.java
index e27cea8..cc44689 100644
--- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientRespVO.java
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/client/ClientRespVO.java
@@ -48,14 +48,14 @@ public class ClientRespVO {
@ApiModelProperty("账户余额")
private BigDecimal banlance;
- @ApiModelProperty("会员码")
- private String membershipNumber;
-
- @ApiModelProperty("会员积分")
+// @ApiModelProperty("会员码")
+// private String membershipNumber;
+//
+ @ApiModelProperty("积分")
private Integer membershipPoint;
-
- @ApiModelProperty("会员等级")
- private Integer membershipLevel;
+//
+// @ApiModelProperty("会员等级")
+// private Integer membershipLevel;
@ApiModelProperty("发票抬头")
private String taxTitle;
diff --git a/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java b/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java
new file mode 100644
index 0000000..793ae0f
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java
@@ -0,0 +1,28 @@
+package cc.yunxi.enums;
+
+import cc.yunxi.common.enums.BaseEnum;
+import cc.yunxi.common.enums.SwaggerDisplayEnum;
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 余额变更类型枚举
+ */
+@Getter
+@AllArgsConstructor
+@SwaggerDisplayEnum
+public enum BalanceChangeTypeEnum implements BaseEnum {
+
+ INCOME("1", "收入"),
+
+ CASH_OUT("2", "提现"),
+
+ EXPEND("3", "消费");
+
+ @EnumValue
+ private final String code;
+
+ private final String desc;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/filter/RequestReaderHttpServletRequestWrapper.java b/nxhs-service/src/main/java/cc/yunxi/filter/RequestReaderHttpServletRequestWrapper.java
index 482d9c0..b01280c 100644
--- a/nxhs-service/src/main/java/cc/yunxi/filter/RequestReaderHttpServletRequestWrapper.java
+++ b/nxhs-service/src/main/java/cc/yunxi/filter/RequestReaderHttpServletRequestWrapper.java
@@ -27,7 +27,7 @@ public class RequestReaderHttpServletRequestWrapper extends HttpServletRequestWr
private Collection requestParts;
- public RequestReaderHttpServletRequestWrapper(HttpServletRequest request) {
+ public RequestReaderHttpServletRequestWrapper(HttpServletRequest request) { // RequestFacade
super(request);
//缓存请求body或parts
try {
diff --git a/nxhs-service/src/main/java/cc/yunxi/interceptor/StatsInterceptor.java b/nxhs-service/src/main/java/cc/yunxi/interceptor/StatsInterceptor.java
index b2f91b0..e9c7ae1 100644
--- a/nxhs-service/src/main/java/cc/yunxi/interceptor/StatsInterceptor.java
+++ b/nxhs-service/src/main/java/cc/yunxi/interceptor/StatsInterceptor.java
@@ -28,7 +28,7 @@ public class StatsInterceptor implements HandlerInterceptor {
String requestURI = request.getRequestURI();
String method = request.getMethod();
String contentType = request.getContentType();
- String data = "不支持其他复杂请求数据读取!";
+ String data = "其他复杂请求数据不记录!";
if(HttpMethod.POST.name().equals(method) && !contentType.equals(MediaType.MULTIPART_FORM_DATA_VALUE)) {
if (contentType.equals(MediaType.APPLICATION_JSON_VALUE)) {
data = WebUtils.getRequestPostStr(request);
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/ClientAccountDetailMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/ClientAccountDetailMapper.java
new file mode 100644
index 0000000..11d2537
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/mapper/ClientAccountDetailMapper.java
@@ -0,0 +1,18 @@
+package cc.yunxi.mapper;
+
+import cc.yunxi.domain.po.ClientAccountDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 散户-账户变动明细 Mapper 接口
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-07 04:03:37
+ */
+@Mapper
+public interface ClientAccountDetailMapper extends BaseMapper {
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java
index 160c0cd..18ffde1 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java
@@ -1,7 +1,9 @@
package cc.yunxi.service;
import cc.yunxi.domain.po.Client;
+import cc.yunxi.domain.po.ClientAccountDetail;
import cc.yunxi.domain.po.Recycler;
+import cc.yunxi.domain.query.ClientAccountQuery;
import cc.yunxi.domain.query.ClientQuery;
import cc.yunxi.domain.query.RecyclerQuery;
import cc.yunxi.domain.vo.client.ClientUpdateVO;
@@ -21,11 +23,11 @@ import javax.validation.Valid;
public interface IClientService extends IService {
/**
- * 分页查询
+ * 分页查询散户
* @param clientQuery
* @return Page
*/
- Page queryByPage(ClientQuery clientQuery);
+ Page queryClientByPage(ClientQuery clientQuery);
/**
* 根据id获取散户信息
@@ -58,4 +60,12 @@ public interface IClientService extends IService {
*/
void updateClient(ClientUpdateVO clientUpdateVO);
+
+ /**
+ * 分页查询散户余额流水
+ * @param clientAccountQuery
+ * @return Page
+ */
+ Page queryAccountStatementByPage(ClientAccountQuery clientAccountQuery);
+
}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java
index 45a27bc..b1fe9c0 100644
--- a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java
@@ -1,15 +1,19 @@
package cc.yunxi.service.impl;
+import cc.yunxi.common.domain.LambdaQueryWrapperX;
import cc.yunxi.common.exception.BizIllegalException;
import cc.yunxi.common.exception.DbException;
import cc.yunxi.common.utils.BeanUtils;
import cc.yunxi.domain.dto.UserDTO;
import cc.yunxi.domain.po.Client;
+import cc.yunxi.domain.po.ClientAccountDetail;
import cc.yunxi.domain.po.RecycleOrder;
import cc.yunxi.domain.po.Recycler;
+import cc.yunxi.domain.query.ClientAccountQuery;
import cc.yunxi.domain.query.ClientQuery;
import cc.yunxi.domain.query.RecyclerQuery;
import cc.yunxi.domain.vo.client.ClientUpdateVO;
+import cc.yunxi.mapper.ClientAccountDetailMapper;
import cc.yunxi.mapper.ClientMapper;
import cc.yunxi.mapper.RecyclerMapper;
import cc.yunxi.service.IClientService;
@@ -19,6 +23,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -35,14 +40,17 @@ import javax.annotation.Resource;
@Service
public class ClientServiceImpl extends ServiceImpl implements IClientService {
+ @Autowired
+ private ClientAccountDetailMapper accountDetailMapper;
+
@Override
- public Page queryByPage(ClientQuery clientQuery) {
+ public Page queryClientByPage(ClientQuery clientQuery) {
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(StrUtil.isNotEmpty(clientQuery.getMobilePhone()), Client::getMobilePhone, clientQuery.getMobilePhone());
// Page recyclerPage = page(
// recyclerQuery.buildPageByDefaultOrder(Recycler.class, "goodTotal", true), wrapper);
- Page clientPage = page(
+ Page clientPage = this.page(
clientQuery.buildPageByDefaultOrder(Client::getCreatorTime, true), wrapper);
return clientPage;
}
@@ -90,6 +98,20 @@ public class ClientServiceImpl extends ServiceImpl impleme
this.updateById(client);
}
+
+ @Override
+ public Page queryAccountStatementByPage(ClientAccountQuery clientAccountQuery) {
+ LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>();
+ wrapperX.eq(ClientAccountDetail::getClientId, clientAccountQuery.getClientId())
+ .eqIfPresent(ClientAccountDetail::getChangeType, clientAccountQuery.getChangeType())
+ .betweenIfPresent(ClientAccountDetail::getCreatorTime, clientAccountQuery.getDateRange())
+ .orderByDesc(ClientAccountDetail::getCreatorTime);
+ Page clientAccountDetailPage = accountDetailMapper.selectPage(
+ clientAccountQuery.getPage(), wrapperX);
+ return clientAccountDetailPage;
+ }
+
+
// 校验散户是否存在
private void validateClientExists(String id) {
if (this.getClientById(id) == null) {
diff --git a/nxhs-service/src/main/resources/mapper/ClientAccountDetailMapper.xml b/nxhs-service/src/main/resources/mapper/ClientAccountDetailMapper.xml
new file mode 100644
index 0000000..bf5763c
--- /dev/null
+++ b/nxhs-service/src/main/resources/mapper/ClientAccountDetailMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/nxhs-service/src/test/java/cc/yunxi/NxhsApplicationTest.java b/nxhs-service/src/test/java/cc/yunxi/NxhsApplicationTest.java
index 5fe18b9..1133d2f 100644
--- a/nxhs-service/src/test/java/cc/yunxi/NxhsApplicationTest.java
+++ b/nxhs-service/src/test/java/cc/yunxi/NxhsApplicationTest.java
@@ -7,6 +7,8 @@ import cc.yunxi.domain.po.Recycler;
import cc.yunxi.enums.UserTypeEnum;
import cc.yunxi.service.ITestService;
import cc.yunxi.utils.JwtTool;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.digest.DigestUtil;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@@ -49,11 +51,9 @@ public class NxhsApplicationTest {
}
public static void main(String[] args) {
-// String property = System.getProperty("user.dir");
-// System.out.println(property);
- System.out.println(UserTypeEnum.CLIENT.toString());
- Class extends UserTypeEnum> aClass = UserTypeEnum.CLIENT.getClass();
- System.out.println(aClass.getEnumConstants());
+// System.out.println(DigestUtil.sha256Hex("123456"));
+// System.out.println(DigestUtil.sha1Hex("123456"));
+// System.out.println(DigestUtil.md5Hex("123456"));
}
}