Kaynağa Gözat

代理团队列表、分红设置

dos 8 ay önce
ebeveyn
işleme
1904396557

+ 6 - 0
game-business/pom.xml

@@ -27,6 +27,12 @@
             <groupId>com.game</groupId>
             <artifactId>game-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-core</artifactId>
+            <version>3.0.0</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 43 - 6
game-business/src/main/java/com/game/business/controller/AppAgentController.java

@@ -2,17 +2,24 @@ package com.game.business.controller;
 
 import cn.hutool.core.date.DateUtil;
 import com.game.business.domain.AppUserCount;
+import com.game.business.dto.AppAgentEditDto;
+import com.game.business.dto.AppAgentTeamDto;
+import com.game.business.service.IAppUserAgentService;
 import com.game.business.dto.AgentIndexDTO;
 import com.game.business.service.IAppUserCountService;
 import com.game.business.service.IAppUserService;
+import com.game.business.vo.AppAgentTeamVo;
 import com.game.business.vo.AppUserAgentJournalIndexVO;
+import com.game.common.core.controller.BaseController;
 import com.game.common.core.domain.HttpRet;
+import com.game.common.core.domain.HttpRetPageArr;
 import com.game.common.utils.MessageUtils;
 import com.game.common.utils.SecurityUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -22,7 +29,7 @@ import java.util.stream.Collectors;
 @RestController
 @RequestMapping("/business/agent")
 @Api(value = "AppGameBettingController", description = "代理接口", tags = {"代理接口"})
