package com.xcong.excoin.modules.documentary.service.impl; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.validation.Valid; import javax.validation.constraints.NotNull; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.common.utils.RedisUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.entity.FebsResponse; import com.xcong.excoin.common.entity.QueryRequest; import com.xcong.excoin.modules.documentary.dto.FollowTraderInfoDto; import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity; import com.xcong.excoin.modules.documentary.entity.FollowTraderProfitInfoEntity; import com.xcong.excoin.modules.documentary.mapper.FollowTraderInfoMapper; import com.xcong.excoin.modules.documentary.mapper.FollowTraderProfitInfoMapper; import com.xcong.excoin.modules.documentary.service.DocumentaryService; import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper; import com.xcong.excoin.modules.member.mapper.MemberMapper; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @Slf4j @Service @RequiredArgsConstructor public class DocumentaryServiceImpl extends ServiceImpl implements DocumentaryService { private final FollowTraderInfoMapper followTraderInfoMapper; private final MemberAuthenticationMapper memberAuthenticationMapper; private final MemberMapper memberMapper; private final FollowTraderProfitInfoMapper followTraderProfitInfoMapper; private final RedisUtils redisUtils; @Override public IPage findTraderListInPage(FollowTraderInfoEntity followTraderInfoEntity, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage followTraderInfoEntitys = followTraderInfoMapper.findTraderListInPage(page, followTraderInfoEntity); List records = followTraderInfoEntitys.getRecords(); if(CollUtil.isNotEmpty(records)) { for(FollowTraderInfoEntity followTraderInfo : records) { Long memberId = followTraderInfo.getMemberId(); Map columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List selectByMap = memberAuthenticationMapper.selectByMap(columnMap ); if(CollUtil.isNotEmpty(selectByMap)) { MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0); String firstName = memberAuthenticationEntity.getFirstName(); String secondName = memberAuthenticationEntity.getSecondName(); String realName = firstName + secondName; followTraderInfo.setRealName(realName); } } } return followTraderInfoEntitys; } @Override public FollowTraderInfoEntity selectTraderDetailByid(long id) { FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoMapper.selectById(id); Long memberId = followTraderInfoEntity.getMemberId(); MemberEntity memberEntity = memberMapper.selectById(memberId); String phone = memberEntity.getPhone(); followTraderInfoEntity.setPhone(phone); String email = memberEntity.getEmail(); followTraderInfoEntity.setEmail(email); String inviteId = memberEntity.getInviteId(); followTraderInfoEntity.setInviteId(inviteId); Integer accountType = memberEntity.getAccountType(); followTraderInfoEntity.setAccountType(accountType); //币币账户 String walletNum = memberMapper.selectBBZCForBasicRealDataBymemberId(memberId); followTraderInfoEntity.setWalletNum(walletNum == null ? 0 : Double.parseDouble(walletNum)); //合约账户 String walletCoinNum = memberMapper.selectHYZCForBasicRealDataBymemberId(memberId); followTraderInfoEntity.setWalletCoinNum(walletCoinNum == null ? 0 : Double.parseDouble(walletCoinNum)); //代理账户 String agentNum = memberMapper.selectDLZCForBasicRealDataBymemberId(memberId); followTraderInfoEntity.setAgentNum(agentNum == null ? 0 : Double.parseDouble(agentNum)); Map columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List selectByMap = memberAuthenticationMapper.selectByMap(columnMap ); if(CollUtil.isNotEmpty(selectByMap)) { MemberAuthenticationEntity memberAuthenticationEntity = selectByMap.get(0); String firstName = memberAuthenticationEntity.getFirstName(); String secondName = memberAuthenticationEntity.getSecondName(); String realName = firstName + secondName; followTraderInfoEntity.setRealName(realName); } return followTraderInfoEntity; } @Override @Transactional public FebsResponse traderConfirm(@Valid FollowTraderInfoDto followTraderInfoDto) { Long id = followTraderInfoDto.getId(); FollowTraderInfoEntity selectById = followTraderInfoMapper.selectById(id); if(ObjectUtil.isEmpty(selectById)) { return new FebsResponse().fail().message("交易员信息不存在"); } String isok = followTraderInfoDto.getIsok(); if("1".equals(isok)) { //更新【会员信息表】数据 Long memberId = selectById.getMemberId(); MemberEntity memberEntity = memberMapper.selectById(memberId); if(ObjectUtil.isEmpty(memberEntity)) { return new FebsResponse().fail().message("会员信息不存在"); } memberEntity.setIsTrader(1); memberMapper.updateById(memberEntity); //更新【交易员信息表】数据 selectById.setVerifyStatus(FollowTraderInfoEntity.VERIFYSTATUS_Y); followTraderInfoMapper.updateById(selectById); //新增【交易员收益信息 】数据 FollowTraderProfitInfoEntity followTraderProfitInfoEntity = new FollowTraderProfitInfoEntity(); followTraderProfitInfoEntity.setCreateBy("system"); followTraderProfitInfoEntity.setCreateTime(new Date()); followTraderProfitInfoEntity.setUpdateBy("system"); followTraderProfitInfoEntity.setUpdateTime(new Date()); followTraderProfitInfoEntity.setMemberId(memberId); followTraderProfitInfoEntity.setTraderId(selectById.getId()); followTraderProfitInfoEntity.setTotalProfitRatio(BigDecimal.ZERO); followTraderProfitInfoEntity.setTotalProfit(BigDecimal.ZERO); followTraderProfitInfoEntity.setFollowerTotalProfit(BigDecimal.ZERO); followTraderProfitInfoEntity.setWinRate(BigDecimal.ZERO); followTraderProfitInfoEntity.setTotalFollowerCnt(BigDecimal.ZERO); followTraderProfitInfoEntity.setTotalOrderCnt(BigDecimal.ZERO); followTraderProfitInfoMapper.insert(followTraderProfitInfoEntity); String token = redisUtils.getString("app_" + memberEntity.getId()); redisUtils.set("app_" + token, JSONObject.toJSONString(memberEntity), 36000); }else { //更新【交易员信息表】数据 selectById.setVerifyStatus(FollowTraderInfoEntity.VERIFYSTATUS_N); followTraderInfoMapper.updateById(selectById); } return new FebsResponse().success(); } @Override public FebsResponse traderGetOut(@NotNull(message = "{required}") Long id) { FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoMapper.selectById(id); if(ObjectUtil.isEmpty(followTraderInfoEntity)) { return new FebsResponse().fail().message("交易员信息不存在"); } Long memberId = followTraderInfoEntity.getMemberId(); MemberEntity memberEntity = memberMapper.selectById(memberId); memberEntity.setIsTrader(2); memberMapper.updateById(memberEntity); return new FebsResponse().success(); } @Override @Transactional public FebsResponse traderGetFull(@NotNull(message = "{required}") Long id) { FollowTraderInfoEntity followTraderInfoEntity = followTraderInfoMapper.selectById(id); if(ObjectUtil.isEmpty(followTraderInfoEntity)) { return new FebsResponse().fail().message("交易员信息不存在"); } followTraderInfoEntity.setIsAll(1); followTraderInfoMapper.updateById(followTraderInfoEntity); return new FebsResponse().success(); } }