From 8a54915d3c39d9d8d7e90c0971d1e19d0eb76622 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期五, 12 六月 2020 14:37:04 +0800 Subject: [PATCH] 券统计 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java | 200 +++++++++++++++++++++++++++++++------------------ 1 files changed, 125 insertions(+), 75 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java index 7807105..441a782 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java @@ -15,7 +15,6 @@ import com.aliyun.openservices.ons.api.Message; import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.user.cloud.UserCloudMapper; -import com.yeshi.fanli.dto.aitaoker.RobotInfoDTO; import com.yeshi.fanli.dto.aitaoker.WeiXinGroupDTO; import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.dto.jd.JDPingouInfo; @@ -71,6 +70,7 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.ImageToBase64; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.RedisKeyEnum; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.aitaoker.AitaokerApiUtil; @@ -236,56 +236,56 @@ } } - RobotInfoDTO dto = null; - if (renew) { // 缁垂 - dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth()); - } else { - dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getType(), "wechatrobot", null); - } - - if (dto == null) { - LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖绌哄��"); - throw new UserCloudException(1, "鏈哄櫒浜鸿幏鍙栧け璐�"); - } - - String endTimeStr = dto.getEndTime(); - if (StringUtil.isNullOrEmpty(endTimeStr)) { - LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿涓虹┖"); - throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂翠负绌�"); - } - - long endTime = 0; - try { - endTime = Long.parseLong(endTimeStr); - } catch (Exception e) { - LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿鏍煎紡涓嶆纭�"); - throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂存牸寮忎笉姝g‘"); - } - - Integer robotId = dto.getId(); - if (robotId == null) { - LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜篒D杩斿洖涓虹┖"); - throw new UserCloudException(1, "鏈哄櫒浜篒D杩斿洖涓虹┖"); - } - - Integer groupNum = dto.getGroupNum(); - if (groupNum == null) { - LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 groupNum杩斿洖涓虹┖"); - throw new UserCloudException(1, "groupNum杩斿洖涓虹┖"); - } +// RobotInfoDTO dto = null; +// if (renew) { // 缁垂 +// dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth()); +// } else { // 鍒涘缓鏈哄櫒浜� +// dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getType(), "wechatrobot", null); +// } +// +// if (dto == null) { +// LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖绌哄��"); +// throw new UserCloudException(1, "鏈哄櫒浜鸿幏鍙栧け璐�"); +// } +// +// String endTimeStr = dto.getEndTime(); +// if (StringUtil.isNullOrEmpty(endTimeStr)) { +// LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿涓虹┖"); +// throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂翠负绌�"); +// } +// +// long endTime = 0; +// try { +// endTime = Long.parseLong(endTimeStr); +// } catch (Exception e) { +// LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿鏍煎紡涓嶆纭�"); +// throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂存牸寮忎笉姝g‘"); +// } +// +// Integer robotId = dto.getId(); +// if (robotId == null) { +// LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜篒D杩斿洖涓虹┖"); +// throw new UserCloudException(1, "鏈哄櫒浜篒D杩斿洖涓虹┖"); +// } +// +// Integer groupNum = dto.getGroupNum(); +// if (groupNum == null) { +// LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 groupNum杩斿洖涓虹┖"); +// throw new UserCloudException(1, "groupNum杩斿洖涓虹┖"); +// } UserCloud newCloud = new UserCloud(); newCloud.setUid(uid); newCloud.setOrderId(orderId); - newCloud.setGroupNum(groupNum); - newCloud.setRobotId(robotId); +// newCloud.setGroupNum(groupNum); +// newCloud.setRobotId(robotId); newCloud.setRobotType(menuEnum.getType()); - if (renew) { - newCloud.setStartTime(userCloud.getStartTime()); - } else { - newCloud.setStartTime(new Date()); - } - newCloud.setEndTime(new Date(endTime * 1000)); // Unix 杞崲 鏅�氭椂闂� +// if (renew) { +// newCloud.setStartTime(userCloud.getStartTime()); +// } else { +// newCloud.setStartTime(new Date()); +// } +// newCloud.setEndTime(new Date(endTime * 1000)); // Unix 杞崲 鏅�氭椂闂� newCloud.setCreateTime(new Date()); userCloudMapper.insertSelective(newCloud); @@ -306,12 +306,27 @@ List<WeiXinGroupDTO> list = AitaokerApiUtil.getContract(robotId); if (list == null || list.size() == 0) throw new UserCloudException(1, "鏈绱㈠埌瀵瑰簲缇�"); - + + String wxId = userCloud.getWxId(); for (WeiXinGroupDTO dto : list) { - userCloudGroupService.addGroup(uid, dto.getGroupId(), dto.getGroupName(), userCloud.getGroupNum()); + String groupId = dto.getGroupId(); + // 妫�娴嬫槸鍚﹀尮閰嶇兢 + String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId); + String result = redisManager.getCommonString(key); + if (!StringUtil.isNullOrEmpty(result)) { + userCloudGroupService.addGroup(uid, dto.getGroupId(), dto.getGroupName(), userCloud.getGroupNum()); + } } } + @Override + public void cacheMatchGroup(String wxId, String groupId) { + if (StringUtil.isNullOrEmpty(wxId) || StringUtil.isNullOrEmpty(groupId)) + return; + String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId); + redisManager.cacheCommonString(key , "true" , 60*20); + } + @Override public void sendByDynamic(Long uid, String id) throws UserCloudException{ sendCircleByDynamic(uid, id, UserCloudSendRecord.SEND_WAY_MANUAL); @@ -374,6 +389,10 @@ String wxId = userCloud.getWxId(); if (StringUtil.isNullOrEmpty(wxId)) throw new UserCloudException(1003, "寰俊鍙蜂笉瀛樺湪锛岃鍏堝井淇$櫥褰�"); + + if (!AitaokerApiUtil.onlineCheck(robotId)) { + throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊"); + } // 楠岃瘉寮�鍚姸鎬� List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid); @@ -492,7 +511,7 @@ sendRecord.setWxId(wxId); sendRecord.setRobotId(robotId); sendRecord.setSendTime(new Date()); - sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_STORE); + sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_EVALUATE); UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord); String pid = result.getId(); @@ -516,9 +535,12 @@ if (listImg.size() > 0) { for (String img: listImg) { - picUrl += "," + img; + picUrl += img + ";" ; } } + + if (picUrl.endsWith(";")) + picUrl = picUrl.substring(0, picUrl.length()-1); sendContent.setTitle(title); sendContent.setPicUrl(picUrl); // 鍙戦�佸浘鏂� @@ -583,7 +605,7 @@ @Override @Transactional(rollbackFor = Exception.class) public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException{ - sendCircleByGoods(uid, goodsId, goodsType, null, sellerId); + sendCircleByGoods(uid, goodsId, goodsType, null, sellerId, UserCloudSendRecord.SEND_WAY_MANUAL); } @Override @@ -610,13 +632,14 @@ try { // 鍙戦�佸晢鍝� - sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId()); + sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId(), UserCloudSendRecord.SEND_WAY_AUTO); } catch (UserCloudException e) { LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 搴搃d:"+ id + "]鍘熷洜锛�"+ e.getMsg()); } } - private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, Long sellerId) throws UserCloudException { + private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, + Long sellerId, int way) throws UserCloudException { // 楠岃瘉鏄惁鎺堟潈 UserInfo user = userInfoService.getUserByIdWithMybatis(uid); if (user == null) @@ -665,7 +688,7 @@ custom = cloudManage.getCustom(); } if (!custom) { - throw new UserCloudException(0, "鎴愬姛鍔犲叆浜戝彂鍗曞簱"); + return; } Integer robotId = userCloud.getRobotId(); @@ -675,6 +698,11 @@ String wxId = userCloud.getWxId(); if (StringUtil.isNullOrEmpty(wxId)) throw new UserCloudException(1002, "璇峰厛鐧诲綍寰俊"); + + if (!AitaokerApiUtil.onlineCheck(robotId)) { + throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊"); + } + // 楠岃瘉寮�鍚姸鎬� List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid); @@ -715,27 +743,43 @@ } UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord); - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { - sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); - } else if (goodsType == Constant.SOURCE_TYPE_JD) { - sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { - sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); - } else if (goodsType == Constant.SOURCE_TYPE_VIP) { - sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); - } else if (goodsType == Constant.SOURCE_TYPE_SUNING) { - sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId()); + try { + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { + sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); + } else if (goodsType == Constant.SOURCE_TYPE_JD) { + sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { + sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); + } else if (goodsType == Constant.SOURCE_TYPE_VIP) { + sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId()); + } else if (goodsType == Constant.SOURCE_TYPE_SUNING) { + sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId()); + } + // 鏇存柊鍙戝崟璁板綍 + if (storeId != null) { + UserCloudGoods record = new UserCloudGoods(); + record.setId(storeId); + record.setState(UserCloudGoods.STATE_SHARED); + record.setSendTime(new Date()); + record.setUpdateTime(new Date()); + userCloudGoodsService.updateByPrimaryKeySelective(record); + } + + } catch (UserCloudException e) { + LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 搴搃d:"+ storeId + "]鍘熷洜锛�"+ e.getMsg()); + // 鏇存柊鍙戝崟璁板綍 + if (storeId != null) { + UserCloudGoods record = new UserCloudGoods(); + record.setId(storeId); + record.setState(UserCloudGoods.STATE_INVALID); + record.setSendTime(new Date()); + record.setUpdateTime(new Date()); + userCloudGoodsService.updateByPrimaryKeySelective(record); + } } + - // 鏇存柊鍙戝崟璁板綍 - if (storeId != null) { - UserCloudGoods record = new UserCloudGoods(); - record.setId(storeId); - record.setState(UserCloudGoods.STATE_SHARED); - record.setSendTime(new Date()); - record.setUpdateTime(new Date()); - userCloudGoodsService.updateByPrimaryKeySelective(record); - } + } /** @@ -1009,9 +1053,12 @@ String picUrl = ""; if (listImg.size() > 0) { for (String img: listImg) { - picUrl += "," + img; + picUrl += img + ";" ; } } + + if (picUrl.endsWith(";")) + picUrl = picUrl.substring(0, picUrl.length()-1); sendContent.setTitle(title); sendContent.setPicUrl(picUrl); @@ -1072,17 +1119,20 @@ Date lastTime = new Date(time); for (int i = 0; i < 1000; i ++) { - List<Long> list = userCloudMapper.listValidUid((i-1)*1000, 1000); + // 鏌ヨ鍝簺鐢ㄦ埛寮�閫� + List<Long> list = userCloudMapper.listValidUid(i*1000, 1000); if (list == null || list.size() == 0) { break; } for (Long uid: list) { try { + // 鍒ゆ柇鏄惁璇� 鍐呭宸插彂 UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, id); if (record != null) continue; + // 鏄惁鍦ㄤ竴涓皬鏃跺唴宸插彂閫佽繃 UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime); if (last != null) continue; -- Gitblit v1.8.0