Ver Fonte

查询用户列表
查询字典列表

marxjaw há 5 meses atrás
pai
commit
e6635f21e1
22 ficheiros alterados com 573 adições e 0 exclusões
  1. 31 0
      yt-agent/agent-service/src/main/java/com/ytpm/controller/AgentCommonController.java
  2. 34 0
      yt-agent/agent-service/src/main/java/com/ytpm/controller/YtAppUserController.java
  3. 14 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AgentDictMapper.java
  4. 26 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserLoginMapper.java
  5. 17 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserMapper.java
  6. 12 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppVideoWatchMapper.java
  7. 12 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppWithdrawMapper.java
  8. 11 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/AgentCommonService.java
  9. 15 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/YtAppUserService.java
  10. 25 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/AgentCommonServiceImpl.java
  11. 89 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java
  12. 11 0
      yt-agent/agent-service/src/main/resources/mapper/AgentDictMapper.xml
  13. 30 0
      yt-agent/agent-service/src/main/resources/mapper/AppUserLoginMapper.xml
  14. 50 0
      yt-agent/agent-service/src/main/resources/mapper/AppUserMapper.xml
  15. 13 0
      yt-agent/agent-service/src/main/resources/mapper/AppVideoWatchMapper.xml
  16. 12 0
      yt-agent/agent-service/src/main/resources/mapper/AppWithdrawMapper.xml
  17. 16 0
      yt-common/src/main/java/com/ytpm/agent/model/YtPlatformDict.java
  18. 28 0
      yt-common/src/main/java/com/ytpm/agent/view/AgentDictView.java
  19. 20 0
      yt-common/src/main/java/com/ytpm/app/model/YtAppUserLoginRecord.java
  20. 27 0
      yt-common/src/main/java/com/ytpm/app/param/YtAppUserListParam.java
  21. 71 0
      yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java
  22. 9 0
      yt-common/src/main/java/com/ytpm/app/view/YtKeyValueView.java

+ 31 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/AgentCommonController.java

@@ -0,0 +1,31 @@
+package com.ytpm.controller;
+
+
+import com.ytpm.agent.view.AgentDictView;
+import com.ytpm.general.ResultTable;
+import com.ytpm.service.AgentCommonService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@Api(tags = "代理商管理系统公共数据模块")
+@RestController
+@RequestMapping("/common")
+public class AgentCommonController {
+
+    @Resource
+    private AgentCommonService agentCommonService;
+
+    /**
+     * 查询字典数据列表
+     */
+    @ApiOperation(value = "查询字典数据列表")
+    @GetMapping("/dictList")
+    public ResultTable<AgentDictView> dictList(){
+        return agentCommonService.dictList();
+    }
+}

+ 34 - 0
yt-agent/agent-service/src/main/java/com/ytpm/controller/YtAppUserController.java

@@ -0,0 +1,34 @@
+package com.ytpm.controller;
+
+import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.general.ResultTable;
+import com.ytpm.service.YtAppUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+import javax.annotation.Resource;
+
+@Api(tags = "APP应用管理模块")
+@RestController
+@RequestMapping("/appUser")
+public class YtAppUserController {
+
+    @Resource
+    private YtAppUserService appUserService;
+
+    /**
+     * 查询App用户列表
+     * @param param 列表入参
+     * @return 分页列表
+     */
+    @PostMapping("/getUserList")
+    @ApiOperation(value = "查询App用户列表")
+    public ResultTable<YtAppUserListView> selectAppUserList(@RequestBody YtAppUserListParam param){
+        return appUserService.selectAppUserList(param);
+    }
+}

+ 14 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AgentDictMapper.java

@@ -0,0 +1,14 @@
+package com.ytpm.dao;
+
+import com.ytpm.agent.view.AgentDictView;
+import org.mapstruct.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface AgentDictMapper {
+    /**
+     * 查询字典表数据
+     */
+    List<AgentDictView> selectDictList();
+}

+ 26 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserLoginMapper.java

