diff --git a/ruoyi-front/ruoyi-manager/pom.xml b/ruoyi-front/ruoyi-manager/pom.xml
index 603402bc4..f3821866a 100644
--- a/ruoyi-front/ruoyi-manager/pom.xml
+++ b/ruoyi-front/ruoyi-manager/pom.xml
@@ -115,5 +115,15 @@
5.3.1
compile
+
+ org.dromara
+ ruoyi-goods
+ 5.3.1
+ compile
+
+
+ org.dromara
+ ruoyi-order
+
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/BrandController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/BrandController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/BrandController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/BrandController.java
index dce0653b1..ce0023e3c 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/BrandController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/BrandController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.goods.controller;
+package com.wzj.soopin.manager.goods.controller;
import com.wzj.soopin.goods.convert.BrandConvert;
@@ -11,13 +11,13 @@ import io.swagger.annotations.ApiOperation;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
-import org.springframework.beans.factory.annotation.Autowired;
import org.dromara.common.web.core.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductCategoryController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductCategoryController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductCategoryController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductCategoryController.java
index 0bc751ab1..5883d57ac 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductCategoryController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductCategoryController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.goods.controller;
+package com.wzj.soopin.manager.goods.controller;
import com.wzj.soopin.goods.convert.ProductCategoryConvert;
import com.wzj.soopin.goods.domain.entity.ProductCategory;
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductController.java
index a76e0e470..631f90388 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/ProductController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/ProductController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.goods.controller;
+package com.wzj.soopin.manager.goods.controller;
import com.wzj.soopin.goods.convert.ProductConvert;
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/SkuController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/SkuController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/SkuController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/SkuController.java
index 1f2bfbac8..5f0055521 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/wzj/soopin/goods/controller/SkuController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/goods/controller/SkuController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.goods.controller;
+package com.wzj.soopin.manager.goods.controller;
import com.wzj.soopin.goods.convert.SkuConvert;
import com.wzj.soopin.goods.domain.entity.Sku;
@@ -8,15 +8,15 @@ import com.wzj.soopin.goods.service.SkuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.web.core.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.log.enums.BusinessType;
-import org.dromara.common.web.core.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleController.java
similarity index 97%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleController.java
index 44b5126fd..e90544dd9 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.AftersaleConvert;
@@ -10,20 +10,21 @@ import com.wzj.soopin.order.domain.vo.ManagerRefundOrderDetailVO;
import com.wzj.soopin.order.domain.vo.ManagerRefundOrderVO;
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
import com.wzj.soopin.order.service.AftersaleService;
+import com.wzj.soopin.order.utils.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.redis.redis.RedisService;
import org.dromara.common.web.core.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleItemController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleItemController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleItemController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleItemController.java
index db0112440..0582538c8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/AftersaleItemController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/AftersaleItemController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.AftersaleItemConvert;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderController.java
index 5d9b5be0a..2e4744901 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.OrderConvert;
import com.wzj.soopin.order.domain.entity.Order;
@@ -9,6 +9,7 @@ import com.wzj.soopin.order.domain.vo.ManagerOrderDetailVO;
import com.wzj.soopin.order.domain.vo.ManagerOrderVO;
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
import com.wzj.soopin.order.service.OrderService;
+import com.wzj.soopin.order.utils.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderDeliveryHistoryController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderDeliveryHistoryController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderDeliveryHistoryController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderDeliveryHistoryController.java
index 74bb2af0b..42de75830 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderDeliveryHistoryController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderDeliveryHistoryController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.OrderDeliveryHistoryConvert;
import com.wzj.soopin.order.domain.entity.OrderDeliveryHistory;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderItemController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderItemController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderItemController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderItemController.java
index 880ac4947..b6d6f6776 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderItemController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderItemController.java
@@ -1,13 +1,10 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.OrderItemConvert;
import com.wzj.soopin.order.domain.entity.OrderItem;
import com.wzj.soopin.order.domain.query.OrderItemQuery;
import com.wzj.soopin.order.domain.vo.OrderItemVO;
import com.wzj.soopin.order.service.OrderItemService;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.dromara.common.excel.utils.ExcelUtil;
@@ -15,6 +12,9 @@ import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderOperateHistoryController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderOperateHistoryController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderOperateHistoryController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderOperateHistoryController.java
index cb439a393..04c523c71 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/OrderOperateHistoryController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/OrderOperateHistoryController.java
@@ -1,14 +1,10 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.OrderOperateHistoryConvert;
import com.wzj.soopin.order.domain.entity.OrderOperateHistory;
import com.wzj.soopin.order.domain.query.OrderOperateHistoryQuery;
import com.wzj.soopin.order.domain.vo.OrderOperateHistoryVO;
import com.wzj.soopin.order.service.OrderOperateHistoryService;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.http.ResponseEntity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.dromara.common.excel.utils.ExcelUtil;
@@ -16,6 +12,10 @@ import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/WechatPaymentHistoryController.java b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/WechatPaymentHistoryController.java
similarity index 98%
rename from ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/WechatPaymentHistoryController.java
rename to ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/WechatPaymentHistoryController.java
index 72797cf20..9b6b5d051 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/controller/WechatPaymentHistoryController.java
+++ b/ruoyi-front/ruoyi-manager/src/main/java/com/wzj/soopin/manager/order/controller/WechatPaymentHistoryController.java
@@ -1,4 +1,4 @@
-package com.wzj.soopin.order.controller;
+package com.wzj.soopin.manager.order.controller;
import com.wzj.soopin.order.convert.WechatPaymentHistoryConvert;
import com.wzj.soopin.order.domain.entity.WechatPaymentHistory;
diff --git a/ruoyi-modules/ruoyi-order/pom.xml b/ruoyi-modules/ruoyi-order/pom.xml
index 3775c734d..45b148a50 100644
--- a/ruoyi-modules/ruoyi-order/pom.xml
+++ b/ruoyi-modules/ruoyi-order/pom.xml
@@ -125,6 +125,25 @@
com.alibaba
fastjson
+
+ org.springframework.security
+ spring-security-crypto
+
+
+ com.google.api.grpc
+ proto-google-common-protos
+ 2.41.0
+ compile
+
+
+ org.springframework.security
+ spring-security-core
+
+
+ com.github.wechatpay-apiv3
+ wechatpay-java
+ 0.2.9
+
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/AftersaleService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/AftersaleService.java
index 80a3fdf1b..a66b7921e 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/AftersaleService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/AftersaleService.java
@@ -22,6 +22,7 @@ import com.wzj.soopin.order.domain.form.DealWithAftersaleForm;
import com.wzj.soopin.order.domain.form.ManagerAftersaleOrderForm;
import com.wzj.soopin.order.domain.vo.*;
import com.wzj.soopin.order.mapper.*;
+import com.wzj.soopin.order.wechat.WechatPayService;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.Constants;
import org.dromara.common.core.enums.AftersaleStatus;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java
index 9d93c796a..5219412f5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java
@@ -25,6 +25,8 @@ import com.wzj.soopin.order.mapper.OrderDeliveryHistoryMapper;
import com.wzj.soopin.order.mapper.OrderItemMapper;
import com.wzj.soopin.order.mapper.OrderMapper;
import com.wzj.soopin.order.mapper.OrderOperateHistoryMapper;
+import com.wzj.soopin.order.utils.AesCryptoUtils;
+import com.wzj.soopin.order.utils.SecurityUtils;
import org.apache.commons.lang3.StringUtils;
import org.dromara.common.core.domain.event.Constants;
import org.dromara.common.core.utils.PhoneUtils;
@@ -392,7 +394,7 @@ public class OrderService {
.set("receiver_district",order.getReceiverDistrict())
.set("receiver_province",order.getReceiverProvince())
.set("receiver_detail_address",order.getReceiverDetailAddress())
- .set("receiver_phone_encrypted",AesCryptoUtils.encrypt(aesKey, order.getReceiverPhone()))
+ .set("receiver_phone_encrypted", AesCryptoUtils.encrypt(aesKey, order.getReceiverPhone()))
.set("update_time",LocalDateTime.now());
updateWrapper.eq("id",order.getId());
int update = orderMapper.update(null, updateWrapper);
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/AesCryptoUtils.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/AesCryptoUtils.java
new file mode 100644
index 000000000..1f3529366
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/AesCryptoUtils.java
@@ -0,0 +1,31 @@
+package com.wzj.soopin.order.utils;
+
+import cn.hutool.core.util.CharsetUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
+import org.dromara.common.core.utils.StringUtils;
+
+/**
+ * aes加密工具
+ */
+public class AesCryptoUtils {
+
+ public static String encrypt(String key, String content){
+ SecureUtil.disableBouncyCastle();
+ if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){
+ throw new RuntimeException("错误");
+ }
+ AES aes = SecureUtil.aes(key.getBytes());
+ byte[] encrypt = aes.encrypt(content);
+ return aes.encryptHex(content);
+ }
+
+ public static String decrypt(String key, String content){
+ SecureUtil.disableBouncyCastle();
+ if (StringUtils.isBlank(key) || StringUtils.isBlank(content)){
+ throw new RuntimeException("错误");
+ }
+ AES aes = SecureUtil.aes(key.getBytes());
+ return aes.decryptStr(content, CharsetUtil.CHARSET_UTF_8);
+ }
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/SecurityUtils.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/SecurityUtils.java
new file mode 100644
index 000000000..291e18a46
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/utils/SecurityUtils.java
@@ -0,0 +1,119 @@
+package com.wzj.soopin.order.utils;
+
+import org.dromara.common.core.constant.HttpStatus;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.exception.ServiceException;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+
+/**
+ * 安全服务工具类
+ *
+ * @author ruoyi
+ */
+public class SecurityUtils
+{
+ private static BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+ /**
+ * 用户ID
+ **/
+ public static Long getUserId()
+ {
+ try
+ {
+ return getLoginUser().getUserId();
+ }
+ catch (Exception e)
+ {
+ throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 获取部门ID
+ **/
+ public static Long getDeptId()
+ {
+ try
+ {
+ return getLoginUser().getDeptId();
+ }
+ catch (Exception e)
+ {
+ throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 获取用户账户
+ **/
+ public static String getUsername()
+ {
+ try
+ {
+ return getLoginUser().getUsername();
+ }
+ catch (Exception e)
+ {
+ throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 获取用户
+ **/
+ public static LoginUser getLoginUser()
+ {
+ try
+ {
+ return (LoginUser) getAuthentication().getPrincipal();
+ }
+ catch (Exception e)
+ {
+ throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
+ }
+ }
+
+ /**
+ * 获取Authentication
+ */
+ public static Authentication getAuthentication()
+ {
+ return SecurityContextHolder.getContext().getAuthentication();
+ }
+
+ /**
+ * 生成BCryptPasswordEncoder密码
+ *
+ * @param password 密码
+ * @return 加密字符串
+ */
+ public static String encryptPassword(String password) {
+ return passwordEncoder.encode(password);
+ }
+
+ /**
+ * 判断密码是否相同
+ *
+ * @param rawPassword 真实密码
+ * @param encodedPassword 加密后字符
+ * @return 结果
+ */
+ public static boolean matchesPassword(String rawPassword, String encodedPassword)
+ {
+ BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+ return passwordEncoder.matches(rawPassword, encodedPassword);
+ }
+
+ /**
+ * 是否为管理员
+ *
+ * @param userId 用户ID
+ * @return 结果
+ */
+ public static boolean isAdmin(Long userId)
+ {
+ return userId != null && 1L == userId;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayData.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayData.java
new file mode 100644
index 000000000..069b4fb65
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayData.java
@@ -0,0 +1,62 @@
+package com.wzj.soopin.order.wechat;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@ConfigurationProperties(prefix = "wechat")
+@Component("WechatPayData")
+public class WechatPayData {
+
+ /** 商户号 */
+ public static String appId;
+ public static String secret;
+ public static String merchantId;
+ /** 商户API私钥路径 */
+ public static String privateKeyPath;
+ /** 商户证书序列号 */
+ public static String merchantSerialNumber;
+ /** 商户APIV3密钥 */
+ public static String apiV3key;
+ public static String notifyUrl;
+
+ public static String miniProgramAppId;
+ public static String miniProgramSecret;
+
+ public void setAppId(String appId) {
+ WechatPayData.appId = appId;
+ }
+
+ public void setSecret(String secret) {
+ WechatPayData.secret = secret;
+ }
+
+ public void setMerchantId(String merchantId) {
+ WechatPayData.merchantId = merchantId;
+ }
+
+ public void setPrivateKeyPath(String privateKeyPath) {
+ WechatPayData.privateKeyPath = privateKeyPath;
+ }
+
+ public void setMerchantSerialNumber(String merchantSerialNumber) {
+ WechatPayData.merchantSerialNumber = merchantSerialNumber;
+ }
+
+ public void setApiV3key(String apiV3key) {
+ WechatPayData.apiV3key = apiV3key;
+ }
+
+ public void setNotifyUrl(String notifyUrl) {
+ WechatPayData.notifyUrl = notifyUrl;
+ }
+
+ public void setMiniProgramAppId(String miniProgramAppId) {
+ WechatPayData.miniProgramAppId = miniProgramAppId;
+ }
+
+ public void setMiniProgramSecret(String miniProgramSecret) {
+ WechatPayData.miniProgramSecret = miniProgramSecret;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayService.java
new file mode 100644
index 000000000..064265b63
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/wechat/WechatPayService.java
@@ -0,0 +1,75 @@
+package com.wzj.soopin.order.wechat;
+
+import com.wechat.pay.java.service.payments.jsapi.JsapiService;
+import com.wechat.pay.java.service.payments.jsapi.model.Amount;
+import com.wechat.pay.java.service.payments.jsapi.model.Payer;
+import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
+import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
+import com.wechat.pay.java.service.refund.RefundService;
+import com.wechat.pay.java.service.refund.model.AmountReq;
+import com.wechat.pay.java.service.refund.model.CreateRequest;
+import com.wechat.pay.java.service.refund.model.Refund;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@Slf4j
+@ConditionalOnProperty(prefix = "wechat", name = "enabled", havingValue = "true")
+public class WechatPayService {
+
+ @Autowired
+ private JsapiService service;
+
+ @Autowired
+ private RefundService refundService;
+
+ /**
+ * jsapi下单
+ * @param orderNo 订单号
+ * @param desc 订单描述
+ * @param totalAmount 总金额,单位:分
+ * @param openId 用户openid
+ * @return prepay_id
+ */
+ public String jsapiPay(String orderNo,String desc,Integer totalAmount,String openId, Long memberId,String appId){
+ PrepayRequest prepayRequest = new PrepayRequest();
+ prepayRequest.setAppid(appId);
+ prepayRequest.setMchid(WechatPayData.merchantId);
+ prepayRequest.setDescription(desc);
+ prepayRequest.setOutTradeNo(orderNo);
+ prepayRequest.setAttach(String.valueOf(memberId));
+ prepayRequest.setNotifyUrl(WechatPayData.notifyUrl);
+ Amount amount = new Amount();
+ amount.setTotal(totalAmount);
+ prepayRequest.setAmount(amount);
+ Payer payer = new Payer();
+ payer.setOpenid(openId);
+ prepayRequest.setPayer(payer);
+ PrepayResponse response = service.prepay(prepayRequest);
+ return response.getPrepayId();
+ }
+
+ public Refund refundPay(String refundId, String payId, String notifyUrl, Long refundAmount, Long totalAmount, String reason) {
+ //请求参数
+ CreateRequest request = new CreateRequest();
+ request.setReason(reason);
+ //设置退款金额 根据自己的实际业务自行填写
+ AmountReq amountReq = new AmountReq();
+ amountReq.setRefund(refundAmount);
+ amountReq.setTotal(totalAmount);
+ amountReq.setCurrency("CNY");
+ request.setAmount(amountReq);
+ //支付成功后回调回来的transactionId 按照实际情况填写
+ request.setOutTradeNo(payId);
+ //支付成功后回调回来的transactionId 按照实际情况填写
+ request.setOutRefundNo(refundId);
+ //退款成功的回调地址
+ request.setNotifyUrl(notifyUrl);
+ //发起请求,申请退款
+ return refundService.create(request);
+ }
+}