diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoney.java b/src/main/java/com/sqx/modules/app/entity/UserMoney.java index 7d42b004..ca27673b 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoney.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoney.java @@ -57,4 +57,7 @@ public class UserMoney implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long sysUserId; + private BigDecimal inviteIncomeMoney;; + private BigDecimal inviteIncomeCoin; + } diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java index fbedc7a4..a9e7c914 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java @@ -16,5 +16,4 @@ public interface UserMoneyService extends IService { void updateSysMoney(int i, Long userId, double money); void updateSysAmount(int i, Long userId, double amount); - } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java index 50a16fed..4d1fbe42 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java @@ -1,5 +1,6 @@ package com.sqx.modules.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; @@ -7,6 +8,7 @@ import com.github.pagehelper.PageInfo; import com.sqx.common.utils.PageUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.dao.UserMoneyDetailsDao; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.service.UserMoneyDetailsService; import org.springframework.stereotype.Service; @@ -58,6 +60,7 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl map = new HashMap<>(2); map.put("inviteMoney", inviteMoney == null ? 0 : inviteMoney); map.put("inviteGoldMoney", inviteGoldMoney == null ? 0 : inviteGoldMoney); diff --git a/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java b/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java index a129bafb..ee1b8162 100644 --- a/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java +++ b/src/main/java/com/sqx/modules/invite/controller/app/AppInviteController.java @@ -1,6 +1,8 @@ package com.sqx.modules.invite.controller.app; +import cn.hutool.core.map.MapBuilder; +import cn.hutool.core.map.MapUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,6 +15,7 @@ import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.LoginUser; import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyService; @@ -114,12 +117,13 @@ public class AppInviteController { // Integer inviteSignCount = inviteService.selectInviteSignCount(userEntity.getInvitationCode()); int inviteSignCount = inviteAchievementService.count(new LambdaQueryWrapper().eq(InviteAchievement::getState, 1) .eq(InviteAchievement::getUserId, userId)); - Map earningMap = userMoneyDetailsService.queryUserTotalEarning(userId); + UserMoney userMoney = userMoneyService.getOne(new LambdaQueryWrapper().eq(UserMoney::getUserId, userId)); +// Map earningMap = userMoneyDetailsService.queryUserTotalEarning(userId); Map result = new HashMap<>(); result.put("inviteMoney", inviteMoney); result.put("inviteCount", inviteCount); result.put("inviteSignCount", inviteSignCount); - result.put("earning", earningMap); + result.put("earning", MapUtil.builder().put("inviteMoney", userMoney == null ? null :userMoney.getInviteIncomeMoney()).put("inviteGoldMoney", userMoney.getInviteIncomeCoin())); return Result.success().put("data", result); } diff --git a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java index bdae0e73..0314c357 100644 --- a/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java +++ b/src/main/java/com/sqx/modules/job/task/TempOrdersTask.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.common.utils.DateUtils; import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserMoneyDetailsService; @@ -207,6 +208,9 @@ public class TempOrdersTask { return; } InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(user.getUserId()); + + BigDecimal incomeMoney = new BigDecimal(0); + BigDecimal incomeCoin = new BigDecimal(0); // 首次达标 int signCount = Integer.parseInt(commonRepository.findOne(913).getValue()); logger.info("{}签到次数: {}", user.getUserName(), inviteAchievement.getCount()); @@ -230,6 +234,7 @@ public class TempOrdersTask { inviteAchievement.setState(1); inviteAchievementService.updateById(inviteAchievement); + incomeMoney = incomeMoney.add(new BigDecimal(amount)); //代理 if (StringUtils.isNotBlank(user.getQdCode()) && !"666666".equals(user.getQdCode())) { @@ -242,6 +247,12 @@ public class TempOrdersTask { userMoneyService.updateSysAmount(1, sysUser.getUserId(), Double.parseDouble(qdAward)); userMoneyDetailsService.save(userMoneyDetails4); + + UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(sysUser.getSysUserId()); + userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney().add(new BigDecimal(qdAward))); + userMoneyService.update(userMoney, new LambdaQueryWrapper() + .eq(UserMoney::getSysUserId, userMoney.getSysUserId()) + .eq(UserMoney::getId, userMoney.getId())); } } } @@ -252,7 +263,7 @@ public class TempOrdersTask { .eq(InviteAchievement::getState, 1)); logger.info("邀请人员: {}", count); //count 邀请的已达标人数 - completAwardService.list(new QueryWrapper().eq("invite_count", count).eq("status", 1)).forEach(completAward -> { + for (CompletAward completAward : completAwardService.list(new QueryWrapper().eq("invite_count", count).eq("status", 1))) { QueryWrapper moneyDetailsQuery = new QueryWrapper<>(); moneyDetailsQuery.eq("classify", 6); moneyDetailsQuery.eq("user_id", sourceUser.getUserId()); @@ -269,6 +280,7 @@ public class TempOrdersTask { userMoneyService.updateMoney(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue()); userMoneyDetailsService.save(userMoneyDetails1); + incomeCoin = completAward.getAwardNumber(); break; case 2: UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails( @@ -277,10 +289,21 @@ public class TempOrdersTask { userMoneyService.updateAmount(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue()); userMoneyDetailsService.save(userMoneyDetails2); + incomeMoney = incomeMoney.add(completAward.getAwardNumber()); break; } } - }); + } + + + if (incomeMoney.compareTo(BigDecimal.ZERO) > 0 || incomeCoin.compareTo(BigDecimal.ZERO) > 0) { + UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(sourceUser.getUserId()); + userMoney.setInviteIncomeCoin(userMoney.getInviteIncomeCoin().add(incomeCoin)); + userMoney.setInviteIncomeMoney(userMoney.getInviteIncomeMoney().add(incomeMoney)); + userMoneyService.update(userMoney, new LambdaQueryWrapper() + .eq(UserMoney::getUserId, userMoney.getUserId()) + .eq(UserMoney::getId, userMoney.getId())); + } } } diff --git a/src/test/java/com/sqx/Tets.java b/src/test/java/com/sqx/Tets.java index 001f5575..168e8281 100644 --- a/src/test/java/com/sqx/Tets.java +++ b/src/test/java/com/sqx/Tets.java @@ -2,13 +2,29 @@ package com.sqx; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.aliyun.credentials.provider.StaticCredentialsProvider; +import com.aliyun.tea.TeaException; +import com.aliyun.teaopenapi.models.Config; +import com.aliyun.dytnsapi20200217.Client; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.sqx.modules.app.dao.UserMoneyDetailsDao; +import com.sqx.modules.app.entity.InviteAchievement; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoneyDetails; +import com.sqx.modules.app.service.InviteAchievementService; import com.sqx.modules.app.service.UserService; +import com.sqx.modules.job.task.TempOrdersTask; import com.sqx.modules.pay.controller.app.WuyouController; +import com.sqx.modules.pay.dao.PayDetailsDao; +import com.sqx.modules.pay.entity.PayDetails; +import com.sqx.modules.pay.service.PayDetailsService; +import com.sqx.modules.pay.wuyou.BaseResp; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +38,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; @ActiveProfiles("dev") @@ -31,18 +48,102 @@ public class Tets { ApplicationContext applicationContext; @Autowired UserService userService; + @Autowired + TempOrdersTask tempOrdersTask; + @Autowired + InviteAchievementService inviteAchievementService; + @Autowired + PayDetailsService payDetailsService; + @Autowired + PayDetailsDao payDetailsDao; + @Autowired + UserMoneyDetailsDao userMoneyDetailsDao; + @Test + public void test2() { + inviteAchievementService.remove(new LambdaQueryWrapper<>()); + + List userinfoList = userService.list(); + + for (UserEntity userEntity : userinfoList) { + if (StrUtil.isBlank(userEntity.getInviterCode())) continue; + + UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); + + if (byUser == null) continue; + + + Integer count = payDetailsDao.selectCount(new LambdaQueryWrapper() + .eq(PayDetails::getState, 1) + .eq(PayDetails::getUserId, userEntity.getUserId()) + .eq(PayDetails::getClassify, 9)); + + Integer count1 = userMoneyDetailsDao.selectCount(new LambdaQueryWrapper() + .eq(UserMoneyDetails::getClassify, 6) + .eq(UserMoneyDetails::getByUserId, userEntity.getUserId()) + .eq(UserMoneyDetails::getUserId, byUser.getUserId()) + .eq(UserMoneyDetails::getTitle, "分享达标奖励")); + + InviteAchievement inviteAchievement = inviteAchievementService.getByUserId(userEntity.getUserId()); + if (inviteAchievement == null) { + inviteAchievement = new InviteAchievement(); + inviteAchievement.setState(count1 > 0 ? 1 : 0); + inviteAchievement.setCount(count); + inviteAchievement.setCreateTime(DateUtil.date()); + inviteAchievement.setTargetUserId(userEntity.getUserId()); + inviteAchievement.setUserId(byUser.getUserId()); + inviteAchievementService.save(inviteAchievement); + } else { + inviteAchievement.setState(count1 > 0 ? 1 : 0); + inviteAchievement.setCount(count); + inviteAchievement.setCreateTime(DateUtil.date()); + inviteAchievement.setTargetUserId(userEntity.getUserId()); + inviteAchievement.setUserId(byUser.getUserId()); + inviteAchievementService.update(new LambdaQueryWrapper() + .eq(InviteAchievement::getUserId, inviteAchievement.getUserId()) + .eq(InviteAchievement::getId, inviteAchievement.getId())); + } + + } + + + } + @Test public void test() { // } - WuyouController proxy = applicationContext.getBean(WuyouController.class); - UserEntity userEntity = userService.selectUserById(26972L); - UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); - +// WuyouController proxy = applicationContext.getBean(WuyouController.class); +// UserEntity userEntity = userService.selectUserById(26972L); +// UserEntity byUser = userService.queryByInvitationCode(userEntity.getInviterCode()); +// // proxy.activities(userEntity, byUser); - System.out.println(proxy); +// System.out.println(proxy); +// BaseResp baseResp = JSONObject.parseObject("{\"msg\":\"查询成功\",\"code\":200,\"payStatus\":\"NOTPAY\",\"status\":99999}", BaseResp.class); +// tempOrdersTask.order(); +// List payDetailsList = payDetailsDao.selectList(new LambdaQueryWrapper() +// .eq(PayDetails::getState, 0) +// .lt(PayDetails::getCreateTime, DateUtil.offsetMinute(DateUtil.date(), -15))); + } + public static com.aliyun.dytnsapi20200217.Client createClient() throws Exception { + // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 + // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。 + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); + // Endpoint 请参考 https://api.aliyun.com/product/Dytnsapi + config.endpoint = "dytnsapi.aliyuncs.com"; + return new com.aliyun.dytnsapi20200217.Client(config); + } + + public static void main(String[] args) { - + assert false : "asdasfqwerq3rqwr"; } + + + + }