فهرست منبع

2023年1月9 18:13

wangzhuo 3 سال پیش
والد
کامیت
0ba72b0a1a

+ 3 - 0
blade-service-api/blade-deliver-goods-api/src/main/java/org/springblade/deliver/goods/entity/DeliveryItems.java

@@ -314,6 +314,9 @@ public class DeliveryItems implements Serializable {
 	private BigDecimal integralMultiples;
 	@ApiModelProperty(value = "商品叫赠送积分 赠品叫兑换积分")
 	private BigDecimal integral;
+	/**
+	 * 到货数量
+	 */
 	@ApiModelProperty(value = "到货数量")
 	private BigDecimal arrivalQuantity;
 

+ 1 - 1
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -223,7 +223,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 
 				}
 				// todo 更新订单明细中发货数量  采购和销售可能需要调不同接口
-				R actualQuantity = orderItemsClient.updateActualQuantity(deliveryItems.getSrcId(), deliveryItems.getActualQuantity(), delivery.getDeliveryType());
+				R actualQuantity = orderItemsClient.updateActualQuantity(deliveryItems.getSrcId(), deliveryItems.getArrivalQuantity(), delivery.getDeliveryType());
 				if (!actualQuantity.isSuccess()) {
 					throw new RuntimeException(actualQuantity.getMsg());
 				}

+ 3 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -952,6 +952,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (order.getCheckFlag() != 3 && salesOrder.getStatus() != 0) {
 			throw new SecurityException("订单已开启审核,请勿重复提交");
 		}
+		if (order.getCheckFlag() == 3 && salesOrder.getSpecialCheckStatus() == 1){
+			throw new SecurityException("订单已开启特批审核,请勿重复提交");
+		}
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 		Integer checkFlag = order.getCheckFlag();
 		AuditPathsActs pathsActs;

+ 8 - 7
blade-service/blade-client/src/main/java/org/springblade/client/wechat/controller/WxUnionIdOpenIdController.java → blade-service/blade-school/src/main/java/org/springblade/school/controller/WxUnionIdOpenIdController.java

@@ -1,11 +1,11 @@
-package org.springblade.client.wechat.controller;
+package org.springblade.school.controller;
 
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.school.util.WXPayXmlUtil;
+import org.springblade.school.util.WxUtil;
 import org.springblade.system.user.feign.IWxUnionIdOpenIdClient;
 import org.springblade.system.user.entity.WxUnionIdOpenId;
