pom.xml | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java | ●●●●● patch | view | raw | blame | history |
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> 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"; 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; @@ -84,8 +86,7 @@ memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity); // TODO dingtalk ThreadPoolUtils.sendDingTalk(1); return Result.ok("确认成功"); } @@ -171,8 +172,7 @@ memberQuickBuySaleDao.insert(memberQuickBuySaleEntity); // TODO dingtalk ThreadPoolUtils.sendDingTalk(2); return Result.ok("下单成功"); } 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; @@ -221,7 +222,8 @@ levelRate.setSymbol(symbolEnum.getValue()); memberLevelRateDao.insert(levelRate); } return Result.ok("success"); return Result.ok(MessageSourceUtils.getString("member_service_0048")); } @Override @@ -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")); @@ -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")); 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); } }); } } src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkType.java
New file @@ -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; } } src/main/java/com/xcong/excoin/utils/dingtalk/DingTalkUtils.java
New file @@ -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; } }