| | |
| | | package com.yeshi.fanli.controller.client;
|
| | |
|
| | | import java.io.PrintWriter;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.core.task.TaskExecutor;
|
| | | import org.springframework.stereotype.Controller;
|
| | | import org.springframework.web.bind.annotation.RequestMapping;
|
| | | import org.springframework.web.bind.annotation.RequestMethod;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.common.JumpDetailV2;
|
| | | import com.yeshi.fanli.entity.goods.CommonGoods;
|
| | | import com.yeshi.fanli.entity.push.DeviceActive;
|
| | | import com.yeshi.fanli.entity.push.DeviceTokenIOS;
|
| | | import com.yeshi.fanli.entity.push.PushGoods;
|
| | | import com.yeshi.fanli.entity.push.PushGoodsGroup;
|
| | | import com.yeshi.fanli.entity.push.PushGoodsRecord;
|
| | | import com.yeshi.fanli.entity.system.System;
|
| | | import com.yeshi.fanli.exception.push.PushGoodsGroupException;
|
| | | import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.config.SystemService;
|
| | | import com.yeshi.fanli.service.inter.push.DeviceActiveService;
|
| | | import com.yeshi.fanli.service.inter.push.DeviceTokenHWService;
|
| | | import com.yeshi.fanli.service.inter.push.IOSPushService;
|
| | | import com.yeshi.fanli.service.inter.push.PushGoodsGroupService;
|
| | | import com.yeshi.fanli.service.inter.push.PushGoodsRecordService;
|
| | | import com.yeshi.fanli.service.inter.push.PushGoodsService;
|
| | | import com.yeshi.fanli.service.inter.push.PushRecordService;
|
| | | import com.yeshi.fanli.service.inter.push.PushService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.factory.JumpDetailParamsFactory;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Controller
|
| | | @RequestMapping(value = "api/v1/push")
|
| | |
| | |
|
| | | @Resource
|
| | | private DeviceActiveService deviceActiveService;
|
| | |
|
| | | @Resource
|
| | | private PushService pushService;
|
| | |
|
| | | @Resource
|
| | | private PushGoodsService PushGoodsService;
|
| | |
|
| | | @Resource
|
| | | private PushGoodsGroupService pushGoodsGroupService;
|
| | |
|
| | | @Resource
|
| | | private PushGoodsRecordService pushGoodsRecordService;
|
| | |
|
| | | @Resource
|
| | | private JumpDetailV2Service jumpDetailV2Service;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource(name = "taskExecutor")
|
| | | private TaskExecutor executor;
|
| | |
|
| | | @RequestMapping(value = "callback", method = RequestMethod.POST)
|
| | | public void callback(AcceptData acceptData, String pushId, PrintWriter out) {
|
| | |
| | | da.setDeviceToken(deviceToken);
|
| | | da.setPlatform(DeviceActive.PLATFORM_IOS);
|
| | | da.setVersionCode(Integer.parseInt(acceptData.getVersion()));
|
| | | da.setDevice(acceptData.getDevice());
|
| | | deviceActiveService.addDeviceActive(da);
|
| | |
|
| | | DeviceTokenIOS deviceTokenIOS = iosPushService.getDeviceTokenByDeviceToken(deviceToken);
|
| | | if (deviceTokenIOS == null)
|
| | | iosPushService.addDeviceToken(null, Integer.parseInt(acceptData.getVersion()), deviceToken,
|
| | | acceptData.getDevice());
|
| | | else {
|
| | | deviceTokenIOS.setDevice(acceptData.getDevice());
|
| | | iosPushService.updateDeviceToken(deviceTokenIOS);
|
| | | }
|
| | | iosPushService.addDeviceToken(null, Integer.parseInt(acceptData.getVersion()), deviceToken,
|
| | | acceptData.getDevice());
|
| | | out.print(JsonUtil.loadTrue(0, null, "成功"));
|
| | | }
|
| | | }
|
| | |
| | | da.setDeviceToken(deviceToken);
|
| | | da.setPlatform(DeviceActive.PLATFORM_IOS);
|
| | | da.setVersionCode(Integer.parseInt(acceptData.getVersion()));
|
| | | da.setDevice(acceptData.getDevice());
|
| | | deviceActiveService.addDeviceActive(da);
|
| | | // 添加token
|
| | | DeviceTokenIOS deviceTokenIOS = iosPushService.getDeviceTokenByDeviceToken(acceptData.getDevice());
|
| | | if (deviceTokenIOS != null) {
|
| | | deviceTokenIOS.setUid(uid);
|
| | | deviceTokenIOS.setDevice(acceptData.getDevice());
|
| | | deviceTokenIOS.setVersion(Integer.parseInt(acceptData.getVersion()));
|
| | | iosPushService.updateDeviceToken(deviceTokenIOS);
|
| | | } else {
|
| | | iosPushService.addDeviceToken(uid, Integer.parseInt(acceptData.getVersion()), deviceToken,
|
| | | acceptData.getDevice());
|
| | | }
|
| | | out.print(JsonUtil.loadTrueResult(""));
|
| | | iosPushService.addDeviceToken(uid, Integer.parseInt(acceptData.getVersion()), deviceToken,
|
| | | acceptData.getDevice());
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | */
|
| | | @RequestMapping(value = "/unBind", method = RequestMethod.POST)
|
| | | public void unBind(AcceptData acceptData, String deviceToken, PrintWriter out) {
|
| | | if (!StringUtil.isNullOrEmpty(deviceToken)) {
|
| | | DeviceTokenIOS deviceTokenIOS = iosPushService.getDeviceTokenByDeviceToken(deviceToken);
|
| | | if (deviceTokenIOS != null) {
|
| | | deviceTokenIOS.setUid(null);
|
| | | iosPushService.updateDeviceToken(deviceTokenIOS);
|
| | | }
|
| | | if (!StringUtil.isNullOrEmpty(acceptData.getDevice())) {
|
| | | iosPushService.unBindUidAndDevice(acceptData.getDevice());
|
| | | out.print(JsonUtil.loadTrue(0, null, "解绑成功"));
|
| | | }
|
| | | }
|
| | |
| | | out.print(JsonUtil.loadTrueResult("成功"));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 解绑推送
|
| | | * |
| | | * @param acceptData
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "/gethistory", method = RequestMethod.POST)
|
| | | public void getHistory(AcceptData acceptData, Long uid, String deviceToken, int page, PrintWriter out) {
|
| | |
|
| | | long count = 0;
|
| | | List<PushGoods> list = null;
|
| | | JSONArray resultList = new JSONArray();
|
| | |
|
| | | DeviceActive deviceActive = deviceActiveService.getDeviceByDeviceAndPlatform(acceptData.getDevice(),
|
| | | deviceToken, acceptData.getPlatform());
|
| | |
|
| | | if (deviceActive != null) {
|
| | |
|
| | | // 设备注册时间
|
| | | Date createTime = deviceActive.getCreateTime();
|
| | | count = PushGoodsService.countHistoryByPushTime(uid, createTime);
|
| | |
|
| | | int pageSize = Constant.PAGE_SIZE;
|
| | |
|
| | | list = PushGoodsService.listHistoryByPushTime((page - 1) * pageSize, pageSize, uid, createTime);
|
| | | if (list != null && list.size() > 0) {
|
| | | for (PushGoods pushGoods : list) {
|
| | | JSONObject result = new JSONObject();
|
| | |
|
| | | Long pushId = pushGoods.getId();
|
| | | String picture = pushGoods.getPicture();
|
| | | String alertContent = pushGoods.getAlertContent();
|
| | | Date pushTime = pushGoods.getPushTime();
|
| | |
|
| | | result.put("content", alertContent);
|
| | | result.put("pushtime", pushTime.getTime());
|
| | |
|
| | | // 统计商品数量
|
| | | long totalgoods = 0;
|
| | | // 商品id
|
| | | Long auctionId = null;
|
| | | if (StringUtil.isNullOrEmpty(picture)) {
|
| | | try {
|
| | | List<PushGoodsGroup> listGroup = pushGoodsGroupService.getAllInfoByPushId(pushId);
|
| | |
|
| | | if (listGroup != null && listGroup.size() > 0) {
|
| | |
|
| | | totalgoods = listGroup.size();
|
| | |
|
| | | PushGoodsGroup pushGoodsGroup = listGroup.get(0);
|
| | | if (pushGoodsGroup != null) {
|
| | | CommonGoods commonGoods = pushGoodsGroup.getCommonGoods();
|
| | | if (commonGoods != null) {
|
| | | picture = commonGoods.getPicture();
|
| | | auctionId = commonGoods.getGoodsId();
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (PushGoodsGroupException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | result.put("picture", picture);
|
| | |
|
| | | String fontColor1 = "#666666";
|
| | | String fontColor2 = "#E5005C";
|
| | | JSONArray array = new JSONArray();
|
| | |
|
| | | JSONObject contentJson1 = new JSONObject();
|
| | | contentJson1.put("color", fontColor1);
|
| | | contentJson1.put("content", "本次推荐共");
|
| | |
|
| | | JSONObject contentJson2 = new JSONObject();
|
| | | contentJson2.put("color", fontColor2);
|
| | | contentJson2.put("content", totalgoods);
|
| | |
|
| | | JSONObject contentJson3 = new JSONObject();
|
| | | contentJson3.put("color", fontColor1);
|
| | | contentJson3.put("content", "个商品");
|
| | |
|
| | | array.add(contentJson1);
|
| | | array.add(contentJson2);
|
| | | array.add(contentJson3);
|
| | |
|
| | | result.put("totalwords", array);
|
| | |
|
| | | String params = "";
|
| | |
|
| | | JumpDetailV2 jumpDetail = null;
|
| | | if (totalgoods == 1) {
|
| | |
|
| | | params = JumpDetailParamsFactory.createGoodsParams(auctionId);
|
| | | // 单个商品跳转商品详情
|
| | | jumpDetail = jumpDetailV2Service.getByTypeCache("goodsdetail");
|
| | |
|
| | | } else {
|
| | | String url = configService.get("push_goods_details");
|
| | | if (url == null) {
|
| | | url = "";
|
| | | }
|
| | | url = url + "?id=" + pushId;
|
| | |
|
| | | params = JumpDetailParamsFactory.createWEBParams(url);
|
| | |
|
| | | // 跳转推荐详情
|
| | | jumpDetail = jumpDetailV2Service.getByTypeCache("web");
|
| | | }
|
| | | result.put("params", params);
|
| | | result.put("jumpDetail", jumpDetail);
|
| | |
|
| | | resultList.add(result);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject resultJson = new JSONObject();
|
| | | resultJson.put("count", count);
|
| | | resultJson.put("result_list", resultList);
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(resultJson));
|
| | |
|
| | | // 列表参数、设备参数信息不为空
|
| | | if (list != null && list.size() > 0 && deviceActive != null) {
|
| | |
|
| | | final List<PushGoods> listPush = list;
|
| | | // 记录访问信息
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | try {
|
| | | Long deviceId = deviceActive.getId();
|
| | |
|
| | | for (PushGoods pushGoods : listPush) {
|
| | | List<PushGoodsRecord> listRecord = pushGoodsRecordService
|
| | | .listByPushIdAndDeviceId(pushGoods.getId(), deviceId);
|
| | | if (listRecord != null && listRecord.size() > 0) {
|
| | | continue; // 已被记录
|
| | | }
|
| | |
|
| | | PushGoodsRecord pushGoodsRecord = new PushGoodsRecord();
|
| | |
|
| | | pushGoodsRecord.setCreateTime(new Date());
|
| | | pushGoodsRecord.setPushGoods(pushGoods);
|
| | | pushGoodsRecord.setDeviceActive(deviceActive);
|
| | | pushGoodsRecordService.insert(pushGoodsRecord);
|
| | | }
|
| | |
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | |
|
| | | }
|