-import org.springblade.client.wechat.Util.WXPayXmlUtil;
-import org.springblade.client.wechat.Util.WxUtil;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -54,11 +54,12 @@ public class WxUnionIdOpenIdController {
 
 			if (ObjectUtil.isNotEmpty(unionId)){
 				//根据unionId查询数据库是否存在
-				WxUnionIdOpenId wxUnionIdOpenId = wxUnionIdOpenIdClient.getWxUnionId(userMap.get("unionid"));
+				WxUnionIdOpenId wxUnionIdOpenId = wxUnionIdOpenIdClient.getWxUnionId(unionId);
 				if (ObjectUtil.isEmpty(wxUnionIdOpenId)){//不存在 新增
-					wxUnionIdOpenId.setOpenId(openId);
-					wxUnionIdOpenId.setUnionId(unionId);
-					wxUnionIdOpenIdClient.insertWxUO(wxUnionIdOpenId);
+					WxUnionIdOpenId item = new WxUnionIdOpenId();
+					item.setOpenId(openId);
+					item.setUnionId(unionId);
+					wxUnionIdOpenIdClient.insertWxUO(item);
 				}else {//存在 则更新
 					wxUnionIdOpenId.setOpenId(openId);
 					wxUnionIdOpenIdClient.updateWxUO(wxUnionIdOpenId);

+ 74 - 0
blade-service/blade-school/src/main/java/org/springblade/school/util/WXPayXmlUtil.java

@@ -1,11 +1,21 @@
 package org.springblade.school.util;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
 
 public class WXPayXmlUtil {
 
@@ -25,4 +35,68 @@ public class WXPayXmlUtil {
 	public static Document newDocument() throws ParserConfigurationException {
 		return newDocumentBuilder().newDocument();
 	}
+
+	public static Map<String, String> analysis(HttpServletRequest request) {
+		try {
+			BufferedReader reader = null;
+			String line = "";
+			String xmlString = null;
+			reader = request.getReader();
+			StringBuffer inputString = new StringBuffer();
+
+			while ((line = reader.readLine()) != null) {
+				inputString.append(line);
+			}
+			xmlString = inputString.toString();
+			Map<String, String> dataMap = xmlToMap(xmlString);
+			return dataMap;
+		} catch (Exception e) {
+			return null;
+		}
+
+	}
+
+	/**
+	 * XML格式字符串转换为Map
+	 *
+	 * @param strXML XML字符串
+	 * @return XML数据转换后的Map
+	 * @throws Exception
+	 */
+	public static Map<String, String> xmlToMap(String strXML) throws Exception {
+		try {
+			Map<String, String> data = new HashMap<String, String>();
+			DocumentBuilder documentBuilder = WXPayXmlUtil.newDocumentBuilder();
+			InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
+			org.w3c.dom.Document doc = documentBuilder.parse(stream);
+			doc.getDocumentElement().normalize();
+			NodeList nodeList = doc.getDocumentElement().getChildNodes();
+			for (int idx = 0; idx < nodeList.getLength(); ++idx) {
+				Node node = nodeList.item(idx);
+				if (node.getNodeType() == Node.ELEMENT_NODE) {
+					org.w3c.dom.Element element = (org.w3c.dom.Element) node;
+					data.put(element.getNodeName(), element.getTextContent());
+				}
+			}
+			try {
+				stream.close();
+			} catch (Exception ex) {
+				// do nothing
+			}
+			return data;
+		} catch (Exception ex) {
+			getLogger().warn("Invalid XML, can not convert to map. Error message: {}. XML content: {}", ex.getMessage(), strXML);
+			throw ex;
+		}
+
+	}
+
+	/**
+	 * 日志
+	 * @return
+	 */
+	public static Logger getLogger() {
+		Logger logger = LoggerFactory.getLogger("wxpay java sdk");
+		return logger;
+	}
 }

+ 98 - 0
blade-service/blade-school/src/main/java/org/springblade/school/util/WxUtil.java

@@ -0,0 +1,98 @@
+package org.springblade.school.util;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.utils.ObjectUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+public class WxUtil {
+
+	/**
+	 * 获得公众号token
+	 */
+	public static Map<String, String> getToken(String appId, String appSecret) {
+
+		Map<String,String> tokenMap = new HashMap<>();
+		String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+appSecret;
+		try {
+			String response = HttpUtil.get(requestUrl);
+			JSONObject jsonObject = JSONObject.parseObject(response);
+			if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
+				String accessToken = String.valueOf(jsonObject.get("access_token"));
+				if (ObjectUtil.isEmpty(accessToken)){
+					throw new RuntimeException("获取token出现异常");
+				}else {
+					tokenMap.put("accessToken", accessToken);
+				}
+			}else if (jsonObject.getString("errcode").equals("-1")) {
+				throw new RuntimeException("系统繁忙,此时请开发者稍候再试");
+			} else {
+				throw new RuntimeException("不合法的telCode(telCode不存在、已过期或者使用过)");
+			}
+
+		} catch (Exception e) {
+			log.info("获取token出现异常");
+			e.printStackTrace();
+		}
+
+		return tokenMap;
+	}
+
+	/**
+	 * 获得用户列表
+	 */
+	public static Map<String, Object> getUserOpenId(String accessToken){
+		Map<String, Object> openIdMap = new HashMap<>();
+		String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+accessToken;
+		try {
+			String response = HttpUtil.get(requestUrl);
+			JSONObject jsonObject = JSONObject.parseObject(response);
+			if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
+				JSONObject data = jsonObject.getJSONObject("data");
+				if (ObjectUtil.isNotEmpty(data.get("openid"))){
+					openIdMap.put("openIds",data.getJSONArray("openid"));
+				}
+			}else {
+				throw new RuntimeException("用户获取失败"+jsonObject.get("errmsg"));
+			}
+
+		} catch (Exception e) {
+			log.info("获取用户openid出现异常");
+			e.printStackTrace();
+		}
+		return openIdMap;
+	}
+
+	/**
+	 * 获得用户信息
+	 */
+	public static Map<String, String > getUserInfo(String accessToken, String openId){
+		Map<String,String> userMap = new HashMap<>();
+		String requestUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN";
+		try {
+			String response = HttpUtil.get(requestUrl);
+			JSONObject jsonObject = JSONObject.parseObject(response);
+			if (ObjectUtil.isEmpty(jsonObject.get("errcode"))){
+				String unionid = String.valueOf(jsonObject.get("unionid"));
+				if (ObjectUtil.isEmpty(unionid)){
+					throw new RuntimeException("获取unionid出现异常");
+				}else {
+					userMap.put("openid", openId);
+					userMap.put("unionid", unionid);
+				}
+			}else {
+				throw new RuntimeException("用户获取失败"+jsonObject.get("errmsg"));
+			}
+
+		} catch (Exception e) {
+			log.info("获取unionid出现异常");
+			e.printStackTrace();
+		}
+
+		return userMap;
+	}
+}