diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniPayApiController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniPayApiController.java index 30c85af..0a95f52 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniPayApiController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniPayApiController.java @@ -28,7 +28,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.AssertUtils; -import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.mini.douyin.config.DouYinConfig; import org.jeecg.modules.mini.douyin.model.DouYinOrderSyncModel; import org.jeecg.modules.mini.douyin.model.ItemStruct; import org.jeecg.modules.mini.douyin.util.DouWayPaymentMethod; @@ -36,6 +36,7 @@ import org.jeecg.modules.mini.douyin.util.DouYinUtil; import org.jeecg.modules.mini.douyin.util.Sign; import org.jeecg.modules.mini.dto.VipDTO; import org.jeecg.modules.mini.service.MiniUserService; +import org.jeecg.modules.mini.wx.config.WeXinConfig; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.util.OrderNumberGenerator; @@ -53,7 +54,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; -import java.math.RoundingMode; import java.nio.charset.StandardCharsets; import java.security.cert.X509Certificate; import java.util.*; @@ -79,58 +79,9 @@ public class MiniPayApiController { @Autowired private MiniUserService miniUserService; @Resource - private RedisUtil redisUtil; - @Value("${dy.appId}") - String douyinAppId; - @Value("${dy.appSecret}") - String douyinSecret; - @Value("${dy.token}") - String douyinToken; - @Value("${dy.notifyUrl}") - String douyinNotifyUrl; - @Value("${dy.salt}") - String douyinSalt; - /** - * 微信小程序appid - **/ - @Value("${wx.appId}") - String appid; - /** - * 微信小程序secretId - **/ - @Value("${wx.appSecret}") - String secret; - /** - * 商户号 - **/ - @Value("${wx.mchid}") - String mchid; - /** - * 商户密钥 - **/ - @Value("${wx.mchKey}") - String mchKey; - /** - * 回调地址 - **/ - @Value("${wx.notifyUrl}") - String notifyUrl; - /** - * 证书地址 - **/ - @Value("${wx.certPath}") - String certPath; - /** - * 证书密钥地址 - **/ - @Value("${wx.certKeyPath}") - String certKeyPath; - /** - * 微信平台证书 - **/ - @Value("${wx.platFormPath}") - String platFormPath; - + private DouYinConfig douYinConfig; + @Resource + private WeXinConfig weXinConfig; /** * 小程序支付 @@ -183,21 +134,21 @@ public class MiniPayApiController { //判断是抖音平台 还是 微信平台 小程序操作 if ("toutiao".equals(provider)) { //抖音 - String douyinSign = DouYinUtil.main(douyinAppId, douyinToken, douyinNotifyUrl, douyinSalt, orderCode, totalAmount.intValue(),yxVipSku.getSkuName(), description); + String douyinSign = DouYinUtil.main(douYinConfig.getAppId(), douYinConfig.getToken(),douYinConfig.getNotifyUrl(), douYinConfig.getSalt(), orderCode, totalAmount.intValue(),yxVipSku.getSkuName(), description); yxOrder.setOrderSign(douyinSign); } else { String timeExpire = DateTimeZoneUtil.dateToTimeZone(System.currentTimeMillis() + 1000 * 60 * 3); UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel() // APPID - .setAppid(appid) + .setAppid(weXinConfig.getAppId()) // 商户号 - .setMchid(mchid) + .setMchid(weXinConfig.getMchId()) .setDescription(description) .setOut_trade_no(orderCode) .setTime_expire(timeExpire) .setAttach("艺体志愿宝"+yxVipSku.getSkuName()) - .setNotify_url(notifyUrl) + .setNotify_url(weXinConfig.getNotifyUrl()) .setAmount(new Amount().setTotal(totalAmount.intValue())) .setPayer(new Payer().setOpenid(openId)); log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel)); @@ -205,21 +156,21 @@ public class MiniPayApiController { RequestMethodEnum.POST, WxDomainEnum.CHINA.toString(), BasePayApiEnum.JS_API_PAY.toString(), - mchid, + weXinConfig.getMchId(), getSerialNumber(), null, - certKeyPath, + weXinConfig.getCertKeyPath(), JSONUtil.toJsonStr(unifiedOrderModel) ); log.info("统一下单响应 {}", response); // 根据证书序列号查询对应的证书来验证签名结果 - boolean verifySignature = WxPayKit.verifySignature(response, platFormPath); + boolean verifySignature = WxPayKit.verifySignature(response, weXinConfig.getPlatFormPath()); log.info("verifySignature: {}", verifySignature); if (response.getStatus() == HttpStatus.HTTP_OK && verifySignature) { String body = response.getBody(); JSONObject jsonObject = JSONObject.parseObject(body); String prepayId = jsonObject.getString("prepay_id"); - Map map = WxPayKit.jsApiCreateSign(appid, prepayId, certKeyPath); + Map map = WxPayKit.jsApiCreateSign(weXinConfig.getAppId(), prepayId, weXinConfig.getCertKeyPath()); log.info("唤起支付参数:{}", map); String jsonStr = JSONUtil.toJsonStr(map); //==============创建订单信息 Start @@ -259,7 +210,7 @@ public class MiniPayApiController { log.info("支付通知密文 {}", result); // 需要通过证书序列号查找对应的证书,verifyNotify 中有验证证书的序列号 String plainText = WxPayKit.verifyNotify(serialNo, result, signature, nonce, timestamp, - mchKey, platFormPath); + weXinConfig.getMchKey(), weXinConfig.getPlatFormPath()); log.info("支付通知明文 {}", plainText); if (StrUtil.isNotEmpty(plainText)) { com.alibaba.fastjson.JSONObject plainTextJson = JSONObject.parseObject(plainText); @@ -291,7 +242,7 @@ public class MiniPayApiController { //生成本地签名 List sortedString = new ArrayList<>(); //token - sortedString.add(douyinToken); + sortedString.add(douYinConfig.getToken()); //时间戳 sortedString.add(requestJson.getString("timestamp")); //随机数 @@ -339,7 +290,7 @@ public class MiniPayApiController { } itemList.add(new ItemStruct(yxOrder.getSkuCode(),img,"艺体志愿宝-"+yxOrder.getSkuName(),null,1,yxOrder.getTotalAmount().longValue())); douYinOrderSyncModel.setItem_list(itemList); - DouYinUtil.orderSync(douYinOrderSyncModel,douyinAppId,douyinSecret,sysUser.getDyOpenId()); + DouYinUtil.orderSync(douYinOrderSyncModel,douYinConfig.getAppId(),douYinConfig.getAppSecret(),sysUser.getDyOpenId()); response.setStatus(200); map.put("code", "SUCCESS"); map.put("message", "SUCCESS"); @@ -378,7 +329,7 @@ public class MiniPayApiController { // 验证签名一致性 List sortedString = new ArrayList<>(); //token - sortedString.add(douyinToken); + sortedString.add(douYinConfig.getToken()); //时间戳 sortedString.add(requestJson.getStr("timestamp")); //随机数 @@ -427,11 +378,11 @@ public class MiniPayApiController { private String getSerialNumber() { // 获取证书序列号 - X509Certificate certificate = PayKit.getCertificate(certPath); + X509Certificate certificate = PayKit.getCertificate(weXinConfig.getCertPath()); if (null != certificate) { String serialNo = certificate.getSerialNumber().toString(16).toUpperCase(); // 提前两天检查证书是否有效 - boolean isValid = PayKit.checkCertificateIsValid(certificate, mchid, -2); + boolean isValid = PayKit.checkCertificateIsValid(certificate, weXinConfig.getMchId(), -2); log.info("证书是否可用 {} 证书有效期为 {}", isValid, DateUtil.format(certificate.getNotAfter(), DatePattern.NORM_DATETIME_PATTERN)); System.out.println("serialNo:" + serialNo); return serialNo; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/WxPayApiController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/WxPayApiController.java index 101da5a..fbd1669 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/WxPayApiController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/WxPayApiController.java @@ -71,7 +71,7 @@ import java.util.Map; @RestController @RequestMapping("/wx/pay/v1") @Scope("prototype") -public class WxPayApiController { +public class WxPayApiController { @Autowired private ISysUserService sysUserService; @@ -88,8 +88,8 @@ public class WxPayApiController { @Value("${wx.appSecret}") String secret; /**商户号**/ - @Value("${wx.mchid}") - String mchid; + @Value("${wx.mchId}") + String mchId; /**商户密钥**/ @Value("${wx.mchKey}") String mchKey; @@ -152,7 +152,7 @@ public class WxPayApiController { // APPID .setAppid(appid) // 商户号 - .setMchid(mchid) + .setMchid(mchId) .setDescription(description) .setOut_trade_no(orderCode) .setTime_expire(timeExpire) @@ -165,7 +165,7 @@ public class WxPayApiController { RequestMethodEnum.POST, WxDomainEnum.CHINA.toString(), BasePayApiEnum.JS_API_PAY.toString(), - mchid, + mchId, getSerialNumber(), null, certKeyPath, @@ -253,7 +253,7 @@ public class WxPayApiController { if (null != certificate) { String serialNo = certificate.getSerialNumber().toString(16).toUpperCase(); // 提前两天检查证书是否有效 - boolean isValid = PayKit.checkCertificateIsValid(certificate, mchid, -2); + boolean isValid = PayKit.checkCertificateIsValid(certificate, mchId, -2); log.info("证书是否可用 {} 证书有效期为 {}", isValid, DateUtil.format(certificate.getNotAfter(), DatePattern.NORM_DATETIME_PATTERN)); System.out.println("serialNo:" + serialNo); return serialNo; @@ -272,7 +272,7 @@ public class WxPayApiController { RequestMethodEnum.GET, WxDomainEnum.CHINA.toString(), OtherApiEnum.GET_CERTIFICATES.toString(), - mchid, + mchId, getSerialNumber(), null, certKeyPath, diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/DouYinConfig.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/douyin/config/DouYinConfig.java similarity index 92% rename from jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/DouYinConfig.java rename to jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/douyin/config/DouYinConfig.java index 41abb8c..6cef4e9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/DouYinConfig.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/douyin/config/DouYinConfig.java @@ -1,4 +1,4 @@ -package org.jeecg.config; +package org.jeecg.modules.mini.douyin.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/model/WeXinConfig.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/config/WeXinConfig.java similarity index 62% rename from jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/model/WeXinConfig.java rename to jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/config/WeXinConfig.java index f063d70..21db039 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/model/WeXinConfig.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/wx/config/WeXinConfig.java @@ -1,4 +1,4 @@ -package org.jeecg.modules.mini.wx.model; +package org.jeecg.modules.mini.wx.config; import lombok.Data; import lombok.ToString; @@ -17,16 +17,21 @@ import org.springframework.stereotype.Component; public class WeXinConfig { private String appId; - - private String mchId; - - private String mchSerialNo; - private String appSecret; - - private String apiKey; - + // mchId + private String mchId; + // api密钥 + private String mchKey; + // 证书序列号 + private String mchSerialNo; + // 回调接口地址 private String notifyUrl; + // 证书地址 + private String certPath; + // 证书密钥地址 + private String certKeyPath; + // 微信平台证书 + private String platFormPath; private String keyPath; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WebUserController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WebUserController.java index 397d389..efa5e99 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WebUserController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WebUserController.java @@ -10,7 +10,6 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; -import org.jeecg.modules.mini.wx.model.WeXinConfig; import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.model.SysLoginModel; import org.jeecg.modules.system.service.ISysUserService; @@ -20,7 +19,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.text.SimpleDateFormat; import java.util.Date; /** @@ -36,10 +34,6 @@ public class WebUserController { private ISysUserService sysUserService; @Resource private WebUserService webUserService; - @Resource - private WeXinConfig weXinConfig; - @Resource - private RedisUtil redisUtil; @RequestMapping(value = "checkPhoneAvailable") @ApiOperation(value = "判断手机号是否可用") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WeiXinController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WeiXinController.java index fc7b432..f5e87c9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WeiXinController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/controller/WeiXinController.java @@ -1,16 +1,13 @@ package org.jeecg.modules.web.controller; -import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.RedisUtil; import org.jeecg.modules.mini.wx.constant.WeiXinConstant; -import org.jeecg.modules.mini.wx.model.WeXinConfig; +import org.jeecg.modules.mini.wx.config.WeXinConfig; import org.jeecg.modules.mini.wx.util.WeXinUtil; -import org.jeecg.modules.system.entity.SysUser; -import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.web.service.WebUserService; import org.springframework.web.bind.annotation.*; @@ -32,8 +29,6 @@ public class WeiXinController { @Resource private WebUserService webUserService; @Resource - private ISysUserService sysUserService; - @Resource private RedisUtil redisUtil; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxOrderController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxOrderController.java index c693f62..2e44fd0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxOrderController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxOrderController.java @@ -3,11 +3,6 @@ package org.jeecg.modules.yx.controller; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -16,8 +11,7 @@ import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.AssertUtils; -import org.jeecg.common.util.oConvertUtils; -import org.jeecg.config.DouYinConfig; +import org.jeecg.modules.mini.douyin.config.DouYinConfig; import org.jeecg.modules.mini.douyin.util.DouYinUtil; import org.jeecg.modules.yx.constant.YxConstant; import org.jeecg.modules.yx.entity.YxOrder; @@ -28,19 +22,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java index 293bb01..6bdfadc 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java @@ -571,12 +571,17 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl