From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushInfoServiceImpl.java |  761 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 383 insertions(+), 378 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushInfoServiceImpl.java
index ab29c07..38d0e60 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushInfoServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/push/PushInfoServiceImpl.java
@@ -1,378 +1,383 @@
-package com.yeshi.fanli.service.impl.push;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-import com.yeshi.fanli.entity.SystemEnum;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-import com.yeshi.fanli.dao.mybatis.push.PushInfoMapper;
-import com.yeshi.fanli.entity.bus.msg.UserSystemMsg;
-import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum;
-import com.yeshi.fanli.entity.push.PushInfo;
-import com.yeshi.fanli.entity.push.PushInfo.PushTypeEnum;
-import com.yeshi.fanli.exception.push.PushException;
-import com.yeshi.fanli.exception.push.PushInfoException;
-import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
-import com.yeshi.fanli.service.inter.push.PushInfoService;
-import com.yeshi.fanli.service.inter.push.PushService;
-import com.yeshi.fanli.util.StringUtil;
-
-import net.sf.json.JSONObject;
-
-@Service
-public class PushInfoServiceImpl implements PushInfoService {
-
-    @Resource
-    private PushService pushService;
-
-    @Resource
-    private UserSystemMsgService userSystemMsgService;
-
-    @Resource
-    private PushInfoMapper pushInfoMapper;
-
-    @Override
-    public void save(PushInfo record) throws PushInfoException, Exception {
-        if (record == null) {
-            throw new PushInfoException(1, "鍙傛暟涓嶆纭�");
-        }
-
-        PushTypeEnum type = record.getType();
-        if (type == null) {
-            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鑳戒负绌�");
-        }
-
-        String title = record.getTitle();
-        if (title == null || title.trim().length() == 0) {
-            throw new PushInfoException(1, "鏍囬涓嶈兘涓虹┖");
-        }
-
-        String arrayAndroid = record.getArrayAndroid();
-        String arrayIOS = record.getArrayIOS();
-        if (StringUtil.isNullOrEmpty(arrayIOS) && StringUtil.isNullOrEmpty(arrayAndroid)) {
-            throw new PushInfoException(1, "鎺ㄩ�佺増鏈笉鑳戒负绌�");
-        }
-
-        // 瀹氭椂鏃堕棿
-        Boolean timeTask = record.isTimeTask();
-        if (timeTask != null && timeTask) {
-            String controlTime_str = record.getControlTime_str();
-            if (controlTime_str == null || controlTime_str.trim().length() == 0) {
-                throw new PushInfoException(1, "棰勮鏃堕棿涓嶈兘涓虹┖");
-            }
-
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-            controlTime_str = controlTime_str.replaceAll("T", " ");
-            record.setControlTime(format.parse(controlTime_str));
-        } else {
-            record.setControlTime(null);
-        }
-
-        String url = record.getUrl();
-        String content = record.getContent();
-        if (StringUtil.isNullOrEmpty(url) && StringUtil.isNullOrEmpty(content)) {
-            throw new PushInfoException(1, "鎺ㄩ�佸唴瀹规垨URL涓嶈兘涓虹┖");
-        }
-
-        if (url != null && (url.trim().length() == 0 || url.equalsIgnoreCase("null"))) {
-            record.setUrl(null);
-        }
-
-        if (content != null && (content.trim().length() == 0 || content.equalsIgnoreCase("null"))) {
-            record.setContent(null);
-        }
-
-        String uids = record.getUids();
-        if (uids != null && (uids.trim().length() == 0 || uids.equalsIgnoreCase("null"))) {
-            record.setUids(null);
-        }
-
-        // 鏁版嵁杞崲json
-        convertJson(record);
-        record.setState(PushInfo.STATE_INIT);
-
-        Long id = record.getId();
-        if (id == null) {
-            record.setCreateTime(new Date());
-            record.setUpdateTime(new Date());
-            pushInfoMapper.insert(record);
-        } else {
-            // 淇敼
-            PushInfo current = pushInfoMapper.selectByPrimaryKey(id);
-            if (current == null) {
-                throw new PushInfoException(1, "璇ヨ褰曞凡涓嶅瓨鍦�");
-            }
-
-            if (PushInfo.STATE_SUCCESS == current.getState()) {
-                throw new PushInfoException(1, "宸叉帹閫佹垚鍔熺殑淇℃伅涓嶈兘淇敼");
-            }
-            record.setCreateTime(current.getCreateTime());
-            record.setUpdateTime(new Date());
-            pushInfoMapper.updateByPrimaryKey(record);
-        }
-    }
-
-
-    /**
-     * 杞崲json
-     */
-    public void convertJson(PushInfo record) {
-        JSONObject json = new JSONObject();
-        String url = record.getUrl();
-        if (StringUtil.isNullOrEmpty(url)) {
-            url = "";
-        }
-        json.put("url", url);
-        json.put("ios", convertVersion(record.getArrayIOS()));
-        json.put("android", convertVersion(record.getArrayAndroid()));
-        record.setJsonData(json.toString());
-    }
-
-    /**
-     * 杞崲list
-     */
-    public String convertVersion(String array) {
-        String versions = "";
-        if (array != null && array.trim().length() > 0) {
-            Gson gson = new Gson();
-            List<String> list = gson.fromJson(array, new TypeToken<ArrayList<String>>() {
-            }.getType());
-
-            if (list != null && list.size() > 0) {
-
-                for (String version : list) {
-                    versions += version + ",";
-                }
-                if (versions.endsWith(",")) {
-                    versions = versions.substring(0, versions.length() - 1);
-                }
-            }
-        }
-        return versions;
-    }
-
-    @Override
-    public void deleteBatchByPrimaryKey(List<Long> list) {
-        pushInfoMapper.deleteBatchByPrimaryKey(list);
-    }
-
-    @Override
-    public List<PushInfo> listQuery(long start, int count, String key, Integer keyType, Integer state, String type, SystemEnum system) {
-
-        List<PushInfo> list = pushInfoMapper.listQuery(start, count, key, keyType, state, type, system);
-        if (list == null || list.size() == 0) {
-            return list;
-        }
-
-        for (PushInfo pushInfo : list) {
-            Date controlTime = pushInfo.getControlTime();
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
-            if (controlTime == null) {
-                pushInfo.setTimeTask(false);
-                pushInfo.setControlTime_str("");
-            } else {
-                pushInfo.setTimeTask(true);
-                pushInfo.setControlTime_str(sdf.format(controlTime));
-            }
-
-            String jsonData = pushInfo.getJsonData();
-            JSONObject json = JSONObject.fromObject(jsonData);
-            String url = json.getString("url");
-            pushInfo.setUrl(url);
-
-            List<String> listIOS = new ArrayList<String>();
-            String versionsIOS = json.getString("ios");
-            if (versionsIOS != null && versionsIOS.trim().length() > 0) {
-                listIOS = Arrays.asList(versionsIOS.split(","));
-            }
-            pushInfo.setListIOS(listIOS);
-
-            List<String> listAndroid = new ArrayList<String>();
-            String versionsAndroid = json.getString("android");
-            if (versionsAndroid != null && versionsAndroid.trim().length() > 0) {
-                listAndroid = Arrays.asList(versionsAndroid.split(","));
-            }
-            pushInfo.setListAndroid(listAndroid);
-        }
-
-        return list;
-    }
-
-    @Override
-    public long countQuery(String key, Integer keyType, Integer state, String type, SystemEnum system) {
-        return pushInfoMapper.countQuery(key, keyType, state, type, system);
-    }
-
-    @Override
-    public List<PushInfo> listTask(SystemEnum system) {
-        return pushInfoMapper.listTask(system);
-    }
-
-    @Override
-    public void handPush(Long id) throws Exception, PushInfoException, PushException {
-        PushInfo record = pushInfoMapper.selectByPrimaryKey(id);
-        if (record == null) {
-            throw new PushInfoException(1, "鎺ㄩ�佷俊鎭凡涓嶅瓨鍦�");
-        }
-        // 鎵ц鎺ㄩ��
-        executePush(record);
-        record.setState(PushInfo.STATE_SUCCESS);
-        record.setPushTime(new Date());
-        record.setUpdateTime(new Date());
-        pushInfoMapper.updateByPrimaryKey(record);
-    }
-
-    @Override
-    public void taskPush(PushInfo record) {
-        String msg = null;
-        int state = PushInfo.STATE_FAIL;
-        try {
-            // 鎵ц鎺ㄩ��
-            executePush(record);
-            state = PushInfo.STATE_SUCCESS;
-        } catch (PushInfoException e) {
-            msg = e.getMsg();
-        } catch (PushException e) {
-            msg = e.getMsg();
-        } catch (Exception e) {
-            msg = "绯荤粺鎺ㄩ�佸け璐�";
-        }
-        record.setState(state);
-        record.setPushTime(new Date());
-        record.setRemark(msg);
-        record.setUpdateTime(new Date());
-        pushInfoMapper.updateByPrimaryKey(record);
-    }
-
-    @Override
-    public PushInfo selectByPrimaryKey(Long id) {
-        return pushInfoMapper.selectByPrimaryKey(id);
-    }
-
-    @Override
-    public void updateSelectiveByPrimaryKey(PushInfo info) {
-        pushInfoMapper.updateByPrimaryKeySelective(info);
-    }
-
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void executePush(PushInfo record) throws Exception, PushInfoException, PushException {
-
-        if (PushInfo.STATE_SUCCESS == record.getState()) {
-            throw new PushInfoException(1, "璇ヤ俊鎭笉鑳介噸澶嶆帹閫�");
-        }
-
-        String title = record.getTitle();
-        if (title == null || title.trim().length() == 0) {
-            throw new PushInfoException(1, "鏍囬涓嶈兘涓虹┖");
-        }
-
-        String jsonData = record.getJsonData();
-        if (StringUtil.isNullOrEmpty(jsonData) && StringUtil.isNullOrEmpty(jsonData)) {
-            throw new PushInfoException(1, "鎺ㄩ�佺増鏈笉鑳戒负绌�");
-        }
-
-        JSONObject json = JSONObject.fromObject(jsonData);
-        String url = json.getString("url");
-        String content = record.getContent();
-        if (StringUtil.isNullOrEmpty(url) && StringUtil.isNullOrEmpty(content)) {
-            throw new PushInfoException(1, "鎺ㄩ�佸唴瀹规垨URL涓嶈兘涓虹┖");
-        }
-
-        List<String> listIOS = new ArrayList<String>();
-        String versionsIOS = json.getString("ios");
-        if (versionsIOS != null && versionsIOS.trim().length() > 0) {
-            if (versionsIOS.contains("鍏ㄦ帹")) {
-                listIOS = null;
-            } else {
-                listIOS = Arrays.asList(versionsIOS.split(","));
-            }
-        }
-
-        List<String> listAndroid = new ArrayList<String>();
-        String versionsAndroid = json.getString("android");
-        if (versionsAndroid != null && versionsAndroid.trim().length() > 0) {
-            if (versionsAndroid.contains("鍏ㄦ帹")) {
-                listAndroid = null;
-            } else {
-                listAndroid = Arrays.asList(versionsAndroid.split(","));
-            }
-        }
-
-        List<String> listuid = null;
-        String uids = record.getUids();
-        if (uids != null && uids.trim().length() > 0) {
-            listuid = Arrays.asList(uids.split(","));
-            if (listuid == null || listuid.size() == 0) {
-                throw new PushInfoException(1, "鐢ㄦ埛id鏍煎紡涓嶆纭�");
-            }
-        }
-
-        PushTypeEnum type = record.getType();
-        if (type == null) {
-            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鑳戒负绌�");
-        }
-
-        int pushWay = 0;
-        if (PushTypeEnum.ZNX == type) {
-            pushWay = 1;
-        } else if (PushTypeEnum.URL == type) {
-            pushWay = 2;
-        } else if (PushTypeEnum.BAICHUAN == type) {
-            pushWay = 3;
-        } else {
-            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
-        }
-
-        if (listuid == null) { // 鍏ㄦ帹
-            switch (pushWay) {
-                case 1: // 绔欏唴淇�
-                    pushService.pushZNX(null, title, content, listIOS, listAndroid, record.getSystem());
-                    break;
-                case 2: // 缃戦〉鎺ㄩ��
-                    pushService.pushUrl(null, title, content, url, listIOS, listAndroid, record.getSystem());
-                    break;
-                case 3: // 鐧惧窛
-                    pushService.pushBaiChuanUrl(null, title, content, url, listIOS, listAndroid, record.getSystem());
-                    break;
-                default:
-                    throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
-            }
-
-        } else {
-            for (String str_uid : listuid) {
-                if (str_uid != null && str_uid.trim().length() > 0) {
-                    long uid = Long.parseLong(str_uid);
-                    switch (pushWay) {
-                        case 1: // 绔欏唴淇�
-                            pushService.pushZNX(uid, title, content, listIOS, listAndroid, record.getSystem());
-                            userSystemMsgService.addUserSystemMsg(uid, UserSystemMsgTypeEnum.question, title, content,
-                                    UserSystemMsg.TIME_TAG_COMMON, null);
-                            break;
-                        case 2: // 缃戦〉鎺ㄩ��
-                            pushService.pushUrl(uid, title, content, url, listIOS, listAndroid, record.getSystem());
-                            break;
-                        case 3: // 鐧惧窛
-                            pushService.pushBaiChuanUrl(uid, title, content, url, listIOS, listAndroid, record.getSystem());
-                            break;
-                        default:
-                            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
-                    }
-                }
-            }
-        }
-
-
-    }
-}
+package com.yeshi.fanli.service.impl.push;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import com.yeshi.fanli.entity.SystemEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.yeshi.fanli.dao.mybatis.push.PushInfoMapper;
+import com.yeshi.fanli.entity.bus.msg.UserSystemMsg;
+import com.yeshi.fanli.entity.bus.msg.UserSystemMsgTypeEnum;
+import com.yeshi.fanli.entity.push.PushInfo;
+import com.yeshi.fanli.entity.push.PushInfo.PushTypeEnum;
+import com.yeshi.fanli.exception.push.PushException;
+import com.yeshi.fanli.exception.push.PushInfoException;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
+import com.yeshi.fanli.service.inter.push.PushInfoService;
+import com.yeshi.fanli.service.inter.push.PushService;
+import com.yeshi.fanli.util.StringUtil;
+
+import net.sf.json.JSONObject;
+
+@Service
+public class PushInfoServiceImpl implements PushInfoService {
+
+    @Resource
+    private PushService pushService;
+
+    @Resource
+    private UserSystemMsgService userSystemMsgService;
+
+    @Resource
+    private PushInfoMapper pushInfoMapper;
+
+    private Logger logger = LoggerFactory.getLogger("debugLog");
+
+    @Override
+    public void save(PushInfo record) throws PushInfoException, Exception {
+        if (record == null) {
+            throw new PushInfoException(1, "鍙傛暟涓嶆纭�");
+        }
+
+        PushTypeEnum type = record.getType();
+        if (type == null) {
+            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鑳戒负绌�");
+        }
+
+        String title = record.getTitle();
+        if (title == null || title.trim().length() == 0) {
+            throw new PushInfoException(1, "鏍囬涓嶈兘涓虹┖");
+        }
+
+        String arrayAndroid = record.getArrayAndroid();
+        String arrayIOS = record.getArrayIOS();
+        if (StringUtil.isNullOrEmpty(arrayIOS) && StringUtil.isNullOrEmpty(arrayAndroid)) {
+            throw new PushInfoException(1, "鎺ㄩ�佺増鏈笉鑳戒负绌�");
+        }
+
+        // 瀹氭椂鏃堕棿
+        Boolean timeTask = record.isTimeTask();
+        if (timeTask != null && timeTask) {
+            String controlTime_str = record.getControlTime_str();
+            if (controlTime_str == null || controlTime_str.trim().length() == 0) {
+                throw new PushInfoException(1, "棰勮鏃堕棿涓嶈兘涓虹┖");
+            }
+
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+            controlTime_str = controlTime_str.replaceAll("T", " ");
+            record.setControlTime(format.parse(controlTime_str));
+        } else {
+            record.setControlTime(null);
+        }
+
+        String url = record.getUrl();
+        String content = record.getContent();
+        if (StringUtil.isNullOrEmpty(url) && StringUtil.isNullOrEmpty(content)) {
+            throw new PushInfoException(1, "鎺ㄩ�佸唴瀹规垨URL涓嶈兘涓虹┖");
+        }
+
+        if (url != null && (url.trim().length() == 0 || url.equalsIgnoreCase("null"))) {
+            record.setUrl(null);
+        }
+
+        if (content != null && (content.trim().length() == 0 || content.equalsIgnoreCase("null"))) {
+            record.setContent(null);
+        }
+
+        String uids = record.getUids();
+        if (uids != null && (uids.trim().length() == 0 || uids.equalsIgnoreCase("null"))) {
+            record.setUids(null);
+        }
+
+        // 鏁版嵁杞崲json
+        convertJson(record);
+        record.setState(PushInfo.STATE_INIT);
+
+        Long id = record.getId();
+        if (id == null) {
+            record.setCreateTime(new Date());
+            record.setUpdateTime(new Date());
+            pushInfoMapper.insert(record);
+        } else {
+            // 淇敼
+            PushInfo current = pushInfoMapper.selectByPrimaryKey(id);
+            if (current == null) {
+                throw new PushInfoException(1, "璇ヨ褰曞凡涓嶅瓨鍦�");
+            }
+
+            if (PushInfo.STATE_SUCCESS == current.getState()) {
+                throw new PushInfoException(1, "宸叉帹閫佹垚鍔熺殑淇℃伅涓嶈兘淇敼");
+            }
+            record.setCreateTime(current.getCreateTime());
+            record.setUpdateTime(new Date());
+            pushInfoMapper.updateByPrimaryKey(record);
+        }
+    }
+
+
+    /**
+     * 杞崲json
+     */
+    public void convertJson(PushInfo record) {
+        JSONObject json = new JSONObject();
+        String url = record.getUrl();
+        if (StringUtil.isNullOrEmpty(url)) {
+            url = "";
+        }
+        json.put("url", url);
+        json.put("ios", convertVersion(record.getArrayIOS()));
+        json.put("android", convertVersion(record.getArrayAndroid()));
+        record.setJsonData(json.toString());
+    }
+
+    /**
+     * 杞崲list
+     */
+    public String convertVersion(String array) {
+        String versions = "";
+        if (array != null && array.trim().length() > 0) {
+            Gson gson = new Gson();
+            List<String> list = gson.fromJson(array, new TypeToken<ArrayList<String>>() {
+            }.getType());
+
+            if (list != null && list.size() > 0) {
+
+                for (String version : list) {
+                    versions += version + ",";
+                }
+                if (versions.endsWith(",")) {
+                    versions = versions.substring(0, versions.length() - 1);
+                }
+            }
+        }
+        return versions;
+    }
+
+    @Override
+    public void deleteBatchByPrimaryKey(List<Long> list) {
+        pushInfoMapper.deleteBatchByPrimaryKey(list);
+    }
+
+    @Override
+    public List<PushInfo> listQuery(long start, int count, String key, Integer keyType, Integer state, String type, SystemEnum system) {
+
+        List<PushInfo> list = pushInfoMapper.listQuery(start, count, key, keyType, state, type, system);
+        if (list == null || list.size() == 0) {
+            return list;
+        }
+
+        for (PushInfo pushInfo : list) {
+            Date controlTime = pushInfo.getControlTime();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
+            if (controlTime == null) {
+                pushInfo.setTimeTask(false);
+                pushInfo.setControlTime_str("");
+            } else {
+                pushInfo.setTimeTask(true);
+                pushInfo.setControlTime_str(sdf.format(controlTime));
+            }
+
+            String jsonData = pushInfo.getJsonData();
+            JSONObject json = JSONObject.fromObject(jsonData);
+            String url = json.getString("url");
+            pushInfo.setUrl(url);
+
+            List<String> listIOS = new ArrayList<String>();
+            String versionsIOS = json.getString("ios");
+            if (versionsIOS != null && versionsIOS.trim().length() > 0) {
+                listIOS = Arrays.asList(versionsIOS.split(","));
+            }
+            pushInfo.setListIOS(listIOS);
+
+            List<String> listAndroid = new ArrayList<String>();
+            String versionsAndroid = json.getString("android");
+            if (versionsAndroid != null && versionsAndroid.trim().length() > 0) {
+                listAndroid = Arrays.asList(versionsAndroid.split(","));
+            }
+            pushInfo.setListAndroid(listAndroid);
+        }
+
+        return list;
+    }
+
+    @Override
+    public long countQuery(String key, Integer keyType, Integer state, String type, SystemEnum system) {
+        return pushInfoMapper.countQuery(key, keyType, state, type, system);
+    }
+
+    @Override
+    public List<PushInfo> listTask(SystemEnum system) {
+        return pushInfoMapper.listTask(system);
+    }
+
+    @Override
+    public void handPush(Long id) throws Exception, PushInfoException, PushException {
+        PushInfo record = pushInfoMapper.selectByPrimaryKey(id);
+        if (record == null) {
+            throw new PushInfoException(1, "鎺ㄩ�佷俊鎭凡涓嶅瓨鍦�");
+        }
+        // 鎵ц鎺ㄩ��
+        executePush(record);
+        record.setState(PushInfo.STATE_SUCCESS);
+        record.setPushTime(new Date());
+        record.setUpdateTime(new Date());
+        pushInfoMapper.updateByPrimaryKey(record);
+    }
+
+    @Override
+    public void taskPush(PushInfo record) {
+        String msg = null;
+        int state = PushInfo.STATE_FAIL;
+        try {
+            // 鎵ц鎺ㄩ��
+            executePush(record);
+            state = PushInfo.STATE_SUCCESS;
+        } catch (PushInfoException e) {
+            msg = e.getMsg();
+        } catch (PushException e) {
+            msg = e.getMsg();
+        } catch (Exception e) {
+            msg = "绯荤粺鎺ㄩ�佸け璐�";
+            logger.error("绯荤粺鎺ㄩ�佸け璐�",e);
+        }
+        record.setState(state);
+        record.setPushTime(new Date());
+        record.setRemark(msg);
+        record.setUpdateTime(new Date());
+        pushInfoMapper.updateByPrimaryKey(record);
+    }
+
+    @Override
+    public PushInfo selectByPrimaryKey(Long id) {
+        return pushInfoMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public void updateSelectiveByPrimaryKey(PushInfo info) {
+        pushInfoMapper.updateByPrimaryKeySelective(info);
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void executePush(PushInfo record) throws Exception, PushInfoException, PushException {
+
+        if (PushInfo.STATE_SUCCESS == record.getState()) {
+            throw new PushInfoException(1, "璇ヤ俊鎭笉鑳介噸澶嶆帹閫�");
+        }
+
+        String title = record.getTitle();
+        if (title == null || title.trim().length() == 0) {
+            throw new PushInfoException(1, "鏍囬涓嶈兘涓虹┖");
+        }
+
+        String jsonData = record.getJsonData();
+        if (StringUtil.isNullOrEmpty(jsonData) && StringUtil.isNullOrEmpty(jsonData)) {
+            throw new PushInfoException(1, "鎺ㄩ�佺増鏈笉鑳戒负绌�");
+        }
+
+        JSONObject json = JSONObject.fromObject(jsonData);
+        String url = json.getString("url");
+        String content = record.getContent();
+        if (StringUtil.isNullOrEmpty(url) && StringUtil.isNullOrEmpty(content)) {
+            throw new PushInfoException(1, "鎺ㄩ�佸唴瀹规垨URL涓嶈兘涓虹┖");
+        }
+
+        List<String> listIOS = new ArrayList<String>();
+        String versionsIOS = json.getString("ios");
+        if (versionsIOS != null && versionsIOS.trim().length() > 0) {
+            if (versionsIOS.contains("鍏ㄦ帹")) {
+                listIOS = null;
+            } else {
+                listIOS = Arrays.asList(versionsIOS.split(","));
+            }
+        }
+
+        List<String> listAndroid = new ArrayList<String>();
+        String versionsAndroid = json.getString("android");
+        if (versionsAndroid != null && versionsAndroid.trim().length() > 0) {
+            if (versionsAndroid.contains("鍏ㄦ帹")) {
+                listAndroid = null;
+            } else {
+                listAndroid = Arrays.asList(versionsAndroid.split(","));
+            }
+        }
+
+        List<String> listuid = null;
+        String uids = record.getUids();
+        if (uids != null && uids.trim().length() > 0) {
+            listuid = Arrays.asList(uids.split(","));
+            if (listuid == null || listuid.size() == 0) {
+                throw new PushInfoException(1, "鐢ㄦ埛id鏍煎紡涓嶆纭�");
+            }
+        }
+
+        PushTypeEnum type = record.getType();
+        if (type == null) {
+            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鑳戒负绌�");
+        }
+
+        int pushWay = 0;
+        if (PushTypeEnum.ZNX == type) {
+            pushWay = 1;
+        } else if (PushTypeEnum.URL == type) {
+            pushWay = 2;
+        } else if (PushTypeEnum.BAICHUAN == type) {
+            pushWay = 3;
+        } else {
+            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
+        }
+
+        if (listuid == null) { // 鍏ㄦ帹
+            switch (pushWay) {
+                case 1: // 绔欏唴淇�
+                    pushService.pushZNX(null, title, content, listIOS, listAndroid, record.getSystem());
+                    break;
+                case 2: // 缃戦〉鎺ㄩ��
+                    pushService.pushUrl(null, title, content, url, listIOS, listAndroid, record.getSystem());
+                    break;
+                case 3: // 鐧惧窛
+                    pushService.pushBaiChuanUrl(null, title, content, url, listIOS, listAndroid, record.getSystem());
+                    break;
+                default:
+                    throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
+            }
+
+        } else {
+            for (String str_uid : listuid) {
+                if (str_uid != null && str_uid.trim().length() > 0) {
+                    long uid = Long.parseLong(str_uid);
+                    switch (pushWay) {
+                        case 1: // 绔欏唴淇�
+                            pushService.pushZNX(uid, title, content, listIOS, listAndroid, record.getSystem());
+                            userSystemMsgService.addUserSystemMsg(uid, UserSystemMsgTypeEnum.question, title, content,
+                                    UserSystemMsg.TIME_TAG_COMMON, null);
+                            break;
+                        case 2: // 缃戦〉鎺ㄩ��
+                            pushService.pushUrl(uid, title, content, url, listIOS, listAndroid, record.getSystem());
+                            break;
+                        case 3: // 鐧惧窛
+                            pushService.pushBaiChuanUrl(uid, title, content, url, listIOS, listAndroid, record.getSystem());
+                            break;
+                        default:
+                            throw new PushInfoException(1, "鎺ㄩ�佺被鍨嬩笉鍖归厤");
+                    }
+                }
+            }
+        }
+
+
+    }
+}

--
Gitblit v1.8.0