@@ -0,0 +1,26 @@
+package com.ytpm.dao;
+
+import com.ytpm.app.model.YtAppUserLoginRecord;
+import org.apache.ibatis.annotations.Param;
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface AppUserLoginMapper {
+    /**
+     * 根据应用ID和用户ID查询最新登录记录
+     * @param userId 应用ID
+     * @param appId 用户ID
+     * @return 最新登录记录
+     */
+    YtAppUserLoginRecord getLastLoginInfo(@Param("userId") String userId, @Param("appId") String appId);
+
+    /**
+     * 查询同一个应用IP前 X 段相同的玩家数量
+     */
+    Integer getIpRepeatCount(@Param("userId") String userId, @Param("appId") String appId,@Param("loginIp")String loginIp);
+
+    /**
+     * 查询同一个应用下与当前用户设备型号相同的玩家数量
+     */
+    Integer getDeviceCount(@Param("userId") String userId, @Param("appId") String appId, @Param("phoneModel") String phoneModel);
+}

+ 17 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserMapper.java

@@ -0,0 +1,17 @@
+package com.ytpm.dao;
+
+import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtAppUserListView;
+import org.mapstruct.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface AppUserMapper {
+    /**
+     * 查询App用户列表
+     * @param param 列表入参
+     * @return 分页列表
+     */
+    List<YtAppUserListView> selectAppUserList(YtAppUserListParam param);
+}

+ 12 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppVideoWatchMapper.java

@@ -0,0 +1,12 @@
+package com.ytpm.dao;
+
+import org.apache.ibatis.annotations.Param;
+import org.mapstruct.Mapper;
+
+@Mapper
+public interface AppVideoWatchMapper {
+    /**
+     * 查询用户当天播放视频总数
+     */
+    Integer getVideoPlayCount(@Param("userId")String userId, @Param("appId")String appId);
+}

+ 12 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppWithdrawMapper.java

@@ -0,0 +1,12 @@
+package com.ytpm.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface AppWithdrawMapper {
+    /**
+     * 查询当天播放视频数量
+     */
+    Integer getTodayVideoNum(@Param("appId") String appId,@Param("userId")String userId);
+}

+ 11 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/AgentCommonService.java

@@ -0,0 +1,11 @@
+package com.ytpm.service;
+
+import com.ytpm.agent.view.AgentDictView;
+import com.ytpm.general.ResultTable;
+
+public interface AgentCommonService {
+    /**
+     * 查询字典数据列表
+     */
+    ResultTable<AgentDictView> dictList();
+}

+ 15 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/YtAppUserService.java

@@ -0,0 +1,15 @@
+package com.ytpm.service;
+
+import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.general.ResultTable;
+
+
+public interface YtAppUserService {
+    /**
+     * 查询App用户列表
+     * @param param 列表入参
+     * @return 分页列表
+     */
+    ResultTable<YtAppUserListView> selectAppUserList(YtAppUserListParam param);
+}

+ 25 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/AgentCommonServiceImpl.java

@@ -0,0 +1,25 @@
+package com.ytpm.service.impl;
+
+import com.github.pagehelper.PageInfo;
+import com.ytpm.agent.view.AgentDictView;
+import com.ytpm.dao.AgentDictMapper;
+import com.ytpm.general.ResultTable;
+import com.ytpm.service.AgentCommonService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class AgentCommonServiceImpl implements AgentCommonService {
+
+    @Resource
+    private AgentDictMapper dictMapper;
+
+    /**
+     * 查询字典数据列表
+     */
+    @Override
+    public ResultTable<AgentDictView> dictList() {
+        return ResultTable.resultTableOk(new PageInfo<AgentDictView>(dictMapper.selectDictList()));
+    }
+}

+ 89 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java

@@ -0,0 +1,89 @@
+package com.ytpm.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ytpm.app.model.YtAppUserLoginRecord;
+import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.dao.AppUserLoginMapper;
+import com.ytpm.dao.AppUserMapper;
+import com.ytpm.dao.AppVideoWatchMapper;
+import com.ytpm.dao.AppWithdrawMapper;
+import com.ytpm.general.ResultTable;
+import com.ytpm.service.YtAppUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * App用户业务逻辑
+ */
+@Service
+public class YtAppUserServiceImpl implements YtAppUserService {
+
+    @Resource
+    private AppUserMapper appUserMapper;
+    @Resource
+    private AppUserLoginMapper userLoginMapper;
+    @Resource
+    private AppVideoWatchMapper videoWatchMapper;
+    @Resource
+    private AppWithdrawMapper withdrawMapper;
+
+
+    /**
+     * 查询App用户列表
+     * @param param 列表入参
+     * @return 分页列表
+     */
+    @Override
+    public ResultTable<YtAppUserListView> selectAppUserList(YtAppUserListParam param) {
+        PageHelper.startPage(param.getPage(), param.getLimit());
+        List<YtAppUserListView> views = appUserMapper.selectAppUserList(param);
+        if(CollUtil.isNotEmpty(views)){
+            String userId;
+            String appId;
+            for (YtAppUserListView view : views) {
+                userId = view.getUserId();
+                appId = view.getAppId();
+                setLoginInfo(userId,appId,view);//查询并设置登录信息
+                setTodayVideoNum(userId,appId,view);//查询用户当日播放视频总数
+                setWithDrawInfo(userId,appId,view);//查询用户提现记录计算提现笔数
+            }
+        }
+        return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(views));
+    }
+
+    /**
+     * 查询用户当日播放视频总数
+     */
+    private void setWithDrawInfo(String userId, String appId, YtAppUserListView view) {
+        view.setTodayVideo(videoWatchMapper.getVideoPlayCount(appId,userId));
+    }
+
+    /**
+     * 查询用户提现记录计算提现笔数
+     */
+    private void setTodayVideoNum(String userId, String appId, YtAppUserListView view) {
+        view.setWithdrawCount(withdrawMapper.getTodayVideoNum(appId,userId));
+    }
+
+    /**
+     * 查询并设置登录信息
+     */
+    private void setLoginInfo(String userId, String appId, YtAppUserListView view) {
+        //查询用户登录记录
+        YtAppUserLoginRecord record = userLoginMapper.getLastLoginInfo(userId,appId);
+        if(Objects.nonNull(record)){
+            String loginIp = record.getLoginIp();
+            String phoneModel = record.getPhoneModel();
+            view.setIpRepeatCount(userLoginMapper.getIpRepeatCount(userId,appId,loginIp));
+            view.setDeviceRepeatCount(userLoginMapper.getDeviceCount(userId,appId,phoneModel));
+            view.setCommunicationOperator(record.getCommunicationOperator());
+            view.setLastLoginTime(record.getLoginTime());
+        }
+    }
+}

+ 11 - 0
yt-agent/agent-service/src/main/resources/mapper/AgentDictMapper.xml

@@ -0,0 +1,11 @@
+<?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.ytpm.dao.AgentDictMapper">
+
+    <select id="selectDictList" resultType="com.ytpm.agent.view.AgentDictView">
+        select
+            dictionary_id, type_code, type_name, dictionary_code, dictionary_name, sort, enabled
+        from yt_platform_dict
+        where enabled = 1
+    </select>
+</mapper>

+ 30 - 0
yt-agent/agent-service/src/main/resources/mapper/AppUserLoginMapper.xml