-public class AppAgentController {
+public class AppAgentController extends BaseController {
 
     @Autowired
     private IAppUserCountService appUserCountService;
@@ -30,14 +37,20 @@ public class AppAgentController {
     @Autowired
     private IAppUserService appUserService;
 
+    @Autowired
+    private IAppUserAgentService appUserAgentService;
+
     /**
      * 首页
      */
     @PostMapping(value = "/index")
-    @ApiOperation(value = "首页", notes = "首页")
-    public HttpRet<AppUserAgentJournalIndexVO> index(AgentIndexDTO agentIndexDto)
+    @ApiOperation(value = "用户代理统计", notes = "用户代理统计")
+    public HttpRet<AppUserAgentJournalIndexVO> index(@RequestBody AgentIndexDTO agentIndexDto)
     {
         Long userId = SecurityUtils.getUserId();
+        if(null != agentIndexDto.getUserId()){
+            userId = agentIndexDto.getUserId();
+        }
         AppUserAgentJournalIndexVO vo = new AppUserAgentJournalIndexVO();
         Date nowDate = DateUtil.date();
         if(agentIndexDto.getType() == 1){
@@ -52,10 +65,12 @@ public class AppAgentController {
             //佣金
             vo.setMyCommission(appUserCountList.stream().mapToDouble(e->e.getLiveCommission() + e.getGameCommission()).sum());
             //团队人数
-            vo.setTeamUser(appUserService.getCount(userId,null,null));
+            vo.setTeamUser(appUserAgentService.countAgent(userId,null,null));
             //团队充值
             vo.setTeamRecharge(appUserCountList.stream().mapToDouble(e->e.getRechargeAmount()).sum());
             //团队投注
+            vo.setTeamBetting(appUserAgentService.sumBetting(DateUtil.format(beginDate,"yyyy-MM-dd").concat(" 00:00:00")
+                    ,DateUtil.format(endDate,"yyyy-MM-dd").concat(" 23:59:59"),userId));
             //团队直播消费
             vo.setTeamLive(appUserCountList.stream().mapToDouble(e->e.getLiveUseAmount()).sum());
             //团队投注赢
@@ -66,12 +81,34 @@ public class AppAgentController {
             vo.setActiveUser(appUserCountList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()-> new TreeSet<>(Comparator.comparing(f->f.getUserId()))), ArrayList::new)).size());
             //昨日新增
             Date yesterDay = DateUtil.offsetDay(DateUtil.date(),-1);
-            vo.setYesterdayUser(appUserService.getCount(userId,DateUtil.format(yesterDay,"yyyy-MM-dd").concat(" 00:00:00")
+            vo.setYesterdayUser(appUserAgentService.countAgent(userId,DateUtil.format(yesterDay,"yyyy-MM-dd").concat(" 00:00:00")
                     ,DateUtil.format(yesterDay,"yyyy-MM-dd").concat(" 23:59:59")));
-            vo.setMonthUser(appUserService.getCount(userId,DateUtil.format(beginDate,"yyyy-MM-dd").concat(" 00:00:00")
+            vo.setMonthUser(appUserAgentService.countAgent(userId,DateUtil.format(beginDate,"yyyy-MM-dd").concat(" 00:00:00")
                     ,DateUtil.format(endDate,"yyyy-MM-dd").concat(" 23:59:59")));
         }
         return HttpRet.success(MessageUtils.message("11022"),vo);
     }
 
+    /**
+     * 修改直播分成、分红保底
+     */
+    @PostMapping(value = "/updateSetting")
+    @ApiOperation(value = "修改直播分成、分红保底", notes = "修改直播分成、分红保底")
+    public HttpRet<Boolean> updateSetting(@RequestBody AppAgentEditDto editDto)
+    {
+        return appUserAgentService.updateSetting(editDto);
+    }
+
+    /**
+     * 团队列表
+     */
+    @PostMapping(value = "/teamList")
+    @ApiOperation(value = "团队列表", notes = "团队列表")
+    public HttpRetPageArr<AppAgentTeamVo> teamList(@RequestBody AppAgentTeamDto teamDto)
+    {
+        startPage();
+        List<AppAgentTeamVo> list = appUserAgentService.teamList(teamDto);
+        return HttpRetPageArr.success(MessageUtils.message("11022"),getDataTable(list));
+    }
+
 }

+ 2 - 0
game-business/src/main/java/com/game/business/controller/AppUserAgentController.java

@@ -32,6 +32,7 @@ import io.swagger.annotations.ApiOperation;
 import com.game.business.service.IAppUserAgentService;
 import com.game.common.utils.poi.ExcelUtil;
 import com.game.common.core.page.TableDataInfo;
+import springfox.documentation.annotations.ApiIgnore;
 
 /**
  * 用户代理表Controller
@@ -42,6 +43,7 @@ import com.game.common.core.page.TableDataInfo;
 @RestController
 @RequestMapping("/business/agent")
 @Api(value = "AppUserAgentController", description = "用户代理表接口", tags = {"用户代理表"})
+@ApiIgnore
 public class AppUserAgentController extends BaseController
 {
     @Autowired

+ 33 - 0
game-business/src/main/java/com/game/business/dto/AppAgentEditDto.java

@@ -0,0 +1,33 @@
+package com.game.business.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.game.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("修改设置")
+public class AppAgentEditDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 直播分成比例 */
+    @ApiModelProperty(value = "直播分成比例")
+    @Excel(name = "直播分成比例")
+    private Long liveRate;
+
+    /** 保底分红比例 */
+    @ApiModelProperty(value = "保底分红比例")
+    @Excel(name = "保底分红比例")
+    private Long dividendGuaranteeRate;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id")
+    @Excel(name = "用户id")
+    private Long userId;
+
+}

+ 33 - 0
game-business/src/main/java/com/game/business/dto/AppAgentTeamDto.java

@@ -0,0 +1,33 @@
+package com.game.business.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.game.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("代理团队")
+public class AppAgentTeamDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 用户id */
+    @ApiModelProperty(value = "用户id")
+    @Excel(name = "用户id")
+    private Long userId;
+
+    @JsonIgnore
+    private long pid;
+
+    /** 当前记录起始索引 */
+    @ApiModelProperty(value = "页数")
+    private Integer pageNum;
+
+    /** 每页显示记录数 */
+    @ApiModelProperty(value = "每页条数")
+    private Integer pageSize;
+
+}

+ 15 - 0
game-business/src/main/java/com/game/business/mapper/AppUserAgentMapper.java

@@ -3,6 +3,9 @@ package com.game.business.mapper;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.game.business.domain.AppUserAgent;
+import com.game.business.dto.AppAgentTeamDto;
+import com.game.business.vo.AppAgentTeamVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 用户代理表Mapper接口
@@ -58,4 +61,16 @@ public interface AppUserAgentMapper extends BaseMapper<AppUserAgent> {
      * @return 结果
      */
     public int deleteAppUserAgentByIds(Long[] ids);
+
+    /**
+     * 根据日期统计投资金额
+     *
+     */
+    public int sumBetting(@Param("beginTime") String beginTime, @Param("endTime") String endTime,@Param("pid") Long pid);
+
+    /**
+     * 查询团队列表
+     *
+     */
+    public List<AppAgentTeamVo> teamList(@Param("teamDto") AppAgentTeamDto teamDto);
 }

+ 21 - 0
game-business/src/main/java/com/game/business/service/IAppUserAgentService.java

@@ -1,8 +1,14 @@
 package com.game.business.service;
 
+import java.rmi.ServerException;
 import java.util.List;
 import com.game.business.domain.AppUserAgent;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.game.business.dto.AppAgentEditDto;
+import com.game.business.dto.AppAgentTeamDto;
+import com.game.business.dto.RegisterUserDto;
+import com.game.business.vo.AppAgentTeamVo;
+import com.game.common.core.domain.HttpRet;
 
 /**
  * 用户代理表Service接口
@@ -64,4 +70,19 @@ public interface IAppUserAgentService extends IService<AppUserAgent> {
      *
      * */
     public int countAgent(Long userId,String beginTime,String endTime);
+
+    /**
+     * 统计用户团队投注金额
+     * */
+    public double sumBetting(String beginTime,String endTime,Long pid);
+
+    /**
+     * 修改代理设置
+     * */
+    public HttpRet<Boolean> updateSetting(AppAgentEditDto editDto);
+
+    /**
+     * 团队列表
+     * */
+    public List<AppAgentTeamVo> teamList(AppAgentTeamDto teamDto);
 }

+ 69 - 1
game-business/src/main/java/com/game/business/service/impl/AppUserAgentServiceImpl.java

@@ -2,9 +2,23 @@ package com.game.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.rmi.ServerException;
 import java.util.List;
-        import com.game.common.utils.DateUtils;
+
+import com.game.business.domain.AppUser;
+import com.game.business.dto.AppAgentEditDto;
+import com.game.business.dto.AppAgentTeamDto;
+import com.game.business.dto.RegisterUserDto;
+import com.game.business.service.IAppUserService;
+import com.game.business.vo.AppAgentTeamVo;
+import com.game.common.core.domain.HttpRet;
+import com.game.common.utils.DateUtils;
+import com.game.common.utils.MessageUtils;
+import com.game.common.utils.SecurityUtils;
 import com.game.common.utils.StringUtils;
+import eu.bitwalker.useragentutils.UserAgent;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.game.business.mapper.AppUserAgentMapper;
@@ -21,9 +35,13 @@ import com.game.common.enums.DataSourceType;
  */
 @Service
 public class AppUserAgentServiceImpl extends ServiceImpl<AppUserAgentMapper, AppUserAgent> implements IAppUserAgentService {
+
     @Autowired
     private AppUserAgentMapper appUserAgentMapper;
 
+    @Autowired
+    private IAppUserService appUserService;
+
     /**
      * 查询用户代理表
      *
@@ -108,4 +126,54 @@ public class AppUserAgentServiceImpl extends ServiceImpl<AppUserAgentMapper, App
         queryWrapper.eq(AppUserAgent::getAuditStatus,"1");
         return appUserAgentMapper.selectCount(queryWrapper).intValue();
     }
+
+    /**
+     * 统计用户团队投注金额
+     * */
+    @Override
+    public double sumBetting(String beginTime,String endTime,Long pid) {
+        return appUserAgentMapper.sumBetting(beginTime,endTime,pid);
+    }
+
+    @Override
+    public HttpRet<Boolean> updateSetting(AppAgentEditDto editDto) {
+        Long userId = SecurityUtils.getUserId();
+        if(null != editDto.getUserId()){
+            userId = editDto.getUserId();
+        }
+        LambdaQueryWrapper<AppUserAgent>  queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AppUserAgent::getUserId,userId);
+        AppUserAgent userAgent = appUserAgentMapper.selectOne(queryWrapper);
+        if(userAgent == null){
+            return HttpRet.fail("当前用户不是代理无法进行设置");
+        }
+        if(null != editDto.getUserId() && !SecurityUtils.getUserId().equals(userAgent.getPid())){
+            return HttpRet.fail("只能设置自己的下级代理");
+        }
+        if(!userAgent.getPid().equals(0L)){
+            //当前用户有上级
+            //查询上级代理设置
+            LambdaQueryWrapper<AppUserAgent>  queryWrapper2 = new LambdaQueryWrapper<>();
+            queryWrapper2.eq(AppUserAgent::getUserId,userId);
+            AppUserAgent pUser = appUserAgentMapper.selectOne(queryWrapper2);
+            if(null != editDto.getLiveRate() && editDto.getLiveRate().longValue() >= pUser.getLiveRate().longValue()){
+                return HttpRet.fail("直播分成比例不能大于等于".concat(String.valueOf(pUser.getLiveRate())));
+            }
+            if(null != editDto.getDividendGuaranteeRate() && editDto.getDividendGuaranteeRate().longValue() >= pUser.getDividendGuaranteeRate().longValue()){
+                return HttpRet.fail("保底分成比例不能大于等于".concat(String.valueOf(pUser.getLiveRate())));
+            }
+        }
+        AppUserAgent update = new AppUserAgent();
+        BeanUtils.copyProperties(editDto,update);
+        update.setId(userAgent.getId());
+        appUserAgentMapper.updateById(update);
+        return HttpRet.success(MessageUtils.message("11022"),true);
+    }
+
+    @Override
+    public List<AppAgentTeamVo> teamList(AppAgentTeamDto teamDto) {
+        teamDto.setPid(SecurityUtils.getUserId());
+        return appUserAgentMapper.teamList(teamDto);
+    }
+
 }

+ 1 - 0
game-business/src/main/java/com/game/business/service/impl/AppUserServiceImpl.java

@@ -115,6 +115,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
     }
 
     @Override
