//package cc.mrbird.febs; // //import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; //import cc.mrbird.febs.common.contants.AppContants; //import cc.mrbird.febs.common.exception.FebsException; //import cc.mrbird.febs.common.utils.RedisUtils; //import cc.mrbird.febs.dapp.entity.*; //import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; //import cc.mrbird.febs.dapp.enumerate.MemberOnHookPlanEnum; //import cc.mrbird.febs.dapp.mapper.*; //import cc.mrbird.febs.dapp.service.DappWalletService; //import cc.mrbird.febs.dapp.service.MemberOnHookPlan; //import cc.mrbird.febs.job.MineProfitJob; //import cn.hutool.core.codec.Base64; //import cn.hutool.core.collection.CollUtil; //import cn.hutool.core.date.DateTime; //import cn.hutool.core.date.DateUnit; //import cn.hutool.core.date.DateUtil; //import cn.hutool.core.util.CharsetUtil; //import cn.hutool.core.util.ObjectUtil; //import cn.hutool.core.util.RandomUtil; //import cn.hutool.core.util.StrUtil; //import cn.hutool.crypto.SecureUtil; //import cn.hutool.crypto.asymmetric.KeyType; //import cn.hutool.crypto.asymmetric.RSA; //import cn.hutool.json.JSONObject; //import cn.hutool.json.JSONUtil; //import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //import org.jline.utils.Log; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Value; //import org.springframework.boot.test.context.SpringBootTest; // //import java.math.BigDecimal; //import java.security.KeyPair; //import java.text.DecimalFormat; //import java.text.Format; //import java.text.SimpleDateFormat; //import java.util.*; // ///** // * @author // * @date 2022-03-28 // **/ //@SpringBootTest //public class JunitTest { // //// @Autowired //// private MineProfitJob mineProfitJob; //// @Autowired //// private DappMemberDao dappMemberDao; //// //// @Test //// public void incomeTest() { //// mineProfitJob.start(); //// } //// //// @Test //// public void userTest() { //// DappMemberEntity member = dappMemberDao.selectById(6L); //// mineProfitJob.calAgentMoney(member, BigDecimal.TEN); //// } //// //// public static void main(String[] args) { //// DateTime tomorrow = DateUtil.beginOfDay(DateUtil.tomorrow()); //// System.out.println(DateUtil.between(new Date(), tomorrow, DateUnit.SECOND, true)); //// } //// //// public String PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1cHrcMpXoKNC8rjAa/jAbgU2bhIBmJmn6iYDfqt0Him/p2s5F0L9nfzZOLYlPq3z12zvXl9IgThhtLIBLi86RPW0ljuwpTvIZz9O36Zae9eMk5bMNsFEFsxg1IOLIM2Oc4ffNvGL58Uupp9RL5NCN1MRQyY61ISy7H2VRTznoJQIDAQAB"; //// public String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALVwetwylego0LyuMBr+MBuBTZuEgGYmafqJgN+q3QeKb+nazkXQv2d/Nk4tiU+rfPXbO9eX0iBOGG0sgEuLzpE9bSWO7ClO8hnP07fplp714yTlsw2wUQWzGDUg4sgzY5zh9828YvnxS6mn1Evk0I3UxFDJjrUhLLsfZVFPOeglAgMBAAECgYAPKWWS5gVB37tFsRajAs+5VK5MCyABqT8c6QWkay5KNYbRl2+6RM3h068RjFuXlUB9eQMAqpasDWqcIOZdqcKqmxm0ILF2zfPzJr4RaQNSNwDCVrKEeaDtrZQcq/0ygaNDF9y203UMHT0dfEQSGp/xkjTgXNsOuC9iLM56XScOVwJBAPOZLbrCi0h4PL7g3rWsCw8/aN6ehkJ3iTDgjYpdBwJOJSyxV0qi0xmDthGqPd99Kvc14u1jy3ghpm1SAEunrj8CQQC+rS6qajIkK7NiRmX43chDhgMPGo0UFHbmHyYBb1Eyrxu1MNWQEh221p54GsB2HqAGRhxxQ98Ds2S26Au7QpibAkA2nQAAn/8kFzjfPoEPz+uG1puHVZkaK7yJRb7V53dbz/NLqtK8O/cCAGKAYV+PzHsmg2FGAZqrazfpyHmifIx3AkBnFau/+A/JnFKr09F3XTfSwZXPyZPyAipRuQ9MAUmNtDuvloovDIxB9//OgPACLAZpvefMmFvuXUMa25LUF2n3AkBGb+vO+69NSyQM2SHKZ9fUrxx9ZPhupNt/TXNL9OMEQiLaHCYgg0tfcojGe3QjBCA6wVG+dCyZUcv5OwiW23pI"; //// //// @Test //// public void encodeTest() { //// RSA rsa = new RSA(AppContants.REQ_PRIVATE_KEY, AppContants.REQ_PUBLIC_KEY); //// Map map = new HashMap<>(); //// map.put("test", 123); //// String s = JSONObject.toJSONString(map); //// String s1 = rsa.encryptBase64(s, KeyType.PublicKey); //// System.out.println(s1); //// } //// //// @Test //// public void decodeTest() { //// String ss = "pAEYpX4a+gm9lqy2/bQNx/EjJS0D7I/ezcCB+G/pgI5GDLWUj7+S7jhGWlV2PTGHcNj8vJQRXp5qpV7GOmaQX30HVao3srsOEL2CWU5F/5A4T9ncs3NuoYEv5LUCTolEEq8r5VdBRzU9BoZCISLFQxjFIp5inuydjz2JE9lnOBYQIP8kZSXHy2N1gkythypbj81q9cC83wNND7pvSjw140EDtXWqlCIhpoZlwB/n8+D5khBHwxWhuf0wacYLj9aKZ8tSKMyw0/WdQvpBZ6ymxuoHrLlcL36PTEN59rce9tnnRs5+AjAXppx4GIODdvbHLQJurBslw2GVHJeDbugRvA=="; //// RSA rsa = new RSA(AppContants.RESP_PRIVATE_KEY, AppContants.RESP_PUBLIC_KEY); //// String s = rsa.decryptStr(ss, KeyType.PrivateKey); //// System.out.println(s); //// } //// //// @Autowired //// private DataDictionaryCustomMapper dataDictionaryCustomMapper; //// @Autowired //// private RedisUtils redisUtils; //// @Autowired //// private DappOnHookAwardDao dappOnHookAwardDao; //// @Test //// public void getmember(){//获取下一个开奖 //// String redisKey = "on_hook_award_id"; //// String onHookAwardRedisId = redisUtils.getString(redisKey); //// DappOnHookAward dappOnHookAward = dappOnHookAwardDao.selectById(Long.parseLong(onHookAwardRedisId)); //// if(ObjectUtil.isEmpty(dappOnHookAward)){ //// throw new FebsException(MessageSourceUtils.getString("login_err_003")); //// } //// Date awardTime = dappOnHookAward.getAwardTime(); //// System.out.println(awardTime); //// DateTime dateTime = DateUtil.offsetMinute(awardTime, 5); //// for(int i =1; i < 100;i++){ //// String yyyyMMddHHMM = DateUtil.format(dateTime, "yyyy-MM-dd HH:mm"); ////// DappOnHookAward dappOnHookAwardNext = dappOnHookAwardDao.selectByByAwardTime(yyyyMMddHHMM); //// System.out.println(yyyyMMddHHMM); //// dateTime = DateUtil.offsetMinute(dateTime, 5); //// } //// } //// //// @Autowired //// private DappMemberDao dappMemberDao; //// @Test //// public void getplan(){ //// DappMemberEntity dappMember = dappMemberDao.selectById(33); //// List dataDictionaryCustoms = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.PLAN_A.getType()); //// LinkedList> strings = new LinkedList<>(); //// for(DataDictionaryCustom dataDictionaryCustom : dataDictionaryCustoms){ //// Map stringStringHashMap = new HashMap<>(); //// stringStringHashMap.put(dataDictionaryCustom.getDescription(),dataDictionaryCustom.getValue()); //// strings.add(stringStringHashMap); //// } //// //收益率 //// BigDecimal hangingRevenue = BigDecimal.ZERO; //// //挂机时长 //// DataDictionaryCustom maxHours = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode()); //// if(ObjectUtil.isEmpty(maxHours)){ //// throw new FebsException(MessageSourceUtils.getString("login_err_003")); //// } //// //// Double maxHoursValue = Double.parseDouble(maxHours.getValue()); //// //获取用户信息的是否盈利字段 //// Integer isProfit = dappMember.getIsProfit() == null ? 1 : dappMember.getIsProfit(); //// String identity = null; //// if(isProfit == 2){ //// identity = "IS_PROFIT_NO"; //// }else{ //// identity = "LEVEL_MB"; //// DataDictionaryCustom levelMember = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMember.getIdentity()); //// if(ObjectUtil.isEmpty(levelMember)){ //// throw new FebsException(MessageSourceUtils.getString("login_err_003")); //// } //// String levelMemberValue = levelMember.getValue(); //// JSONObject levelMemberValueParse = JSONUtil.parseObj(levelMemberValue); //// hangingRevenue = new BigDecimal(levelMemberValueParse.get("hangingRevenue").toString()) //// .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN); //// } //// //获取挂机字表的顺序 //// LinkedList isProfitPlan = new LinkedList<>(); //// Map> identity_level = MemberOnHookPlanEnum.valueOf(identity) //// .getMemberOnHook(maxHoursValue,hangingRevenue,strings); //// isProfitPlan = identity_level.get(identity); //// System.out.println(isProfitPlan); //// //// } //// //// //// @Autowired //// private DappWalletCoinDao dappWalletCoinDao; //// //// //// @Autowired //// private DappWalletCoinDao dappWalletCoinDao; //// //// @Test //// public void updateMemberLevel(){ //// Log.info("更新用户代理等级"); //// DateTime date = DateUtil.date(); //// //查询账户总金额大于51的有效用户 //// List dappMemberEntities = dappWalletCoinDao.selectTotalAmount(); //// if(CollUtil.isEmpty(dappMemberEntities)){ //// //没有账户金额大于51,则全部为会员 //// dappMemberDao.updateIdentity(); //// }else{ //// List LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode()); //// List LEVEL_FIB = getMemberLevelList(LEVEL_IB, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode()); //// List LEVEL_CIB = getMemberLevelList(LEVEL_FIB, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode()); //// List LEVEL_AIB = getMemberLevelList(LEVEL_CIB, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode()); //// List LEVEL_GIB = getMemberLevelList(LEVEL_AIB, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode()); //// List LEVEL_BP = getMemberLevelList(LEVEL_GIB, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode()); //// List LEVEL_SP = getMemberLevelList(LEVEL_BP, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode()); //// List LEVEL_GP = getMemberLevelList(LEVEL_SP, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode()); //// } //// } //// //// private List getMemberLevelList(List dappMemberEntities,String identity,String identityNext){ //// List dappMemberEntitiesNext = new ArrayList<>(); //// if(CollUtil.isNotEmpty(dappMemberEntities)){ //// for(DappMemberEntity dappMemberEntity : dappMemberEntities){ //// Long memberEntityId = dappMemberEntity.getId(); //// String refererId = dappMemberEntity.getRefererId(); //// String inviteId = dappMemberEntity.getInviteId(); //// //下级是否存在三个账户总金额大于51的会员,并且代理等级为identity //// List levelMbMembers = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(inviteId,identity); //// if(CollUtil.isNotEmpty(levelMbMembers) && 3 <= levelMbMembers.size()){ //// //设置identityNext级别 //// dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId); //// //获取他的上级会员信息 //// DappMemberEntity dappMemberEntityNext = dappMemberDao.selectMemberInfoByInviteId(refererId); //// dappMemberEntitiesNext.add(dappMemberEntityNext); //// } //// } //// } //// return dappMemberEntitiesNext; //// } // // // // // @Autowired // private IgtOnHookPlanOrderItemDao igtOnHookPlanOrderItemDao; // // @Autowired // private IgtOnHookPlanOrderDao igtOnHookPlanOrderDao; // // @Autowired // private DappWalletCoinDao dappWalletCoinDao; // // @Autowired // private DappAccountMoneyChangeDao dappAccountMoneyChangeDao; // // @Autowired // private DappMemberDao dappMemberDao; // // @Autowired // private DappOnHookAwardDao dappOnHookAwardDao; // // @Autowired // private RedisUtils redisUtils; // // @Autowired // private DataDictionaryCustomMapper dataDictionaryCustomMapper; // // @Autowired // private DappWalletService dappWalletService; // // // @Value("${spring.profiles.active}") // private String active; // // @Test // public void getActive(){ // System.out.println(active); // } // // @Test // public void testUpdateIgt(){//返还两次中奖之间的本金 // IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = igtOnHookPlanOrderItemDao.selectById(3758); // Date endTime = igtOnHookPlanOrderItem.getCreateTime(); // Date startTime = null; // //返回上次中奖的记录 // IgtOnHookPlanOrderItem igtOld = igtOnHookPlanOrderItemDao.selectByCreateTimeAndIsgoaAndOrderId(endTime,1,188L); // if(ObjectUtil.isNotEmpty(igtOld)){ // startTime = igtOld.getCreateTime(); // } // BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByCreateTimeAndOrderId(startTime,endTime,188L); // } // // @Test // public void testProfitSharing(){ // IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(129L); // Long orderId = igtOnHookPlanOrder.getId(); // Long memberId = igtOnHookPlanOrder.getMemberId(); // BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount(); // BigDecimal avaAmount = igtOnHookPlanOrder.getAvaAmount(); // IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = igtOnHookPlanOrderItemDao.selectByOrderIdAndMemberIdAndState(orderId,memberId,2); // if(ObjectUtil.isEmpty(igtOnHookPlanOrderItem)){ // BigDecimal totalProfit = igtOnHookPlanOrderItemDao.selectTotalProfitByByOrderIdAndMemberIdAndState(orderId,memberId,1,2); // // System.out.println(totalProfit); // DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); // String refererIds = dappMemberEntity.getRefererIds(); // List refererIdList = StrUtil.split(refererIds, ",", -1, true, true); // //生成流水佣金和盈利分成和流水记录,返回剩余盈利 // BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit); // System.out.println("流水佣金和盈利分成"+profitSharingTotal); // //平台分成,返回剩余盈利 // BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,totalProfit); // System.out.println("平台分成"+systemTotal); // } // // } // // @Test // public void createAwardInfo(){ // Log.info("挂机开奖记录"); // /** // * 每天跑一次,直接生成全部的记录 // * 产生中奖记录 // */ // //每天开奖次数 288次 // DateTime date = DateUtil.date(); // // String aWardTime = DateUtil.format(date, "yyyy-MM-dd"); // DateTime aWardTimeStart = DateUtil.parseDateTime(aWardTime + " 00:00:00"); //// DateTime dateTime = DateUtil.offsetMinute(aWardTimeStart, 5); // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String yyyyMMdd = sdf.format(date); // QueryWrapper dappOnHookAwardQueryWrapper = new QueryWrapper(); // dappOnHookAwardQueryWrapper.like("record_num",yyyyMMdd); // Integer selectCount = dappOnHookAwardDao.selectCount(dappOnHookAwardQueryWrapper); // if(0 == selectCount){ // Format formatCount = new DecimalFormat("000"); // //一般都是将累加的数字当做一些单号的一部分,format要求string // int dayMillise = (24 * 60) / 5; // for(int i= 1;i <= dayMillise;i++){ // DappOnHookAward dappOnHookAward = new DappOnHookAward(); // int randomInt = RandomUtil.randomInt(10000, 99999); // dappOnHookAward.setAwardNum(Integer.toString(randomInt)); // dappOnHookAward.setState(2); // String str = formatCount.format(i); // dappOnHookAward.setRecordNum(yyyyMMdd+str); // dappOnHookAward.setAwardTime(aWardTimeStart); // dappOnHookAwardDao.insert(dappOnHookAward); // aWardTimeStart = DateUtil.offsetMinute(aWardTimeStart, 5); // } // } // // DateTime tomorrow = DateUtil.tomorrow(); // String tomorrowTime = DateUtil.format(tomorrow, "yyyy-MM-dd"); // DateTime tomorrowTimeStart = DateUtil.parseDateTime(tomorrowTime + " 00:00:00"); //// DateTime dateTime = DateUtil.offsetMinute(aWardTimeStart, 5); // String tomorrowYyyyMMdd = sdf.format(tomorrow); // QueryWrapper tomorrowYyyyMMddWrapper = new QueryWrapper(); // tomorrowYyyyMMddWrapper.like("record_num",tomorrowYyyyMMdd); // Integer tomorrowSelectCount = dappOnHookAwardDao.selectCount(tomorrowYyyyMMddWrapper); // if(0 == tomorrowSelectCount){ // Format formatCount = new DecimalFormat("000"); // //一般都是将累加的数字当做一些单号的一部分,format要求string // int dayMilliseT = (24 * 60) / 5; // for(int i= 1;i <= dayMilliseT;i++){ // DappOnHookAward dappOnHookAward = new DappOnHookAward(); // int randomInt = RandomUtil.randomInt(10000, 99999); // dappOnHookAward.setAwardNum(Integer.toString(randomInt)); // dappOnHookAward.setState(2); // String str = formatCount.format(i); // dappOnHookAward.setRecordNum(tomorrowYyyyMMdd+str); // dappOnHookAward.setAwardTime(tomorrowTimeStart); // dappOnHookAwardDao.insert(dappOnHookAward); // tomorrowTimeStart = DateUtil.offsetMinute(tomorrowTimeStart, 5); // } // // } // } // // //}