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(){ Log.info("开始更新挂机子表状态"); List igtOnHookPlanOrders = igtOnHookPlanOrderDao.selectByState(1); if(CollUtil.isEmpty(igtOnHookPlanOrders)){ return; } for(IgtOnHookPlanOrder igtOnHookPlanOrder : igtOnHookPlanOrders){ BigDecimal avaAmount = igtOnHookPlanOrder.getAvaAmount(); if(avaAmount.compareTo(BigDecimal.ZERO) > 0){ /** * 获取下一个开奖记录 * 生成一条开奖字表记录 * 计算收益 */ String redisKey = ""; if("prod".equals(active)){ redisKey = "on_hook_award_id"; }else{ redisKey = "on_hook_award_id_test"; } String onHookAwardRedisId = redisUtils.getString(redisKey); DappOnHookAward dappOnHookAward = dappOnHookAwardDao.selectById(Long.parseLong(onHookAwardRedisId)); Date awardTime = dappOnHookAward.getAwardTime(); DateTime dateTime = DateUtil.offsetMinute(awardTime, 5); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); String yyyyMMddHHMM = sdf.format(dateTime); DappOnHookAward dappOnHookAwardNext = dappOnHookAwardDao.selectByByAwardTime(yyyyMMddHHMM); //系统挂机总次数 = 时长 * 60 / 5 DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode()); Float maxHours = Float.parseFloat(maxHoursDic.getValue()); maxHours = maxHours * 60 / 5; List igtOnHookPlanOrderItemsOld = igtOnHookPlanOrderItemDao.selectByIgtIdAndMemberId(igtOnHookPlanOrder.getId(),igtOnHookPlanOrder.getMemberId()); //如果没有中奖记录则是新增一条1挂机方案的挂机子表记录 if(CollUtil.isEmpty(igtOnHookPlanOrderItemsOld)){ IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = new IgtOnHookPlanOrderItem(); igtOnHookPlanOrderItem.setMemberId(igtOnHookPlanOrder.getMemberId()); igtOnHookPlanOrderItem.setOrderId(igtOnHookPlanOrder.getId()); //获取挂机方案 DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PLAN_A.getType(), DataDictionaryEnum.PLAN_A.getCode()); String dataDictionaryCustomValue = dataDictionaryCustom.getValue(); JSONObject levelMemberValueParse = JSONUtil.parseObj(dataDictionaryCustomValue); BigDecimal amountPlanA = new BigDecimal(levelMemberValueParse.get("amount").toString()) .multiply(new BigDecimal(igtOnHookPlanOrder.getPlanCode())).setScale(4,BigDecimal.ROUND_DOWN); igtOnHookPlanOrderItem.setAmount(amountPlanA); //获取收益率 DappMemberEntity dappMemberEntity = dappMemberDao.selectById(igtOnHookPlanOrder.getMemberId()); DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity()); String identityDicValue = identityDic.getValue(); JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue); BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString()) .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN); //获取收益 BigDecimal profit = amountPlanA.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN); igtOnHookPlanOrderItem.setProfit(profit.setScale(4,BigDecimal.ROUND_DOWN)); igtOnHookPlanOrderItem.setState(1); igtOnHookPlanOrderItem.setPlanCode(igtOnHookPlanOrder.getPlanCode()); Integer isGoal = dappWalletService.isGoal(dappOnHookAwardNext.getAwardNum()); igtOnHookPlanOrderItem.setIsGoal(isGoal); igtOnHookPlanOrderItem.setBelongNum(dappOnHookAwardNext.getRecordNum()); igtOnHookPlanOrderItem.setOrderNum(1); igtOnHookPlanOrderItem.setPlan(dataDictionaryCustom.getDescription()); igtOnHookPlanOrderItemDao.insert(igtOnHookPlanOrderItem); if(2 == igtOnHookPlanOrderItem.getIsGoal()){ //如果中奖,增加挂机主表的挂机总收益 Integer updateCount = igtOnHookPlanOrderDao.AddProfitById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getProfit()); }else{ //如果不中奖,减少挂机剩余金额即减少本金 Integer updateCount = igtOnHookPlanOrderDao.updateAvaAmountById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getAmount()); } }else if(2 == igtOnHookPlanOrderItemsOld.get(0).getIsGoal()){ //第一条中奖记录为中奖则是新增一条1挂机方案的挂机子表记录 IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = new IgtOnHookPlanOrderItem(); igtOnHookPlanOrderItem.setMemberId(igtOnHookPlanOrder.getMemberId()); igtOnHookPlanOrderItem.setOrderId(igtOnHookPlanOrder.getId()); //获取挂机方案 DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PLAN_A.getType(), DataDictionaryEnum.PLAN_A.getCode()); String dataDictionaryCustomValue = dataDictionaryCustom.getValue(); JSONObject levelMemberValueParse = JSONUtil.parseObj(dataDictionaryCustomValue); BigDecimal amountPlanA = new BigDecimal(levelMemberValueParse.get("amount").toString()) .multiply(new BigDecimal(igtOnHookPlanOrder.getPlanCode())).setScale(4,BigDecimal.ROUND_DOWN); //此次下注金额不足,则更新主表信息为结算中 //挂机次数超过系统规定的时间,则更新主表信息为结算中 if(avaAmount.compareTo(amountPlanA) < 0 || igtOnHookPlanOrderItemsOld.get(0).getOrderNum() >= maxHours){ igtOnHookPlanOrder.setState(3); igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder); }else{ igtOnHookPlanOrderItem.setAmount(amountPlanA); //获取收益率 DappMemberEntity dappMemberEntity = dappMemberDao.selectById(igtOnHookPlanOrder.getMemberId()); DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity()); String identityDicValue = identityDic.getValue(); JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue); BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString()) .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN); //获取收益 BigDecimal profit = amountPlanA.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN); igtOnHookPlanOrderItem.setProfit(profit.setScale(4,BigDecimal.ROUND_DOWN)); igtOnHookPlanOrderItem.setState(1); igtOnHookPlanOrderItem.setPlanCode(igtOnHookPlanOrder.getPlanCode()); Integer isGoal = dappWalletService.isGoal(dappOnHookAwardNext.getAwardNum()); igtOnHookPlanOrderItem.setIsGoal(isGoal); igtOnHookPlanOrderItem.setBelongNum(dappOnHookAwardNext.getRecordNum()); igtOnHookPlanOrderItem.setOrderNum(igtOnHookPlanOrderItemsOld.get(0).getOrderNum() + 1); igtOnHookPlanOrderItem.setPlan(dataDictionaryCustom.getDescription()); igtOnHookPlanOrderItemDao.insert(igtOnHookPlanOrderItem); if(2 == igtOnHookPlanOrderItem.getIsGoal()){ //如果中奖,增加挂机主表的挂机总收益 Integer updateCount = igtOnHookPlanOrderDao.AddProfitById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getProfit()); }else{ //如果不中奖,减少挂机剩余金额即减少本金 Integer updateCount = igtOnHookPlanOrderDao.updateAvaAmountById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getAmount()); } } }else{ //第一条没中奖则是新增一条n+1挂机方案的挂机子表记录 String plan = igtOnHookPlanOrderItemsOld.get(0).getPlan(); IgtOnHookPlanOrderItem igtOnHookPlanOrderItem = new IgtOnHookPlanOrderItem(); igtOnHookPlanOrderItem.setMemberId(igtOnHookPlanOrder.getMemberId()); igtOnHookPlanOrderItem.setOrderId(igtOnHookPlanOrder.getId()); //获取挂机方案 DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCodeAndDesc( DataDictionaryEnum.PLAN_A.getType(), Integer.toString(Integer.parseInt(plan)+1)); String dataDictionaryCustomValue = dataDictionaryCustom.getValue(); JSONObject levelMemberValueParse = JSONUtil.parseObj(dataDictionaryCustomValue); BigDecimal amountPlanA = new BigDecimal(levelMemberValueParse.get("amount").toString()) .multiply(new BigDecimal(igtOnHookPlanOrder.getPlanCode())).setScale(4,BigDecimal.ROUND_DOWN); igtOnHookPlanOrderItem.setAmount(amountPlanA); //此次下注金额不足,则更新主表信息为结算中 if(avaAmount.compareTo(amountPlanA) < 0 || igtOnHookPlanOrderItemsOld.get(0).getOrderNum() >= maxHours){ igtOnHookPlanOrder.setState(3); igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder); }else{ //获取收益率 DappMemberEntity dappMemberEntity = dappMemberDao.selectById(igtOnHookPlanOrder.getMemberId()); DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity()); String identityDicValue = identityDic.getValue(); JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue); BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString()) .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN); //获取收益 BigDecimal profit = amountPlanA.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN); igtOnHookPlanOrderItem.setProfit(profit.setScale(4,BigDecimal.ROUND_DOWN)); igtOnHookPlanOrderItem.setState(1); igtOnHookPlanOrderItem.setPlanCode(igtOnHookPlanOrder.getPlanCode()); Integer isGoal = dappWalletService.isGoal(dappOnHookAwardNext.getAwardNum()); igtOnHookPlanOrderItem.setIsGoal(isGoal); igtOnHookPlanOrderItem.setBelongNum(dappOnHookAwardNext.getRecordNum()); igtOnHookPlanOrderItem.setOrderNum(igtOnHookPlanOrderItemsOld.get(0).getOrderNum() + 1); igtOnHookPlanOrderItem.setPlan(dataDictionaryCustom.getDescription()); igtOnHookPlanOrderItemDao.insert(igtOnHookPlanOrderItem); if(2 == igtOnHookPlanOrderItem.getIsGoal()){ //返还两次中奖之间的本金 Date endTime = igtOnHookPlanOrderItem.getCreateTime(); Date startTime = null; //返回上次中奖的记录 IgtOnHookPlanOrderItem igtOld = igtOnHookPlanOrderItemDao.selectByCreateTimeAndIsgoaAndOrderId(endTime,1,igtOnHookPlanOrder.getId()); if(ObjectUtil.isNotEmpty(igtOld)){ startTime = igtOld.getCreateTime(); } BigDecimal totalAmount = igtOnHookPlanOrderItemDao.selectTotalAmountByCreateTimeAndOrderId(startTime,endTime,igtOnHookPlanOrder.getId()); //如果中奖,增加挂机主表的挂机总收益,返还两次中奖之间的本金 igtOnHookPlanOrderDao.AddProfitById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getProfit()); igtOnHookPlanOrderDao.addAvaAmountById(igtOnHookPlanOrder.getId() ,totalAmount); }else{ //如果不中奖,减少挂机剩余金额即减少本金 Integer updateCount = igtOnHookPlanOrderDao.updateAvaAmountById(igtOnHookPlanOrder.getId() ,igtOnHookPlanOrderItem.getAmount()); } } } } } } @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); } } } }