+    @DataSource(DataSourceType.SLAVE)
     public boolean getMobileCount(String userName) {
         LambdaQueryWrapper<AppUser> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(AppUser::getUsername, userName);

+ 27 - 0
game-business/src/main/java/com/game/business/vo/AppAgentTeamVo.java

@@ -0,0 +1,27 @@
+package com.game.business.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("代理团队")
+public class AppAgentTeamVo {
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "投注金额")
+    private double bettingAmount;
+
+    @ApiModelProperty(value = "返点")
+    private double commission;
+
+    @ApiModelProperty(value = "盈亏")
+    private double gameAmount;
+
+}

+ 10 - 10
game-business/src/main/java/com/game/business/vo/AppUserAgentJournalIndexVO.java

@@ -11,33 +11,33 @@ import lombok.Data;
 public class AppUserAgentJournalIndexVO {
 
     @ApiModelProperty(value = "我的佣金")
-    private double myCommission;
+    private double myCommission = 0;
 
     @ApiModelProperty(value = "团队充值")
-    private double teamRecharge;
+    private double teamRecharge = 0;
 
     @ApiModelProperty(value = "团队投注")
-    private double teamBetting;
+    private double teamBetting = 0;
 
     @ApiModelProperty(value = "团队直播消费(金币)")
-    private double teamLive;
+    private double teamLive = 0;
 
     @ApiModelProperty(value = "团队投注 赢")
-    private double teamWin;
+    private double teamWin = 0;
 
     @ApiModelProperty(value = "团队投注 输")
-    private double teamLose;
+    private double teamLose = 0;
 
     @ApiModelProperty(value = "团队人数")
-    private int teamUser;
+    private int teamUser = 0;
 
     @ApiModelProperty(value = "活跃人数")
-    private int activeUser;
+    private int activeUser = 0;
 
     @ApiModelProperty(value = "昨日新增")
-    private int yesterdayUser;
+    private int yesterdayUser = 0;
 
     @ApiModelProperty(value = "月新增")
-    private int monthUser;
+    private int monthUser = 0;
 
 }

+ 20 - 0
game-business/src/main/resources/mapper/business/AppUserAgentMapper.xml

@@ -88,4 +88,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="sumBetting" resultType="java.lang.Integer">
+        select sum(betting_amount) as amount
+        from app_user_agent as a left join app_game_betting as b on a.user_id = b.user_id
+        where b.create_time between #{beginTime} and #{endTime}
+        and a.pid = #{pid}
+    </select>
+
+    <select id="teamList" resultType="com.game.business.vo.AppAgentTeamVo">
+        select
+            a.user_id as userId,
+            c.nickname as nickName,
+            (select sum(betting_amount) from app_game_betting as b where b.user_id = a.user_id) as bettingAmount,
+            (select sum(d.live_commission + d.game_commission) from app_user_count as d where d.user_id = a.user_id) as commission,
+            (select sum(e.game_win_amount - e.game_lose_amount) from app_user_count as e where e.user_id = a.user_id) as gameAmount
+        from app_user_agent as a left join mugozbg_live.app_user as c on a.user_id = c.userid where a.pid = #{teamDto.pid}
+        <if test="teamDto.userId != null ">
+             and a.user_id = #{teamDto.userId}
+        </if>
+    </select>
 </mapper>