From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java |  228 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 214 insertions(+), 14 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java b/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java
index 10924f5..0644b97 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/CallBackController.java
@@ -2,9 +2,16 @@
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
 import java.security.SignatureException;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.crypto.Mac;
@@ -14,17 +21,48 @@
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.yeshi.utils.taobao.TbImgUtil;
+import org.yeshi.utils.wx.WXUtil;
 
-import com.yeshi.fanli.dto.push.PushContentDTO;
+import com.aliyun.openservices.ons.api.Message;
+import com.aliyun.openservices.ons.api.Producer;
+import com.yeshi.fanli.dto.ConfigParamsDTO;
+import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
+import com.yeshi.fanli.dto.mq.order.body.BanLiShopOrderMQMsg;
+import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser;
+import com.yeshi.fanli.entity.bus.activity.ActivityUser;
 import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState;
-import com.yeshi.fanli.entity.config.push.PushMsgFactory;
-import com.yeshi.fanli.exception.push.PushException;
+import com.yeshi.fanli.entity.dynamic.ImgInfo;
+import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
+import com.yeshi.fanli.entity.dynamic.SimpleGoods;
+import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.fanli.entity.shop.BanLiShopOrder;
+import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException;
+import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.activity.ActivityUserService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
 import com.yeshi.fanli.service.inter.msg.MsgDeviceReadStateService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
 import com.yeshi.fanli.service.inter.push.PushService;
+import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService;
+import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
+import com.yeshi.fanli.util.shop.BanLiShopOrderUtil;
+import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
+import com.yeshi.fanli.util.wx.BanLiShopWXPayUtil;
+import com.yeshi.fanli.vo.goods.CouponInfoVO;
+import com.yeshi.fanli.vo.goods.GoodsDetailVO;
 
