| | |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | | import com.yeshi.fanli.service.inter.count.DailyCountMomentsService; |
| | | import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService; |
| | | import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; |
| | | import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; |
| | |
| | | @Resource |
| | | private ShareGoodsService shareGoodsService; |
| | | |
| | | // @Resource |
| | | // private DailyCountMomentsService dailyCountMomentsService; |
| | | @Resource |
| | | private DailyCountMomentsService dailyCountMomentsService; |
| | | |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { // 添加每日统计 |
| | | // TODO |
| | | // dailyCountMomentsService.addShareClick(); |
| | | dailyCountMomentsService.addShareClick(); |
| | | } |
| | | }); |
| | | } |
| | |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { // 添加每日统计 |
| | | // TODO |
| | | // dailyCountMomentsService.addCopyComment(); |
| | | dailyCountMomentsService.addCopyComment(); |
| | | } |
| | | }); |
| | | } |
| | |
| | | */ |
| | | List<Long> getValidWorkerIdsByUid(@Param("uid")Long uid,@Param("list") List<Long> list,@Param("type")Integer type); |
| | | |
| | | |
| | | /** |
| | | * 分页查询有效粉丝记录 |
| | | * @param start |
| | | * @param count |
| | | * @param uid |
| | | * @return |
| | | */ |
| | | List<UserInviteValidRecord> listByTypeAndUid(@Param("start")long start, @Param("count")int count, |
| | | @Param("uid")Long uid, @Param("type")int type); |
| | | |
| | | |
| | | |
| | | /** |
| | | * 查询有效关系 |
| | | * @param uid |
| | | * @param workerId |
| | | * @param type |
| | | * @return |
| | | */ |
| | | UserInviteValidRecord getByUidAndWorkerId(@Param("uid")Long uid, @Param("workerId")Long workerId, @Param("type")int type); |
| | | |
| | | |
| | | } |
| | |
| | | @Column(name = "tvr_type")
|
| | | private Integer type;
|
| | |
|
| | | // 唯一值:( uid#workerId#type)
|
| | | // 唯一值:(workerId#type)
|
| | | @Column(name = "tvr_unique_key")
|
| | | private String uniqueKey;
|
| | |
|
| | |
| | | import org.yeshi.utils.mybatis.Table;
|
| | |
|
| | | /**
|
| | | * 团队成员等级统计
|
| | | * 团队成员等级统计 -有效粉丝
|
| | | * @author Administrator
|
| | | *
|
| | | */
|
| | |
| | | WHERE utv_uid = #{id,jdbcType=BIGINT} |
| | | </update> |
| | | |
| | | |
| | | <select id="selectForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long"> |
| | | select * from yeshi_ec_user_invite_valid_num where utv_uid = #{id,jdbcType=BIGINT} FOR UPDATE |
| | | </select> |
| | |
| | | and tvr_worker_id in <foreach collection="list" item="item" open="(" separator="," close=")">#{item}</foreach> |
| | | </select> |
| | | |
| | | <select id="listByTypeAndUid" resultMap="BaseResultMap"> |
| | | SELECT * FROM `yeshi_ec_user_invite_valid_record` d |
| | | WHERE d.`tvr_uid` = #{uid} AND d.`tvr_type` = #{type} |
| | | Limit #{start},#{count} |
| | | </select> |
| | | |
| | | <select id="getByUidAndWorkerId" resultMap="BaseResultMap"> |
| | | SELECT * FROM `yeshi_ec_user_invite_valid_record` d |
| | | WHERE d.`tvr_uid` = #{uid} AND d.tvr_worker_id = #{workerId} AND d.`tvr_type` = #{type} |
| | | Limit 1 |
| | | </select> |
| | | |
| | | |
| | | |
| | | </mapper> |
| | |
| | | String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief); |
| | | String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); |
| | | String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token)); |
| | | commentText = commentText.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goodsVO.getZkPrice()) + ""); |
| | | if (!goodsVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | } else { |
| | | commentText = commentText.replace("[券后价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goodsVO.getCouponPrice()) + ""); |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n","\r\n"); |
| | | } |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", |
| | | "\r\n"); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | } |
| | |
| | | |
| | | String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); |
| | | String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token)); |
| | | |
| | | commentText = commentText.replace("[原价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goodsVO.getZkPrice()) + ""); |
| | | if (!goodsVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | } else { |
| | | commentText = commentText.replace("[券后价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goodsVO.getCouponPrice()) + ""); |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | } |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n") |
| | | .replace("\r\n\r\n", "\r\n"); |
| | | |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setNeedSpin(true); |
| | |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private void removeOverdue() { |
| | |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInviteSeparate;
|
| | | import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInviteSeparateService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.vip.UserVipConfigService;
|
| | |
|
| | |
| | | @Resource
|
| | | private UserInviteMsgNotificationService userInviteMsgNotificationService;
|
| | |
|
| | | @Lazy
|
| | | @Resource
|
| | | private UserInviteValidRecordService userInviteValidRecordService;
|
| | |
|
| | | @Lazy
|
| | | @Resource
|
| | | private UserInviteValidNumService userInviteValidNumService;
|
| | |
|
| | | @Override
|
| | | public void insertSelective(UserInviteSeparate record) {
|
| | | userInviteSeparateMapper.insertSelective(record);
|
| | | }
|
| | | |
| | |
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | |
| | | return userInviteSeparateMapper.getHandleOverdue(start, count);
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void inviteSeparate(UserInviteSeparate record) {
|
| | |
| | | Long bossId = record.getBossId();
|
| | | ThreeSale threeSale = threeSaleSerivce.getMyBoss(workerId);
|
| | | if (threeSale == null) {
|
| | | // 成功脱离 不发消息
|
| | | // 已经成功脱离 不发消息
|
| | | userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_SUCCESS);
|
| | | return;
|
| | | }
|
| | |
|
| | | boolean separate = false;
|
| | | UserVIPPreInfo info = userVIPPreInfoService.getVipByProcess(bossId, UserVIPPreInfo.PROCESS_1);
|
| | | UserVIPPreInfo info = userVIPPreInfoService.getLatestProcessInfo(bossId);
|
| | | if (info == null) {
|
| | | separate = true;
|
| | | } else if (info.getCreateTime().getTime() >= record.getEndTime().getTime()) {
|
| | | separate = true; |
| | | } else if (info.getProcess() == UserVIPPreInfo.PROCESS_1) {
|
| | | if (info.getCreateTime().getTime() < record.getEndTime().getTime()) {
|
| | | separate = true; // 成为会员 晚于 脱离时间
|
| | | }
|
| | | } else if (info.getProcess() == UserVIPPreInfo.PROCESS_2) {
|
| | | Date upTime = info.getCreateTime();
|
| | | UserVIPPreInfo info1 = userVIPPreInfoService.getVipByProcess(bossId, UserVIPPreInfo.PROCESS_1);
|
| | | if (info1 != null) {
|
| | | upTime = info1.getCreateTime();
|
| | | }
|
| | |
|
| | | if (upTime.getTime() < record.getEndTime().getTime()) {
|
| | | separate = true; // 成为会员 晚于 脱离时间
|
| | | }
|
| | | }
|
| | |
|
| | | if (!separate) { |
| | | // 未脱离
|
| | | if (!separate) {
|
| | | userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_INVALID);
|
| | | } else { |
| | | return;
|
| | | }
|
| | |
|
| | | // 脱离关系
|
| | | userInviteSeparateMapper.updateStateByWorkerIdAndBossId(workerId, bossId, UserInviteSeparate.STATE_SUCCESS);
|
| | | // 脱离邀请关系
|
| | | threeSaleSerivce.inviteSeparate(workerId, bossId);
|
| | | // 直接有效粉丝脱离-1
|
| | | userInviteValidNumService.reduceValidNumFirst(bossId, workerId);
|
| | | // 间接有效粉丝脱离-1
|
| | | ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
|
| | | if (threeSaleSuper != null) {
|
| | | Long bossIdSuper = threeSaleSuper.getBoss().getId();
|
| | | userInviteValidNumService.reduceValidNumSecond(bossIdSuper, workerId);
|
| | | }
|
| | |
|
| | | |
| | | UserInfo worker = userInfoService.selectByPKey(workerId);
|
| | | |
| | | // 通知上级消息
|
| | | try {
|
| | | // 提醒上级脱离
|
| | | userInviteMsgNotificationService.fansDivorced(bossId, worker.getNickName(), new Date());
|
| | | Date date = new Date();
|
| | | UserInfo worker = userInfoService.selectByPKey(workerId);
|
| | | String nickName = worker.getNickName();
|
| | | userInviteMsgNotificationService.fansDivorced(bossId, nickName, date);
|
| | |
|
| | | // 提醒上上级脱离
|
| | | ThreeSale threeSaleSuper = threeSaleSerivce.getMyBoss(bossId);
|
| | | if (threeSaleSuper != null) { // 粉丝升级提醒
|
| | | if (threeSaleSuper != null) {
|
| | | Long bossIdSuper = threeSaleSuper.getBoss().getId();
|
| | | UserInfo boss = userInfoService.selectByPKey(workerId);
|
| | | userInviteMsgNotificationService.fansDivorcedIndirect(bossIdSuper, worker.getNickName(),
|
| | | boss.getNickName(), new Date());
|
| | | userInviteMsgNotificationService.fansDivorcedIndirect(bossIdSuper, nickName, boss.getNickName(), date);
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | /**
|
| | | * 直接粉丝 -1
|
| | | * @param uid
|
| | | */
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void reduceValidNumFirst(Long uid, Long workerId) {
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
|
| | | UserInviteValidRecord.TYPE_ONE);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
| | | if (inviteValid != null) {
|
| | | int num = 0;
|
| | | if (inviteValid.getNumFirst() > 0) {
|
| | | num = inviteValid.getNumFirst() - 1;
|
| | | }
|
| | | inviteValid.setId(uid);
|
| | | inviteValid.setNumFirst(num);
|
| | | inviteValid.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
|
| | | }
|
| | | |
| | | // 删除有效记录
|
| | | userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
|
| | | }
|
| | | |
| | | /**
|
| | | * 直接粉丝 -1
|
| | | * @param uid
|
| | | */
|
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void reduceValidNumSecond(Long uid, Long workerId) {
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.getByUidAndWorkerId(uid, workerId,
|
| | | UserInviteValidRecord.TYPE_TWO);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | | |
| | | UserInviteValidNum inviteValid = userInviteValidNumMapper.selectForUpdate(uid);
|
| | | if (inviteValid != null) {
|
| | | int num = 0;
|
| | | if (inviteValid.getNumFirst() > 0) {
|
| | | num = inviteValid.getNumSecond() - 1;
|
| | | }
|
| | | inviteValid.setId(uid);
|
| | | inviteValid.setNumSecond(num);
|
| | | inviteValid.setUpdateTime(new Date());
|
| | | userInviteValidNumMapper.updateByPrimaryKeySelective(inviteValid);
|
| | | }
|
| | | |
| | | // 删除有效记录
|
| | | userInviteValidRecordMapper.deleteByPrimaryKey(record.getId());
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 间接粉丝 +1
|
| | | * @param uid
|
| | | */
|
| | |
| | | }
|
| | |
|
| | | Long bossId = threeSale.getBoss().getId();
|
| | | String uniqueKey = StringUtil.Md5(bossId + "#" + uid + "#" + UserInviteValidRecord.TYPE_ONE);
|
| | | String uniqueKey = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_ONE);
|
| | | UserInviteValidRecord record = userInviteValidRecordMapper.selectByUniqueKey(uniqueKey);
|
| | | if (record == null) {
|
| | | record = new UserInviteValidRecord();
|
| | |
| | | }
|
| | | // 间接关系
|
| | | Long bossIdSuper = threeSaleSuper.getBoss().getId();
|
| | | String uniqueKeySuper = StringUtil.Md5(bossIdSuper + "#" + uid + "#" + UserInviteValidRecord.TYPE_TWO);
|
| | | String uniqueKeySuper = StringUtil.Md5(uid + "#" + UserInviteValidRecord.TYPE_TWO);
|
| | | UserInviteValidRecord recordSuper = userInviteValidRecordMapper.selectByUniqueKey(uniqueKeySuper);
|
| | | if (recordSuper == null) {
|
| | | recordSuper = new UserInviteValidRecord();
|
| | |
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.user.UserInviteValidRecordMapper;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
|
| | |
|
| | | @Service
|
| | |
| | | return userInviteValidRecordMapper.getValidWorkerIdsByUid(uid, list, type);
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public List<UserInviteValidRecord> listFirstTeam(long start, int count, Long uid){
|
| | | return userInviteValidRecordMapper.listByTypeAndUid(start, count, uid, UserInviteValidRecord.TYPE_ONE);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public List<UserInviteValidRecord> listSecondTeam(long start, int count, Long uid){
|
| | | return userInviteValidRecordMapper.listByTypeAndUid(start, count, uid, UserInviteValidRecord.TYPE_TWO);
|
| | | }
|
| | | }
|
| | |
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.user.vip.TeamUserLevelStatisticMapper;
|
| | | import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic;
|
| | | import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService;
|
| | | import com.yeshi.fanli.service.manger.user.UserLevelManager;
|
| | |
|
| | |
| | | public class TeamUserLevelStatisticServiceImpl implements TeamUserLevelStatisticService {
|
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | |
|
| | | @Resource
|
| | | private UserLevelManager userLevelManager;
|
| | |
|
| | | @Resource
|
| | | private TeamUserLevelStatisticMapper teamUserLevelStatisticMapper;
|
| | | |
| | | @Resource
|
| | | private UserInviteValidRecordService userInviteValidRecordService;
|
| | | |
| | |
|
| | | @Override
|
| | | public TeamUserLevelStatistic selectByUid(Long uid) {
|
| | |
| | |
|
| | | @Override
|
| | | public void initData(Long uid) {
|
| | | int state = ThreeSale.STATE_SUCCESS;
|
| | | long count = threeSaleSerivce.countFirstTeam(uid, state);
|
| | | List<ThreeSale> list = threeSaleSerivce.listFirstTeam(0L, (int) count, uid, state);
|
| | | int pageSize = 1000;
|
| | | |
| | | // 直接粉丝统计
|
| | | int daRenFirstCount = 0;
|
| | | int normalFirstCount = 0;
|
| | | int highFirstCount = 0;
|
| | | int superFirstCount = 0;
|
| | | int tearcherFirstCount = 0;
|
| | | for (ThreeSale ts : list) {
|
| | | UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorker().getId());
|
| | | for (int i = 0; i < 100; i ++) {
|
| | | List<UserInviteValidRecord> list = userInviteValidRecordService.listFirstTeam(i * pageSize, pageSize, uid);
|
| | | if (list == null || list.size() == 0) {
|
| | | break;
|
| | | }
|
| | | |
| | | for (UserInviteValidRecord ts : list) {
|
| | | UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorkerId());
|
| | | if (level == UserLevelEnum.daRen) {
|
| | | daRenFirstCount++;
|
| | | } else if (level == UserLevelEnum.normalVIP) {
|
| | |
| | | tearcherFirstCount++;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | |
| | | // 间接粉丝统计
|
| | | int daRenSecondCount = 0;
|
| | | int normalSecondCount = 0;
|
| | | int highSecondCount = 0;
|
| | | int superSecondCount = 0;
|
| | | int tearcherSecondCount = 0;
|
| | | for (int i = 0; i < 100; i ++) {
|
| | | List<UserInviteValidRecord> list = userInviteValidRecordService.listSecondTeam(i * pageSize, pageSize, uid);
|
| | | if (list == null || list.size() == 0) {
|
| | | break;
|
| | | }
|
| | |
|
| | | long secondCount = threeSaleSerivce.countSecondTeam(uid, state);
|
| | | int pageSize = 1000;
|
| | | int toalPage = (int) (secondCount % pageSize == 0 ? secondCount / pageSize : secondCount / pageSize + 1);
|
| | | for (int i = 0; i < toalPage; i++) {
|
| | | list = threeSaleSerivce.listSecondTeam(i * pageSize, pageSize, uid, state);
|
| | | if (list != null)
|
| | | for (ThreeSale ts : list) {
|
| | | UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorker().getId());
|
| | | for (UserInviteValidRecord ts : list) {
|
| | | UserLevelEnum level = userLevelManager.getUserLevel(ts.getWorkerId());
|
| | | if (level == UserLevelEnum.daRen) {
|
| | | daRenSecondCount++;
|
| | | } else if (level == UserLevelEnum.normalVIP) {
|
| | |
| | | */
|
| | | public UserInviteValidNum selectByPrimaryKey(Long id);
|
| | |
|
| | | /**
|
| | | * 直接粉丝 -1
|
| | | * @param uid
|
| | | */
|
| | | public void reduceValidNumFirst(Long uid, Long workerId);
|
| | |
|
| | | /**
|
| | | * 间接粉丝 -1
|
| | | * @param uid
|
| | | */
|
| | | public void reduceValidNumSecond(Long uid, Long workerId);
|
| | |
|
| | |
|
| | | }
|
| | |
| | |
|
| | | import java.util.List;
|
| | |
|
| | | import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
|
| | |
|
| | | public interface UserInviteValidRecordService {
|
| | |
|
| | | /**
|
| | |
| | | public List<Long> getValidWorkerIdsByUid(Long uid, List<Long> list, Integer type);
|
| | |
|
| | |
|
| | | /**
|
| | | * 查询有效粉丝 一级队员
|
| | | * @param start
|
| | | * @param count
|
| | | * @param uid
|
| | | * @return
|
| | | */
|
| | | public List<UserInviteValidRecord> listFirstTeam(long start, int count, Long uid);
|
| | |
|
| | | |
| | | /**
|
| | | * 查询间接有效粉丝
|
| | | * @param start
|
| | | * @param count
|
| | | * @param uid
|
| | | * @return
|
| | | */
|
| | | public List<UserInviteValidRecord> listSecondTeam(long start, int count, Long uid);
|
| | |
|
| | |
|
| | |
|
| | | }
|