From fae05b7ffe899ab996f7a9c31b4c96df7964a0de Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 07 Jul 2020 21:20:55 +0800 Subject: [PATCH] add dingtalk --- src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java | 332 ++++++++++++++++++------------------ src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java | 67 +++++++ src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 50 ++--- src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java | 15 + src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java | 10 pom.xml | 9 + src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java | 46 +++++ 7 files changed, 329 insertions(+), 200 deletions(-) diff --git a/pom.xml b/pom.xml index 191b9fe..cae38c0 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,15 @@ <scope>system</scope> <systemPath>${basedir}/lib/ripple-core-0.0.1-SNAPSHOT.jar</systemPath> </dependency> + + <dependency> + <groupId>taobao</groupId> + <artifactId>taobao-sdk</artifactId> + <version>1.0.0-SNAPSHOT</version> + <scope>system</scope> + <systemPath>${basedir}/lib/taobao-sdk-java.jar</systemPath> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java index e2209a2..aea8e75 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java @@ -18,6 +18,8 @@ import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.utils.LogRecordUtils; +import com.xcong.excoin.utils.ThreadPoolUtils; +import com.xcong.excoin.utils.dingtalk.DingTalkUtils; import com.xcong.excoin.utils.mail.SmsSend; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -85,8 +87,8 @@ String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "ERC20", balance); // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.USDT.name(), 1, 1); - // TODO 钉钉发送, 短信提醒 + ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { String amount = newBalance.toPlainString() + "USDT-ERC20"; @@ -134,8 +136,8 @@ // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.ETH.name(), 1, 1); - // TODO 钉钉消息, 短信提醒 + ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { String amount = newBalance.toPlainString() + "ETH"; @@ -180,7 +182,7 @@ memberWalletCoinDao.updateBlockBalance(walletCoin.getId(), newBalance, balance, 0); String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.USDT.name(), "OMNI", balance); - // TODO 钉钉消息, 短信提醒 + ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { String amount = newBalance.toPlainString() + "USDT-OMNI"; @@ -227,7 +229,7 @@ String orderNo = insertCoinCharge(address, memberId, newBalance, CoinTypeEnum.BTC.name(), null, balance); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", newBalance, CoinTypeEnum.BTC.name(), 1, 1); - // TODO 钉钉提醒, 短信提醒 + ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { String amount = newBalance.toPlainString() + "BTC"; diff --git a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java index 3e6014a..fd6273b 100644 --- a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java @@ -6,6 +6,8 @@ import javax.annotation.Resource; +import com.xcong.excoin.utils.ThreadPoolUtils; +import com.xcong.excoin.utils.dingtalk.DingTalkType; import org.springframework.stereotype.Service; import com.alibaba.druid.util.StringUtils; @@ -33,179 +35,177 @@ import com.xcong.excoin.modules.platform.entity.PlatformPaymentMethodEntity; @Service -public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService{ - - @Resource - MemberDao memberDao; - @Resource - MemberQuickBuySaleDao memberQuickBuySaleDao; - @Resource - MemberWalletCoinDao memberWalletCoinDao; - @Resource - MemberPaymentMethodDao memberPaymentMethodDao; - @Resource - PlatformPaymentMethodDao platformPaymentMethodDao; +public class MemberQuickBuySaleServiceImpl extends ServiceImpl<MemberQuickBuySaleDao, MemberQuickBuySaleEntity> implements MemberQuickBuySaleService { - @Override - public Result recharge(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) { - // 生成订单号 - Long timestamp = System.currentTimeMillis(); - int random = (int) (Math.random() * 10); - String chargeNo = String.valueOf(timestamp).substring(2) + random; - // 插入订单表 - MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); - memberQuickBuySaleEntity.setOrderStatus(1); - memberQuickBuySaleEntity.setMemberId(member.getId()); - memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt()); - memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny()); - memberQuickBuySaleEntity.setUnitPrice(memberQuickBuySaleDto.getUnitPrice()); - memberQuickBuySaleEntity.setCreateTime(new Date()); - memberQuickBuySaleEntity.setOrderNo(chargeNo); - memberQuickBuySaleEntity.setOrderType("B"); - // 支付码 ID+四位随机数 - int ran = (int) (Math.random() * 10000000); - memberQuickBuySaleEntity.setPaymentCode(ran + ""); - - memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); - MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo(); - memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId()); - // 返回前台付款方式 - return Result.ok("提交成功",memberQuickBuySaleVo); - } + @Resource + MemberDao memberDao; + @Resource + MemberQuickBuySaleDao memberQuickBuySaleDao; + @Resource + MemberWalletCoinDao memberWalletCoinDao; + @Resource + MemberPaymentMethodDao memberPaymentMethodDao; + @Resource + PlatformPaymentMethodDao platformPaymentMethodDao; - @Override - public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) { - // 用户提交支付确认 将状态改为付款中 - MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); - memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId()); - memberQuickBuySaleEntity.setOrderStatus(2); - memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount()); - memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName()); + @Override + public Result recharge(MemberEntity member, MemberQuickBuySaleDto memberQuickBuySaleDto) { + // 生成订单号 + Long timestamp = System.currentTimeMillis(); + int random = (int) (Math.random() * 10); + String chargeNo = String.valueOf(timestamp).substring(2) + random; + // 插入订单表 + MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); + memberQuickBuySaleEntity.setOrderStatus(1); + memberQuickBuySaleEntity.setMemberId(member.getId()); + memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt()); + memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny()); + memberQuickBuySaleEntity.setUnitPrice(memberQuickBuySaleDto.getUnitPrice()); + memberQuickBuySaleEntity.setCreateTime(new Date()); + memberQuickBuySaleEntity.setOrderNo(chargeNo); + memberQuickBuySaleEntity.setOrderType("B"); + // 支付码 ID+四位随机数 + int ran = (int) (Math.random() * 10000000); + memberQuickBuySaleEntity.setPaymentCode(ran + ""); - memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); + memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); + MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo(); + memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId()); + // 返回前台付款方式 + return Result.ok("提交成功", memberQuickBuySaleVo); + } - // TODO dingtalk - - return Result.ok("确认成功"); - } + @Override + public Result commitPay(MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) { + // 用户提交支付确认 将状态改为付款中 + MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); + memberQuickBuySaleEntity.setId(memberQuickBuySaleCommitDto.getId()); + memberQuickBuySaleEntity.setOrderStatus(2); + memberQuickBuySaleEntity.setPaymentAccount(memberQuickBuySaleCommitDto.getPaymentAccount()); + memberQuickBuySaleEntity.setPaymentName(memberQuickBuySaleCommitDto.getPaymentName()); - @Override - public Result selectById(Long id) { - MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id); - MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity); - // 收款信息 - QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("status", "1"); - List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper); - // 随机一个 - if (CollectionUtils.isEmpty(paymentMethodList)) { - return Result.fail("收款方式为空"); - } - memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList); - long startTime = memberQuickBuySaleEntity.getCreateTime().getTime(); - long nowTime = new Date().getTime(); - long third = 30*60*1000; - memberQuickBuySaleDetailVo.setTimeLeft((third-nowTime+startTime)/1000); - return Result.ok(memberQuickBuySaleDetailVo); - } - - @Override - public Result selectAll(String type) { - MemberEntity member = LoginUserUtils.getAppLoginUser(); - QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("member_id", member.getId()); - if(!StringUtils.isEmpty(type)) { - queryWrapper.eq("order_type", type); - } - queryWrapper.orderByDesc("id"); - List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper); - List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList); - return Result.ok(memberQuickBuySaleDetailVoList); - } + memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); - @Override - public Result sell(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto) { - // 判断是否存在足够余额 - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString()); - // 判断是否存在足够余额 - if(walletCoin ==null) { - return Result.fail("您当前可用USDT额度不够"); - } - BigDecimal extractUsdt = memberQuickBuySaleDto.getAmountUsdt(); - if (extractUsdt == null) { - return Result.fail("请输入提币量"); - } - // 判断是否足够 - System.out.println("提币数:"+extractUsdt.doubleValue()+" 可用:"+walletCoin.getAvailableBalance()); - if (extractUsdt.compareTo(walletCoin.getAvailableBalance())==1) { - return Result.fail("您当前可用USDT额度不够"); - } + ThreadPoolUtils.sendDingTalk(1); + return Result.ok("确认成功"); + } - // 判断是否存在收款方式 - List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId()); - if(CollectionUtils.isEmpty(payMentMethodList)){ - return Result.fail("请配置收款方式"); - } - // 冻结可用额度 - int i = memberWalletCoinDao.updateFrozenBalance(member.getId(), - walletCoin.getId(), extractUsdt); - if (i <= 0) { - return Result.fail("可用USDT余额不足"); - } - - // 生成订单号 - Long timestamp = System.currentTimeMillis(); - int random = (int) (Math.random() * 10); - String chargeNo = String.valueOf(timestamp).substring(2) + random; - // 插入订单表 - MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); - memberQuickBuySaleEntity.setOrderStatus(1); - memberQuickBuySaleEntity.setMemberId(member.getId()); - memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt()); - memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny()); - memberQuickBuySaleEntity.setOrderNo(chargeNo); - memberQuickBuySaleEntity.setOrderType("S"); - // 支付码 ID+四位随机数 - int ran = (int) (Math.random() * 10000000); - memberQuickBuySaleEntity.setPaymentCode(ran + ""); - - memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); + @Override + public Result selectById(Long id) { + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id); + MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity); + // 收款信息 + QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status", "1"); + List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper); + // 随机一个 + if (CollectionUtils.isEmpty(paymentMethodList)) { + return Result.fail("收款方式为空"); + } + memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList); + long startTime = memberQuickBuySaleEntity.getCreateTime().getTime(); + long nowTime = new Date().getTime(); + long third = 30 * 60 * 1000; + memberQuickBuySaleDetailVo.setTimeLeft((third - nowTime + startTime) / 1000); + return Result.ok(memberQuickBuySaleDetailVo); + } - // TODO dingtalk - - return Result.ok("下单成功"); - } + @Override + public Result selectAll(String type) { + MemberEntity member = LoginUserUtils.getAppLoginUser(); + QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("member_id", member.getId()); + if (!StringUtils.isEmpty(type)) { + queryWrapper.eq("order_type", type); + } + queryWrapper.orderByDesc("id"); + List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper); + List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList); + return Result.ok(memberQuickBuySaleDetailVoList); + } - @Override - public Result cancelRecharge(Long id) { - // 获取当前登录用户 - MemberEntity member = LoginUserUtils.getAppLoginUser(); - MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(),id); - memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); - memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); - return Result.ok("成功"); - } - - @Override - public Result cancelSell(Long id) { - // 获取当前登录用户 - MemberEntity member = LoginUserUtils.getAppLoginUser(); - MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(),id); - if(memberQuickBuySaleEntity!=null) { - memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); - memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); - - MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString()); - // 冻结资金返回可用 - int i = memberWalletCoinDao.subFrozenBalance(member.getId(), - walletCoin.getId(), memberQuickBuySaleEntity.getAmountUsdt()); - if(i<0) { - return Result.fail("撤单失败"); - } - return Result.ok("成功"); - }else { - return Result.fail("订单不存在"); - } - - } + @Override + public Result sell(MemberEntity member, MemberQuickBuySaleDto memberQuickBuySaleDto) { + // 判断是否存在足够余额 + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.USDT.toString()); + // 判断是否存在足够余额 + if (walletCoin == null) { + return Result.fail("您当前可用USDT额度不够"); + } + BigDecimal extractUsdt = memberQuickBuySaleDto.getAmountUsdt(); + if (extractUsdt == null) { + return Result.fail("请输入提币量"); + } + // 判断是否足够 + System.out.println("提币数:" + extractUsdt.doubleValue() + " 可用:" + walletCoin.getAvailableBalance()); + if (extractUsdt.compareTo(walletCoin.getAvailableBalance()) == 1) { + return Result.fail("您当前可用USDT额度不够"); + } + + // 判断是否存在收款方式 + List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId()); + if (CollectionUtils.isEmpty(payMentMethodList)) { + return Result.fail("请配置收款方式"); + } + // 冻结可用额度 + int i = memberWalletCoinDao.updateFrozenBalance(member.getId(), + walletCoin.getId(), extractUsdt); + if (i <= 0) { + return Result.fail("可用USDT余额不足"); + } + + // 生成订单号 + Long timestamp = System.currentTimeMillis(); + int random = (int) (Math.random() * 10); + String chargeNo = String.valueOf(timestamp).substring(2) + random; + // 插入订单表 + MemberQuickBuySaleEntity memberQuickBuySaleEntity = new MemberQuickBuySaleEntity(); + memberQuickBuySaleEntity.setOrderStatus(1); + memberQuickBuySaleEntity.setMemberId(member.getId()); + memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt()); + memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny()); + memberQuickBuySaleEntity.setOrderNo(chargeNo); + memberQuickBuySaleEntity.setOrderType("S"); + // 支付码 ID+四位随机数 + int ran = (int) (Math.random() * 10000000); + memberQuickBuySaleEntity.setPaymentCode(ran + ""); + + memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); + + ThreadPoolUtils.sendDingTalk(2); + return Result.ok("下单成功"); + } + + @Override + public Result cancelRecharge(Long id) { + // 获取当前登录用户 + MemberEntity member = LoginUserUtils.getAppLoginUser(); + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id); + memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); + memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); + return Result.ok("成功"); + } + + @Override + public Result cancelSell(Long id) { + // 获取当前登录用户 + MemberEntity member = LoginUserUtils.getAppLoginUser(); + MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(), id); + if (memberQuickBuySaleEntity != null) { + memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER); + memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); + + MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.USDT.toString()); + // 冻结资金返回可用 + int i = memberWalletCoinDao.subFrozenBalance(member.getId(), + walletCoin.getId(), memberQuickBuySaleEntity.getAmountUsdt()); + if (i < 0) { + return Result.fail("撤单失败"); + } + return Result.ok("成功"); + } else { + return Result.fail("订单不存在"); + } + + } } diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java index 5f81aa7..3501806 100644 --- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java @@ -38,6 +38,7 @@ import com.xcong.excoin.utils.MessageSourceUtils; import com.xcong.excoin.utils.RedisUtils; import com.xcong.excoin.utils.ShareCodeUtil; +import com.xcong.excoin.utils.ThreadPoolUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.context.SecurityContextHolder; @@ -102,7 +103,7 @@ @Resource MemberCoinWithdrawDao memberCoinWithdrawDao; - + @Resource AppVersionDao appVersionDao; @@ -221,7 +222,8 @@ levelRate.setSymbol(symbolEnum.getValue()); memberLevelRateDao.insert(levelRate); } - return Result.ok("success"); + + return Result.ok(MessageSourceUtils.getString("member_service_0048")); } @Override @@ -332,9 +334,9 @@ return Result.fail(MessageSourceUtils.getString("member_service_4000")); } if (ObjectUtil.isNotEmpty(member)) { - + MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity(); - + if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) { return Result.fail(MessageSourceUtils.getString("member_service_0055")); } @@ -357,10 +359,10 @@ return Result.fail(MessageSourceUtils.getString("member_service_0059")); } memberAuthenticationEntity.setSecondName(memberAuthenticationDto.getSecondName()); - + String type = memberAuthenticationDto.getType(); memberAuthenticationEntity.setType(type); - + String idCardNo = memberAuthenticationDto.getIdCardNo(); if (StrUtil.isBlank(idCardNo)) { return Result.fail(MessageSourceUtils.getString("member_service_0060")); @@ -379,7 +381,7 @@ memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront()); memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse()); memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage()); - + Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap); @@ -393,14 +395,8 @@ member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING); member.setIdcardNo(idCardNo); memberDao.updateById(member); - /** - * TODO dingtalk - Constant.excutor.execute(new Runnable() { - @Override public void run() { - DingTalkUtils.sendActionCard(4); - } - });*/ + ThreadPoolUtils.sendDingTalk(4); return Result.ok(MessageSourceUtils.getString("member_service_0024")); } return Result.fail(MessageSourceUtils.getString("member_service_0063")); @@ -488,7 +484,7 @@ if (!MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) { return Result.fail(MessageSourceUtils.getString("member_service_0077")); } - + Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap); @@ -755,10 +751,10 @@ MemberEntity member = memberDao.selectById(memberId); MemberPersonCenterInfoVo memberPersonCenterInfoVo = new MemberPersonCenterInfoVo(); - + Integer certifyStatus = member.getCertifyStatus(); memberPersonCenterInfoVo.setCertifyStatus(certifyStatus); - + Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap); @@ -767,7 +763,7 @@ }else { memberPersonCenterInfoVo.setMemberPaymentMethod(1); } - + if (StrUtil.isNotEmpty(member.getPhone())) { memberPersonCenterInfoVo.setPhone(1); } else { @@ -824,8 +820,8 @@ } List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>(); - - + + List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol); if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) { return Result.fail(MessageSourceUtils.getString("member_service_0087")); @@ -837,7 +833,7 @@ memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable()); arrayList.add(memberAvivableCoinInfoVo); } - + return Result.ok(arrayList); } @@ -925,14 +921,8 @@ accountRecord.setSymbol(memberSubmitCoinApplyDto.getSymbol()); accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); memberAccountMoneyChangeDao.insert(accountRecord); - /** - * TODO dingtalk - Constant.excutor.execute(new Runnable() { - @Override public void run() { - DingTalkUtils.sendActionCard(3); - } - }); - */ + + ThreadPoolUtils.sendDingTalk(3); return Result.ok(MessageSourceUtils.getString("member_service_0086")); } else { return Result.fail(MessageSourceUtils.getString("member_service_0005")); @@ -964,7 +954,7 @@ public Result getAppVersionInfo() { Map<String, Object> columnMap = new HashMap<>(); List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap); - List<Object> arrayList = new ArrayList<>(); + List<Object> arrayList = new ArrayList<>(); if(CollUtil.isNotEmpty(selectByMap)) { for(AppVersionEntity appVersionEntity : selectByMap) { AppVersionVo appVersionVo = new AppVersionVo(); diff --git a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java index 78727ff..10c1e06 100644 --- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java +++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java @@ -2,6 +2,7 @@ import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; import com.xcong.excoin.modules.contract.service.impl.OrderWebsocketServiceImpl; +import com.xcong.excoin.utils.dingtalk.DingTalkUtils; import java.math.BigDecimal; import java.util.concurrent.ExecutorService; @@ -32,4 +33,18 @@ } }); } + + /** + * 发送钉钉消息 + * + * @param type 类型 + */ + public static void sendDingTalk(int type) { + EXECUTOR.execute(new Runnable() { + @Override + public void run() { + DingTalkUtils.sendActionCard(type); + } + }); + } } diff --git a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java new file mode 100644 index 0000000..a050396 --- /dev/null +++ b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java @@ -0,0 +1,46 @@ +package com.xcong.excoin.utils.dingtalk; + +/** + * @author helius + */ +public enum DingTalkType { + + /** + * 确认充值 + */ + PAY_COMFIRM("红包来了啊!", 1), + + /** + * 快速卖出 + */ + FAST_SALE("红包来了啊!!", 2), + + /** + * 提笔 + */ + TI_COIN("红包来了啊!!!", 3), + + /** + * 实名认证 + */ + CARD_VERIFY("红包来了啊!!!!", 4), + TYPE_FIVE("红包来了啊!!!!!", 5); + + private String name; + + private int index; + + DingTalkType(String name, int i) { + this.name = name; + this.index = i; + } + + public static String getName(int index) { + for(DingTalkType type : DingTalkType.values()) { + if (type.index == index) { + return type.name; + } + } + return null; + } +} diff --git a/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java new file mode 100644 index 0000000..67c071b --- /dev/null +++ b/src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java @@ -0,0 +1,67 @@ +package com.xcong.excoin.utils.dingtalk; + +import com.alibaba.fastjson.JSONObject; +import com.dingtalk.api.DefaultDingTalkClient; +import com.dingtalk.api.DingTalkClient; +import com.dingtalk.api.request.OapiRobotSendRequest; +import com.dingtalk.api.response.OapiRobotSendResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; + +/** + * @author wzy + * @date 2020-04-17 22:18 + **/ +@Slf4j +public class DingTalkUtils { + + private static final String SECRET = "SECe4afed333b31b66e1d16c87733a29a0b4a3051c71a2960d13e606bfc1dd88b14"; + + public static void sendActionCard(int type) { + log.info("send dingtalk"); + String url = "https://oapi.dingtalk.com/robot/send?access_token=161d5e5b60ae5d6b4c80f2a9c35f9f212961a7c7154aa7e94b99503eca3886b0"; + Long timestamp = System.currentTimeMillis(); + try { + String sign = generateSign(timestamp); + url = url + "×tamp=" + timestamp + "&sign=" + sign; + DingTalkClient client = new DefaultDingTalkClient(url); + OapiRobotSendRequest request = new OapiRobotSendRequest(); + request.setMsgtype("actionCard"); + OapiRobotSendRequest.Actioncard actionCard = new OapiRobotSendRequest.Actioncard(); + actionCard.setTitle(DingTalkType.getName(type)); + actionCard.setBtnOrientation("1"); + actionCard.setText(DingTalkType.getName(type)); + List<OapiRobotSendRequest.Btns> btns = new ArrayList<>(); + OapiRobotSendRequest.Btns btn1 = new OapiRobotSendRequest.Btns(); + btn1.setTitle("查看详情"); + btn1.setActionURL("http://baidu.com"); + btns.add(btn1); + actionCard.setBtns(btns); + + request.setActionCard(actionCard); + OapiRobotSendResponse response = client.execute(request); + log.info(JSONObject.toJSONString(response)); + } catch (Exception e) { + log.error("#dingtalk send error#", e); + } finally { + log.error("#dingtalk finally#"); + } + } + + + private static String generateSign(Long timestamp) throws Exception { + String stringToToken = timestamp + "\n" + SECRET; + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256")); + byte[] signData = mac.doFinal(stringToToken.getBytes("UTF-8")); + String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8"); + return sign; + } + +} -- Gitblit v1.9.1