From 9e020a4b14b2dcf2fddae99305cb6cccf42b6916 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 19 Aug 2024 19:01:11 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/dao/SiteAdminMapper.java | 4
src/main/resources/mapper/SiteAdminMapper.xml | 2
src/main/java/com/nq/controller/agent/AgentController.java | 7 +
src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java | 177 ++++++++++++++++++++++++++++-
src/main/java/com/nq/controller/backend/AdminController.java | 7 +
src/main/java/com/nq/pojo/UserWithdraw.java | 3
src/main/java/com/nq/dao/UserWithdrawMapper.java | 5
src/main/java/com/nq/service/ISiteAdminService.java | 2
src/main/java/com/nq/utils/ConverterUtil.java | 45 +++++++
src/main/java/com/nq/pojo/AgentUserNodeVO.java | 64 ++++++++++
10 files changed, 298 insertions(+), 18 deletions(-)
diff --git a/src/main/java/com/nq/controller/agent/AgentController.java b/src/main/java/com/nq/controller/agent/AgentController.java
index e77a4ce..08d4230 100644
--- a/src/main/java/com/nq/controller/agent/AgentController.java
+++ b/src/main/java/com/nq/controller/agent/AgentController.java
@@ -97,6 +97,13 @@
return this.iUserPositionService.getIncome(agentId, positionType, beginTime, endTime);
}
+ //查询首页充值,提现,注册统计
+ @RequestMapping({"moneyCount.do"})
+ @ResponseBody
+ public ServerResponse moneyCount(@RequestParam(value = "agentId", required = false) String agentId,@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "entTime", required = false) String entTime) {
+ return this.iSiteAdminService.moneyCount(agentId,startTime,entTime);
+ }
+
//查询指数统计指定时间内,代理客户(已平仓)的交易盈亏
@RequestMapping({"getIndexIncome.do"})
@ResponseBody
diff --git a/src/main/java/com/nq/controller/backend/AdminController.java b/src/main/java/com/nq/controller/backend/AdminController.java
index 47c257a..aecd92a 100644
--- a/src/main/java/com/nq/controller/backend/AdminController.java
+++ b/src/main/java/com/nq/controller/backend/AdminController.java
@@ -82,7 +82,12 @@
HttpServletRequest request) {
return this.iSiteAdminService.listByAdmin(adminName, adminPhone, request, pageNum, pageSize);
}
-
+ //查询首页充值,提现,注册统计
+ @RequestMapping({"moneyCount.do"})
+ @ResponseBody
+ public ServerResponse moneyCount(@RequestParam(value = "agentId", required = false) String agentId,@RequestParam(value = "startTime", required = false) String startTime,@RequestParam(value = "entTime", required = false) String entTime) {
+ return this.iSiteAdminService.moneyCount(agentId,startTime,entTime);
+ }
@RequestMapping({"queryApplyLever.do"})
@ResponseBody
diff --git a/src/main/java/com/nq/dao/SiteAdminMapper.java b/src/main/java/com/nq/dao/SiteAdminMapper.java
index 2c9489a..a3c0beb 100644
--- a/src/main/java/com/nq/dao/SiteAdminMapper.java
+++ b/src/main/java/com/nq/dao/SiteAdminMapper.java
@@ -9,10 +9,8 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
-public interface SiteAdminMapper extends BaseMapper {
+public interface SiteAdminMapper extends BaseMapper<SiteAdmin> {
int deleteByPrimaryKey(Integer paramInteger);
-
- int insert(SiteAdmin paramSiteAdmin);
int insertSelective(SiteAdmin paramSiteAdmin);
diff --git a/src/main/java/com/nq/dao/UserWithdrawMapper.java b/src/main/java/com/nq/dao/UserWithdrawMapper.java
index a30197b..83ba748 100644
--- a/src/main/java/com/nq/dao/UserWithdrawMapper.java
+++ b/src/main/java/com/nq/dao/UserWithdrawMapper.java
@@ -1,14 +1,13 @@
package com.nq.dao;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nq.pojo.UserWithdraw;
import java.math.BigDecimal;
import java.util.List;
import org.apache.ibatis.annotations.Param;
-public interface UserWithdrawMapper {
+public interface UserWithdrawMapper extends BaseMapper<UserWithdraw> {
int deleteByPrimaryKey(Integer paramInteger);
-
- int insert(UserWithdraw paramUserWithdraw);
int insertSelective(UserWithdraw paramUserWithdraw);
diff --git a/src/main/java/com/nq/pojo/AgentUserNodeVO.java b/src/main/java/com/nq/pojo/AgentUserNodeVO.java
new file mode 100644
index 0000000..ca7d156
--- /dev/null
+++ b/src/main/java/com/nq/pojo/AgentUserNodeVO.java
@@ -0,0 +1,64 @@
+package com.nq.pojo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @program: dabao
+ * @description:
+ * @create: 2024-05-21 11:00
+ **/
+@Data
+public class AgentUserNodeVO {
+
+ private Integer id;
+ private String agentName;
+ private String agentPwd;
+ private String agentRealName;
+ private String agentPhone;
+ private String agentCode;
+ private Date addTime;
+ private Integer isLock;
+ private Integer parentId;
+ private String parentName;
+ //代理级别
+ private Integer agentLevel;
+ /**
+ * 手续费比例
+ */
+ private BigDecimal poundageScale;
+
+ /**
+ * 递延费比例
+ */
+ private BigDecimal deferredFeesScale;
+
+ /**
+ * 分红比例
+ */
+ private BigDecimal receiveDividendsScale;
+
+ /**
+ * 总资金
+ */
+ private BigDecimal totalMoney;
+
+ /**
+ * 杠杆倍数,多个用/分割
+ */
+ private String siteLever;
+
+ /**
+ * 在先客服
+ * */
+ private String onLineServices;
+
+ /**
+ * 子节点
+ */
+ private List<AgentUserNodeVO> childList;
+
+}
diff --git a/src/main/java/com/nq/pojo/UserWithdraw.java b/src/main/java/com/nq/pojo/UserWithdraw.java
index 0f04103..2ce1b5b 100644
--- a/src/main/java/com/nq/pojo/UserWithdraw.java
+++ b/src/main/java/com/nq/pojo/UserWithdraw.java
@@ -1,6 +1,7 @@
package com.nq.pojo;
import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
@@ -40,7 +41,7 @@
private BigDecimal withFee;
@Excel(name = "原因")
private String withMsg;
-
+ @TableField(exist = false)
private String userPhone;
diff --git a/src/main/java/com/nq/service/ISiteAdminService.java b/src/main/java/com/nq/service/ISiteAdminService.java
index 7b185bf..07329f9 100644
--- a/src/main/java/com/nq/service/ISiteAdminService.java
+++ b/src/main/java/com/nq/service/ISiteAdminService.java
@@ -27,4 +27,6 @@
ServerResponse count();
ServerResponse deleteAdmin(Integer adminId);
+
+ ServerResponse moneyCount(String agentId, String startTime, String entTime);
}
diff --git a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
index 4b8abe0..f778fbe 100644
--- a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
@@ -1,19 +1,16 @@
package com.nq.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.nq.dao.SiteAdminMapper;
+import com.nq.dao.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nq.common.ServerResponse;
-import com.nq.dao.UserMapper;
-import com.nq.dao.UserRechargeMapper;
-import com.nq.dao.UserWithdrawMapper;
-import com.nq.pojo.SiteAdmin;
-
-import com.nq.pojo.UserRecharge;
+import com.nq.pojo.*;
import com.nq.service.IAgentUserService;
@@ -29,6 +26,7 @@
import com.nq.service.IUserWithdrawService;
+import com.nq.utils.ConverterUtil;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.SymmetricCryptoUtil;
@@ -41,9 +39,11 @@
import java.math.BigDecimal;
-import java.util.Date;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
-import java.util.List;
+import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -103,6 +103,11 @@
@Resource
UserMapper userMapper;
+ @Resource
+ UserWithdrawMapper userWithdrawMapper;
+
+ @Autowired
+ AgentUserMapper agentUserMapper;
public ServerResponse login(String adminPhone, String adminPwd, String verifyCode, HttpServletRequest request) {
@@ -352,6 +357,122 @@
}
+ @Override
+ public ServerResponse moneyCount(String agentId,String startTime, String entTime) {
+ BigDecimal todayRechargeAmount = BigDecimal.ZERO;//今日充值金额
+ BigDecimal todayWithdrawAmount = BigDecimal.ZERO;//今日提现金额
+ Long todayRegister = 0L;//今日注册
+ Long todayWithdraw = 0L;//今日充值总人数
+ BigDecimal rechargeTotalAmount = BigDecimal.ZERO;//总充值金额
+ BigDecimal withdrawalTotalAmount = BigDecimal.ZERO;//总提现金额
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("todayRechargeAmount", todayRechargeAmount);
+ map.put("todayWithdrawAmount", todayWithdrawAmount);
+ map.put("todayRegister", todayRegister);
+ map.put("todayWithdraw", todayWithdraw);
+ map.put("rechargeTotalAmount", rechargeTotalAmount);
+ map.put("withdrawalTotalAmount", withdrawalTotalAmount);
+
+ //今日开始结束时间
+ LocalDate currentDate = LocalDate.now();
+ LocalDate nextDay = currentDate.plusDays(1);
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String start = currentDate.format(formatter);
+ String end = nextDay.format(formatter);
+ List<Integer> userIds = null;
+ if(StringUtils.isNotEmpty(agentId)){
+ //当前代理
+ AgentUser agentUser = agentUserMapper.selectById(agentId);
+ if(null == agentUser){
+ return ServerResponse.createBySuccess(map);
+ }
+ List<AgentUser> lowerAgentUsers = agentUserMapper.selectList(new LambdaQueryWrapper<AgentUser>());
+ AgentUserNodeVO userNodeVO = ConverterUtil.convert(agentUser, AgentUserNodeVO.class);
+ List<AgentUserNodeVO> agentUserNodeVOS = ConverterUtil.convertToList(lowerAgentUsers, AgentUserNodeVO.class);
+ List<AgentUserNodeVO> nodeJson = getNodeJson(userNodeVO, agentUserNodeVOS);
+ userNodeVO.setChildList(nodeJson);
+ //当前节点和子节点的id
+ List<Integer> ids = getAllChildrenIds(userNodeVO);
+ //查询代理id下面所有的用户
+ List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getAgentId, ids));
+ userIds = users.stream().map(User::getId).collect(Collectors.toList());
+ }
+ //今日充值
+ List<UserRecharge> todayRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>().eq(UserRecharge::getOrderStatus, 1)
+ .ge(UserRecharge::getPayTime, start)
+ .le(UserRecharge::getPayTime, end)
+ .in(CollectionUtil.isNotEmpty(userIds),UserRecharge::getUserId,userIds));
+
+ //今日提现
+ List<UserWithdraw> todayWithdraws = userWithdrawMapper.selectList(new LambdaQueryWrapper<UserWithdraw>().eq(UserWithdraw::getWithStatus, 1)
+ .ge(UserWithdraw::getTransTime, start)
+ .le(UserWithdraw::getTransTime, end)
+ .in(CollectionUtil.isNotEmpty(userIds),UserWithdraw::getUserId,userIds));
+
+ //总充值
+ List<UserRecharge> userRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>().eq(UserRecharge::getOrderStatus, 1)
+ .ge(StringUtils.isNotBlank(startTime), UserRecharge::getPayTime, startTime)
+ .le(StringUtils.isNotBlank(entTime), UserRecharge::getPayTime, entTime)
+ .in(CollectionUtil.isNotEmpty(userIds),UserRecharge::getUserId,userIds));
+
+ //总提现
+ List<UserWithdraw> userWithdraws = userWithdrawMapper.selectList(new LambdaQueryWrapper<UserWithdraw>().eq(UserWithdraw::getWithStatus, 1)
+ .ge(StringUtils.isNotBlank(startTime), UserWithdraw::getTransTime, startTime)
+ .le(StringUtils.isNotBlank(entTime), UserWithdraw::getTransTime, entTime)
+ .in(CollectionUtil.isNotEmpty(userIds),UserWithdraw::getUserId,userIds));
+
+ //今日注册数量
+ todayRegister = userMapper.selectCount(new LambdaQueryWrapper<User>()
+ .ge(User::getRegTime, start)
+ .le(User::getRegTime, end)
+ .in(CollectionUtil.isNotEmpty(userIds),User::getId,userIds));
+
+ for (UserRecharge userRecharge : todayRecharges) {
+ todayRechargeAmount = todayRechargeAmount.add(userRecharge.getPayAmt());
+ }
+
+ for (UserWithdraw userWithdraw : todayWithdraws) {
+ todayWithdrawAmount = todayWithdrawAmount.add(userWithdraw.getWithAmt());
+ }
+
+ for (UserRecharge userRecharge : userRecharges) {
+ rechargeTotalAmount = rechargeTotalAmount.add(userRecharge.getPayAmt());
+ }
+
+ for (UserWithdraw userWithdraw : userWithdraws) {
+ withdrawalTotalAmount = withdrawalTotalAmount.add(userWithdraw.getWithAmt());
+ }
+
+ List<UserRecharge> distinctCustomers = todayRecharges.stream()
+ .collect(Collectors.toMap(UserRecharge::getUserId, c -> c, (c1, c2) -> c1))
+ .values().stream()
+ .collect(Collectors.toList());
+ todayWithdraw = Long.valueOf(distinctCustomers.size());
+
+ map.put("todayRechargeAmount", todayRechargeAmount);
+ map.put("todayWithdrawAmount", todayWithdrawAmount);
+ map.put("todayRegister", todayRegister);
+ map.put("todayWithdraw", todayWithdraw);
+ map.put("rechargeTotalAmount", rechargeTotalAmount);
+ map.put("withdrawalTotalAmount", withdrawalTotalAmount);
+ return ServerResponse.createBySuccess(map);
+ }
+
+ public static List<Integer> getAllChildrenIds(AgentUserNodeVO parent) {
+ List<Integer> allChildrenIds = new ArrayList<>();
+ getAllChildrenIdsHelper(parent, allChildrenIds);
+ return allChildrenIds;
+ }
+ private static void getAllChildrenIdsHelper(AgentUserNodeVO node, List<Integer> allChildrenIds) {
+ allChildrenIds.add(node.getId());
+ if(CollectionUtil.isNotEmpty(node.getChildList())){
+ for (AgentUserNodeVO child : node.getChildList()) {
+ getAllChildrenIdsHelper(child, allChildrenIds);
+ }
+ }
+ }
+
public ServerResponse deleteAdmin(Integer adminId) {
if (adminId == null) {
@@ -369,6 +490,44 @@
}
+ public List<AgentUserNodeVO> getNodeJson(AgentUserNodeVO agentUser, List<AgentUserNodeVO> nodes){
+
+ //当前层级当前点下的所有子节点
+ List<AgentUserNodeVO> childList = getChildNodes(agentUser.getId(),nodes);
+ List<AgentUserNodeVO> list = new ArrayList<>();
+ childList.forEach(f->{
+ List<AgentUserNodeVO> childs = getNodeJson(f,nodes); //递归调用该方法
+ if(!childs.isEmpty()) {
+ f.setChildList(childs);
+ }
+ list.add(f);
+ });
+ return list;
+ }
+
+ /**
+ * 获取当前节点的所有子节点
+ * @param nodeId
+ * @param nodes
+ * @return
+ */
+ public List<AgentUserNodeVO> getChildNodes(Integer nodeId, List<AgentUserNodeVO> nodes){
+ List<AgentUserNodeVO> list = new ArrayList<>();
+ nodes.forEach(f->{
+ if(f.getParentId().equals(nodeId)){
+ list.add(f);
+ }
+ });
+ return list;
+ }
+
+
+ public String getDate(){
+ LocalDate currentDate = LocalDate.now();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ return currentDate.format(formatter);
+ }
+
public SiteAdmin findAdminByName(String name) {
return this.siteAdminMapper.findAdminByName(name);
diff --git a/src/main/java/com/nq/utils/ConverterUtil.java b/src/main/java/com/nq/utils/ConverterUtil.java
new file mode 100644
index 0000000..ed46869
--- /dev/null
+++ b/src/main/java/com/nq/utils/ConverterUtil.java
@@ -0,0 +1,45 @@
+package com.nq.utils;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-08-19 18:29
+ **/
+public class ConverterUtil {
+
+ public static <T, V> V convert(T pojo, Class<V> voClass) {
+ try {
+ V vo = voClass.newInstance();
+ Field[] pojoFields = pojo.getClass().getDeclaredFields();
+ Field[] voFields = voClass.getDeclaredFields();
+ for (Field pojoField : pojoFields) {
+ pojoField.setAccessible(true);
+ for (Field voField : voFields) {
+ voField.setAccessible(true);
+ if (pojoField.getName().equals(voField.getName()) && pojoField.getType().equals(voField.getType())) {
+ voField.set(vo, pojoField.get(pojo));
+ break;
+ }
+ }
+ }
+ return vo;
+ } catch (InstantiationException | IllegalAccessException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ public static <T, V> List<V> convertToList(List<T> pojoList, Class<V> voClass) {
+ List<V> voList = new ArrayList<>();
+ for (T pojo : pojoList) {
+ V vo = convert(pojo, voClass);
+ voList.add(vo);
+ }
+ return voList;
+ }
+
+
+}
diff --git a/src/main/resources/mapper/SiteAdminMapper.xml b/src/main/resources/mapper/SiteAdminMapper.xml
index 8e37c81..58e6c4b 100644
--- a/src/main/resources/mapper/SiteAdminMapper.xml
+++ b/src/main/resources/mapper/SiteAdminMapper.xml
@@ -112,7 +112,7 @@
<select id="login" parameterType="map" resultType="com.nq.pojo.SiteAdmin">
SELECT
- <include refid="Base_Column_List"/>
+ *
FROM site_admin
WHERE admin_phone = #{adminPhone} and admin_pwd = #{adminPwd}
</select>
--
Gitblit v1.9.3