@@ -0,0 +1,30 @@
+<?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.ytpm.dao.AppUserLoginMapper">
+
+    <select id="getLastLoginInfo" resultType="com.ytpm.app.model.YtAppUserLoginRecord">
+        select
+            record_id, user_id, app_id, login_time, phone_brand, phone_model, login_ip, communication_operator, ip_addr
+        from yt_app_user_login_record
+        where user_id = #{userId} and app_id = #{appId}
+        order by login_time desc limit 1
+    </select>
+    <select id="getIpRepeatCount" resultType="java.lang.Integer">
+        select
+            count(distinct login_ip)
+        from yt_app_user_login_record
+        where
+            app_id = #{appId}
+            and user_id not in (#{userId})
+            and login_ip = #{loginIp}
+    </select>
+    <select id="getDeviceCount" resultType="java.lang.Integer">
+        select
+            count(distinct phone_model)
+        from yt_app_user_login_record
+        where
+            app_id = #{appId}
+            and user_id not in (#{userId})
+            and phone_model = #{phoneModel}
+    </select>
+</mapper>

+ 50 - 0
yt-agent/agent-service/src/main/resources/mapper/AppUserMapper.xml

@@ -0,0 +1,50 @@
+<?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.ytpm.dao.AppUserMapper">
+
+    <select id="selectAppUserList" resultType="com.ytpm.app.view.YtAppUserListView">
+        select
+            au.user_id,
+            au.app_id,
+            au.nick_name,
+            au.registry_time,
+            au.last_login_time,
+            au.last_login_ip,
+            a.app_name,
+            au.channel_type,
+            au.channel_origin,
+            au.user_type,
+            au.total_video,
+            au.total_income,
+            au.red_packet_balance,
+            au.red_packet_amount,
+            au.points_balance,
+            au.points_total,
+            a.version_code,
+            au.user_status,
+            au.login_days,
+            au.withdraw_total,
+            au.sign_days
+        from yt_app_user au
+        join yt_app a on au.app_id = a.app_id
+        where au.user_status not in (4)
+        <if test="registryTime != null">
+            and DATE_FORMAT(au.registry_time,'%Y-%m-%d') = DATE_FORMAT(#{registryTime},'%Y-%m-%d')
+        </if>
+        <if test="lastLoginTime != null">
+            and DATE_FORMAT(au.last_login_time,'%Y-%m-%d') = DATE_FORMAT(#{lastLoginTime},'%Y-%m-%d')
+        </if>
+        <if test="channelType != null">
+            and au.channel_type = #{channelType}
+        </if>
+        <if test="channelOrigin != null">
+            and au.channel_origin = #{channelOrigin}
+        </if>
+        <if test="userType != null">
+            and au.user_type = #{userType}
+        </if>
+        <if test="nickName != null and nickName != ''">
+            and au.nick_name like CONCAT('%',#{nickName},'%')
+        </if>
+    </select>
+</mapper>

+ 13 - 0
yt-agent/agent-service/src/main/resources/mapper/AppVideoWatchMapper.xml

@@ -0,0 +1,13 @@
+<?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.ytpm.dao.AppVideoWatchMapper">
+
+    <select id="getVideoPlayCount" resultType="java.lang.Integer">
+        select
+        COUNT(*)
+        from yt_app_video_watch_record
+        where user_id = #{userId}
+        and app_id = #{appId}
+        and DATE_FORMAT(watch_time, '%Y-%m-%d') = CURRENT_DATE()
+    </select>
+</mapper>

+ 12 - 0
yt-agent/agent-service/src/main/resources/mapper/AppWithdrawMapper.xml

@@ -0,0 +1,12 @@
+<?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.ytpm.dao.AppWithdrawMapper">
+
+    <select id="getTodayVideoNum" resultType="java.lang.Integer">
+        select
+            count(*)
+        from yt_app_video_watch_record
+        where user_id = #{userId}
+        and app_id = #{appId}
+    </select>
+</mapper>

+ 16 - 0
yt-common/src/main/java/com/ytpm/agent/model/YtPlatformDict.java

@@ -0,0 +1,16 @@
+package com.ytpm.agent.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel("易推代理商平台字典表")
+public class YtPlatformDict {
+    private Integer dictionaryId;
+    private String typeCode;
+    private String typeName;
+    private String dictionaryCode;
+    private String dictionaryName;
+    private Integer sort;
+    private Integer enabled;
+}

+ 28 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentDictView.java

@@ -0,0 +1,28 @@
+package com.ytpm.agent.view;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("平台字典信息")
+public class AgentDictView {
+    @ApiModelProperty("字典ID")
+    private Integer dictionaryId;
+    @ApiModelProperty("类型编码")
+    private String typeCode;
+    @ApiModelProperty("类型名称")
+    private String typeName;
+    @ApiModelProperty("字典码")
+    private String dictionaryCode;
+    @ApiModelProperty("字典值")
+    private String dictionaryName;
+    @ApiModelProperty("排序")
+    private Integer sort;
+    @ApiModelProperty("是否启用")
+    private Integer enabled;
+}

+ 20 - 0
yt-common/src/main/java/com/ytpm/app/model/YtAppUserLoginRecord.java

@@ -0,0 +1,20 @@
+package com.ytpm.app.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+
+@ApiModel("易推APP用户登录记录表")
+@Data
+public class YtAppUserLoginRecord {
+    private String recordId;
+    private String userId;
+    private String appId;
+    private Date loginTime;
+    private String phoneBrand;
+    private String phoneModel;
+    private String loginIp;
+    private String communicationOperator;
+    private String ipAddr;
+}

+ 27 - 0
yt-common/src/main/java/com/ytpm/app/param/YtAppUserListParam.java

@@ -0,0 +1,27 @@
+package com.ytpm.app.param;
+
+import com.ytpm.general.PageMeta;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel("应用用户列表入参")
+public class YtAppUserListParam extends PageMeta {
+    @ApiModelProperty("注册时间")
+    private Date registryTime;
+    @ApiModelProperty("最新登录时间")
+    private Date lastLoginTime;
+    @ApiModelProperty("渠道类型")
+    private Integer channelType;
+    @ApiModelProperty("渠道来源")
+    private Integer channelOrigin;
+    @ApiModelProperty("用户类型")
+    private Integer userType;
+    @ApiModelProperty("用户昵称")
+    private String nickName ;
+}

+ 71 - 0
yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java

@@ -0,0 +1,71 @@
+package com.ytpm.app.view;
+
+import com.ytpm.general.PageMeta;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel("易推应用用户列表")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class YtAppUserListView {
+    @ApiModelProperty("用户ID")
+    private String userId;
+    @ApiModelProperty("应用ID")
+    private String appId;
+    @ApiModelProperty("应用名称")
+    private String appName;
+    @ApiModelProperty("应用类型")
+    private Integer appType;
+    @ApiModelProperty("版本号")
+    private String versionCode;
+    @ApiModelProperty("用户昵称")
+    private String nickName ;
+    @ApiModelProperty("注册时间")
+    private Date registryTime;
+    @ApiModelProperty("最新登录时间")
+    private Date lastLoginTime;
+    @ApiModelProperty("最新登录IP")
+    private String lastLoginIp;
+    @ApiModelProperty("渠道类型")
+    private Integer channelType;
+    @ApiModelProperty("渠道来源")
+    private Integer channelOrigin;
+    @ApiModelProperty("用户类型")
+    private Integer userType;
+    @ApiModelProperty("用户状态")
+    private Integer userStatus;
+    @ApiModelProperty("今日视频播放数")
+    private Integer todayVideo;
+    @ApiModelProperty("视频总播放数")
+    private Integer totalVideo;
+    @ApiModelProperty("登录天数")
+    private Integer loginDays;
+    @ApiModelProperty("总收益")
+    private BigDecimal totalIncome;
+    @ApiModelProperty("红包余额")
+    private BigDecimal redPacketBalance;
+    @ApiModelProperty("红包总额")
+    private BigDecimal redPacketAmount;
+    @ApiModelProperty("积分余额")
+    private BigDecimal pointsBalance;
+    @ApiModelProperty("积分总额")
+    private BigDecimal pointsTotal;
+    @ApiModelProperty("提现总额")
+    private BigDecimal withdrawTotal;
+    @ApiModelProperty("提现笔数")
+    private Integer withdrawCount;
+    @ApiModelProperty("IP重复数量")
+    private Integer ipRepeatCount;
+    @ApiModelProperty("设备重复数量")
+    private Integer deviceRepeatCount;
+    @ApiModelProperty("通信运营商")
+    private String communicationOperator;
+}

+ 9 - 0
yt-common/src/main/java/com/ytpm/app/view/YtKeyValueView.java

@@ -0,0 +1,9 @@
+package com.ytpm.app.view;
+
+import lombok.Data;
+
+@Data
+public class YtKeyValueView<T> {
+    private String key;
+    private T object;
+}