+import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 
 /**
@@ -44,6 +82,24 @@
 
 	@Resource
 	private MsgDeviceReadStateService msgDeviceReadStateService;
+
+	@Resource(name = "producer")
+	private Producer producer;
+
+	@Resource
+	private BanLiShopOrderService banLiShopOrderService;
+
+	@Resource
+	private GoodsEvaluateService goodsEvaluateService;
+
+	@Resource
+	private HongBaoManageService hongBaoManageService;
+	
+	@Resource
+	private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
+
+	@Resource
+	private ActivityUserService activityUserService;
 
 	/**
 	 * 瀹㈡湇娑堟伅鍥炶皟
@@ -108,17 +164,6 @@
 			String uid = json.optJSONObject("customizedData").optString("鐢ㄦ埛ID");
 			msgDeviceReadStateService.addUnreadDeviceMsg(MsgDeviceReadState.TYPE_KEFU, customizedId,
 					"android".equalsIgnoreCase(deviceOS) ? 1 : 2, 1, msg, new Date());
-			if (!StringUtil.isNullOrEmpty(uid))// 鎺ㄩ�佸鏈嶆秷鎭�
-			{
-				PushContentDTO dto = PushMsgFactory.createMsgKefu();
-				try {
-					pushService.pushZNX(Long.parseLong(uid), dto.getTitle(), dto.getContent(), null, null);
-				} catch (NumberFormatException e) {
-					e.printStackTrace();
-				} catch (PushException e) {
-					e.printStackTrace();
-				}
-			}
 		}
 
 	}
@@ -150,4 +195,159 @@
 		out.print("success");
 	}
 
+	@RequestMapping(value = "banlishop/pay")
+	public void banLiShopPay(HttpServletRequest request, PrintWriter out) {
+
+		Map<String, String> map = WXUtil.parseXML(request);
+		JSONObject json = JSONObject.fromObject(map);
+		LogHelper.test("鍟嗗煄寰俊鏀粯鍥炶皟:" + json.toString());
+		String sign = map.get("sign");
+		map.remove("sign");
+		boolean isSuccess = BanLiShopWXPayUtil.signIsRight(map, sign);
+		if (isSuccess)
+			if (map.get("return_code").equalsIgnoreCase("SUCCESS")
+					&& map.get("result_code").equalsIgnoreCase("SUCCESS")) {
+				// 鍟嗘埛璁㈠崟鍙�
+				String wxPayOrderNo = map.get("out_trade_no");
+				// 璁㈠崟鍙�
+				String orderNo = BanLiShopOrderUtil.getOrderNoFromWXPayOrderNo(wxPayOrderNo);
+				if (!StringUtil.isNullOrEmpty(orderNo)) {
+					BanLiShopOrder order = banLiShopOrderService.selectByOrderNo(orderNo);
+					if (order != null) {// 鏀粯鎴愬姛娑堟伅鎺ㄩ��
+						BanLiShopOrderMQMsg msg = new BanLiShopOrderMQMsg(order.getId(), order.getUid(),
+								new BigDecimal(map.get("total_fee")).multiply(new BigDecimal("0.01")));
+						Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER,
+								OrderTopicTagEnum.banLiShopOrderPaid, msg);
+						producer.send(message);
+						Map<String, String> returnMap = new HashMap<>();
+						returnMap.put("return_code", "SUCCESS");
+						returnMap.put("return_msg", "OK");
+						out.print(WXUtil.loadWXMessage(returnMap));
+						out.close();
+					}
+				}
+			}
+	}
+
+	/**
+	 * 鑱旂洘濂界墿鍦�
+	 * @Title: haoWuQuan
+	 * @Description: 
+	 * @param request
+	 * @param out 
+	 * void 杩斿洖绫诲瀷
+	 * @throws
+	 */
+	@RequestMapping(value = "faquan/haowuquan")
+	public void haoWuQuan(HttpServletRequest request, String content, PrintWriter out) {
+		// if (!sign.equalsIgnoreCase(StringUtil.Md5(content + "banliapp"))) {
+		// out.print(JsonUtil.loadFalseResult("绛惧悕閿欒"));
+		// return;
+		// }
+		String contentDecode = "";
+		if (request instanceof MultipartHttpServletRequest) {
+			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+			List<MultipartFile> files = multipartRequest.getFiles("file");
+			try {
+				InputStream input = files.get(0).getInputStream();
+				InputStreamReader reader = new InputStreamReader(input, "UTF-16LE");
+				int d = -1;
+				String st = "";
+				while ((d = reader.read()) != -1) {
+					st += ((char) d);
+				}
+				System.out.println(st);
+				contentDecode = st;
+
+				contentDecode = contentDecode.substring(contentDecode.indexOf("(") +1,
+						contentDecode.length()).trim();
+				if (contentDecode.endsWith(")"))
+					contentDecode = contentDecode.substring(0, contentDecode.length() - 1);
+
+				System.out.println(contentDecode);
+
+				reader.close();
+
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+
+		JSONObject data = JSONObject.fromObject(contentDecode).optJSONObject("data");
+
+		JSONArray array = data.optJSONObject("recommend").optJSONArray("resultList");
+		for (int i = array.size() - 1; i >= 0; i--) {
+			JSONObject item = array.optJSONObject(i);
+			String title = item.optString("itemName");
+			String doc = item.optString("cusShareText");
+			long itemId = item.optLong("itemId");
+			String publishTime = item.optString("cusPublishTime");
+			JSONArray imageArray = item.optJSONArray("imageList");
+			List<String> imgList = new ArrayList<>();
+			for (int j = 0; j < imageArray.size(); j++) {
+				imgList.add(imageArray.optString(j));
+			}
+
+			TaoBaoGoodsBrief goodsBrief = null;
+			try {
+				goodsBrief = TaoKeApiUtil.searchGoodsDetail(itemId);
+			} catch (TaobaoGoodsDownException e) {
+				e.printStackTrace();
+			}
+			if (goodsBrief == null)
+				continue;
+			// 鍟嗗搧VO
+			ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
+			paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
+			GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
+
+			if (imgList.size() > 3)
+				imgList = imgList.subList(0, 3);
+
+			List<ImgInfo> imageList = new ArrayList<>();
+			for (int j = 0; j < imgList.size(); j++) {
+				ImgInfo imgInfo = new ImgInfo();
+				imgInfo.setH(1);
+				imgInfo.setW(1);
+				imgInfo.setLarge(false);
+				imgInfo.setUrl(imgList.get(j));
+				String sourceImg = imgList.get(j);
+				if (!imgInfo.getUrl().startsWith("http")) {
+					sourceImg = "https:" + imgInfo.getUrl();
+				}
+				imgInfo.setUrl(TbImgUtil.getTBSizeImg(sourceImg, 500));
+				imgInfo.setUrlHD(sourceImg);
+				if (j != 0) {
+					imgInfo.setType(ImgEnum.img);
+				} else {
+					imgInfo.setType(ImgEnum.goods);
+					SimpleGoods simpleGoods = new SimpleGoods();
+					simpleGoods.setGoodsId(itemId);
+					simpleGoods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
+					simpleGoods.setState(CommonGoods.STATE_NORMAL);
+					CouponInfoVO couponInfo = goodsVO.getCouponInfo();
+					if (couponInfo == null) {
+						simpleGoods.setPrice(goodsVO.getZkPrice());
+					} else {
+						simpleGoods.setPrice(goodsVO.getCouponPrice());
+						simpleGoods.setAmount(couponInfo.getAmount());
+					}
+					imgInfo.setGoods(simpleGoods);
+					imgInfo.setGoodsVO(goodsVO);
+				}
+				imageList.add(imgInfo);
+			}
+
+			List<ActivityRuleUser> ruleList = activityUserService.listByRuleCode(ActivityRuleUser.RULE_HAOHUO, 1, 20);
+
+			ActivityUser user = ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser();
+			try {
+				goodsEvaluateService.addGoodsEvaluate(itemId, imageList, user, doc, null, null);
+			} catch (GoodsEvaluateException e) {
+				e.printStackTrace();
+			}
+		}
+
+	}
+
 }

--
Gitblit v1.8.0