admin
2020-06-11 d3a5dfe218fdee554decdd58a3c995e03bc1dec1
Merge remote-tracking branch 'origin/div' into div
8个文件已修改
156 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/system/ConfigKeyEnum.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/cloud/UserCloudService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/alipay/UserCloudAlipayManager.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/RedisKeyEnum.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/aitaoker/AitaokerApiUtil.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }