From 104339ee09076ea0846571fa738b350d8496baaf Mon Sep 17 00:00:00 2001 From: wxy <14293288+zysysys@user.noreply.gitee.com> Date: Wed, 21 Aug 2024 20:42:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?```feat(sys-user):=20=E5=9C=A8=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=AF=A6=E6=83=85=E4=B8=AD=E6=B7=BB=E5=8A=A0=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户详情页面现在将展示用户的余额信息,以便于管理员查看。这是通过在SysUserMapper.xml中添加新的查询字段实现的。 ``` --- src/main/resources/mapper/system/SysUserMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml index 6f633b7..f399944 100644 --- a/src/main/resources/mapper/system/SysUserMapper.xml +++ b/src/main/resources/mapper/system/SysUserMapper.xml @@ -63,6 +63,7 @@ u.create_by, u.create_time, u.remark, + u.user_balance, d.dept_id, d.parent_id, d.ancestors, From 84c9201df5cacf7a6664afb39c594af0934358cb Mon Sep 17 00:00:00 2001 From: wxy <14293288+zysysys@user.noreply.gitee.com> Date: Thu, 22 Aug 2024 22:40:01 +0800 Subject: [PATCH 2/4] =?UTF-8?q?```feat(user):=20=E9=9B=86=E6=88=90?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E5=85=85=E5=80=BC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 集成支付宝充值功能,允许用户通过支付宝进行余额充值。在用户控制器中添加了处理充值请求的端点,并在用户服务中实现了充值逻辑。使用Alipay SDK处理支付请求,并在成功支付后更新用户的余额。确保用户余额和支付金额的处理在数据库中是原子操作。支付宝配置详细信息已加载,同步和异步通知URL已设置。 ``` --- pom.xml | 5 ++ .../java/com/muyu/config/AlipayConfig.java | 30 +++++++ .../java/com/muyu/config/util/logFile.java | 36 ++++++++ .../system/controller/SysUserController.java | 15 ++++ .../com/muyu/system/mapper/SysUserMapper.java | 7 ++ .../muyu/system/service/SysUserService.java | 2 + .../service/impl/SysUserServiceImpl.java | 53 +++++++++++ src/main/java/com/muyu/system/util/Dome.java | 89 +++++++++++++++++++ .../resources/mapper/system/SysUserMapper.xml | 27 ++++++ 9 files changed, 264 insertions(+) create mode 100644 src/main/java/com/muyu/config/AlipayConfig.java create mode 100644 src/main/java/com/muyu/config/util/logFile.java create mode 100644 src/main/java/com/muyu/system/util/Dome.java diff --git a/pom.xml b/pom.xml index ba6b18a..7df0ce3 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,11 @@ + + com.alipay.sdk + alipay-sdk-java + + com.alibaba.cloud diff --git a/src/main/java/com/muyu/config/AlipayConfig.java b/src/main/java/com/muyu/config/AlipayConfig.java new file mode 100644 index 0000000..13ac1d0 --- /dev/null +++ b/src/main/java/com/muyu/config/AlipayConfig.java @@ -0,0 +1,30 @@ +package com.muyu.config; + +/** + * @Author: wangxinyuan + * @Date: 2024/8/22 下午6:43 + */ +public class AlipayConfig { + + + // 商户appid + public static String APPID = "9021000139609995"; + // 私钥 pkcs8格式的 + public static String RSA_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMbBAf8yRmFvLx2SEfhdjdidpqWzfeRkL8d3K0Sz9DC5xxnrrUujwQF7FfbmwR43oJy1mIrMffc2Fp3vpSjWgdOMfAJy5N0GlrDb4o/3mN3pH3xElfdz7VEw9jcIhLDEsV2LP3nnrbkEKoj93gnZsuMkTnO4yfsEyCZVL6rkK01R9Pcu3tKKLrY5n30U7aE1WOuKvE3pTmxkpdXaX3Q46npP8wHOY1x6kUzyFgjFip/E4HEE91OzqaVnirt6GkWm9m0VAiUOENthEbnSzKagoVuTV0lXoX0hzTJ4H/4Ees2wOE4pZzeK2xqrolD3/EIR31I1ztyz4hXJG3sBC3v7gFAgMBAAECggEAQP9jKSWAP02wtaFaXNGMIPTCE+spGm2wwuGgAR+j38eDWMUllpoYmu1NopBToGR52z9jGogFjVD8elNBuJnprtDtAnXyzR8lRbq66gJBPhC0zNkGk2ow+kLzM6UGUQZ5oVqj7mnfmoyGBV6pJ9A1FT06l2Nh1SyTRyq8daSO5TwE5wUl040YT5pFIy4TCL1NhJVqDU61kNZCzVrUN4Lorkvv4gAeYZGY0cX0QMWXxwq5N7dOAn1tbwuo3WHnJbva3KBOVCtkldZ7Z0iwFQsniZXuXk7NmpNKFuZiQArlR8pTqDJB1dUwua9Nw1c9T+0CvpGRUH2u3wFIWK/RYyh0gQKBgQDxZaam5Z4irNdlxv9ypwQiiSsar745cDsmKv7oE4mUkxQzcR1segK+og0aX2s6Oa25Cj64jSXqbY/Y2DsoIEFFDe9z2E52QEOsZcN51edLc88YsopSSSIgobA8/+hB+AHjlILNhrtghwbKBOxNR5vBM/QGmfWaGPqtA8HsD3DQcQKBgQDYyc56eLOPWLuREu1aFrNs4viJ8r4v+pZmLFrXHojPF3teQr6z+CnrnF7vKYAmnOVxD2M44LgRr7LYnswzDWLLvrAkhUCYiaTL+6dvgy0okkUGE5QjGPP889yiHef8b1fRKNaVM+hXkt452oqhh95ZMnN4/ugZ3Uiq3UF8Q4vq1QKBgEV/cn9SVDi/cjQHGrwzgWk//HzuY+G9ggn3DvRZy55Oyd4VjtcQOYIQvZz+I6zbtjwzyuLvIB9h86wGdOGUh7YN0QaVG+HHlrQniCOnhbOfX9xIarJOA9lJM6gcNQ3pDQIsW4w4YfHkbfvzduS43Qq+nl7YLHF1B5aQImCIAX7BAoGBAK135iG33a6RiR0P8R8KVS6G++uecrL/qEM/sLy78SsNFimZ7PEjXZ/rs0dahPHgz/PFJVdI8eEtH0YY4zritjBkeJvwiHzGfzi+OP+RDpyNVnADUKE5AVtiYyTSG2SyT6nNLM+dBoi0u9+9UPrqNnBXX3DtQBoaKGCYxSLDBf21AoGANG5wAjV+ME7uAYEvW9GlrvGmNmzyUuiZrYuYHCf76CTa+q0+P7o0WgKcWEXUSah08qF4EItUQuuw+PtFTFs/sorqa9QrZs/ozTt8Q4ms/tahFPkZOTJ8s1Az2jY3C9ERwS8ab3Q+kbLiXDTnWo4s7YqwpwMZd/abhs3SwCjzLDI="; + // 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + public static String notify_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp"; + // 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址 + public static String return_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp"; + // 请求网关地址 + public static String URL = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; + // 编码 + public static String CHARSET = "UTF-8"; + // 返回格式 + public static String FORMAT = "json"; + // 支付宝公钥 + public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnOq1vdnkd83CnZUWZVka7EWT0YgiGX8io6ul4GThlue66YNKoS/rKT1rHzyZqBwNG1qgeU7eH+UazuFK2GsxrDI1rSqzljkgQnkmwtjEsJYpXzFF5PTuW8bsDNHoXr5LsEyMaljyiNtBO3uc+Zbb0D6GcbnQUFGorMi9tKR28XjNJkvamohMhh+V5cb1FJtybliNoGAjA+Nh+aQVAXqFEPj3FX0qhPi4gRXniYL0o9ePaRtNg5pJ/uJ3G6llRi3+uZleD7XBSQCSf8ZZJfH8Bvr3mTQ/ObpyDub8VYnIkOgld4OAJRzqXJAyPFo0mRGhaeuSqviyRYGQK8/U8CrLkQIDAQAB"; + // 日志记录目录定义在 logFile 中 + public static String log_path = "/log"; + // RSA2 + public static String SIGNTYPE = "RSA2"; +} diff --git a/src/main/java/com/muyu/config/util/logFile.java b/src/main/java/com/muyu/config/util/logFile.java new file mode 100644 index 0000000..c7312a5 --- /dev/null +++ b/src/main/java/com/muyu/config/util/logFile.java @@ -0,0 +1,36 @@ +package com.muyu.config.util; + +import com.muyu.config.AlipayConfig; + +import java.io.FileWriter; +import java.io.IOException; + +/** + * @Author: wangxinyuan + * @Date: 2024/8/22 下午6:48 + */ +public class logFile { + + /** + * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库) + * @param sWord 要写入日志里的文本内容 + */ + public static void logResult(String sWord) { + FileWriter writer = null; + try { + writer = new FileWriter(AlipayConfig.log_path + "alipay_log_" + System.currentTimeMillis()+".txt"); + writer.write(sWord); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (writer != null) { + try { + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + +} diff --git a/src/main/java/com/muyu/system/controller/SysUserController.java b/src/main/java/com/muyu/system/controller/SysUserController.java index bc0b5fe..92af689 100644 --- a/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/src/main/java/com/muyu/system/controller/SysUserController.java @@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.Date; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -254,6 +255,20 @@ public class SysUserController extends BaseController { return toAjax(userService.updateUserStatus(user)); } + + //TODO 用户充值 + /** + * 用户充值 + */ + @Log(title = "用户充值", businessType = BusinessType.INSERT) + @PostMapping ("/alipay/recharge") + public Result userBalance(@RequestBody SysUser user){ + userService.checkUserAllowed(user); + userService.checkUserDataScope(user.getUserId()); + user.setCreateBy(SecurityUtils.getUsername()); + return toAjax(userService.insertBalance(user)); + } + /** * 根据用户编号获取授权角色 */ diff --git a/src/main/java/com/muyu/system/mapper/SysUserMapper.java b/src/main/java/com/muyu/system/mapper/SysUserMapper.java index e037b34..2e96315 100644 --- a/src/main/java/com/muyu/system/mapper/SysUserMapper.java +++ b/src/main/java/com/muyu/system/mapper/SysUserMapper.java @@ -75,6 +75,9 @@ public interface SysUserMapper extends BaseMapper { */ public int updateUser (SysUser user); + public int updateUserBalance (SysUser user); + + /** * 修改用户头像 * @@ -139,4 +142,8 @@ public interface SysUserMapper extends BaseMapper { * @return 结果 */ public SysUser checkEmailUnique (String email); + + + + } diff --git a/src/main/java/com/muyu/system/service/SysUserService.java b/src/main/java/com/muyu/system/service/SysUserService.java index f4c6167..45792a2 100644 --- a/src/main/java/com/muyu/system/service/SysUserService.java +++ b/src/main/java/com/muyu/system/service/SysUserService.java @@ -225,4 +225,6 @@ public interface SysUserService extends IService { * @return 结果 */ public String importUser (List userList, Boolean isUpdateSupport, String operName); + + int insertBalance(SysUser user); } diff --git a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java index c1d3f18..7259834 100644 --- a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -1,5 +1,10 @@ package com.muyu.system.service.impl; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.response.AlipayTradePagePayResponse; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.constant.UserConstants; import com.muyu.common.core.exception.ServiceException; @@ -10,6 +15,7 @@ import com.muyu.common.datascope.annotation.DataScope; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.system.domain.SysRole; import com.muyu.common.system.domain.SysUser; +import com.muyu.config.AlipayConfig; import com.muyu.system.domain.SysPost; import com.muyu.system.domain.SysUserPost; import com.muyu.system.domain.SysUserRole; @@ -17,6 +23,7 @@ import com.muyu.system.mapper.*; import com.muyu.system.service.SysUserService; import com.muyu.system.service.SysConfigService; import jakarta.validation.Validator; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -24,15 +31,20 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; +import static com.muyu.config.AlipayConfig.*; + /** * 用户 业务层处理 * * @author muyu */ + @Service public class SysUserServiceImpl extends ServiceImpl implements SysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @@ -245,6 +257,39 @@ public class SysUserServiceImpl extends ServiceImpl impl return rows; } + + + + @Override + @Transactional(rollbackFor = Exception.class) + public int insertBalance(SysUser user) { + // 创建支付宝客户端 + AlipayClient alipayClient = new DefaultAlipayClient(URL, APPID, RSA_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGNTYPE); + AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); + + + // 发起支付请求 + try { + //TODO 调用支付宝接口 + AlipayTradePagePayResponse response = alipayClient.pageExecute(alipayRequest); + if (response.isSuccess()) { + // 支付成功,更新用户余额 + SysUser sysUser = userMapper.selectUserById(user.getUserId()); +// sysUser.setUserBalance(user.getUserBalance()); + double currentBalance = sysUser.getUserBalance(); + double newPaymentAmount = user.getPaymentAmount(); + double newBalance = currentBalance + newPaymentAmount; + sysUser.setUserBalance(newBalance); + userMapper.updateUserBalance(sysUser); + } else { + throw new RuntimeException("充值失败"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + /** * 注册用户信息 * @@ -354,6 +399,10 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.resetUserPwd(userName, password); } + + + + /** * 新增用户角色信息 * @@ -403,6 +452,8 @@ public class SysUserServiceImpl extends ServiceImpl impl } } + + /** * 通过用户ID删除用户 * @@ -500,4 +551,6 @@ public class SysUserServiceImpl extends ServiceImpl impl return successMsg.toString(); } + + } diff --git a/src/main/java/com/muyu/system/util/Dome.java b/src/main/java/com/muyu/system/util/Dome.java new file mode 100644 index 0000000..273e6f0 --- /dev/null +++ b/src/main/java/com/muyu/system/util/Dome.java @@ -0,0 +1,89 @@ +package com.muyu.system.util; + +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.request.AlipayTradeWapPayRequest; +import com.alipay.api.response.AlipayTradePagePayResponse; +import com.alipay.api.response.AlipayTradeWapPayResponse; + +/** + * @Author: wangxinyuan + * @Date: 2024/7/10 下午7:33 + */ +public class Dome { + + public static void main(String[] args) throws AlipayApiException { + + AlipayClient alipayClient = new DefaultAlipayClient( + URL, + APPID, + RSA_PRIVATE_KEY, + FORMAT, + CHARSET, + ALIPAY_PUBLIC_KEY, + SIGNTYPE + ); + + AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); + // 异步接收地址,仅支持http/https,公网可访问 + request.setNotifyUrl(notify_url); + // 同步跳转地址,仅支持http/https + request.setReturnUrl(return_url); + + // 必传参数 + JSONObject bizContent = new JSONObject(); + // 商户订单号,商家自定义,保持唯一性 + bizContent.put("out_trade_no", "20210817010101004"); + // 支付金额,最小值0.01元 + bizContent.put("total_amount", 0.01); + // 订单标题,不可使用特殊符号 + bizContent.put("subject", "测试商品"); + + // 可选参数 + // 手机网站支付默认传值QUICK_WAP_WAY + bizContent.put("product_code", "QUICK_WAP_WAY"); + // bizContent.put("time_expire", "2022-08-01 22:00:00"); + + // 设置业务请求参数 + request.setBizContent(bizContent.toString()); + + // 调用支付宝接口,获取支付页面内容 + AlipayTradeWapPayResponse response = alipayClient.pageExecute(request, "POST"); + // 如果需要返回GET请求,请使用 + // AlipayTradeWapPayResponse response = alipayClient.pageExecute(request,"GET"); + + String pageRedirectionData = response.getBody(); + System.out.println(pageRedirectionData); + + if (response.isSuccess()) { + System.out.println("调用成功"); + } else { + System.out.println("调用失败"); + } + } + + // 商户appid + public static String APPID = "9021000139609995"; + // 私钥 pkcs8格式的 + public static String RSA_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMbBAf8yRmFvLx2SEfhdjdidpqWzfeRkL8d3K0Sz9DC5xxnrrUujwQF7FfbmwR43oJy1mIrMffc2Fp3vpSjWgdOMfAJy5N0GlrDb4o/3mN3pH3xElfdz7VEw9jcIhLDEsV2LP3nnrbkEKoj93gnZsuMkTnO4yfsEyCZVL6rkK01R9Pcu3tKKLrY5n30U7aE1WOuKvE3pTmxkpdXaX3Q46npP8wHOY1x6kUzyFgjFip/E4HEE91OzqaVnirt6GkWm9m0VAiUOENthEbnSzKagoVuTV0lXoX0hzTJ4H/4Ees2wOE4pZzeK2xqrolD3/EIR31I1ztyz4hXJG3sBC3v7gFAgMBAAECggEAQP9jKSWAP02wtaFaXNGMIPTCE+spGm2wwuGgAR+j38eDWMUllpoYmu1NopBToGR52z9jGogFjVD8elNBuJnprtDtAnXyzR8lRbq66gJBPhC0zNkGk2ow+kLzM6UGUQZ5oVqj7mnfmoyGBV6pJ9A1FT06l2Nh1SyTRyq8daSO5TwE5wUl040YT5pFIy4TCL1NhJVqDU61kNZCzVrUN4Lorkvv4gAeYZGY0cX0QMWXxwq5N7dOAn1tbwuo3WHnJbva3KBOVCtkldZ7Z0iwFQsniZXuXk7NmpNKFuZiQArlR8pTqDJB1dUwua9Nw1c9T+0CvpGRUH2u3wFIWK/RYyh0gQKBgQDxZaam5Z4irNdlxv9ypwQiiSsar745cDsmKv7oE4mUkxQzcR1segK+og0aX2s6Oa25Cj64jSXqbY/Y2DsoIEFFDe9z2E52QEOsZcN51edLc88YsopSSSIgobA8/+hB+AHjlILNhrtghwbKBOxNR5vBM/QGmfWaGPqtA8HsD3DQcQKBgQDYyc56eLOPWLuREu1aFrNs4viJ8r4v+pZmLFrXHojPF3teQr6z+CnrnF7vKYAmnOVxD2M44LgRr7LYnswzDWLLvrAkhUCYiaTL+6dvgy0okkUGE5QjGPP889yiHef8b1fRKNaVM+hXkt452oqhh95ZMnN4/ugZ3Uiq3UF8Q4vq1QKBgEV/cn9SVDi/cjQHGrwzgWk//HzuY+G9ggn3DvRZy55Oyd4VjtcQOYIQvZz+I6zbtjwzyuLvIB9h86wGdOGUh7YN0QaVG+HHlrQniCOnhbOfX9xIarJOA9lJM6gcNQ3pDQIsW4w4YfHkbfvzduS43Qq+nl7YLHF1B5aQImCIAX7BAoGBAK135iG33a6RiR0P8R8KVS6G++uecrL/qEM/sLy78SsNFimZ7PEjXZ/rs0dahPHgz/PFJVdI8eEtH0YY4zritjBkeJvwiHzGfzi+OP+RDpyNVnADUKE5AVtiYyTSG2SyT6nNLM+dBoi0u9+9UPrqNnBXX3DtQBoaKGCYxSLDBf21AoGANG5wAjV+ME7uAYEvW9GlrvGmNmzyUuiZrYuYHCf76CTa+q0+P7o0WgKcWEXUSah08qF4EItUQuuw+PtFTFs/sorqa9QrZs/ozTt8Q4ms/tahFPkZOTJ8s1Az2jY3C9ERwS8ab3Q+kbLiXDTnWo4s7YqwpwMZd/abhs3SwCjzLDI="; + // 请求网关地址 + public static String URL = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; + // 编码 + public static String CHARSET = "UTF-8"; + // 返回格式 + public static String FORMAT = "json"; + // 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 + public static String notify_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp"; + // 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址 + public static String return_url = "http://商户网关地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp"; + // 支付宝公钥 + public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnOq1vdnkd83CnZUWZVka7EWT0YgiGX8io6ul4GThlue66YNKoS/rKT1rHzyZqBwNG1qgeU7eH+UazuFK2GsxrDI1rSqzljkgQnkmwtjEsJYpXzFF5PTuW8bsDNHoXr5LsEyMaljyiNtBO3uc+Zbb0D6GcbnQUFGorMi9tKR28XjNJkvamohMhh+V5cb1FJtybliNoGAjA+Nh+aQVAXqFEPj3FX0qhPi4gRXniYL0o9ePaRtNg5pJ/uJ3G6llRi3+uZleD7XBSQCSf8ZZJfH8Bvr3mTQ/ObpyDub8VYnIkOgld4OAJRzqXJAyPFo0mRGhaeuSqviyRYGQK8/U8CrLkQIDAQAB"; + // 日志记录目录定义在 logFile 中 + public static String log_path = "/log"; + // RSA2 + public static String SIGNTYPE = "RSA2"; + +} diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml index f399944..c01177d 100644 --- a/src/main/resources/mapper/system/SysUserMapper.xml +++ b/src/main/resources/mapper/system/SysUserMapper.xml @@ -217,6 +217,8 @@ ) + + update sys_user @@ -238,6 +240,30 @@ where user_id = #{userId} + + + update sys_user + + dept_id = #{deptId}, + user_name = #{userName}, + nick_name = #{nickName}, + email = #{email}, + phonenumber = #{phonenumber}, + sex = #{sex}, + avatar = #{avatar}, + password = #{password}, + status = #{status}, + login_ip = #{loginIp}, + login_date = #{loginDate}, + update_by = #{updateBy}, + user_balance = #{userBalance}, + payment_amount = #{paymentAmount}, + remark = #{remark}, + update_time = sysdate() + + where user_id = #{userId} + + update sys_user set status = #{status} @@ -256,6 +282,7 @@ where user_name = #{userName} + update sys_user set del_flag = '2' From d270cf96a8f2886823120cdd64cda0ee88a331ba Mon Sep 17 00:00:00 2001 From: wxy <14293288+zysysys@user.noreply.gitee.com> Date: Fri, 23 Aug 2024 20:53:51 +0800 Subject: [PATCH 3/4] =?UTF-8?q?```feat(user):=20=E9=9B=86=E6=88=90?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E5=85=85=E5=80=BC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 集成支付宝充值功能,允许用户通过支付宝进行余额充值。在用户控制器中添加了处理充值请求的端点,并在用户服务中实现了充值逻辑。使用Alipay SDK处理支付请求,并在成功支付后更新用户的余额。确保用户余额和支付金额的处理在数据库中是原子操作。支付宝配置详细信息已加载,同步和异步通知URL已设置。 ``` --- .../system/controller/SysUserController.java | 11 +++++++++++ .../com/muyu/system/mapper/SysUserMapper.java | 3 +-- .../muyu/system/service/SysUserService.java | 3 +++ .../service/impl/SysUserServiceImpl.java | 18 +++++++++++++----- src/main/resources/bootstrap.yml | 2 +- .../resources/mapper/system/SysUserMapper.xml | 3 +++ 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/muyu/system/controller/SysUserController.java b/src/main/java/com/muyu/system/controller/SysUserController.java index 92af689..9b16369 100644 --- a/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/src/main/java/com/muyu/system/controller/SysUserController.java @@ -269,6 +269,17 @@ public class SysUserController extends BaseController { return toAjax(userService.insertBalance(user)); } + + //TODO + // 查询当前用户的余额 + @GetMapping("/balance/{userId}") + public Result userBalance(@PathVariable("userId") Long userId){ + userService.checkUserDataScope(userId); + return toAjax(userService.selectBalance(userId)); + } + + + /** * 根据用户编号获取授权角色 */ diff --git a/src/main/java/com/muyu/system/mapper/SysUserMapper.java b/src/main/java/com/muyu/system/mapper/SysUserMapper.java index 2e96315..b1206af 100644 --- a/src/main/java/com/muyu/system/mapper/SysUserMapper.java +++ b/src/main/java/com/muyu/system/mapper/SysUserMapper.java @@ -144,6 +144,5 @@ public interface SysUserMapper extends BaseMapper { public SysUser checkEmailUnique (String email); - - + public int selectBalance(Long userId); } diff --git a/src/main/java/com/muyu/system/service/SysUserService.java b/src/main/java/com/muyu/system/service/SysUserService.java index 45792a2..6b67cdf 100644 --- a/src/main/java/com/muyu/system/service/SysUserService.java +++ b/src/main/java/com/muyu/system/service/SysUserService.java @@ -227,4 +227,7 @@ public interface SysUserService extends IService { public String importUser (List userList, Boolean isUpdateSupport, String operName); int insertBalance(SysUser user); + + + int selectBalance(Long userId); } diff --git a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java index 7259834..be1d7dd 100644 --- a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -126,6 +126,12 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.selectUserById(userId); } + + @Override + public int selectBalance(Long userId) { + return userMapper.selectBalance(userId); + } + /** * 查询用户所属角色组 * @@ -275,11 +281,11 @@ public class SysUserServiceImpl extends ServiceImpl impl if (response.isSuccess()) { // 支付成功,更新用户余额 SysUser sysUser = userMapper.selectUserById(user.getUserId()); -// sysUser.setUserBalance(user.getUserBalance()); - double currentBalance = sysUser.getUserBalance(); - double newPaymentAmount = user.getPaymentAmount(); - double newBalance = currentBalance + newPaymentAmount; - sysUser.setUserBalance(newBalance); + sysUser.setUserBalance(user.getUserBalance()); +// double currentBalance = sysUser.getUserBalance(); +// double newPaymentAmount = user.getPaymentAmount(); +// double newBalance = currentBalance + newPaymentAmount; +// sysUser.setUserBalance(newBalance); userMapper.updateUserBalance(sysUser); } else { throw new RuntimeException("充值失败"); @@ -290,6 +296,8 @@ public class SysUserServiceImpl extends ServiceImpl impl return 0; } + + /** * 注册用户信息 * diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index cd6beea..ba6142e 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ nacos: addr: 47.116.184.54:8848 user-name: nacos password: nacos - namespace: cloud-2112 + namespace: cloud-tx # Spring spring: diff --git a/src/main/resources/mapper/system/SysUserMapper.xml b/src/main/resources/mapper/system/SysUserMapper.xml index c01177d..039bbe8 100644 --- a/src/main/resources/mapper/system/SysUserMapper.xml +++ b/src/main/resources/mapper/system/SysUserMapper.xml @@ -184,6 +184,9 @@ and del_flag = '0' limit 1 + insert into sys_user( From de76836daf2cc9466b153c14219e085bb08d8572 Mon Sep 17 00:00:00 2001 From: wxy <14293288+zysysys@user.noreply.gitee.com> Date: Sat, 24 Aug 2024 20:56:55 +0800 Subject: [PATCH 4/4] =?UTF-8?q?```feat(user):=20=E9=9B=86=E6=88=90?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=E5=85=85=E5=80=BC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 集成支付宝充值功能,允许用户通过支付宝进行余额充值。在用户控制器中添加了处理充值请求的端点,并在用户服务中实现了充值逻辑。使用Alipay SDK处理支付请求,并在成功支付后更新用户的余额。确保用户余额和支付金额的处理在数据库中是原子操作。支付宝配置详细信息已加载,同步和异步通知URL已设置。 ``` --- .../java/com/muyu/system/controller/SysUserController.java | 5 ++++- .../com/muyu/system/service/impl/SysUserServiceImpl.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/muyu/system/controller/SysUserController.java b/src/main/java/com/muyu/system/controller/SysUserController.java index 9b16369..c30bfc7 100644 --- a/src/main/java/com/muyu/system/controller/SysUserController.java +++ b/src/main/java/com/muyu/system/controller/SysUserController.java @@ -275,11 +275,14 @@ public class SysUserController extends BaseController { @GetMapping("/balance/{userId}") public Result userBalance(@PathVariable("userId") Long userId){ userService.checkUserDataScope(userId); - return toAjax(userService.selectBalance(userId)); + int rows = userService.selectBalance(userId); + System.out.println(rows); + return Result.success(rows); } + /** * 根据用户编号获取授权角色 */ diff --git a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java index be1d7dd..a37d6c9 100644 --- a/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/muyu/system/service/impl/SysUserServiceImpl.java @@ -129,7 +129,9 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override public int selectBalance(Long userId) { - return userMapper.selectBalance(userId); + int i = userMapper.selectBalance(userId); + System.out.println(i); + return i; } /** @@ -274,6 +276,7 @@ public class SysUserServiceImpl extends ServiceImpl impl AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); + // 发起支付请求 try { //TODO 调用支付宝接口