fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -651,17 +651,6 @@ } for (GoodsEvaluate goodsEvaluate : list) { EvaluateEnum evaluateEnum = goodsEvaluate.getType(); // 单品 活动可以一键云发单 if (cloudOpen && evaluateEnum == EvaluateEnum.activity || evaluateEnum == EvaluateEnum.single ) { goodsEvaluate.setCloud(cloudOpen); } if (evaluateEnum != EvaluateEnum.activity) { listNew.add(goodsEvaluate); continue; } GoodsEvaluate evaluateNew = new GoodsEvaluate(); try { PropertyUtils.copyProperties(evaluateNew, goodsEvaluate); @@ -669,6 +658,19 @@ e.printStackTrace(); continue; } EvaluateEnum evaluateEnum = evaluateNew.getType(); // 单品 活动可以一键云发单 if (evaluateEnum == EvaluateEnum.activity || evaluateEnum == EvaluateEnum.single) { evaluateNew.setCloud(cloudOpen); } if (evaluateEnum != EvaluateEnum.activity) { listNew.add(evaluateNew); continue; } // 跳转过渡页 // String jumpLink = // configService.get(ConfigKeyEnum.activityDetailLink.getKey()) fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java
@@ -635,9 +635,7 @@ key = StringUtil.Md5(key); redisManager.cacheCommonString(key , builder.toString() , 60*10); System.out.println(builder.toString()); String link = "http://192.168.1.200:8008/fanli/client/v1/cloud/callback/payUrl?key=%s"; String link = configService.get(ConfigKeyEnum.cloudAlipayNotifyLink.getKey()) +"?key=%s"; JSONObject dataObject = new JSONObject(); dataObject.put("link", String.format(link, key)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject)); fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java
@@ -213,7 +213,13 @@ showSplashAd("show_splash_ad","是否显示开屏广告"), robotCloudOpen("robot_cloud_open","云发单链接"), robotCloudLink("robot_cloud_link","云发单链接"); robotCloudLink("robot_cloud_link","云发单链接"), cloudAlipayJumpLink("cloud_alipay_jump_link","云发单支付跳转地址"), cloudAlipayReturnLink("cloud_alipay_return_link","云发单支付成功后返回哪个前端页面"), cloudAlipayNotifyLink("cloud_alipay_notify_link","云发单支付成功后回调地址"); private final String key; private final String desc; 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; @@ -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); @@ -679,6 +698,11 @@ if (StringUtil.isNullOrEmpty(wxId)) throw new UserCloudException(1002, "请先登录微信"); if (!AitaokerApiUtil.onlineCheck(robotId)) { throw new UserCloudException(1003, "微信已掉线,请先重新登录微信"); } // 验证开启状态 List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid); if (listGroup == null || listGroup.size() == 0) fanli/src/main/java/com/yeshi/fanli/service/inter/user/cloud/UserCloudService.java
@@ -96,4 +96,11 @@ public long count(String key, Integer state); /** * 缓存微信匹配群 * @param wxId * @param groupId */ public void cacheMatchGroup(String wxId, String groupId); } fanli/src/main/java/com/yeshi/fanli/service/manger/alipay/UserCloudAlipayManager.java
@@ -10,7 +10,9 @@ import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum; import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder; import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.exception.user.cloud.UserCloudException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService; import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService; import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService; @@ -26,6 +28,9 @@ @Component public class UserCloudAlipayManager { @Resource private ConfigService configService; @Resource private UserCloudService userCloudService; @@ -73,12 +78,12 @@ // 销售产品码,商家和支付宝签约的产品码 map.put("product_code", type); // 该笔订单允许的最晚付款时间,逾期将关闭交易 30分钟 map.put("timeout_express", "1.5h"); map.put("timeout_express", "30m"); // 支付成功后返回哪个前端页面 String returnUrl = "http://192.168.1.114:8848/flqFront/AppInside/cloudPushOrder/cloudPushOrderManage.html"; String returnUrl = configService.get(ConfigKeyEnum.cloudAlipayReturnLink.getKey()); // 支付成功后回调地址 String notifyUrl = "http://192.168.1.200:8008/fanli/client/v1/cloud/callback/payEnd?id=" +cloudOrder.getId(); String notifyUrl = configService.get(ConfigKeyEnum.cloudAlipayNotifyLink.getKey()) +"?id=" +cloudOrder.getId(); // 获取支付form return AlipayApi.tradeWapPayRequest(map, returnUrl, notifyUrl); } fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java
@@ -61,6 +61,7 @@ deviceSex("device_sex-", "设备性别版本"), cloudAlipayLink("cloud_alipay_ink_", "云发单支付链接"), cloudMatchGroup("cloud_match_group_", "云发单群匹配"), convertLinkDocTemp("convert-link-doc-temp-", "转链文本暂存"), convertLinkDocResultTemp("convert-link-doc-result-temp-", "转链文本结果暂存") fanli/src/main/java/com/yeshi/fanli/util/aitaoker/AitaokerApiUtil.java
@@ -17,21 +17,16 @@ import com.yeshi.fanli.dto.aitaoker.QrcodeLoginDTO; import com.yeshi.fanli.dto.aitaoker.RobotInfoDTO; import com.yeshi.fanli.dto.aitaoker.WeiXinGroupDTO; import com.yeshi.fanli.dto.suning.SuningGoodsInfo; import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class AitaokerApiUtil { public static String APP_KEY = "1077080250"; public static String SECRET_KEY = "7c6118bd-7aa5-65b8-c6d4-058728e9446f"; // 请求连接 private static String SERVER_URL = "http://router.itaoke.org/api"; private static String baseRequest(String method, Map<String, String> param) { @@ -54,9 +49,7 @@ baseMap.put(key, param.get(key)); } } url+= "sign=" + getSign(baseMap); return HttpUtil.post(url, param); } @@ -106,12 +99,9 @@ * @return */ public static QrcodeLoginDTO getQrcodeMaclogin(int robotId) { // 请求参数 Map<String, String> map = new HashMap<>(); map.put("robot_id", robotId +""); // 请求结果 String result = baseRequest("itaoke.robot.qrcode.maclogin", map); JSONObject resultJson = JSONObject.fromObject(result); resultJson = resultJson.optJSONObject("data"); if (resultJson != null) { @@ -121,30 +111,6 @@ return null; } /** * 检查是否扫码 * @param robotId * @return */ public static Boolean getQrcodeStatus(int robotId) { // 请求参数 Map<String, String> map = new HashMap<>(); map.put("robot_id", robotId +""); // 请求结果 String result = baseRequest("itaoke.robot.qrcode.status", map); JSONObject resultJson = JSONObject.fromObject(result); resultJson = resultJson.optJSONObject("data"); if (resultJson != null && !StringUtil.isNullOrEmpty(resultJson.optString("status"))) { int optInt = resultJson.optInt("status"); if (optInt == 1) { return true; } else { return false; } } return null; } /** * 检查是否登陆(真正的登录接口) @@ -167,7 +133,6 @@ return new Gson().fromJson(resultJson.toString(), type); } } return null; } @@ -177,14 +142,15 @@ * @return */ public static boolean onlineCheck(int robotId) { // 请求参数 Map<String, String> map = new HashMap<>(); map.put("robot_id", robotId +""); // 请求结果 String result = baseRequest("itaoke.robot.check.online", map); JSONObject resultJson = JSONObject.fromObject(result); if ("0000".equals(resultJson.optString("status"))) { return true; resultJson = resultJson.optJSONObject("data"); if (resultJson != null) { return resultJson.optBoolean("isOnline"); } } return false; } @@ -208,24 +174,6 @@ return false; } /** * 掉线重连 * @param robotId 机器人id * @return */ public static boolean loseReconnet(int robotId) { // 请求参数 Map<String, String> map = new HashMap<>(); map.put("robot_id", robotId +""); // 请求结果 String result = baseRequest("itaoke.robot.lose.reconnet", map); JSONObject resultJson = JSONObject.fromObject(result); if ("0000".equals(resultJson.optString("code"))) { return true; } return false; } /** * 创建机器人 @@ -337,12 +285,9 @@ if ("0000".equals(resultJson.optString("status"))) { JSONArray groupArray = resultJson.optJSONArray("data"); if (groupArray != null && groupArray.size() > 0) { List<WeiXinGroupDTO> listGroup = new ArrayList<>(); Type type = new TypeToken<ArrayList<WeiXinGroupDTO>>() { }.getType(); List<WeiXinGroupDTO> goodsList = new Gson().fromJson(groupArray.toString(), type); return goodsList; } } @@ -368,8 +313,12 @@ JSONObject resultJson = JSONObject.fromObject(result); if ("0000".equals(resultJson.optString("status"))) { resultJson = resultJson.optJSONObject("data"); resultJson = resultJson.optJSONObject("object"); return resultJson.optString("id"); if (resultJson != null) { resultJson = resultJson.optJSONObject("object"); if (resultJson != null) { return resultJson.optString("id"); } } } return null; }