1
zj
2024-08-19 9e020a4b14b2dcf2fddae99305cb6cccf42b6916
1
8 files modified
2 files added
316 ■■■■■ changed files
src/main/java/com/nq/controller/agent/AgentController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/controller/backend/AdminController.java 7 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/dao/SiteAdminMapper.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/nq/dao/UserWithdrawMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/pojo/AgentUserNodeVO.java 64 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/pojo/UserWithdraw.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/ISiteAdminService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java 177 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/ConverterUtil.java 45 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/SiteAdminMapper.xml 2 ●●● patch | view | raw | blame | history
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
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
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);
  
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);
  
src/main/java/com/nq/pojo/AgentUserNodeVO.java
New file
@@ -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;
}
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;
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);
}
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);
src/main/java/com/nq/utils/ConverterUtil.java
New file
@@ -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;
    }
}
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>