fanli/src/main/java/com/yeshi/fanli/aspect/SignValidateAspect.java
@@ -24,6 +24,7 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import net.sf.json.JSONObject; @@ -85,16 +86,25 @@ // 签名是否正确 if (isRight) { // 判断签名超时 // if (Math.abs((Long.parseLong(acceptData.getTime()) - // System.currentTimeMillis())) > 1000 * 60 * 10) { // JSONObject data = new JSONObject(); // data.put("code", -2); // data.put("msg", "时间错误"); // out.print(data); // out.close(); // return null; // } // uid if (Math.abs((Long.parseLong(acceptData.getTime()) - System.currentTimeMillis())) > 1000 * 60 * 10) { JSONObject data = new JSONObject(); data.put("code", -2); data.put("msg", "时间错误"); out.print(data); out.close(); return null; } final String url = request.getRequestURI(); @SuppressWarnings("unchecked") final Map<String, Object> params = request.getParameterMap(); ThreadUtil.run(new Runnable() { @Override public void run() { // 记录请求日志 LogHelper.requestInfo(url, params); } }); Object obj = null; try { fanli/src/main/java/com/yeshi/fanli/controller/admin/GoodsSubClassLabelAdminController.java
@@ -73,7 +73,6 @@ } if (label.getId() == null)// 新增 { if (label.getGoodsClass().getId() == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("分类不能为空")); return; fanli/src/main/java/com/yeshi/fanli/controller/client/RecommendController.java
@@ -2059,7 +2059,7 @@ goodsJson.put("shopInfo", tbShopInfo); } goodsJson.put("fanliValid", true);// 是否有返利 goodsJson.put("fanliValid",Math.random()>0.5? true:false);// 是否有返利 // 分享路径 String shareUrl = String.format("%s?id=" + tb.getAuctionId(), Constant.systemCommonConfig.getAppShareInfoUrl()); fanli/src/main/java/com/yeshi/fanli/log/LogHelper.java
@@ -4,6 +4,12 @@ import java.io.FileOutputStream; import java.io.OutputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; @@ -32,6 +38,8 @@ private static Logger loginLogger = Logger.getLogger("loginLog"); private static Logger smsLogger = Logger.getLogger("smsLog"); private static Logger requestLogger = Logger.getLogger("requestLog"); public static void userInfo(Object obj) { userLogger.info(obj); @@ -132,6 +140,32 @@ } } /** * 请求日志 * * @param request */ public static void requestInfo(String url, Map<String, Object> map) { try { Iterator<String> its = map.keySet().iterator(); List<String> list = new ArrayList<>(); while (its.hasNext()) { String key = its.next(); Object value = map.get(key); Object[] values = (Object[]) value; list.add(key + "=" + values[0].toString()); } String paramsStr = ""; for (String param : list) paramsStr += param + "&"; if (paramsStr.endsWith("&")) paramsStr = paramsStr.substring(0, paramsStr.length() - 1); requestLogger.info(String.format("%s#####%s", url, paramsStr)); } catch (Exception e) { } } public static void httpInfo(String url, String params, String response) { String msg = url + "\n" + params + "\n" + response; httpLogger.info(msg); fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java
@@ -53,7 +53,7 @@ } // 订单是否已申诉 List<LostOrder> orderList = lostOrderMapper.selectByOrderId(orderId); List<LostOrder> orderList = lostOrderMapper.selectByOrderIdAndType(orderId, type); if (orderList != null && orderList.size() > 0) { if (orderList.get(0).getState() == 0 || orderList.get(0).getResultCode() == LostOrder.RESULT_CODE_VERFING) { return -2; @@ -213,9 +213,9 @@ @Transactional @Override public void processSuceess(String orderId) { public void processSuceess(String orderId, int orderType) { // 查询订单号是否在申诉列表中 List<LostOrder> list = lostOrderMapper.selectByOrderId(orderId); List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); if (list == null || list.size() == 0) return; for (LostOrder lo : list) { @@ -235,8 +235,8 @@ } @Override public void processFail(String orderId) { List<LostOrder> list = lostOrderMapper.selectByOrderId(orderId); public void processFail(String orderId, int orderType) { List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); if (list != null) for (LostOrder order : list) { LostOrder update = new LostOrder(); fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -17,14 +17,11 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.AccountMessageMapper; import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper; import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper; import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.dao.mybatis.share.PidUserMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.dto.HongBao; import com.yeshi.fanli.entity.bus.user.HongBaoV2; @@ -46,14 +43,11 @@ import com.yeshi.fanli.exception.order.CommonOrderException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.service.inter.push.PushService; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; @@ -64,7 +58,6 @@ import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.util.CMQManager; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; @@ -78,22 +71,7 @@ private OrderMapper orderMapper; @Resource private PidUserMapper pidUserMapper; @Resource private UserInfoMapper userInfoMapper; @Resource private HongBaoManageMapper hongBaoManageMapper; @Resource private AccountMessageMapper accountMessageMapper; @Resource private OrderService orderService; @Resource private PushService pushService; @Resource private UserNotificationService userNotificationService; @@ -107,17 +85,12 @@ @Resource private TaoBaoOrderService taoBaoOrderService; @Resource private RedisManager redisManager; @Resource private LostOrderService lostOrderService; @Resource private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper; @Resource private HongBaoManageService hongBaoManageService; @Resource private AccountDetailsHongBaoMapService accountDetailsHongBaoMapService; @@ -142,6 +115,12 @@ @Resource private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService; @Resource private CommonOrderService commonOrderService; @Resource private HongBaoV2Service hongBaoV2Service; @Override public void processOrder(Map<String, List<TaoBaoOrder>> orders) { @@ -166,7 +145,7 @@ shareOrderMap.put(orderId, list); } else { PidUser pidUser = pidUserMapper.selectByPid(pid); PidUser pidUser = null;//pidUserMapper.selectByPid(pid); if (pidUser != null && pidUser.getType() == PidUser.TYPE_SHARE_GOODS) {// 商品分享订单 // List<PidOrder> pidOrderList = new ArrayList<>(); // for (TaoBaoOrder order : list) { @@ -187,41 +166,6 @@ processShareGoodsOrder(shareOrderMap); } /** * 利用redis的原子性将订单号锁住,不让其他处理 * * @param orderId */ private void redisLockOrder(String orderId) { String key = "doorder-" + orderId; redisManager.cacheCommonString(key, "1"); } /** * 订单解锁 * * @param orderId */ private void redisUnlockOrder(String orderId) { String key = "doorder-" + orderId; redisManager.removeCommonString(key); } /** * 订单是否被锁住了 * * @param orderId * @return */ private boolean isRedisLockOrder(String orderId) { String key = "doorder-" + orderId; String doing = redisManager.getCommonString(key); if (!StringUtil.isNullOrEmpty(doing)) return true; else return false; } @Override public void processShopingFanliOrder(Map<String, List<TaoBaoOrder>> orders) { // 查询在Order中是否存在该订单号 @@ -240,7 +184,7 @@ // 出错了就不处理该订单了,需要定期检查 // 更改丢失订单的状态 lostOrderService.processSuceess(orderId); lostOrderService.processSuceess(orderId, Constant.SOURCE_TYPE_TAOBAO); } catch (HongBaoException e1) { e1.printStackTrace(); @@ -277,30 +221,6 @@ } } } /** * 获取最大的创建时间与最小的创建时间 * * @param hongBaoList * @return */ private Map<String, Long> getMaxAndMinCreateTime(List<HongBao> hongBaoList) { if (hongBaoList.size() > 0) { Map<String, Long> map = new HashMap<>(); long min = hongBaoList.get(0).getCreatetime(); long max = hongBaoList.get(0).getCreatetime(); for (HongBao hb : hongBaoList) { if (hb.getCreatetime() > max) max = hb.getCreatetime(); if (hb.getCreatetime() < min) min = hb.getCreatetime(); } map.put("max", max); map.put("min", min); return map; } return null; } @Override @@ -362,20 +282,6 @@ } } /** * 判断订单是否失效 全部订单失效才判断为失效 * * @param list * @return */ private boolean isOrderValid(List<TaoBaoOrder> list) { int validCount = 0; for (TaoBaoOrder order : list) { if (order.getOrderState().equalsIgnoreCase("订单失效")) validCount++; } return validCount >= list.size(); } @Resource private HongBaoOrderMapper hongBaoOrderMapper; @@ -884,11 +790,7 @@ } @Resource private CommonOrderService commonOrderService; @Resource private HongBaoV2Service hongBaoV2Service; @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Override @@ -905,11 +807,11 @@ String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(), orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId()); Order oldOrder = orderMapper.selectOrderByOrderId(orderId); Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(orderId, Constant.SOURCE_TYPE_TAOBAO); // 原来不存在订单 Long uid = null; if (oldOrder == null) { PidUser pidUser = pidUserMapper.selectByPid(pid); PidUser pidUser =null;// pidUserMapper.selectByPid(pid); if (pidUser != null) { uid = pidUser.getUid(); @@ -1013,7 +915,7 @@ orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId()); // 原来不存在订单 Long uid = null; PidUser pidUser = pidUserMapper.selectByPid(pid); PidUser pidUser =null; //pidUserMapper.selectByPid(pid);-PID机制移除 if (pidUser != null) uid = pidUser.getUid(); else { fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java
@@ -6,8 +6,6 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.entity.bus.user.HongBaoV2; @@ -32,7 +30,8 @@ @Resource private HongBaoOrderService hongBaoOrderService; //@Transactional(propagation = Propagation.NESTED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.NESTED, rollbackFor = // Exception.class) public boolean addOrder(Order order) throws Exception { order.setVersion(2); WriteLock writeLock = orderLock.writeLock(); @@ -79,31 +78,10 @@ return true; } @Transactional public List<Order> setOrderState(final String orderid, final int orderType) { List<Order> orderList = orderMapper.selectOrderByOrderIdAndOrderType(orderid, orderType); if (orderList != null) for (Order order : orderList) { if (order.getDrawbackTime() == null || order.getDrawbackTime() <= 0) { Order updateOrder = new Order(); updateOrder.setId(order.getId()); updateOrder.setDrawbackTime(java.lang.System.currentTimeMillis()); updateOrder.setState(Order.STATE_SHIXIAO); orderMapper.updateByPrimaryKeySelective(updateOrder); order.setDrawbackTime(updateOrder.getDrawbackTime()); order.setState(updateOrder.getState()); } } return orderList; } @Override public Order findOrderByOrderIdAndType(String orderId, int type) { List<Order> list = orderMapper.selectOrderByOrderIdAndOrderType(orderId, type); if (list.size() > 0) { return list.get(0); } return null; Order order = orderMapper.selectOrderByOrderIdAndOrderType(orderId, type); return order; } @Override fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoBuyRelationMapServiceImpl.java
@@ -11,6 +11,7 @@ import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoBuyRelationMapMapper; import com.yeshi.fanli.entity.taobao.TaoBaoBuyRelationMap; import com.yeshi.fanli.exception.taobao.TaoBaoBuyRelationMapException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.util.StringUtil; @@ -45,7 +46,11 @@ taoBaoBuyRelationMapMapper.insertSelective(map); relationId = map.getRelationId(); } catch (Exception e) { e.printStackTrace(); try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } } fanli/src/main/java/com/yeshi/fanli/service/inter/order/LostOrderService.java
@@ -41,14 +41,14 @@ * * @param orderId */ void processSuceess(String orderId); void processSuceess(String orderId,int orderType); /** * 订单处理失败 * * @param orderId */ void processFail(String orderId); void processFail(String orderId,int orderType); /** * 订单处理失败批量处理 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -759,13 +759,13 @@ tg.setTaoBaoHongBaoInfo(hongBaoInfo); // 测试使用 tg.setMoneyType(Math.random() > 0.5 ? 1 : 2); tg.setSalesType(Math.random() > 0.5 ? 1 : 2); tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3); List<ClientTextStyleVO> labels = new ArrayList<>(); labels.add(new ClientTextStyleVO("标签测试内容", "#FF0000")); labels.add(new ClientTextStyleVO("标签测试内容", "#00FF00")); tg.setLabels(labels); // tg.setMoneyType(Math.random() > 0.5 ? 1 : 2); // tg.setSalesType(Math.random() > 0.5 ? 1 : 2); // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3); // List<ClientTextStyleVO> labels = new ArrayList<>(); // labels.add(new ClientTextStyleVO("标签测试内容", "#FF0000")); // labels.add(new ClientTextStyleVO("标签测试内容", "#00FF00")); // tg.setLabels(labels); return tg; } @@ -1011,13 +1011,13 @@ tg.setTaoBaoHongBaoInfo(hongBaoInfo); // 测试使用 tg.setMoneyType(Math.random() > 0.5 ? 1 : 2); tg.setSalesType(Math.random() > 0.5 ? 1 : 2); tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3); List<ClientTextStyleVO> labels = new ArrayList<>(); labels.add(new ClientTextStyleVO("标签测试内容", "#FF0000")); labels.add(new ClientTextStyleVO("标签测试内容", "#00FF00")); tg.setLabels(labels); // tg.setMoneyType(Math.random() > 0.5 ? 1 : 2); // tg.setSalesType(Math.random() > 0.5 ? 1 : 2); // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3); // List<ClientTextStyleVO> labels = new ArrayList<>(); // labels.add(new ClientTextStyleVO("标签测试内容", "#FF0000")); // labels.add(new ClientTextStyleVO("标签测试内容", "#00FF00")); // tg.setLabels(labels); return tg; } fanli/src/main/java/com/yeshi/fanli/vo/msg/UserCommonMsgVO.java
@@ -9,6 +9,7 @@ public static String TYPE_GUANXUAN = "guanxuan"; public static String TYPE_ZHUSHOU = "zhushou"; public static String TYPE_RECOMMEND = "recommend"; public static String TYPE_SYSTEM = "system";//系统消息 private String icon; private String title; utils/src/main/java/org/yeshi/utils/HttpUtil.java
@@ -353,6 +353,7 @@ public static String post(String url, Map<String, String> map, Map<String, String> headers) { HttpClient client = new HttpClient(); client.getHostConfiguration().setProxy("192.168.1.122", 8888); PostMethod pm = new PostMethod(url);// 创建HttpPost对象 NameValuePair[] ns = new NameValuePair[map.keySet().size()]; Iterator<String> its = map.keySet().iterator(); utils/src/main/java/org/yeshi/utils/statistic/http/HttpRequestInfo.java
New file @@ -0,0 +1,67 @@ package org.yeshi.utils.statistic.http; import java.util.Map; /** * http请求信息 * * @author Administrator * */ public class HttpRequestInfo { private String url; private String method; private String protocal; private int stateCode; private int time; private Map<String, Object> params; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public String getProtocal() { return protocal; } public void setProtocal(String protocal) { this.protocal = protocal; } public int getStateCode() { return stateCode; } public void setStateCode(int stateCode) { this.stateCode = stateCode; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } public Map<String, Object> getParams() { return params; } public void setParams(Map<String, Object> params) { this.params = params; } } utils/src/main/java/org/yeshi/utils/statistic/http/LocalhostAccessLogUtil.java
New file @@ -0,0 +1,73 @@ package org.yeshi.utils.statistic.http; import java.util.List; public class LocalhostAccessLogUtil { /** * 将单行日志文件解析为对象 * * @param content * @return */ public static HttpRequestInfo parseTomcatSingleLine(String content) { try { HttpRequestInfo info = new HttpRequestInfo(); int start = content.indexOf("\""); content = content.substring(start, content.length()); start = content.indexOf("\"", 1); String url = content.substring(1, start); info.setMethod(url.split(" ")[0]); // 链接 info.setUrl(url.split(" ")[1].split("\\?")[0]); // 时间 info.setProtocal(url.split(" ")[2]); String[] sts = content.substring(start + 1, content.length()).trim().split(" "); info.setStateCode(Integer.parseInt(sts[0])); info.setTime(sts[1].trim().equalsIgnoreCase("-") ? Integer.MAX_VALUE : Integer.parseInt(sts[1])); return info; } catch (Exception e) { } return null; } /** * 求请求时间的平均值 * * @param list * @return */ public static int getTimeAvg(List<HttpRequestInfo> list) { int count = 0; long total = 0; for (HttpRequestInfo info : list) { // 去除最大数值与最小数值 if (info.getTime() > 0 && info.getTime() < Integer.MAX_VALUE) { total += info.getTime(); count++; } } if (count <= 0) return 0; return (int) (total / count); } /** * 获取方差 * * @param list * @return */ public static int getVariance(List<HttpRequestInfo> list) { int avg = getTimeAvg(list); long total = 0; for (HttpRequestInfo info : list) { total += Math.pow(info.getTime() - avg, 2); } return (int) (total / list.size()); } }