admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/controller/admin/PushCouponController.java
@@ -1,236 +1,322 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.push.PushCoupon;
import com.yeshi.fanli.exception.PushException;
import com.yeshi.fanli.exception.push.PushCouponException;
import com.yeshi.fanli.service.inter.push.PushCouponRecordService;
import com.yeshi.fanli.service.inter.push.PushCouponService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.vo.push.PushCouponVO;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/pushCoupon")
public class PushCouponController {
   @Resource
   private PushCouponService pushCouponService;
   @Resource
   private PushCouponRecordService pushCouponRecordService;
   /**
    * 新增/修改
    *
    * @param callback
    * @param out
    */
   @RequestMapping(value = "save")
   public void save(String callback, PushCoupon pushCoupon, PrintWriter out) {
      try {
         pushCouponService.save(pushCoupon);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
      } catch (PushCouponException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 删除
    *
    * @param callback
    * @param idArray
    * @param out
    */
   @RequestMapping(value = "delete")
   public void delete(String callback, String idArray, PrintWriter out) {
      try {
         if (StringUtil.isNullOrEmpty(idArray)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据"));
            return;
         }
         Gson gson = new Gson();
         List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {
         }.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未检测到删除的数据"));
            return;
         }
         pushCouponService.deleteBatchByPrimaryKey(list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         e.printStackTrace();
      }
   }
   /**
    * 获取推送信息
    *
    * @param out
    */
   @RequestMapping(value = "getPushInfo")
   public void getPushInfo(String callback, Long id, PrintWriter out) {
      if (id == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
         return;
      }
      try {
         PushCoupon pushCoupon = pushCouponService.selectByPrimaryKey(id);
         if (pushCoupon == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("数据信息已不存在"));
            return;
         }
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd").create();
         JSONObject data = new JSONObject();
         data.put("pushCoupon", gson.toJson(pushCoupon));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 查询
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param key
    *            模糊查询:说明、标识
    * @param out
    */
   @RequestMapping(value = "query")
   public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer state, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      if (pageSize == null || pageSize < 1) {
         pageSize = Constant.PAGE_SIZE;
      }
      try {
         List<PushCoupon> list = pushCouponService.listQuery((pageIndex - 1) * pageSize, pageSize, key, state);
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         List<PushCouponVO> listVO = new ArrayList<PushCouponVO>();
         for (PushCoupon pushCoupon : list) {
            PushCouponVO pushCouponVO = new PushCouponVO();
            PropertyUtils.copyProperties(pushCouponVO, pushCoupon);
            long receivedCount = pushCouponRecordService.countByPushId(pushCoupon.getId());
            pushCouponVO.setReceivedCount(receivedCount);
            listVO.add(pushCouponVO);
         }
         long count = pushCouponService.countQuery(key, state);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", gson.toJson(listVO));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 推送
    * @param id 推送id
    * @param out
    * @throws Exception
    */
   @RequestMapping(value = "push")
   public void push(String callback, String idArray, PrintWriter out) throws Exception {
      if (idArray == null || idArray.trim().length() == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
         return;
      }
      try {
         Gson gson = new Gson();
         List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {}.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
            return;
         }
         for (Long id: list) {
            pushCouponService.executePush(id);
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
      } catch (PushException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (PushCouponException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送失败"));
      }
   }
}
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
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.accept.AdminAcceptData;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.push.PushCoupon;
import com.yeshi.fanli.exception.push.PushCouponException;
import com.yeshi.fanli.exception.push.PushException;
import com.yeshi.fanli.service.inter.push.PushCouponRecordService;
import com.yeshi.fanli.service.inter.push.PushCouponService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.vo.push.PushCouponVO;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("admin/new/api/v1/pushCoupon")
public class PushCouponController {
   @Resource
   private PushCouponService pushCouponService;
   @Resource
   private PushCouponRecordService pushCouponRecordService;
   /**
    * 新增/修改
    *
    * @param callback
    * @param out
    */
   @RequestMapping(value = "save")
   public void save(AdminAcceptData acceptData,String callback, PushCoupon pushCoupon,  PrintWriter out) {
      try {
         pushCouponService.save(pushCoupon);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("发放成功"));
      } catch (PushCouponException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("发送失败"));
         e.printStackTrace();
      }
   }
   /**
    * 删除
    *
    * @param callback
    * @param idArray
    * @param out
    */
   @RequestMapping(value = "delete")
   public void delete(AdminAcceptData acceptData,String callback, String idArray, PrintWriter out) {
      try {
         if (StringUtil.isNullOrEmpty(idArray)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据"));
            return;
         }
         Gson gson = new Gson();
         List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {
         }.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未检测到删除的数据"));
            return;
         }
         pushCouponService.deleteBatchByPrimaryKey(list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         e.printStackTrace();
      }
   }
   /**
    * 获取推送信息
    *
    * @param out
    */
   @RequestMapping(value = "getPushInfo")
   public void getPushInfo(AdminAcceptData acceptData,String callback, Long id, PrintWriter out) {
      if (id == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
         return;
      }
      try {
         PushCoupon pushCoupon = pushCouponService.selectByPrimaryKey(id);
         if (pushCoupon == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("数据信息已不存在"));
            return;
         }
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd").create();
         JSONObject data = new JSONObject();
         data.put("pushCoupon", gson.toJson(pushCoupon));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 查询
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param key
    *            模糊查询:说明、标识
    * @param out
    */
   @RequestMapping(value = "query")
   public void query(AdminAcceptData acceptData, String callback, Integer pageIndex, Integer pageSize, String key, Integer state, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      if (pageSize == null || pageSize < 1) {
         pageSize = Constant.PAGE_SIZE;
      }
      try {
         List<PushCoupon> list = pushCouponService.listQuery((pageIndex - 1) * pageSize, pageSize, key, state,acceptData.getSystem());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         List<PushCouponVO> listVO = new ArrayList<PushCouponVO>();
         for (PushCoupon pushCoupon : list) {
            PushCouponVO pushCouponVO = new PushCouponVO();
            PropertyUtils.copyProperties(pushCouponVO, pushCoupon);
            long receivedCount = pushCouponRecordService.countByPushId(pushCoupon.getId());
            pushCouponVO.setReceivedCount(receivedCount);
            convertVersionList(pushCouponVO);
            Date createTime = pushCouponVO.getCreateTime();
            pushCouponVO.setPushTime(createTime);
            listVO.add(pushCouponVO);
         }
         long count = pushCouponService.countQuery(key, state,acceptData.getSystem());
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", gson.toJson(listVO));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 推送
    * @param out
    * @throws Exception
    */
   @RequestMapping(value = "push")
   public void push(AdminAcceptData acceptData,String callback, String idArray, PrintWriter out) throws Exception {
      if (idArray == null || idArray.trim().length() == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
         return;
      }
      try {
         Gson gson = new Gson();
         List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {}.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递参数不能为空"));
            return;
         }
         for (Long id: list) {
            pushCouponService.executePush(id);
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("推送成功"));
      } catch (PushException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (PushCouponException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("推送失败"));
      }
   }
   /**
    * 版本转换为list
    */
   public void convertVersionList(PushCouponVO pushCouponVO) {
     String versions = pushCouponVO.getVersions();
     List<String> listIOS = null;
     List<String> listAndroid = null;
     if (versions == null || versions.trim().length() == 0) {
        listIOS = new ArrayList<String>();
        listAndroid = new ArrayList<String>();
     } else {
        JSONObject json = JSONObject.fromObject(versions);
         String versionsIOS = json.getString("IOS");
         if (versionsIOS != null && versionsIOS.trim().length() > 0) {
            listIOS = Arrays.asList(versionsIOS.split(","));
         }
         String versionsAndroid  = json.getString("Android");
         if (versionsAndroid != null && versionsAndroid.trim().length() > 0) {
            listAndroid = Arrays.asList(versionsAndroid.split(","));
         }
     }
     pushCouponVO.setListIOS(listIOS);
     pushCouponVO.setListAndroid(listAndroid);
   }
   /**
    * 转换json
    */
   public void convertVersion(PushCoupon pushCoupon, String arrayIOS, String arrayAndroid) {
      List<String> listIOS = convertList(arrayIOS);
      List<String> listAndroid = convertList(arrayAndroid);
      if ((listIOS == null || listIOS.size() == 0) && (listAndroid == null || listAndroid.size() == 0)) {
         return;
      }
      JSONObject json =  new JSONObject();
      if (listIOS != null && listIOS.size() > 0) {
         String versions = "";
         for (String version: listIOS) {
            versions += version + ",";
         }
         if (versions.endsWith(",")) {
            versions = versions.substring(0, versions.length() - 1);
         }
         json.put("IOS", versions);
      }
      if (listAndroid != null && listAndroid.size() > 0) {
         String versions = "";
         for (String version: listAndroid) {
            versions += version + ",";
         }
         if (versions.endsWith(",")) {
            versions = versions.substring(0, versions.length() - 1);
         }
         json.put("Android", versions);
      }
      pushCoupon.setVersions(json.toString());
   }
   /**
    * 版本处理
    * @param array
    * @return
    */
   public List<String> convertList (String array) {
      Gson gson = new Gson();
      List<String> list = null;
      if (array != null && array.trim().length() > 0) {
         list = gson.fromJson(array, new TypeToken<ArrayList<String>>() {}.getType());
      }
      return list;
   }
}