package com.yeshi.fanli.controller; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.UUID; import javax.annotation.Resource; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.servlet.http.HttpServletRequest; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.quartz.JobExecutionContext; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.wx.WXUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.dao.dynamic.DynamicInfoDao; import com.yeshi.fanli.dao.mybatis.help.HelpCenterMapper; import com.yeshi.fanli.dto.ConfigParamsDTO; import com.yeshi.fanli.dto.jd.JDSearchResult; import com.yeshi.fanli.entity.bus.activity.ActivityShareResult; import com.yeshi.fanli.entity.bus.activity.RecommendActivity; import com.yeshi.fanli.entity.dynamic.InviteMaterial; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.exception.ActivityException; import com.yeshi.fanli.exception.push.PushException; import com.yeshi.fanli.exception.share.UserShareGoodsRecordException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.activity.ActivityService; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; import com.yeshi.fanli.service.inter.dynamic.InviteMaterialService; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.money.UserMoneyExtraService; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.service.inter.user.integral.IntegralGetService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.db.MongoDBManager; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.push.OPPOPushUtil; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Controller @RequestMapping("test") public class TestController { @Resource private RedisManager redisManager; @Resource private ActivityService activityService; @Resource private MongoDBManager mongoDBManager; @Resource private HelpCenterMapper helpCenterMapper; @Resource private Scheduler scheduler; @Resource private DynamicInfoService dynamicInfoService; @Resource private TaoBaoGoodsBriefService taoBaoGoodsBriefService; @Resource private EhCacheCacheManager ehCacheCacheManager; @Resource private ConfigService configService; @Resource private HongBaoManageService hongBaoManageService; @Resource private InviteMaterialService inviteMaterialService; @Resource private DynamicInfoDao dynamicInfoDao; @Resource private JedisPool jedisPool; @Resource private IntegralGetService integralGetService; @Resource private UserMoneyExtraService userMoneyExtraService; @RequestMapping(value = "kefu") public void kefu(HttpServletRequest request, PrintWriter out) { String content = WXUtil.getContent(request); LogHelper.test(content); return; } @RequestMapping(value = "testactivity") public void test2(PrintWriter out) { List list = activityService.getRecommendActivityList(1, Constant.PAGE_SIZE); long count = activityService.getRecommendActivityCount(null); JSONObject data = new JSONObject(); data.put("data", getGson().toJson(list)); data.put("count", count); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "testactivitysharegoods") public void test3(PrintWriter out) { try { ActivityShareResult result = activityService.shareActivityGoods(343448L, 1L); out.print(JsonUtil.getSimpleGson().toJson(result)); } catch (UserShareGoodsRecordException e) { e.printStackTrace(); } catch (ActivityException e) { e.printStackTrace(); } } @RequestMapping(value = "testactivityshareinvite") public void test4(PrintWriter out) { try { ActivityShareResult result = activityService.shareInviteImg(343448L, 2L); out.print(JsonUtil.getSimpleGson().toJson(result)); } catch (ActivityException e) { e.printStackTrace(); } } @RequestMapping(value = "testnumber") public void test5(PrintWriter out) { JSONArray array = new JSONArray(); for (int i = 0; i < 1000; i++) { JSONObject data = new JSONObject(); data.put("number", new BigDecimal("10").add(new BigDecimal("0.1").multiply(new BigDecimal(i)))); array.add(data); } out.print(array.toString()); } private Gson getGson() { GsonBuilder gb = new GsonBuilder(); gb.setDateFormat("MM-dd HH:mm"); gb.excludeFieldsWithoutExposeAnnotation(); Gson gson = gb.create(); return gson; } @RequestMapping(value = "scheduler") public void test8(PrintWriter out) { try { List jobList = scheduler.getCurrentlyExecutingJobs(); out.print("running job:" + jobList.size()); } catch (SchedulerException e) { e.printStackTrace(); } } @RequestMapping(value = "testhtml") public void testhtml(PrintWriter out) { out.print(""); out.close(); } /** * 清除缓存 * * @param out */ @RequestMapping(value = "removeCache") public void removeCache(PrintWriter out) { ehCacheCacheManager.getCacheManager().clearAll(); } @RequestMapping(value = "removeRedisCache") public void removeRedisCache(String key, PrintWriter out) { redisManager.removeCommonString(key); } @RequestMapping(value = "testConfig") public void getTestConfig(PrintWriter pw) { pw.print(configService.get("test")); } @RequestMapping(value = "testDaTaoKe") public void getTestDaTaoKe(PrintWriter pw) { Document doc = null; try { doc = Jsoup.connect("http://www.dataoke.com/ddq").get(); } catch (IOException e1) { e1.printStackTrace(); } Elements els = doc.getElementsByTag("script"); for (int i = 0; i < els.size(); i++) { String content = els.get(i).html(); if (content.indexOf("var dataDef") > -1) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try { String js = "function getData(){return JSON.stringify(dataDef);}" + content; engine.eval(js); if (engine instanceof Invocable) { Invocable in = (Invocable) engine; pw.print(in.invokeFunction("getData")); } } catch (Exception e) { e.printStackTrace(); } } } } /** * 插入邀请素材 * * @param out */ @RequestMapping(value = "uploadInviteMaterial2") public void uploadInviteMaterial2(PrintWriter out) { try { List list = new ArrayList(); File picfile = new File("E:\\Invite\\pic.txt");// Text文件 BufferedReader brp = new BufferedReader(new FileReader(picfile));// 构造一个BufferedReader类来读取文件 String fileUrl = ""; while ((fileUrl = brp.readLine()) != null) {// 使用readLine方法,一次读一行 if (StringUtil.isNullOrEmpty(fileUrl)) { continue; } InviteMaterial inviteMaterial = new InviteMaterial(); inviteMaterial.setId(UUID.randomUUID().toString().replace("-", "")); inviteMaterial.setState(0); inviteMaterial.setPicture(fileUrl); list.add(inviteMaterial); } brp.close(); List listTxt = new ArrayList(); File textfile = new File("E:\\Invite\\content.txt");// Text文件 BufferedReader br = new BufferedReader(new FileReader(textfile));// 构造一个BufferedReader类来读取文件 String s = ""; while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行 if (StringUtil.isNullOrEmpty(s)) { continue; } listTxt.add(s); } br.close(); if (list.size() == 0 || listTxt.size() == 0 || listTxt.size() < list.size()) { return; } for (int i = 0; i < list.size(); i++) { InviteMaterial invite = list.get(i); invite.setText(listTxt.get(i)); inviteMaterialService.insert(invite); } JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("上传成功")); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("上传失败")); e.printStackTrace(); } } /** * 插入邀请素材 * * @param out */ @RequestMapping(value = "saveInvite") public void saveInvite(InviteMaterial inviteMaterial, PrintWriter out) { try { inviteMaterial.setState(0); inviteMaterialService.insert(inviteMaterial); JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("上传成功")); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("上传失败")); e.printStackTrace(); } } /** * 插入邀请素材 * * @param out */ @RequestMapping(value = "insertTimeInvite") public void insertTimeInvite(PrintWriter out) { try { dynamicInfoService.insertTimeInvite(); JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("操作成功")); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } /** * 插入邀请素材 * * @param out */ @RequestMapping(value = "getJingFenList") public void getJingFenList(String callback, Integer page, Integer eliteId, PrintWriter out) { try { JDSearchResult result = JDApiUtil.getJingFenGoods(page, eliteId); long count = 0; JSONObject data = new JSONObject(); JSONArray array = new JSONArray(); if (result != null) { PageEntity pageEntity = result.getPageEntity(); if (pageEntity != null) { count = pageEntity.getTotalCount(); } List goodsList = result.getGoodsList(); if (goodsList != null && goodsList.size() > 0) { BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE, hongBaoManageService.getVIPFanLiRate()); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); for (JDGoods goods : goodsList) { GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO); array.add(gson.toJson(goodsDetailVO)); } } } data.put("count", count); data.put("list", array); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } @RequestMapping(value = "getWaitingThreadsCount") public void getWaitingThreadsCount(PrintWriter out) { out.print(Constant.waitingThreadSet.size()); } @RequestMapping(value = "getBinFaRedisKey") public void getPinFaRedisKey(PrintWriter out) { JSONArray array = new JSONArray(); Jedis jedis = jedisPool.getResource(); try { Set sets = jedis.keys("rs-*"); for (Iterator its = sets.iterator(); its.hasNext();) array.add(its.next()); } finally { jedis.close(); } out.println(array.toString()); } @RequestMapping(value = "pushOppo") public void pushOppo(String registerId, PrintWriter out) { List registerIds = new ArrayList<>(); registerIds.add(registerId); try { OPPOPushUtil.pushUrl(registerIds, "测试网页推送", "测试网页推送内容", "http://www.baidu.com"); } catch (PushException e) { e.printStackTrace(); } try { OPPOPushUtil.pushGoods(registerIds, "测试商品网页推送", "测试商品推送内容", 1, 577628549116L); } catch (PushException e) { e.printStackTrace(); } try { OPPOPushUtil.pushUserSignInNotification(registerIds, "测试签到推送", "测试签到推送"); } catch (PushException e) { e.printStackTrace(); } try { OPPOPushUtil.pushWelfareCenter(registerIds, "测试福利中心推送", "测试福利中心推送"); } catch (PushException e) { e.printStackTrace(); } try { OPPOPushUtil.pushZNX(registerIds, "测试站内信推送", "测试站内信推送"); } catch (PushException e) { e.printStackTrace(); } out.print("success"); } @RequestMapping("getLocalTime") public void getLocalTime(PrintWriter out) { out.print(TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); } @RequestMapping("getSchedulerList") public void getSchedulerList(PrintWriter out) { try { for (String groupName : scheduler.getJobGroupNames()) { System.out.println(groupName); } } catch (Exception e) { } } }