From b9f0f641b85bbbfe74fc23efe4f4965586d9e3af Mon Sep 17 00:00:00 2001 From: liulin <lin.liu@88.com> Date: 星期三, 02 七月 2025 10:06:23 +0800 Subject: [PATCH] 添加微信支付 --- src/main/java/com/lunhan/water/service/TradeRecordService.java | 244 + src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqCreateRechargeOrder.java | 70 src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Payer.java | 16 src/main/java/com/lunhan/water/repository/mapper/RechargeRecordsMapper.java | 10 src/main/java/com/lunhan/water/repository/vo/RefundRecordVO.java | 54 src/main/java/com/lunhan/water/entity/enums/EBusinessType.java | 68 src/main/java/com/lunhan/water/common/util/LocalDateTimeUtil.java | 6 src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqModifyRechargeOrder.java | 74 src/main/java/com/lunhan/water/service/convert/RefundRecordConvert.java | 48 src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Amount.java | 16 src/main/java/com/lunhan/water/entity/enums/EUserType.java | 10 src/main/java/com/lunhan/water/entity/search/SearchRefundRecord.java | 14 src/main/java/com/lunhan/water/service/convert/UserLoginConvert.java | 48 src/main/java/com/lunhan/water/repository/po/PaymentRecordsPO.java | 105 src/main/java/com/lunhan/water/entity/enums/EPayWay.java | 79 src/main/java/com/lunhan/water/common/config/MqttConfig.java | 61 src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqCreatePaymentRecords.java | 70 src/main/java/com/lunhan/water/host/controller/pay/PaymentServicesController.java | 74 src/main/java/com/lunhan/water/entity/request/userlogin/ReqCreateUserLogin.java | 65 src/main/java/com/lunhan/water/repository/impl/PaymentRecordsMapperImpl.java | 137 src/main/java/com/lunhan/water/repository/mapper/UserLoginMapper.java | 10 src/main/java/com/lunhan/water/common/config/SysConfig.java | 3 src/main/java/com/lunhan/water/repository/impl/RechargeOrderMapperImpl.java | 141 src/main/java/com/lunhan/water/repository/impl/RechargeRecordsMapperImpl.java | 142 src/main/java/com/lunhan/water/repository/impl/UserLoginMapperImpl.java | 146 src/main/java/com/lunhan/water/repository/po/TradeRecordPO.java | 190 + src/main/java/com/lunhan/water/common/config/WxConfig.java | 27 src/main/java/com/lunhan/water/service/PaymentRecordsService.java | 244 + src/main/java/com/lunhan/water/entity/enums/EPayType.java | 58 src/main/java/com/lunhan/water/entity/request/userlogin/ReqModifyUserLogin.java | 73 src/main/java/com/lunhan/water/host/controller/base/SysRegionController.java | 161 src/main/java/com/lunhan/water/entity/request/traderecord/ReqCreateTradeRecord.java | 138 src/main/java/com/lunhan/water/service/RechargeOrderService.java | 244 + src/main/java/com/lunhan/water/service/convert/SysRegionConvert.java | 48 src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqCreateUserCapitalChange.java | 74 src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqCreateRechargeRecords.java | 58 src/main/java/com/lunhan/water/service/convert/RechargeOrderConvert.java | 48 src/main/java/com/lunhan/water/service/RechargeRecordsService.java | 244 + pom.xml | 6 src/main/java/com/lunhan/water/repository/vo/SysRegionVO.java | 54 src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqModifyUserCapitalChange.java | 78 src/main/java/com/lunhan/water/host/controller/RechargeOrderController.java | 113 src/main/java/com/lunhan/water/repository/mapper/PaymentRecordsMapper.java | 10 src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWeiXinRefund.java | 68 src/main/java/com/lunhan/water/repository/mapper/UserCapitalChangeMapper.java | 10 src/main/java/com/lunhan/water/repository/vo/RechargeOrderVO.java | 54 src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqModifyRechargeRecords.java | 62 src/main/java/com/lunhan/water/service/convert/UserCapitalChangeConvert.java | 48 src/main/java/com/lunhan/water/entity/enums/ERechargeType.java | 59 src/main/java/com/lunhan/water/host/controller/user/UserLoginController.java | 193 + src/main/java/com/lunhan/water/common/wechat/req/WeiXinRefund_Amount.java | 42 src/main/java/com/lunhan/water/entity/request/refundrecord/ReqCreateRefundRecord.java | 138 src/main/java/com/lunhan/water/entity/search/SearchUserCapitalChange.java | 14 src/main/java/com/lunhan/water/service/convert/TradeRecordConvert.java | 48 src/main/java/com/lunhan/water/entity/search/SearchUserLogin.java | 14 src/main/java/com/lunhan/water/entity/enums/EPaymentChannel.java | 63 src/main/java/com/lunhan/water/entity/request/refundrecord/ReqModifyRefundRecord.java | 142 src/main/java/com/lunhan/water/repository/mapper/RechargeOrderMapper.java | 10 src/main/java/com/lunhan/water/common/wechat/WechatAuthorization.java | 76 src/main/java/com/lunhan/water/host/controller/RechargeRecordsController.java | 113 src/main/java/com/lunhan/water/host/mqtt/MQTTStart.java | 28 src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqModifyPaymentRecords.java | 74 src/main/java/com/lunhan/water/entity/request/traderecord/ReqModifyTradeRecord.java | 142 src/main/java/com/lunhan/water/entity/weixin/WeiXinUserDto.java | 114 src/main/java/com/lunhan/water/repository/vo/UserLoginVO.java | 54 src/main/java/com/lunhan/water/repository/mapper/SysRegionMapper.java | 10 src/main/java/com/lunhan/water/service/convert/PaymentRecordsConvert.java | 48 src/main/java/com/lunhan/water/repository/impl/TradeRecordMapperImpl.java | 148 src/main/java/com/lunhan/water/common/wechat/WechatPayV3Util.java | 112 src/main/java/com/lunhan/water/host/mqtt/MQTTSubsribe.java | 102 src/main/java/com/lunhan/water/common/wechat/res/ResWeiXinRefund.java | 116 src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWechatPay.java | 88 src/main/java/com/lunhan/water/common/config/WeiXinPayConfig.java | 30 src/main/java/com/lunhan/water/service/PaymentServices.java | 645 +++ src/main/java/com/lunhan/water/host/controller/UserCapitalChangeController.java | 113 src/main/java/com/lunhan/water/entity/enums/ERefundState.java | 82 src/main/java/com/lunhan/water/host/mqtt/MQTTConnect.java | 38 src/main/java/com/lunhan/water/repository/po/RechargeOrderPO.java | 105 src/main/java/com/lunhan/water/entity/search/SearchSysRegion.java | 14 src/main/java/com/lunhan/water/repository/po/UserCapitalChangePO.java | 110 src/main/java/com/lunhan/water/repository/vo/UserCapitalChangeVO.java | 54 src/main/java/com/lunhan/water/repository/vo/TradeRecordVO.java | 54 src/main/java/com/lunhan/water/entity/enums/ECapitalChange.java | 69 src/main/java/com/lunhan/water/host/controller/PaymentRecordsController.java | 113 src/main/java/com/lunhan/water/entity/request/sysregion/ReqModifySysRegion.java | 90 src/main/java/com/lunhan/water/entity/search/SearchRechargeRecords.java | 14 src/main/java/com/lunhan/water/host/controller/RefundRecordController.java | 113 src/main/java/com/lunhan/water/service/UserCapitalChangeService.java | 244 + src/main/java/com/lunhan/water/entity/request/pay/AlipayBean.java | 33 src/main/java/com/lunhan/water/entity/request/pay/ReqPayRefund.java | 25 src/main/java/com/lunhan/water/service/convert/RechargeRecordsConvert.java | 48 src/main/java/com/lunhan/water/entity/request/sysregion/ReqCreateSysRegion.java | 86 src/main/java/com/lunhan/water/entity/search/SearchTradeRecord.java | 14 src/main/java/com/lunhan/water/service/UserLoginService.java | 347 + src/main/java/com/lunhan/water/service/RefundRecordService.java | 244 + src/main/java/com/lunhan/water/host/mqtt/PushCallback.java | 83 src/main/java/com/lunhan/water/repository/po/RefundRecordPO.java | 190 + src/main/java/com/lunhan/water/repository/vo/PaymentRecordsVO.java | 54 src/main/java/com/lunhan/water/host/controller/TradeRecordController.java | 113 src/main/java/com/lunhan/water/common/security/RSAUtil.java | 202 + src/main/java/com/lunhan/water/entity/response/region/ResRegionTree.java | 44 src/main/java/com/lunhan/water/common/wechat/res/ResWechatPrePay.java | 16 src/main/java/com/lunhan/water/entity/search/SearchRechargeOrder.java | 14 src/main/java/com/lunhan/water/entity/request/pay/ReqOrderPay.java | 25 src/main/java/com/lunhan/water/entity/response/region/ResBasicRegionTree.java | 127 src/main/java/com/lunhan/water/host/mqtt/MQTTServer.java | 96 src/main/java/com/lunhan/water/entity/request/pay/ReqCreatePay.java | 35 src/main/java/com/lunhan/water/entity/enums/EPayState.java | 92 src/main/java/com/lunhan/water/repository/vo/RechargeRecordsVO.java | 54 src/main/java/com/lunhan/water/service/SysRegionService.java | 316 + src/main/java/com/lunhan/water/repository/impl/UserCapitalChangeMapperImpl.java | 137 src/main/java/com/lunhan/water/repository/impl/RefundRecordMapperImpl.java | 141 src/main/java/com/lunhan/water/entity/search/SearchPaymentRecords.java | 14 src/main/java/com/lunhan/water/repository/impl/SysRegionMapperImpl.java | 159 src/main/java/com/lunhan/water/repository/po/RechargeRecordsPO.java | 110 src/main/java/com/lunhan/water/repository/po/SysRegionPO.java | 125 src/main/java/com/lunhan/water/entity/weixin/AccessTokenDto.java | 12 src/test/java/com/lunhan/water/GenCodeGauss.java | 24 src/main/java/com/lunhan/water/repository/mapper/RefundRecordMapper.java | 10 src/main/java/com/lunhan/water/repository/mapper/TradeRecordMapper.java | 10 src/main/java/com/lunhan/water/repository/po/UserLoginPO.java | 110 121 files changed, 10,753 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 35d32c0..88e71ab 100644 --- a/pom.xml +++ b/pom.xml @@ -89,6 +89,12 @@ <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> + <!-- mqtt 依赖 --> + <dependency> + <groupId>org.eclipse.paho</groupId> + <artifactId>org.eclipse.paho.client.mqttv3</artifactId> + <version>1.2.5</version> + </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> diff --git a/src/main/java/com/lunhan/water/common/config/MqttConfig.java b/src/main/java/com/lunhan/water/common/config/MqttConfig.java new file mode 100644 index 0000000..fa59d62 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/config/MqttConfig.java @@ -0,0 +1,61 @@ +package com.lunhan.water.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "mqtt") +@Order(10) +public class MqttConfig { + /** + * 是否启用 + */ + private Boolean enable; + /** + * 主机 + */ + private String host; + + /** + * 端口 + */ + private Integer port; + + /** + * 用户名 + */ + private String user; + + /** + * 密码 + */ + private String password; + + /** + * 订阅主题 + */ + private String topic; + + /** + * 订阅消息的客户端id + */ + private String clientId; + + /** + * 连接超时时间 + */ + private Integer connectionTimeout; + + /** + * 心跳 + */ + private Integer keepAliveInterval; + + /** + * 发送消息的客户端id + */ + private String serverClientId; +} diff --git a/src/main/java/com/lunhan/water/common/config/SysConfig.java b/src/main/java/com/lunhan/water/common/config/SysConfig.java index 4fec202..fc3bc58 100644 --- a/src/main/java/com/lunhan/water/common/config/SysConfig.java +++ b/src/main/java/com/lunhan/water/common/config/SysConfig.java @@ -10,7 +10,8 @@ public static JdbcSetConfig jdbc = SpringUtil.getBean(JdbcSetConfig.class); public static FileConfig file = SpringUtil.getBean(FileConfig.class); public static RedisConfig redis = SpringUtil.getBean(RedisConfig.class); - + public static WxConfig wx = SpringUtil.getBean(WxConfig.class); + public static WeiXinPayConfig weiXinPay = SpringUtil.getBean(WeiXinPayConfig.class); public static String getTokenHeader() { return jwt.getTokenHeader(); //return properties.getProperty("jwt.tokenHeader", ""); diff --git a/src/main/java/com/lunhan/water/common/config/WeiXinPayConfig.java b/src/main/java/com/lunhan/water/common/config/WeiXinPayConfig.java new file mode 100644 index 0000000..dabe87d --- /dev/null +++ b/src/main/java/com/lunhan/water/common/config/WeiXinPayConfig.java @@ -0,0 +1,30 @@ +package com.lunhan.water.common.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Data +@Configuration +public class WeiXinPayConfig { + @Value("${pay.weiXin.merchantId}") + public String merchantId; + + @Value("${pay.weiXin.merchantKey}") + public String merchantKey; + + @Value("${pay.weiXin.keyPath}") + public String keyPath; + + @Value("${pay.weiXin.privateKeyPath}") + public String privateKeyPath; + + @Value("${pay.weiXin.certificateSn}") + public String certificateSn; + + @Value("${pay.weiXin.appID}") + public String appID; + + @Value("${pay.weiXin.notifyBasicUrl}") + private String notifyBasicUrl; +} diff --git a/src/main/java/com/lunhan/water/common/config/WxConfig.java b/src/main/java/com/lunhan/water/common/config/WxConfig.java new file mode 100644 index 0000000..4cf1d33 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/config/WxConfig.java @@ -0,0 +1,27 @@ +package com.lunhan.water.common.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "wx") +public class WxConfig { + private String appId; + private String secret; + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } +} diff --git a/src/main/java/com/lunhan/water/common/security/RSAUtil.java b/src/main/java/com/lunhan/water/common/security/RSAUtil.java new file mode 100644 index 0000000..54a7cb2 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/security/RSAUtil.java @@ -0,0 +1,202 @@ +package com.lunhan.water.common.security; + +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.*; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; + +public class RSAUtil { + private static String getKey(String filePath) { + try { + // Read key from file + String strKeyPEM = ""; + BufferedReader br = new BufferedReader(new FileReader(filePath)); + String line; + while ((line = br.readLine()) != null) { + strKeyPEM += line + "\n"; + } + br.close(); + return strKeyPEM; + } catch (Exception e) { + throw new RuntimeException("RSA读取文件(" + filePath + ")失败: " + e.getMessage()); + } + } + + + + + + /** + * 从pem文件获取私钥PrivateKey + * + * @param filePath pem文件路径 + */ + public static PrivateKey getPrivateKey(String filePath) { + String privateKeyPEM = RSAUtil.getKey(filePath); + return RSAUtil.getPrivateKeyFromString(privateKeyPEM); + } + /** + * String转私钥PrivateKey + * + * @param key + */ + public static PrivateKey getPrivateKeyFromString(String key) { + try { + String privateKeyPEM = key; + privateKeyPEM = privateKeyPEM.replaceFirst("\\-+BEGIN PRIVATE KEY\\-+[^a-zA-Z0-9_\\-]+", ""); + privateKeyPEM = privateKeyPEM.replaceFirst("\\-+END PRIVATE KEY\\-+", "").replaceAll("\\s+", ""); + byte[] encoded = Base64.decodeBase64(privateKeyPEM); + + KeyFactory kf = KeyFactory.getInstance("RSA"); + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded); + return kf.generatePrivate(keySpec); + } catch (Exception e) { + throw new RuntimeException("RSA从字符串获取私钥失败: " + e.getMessage()); + } + } + + + + + + public static PublicKey getPublicKey(String filename) throws IOException, GeneralSecurityException { + String publicKeyPEM = RSAUtil.getKey(filename); + return RSAUtil.getPublicKeyFromString(publicKeyPEM); + } + + public static PublicKey getPublicKeyFromString(String key) { + try { + String publicKeyPEM = key; + publicKeyPEM = publicKeyPEM.replace("-----BEGIN PUBLIC KEY-----\n", ""); + publicKeyPEM = publicKeyPEM.replace("-----END PUBLIC KEY-----", ""); + byte[] encoded = Base64.decodeBase64(publicKeyPEM); + KeyFactory kf = KeyFactory.getInstance("RSA"); + PublicKey pubKey = kf.generatePublic(new X509EncodedKeySpec(encoded)); + return pubKey; + } catch (Exception e) { + throw new RuntimeException("RSA从字符串获取公钥失败: " + e.getMessage()); + } + } + + + + + + public static String sign(PrivateKey privateKey, String message) { + try { + Signature sign = Signature.getInstance("SHA1withRSA"); + sign.initSign(privateKey); + sign.update(message.getBytes(StandardCharsets.UTF_8)); + return new String(Base64.encodeBase64(sign.sign()), StandardCharsets.UTF_8); + } catch (Exception e) { + throw new RuntimeException("RSA签名生成失败: " + e.getMessage()); + } + } + public static boolean verify(PublicKey publicKey, String message, String signature) { + try { + Signature sign = Signature.getInstance("SHA1withRSA"); + sign.initVerify(publicKey); + sign.update(message.getBytes(StandardCharsets.UTF_8)); + return sign.verify(Base64.decodeBase64(signature.getBytes(StandardCharsets.UTF_8))); + } catch (Exception e) { + throw new RuntimeException("RSA签名验证失败: " + e.getMessage()); + } + } + + + + + + public static String encryptRSA(String rawText, String publicKey) { + return RSAUtil.encryptRSA(rawText, RSAUtil.getPublicKeyFromString(publicKey)); + } + public static String encryptRSA(String rawText, PublicKey publicKey) { + try { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + return Base64.encodeBase64String(cipher.doFinal(rawText.getBytes(StandardCharsets.UTF_8))); + } catch (Exception e) { + throw new RuntimeException("RSA加密失败: " + e.getMessage()); + } + } + + + + + + //公钥加密 +// public static String encrypt(String content, String publicKey) { +// return RSAUtil.encrypt(content, RSAUtil.getPublicKeyFromString(publicKey)); +// } +// public static String encrypt(String content, PublicKey publicKey) { +// try { +// byte[] output = RSAUtil.encrypt(content.getBytes(), publicKey); +// BASE64Encoder encoder = new BASE64Encoder(); +// return encoder.encode(output); +// } catch (Exception e) { +// throw new RuntimeException("RSA加密失败: " + e.getMessage()); +// } +// } + //公钥加密 + public static byte[] encrypt(byte[] content, PublicKey publicKey) { + try { + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");//java默认"RSA"="RSA/ECB/PKCS1Padding" + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + return cipher.doFinal(content); + } catch (Exception e) { + throw new RuntimeException("RSA加密失败: " + e.getMessage()); + } + } + + + + + + public static String decryptRSA(String cipherText, String privateKey) { + return RSAUtil.decryptRSA(cipherText, RSAUtil.getPrivateKey(privateKey)); + } + + public static String decryptRSA(String cipherText, PrivateKey privateKey) { + try { + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + return new String(cipher.doFinal(Base64.decodeBase64(cipherText)), StandardCharsets.UTF_8); + } catch (Exception e) { + throw new RuntimeException("RSA解密失败: " + e.getMessage()); + } + } + + + + + + //私钥解密 +// public static String decrypt(String content, String privateKey) { +// return RSAUtil.decrypt(content, RSAUtil.getPrivateKey(privateKey)); +// } +// public static String decrypt(String content, PrivateKey privateKey) { +// try { +// byte[] buffer = RSAUtil.decrypt(content.getBytes(), privateKey); +// BASE64Encoder encoder = new BASE64Encoder(); +// return encoder.encode(buffer); +// } catch (Exception e) { +// throw new RuntimeException("RSA解密失败: " + e.getMessage()); +// } +// } + //私钥解密 + public static byte[] decrypt(byte[] content, PrivateKey privateKey) { + try { + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + return cipher.doFinal(content); + } catch (Exception e) { + throw new RuntimeException("RSA解密失败: " + e.getMessage()); + } + } +} diff --git a/src/main/java/com/lunhan/water/common/util/LocalDateTimeUtil.java b/src/main/java/com/lunhan/water/common/util/LocalDateTimeUtil.java index 25ca5bc..6a87d60 100644 --- a/src/main/java/com/lunhan/water/common/util/LocalDateTimeUtil.java +++ b/src/main/java/com/lunhan/water/common/util/LocalDateTimeUtil.java @@ -152,6 +152,12 @@ return LocalDateTimeUtil.toFormatString(dateTime, ConstantFactory.STR_DATE); } /** + * 获取当前时间戳 + */ + public static Long nowTimeStampSec() { + return Instant.now().getEpochSecond(); + } + /** * 将dateTime格式化成时间字符串 * @param date LocalDate对象 * @param format 指定时间格式(例:yyyy-MM-dd) diff --git a/src/main/java/com/lunhan/water/common/wechat/WechatAuthorization.java b/src/main/java/com/lunhan/water/common/wechat/WechatAuthorization.java new file mode 100644 index 0000000..a52b831 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/WechatAuthorization.java @@ -0,0 +1,76 @@ +package com.lunhan.water.common.wechat; + +import com.lunhan.water.common.security.RSAUtil; +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.RandVerifyCode; + +import java.nio.charset.StandardCharsets; +import java.security.Signature; +import java.util.Base64; + +public class WechatAuthorization { + public String schema; + public String merchantId; + public String certificateSerialNo; + public String privateKeyPath; + + public WechatAuthorization(String merchantId, String certificateSerialNo, String privateKeyPath) { + this.schema = "WECHATPAY2-SHA256-RSA2048"; + this.merchantId = merchantId; + this.certificateSerialNo = certificateSerialNo; + this.privateKeyPath = privateKeyPath; + } + + public WechatAuthorization(String schema, String merchantId, String certificateSerialNo, String privateKeyPath) { + this.schema = schema; + this.merchantId = merchantId; + this.certificateSerialNo = certificateSerialNo; + this.privateKeyPath = privateKeyPath; + } + + /** + * 构建授权信息 GET - getToken("GET", httpurl, ""); POST - getToken("POST", httpurl, json) + * @param method 请求方法 GET/POST + * @param url 请求接口地址 + * @param body 请求正文内容,GET请求传空字符串 + */ + public String getAuthorization(String method, String url, String body) { + return String.format("%s %s", schema, this.getToken(method, url, body)); + } + + // Authorization: <schema> <token> + // GET - getToken("GET", httpurl, "") + // POST - getToken("POST", httpurl, json) + String getToken(String method, String url, String body) { + String nonceStr = RandVerifyCode.complexCode(8); + long timestamp = LocalDateTimeUtil.nowTimeStampSec(); + String message = buildMessage(method, url, timestamp, nonceStr, body); + String signature = sign(message.getBytes(StandardCharsets.UTF_8)); + + return "mchid=\"" + merchantId + "\"," + + "nonce_str=\"" + nonceStr + "\"," + + "timestamp=\"" + timestamp + "\"," + + "serial_no=\"" + certificateSerialNo + "\"," + + "signature=\"" + signature + "\""; + } + + public String sign(byte[] message) { + try { + Signature sign = Signature.getInstance("SHA256withRSA"); + sign.initSign(RSAUtil.getPrivateKey(privateKeyPath)); + sign.update(message); + + return Base64.getEncoder().encodeToString(sign.sign()); + } catch (Exception e) { + throw new RuntimeException("RSA错误: " + e.getMessage()); + } + } + + String buildMessage(String method, String url, long timestamp, String nonceStr, String body) { + return method + "\n" + + url + "\n" + + timestamp + "\n" + + nonceStr + "\n" + + body + "\n"; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/WechatPayV3Util.java b/src/main/java/com/lunhan/water/common/wechat/WechatPayV3Util.java new file mode 100644 index 0000000..74fa575 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/WechatPayV3Util.java @@ -0,0 +1,112 @@ +package com.lunhan.water.common.wechat; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.enums.EHttpContentType; +import com.lunhan.water.common.util.HttpUtil; +import com.lunhan.water.common.util.SerializeUtil; +import com.lunhan.water.common.util.StringUtil; +import com.lunhan.water.common.wechat.req.ReqCreateWechatPay; +import com.lunhan.water.common.wechat.req.ReqCreateWeiXinRefund; +import com.lunhan.water.common.wechat.res.ResWechatPrePay; +import com.lunhan.water.common.wechat.res.ResWeiXinRefund; +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.nio.charset.StandardCharsets; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +public class WechatPayV3Util { + private static final String BASIC_API = "https://api.mch.weixin.qq.com"; + private static final int KEY_LENGTH_BYTE = 32; + private static final int TAG_LENGTH_BIT = 128; + + /** + * 解密 + * @param associatedData 附加数据 + * @param nonce 随机串 + * @param cipherText 数据密文 + * @param aesKey apiv3秘钥 + * @return 结果 + * @throws Exception 异常 + */ + public static String decryptToString(byte[] associatedData, byte[] nonce, String cipherText,byte[] aesKey) throws Exception { + try { + if (aesKey.length != KEY_LENGTH_BYTE) { + throw new IllegalArgumentException("无效的ApiV3Key,长度必须为32个字节"); + } + + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + + SecretKeySpec key = new SecretKeySpec(aesKey, "AES"); + GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH_BIT, nonce); + + cipher.init(Cipher.DECRYPT_MODE, key, spec); + if(associatedData != null && associatedData.length > 0) { + cipher.updateAAD(associatedData); + }else { + cipher.updateAAD("".getBytes(StandardCharsets.UTF_8)); + } + + return new String(cipher.doFinal(Base64.decodeBase64(cipherText)), StandardCharsets.UTF_8); + + } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { + throw new IllegalStateException(e); + } catch (InvalidKeyException | InvalidAlgorithmParameterException e) { + throw new IllegalArgumentException(e); + } + } + + public static ExecutedResult<String> createPay(ReqCreateWechatPay request, WechatAuthorization auth) { + String url = "/v3/pay/transactions/jsapi"; + + String body = SerializeUtil.toJson(request); + + Map<String, String> headers = new HashMap<>(); + headers.put("Authorization", auth.getAuthorization("POST", url, body)); + headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"); + headers.put("Accept", "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); + + String response = null; + try { + response = HttpUtil.doPost(BASIC_API + url, body, EHttpContentType.JSON, headers); + } catch (Exception e) { + return ExecutedResult.failed("微信支付发起支付失败: " + e.getMessage()); + } + ResWechatPrePay result = SerializeUtil.toObject(response, ResWechatPrePay.class); + if (Objects.isNull(result) || StringUtil.isNullOrEmpty(result.getPrepayId())) { + return ExecutedResult.failed("微信支付返回报文无法解析: " + response); + } + return ExecutedResult.success(result.getPrepayId()); + } + + public static ExecutedResult<ResWeiXinRefund> createRefund(ReqCreateWeiXinRefund request, WechatAuthorization auth) { + String url = "/v3/refund/domestic/refunds"; + + String body = SerializeUtil.toJson(request); + + Map<String, String> headers = new HashMap<>(); + headers.put("Authorization", auth.getAuthorization("POST", url, body)); + headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"); + headers.put("Accept", "text/html,application/xhtml+xml,application/xml,application/json;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); + + String response = null; + try { + response = HttpUtil.doPost(BASIC_API + url, body, EHttpContentType.JSON, headers); + } catch (Exception e) { + return ExecutedResult.failed("微信支付发起退款失败: " + e.getMessage()); + } + ResWeiXinRefund result = SerializeUtil.toObject(response, ResWeiXinRefund.class); + if (Objects.isNull(result) || StringUtil.isNullOrEmpty(result.getRefund_id())) { + return ExecutedResult.failed("微信支付返回报文无法解析: " + response); + } + return ExecutedResult.success(result); + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Amount.java b/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Amount.java new file mode 100644 index 0000000..cfb1c2c --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Amount.java @@ -0,0 +1,16 @@ +package com.lunhan.water.common.wechat.req; + +public class CreatePay_Amount { + /** + * 订单总金额,单位为分 示例值:100 + */ + private Long total; + + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Payer.java b/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Payer.java new file mode 100644 index 0000000..a39957a --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/req/CreatePay_Payer.java @@ -0,0 +1,16 @@ +package com.lunhan.water.common.wechat.req; + +public class CreatePay_Payer { + /** + * 用户在直连商户appid下的唯一标识。 下单前需获取到用户的Openid 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o + */ + private String openid; + + public String getOpenid() { + return openid; + } + + public void setOpenid(String openid) { + this.openid = openid; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWechatPay.java b/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWechatPay.java new file mode 100644 index 0000000..162adbc --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWechatPay.java @@ -0,0 +1,88 @@ +package com.lunhan.water.common.wechat.req; + +public class ReqCreateWechatPay { + /** + * 应用ID 示例值:wxd678efh567hg6787 + */ + private String appid; + /** + * 直连商户号 示例值:1230000109 + */ + private String mchid; + /** + * 商品描述 示例值:Image形象店-深圳腾大-QQ公仔 + */ + private String description; + /** + * 商户订单号 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一 + */ + private String out_trade_no; + /** + * 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 公网域名必须为https + */ + private String notify_url; + /** + * 订单金额信息 + */ + private CreatePay_Amount amount; + /** + * 支付者信息 + */ + private CreatePay_Payer payer; + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + + public String getMchid() { + return mchid; + } + + public void setMchid(String mchid) { + this.mchid = mchid; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getOut_trade_no() { + return out_trade_no; + } + + public void setOut_trade_no(String out_trade_no) { + this.out_trade_no = out_trade_no; + } + + public String getNotify_url() { + return notify_url; + } + + public void setNotify_url(String notify_url) { + this.notify_url = notify_url; + } + + public CreatePay_Amount getAmount() { + return amount; + } + + public void setAmount(CreatePay_Amount amount) { + this.amount = amount; + } + + public CreatePay_Payer getPayer() { + return payer; + } + + public void setPayer(CreatePay_Payer payer) { + this.payer = payer; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWeiXinRefund.java b/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWeiXinRefund.java new file mode 100644 index 0000000..c3b7fda --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/req/ReqCreateWeiXinRefund.java @@ -0,0 +1,68 @@ +package com.lunhan.water.common.wechat.req; + +public class ReqCreateWeiXinRefund { + /** + * 【微信支付订单号】 原支付交易对应的微信订单号,与out_trade_no二选一 + */ + private String transaction_id; + + /** + * 【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔。 + */ + private String out_refund_no; + + /** + * 【退款原因】 若商户传入,会在下发给用户的退款消息中体现退款原因 + */ + private String reason; + + /** + * 退款结果回调url】 异步接收微信支付退款结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效,优先回调当前传的这个地址 + */ + private String notify_url; + + /** + * 【金额信息】 订单金额信息 + */ + private WeiXinRefund_Amount amount; + + public String getTransaction_id() { + return transaction_id; + } + + public void setTransaction_id(String transaction_id) { + this.transaction_id = transaction_id; + } + + public String getOut_refund_no() { + return out_refund_no; + } + + public void setOut_refund_no(String out_refund_no) { + this.out_refund_no = out_refund_no; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getNotify_url() { + return notify_url; + } + + public void setNotify_url(String notify_url) { + this.notify_url = notify_url; + } + + public WeiXinRefund_Amount getAmount() { + return amount; + } + + public void setAmount(WeiXinRefund_Amount amount) { + this.amount = amount; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/req/WeiXinRefund_Amount.java b/src/main/java/com/lunhan/water/common/wechat/req/WeiXinRefund_Amount.java new file mode 100644 index 0000000..051a7de --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/req/WeiXinRefund_Amount.java @@ -0,0 +1,42 @@ +package com.lunhan.water.common.wechat.req; + +public class WeiXinRefund_Amount { + /** + * 【退款金额】 退款金额,单位为分,只能为整数,不能超过原订单支付金额 + */ + private Integer refund; + + /** + * 【原订单金额】 原支付交易的订单总金额,单位为分,只能为整数 + */ + private Integer total; + + /** + * 【退款币种】 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY + */ + private String currency; + + public Integer getRefund() { + return refund; + } + + public void setRefund(Integer refund) { + this.refund = refund; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/res/ResWechatPrePay.java b/src/main/java/com/lunhan/water/common/wechat/res/ResWechatPrePay.java new file mode 100644 index 0000000..38bbae5 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/res/ResWechatPrePay.java @@ -0,0 +1,16 @@ +package com.lunhan.water.common.wechat.res; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ResWechatPrePay { + @JsonProperty("prepay_id") + private String prepayId; + + public String getPrepayId() { + return prepayId; + } + + public void setPrepayId(String prepayId) { + this.prepayId = prepayId; + } +} diff --git a/src/main/java/com/lunhan/water/common/wechat/res/ResWeiXinRefund.java b/src/main/java/com/lunhan/water/common/wechat/res/ResWeiXinRefund.java new file mode 100644 index 0000000..800b221 --- /dev/null +++ b/src/main/java/com/lunhan/water/common/wechat/res/ResWeiXinRefund.java @@ -0,0 +1,116 @@ +package com.lunhan.water.common.wechat.res; + +public class ResWeiXinRefund { + /** + * 【微信支付退款号】 微信支付退款号 + */ + private String refund_id; + + /** + * 【商户退款单号】 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔 + */ + private String out_refund_no; + + /** + * 【微信支付订单号】 微信支付交易订单号 + */ + private String transaction_id; + + /** + * 【退款渠道】 退款渠道 ORIGINAL:原路退款,BALANCE:退回到余额,OTHER_BALANCE:原账户异常退到其他余额账户,OTHER_BANKCARD:原银行卡异常退到其他银行卡 + */ + private String channel; + + /** + * 【退款入账账户】 取当前退款单的退款入账方,有以下几种情况: + * 1)退回银行卡:{银行名称}{卡类型}{卡尾号} + * 2)退回支付用户零钱:支付用户零钱 + * 3)退还商户:商户基本账户商户结算银行账户 + * 4)退回支付用户零钱通:支付用户零钱通 + */ + private String user_received_account; + + /** + * 【退款创建时间】 退款受理时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒 + */ + private String create_time; + + /** + * 【退款成功时间】 退款成功时间,退款状态status为SUCCESS(退款成功)时,返回该字段。遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日13点29分35秒 + */ + private String success_time; + + /** + * 【退款状态】 退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台(pay.weixin.qq.com)-交易中心,手动处理此笔退款。 + * 可选取值: + * SUCCESS: 退款成功 + * CLOSED: 退款关闭 + * PROCESSING: 退款处理中 + * ABNORMAL: 退款异常 + */ + private String status; + + public String getRefund_id() { + return refund_id; + } + + public void setRefund_id(String refund_id) { + this.refund_id = refund_id; + } + + public String getOut_refund_no() { + return out_refund_no; + } + + public void setOut_refund_no(String out_refund_no) { + this.out_refund_no = out_refund_no; + } + + public String getTransaction_id() { + return transaction_id; + } + + public void setTransaction_id(String transaction_id) { + this.transaction_id = transaction_id; + } + + public String getChannel() { + return channel; + } + + public void setChannel(String channel) { + this.channel = channel; + } + + public String getUser_received_account() { + return user_received_account; + } + + public void setUser_received_account(String user_received_account) { + this.user_received_account = user_received_account; + } + + public String getCreate_time() { + return create_time; + } + + public void setCreate_time(String create_time) { + this.create_time = create_time; + } + + public String getSuccess_time() { + return success_time; + } + + public void setSuccess_time(String success_time) { + this.success_time = success_time; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EBusinessType.java b/src/main/java/com/lunhan/water/entity/enums/EBusinessType.java new file mode 100644 index 0000000..59d980a --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/EBusinessType.java @@ -0,0 +1,68 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +public enum EBusinessType { + /** + * 充值=1, + */ + RECHARGE("充值", 1), + /** + * 送水=2, + */ + WATER_DELIVERY("送水", 2), + + /** + * 消费=3消费, + */ + CONSUMPTION("消费", 3), + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EBusinessType(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static EBusinessType getByValue(Integer value) { + return Arrays.stream(EBusinessType.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "EBusinessType{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/ECapitalChange.java b/src/main/java/com/lunhan/water/entity/enums/ECapitalChange.java new file mode 100644 index 0000000..227d8bf --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/ECapitalChange.java @@ -0,0 +1,69 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 资金变动枚举 + */ +public enum ECapitalChange { + COUNTER_Recharge("充值", "data-center-service", 100), + MOBILE_Recharge("充值", "移动端充值", 101), + WATER_BILL_COUNTER_PAY("消费", "购水消费", 200), +// WATER_BILL_MOBILE_PAY("水费缴费", "水费移动端缴费", 201) + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举名称 + */ + private String name; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + public String getName() { + return name; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + ECapitalChange(String name, String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + */ + public static ECapitalChange getByValue(Integer value) { + return Arrays.stream(ECapitalChange.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "ECapitalChange{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EPayState.java b/src/main/java/com/lunhan/water/entity/enums/EPayState.java new file mode 100644 index 0000000..0f228ef --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/EPayState.java @@ -0,0 +1,92 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 支付状态枚举 待支付=10,支付中=20,支付成功=200,部分退款=220,支付失败=300,支付取消=400,全额退款=420 + */ +public enum EPayState { + /** + * 待支付=10, + */ + WAITING("待支付", 10), + + /** + * 支付中=20, + */ + PAYING("支付中", 20), + + /** + * 支付成功=200, + */ + SUCCESS("支付成功", 200), + + /** + * 部分退款=220, + */ + PART_REFUND("部分退款", 220), + + /** + * 支付失败=300, + */ + FAILED("支付失败", 300), + + /** + * 支付取消=400, + */ + CANCELED("支付取消", 400), + + /** + * 全额退款=420, + */ + REFUND("全额退款", 420), + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EPayState(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static EPayState getByValue(Integer value) { + return Arrays.stream(EPayState.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "EPayState{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EPayType.java b/src/main/java/com/lunhan/water/entity/enums/EPayType.java new file mode 100644 index 0000000..bbf8a63 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/EPayType.java @@ -0,0 +1,58 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +public enum EPayType { + CASH_PAY("现金", 1), + WX_PAY("微信", 2), + ALI_PAY("支付宝", 3), + BALANCE("余额", 4) + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EPayType(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + */ + public static EPayType getByValue(Integer value) { + return Arrays.stream(EPayType.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "EPayType{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EPayWay.java b/src/main/java/com/lunhan/water/entity/enums/EPayWay.java new file mode 100644 index 0000000..4fcb412 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/EPayWay.java @@ -0,0 +1,79 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +public enum EPayWay { + /** + * App=1, + */ + APP("App", 1), + /** + * Web=2, + */ + WEB("Web", 2), + /** + * H5=3, + */ + H5("H5", 3), + /** + * SDK=4, + */ + SDK("SDK", 4), + /** + * 扫码(静态)=5, + */ + SCAN_STATIC("扫码(静态)", 5), + /** + * 扫码(动态)=6, + */ + SCAN_DYNAMIC("扫码(动态)", 6), + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EPayWay(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static EPayWay getByValue(Integer value) { + return Arrays.stream(EPayWay.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "EPayWay{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EPaymentChannel.java b/src/main/java/com/lunhan/water/entity/enums/EPaymentChannel.java new file mode 100644 index 0000000..fb5d793 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/EPaymentChannel.java @@ -0,0 +1,63 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +public enum EPaymentChannel { + /** + * 微信=10010, + */ + WE_CHAT("微信", 10010), + /** + * 支付宝=10020, + */ + ALI_PAY("支付宝", 10020), + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + EPaymentChannel(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static EPaymentChannel getByValue(Integer value) { + return Arrays.stream(EPaymentChannel.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "EPaymentChannel{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/ERechargeType.java b/src/main/java/com/lunhan/water/entity/enums/ERechargeType.java new file mode 100644 index 0000000..564033d --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/ERechargeType.java @@ -0,0 +1,59 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 充值类型 + */ +public enum ERechargeType { + COUNTER("柜台业务", 1), + MOBILE("移动端", 2) + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + ERechargeType(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + */ + public static ERechargeType getByValue(Integer value) { + return Arrays.stream(ERechargeType.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "ERechargeType{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/ERefundState.java b/src/main/java/com/lunhan/water/entity/enums/ERefundState.java new file mode 100644 index 0000000..0bb7c6a --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/enums/ERefundState.java @@ -0,0 +1,82 @@ +package com.lunhan.water.entity.enums; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 退款状态枚举 待退款=10,退款中=20,退款成功=200,退款失败=300,退款取消=400 + */ +public enum ERefundState { + /** + * 待退款=10, + */ + WAITING("待退款", 10), + + /** + * 退款中=20, + */ + REFUNDING("退款中", 20), + + /** + * 退款成功=200, + */ + SUCCESS("退款成功", 200), + + /** + * 退款失败=300, + */ + FAILED("退款失败", 300), + + /** + * 退款取消=400, + */ + CANCELED("退款取消", 400) + ; + + /** + * 枚举描述 + */ + private String desc; + /** + * 枚举值 + */ + private Integer value; + + public Integer getValue() { + return value; + } + public String getDesc() { + return desc; + } + + /** + * 构造方法 + * @param desc 枚举描述 + * @param value 枚举值 + */ + ERefundState(String desc, Integer value) { + this.desc = desc; + this.value = value; + } + + /** + * 根据值获取枚举 + * + * @param value 枚举值 + * @return + */ + public static ERefundState getByValue(Integer value) { + return Arrays.stream(ERefundState.values()) + .filter(e -> Objects.equals(e.getValue(), value)) + .findAny() + .orElse(null); + } + + @Override + public String toString() { + return "ERefundState{" + + "desc='" + desc + '\'' + + ", value=" + value + + '}'; + } +} diff --git a/src/main/java/com/lunhan/water/entity/enums/EUserType.java b/src/main/java/com/lunhan/water/entity/enums/EUserType.java index 8f8f763..b9b1ee8 100644 --- a/src/main/java/com/lunhan/water/entity/enums/EUserType.java +++ b/src/main/java/com/lunhan/water/entity/enums/EUserType.java @@ -15,7 +15,15 @@ * 普通管理员=2, */ ADMIN_USER("普通管理员", 2), - + /** + * 普通用户=3, + */ + USER("普通用户", 3), + /** + * 客户会员=4, + */ + CUSTOMER_USER("客户会员", 4), + ; ; private String desc;//枚举描述 diff --git a/src/main/java/com/lunhan/water/entity/request/pay/AlipayBean.java b/src/main/java/com/lunhan/water/entity/request/pay/AlipayBean.java new file mode 100644 index 0000000..5f6b8f3 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/pay/AlipayBean.java @@ -0,0 +1,33 @@ +package com.lunhan.water.entity.request.pay; + +import lombok.Data; + +@Data +public class AlipayBean { + /** + * 商户订单号,必填 + * + */ + private String out_trade_no; + /** + * 订单名称,必填 + */ + private String subject; + /** + * 付款金额,必填 + * 根据支付宝接口协议,必须使用下划线 + */ + private String total_amount; + /** + * 商品描述,可空 + */ + private String body; + /** + * 超时时间参数 + */ + private String timeout_express= "15m"; + /** + * 产品编号 + */ + private String product_code= "FAST_INSTANT_TRADE_PAY"; +} diff --git a/src/main/java/com/lunhan/water/entity/request/pay/ReqCreatePay.java b/src/main/java/com/lunhan/water/entity/request/pay/ReqCreatePay.java new file mode 100644 index 0000000..2d562bf --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/pay/ReqCreatePay.java @@ -0,0 +1,35 @@ +package com.lunhan.water.entity.request.pay; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReqCreatePay { + /** + * 业务类型 EBusinessType(1充值 2送水 3购水) + */ + private Integer businessType; + /** + * 业务编号 + */ + private String businessNo; + /** + * 微信用户标识openid + */ + private String wechatOpenid; + + /** + * 交易金额 + */ + private BigDecimal tradeAmount; + /** + * 业务描述(当商户支持时,此项为支付时展示的商品描述) + */ + private String businessComment; + + /** + * 设备编号 + */ + private String facilityCode; +} diff --git a/src/main/java/com/lunhan/water/entity/request/pay/ReqOrderPay.java b/src/main/java/com/lunhan/water/entity/request/pay/ReqOrderPay.java new file mode 100644 index 0000000..0cbe4ce --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/pay/ReqOrderPay.java @@ -0,0 +1,25 @@ +package com.lunhan.water.entity.request.pay; + +import lombok.Data; + +import java.math.BigDecimal; +@Data +public class ReqOrderPay { + /** + * 订单号 + */ + private String businessNo; + /** + * 业务类型 EBusinessType(1充值 2送水 3购水) + */ + private Integer businessType; + /** + * 实际支付金额 + */ + private BigDecimal payAmount; + /** + * 业务描述(当商户支持时,此项为支付时展示的商品描述) + */ + private String businessComment; + +} diff --git a/src/main/java/com/lunhan/water/entity/request/pay/ReqPayRefund.java b/src/main/java/com/lunhan/water/entity/request/pay/ReqPayRefund.java new file mode 100644 index 0000000..5ff9166 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/pay/ReqPayRefund.java @@ -0,0 +1,25 @@ +package com.lunhan.water.entity.request.pay; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ReqPayRefund { + /** + * 业务类型 EBusinessType + */ + private Integer businessType; + /** + * 业务编号 + */ + private String businessNo; + /** + * 退款金额 + */ + private BigDecimal refundAmount; + /** + * 业务描述(当商户支持时,此项为展示的退款原因) + */ + private String businessComment; +} diff --git a/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqCreatePaymentRecords.java b/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqCreatePaymentRecords.java new file mode 100644 index 0000000..d590e62 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqCreatePaymentRecords.java @@ -0,0 +1,70 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.paymentrecords; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * PaymentRecords + * @author lin.liu + */ +@Data +public class ReqCreatePaymentRecords { + /** + * 用户id + */ + private Long userId; + /** + * 用户名称 + */ + private String userName; + /** + * 设备编号 + */ + private String facilityCode; + /** + * 消费金额 + */ + private BigDecimal paymentAmount; + /** + * 本次出水量(单位ml) + */ + private BigDecimal waterAmount; + /** + * 本次出水秒数 + */ + private BigDecimal waterSeconds; + /** + * 备注 + */ + private String comment; + /** + * 缴费状态 EBillPayStatus + */ + private Integer payStatus; + /** + * 支付时间 + */ + private String payTime; +} diff --git a/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqModifyPaymentRecords.java b/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqModifyPaymentRecords.java new file mode 100644 index 0000000..b694df4 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/paymentrecords/ReqModifyPaymentRecords.java @@ -0,0 +1,74 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.paymentrecords; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * PaymentRecords + * @author lin.liu + */ +@Data +public class ReqModifyPaymentRecords { + /** + * 主键 + */ + private Long id; + /** + * 用户id + */ + private Long userId; + /** + * 用户名称 + */ + private String userName; + /** + * 设备编号 + */ + private String facilityCode; + /** + * 消费金额 + */ + private BigDecimal paymentAmount; + /** + * 本次出水量(单位ml) + */ + private BigDecimal waterAmount; + /** + * 本次出水秒数 + */ + private BigDecimal waterSeconds; + /** + * 备注 + */ + private String comment; + /** + * 缴费状态 EBillPayStatus + */ + private Integer payStatus; + /** + * 支付时间 + */ + private String payTime; +} diff --git a/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqCreateRechargeOrder.java b/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqCreateRechargeOrder.java new file mode 100644 index 0000000..4c09681 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqCreateRechargeOrder.java @@ -0,0 +1,70 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.rechargeorder; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Data +public class ReqCreateRechargeOrder { + /** + * 用户id + */ + private Long userId; + /** + * 订单编号 + */ + private String orderNo; + /** + * 订单金额 + */ + private BigDecimal orderAmount; + /** + * 折扣金额 + */ + private BigDecimal discountAmount; + /** + * 实际支付金额 + */ + private BigDecimal paymentAmount; + /** + * 支付类型 1现金 2微信 3支付宝 4余额 + */ + private Integer payType; + /** + * 支付时间 + */ + private Long payTime; + /** + * 状态10待支付 20支付中 200完成支付 300支付失败 + */ + private Integer payState; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqModifyRechargeOrder.java b/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqModifyRechargeOrder.java new file mode 100644 index 0000000..39a47d8 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/rechargeorder/ReqModifyRechargeOrder.java @@ -0,0 +1,74 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.rechargeorder; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Data +public class ReqModifyRechargeOrder { + /** + * 主键id + */ + private Long id; + /** + * 用户id + */ + private Long userId; + /** + * 订单编号 + */ + private String orderNo; + /** + * 订单金额 + */ + private BigDecimal orderAmount; + /** + * 折扣金额 + */ + private BigDecimal discountAmount; + /** + * 实际支付金额 + */ + private BigDecimal paymentAmount; + /** + * 支付类型 1现金 2微信 3支付宝 4余额 + */ + private Integer payType; + /** + * 支付时间 + */ + private Long payTime; + /** + * 状态10待支付 20支付中 200完成支付 300支付失败 + */ + private Integer payState; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqCreateRechargeRecords.java b/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqCreateRechargeRecords.java new file mode 100644 index 0000000..29c1e1a --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqCreateRechargeRecords.java @@ -0,0 +1,58 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.rechargerecords; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 充值记录 + * @author lin.liu + */ +@Data +public class ReqCreateRechargeRecords { + /** + * 充值订单号 + */ + private String rechargeOrder; + /** + * 充值类型 + */ + private String rechargeType; + /** + * 支付方式 + */ + private String paymentMethod; + /** + * 充值金额 + */ + private BigDecimal rechargeAmount; + /** + * 充值状态(0=未充值,1=已充值) + */ + private Integer rechargeStatus; + /** + * 备注 + */ + private String comment; +} diff --git a/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqModifyRechargeRecords.java b/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqModifyRechargeRecords.java new file mode 100644 index 0000000..b91eba2 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/rechargerecords/ReqModifyRechargeRecords.java @@ -0,0 +1,62 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.rechargerecords; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 充值记录 + * @author lin.liu + */ +@Data +public class ReqModifyRechargeRecords { + /** + * 主键 + */ + private Long id; + /** + * 充值订单号 + */ + private String rechargeOrder; + /** + * 充值类型 + */ + private String rechargeType; + /** + * 支付方式 + */ + private String paymentMethod; + /** + * 充值金额 + */ + private BigDecimal rechargeAmount; + /** + * 充值状态(0=未充值,1=已充值) + */ + private Integer rechargeStatus; + /** + * 备注 + */ + private String comment; +} diff --git a/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqCreateRefundRecord.java b/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqCreateRefundRecord.java new file mode 100644 index 0000000..9fe254b --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqCreateRefundRecord.java @@ -0,0 +1,138 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.refundrecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 退款记录 + * @author lin.liu + */ +@Data +public class ReqCreateRefundRecord { + /** + * 退款流水号 + */ + private String refundNo; + /** + * 原交易流水号 + */ + private String tradeNo; + /** + * 原交易总金额 + */ + private BigDecimal tradeAmount; + /** + * 本次退款金额 + */ + private BigDecimal refundAmount; + /** + * 业务编号 + */ + private String businessNo; + /** + * 业务描述 + */ + private String businessComment; + /** + * 业务类型 EBusinessType + */ + private Integer businessType; + /** + * 支付渠道 + */ + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + private Integer payWay; + /** + * 支付方式名称 + */ + private String payWayName; + /** + * 回调地址配置 + */ + private String callbackUrl; + /** + * 第三方交易流水号 + */ + private String thirdRefundNo; + /** + * 业务回调地址配置 + */ + private String businessCallbackUrl; + /** + * 退款发起时间 + */ + private Long submitTime; + /** + * 退款发起时间展示 + */ + private String submitTimeView; + /** + * 退款通知时间 + */ + private Long notifyTime; + /** + * 退款通知时间展示 + */ + private String notifyTimeView; + /** + * 退款成功时间 + */ + private Long refundTime; + /** + * 退款成功时间展示 + */ + private String refundTimeView; + /** + * 实际退款金额 + */ + private BigDecimal thirdRefundAmount; + /** + * 退款关闭时间 + */ + private Long closedTime; + /** + * 退款关闭时间展示 + */ + private String closedTimeView; + /** + * 退款关闭说明 + */ + private String closedComment; + /** + * 备注 + */ + private String comment; + /** + * 状态(ERefundState) 待退款=10,退款中=20,退款成功=200,退款失败=300,退款取消=400 + */ + private Integer refundState; +} diff --git a/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqModifyRefundRecord.java b/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqModifyRefundRecord.java new file mode 100644 index 0000000..abb9f02 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/refundrecord/ReqModifyRefundRecord.java @@ -0,0 +1,142 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.refundrecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 退款记录 + * @author lin.liu + */ +@Data +public class ReqModifyRefundRecord { + /** + * 自增id + */ + private Long id; + /** + * 退款流水号 + */ + private String refundNo; + /** + * 原交易流水号 + */ + private String tradeNo; + /** + * 原交易总金额 + */ + private BigDecimal tradeAmount; + /** + * 本次退款金额 + */ + private BigDecimal refundAmount; + /** + * 业务编号 + */ + private String businessNo; + /** + * 业务描述 + */ + private String businessComment; + /** + * 业务类型 EBusinessType + */ + private Integer businessType; + /** + * 支付渠道 + */ + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + private Integer payWay; + /** + * 支付方式名称 + */ + private String payWayName; + /** + * 回调地址配置 + */ + private String callbackUrl; + /** + * 第三方交易流水号 + */ + private String thirdRefundNo; + /** + * 业务回调地址配置 + */ + private String businessCallbackUrl; + /** + * 退款发起时间 + */ + private Long submitTime; + /** + * 退款发起时间展示 + */ + private String submitTimeView; + /** + * 退款通知时间 + */ + private Long notifyTime; + /** + * 退款通知时间展示 + */ + private String notifyTimeView; + /** + * 退款成功时间 + */ + private Long refundTime; + /** + * 退款成功时间展示 + */ + private String refundTimeView; + /** + * 实际退款金额 + */ + private BigDecimal thirdRefundAmount; + /** + * 退款关闭时间 + */ + private Long closedTime; + /** + * 退款关闭时间展示 + */ + private String closedTimeView; + /** + * 退款关闭说明 + */ + private String closedComment; + /** + * 备注 + */ + private String comment; + /** + * 状态(ERefundState) 待退款=10,退款中=20,退款成功=200,退款失败=300,退款取消=400 + */ + private Integer refundState; +} diff --git a/src/main/java/com/lunhan/water/entity/request/sysregion/ReqCreateSysRegion.java b/src/main/java/com/lunhan/water/entity/request/sysregion/ReqCreateSysRegion.java new file mode 100644 index 0000000..314ca17 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/sysregion/ReqCreateSysRegion.java @@ -0,0 +1,86 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.sysregion; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 系统行政地区 + * @author lin.liu + */ +@Data +public class ReqCreateSysRegion { + /** + * 行政代码 + */ + private String code; + /** + * 上级行政代码 + */ + private String parentCode; + /** + * 名称 + */ + private String name; + /** + * 简称 + */ + private String shortName; + /** + * 邮政编码 + */ + private String zipCode; + /** + * 区号 + */ + private String cityCode; + /** + * 层级 + */ + private Integer level; + /** + * 拼音 + */ + private String pinYin; + /** + * 拼音简写 + */ + private String pinYinShort; + /** + * 经度 + */ + private BigDecimal lng; + /** + * 维度 + */ + private BigDecimal lat; + /** + * 排序 + */ + private Integer sort; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/lunhan/water/entity/request/sysregion/ReqModifySysRegion.java b/src/main/java/com/lunhan/water/entity/request/sysregion/ReqModifySysRegion.java new file mode 100644 index 0000000..7e7ccd6 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/sysregion/ReqModifySysRegion.java @@ -0,0 +1,90 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.sysregion; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 系统行政地区 + * @author lin.liu + */ +@Data +public class ReqModifySysRegion { + /** + * 主键Id + */ + private Long id; + /** + * 行政代码 + */ + private String code; + /** + * 上级行政代码 + */ + private String parentCode; + /** + * 名称 + */ + private String name; + /** + * 简称 + */ + private String shortName; + /** + * 邮政编码 + */ + private String zipCode; + /** + * 区号 + */ + private String cityCode; + /** + * 层级 + */ + private Integer level; + /** + * 拼音 + */ + private String pinYin; + /** + * 拼音简写 + */ + private String pinYinShort; + /** + * 经度 + */ + private BigDecimal lng; + /** + * 维度 + */ + private BigDecimal lat; + /** + * 排序 + */ + private Integer sort; + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/lunhan/water/entity/request/traderecord/ReqCreateTradeRecord.java b/src/main/java/com/lunhan/water/entity/request/traderecord/ReqCreateTradeRecord.java new file mode 100644 index 0000000..67c1979 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/traderecord/ReqCreateTradeRecord.java @@ -0,0 +1,138 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.traderecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 支付记录 + * @author lin.liu + */ +@Data +public class ReqCreateTradeRecord { + /** + * 交易流水号 + */ + private String tradeNo; + /** + * 交易金额 + */ + private BigDecimal tradeAmount; + /** + * 业务编号 + */ + private String businessNo; + /** + * 业务描述(如果商户支持,此项将作为支付时展示的商品名) + */ + private String businessComment; + /** + * 业务类型 EBusinessType + */ + private Integer businessType; + /** + * 支付渠道 + */ + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + private Integer payWay; + /** + * 支付方式名称 + */ + private String payWayName; + /** + * 第三方支付回调地址 + */ + private String callbackUrl; + /** + * 第三方交易流水号 + */ + private String thirdTradeNo; + /** + * 业务回调地址 + */ + private String businessCallbackUrl; + /** + * 交易发起时间 + */ + private Long submitTime; + /** + * 交易发起时间展示 + */ + private String submitTimeView; + /** + * 交易通知时间 + */ + private Long notifyTime; + /** + * 交易通知时间展示 + */ + private String notifyTimeView; + /** + * 交易成功时间 + */ + private Long paidTime; + /** + * 交易成功时间展示 + */ + private String paidTimeView; + /** + * 实际支付金额 + */ + private BigDecimal paidAmount; + /** + * 交易关闭时间 + */ + private Long closedTime; + /** + * 交易关闭时间展示 + */ + private String closedTimeView; + /** + * 交易关闭说明 + */ + private String closedComment; + /** + * 备注 + */ + private String comment; + /** + * 状态(EPayState) 待支付=10,支付中=20,支付成功=200,部分退款=220,支付失败=300,支付取消=400,全额退款=420 + */ + private Integer payState; + /** + * 是否能退款 不可退款=0,可退款=1 + */ + private Integer canRefund; + /** + * 已退款金额 + */ + private BigDecimal refundAmount; +} diff --git a/src/main/java/com/lunhan/water/entity/request/traderecord/ReqModifyTradeRecord.java b/src/main/java/com/lunhan/water/entity/request/traderecord/ReqModifyTradeRecord.java new file mode 100644 index 0000000..5d6c51e --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/traderecord/ReqModifyTradeRecord.java @@ -0,0 +1,142 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.traderecord; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 支付记录 + * @author lin.liu + */ +@Data +public class ReqModifyTradeRecord { + /** + * 自增id + */ + private Long id; + /** + * 交易流水号 + */ + private String tradeNo; + /** + * 交易金额 + */ + private BigDecimal tradeAmount; + /** + * 业务编号 + */ + private String businessNo; + /** + * 业务描述(如果商户支持,此项将作为支付时展示的商品名) + */ + private String businessComment; + /** + * 业务类型 EBusinessType + */ + private Integer businessType; + /** + * 支付渠道 + */ + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + private Integer payWay; + /** + * 支付方式名称 + */ + private String payWayName; + /** + * 第三方支付回调地址 + */ + private String callbackUrl; + /** + * 第三方交易流水号 + */ + private String thirdTradeNo; + /** + * 业务回调地址 + */ + private String businessCallbackUrl; + /** + * 交易发起时间 + */ + private Long submitTime; + /** + * 交易发起时间展示 + */ + private String submitTimeView; + /** + * 交易通知时间 + */ + private Long notifyTime; + /** + * 交易通知时间展示 + */ + private String notifyTimeView; + /** + * 交易成功时间 + */ + private Long paidTime; + /** + * 交易成功时间展示 + */ + private String paidTimeView; + /** + * 实际支付金额 + */ + private BigDecimal paidAmount; + /** + * 交易关闭时间 + */ + private Long closedTime; + /** + * 交易关闭时间展示 + */ + private String closedTimeView; + /** + * 交易关闭说明 + */ + private String closedComment; + /** + * 备注 + */ + private String comment; + /** + * 状态(EPayState) 待支付=10,支付中=20,支付成功=200,部分退款=220,支付失败=300,支付取消=400,全额退款=420 + */ + private Integer payState; + /** + * 是否能退款 不可退款=0,可退款=1 + */ + private Integer canRefund; + /** + * 已退款金额 + */ + private BigDecimal refundAmount; +} diff --git a/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqCreateUserCapitalChange.java b/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqCreateUserCapitalChange.java new file mode 100644 index 0000000..4751715 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqCreateUserCapitalChange.java @@ -0,0 +1,74 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.usercapitalchange; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Data +public class ReqCreateUserCapitalChange { + /** + * 所属用户 + */ + private Long userId; + /** + * 所属用户户号 + */ + private String userCode; + /** + * 变动业务 ECapitalChange + */ + private Integer business; + /** + * 变动业务名称 + */ + private String businessName; + /** + * 业务唯一标识 + */ + private String businessCode; + /** + * 变动前余额 + */ + private BigDecimal beforeMoney; + /** + * 变动金额 + */ + private BigDecimal changeMoney; + /** + * 变动后余额 + */ + private BigDecimal afterMoney; + /** + * 描述 + */ + private String description; + /** + * 用户所属水卡编号 + */ + private String userCardNumber; +} diff --git a/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqModifyUserCapitalChange.java b/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqModifyUserCapitalChange.java new file mode 100644 index 0000000..bb59dfd --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/usercapitalchange/ReqModifyUserCapitalChange.java @@ -0,0 +1,78 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.usercapitalchange; + +import lombok.Data; +import java.math.BigDecimal; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Data +public class ReqModifyUserCapitalChange { + /** + * 主键 + */ + private Long id; + /** + * 所属用户 + */ + private Long userId; + /** + * 所属用户户号 + */ + private String userCode; + /** + * 变动业务 ECapitalChange + */ + private Integer business; + /** + * 变动业务名称 + */ + private String businessName; + /** + * 业务唯一标识 + */ + private String businessCode; + /** + * 变动前余额 + */ + private BigDecimal beforeMoney; + /** + * 变动金额 + */ + private BigDecimal changeMoney; + /** + * 变动后余额 + */ + private BigDecimal afterMoney; + /** + * 描述 + */ + private String description; + /** + * 用户所属水卡编号 + */ + private String userCardNumber; +} diff --git a/src/main/java/com/lunhan/water/entity/request/userlogin/ReqCreateUserLogin.java b/src/main/java/com/lunhan/water/entity/request/userlogin/ReqCreateUserLogin.java new file mode 100644 index 0000000..60066bf --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/userlogin/ReqCreateUserLogin.java @@ -0,0 +1,65 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.userlogin; + +import lombok.Data; + +/** + * UserLogin + * @author lin.liu + */ +@Data +public class ReqCreateUserLogin { + /** + * 用户名 + */ + private String userName; + /** + * 密码 + */ + private String password; + /** + * 支付密码 + */ + private String paymentPassword; + /** + * 微信open id + */ + private String wxOpenId; + /** + * 昵称 + */ + private String nickName; + /** + * 联系电话 + */ + private String phone; + /** + * 头像地址 + */ + private String headImg; + /** + * 备注 + */ + private String comment; +} diff --git a/src/main/java/com/lunhan/water/entity/request/userlogin/ReqModifyUserLogin.java b/src/main/java/com/lunhan/water/entity/request/userlogin/ReqModifyUserLogin.java new file mode 100644 index 0000000..a60d744 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/request/userlogin/ReqModifyUserLogin.java @@ -0,0 +1,73 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.entity.request.userlogin; + +import lombok.Data; + +/** + * UserLogin + * @author lin.liu + */ +@Data +public class ReqModifyUserLogin { + /** + * 主键 + */ + private Long id; + /** + * 用户名 + */ + private String userName; + /** + * 密码 + */ + private String password; + /** + * 支付密码 + */ + private String paymentPassword; + /** + * 微信open id + */ + private String wxOpenId; + /** + * 昵称 + */ + private String nickName; + /** + * 联系电话 + */ + private String phone; + /** + * 头像地址 + */ + private String headImg; + /** + * 状态 EState + */ + private Integer status; + /** + * 备注 + */ + private String comment; +} diff --git a/src/main/java/com/lunhan/water/entity/response/region/ResBasicRegionTree.java b/src/main/java/com/lunhan/water/entity/response/region/ResBasicRegionTree.java new file mode 100644 index 0000000..3819636 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/response/region/ResBasicRegionTree.java @@ -0,0 +1,127 @@ +package com.lunhan.water.entity.response.region; + +import java.util.List; + +public class ResBasicRegionTree { + /** + * 主键id + */ + private Long id; + + /** + * 区域编码 + */ + private String code; + /** + * 父级编码 + */ + private String parentCode; + /** + * 名称 + */ + private String name; + /** + * 简称 + */ + private String shortName; + /** + * 层级 + */ + private Integer level; + /** + * 拼音 + */ + private String pinYin; + /** + * 拼音简写 + */ + private String pinYinShort; + /** + * 父级ID + */ + private String parentId; + /** + * 子级列表 + */ + private List<ResBasicRegionTree> children; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getParentCode() { + return parentCode; + } + + public void setParentCode(String parentCode) { + this.parentCode = parentCode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public Integer getLevel() { + return level; + } + + public void setLevel(Integer level) { + this.level = level; + } + + public String getPinYin() { + return pinYin; + } + + public void setPinYin(String pinYin) { + this.pinYin = pinYin; + } + + public String getPinYinShort() { + return pinYinShort; + } + + public void setPinYinShort(String pinYinShort) { + this.pinYinShort = pinYinShort; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public List<ResBasicRegionTree> getChildren() { + return children; + } + + public void setChildren(List<ResBasicRegionTree> children) { + this.children = children; + } +} diff --git a/src/main/java/com/lunhan/water/entity/response/region/ResRegionTree.java b/src/main/java/com/lunhan/water/entity/response/region/ResRegionTree.java new file mode 100644 index 0000000..c77fada --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/response/region/ResRegionTree.java @@ -0,0 +1,44 @@ +package com.lunhan.water.entity.response.region; + +import lombok.Data; + +import java.util.List; +@Data +public class ResRegionTree { + /** + * id + */ + private Long id; + /** + * 编码 + */ + private String code; + /** + * 名称 + */ + private String name; + /** + * 简称 + */ + private String shortName; + /** + * 层级 + */ + private Integer level; + /** + * 拼音 + */ + private String pinYin; + /** + * 拼音简写 + */ + private String pinYinShort; + /** + * 父级编码 + */ + private String parentCode; + /** + * 子级列表 + */ + private List<ResRegionTree> children; +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchPaymentRecords.java b/src/main/java/com/lunhan/water/entity/search/SearchPaymentRecords.java new file mode 100644 index 0000000..63408e6 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchPaymentRecords.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * PaymentRecords + * @author lin.liu + */ +@Data +public class SearchPaymentRecords extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchRechargeOrder.java b/src/main/java/com/lunhan/water/entity/search/SearchRechargeOrder.java new file mode 100644 index 0000000..d71eb27 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchRechargeOrder.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Data +public class SearchRechargeOrder extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchRechargeRecords.java b/src/main/java/com/lunhan/water/entity/search/SearchRechargeRecords.java new file mode 100644 index 0000000..46dd447 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchRechargeRecords.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 充值记录 + * @author lin.liu + */ +@Data +public class SearchRechargeRecords extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchRefundRecord.java b/src/main/java/com/lunhan/water/entity/search/SearchRefundRecord.java new file mode 100644 index 0000000..45e1535 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchRefundRecord.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 退款记录 + * @author lin.liu + */ +@Data +public class SearchRefundRecord extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchSysRegion.java b/src/main/java/com/lunhan/water/entity/search/SearchSysRegion.java new file mode 100644 index 0000000..e95e895 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchSysRegion.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 系统行政地区 + * @author lin.liu + */ +@Data +public class SearchSysRegion extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchTradeRecord.java b/src/main/java/com/lunhan/water/entity/search/SearchTradeRecord.java new file mode 100644 index 0000000..21fa74c --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchTradeRecord.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 支付记录 + * @author lin.liu + */ +@Data +public class SearchTradeRecord extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchUserCapitalChange.java b/src/main/java/com/lunhan/water/entity/search/SearchUserCapitalChange.java new file mode 100644 index 0000000..f052990 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchUserCapitalChange.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Data +public class SearchUserCapitalChange extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/search/SearchUserLogin.java b/src/main/java/com/lunhan/water/entity/search/SearchUserLogin.java new file mode 100644 index 0000000..8cf9d32 --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/search/SearchUserLogin.java @@ -0,0 +1,14 @@ +package com.lunhan.water.entity.search; + +import lombok.Data; + +import com.lunhan.water.entity.dto.SearchBasicDTO; + +/** + * UserLogin + * @author lin.liu + */ +@Data +public class SearchUserLogin extends SearchBasicDTO { + +} diff --git a/src/main/java/com/lunhan/water/entity/weixin/AccessTokenDto.java b/src/main/java/com/lunhan/water/entity/weixin/AccessTokenDto.java new file mode 100644 index 0000000..662535a --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/weixin/AccessTokenDto.java @@ -0,0 +1,12 @@ +package com.lunhan.water.entity.weixin; + +import lombok.Data; + +@Data +public class AccessTokenDto { + private String access_token; + private String expires_in; + private String refresh_token; + private String openid; + private String scope; +} diff --git a/src/main/java/com/lunhan/water/entity/weixin/WeiXinUserDto.java b/src/main/java/com/lunhan/water/entity/weixin/WeiXinUserDto.java new file mode 100644 index 0000000..d83820e --- /dev/null +++ b/src/main/java/com/lunhan/water/entity/weixin/WeiXinUserDto.java @@ -0,0 +1,114 @@ +package com.lunhan.water.entity.weixin; + +import java.util.List; + +public class WeiXinUserDto { + /** + * 用户的唯一标识 + */ + private String openId; + /** + * 用户昵称 + */ + private String nickName; + /** + * 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 + */ + private String sex; + /** + * 用户个人资料填写的省份 + */ + private String province; + /** + * 普通用户个人资料填写的城市 + */ + private String city; + /** + * 国家,如中国为CN + */ + private String country; + /** + * 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 + */ + private String headImgUrl; + /** + * 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) + */ + private List<String> privilege; + /** + * 只有在用户将公众号绑定到微信开放平台账号后,才会出现该字段。 + */ + private String unionId; + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getProvince() { + return province; + } + + public void setProvince(String province) { + this.province = province; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getHeadImgUrl() { + return headImgUrl; + } + + public void setHeadImgUrl(String headImgUrl) { + this.headImgUrl = headImgUrl; + } + + public List<String> getPrivilege() { + return privilege; + } + + public void setPrivilege(List<String> privilege) { + this.privilege = privilege; + } + + public String getUnionId() { + return unionId; + } + + public void setUnionId(String unionId) { + this.unionId = unionId; + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/PaymentRecordsController.java b/src/main/java/com/lunhan/water/host/controller/PaymentRecordsController.java new file mode 100644 index 0000000..c82a11d --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/PaymentRecordsController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.PaymentRecordsService; +import com.lunhan.water.entity.request.paymentrecords.ReqCreatePaymentRecords; +import com.lunhan.water.entity.request.paymentrecords.ReqModifyPaymentRecords; +import com.lunhan.water.entity.search.SearchPaymentRecords; +import com.lunhan.water.repository.vo.PaymentRecordsVO; + +/** + * 9000.PaymentRecords + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "paymentRecords") +public class PaymentRecordsController extends BasicController { + @Autowired + private PaymentRecordsService service; + + /** + * 创建[null] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreatePaymentRecords request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[null] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyPaymentRecords request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[null]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[null] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<PaymentRecordsVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[null] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<PaymentRecordsVO>> search(@RequestBody SearchPaymentRecords request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/RechargeOrderController.java b/src/main/java/com/lunhan/water/host/controller/RechargeOrderController.java new file mode 100644 index 0000000..129ec75 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/RechargeOrderController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.RechargeOrderService; +import com.lunhan.water.entity.request.rechargeorder.ReqCreateRechargeOrder; +import com.lunhan.water.entity.request.rechargeorder.ReqModifyRechargeOrder; +import com.lunhan.water.entity.search.SearchRechargeOrder; +import com.lunhan.water.repository.vo.RechargeOrderVO; + +/** + * 9000.用户充值订单 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "rechargeOrder") +public class RechargeOrderController extends BasicController { + @Autowired + private RechargeOrderService service; + + /** + * 创建[用户充值订单] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateRechargeOrder request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[用户充值订单] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyRechargeOrder request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[用户充值订单]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[用户充值订单] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<RechargeOrderVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[用户充值订单] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<RechargeOrderVO>> search(@RequestBody SearchRechargeOrder request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/RechargeRecordsController.java b/src/main/java/com/lunhan/water/host/controller/RechargeRecordsController.java new file mode 100644 index 0000000..9152449 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/RechargeRecordsController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.RechargeRecordsService; +import com.lunhan.water.entity.request.rechargerecords.ReqCreateRechargeRecords; +import com.lunhan.water.entity.request.rechargerecords.ReqModifyRechargeRecords; +import com.lunhan.water.entity.search.SearchRechargeRecords; +import com.lunhan.water.repository.vo.RechargeRecordsVO; + +/** + * 9000.充值记录 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "rechargeRecords") +public class RechargeRecordsController extends BasicController { + @Autowired + private RechargeRecordsService service; + + /** + * 创建[充值记录] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateRechargeRecords request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[充值记录] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyRechargeRecords request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[充值记录]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[充值记录] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<RechargeRecordsVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[充值记录] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<RechargeRecordsVO>> search(@RequestBody SearchRechargeRecords request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/RefundRecordController.java b/src/main/java/com/lunhan/water/host/controller/RefundRecordController.java new file mode 100644 index 0000000..1beede8 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/RefundRecordController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.RefundRecordService; +import com.lunhan.water.entity.request.refundrecord.ReqCreateRefundRecord; +import com.lunhan.water.entity.request.refundrecord.ReqModifyRefundRecord; +import com.lunhan.water.entity.search.SearchRefundRecord; +import com.lunhan.water.repository.vo.RefundRecordVO; + +/** + * 9000.退款记录 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "refundRecord") +public class RefundRecordController extends BasicController { + @Autowired + private RefundRecordService service; + + /** + * 创建[退款记录] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateRefundRecord request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[退款记录] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyRefundRecord request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[退款记录]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[退款记录] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<RefundRecordVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[退款记录] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<RefundRecordVO>> search(@RequestBody SearchRefundRecord request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/TradeRecordController.java b/src/main/java/com/lunhan/water/host/controller/TradeRecordController.java new file mode 100644 index 0000000..37b51e7 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/TradeRecordController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.TradeRecordService; +import com.lunhan.water.entity.request.traderecord.ReqCreateTradeRecord; +import com.lunhan.water.entity.request.traderecord.ReqModifyTradeRecord; +import com.lunhan.water.entity.search.SearchTradeRecord; +import com.lunhan.water.repository.vo.TradeRecordVO; + +/** + * 9000.支付记录 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "tradeRecord") +public class TradeRecordController extends BasicController { + @Autowired + private TradeRecordService service; + + /** + * 创建[支付记录] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateTradeRecord request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[支付记录] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyTradeRecord request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[支付记录]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[支付记录] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<TradeRecordVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[支付记录] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<TradeRecordVO>> search(@RequestBody SearchTradeRecord request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/UserCapitalChangeController.java b/src/main/java/com/lunhan/water/host/controller/UserCapitalChangeController.java new file mode 100644 index 0000000..ae26844 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/UserCapitalChangeController.java @@ -0,0 +1,113 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.host.BasicController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import com.lunhan.water.service.UserCapitalChangeService; +import com.lunhan.water.entity.request.usercapitalchange.ReqCreateUserCapitalChange; +import com.lunhan.water.entity.request.usercapitalchange.ReqModifyUserCapitalChange; +import com.lunhan.water.entity.search.SearchUserCapitalChange; +import com.lunhan.water.repository.vo.UserCapitalChangeVO; + +/** + * 9000.用户资金变动 + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "userCapitalChange") +public class UserCapitalChangeController extends BasicController { + @Autowired + private UserCapitalChangeService service; + + /** + * 创建[用户资金变动] + * @author lin.liu + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateUserCapitalChange request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.create(request); + } + + /** + * 编辑[用户资金变动] + * @author lin.liu + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifyUserCapitalChange request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[用户资金变动]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return service.modify(request); + } + + /** + * 获取[用户资金变动] + * @author lin.liu + */ + @GetMapping(value = "get/{id}") + public ExecutedResult<UserCapitalChangeVO> get(@PathVariable Long id) { + return service.get(id); + } + + /** + * 查询[用户资金变动] + * @author lin.liu + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<UserCapitalChangeVO>> search(@RequestBody SearchUserCapitalChange request) { + return service.search(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/base/SysRegionController.java b/src/main/java/com/lunhan/water/host/controller/base/SysRegionController.java new file mode 100644 index 0000000..56ffd39 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/base/SysRegionController.java @@ -0,0 +1,161 @@ +/** + # __----~~~~~~~~~~~------___ + # . . ~~//====...... __--~ ~~ + # -. \_|// |||\\ ~~~~~~::::... /~ + # ___-==_ _-~o~ \/ ||| \\ _/~~- + # __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + # _-~~ .=~ | \\-_ '-~7 /- / || \ / + # .~ .~ | \\ -_ / /- / || \ / + # / ____ / | \\ ~-_/ /|- _/ .|| \ / + # |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + # ' ~-| /| |-~\~~ __--~~ + # |-~~-_/ | | ~\_ _-~ /\ + # / \ \__ \/~ \__ + # _--~ _/ | .-~~____--~-/ ~~==. + # ((->/~ '.|||' -_| ~~-/ , . _|| + # -_ ~\ ~~---l__i__i__i--~~_/ + # _-~-__ ~) \--______________--~~ + # //.-~~~-~_--~- |-------~~~~~~~~ + # //.-~~~--\ + # 神兽保佑 + # 永无BUG! + */ +package com.lunhan.water.host.controller.base; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.entity.request.sysregion.ReqCreateSysRegion; +import com.lunhan.water.entity.request.sysregion.ReqModifySysRegion; +import com.lunhan.water.entity.response.region.ResRegionTree; +import com.lunhan.water.entity.search.SearchSysRegion; +import com.lunhan.water.host.BasicController; +import com.lunhan.water.host.api.NonLogin; +import com.lunhan.water.repository.vo.SysRegionVO; +import com.lunhan.water.service.SysRegionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 06.统系行政地区 + * @author lin.liu + * @description 系统行政地区 + * @order 06 + */ +@RestController +@RequestMapping(value = "sysRegion") +public class SysRegionController extends BasicController { + @Autowired + private SysRegionService service; + + /** + * 创建[系统行政地区] + * @author lin.liu + * @description 创建[系统行政地区] + */ + @PostMapping(value = "create") + public ExecutedResult<Long> create(@RequestBody ReqCreateSysRegion request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return this.service.create(request); + } + + /** + * 编辑[系统行政地区] + * @author lin.liu + * @description 编辑[系统行政地区] + */ + @PostMapping(value = "modify") + public ExecutedResult<String> modify(@RequestBody ReqModifySysRegion request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + // 必须大于0 + .addGreater(ParameterUtil.named("[系统行政地区]id"), request.getId(), 0L) + // 非空 + //.addNotNullOrEmpty(ParameterUtil.named("名称"), request.getName()) + // 限制最大长度 + //.addLengthMax(ParameterUtil.named("名称"), request.getName(), ConstantFactory.LENGTH_MAX50) + ; + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return failed(result.getErrorMsg()); + } + //#endregion + return this.service.modify(request); + } + + /** + * 获取[系统行政地区] + * @author lin.liu + * @description 获取[系统行政地区] + */ + @GetMapping(value = "get/{code}") + public ExecutedResult<SysRegionVO> get(@PathVariable String code) { + return this.service.get(code); + } + /** + * 根据id批量获取[系统行政地区] + * @author lin.liu + * @description 根据id批量获取[系统行政地区] + */ + @PostMapping(value = "getList") + public ExecutedResult<List<SysRegionVO>> getList(@RequestBody ReqListId request) { + return this.service.getList(request.getListId()); + } + + /** + * 获取指定区域的子级区域 + * + * @param code 区域编号,不传获取所有一级区域 + * @author lin.liu + * @date 2024/05/13 + */ + @GetMapping(value = "getListChild") + public ExecutedResult<List<ResRegionTree>> getListChild(@RequestParam String code) { + return this.service.getListChild(code); + } + /** + * 查询[系统行政地区] + * @author lin.liu + * @description 查询[系统行政地区] + */ + @PostMapping(value = "search") + public ExecutedResult<PagerResult<SysRegionVO>> search(@RequestBody SearchSysRegion request) { + return this.service.search(request); + } + /** + * 获取指定区域的子级区域(包含自身) + * + * @param code 区域编号 + * @author lin.liu + * @date 2024/05/13 + */ + @NonLogin + @GetMapping(value = "currAndTree/{code}") + public ExecutedResult<ResRegionTree> currAndTree(@PathVariable String code) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + .addNotNullOrEmpty(ParameterUtil.named("区域编号"), code); + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return ExecutedResult.failed(result.getErrorMsg()); + } + //#endregion + return this.service.currAndTree(code); + } +} diff --git a/src/main/java/com/lunhan/water/host/controller/pay/PaymentServicesController.java b/src/main/java/com/lunhan/water/host/controller/pay/PaymentServicesController.java new file mode 100644 index 0000000..045a487 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/pay/PaymentServicesController.java @@ -0,0 +1,74 @@ +//package com.lunhan.water.host.controller.pay; +// +//import com.alipay.api.AlipayApiException; +//import com.lunhan.water.common.ExecutedResult; +//import com.lunhan.water.common.util.ParameterUtil; +//import com.lunhan.water.common.validator.ParameterValidateResult; +//import com.lunhan.water.common.validator.ParameterValidator; +//import com.lunhan.water.entity.enums.EBusinessType; +//import com.lunhan.water.entity.request.pay.ReqCreatePay; +//import com.lunhan.water.entity.request.pay.ReqOrderPay; +//import com.lunhan.water.entity.request.pay.ReqPayRefund; +//import com.lunhan.water.host.BasicController; +//import com.lunhan.water.service.PaymentServices; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.util.Map; +// +///** +// * 50.支付服务 +// * +// * @author li。ling。yu +// * @date 2023/10/19 +// * @order 50 +// */ +//@Slf4j +//@RestController +//@RequestMapping(value = "/pay/service") +//public class PaymentServicesController extends BasicController { +// +// @Autowired +// private PaymentServices services; +// +// /** +// * 发起微信支付 +// * @param request 请求参数 +// * +// * @return 返回微信jsapi支付参数 +// */ +// @PostMapping(value = "wxPay") +// public ExecutedResult<Map<String, Object>> wxPay(@RequestBody ReqCreatePay request) { +// //#region 参数验证 +// ParameterValidator validator = new ParameterValidator() +// // 必须是枚举值 +// .addMustEnum(ParameterUtil.named("业务类型"), request.getBusinessType(), EBusinessType.class) +// // 必须大于0 +// //.addNotNullOrEmpty(ParameterUtil.named("订单号"), request.getBusinessNo()) +// ; +// ParameterValidateResult result = validator.validate(); +// if (result.getIsFiled()) { +// return ExecutedResult.failed(result.getErrorMsg()); +// } +// //#endregion +// return services.weiXinPay(this.getTokenUser(), request); +// } +// +// +// +// /** +// * 发起微信退款 +// * @param request 请求参数 +// * +// * @return 返回退款流水号 +// */ +// @PostMapping(value = "wxRefund") +// public ExecutedResult<String> wxRefund(@RequestBody ReqPayRefund request) { +// //PaymentMerchantPO merchant = super.getTokenUser(); +// return services.weiXinRefund(request); +// } +//} diff --git a/src/main/java/com/lunhan/water/host/controller/user/UserLoginController.java b/src/main/java/com/lunhan/water/host/controller/user/UserLoginController.java new file mode 100644 index 0000000..e16f758 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/controller/user/UserLoginController.java @@ -0,0 +1,193 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.host.controller.user; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.lunhan.water.common.ConstantFactory; +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.config.SysConfig; +import com.lunhan.water.common.enums.EResultCode; +import com.lunhan.water.common.exceptions.BusinessException; +import com.lunhan.water.common.jwt.JWTUtil; +import com.lunhan.water.common.jwt.LoginUserDTO; +import com.lunhan.water.common.util.HttpUtil; +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.ParameterUtil; +import com.lunhan.water.common.util.SerializeUtil; +import com.lunhan.water.common.validator.ParameterValidateResult; +import com.lunhan.water.common.validator.ParameterValidator; +import com.lunhan.water.entity.enums.EState; +import com.lunhan.water.entity.enums.EUserType; +import com.lunhan.water.entity.request.ReqChangePassword; +import com.lunhan.water.entity.request.ReqListId; +import com.lunhan.water.entity.request.ReqNeedCode; +import com.lunhan.water.entity.request.ReqUserLogin; +import com.lunhan.water.entity.weixin.WeiXinUserDto; +import com.lunhan.water.host.BasicController; +import com.lunhan.water.host.api.NonLogin; +import com.lunhan.water.repository.po.UserLoginPO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.List; +import java.util.Objects; + +import com.lunhan.water.service.UserLoginService; +import com.lunhan.water.entity.request.userlogin.ReqCreateUserLogin; +import com.lunhan.water.entity.request.userlogin.ReqModifyUserLogin; +import com.lunhan.water.entity.search.SearchUserLogin; +import com.lunhan.water.repository.vo.UserLoginVO; + +/** + * 9000.UserLogin + * @author lin.liu + * @order 9000 + */ +@RestController +@RequestMapping(value = "user") +public class UserLoginController extends BasicController { + @Autowired + private UserLoginService userLoginService; + /** + * 微信小程序授权 + * @param request 请求参数 + */ + @NonLogin + @PostMapping(value = "wxAuthorize") + public ExecutedResult<WeiXinUserDto> wxAuthorization(@RequestBody ReqNeedCode request) { + return success(this.wxMiniAppAuth(request.getCode())); + } + /** + * 微信登录 + * @param request 请求参数 + */ + @NonLogin + @PostMapping(value = "wxLogin") + public ExecutedResult<LoginUserDTO> wxLogin(@RequestBody ReqNeedCode request) { + //微信授权 + WeiXinUserDto userInfo = this.wxMiniAppAuth(request.getCode()); + Long now = LocalDateTimeUtil.nowTimeStamp(); + String openId = userInfo.getOpenId(); + + UserLoginPO user = userLoginService.get4Openid(openId); + if (Objects.isNull(user)) { + // 微信未绑定账号,新增用户 + ReqCreateUserLogin reqCreateUser = new ReqCreateUserLogin(); + reqCreateUser.setUserName(openId); + reqCreateUser.setPassword(""); + reqCreateUser.setWxOpenId(openId); + reqCreateUser.setNickName(userInfo.getNickName()); + reqCreateUser.setHeadImg(userInfo.getHeadImgUrl()); + reqCreateUser.setPhone(""); + reqCreateUser.setComment(""); + ExecutedResult<Long> createAdmin = userLoginService.create(reqCreateUser); + if (createAdmin.isFailed()) { + return ExecutedResult.failed(createAdmin.getMsg()); + } + + user = userLoginService.get4Openid(openId); + } + if (!Objects.equals(user.getStatus(), EState.NORMAL.getValue())) { + return ExecutedResult.failed("账号异常, 请联系管理员!"); + } + LoginUserDTO loginUser = new LoginUserDTO(); + loginUser.setUserType(EUserType.ADMIN_USER.getValue()); + loginUser.setUserId(openId); + loginUser.setNickName(user.getNickName()); + loginUser.setHeadImg(user.getHeadImg()); + loginUser.setPhone(""); + loginUser.setToken(JWTUtil.getToken(loginUser)); + return ExecutedResult.success(loginUser); + } + /** + * 微信小程序授权 + */ + private WeiXinUserDto wxMiniAppAuth(String code) { + //微信接口服务,通过调用微信接口服务中jscode2session接口获取到openid和session_key + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + SysConfig.wx.getAppId() + "&secret=" + SysConfig.wx.getSecret() + "&js_code=" + code + "&grant_type=authorization_code"; + String response = HttpUtil.doGet(url); + JsonObject jsonObject = new JsonParser().parse(response).getAsJsonObject(); + if (!jsonObject.has("errcode")) { + String sessionKey = jsonObject.get("session_key").toString(); + String openId = jsonObject.get("openid").toString(); + } + if (jsonObject.has("errcode")) { + String errCode = jsonObject.get("errcode").getAsString(); + switch (errCode) { + case "1": + throw new BusinessException(EResultCode.FAILED, "微信授权失败,请稍后再试."); + case "40029": + throw new BusinessException(EResultCode.FAILED, "微信授权code无效"); + case "40163": + throw new BusinessException(EResultCode.FAILED, "微信授权code已被使用"); + case "45011": + throw new BusinessException(EResultCode.FAILED, "访问次数过于频繁,请稍后再试"); + + default: + throw new BusinessException(EResultCode.FAILED, "微信返回错误:" + errCode); + } + } + return SerializeUtil.toObject(response, WeiXinUserDto.class); + } + /** + * 修改密码 + * @param request 请求参数 + * @author lin.liu + */ + @PostMapping("/changePassword") + public ExecutedResult<String> changePassword(@RequestBody ReqChangePassword request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + .addNotNullOrEmpty(ParameterUtil.named("旧密码"), request.getOldPassword()) + .addNotNullOrEmpty(ParameterUtil.named("新密码"), request.getNewPassword()) + .addLengthMax(ParameterUtil.named("新密码"), request.getNewPassword(), ConstantFactory.LENGTH_MAX50); + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return ExecutedResult.failed(result.getErrorMsg()); + } + //#endregion + LoginUserDTO user = super.getTokenUser(); + return userLoginService.changePassword(user, request); + } + + /** + * 帐号密码登录 + * @param request 请求参数 + * @author lin.liu + */ + @PostMapping("login") + @NonLogin + public ExecutedResult<LoginUserDTO> login(@RequestBody ReqUserLogin request) { + //#region 参数验证 + ParameterValidator validator = new ParameterValidator() + .addNotNullOrEmpty(ParameterUtil.named("用户名"), request.getUserName()) + .addNotNullOrEmpty(ParameterUtil.named("密码"), request.getPassword()); + ParameterValidateResult result = validator.validate(); + if (result.getIsFiled()) { + return ExecutedResult.failed(result.getErrorMsg()); + } + //#endregion + return userLoginService.login(request); + } +} diff --git a/src/main/java/com/lunhan/water/host/mqtt/MQTTConnect.java b/src/main/java/com/lunhan/water/host/mqtt/MQTTConnect.java new file mode 100644 index 0000000..0b29fff --- /dev/null +++ b/src/main/java/com/lunhan/water/host/mqtt/MQTTConnect.java @@ -0,0 +1,38 @@ +package com.lunhan.water.host.mqtt; + + + +import com.lunhan.water.common.config.MqttConfig; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +@Component +@Order(20) +public class MQTTConnect { + @Autowired + private MqttConfig mqttConfig; + + //生成配置对象,用户名,密码等 + public MqttConnectOptions getOptions() { + MqttConnectOptions options = new MqttConnectOptions(); + options.setCleanSession(false); + options.setUserName(mqttConfig.getUser()); + options.setPassword(mqttConfig.getPassword().toCharArray()); + options.setConnectionTimeout(mqttConfig.getConnectionTimeout()); + //设置心跳 + options.setKeepAliveInterval(mqttConfig.getKeepAliveInterval()); + return options; + } + + public MqttConnectOptions getOptions(MqttConnectOptions options) { + options.setCleanSession(false); + options.setUserName(mqttConfig.getUser()); + options.setPassword(mqttConfig.getPassword().toCharArray()); + options.setConnectionTimeout(mqttConfig.getConnectionTimeout()); + //设置心跳 + options.setKeepAliveInterval(mqttConfig.getKeepAliveInterval()); + return options; + } +} diff --git a/src/main/java/com/lunhan/water/host/mqtt/MQTTServer.java b/src/main/java/com/lunhan/water/host/mqtt/MQTTServer.java new file mode 100644 index 0000000..7263803 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/mqtt/MQTTServer.java @@ -0,0 +1,96 @@ +package com.lunhan.water.host.mqtt; + + + +import com.lunhan.water.common.config.MqttConfig; +import com.lunhan.water.common.enums.ELogger; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +/** + * 发布端 + * Title:Server + * Description: 服务器向多个客户端推送主题,即不同客户端可向服务器订阅相同主题 + */ +@Component +@Order(7) +public class MQTTServer implements InitializingBean { + private static final Logger LOGGER = LoggerFactory.getLogger(ELogger.DEBUG.getLogFileName()); + @Autowired + private MqttConfig mqttConfig; + @Autowired + private MQTTConnect mqttConnect; + static MqttClient client; + + private void connect() throws MqttException { + //防止重复创建MQTTClient实例 + if (client == null) { + //就是这里的clientId,服务器用来区分用户的,不能重复 + String host = "tcp://" + mqttConfig.getHost() + ":" + mqttConfig.getPort(); + client = new MqttClient(host, mqttConfig.getServerClientId(), new MemoryPersistence());// MemoryPersistence设置clientid的保存形式,默认为以内存保存 + //client.setCallback(new PushCallback()); + } + MqttConnectOptions options = mqttConnect.getOptions(); + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!client.isConnected()) { + client.connect(options); + LOGGER.info("---------------------mqtt连接成功"); + } else {//这里的逻辑是如果连接成功就重新连接 + client.disconnect(); + client.connect(mqttConnect.getOptions(options)); + LOGGER.info("---------------------mqtt连接成功"); + } + } + + + public boolean publish(MqttTopic topic , MqttMessage message) throws MqttException { + MqttDeliveryToken token = topic.publish(message); + token.waitForCompletion(); + LOGGER.debug("消息发送成功! " + token.isComplete()); + return token.isComplete(); + } + + /** + * mqtt发送消息 + * @param topic 发布消息的主题 + * @param data 消息内容 + */ + public boolean send(String topic, String data) throws MqttException { + MqttConnectOptions options = mqttConnect.getOptions(); + try { + client.connect(mqttConnect.getOptions(options)); + } catch (Exception e) {} + MqttTopic mqttTopic = client.getTopic(topic); + + MqttMessage message = new MqttMessage(); + //消息等级 + //level 0:最多一次的传输 + //level 1:至少一次的传输,(鸡肋) + //level 2: 只有一次的传输 + message.setQos(0); + //如果重复消费,则把值改为true,然后发送一条空的消息,之前的消息就会覆盖,然后在改为false + message.setRetained(false); + + message.setPayload(data.getBytes()); + + return this.publish(mqttTopic, message); + } + + @Override + public void afterPropertiesSet() throws Exception { + // MemoryPersistence设置clientid的保存形式,默认为以内存保存 +// client = new MqttClient(HOST, clientid, new MemoryPersistence()); + if (Objects.equals(mqttConfig.getEnable(), Boolean.FALSE)) { + return; + } + this.connect(); + } +} diff --git a/src/main/java/com/lunhan/water/host/mqtt/MQTTStart.java b/src/main/java/com/lunhan/water/host/mqtt/MQTTStart.java new file mode 100644 index 0000000..29d0788 --- /dev/null +++ b/src/main/java/com/lunhan/water/host/mqtt/MQTTStart.java @@ -0,0 +1,28 @@ +package com.lunhan.water.host.mqtt; + + + +import com.lunhan.water.common.config.MqttConfig; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +@Component +@Order(40) +public class MQTTStart implements InitializingBean { + @Autowired + private MQTTSubsribe mqttSubsribe; + @Autowired + private MqttConfig mqttConfig; + + @Override + public void afterPropertiesSet() throws Exception { + if (Objects.equals(mqttConfig.getEnable(), Boolean.FALSE)) { + return; + } + mqttSubsribe.init(); + } +} diff --git a/src/main/java/com/lunhan/water/host/mqtt/MQTTSubsribe.java b/src/main/java/com/lunhan/water/host/mqtt/MQTTSubsribe.java new file mode 100644 index 0000000..85f5f6e --- /dev/null +++ b/src/main/java/com/lunhan/water/host/mqtt/MQTTSubsribe.java @@ -0,0 +1,102 @@ +package com.lunhan.water.host.mqtt; + + + +import com.lunhan.water.common.config.MqttConfig; +import com.lunhan.water.common.enums.ELogger; +import org.eclipse.paho.client.mqttv3.MqttClient; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +/** + * 订阅端 + */ +@Component +@Order(30) +public class MQTTSubsribe { + private static final Logger LOGGER = LoggerFactory.getLogger(ELogger.DEBUG.getLogFileName()); + @Autowired + private MqttConfig mqttConfig; + @Autowired + private MQTTConnect mqttConnect; + + /** + * 测试和正式环境不要使用同样的clientId 和主题 + * 如果和正式环境一样,正式环境启动后,本地再次启动会频繁断开重连,订阅的主题一样的话,测试的数据正式环境也会消费这些数据 + */ + //private static final String clientid = "测试clients";//测试 +// private String topic = "lunhan"; + + public MqttClient client; + + //方法实现说明 断线重连方法,如果是持久订阅,重连是不需要再次订阅,如果是非持久订阅,重连是需要重新订阅主题 取决于options.setCleanSession(true); + // true为非持久订阅 + public void connect() throws MqttException { + //防止重复创建MQTTClient实例 + if (client == null) { + //就是这里的clientId,服务器用来区分用户的,不能重复,clientId不能和发布的clientId一样,否则会出现频繁断开连接和重连的问题 + //不仅不能和发布的clientId一样,而且也不能和其他订阅的clientId一样,如果想要接收之前的离线数据,这就需要将client的 setCleanSession + // 设置为false,这样服务器才能保留它的session,再次建立连接的时候,它就会继续使用这个session了。 这时此连接clientId 是不能更改的。 + //但是其实还有一个问题,就是使用热部署的时候还是会出现频繁断开连接和重连的问题,可能是因为刚启动时的连接没断开,然后热部署的时候又进行了重连,重启一下就可以了 + //+ System.currentTimeMillis() + String host = "tcp://" + mqttConfig.getHost() + ":" + mqttConfig.getPort(); + client = new MqttClient(host, mqttConfig.getClientId(), new MemoryPersistence());// MemoryPersistence设置clientid的保存形式,默认为以内存保存 + //如果是订阅者则添加回调类,发布不需要 + client.setCallback(new PushCallback(MQTTSubsribe.this)); +// client.setCallback(new PushCallback()); + } + MqttConnectOptions options = mqttConnect.getOptions(); + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!client.isConnected()) { + client.connect(options); + LOGGER.info("----------mqtt连接成功"); + } else {//这里的逻辑是如果连接成功就重新连接 + client.disconnect(); + client.connect(mqttConnect.getOptions(options)); + LOGGER.info("----------mqtt连接成功"); + } + } + + public void init() { + try { + this.connect(); + LOGGER.info("----------mqtt执行"); + this.subscribe(mqttConfig.getTopic()); + LOGGER.info("----------mqtt执行订阅"); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + /** + * 订阅某个主题,qos默认为0 + * + * @param topic . + */ + public void subscribe(String topic) { + subscribe(topic,2); + } + + /** + * 订阅某个主题 + * + * @param topic . + * @param qos . + */ + public void subscribe(String topic, int qos) { + + try { + client.subscribe(topic,qos); + //MQTT 协议中订阅关系是持久化的,因此如果不需要订阅某些 Topic,需要调用 unsubscribe 方法取消订阅关系。 +// client.unsubscribe("需要解除订阅关系的主题"); + } catch (MqttException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/lunhan/water/host/mqtt/PushCallback.java b/src/main/java/com/lunhan/water/host/mqtt/PushCallback.java new file mode 100644 index 0000000..261ab6f --- /dev/null +++ b/src/main/java/com/lunhan/water/host/mqtt/PushCallback.java @@ -0,0 +1,83 @@ +package com.lunhan.water.host.mqtt; + +import com.lunhan.water.common.enums.ELogger; +import com.lunhan.water.common.util.LoggerUtil; +import com.lunhan.water.common.util.ThreadPoolUtil; +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.slf4j.Logger; + +import java.nio.charset.StandardCharsets; + +; + +/** + * 发布消息的回调类 + * <p> + * 必须实现MqttCallback的接口并实现对应的相关接口方法CallBack 类将实现 MqttCallBack。 + * 每个客户机标识都需要一个回调实例。在此示例中,构造函数传递客户机标识以另存为实例数据。 + * 在回调中,将它用来标识已经启动了该回调的哪个实例。 + * 必须在回调类中实现三个方法: + * <p> + * public void messageArrived(MqttTopic topic, MqttMessage message)接收已经预订的发布。 + * <p> + * public void connectionLost(Throwable cause)在断开连接时调用。 + * <p> + * public void deliveryComplete(MqttDeliveryToken token)) + * 接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。 + * 由 MqttClient.connect 激活此回调。 + */ +public class PushCallback implements MqttCallback { + private static final Logger LOGGER_DEBUG = LoggerUtil.get(ELogger.DEBUG); + private static final Logger LOGGER_ERROR = LoggerUtil.get(ELogger.SYS_ERROR); + + private MQTTSubsribe mqttSubsribe; + + public PushCallback(MQTTSubsribe mqttSubsribe) { + this.mqttSubsribe = mqttSubsribe; + } + + public void connectionLost(Throwable cause) { + // 连接丢失后,一般在这里面进行重连 + LOGGER_DEBUG.info("---------------------mqtt连接断开"); + + while (true) { + try {//如果没有发生异常说明连接成功,如果发生异常,则死循环 + mqttSubsribe.init(); + LOGGER_DEBUG.info("---------------------mqtt重连成功"); + break; + } catch (Exception e) { + LOGGER_ERROR.error("mqtt连接丢失", e); + continue; + } finally { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // 重新设置中断状态 + Thread.currentThread().interrupt(); + } + } + } + } + + public void deliveryComplete(IMqttDeliveryToken token) { + LOGGER_DEBUG.info("deliveryComplete---------" + token.isComplete()); + } + + public void messageArrived(String topic, MqttMessage message) { + // subscribe后得到的消息会执行到这里面 + String msg = new String(message.getPayload(), StandardCharsets.UTF_8); + + LOGGER_DEBUG.info("收到mqtt消息,主题: " + topic + ", Qos: " + message.getQos() + ", 消息内容: " + msg); + //这里可以针对收到的消息做处理 + ThreadPoolUtil.getDefaultPool().execute(() -> { + try { + //调用方法 + //dataUploadYwjRecordService.mqttReceived(topic, msg); + } catch (Exception e) { + LOGGER_ERROR.error("messageArrived", e); + } + }); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/PaymentRecordsMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/PaymentRecordsMapperImpl.java new file mode 100644 index 0000000..9567fc2 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/PaymentRecordsMapperImpl.java @@ -0,0 +1,137 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchPaymentRecords; +import com.lunhan.water.repository.mapper.PaymentRecordsMapper; +import com.lunhan.water.repository.po.PaymentRecordsPO; + +/** + * PaymentRecords + * @author lin.liu + */ +@Repository +public class PaymentRecordsMapperImpl extends BasicMapperImpl<PaymentRecordsPO, PaymentRecordsMapper> { + PaymentRecordsMapperImpl(PaymentRecordsMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<PaymentRecordsPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchPaymentRecords search = (SearchPaymentRecords)request; + // 查询条件 + LambdaQueryWrapper<PaymentRecordsPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(PaymentRecordsPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, PaymentRecordsPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), PaymentRecordsPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, PaymentRecordsPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, PaymentRecordsPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(PaymentRecordsPO::getName, search.getKeywords()) + // .or().like(PaymentRecordsPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(PaymentRecordsPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(PaymentRecordsPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(PaymentRecordsPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(PaymentRecordsPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(PaymentRecordsPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(PaymentRecordsPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(PaymentRecordsPO::getId); + } + Page<PaymentRecordsPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(PaymentRecordsPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(PaymentRecordsPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public PaymentRecordsPO getById(Long id) { + return super.get(id); + } + + public List<PaymentRecordsPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/RechargeOrderMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/RechargeOrderMapperImpl.java new file mode 100644 index 0000000..45eea5d --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/RechargeOrderMapperImpl.java @@ -0,0 +1,141 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchRechargeOrder; +import com.lunhan.water.repository.mapper.RechargeOrderMapper; +import com.lunhan.water.repository.po.RechargeOrderPO; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Repository +public class RechargeOrderMapperImpl extends BasicMapperImpl<RechargeOrderPO, RechargeOrderMapper> { + RechargeOrderMapperImpl(RechargeOrderMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<RechargeOrderPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchRechargeOrder search = (SearchRechargeOrder)request; + // 查询条件 + LambdaQueryWrapper<RechargeOrderPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(RechargeOrderPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, RechargeOrderPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), RechargeOrderPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, RechargeOrderPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, RechargeOrderPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(RechargeOrderPO::getName, search.getKeywords()) + // .or().like(RechargeOrderPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(RechargeOrderPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(RechargeOrderPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(RechargeOrderPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(RechargeOrderPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(RechargeOrderPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(RechargeOrderPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(RechargeOrderPO::getId); + } + Page<RechargeOrderPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(RechargeOrderPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(RechargeOrderPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + public RechargeOrderPO getByOrderNo(String orderNo) { + LambdaQueryWrapper<RechargeOrderPO> queryWrapper = this.query(); + queryWrapper.eq(RechargeOrderPO::getOrderNo,orderNo); + return DB.selectOne(queryWrapper); + } + public RechargeOrderPO getById(Long id) { + return super.get(id); + } + + public List<RechargeOrderPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/RechargeRecordsMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/RechargeRecordsMapperImpl.java new file mode 100644 index 0000000..db1a75c --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/RechargeRecordsMapperImpl.java @@ -0,0 +1,142 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchRechargeRecords; +import com.lunhan.water.repository.mapper.RechargeRecordsMapper; +import com.lunhan.water.repository.po.RechargeRecordsPO; + +/** + * 充值记录 + * @author lin.liu + */ +@Repository +public class RechargeRecordsMapperImpl extends BasicMapperImpl<RechargeRecordsPO, RechargeRecordsMapper> { + RechargeRecordsMapperImpl(RechargeRecordsMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<RechargeRecordsPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchRechargeRecords search = (SearchRechargeRecords)request; + // 查询条件 + LambdaQueryWrapper<RechargeRecordsPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(RechargeRecordsPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, RechargeRecordsPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), RechargeRecordsPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, RechargeRecordsPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, RechargeRecordsPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(RechargeRecordsPO::getName, search.getKeywords()) + // .or().like(RechargeRecordsPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(RechargeRecordsPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(RechargeRecordsPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(RechargeRecordsPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(RechargeRecordsPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(RechargeRecordsPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(RechargeRecordsPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(RechargeRecordsPO::getId); + } + Page<RechargeRecordsPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(RechargeRecordsPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(RechargeRecordsPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + public RechargeRecordsPO getByRechargeOrder(String rechargeOrder) { + LambdaQueryWrapper<RechargeRecordsPO> queryWrapper = this.query(); + queryWrapper.eq(RechargeRecordsPO::getRechargeOrder,rechargeOrder) + .eq(RechargeRecordsPO::getRechargeStatus,0); + return DB.selectOne(queryWrapper); + } + public RechargeRecordsPO getById(Long id) { + return super.get(id); + } + + public List<RechargeRecordsPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/RefundRecordMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/RefundRecordMapperImpl.java new file mode 100644 index 0000000..53a2dd8 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/RefundRecordMapperImpl.java @@ -0,0 +1,141 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchRefundRecord; +import com.lunhan.water.repository.mapper.RefundRecordMapper; +import com.lunhan.water.repository.po.RefundRecordPO; + +/** + * 退款记录 + * @author lin.liu + */ +@Repository +public class RefundRecordMapperImpl extends BasicMapperImpl<RefundRecordPO, RefundRecordMapper> { + RefundRecordMapperImpl(RefundRecordMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<RefundRecordPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchRefundRecord search = (SearchRefundRecord)request; + // 查询条件 + LambdaQueryWrapper<RefundRecordPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(RefundRecordPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, RefundRecordPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), RefundRecordPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, RefundRecordPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, RefundRecordPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(RefundRecordPO::getName, search.getKeywords()) + // .or().like(RefundRecordPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(RefundRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(RefundRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(RefundRecordPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(RefundRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(RefundRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(RefundRecordPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(RefundRecordPO::getId); + } + Page<RefundRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(RefundRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(RefundRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + public RefundRecordPO get4RefundNo(String refundNo) { + LambdaQueryWrapper<RefundRecordPO> queryWrapper = this.query(); + queryWrapper.eq(RefundRecordPO::getRefundNo,refundNo); + return super.selectOne(queryWrapper); + } + public RefundRecordPO getById(Long id) { + return super.get(id); + } + + public List<RefundRecordPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/SysRegionMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/SysRegionMapperImpl.java new file mode 100644 index 0000000..db6dfae --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/SysRegionMapperImpl.java @@ -0,0 +1,159 @@ +/** + # __----~~~~~~~~~~~------___ + # . . ~~//====...... __--~ ~~ + # -. \_|// |||\\ ~~~~~~::::... /~ + # ___-==_ _-~o~ \/ ||| \\ _/~~- + # __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + # _-~~ .=~ | \\-_ '-~7 /- / || \ / + # .~ .~ | \\ -_ / /- / || \ / + # / ____ / | \\ ~-_/ /|- _/ .|| \ / + # |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + # ' ~-| /| |-~\~~ __--~~ + # |-~~-_/ | | ~\_ _-~ /\ + # / \ \__ \/~ \__ + # _--~ _/ | .-~~____--~-/ ~~==. + # ((->/~ '.|||' -_| ~~-/ , . _|| + # -_ ~\ ~~---l__i__i__i--~~_/ + # _-~-__ ~) \--______________--~~ + # //.-~~~-~_--~- |-------~~~~~~~~ + # //.-~~~--\ + # 神兽保佑 + # 永无BUG! + */ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.ListUtil; +import com.lunhan.water.common.util.NumericUtil; +import com.lunhan.water.entity.dto.OrderByDTO; +import com.lunhan.water.entity.dto.SearchBasicDTO; +import com.lunhan.water.entity.enums.EOrderBy; +import com.lunhan.water.entity.search.SearchSysRegion; +import com.lunhan.water.repository.BasicMapperImpl; +import com.lunhan.water.repository.mapper.SysRegionMapper; +import com.lunhan.water.repository.po.SysRegionPO; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * 系统行政地区 + * @author lin.liu + * @description 系统行政地区 + */ +@Repository +public class SysRegionMapperImpl extends BasicMapperImpl<SysRegionPO, SysRegionMapper> { + SysRegionMapperImpl(SysRegionMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<SysRegionPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchSysRegion search = (SearchSysRegion)request; + // 查询条件 + LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(SysRegionPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, SysRegionPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), SysRegionPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, SysRegionPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, SysRegionPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(SysRegionPO::getName, search.getKeywords()) + // .or().like(SysRegionPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(SysRegionPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(SysRegionPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(SysRegionPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(SysRegionPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(SysRegionPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(SysRegionPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(SysRegionPO::getId); + } + Page<SysRegionPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(SysRegionPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + public List<SysRegionPO> getList4Parent(String code) { + LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query(); + queryWrapper.eq(SysRegionPO::getParentCode,code); + return DB.selectList(queryWrapper); + } + public SysRegionPO get4Code(String code) { + LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query(); + queryWrapper.eq(SysRegionPO::getCode,code); + return DB.selectOne(queryWrapper); + } + public List<SysRegionPO> getList4LevelChild(Integer level) { + LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query(); + queryWrapper.gt(SysRegionPO::getLevel,level); + return DB.selectList(queryWrapper); + } + public List<SysRegionPO> getList4Level(Integer level) { + LambdaQueryWrapper<SysRegionPO> queryWrapper = this.query(); + queryWrapper.eq(SysRegionPO::getLevel,level); + return DB.selectList(queryWrapper); + } + public Boolean addNotIncrement(SysRegionPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public SysRegionPO getById(Long id) { + return super.get(id); + } + + public List<SysRegionPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/TradeRecordMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/TradeRecordMapperImpl.java new file mode 100644 index 0000000..3308d10 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/TradeRecordMapperImpl.java @@ -0,0 +1,148 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchTradeRecord; +import com.lunhan.water.repository.mapper.TradeRecordMapper; +import com.lunhan.water.repository.po.TradeRecordPO; + +/** + * 支付记录 + * @author lin.liu + */ +@Repository +public class TradeRecordMapperImpl extends BasicMapperImpl<TradeRecordPO, TradeRecordMapper> { + TradeRecordMapperImpl(TradeRecordMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<TradeRecordPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchTradeRecord search = (SearchTradeRecord)request; + // 查询条件 + LambdaQueryWrapper<TradeRecordPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(TradeRecordPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, TradeRecordPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), TradeRecordPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, TradeRecordPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, TradeRecordPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(TradeRecordPO::getName, search.getKeywords()) + // .or().like(TradeRecordPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(TradeRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(TradeRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(TradeRecordPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(TradeRecordPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(TradeRecordPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(TradeRecordPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(TradeRecordPO::getId); + } + Page<TradeRecordPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(TradeRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(TradeRecordPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + public TradeRecordPO get4TradeNo(String tradeNo) { + LambdaQueryWrapper<TradeRecordPO> queryWrapper = this.query(); + queryWrapper.eq(TradeRecordPO::getTradeNo,tradeNo); + return super.selectOne(queryWrapper); + } + public TradeRecordPO get4Business(Integer businessType, String businessNo) { + LambdaQueryWrapper<TradeRecordPO> queryWrapper = this.query(); + queryWrapper.eq(TradeRecordPO::getBusinessType,businessType); + queryWrapper.eq(TradeRecordPO::getBusinessNo,businessNo); + queryWrapper.eq(TradeRecordPO::getPayState,EPayState.SUCCESS.getValue()); + return super.selectOne(queryWrapper); + } + public TradeRecordPO getById(Long id) { + return super.get(id); + } + + public List<TradeRecordPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/UserCapitalChangeMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/UserCapitalChangeMapperImpl.java new file mode 100644 index 0000000..8d5ad28 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/UserCapitalChangeMapperImpl.java @@ -0,0 +1,137 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchUserCapitalChange; +import com.lunhan.water.repository.mapper.UserCapitalChangeMapper; +import com.lunhan.water.repository.po.UserCapitalChangePO; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Repository +public class UserCapitalChangeMapperImpl extends BasicMapperImpl<UserCapitalChangePO, UserCapitalChangeMapper> { + UserCapitalChangeMapperImpl(UserCapitalChangeMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<UserCapitalChangePO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchUserCapitalChange search = (SearchUserCapitalChange)request; + // 查询条件 + LambdaQueryWrapper<UserCapitalChangePO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(UserCapitalChangePO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, UserCapitalChangePO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), UserCapitalChangePO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, UserCapitalChangePO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, UserCapitalChangePO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(UserCapitalChangePO::getName, search.getKeywords()) + // .or().like(UserCapitalChangePO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(UserCapitalChangePO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(UserCapitalChangePO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(UserCapitalChangePO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(UserCapitalChangePO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(UserCapitalChangePO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(UserCapitalChangePO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(UserCapitalChangePO::getId); + } + Page<UserCapitalChangePO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(UserCapitalChangePO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(UserCapitalChangePO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public UserCapitalChangePO getById(Long id) { + return super.get(id); + } + + public List<UserCapitalChangePO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/impl/UserLoginMapperImpl.java b/src/main/java/com/lunhan/water/repository/impl/UserLoginMapperImpl.java new file mode 100644 index 0000000..7d5c29b --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/impl/UserLoginMapperImpl.java @@ -0,0 +1,146 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.dto.*; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.repository.BasicMapperImpl; +import org.springframework.stereotype.Repository; + +import java.util.List; +import com.lunhan.water.entity.search.SearchUserLogin; +import com.lunhan.water.repository.mapper.UserLoginMapper; +import com.lunhan.water.repository.po.UserLoginPO; + +/** + * UserLogin + * @author lin.liu + */ +@Repository +public class UserLoginMapperImpl extends BasicMapperImpl<UserLoginPO, UserLoginMapper> { + UserLoginMapperImpl(UserLoginMapper mapper) { + super(mapper); + } + + @Override + public PagerResult<UserLoginPO> search(SearchBasicDTO request) { + // 还原查询条件真实类型 + SearchUserLogin search = (SearchUserLogin)request; + // 查询条件 + LambdaQueryWrapper<UserLoginPO> queryWrapper = this.query(); + // 非逻辑删除 + queryWrapper.eq(UserLoginPO::getIsDelete, EYesOrNo.NO.getValue()); + // 状态 + //queryWrapper.eq(NumericUtil.tryParseInt(search.getStatus()).compareTo(0) > 0, UserLoginPO::getStatus, search.getStatus()); + // 状态列表 + //queryWrapper.in(ListUtil.isNotNullOrEmpty(search.getListStatus()), UserLoginPO::getStatus, search.getListStatus()); + + // 数据创建时间-起始 + queryWrapper.ge(NumericUtil.tryParseLong(search.getCreateTimeStart()).compareTo(0L) > 0, UserLoginPO::getCreateTime, search.getCreateTimeStart()); + // 数据创建时间-截止 + queryWrapper.le(NumericUtil.tryParseLong(search.getCreateTimeEnd()).compareTo(0L) > 0, UserLoginPO::getCreateTime, search.getCreateTimeEnd()); + // 关键字 + //if (StringUtil.isNotNullOrEmpty(search.getKeywords())) { + // queryWrapper.and(q -> + // q.like(UserLoginPO::getName, search.getKeywords()) + // .or().like(UserLoginPO::getPhone, search.getKeywords()) + // ); + //} + + // 排序处理 + if (ListUtil.isNotNullOrEmpty(search.getOrderBy())) { + for (OrderByDTO item : search.getOrderBy()) { + EOrderBy orderBy = EOrderBy.getByValue(item.getOrderBy()); + // 顺序排序 + if (item.getIsAsc()) { + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByAsc(UserLoginPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByAsc(UserLoginPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByAsc(UserLoginPO::getUpdateTime); + break; + } + } else { + // 倒叙排序 + switch (orderBy) { + // 主键 + case ID: + queryWrapper.orderByDesc(UserLoginPO::getId); + break; + // 数据创建时间 + case CREATE_TIME: + queryWrapper.orderByDesc(UserLoginPO::getCreateTime); + break; + // 最后更新时间 + case UPDATE_TIME: + queryWrapper.orderByDesc(UserLoginPO::getUpdateTime); + break; + } + } + } + } else { + queryWrapper.orderByDesc(UserLoginPO::getId); + } + Page<UserLoginPO> pageResult = super.selectPage(new Page<>(search.getPage(), search.getLimit()), queryWrapper); + return new PagerResult<>(pageResult.getSize(), pageResult.getCurrent(), pageResult.getTotal(), pageResult.getRecords()); + } + + public Boolean add(UserLoginPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public Boolean addNotIncrement(UserLoginPO item) { + int rowCount = super.insert(item); + return rowCount == 1; + } + + public UserLoginPO getById(Long id) { + return super.get(id); + } + public UserLoginPO get4Openid(String openId) { + LambdaQueryWrapper<UserLoginPO> queryWrapper = this.query(); + queryWrapper.eq(UserLoginPO::getWxOpenId, openId); + return DB.selectOne(queryWrapper); + } + public UserLoginPO get4UserName(String userName) { + LambdaQueryWrapper<UserLoginPO> queryWrapper = this.query(); + queryWrapper.eq(UserLoginPO::getUserName, userName); + return DB.selectOne(queryWrapper); + } + public List<UserLoginPO> getListById(List<Long> listId) { + return super.getList(listId); + } +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/PaymentRecordsMapper.java b/src/main/java/com/lunhan/water/repository/mapper/PaymentRecordsMapper.java new file mode 100644 index 0000000..2cec504 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/PaymentRecordsMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.PaymentRecordsPO; + +/** + * PaymentRecords + * @author lin.liu + */ +public interface PaymentRecordsMapper extends BasicMapper<PaymentRecordsPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/RechargeOrderMapper.java b/src/main/java/com/lunhan/water/repository/mapper/RechargeOrderMapper.java new file mode 100644 index 0000000..4889e80 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/RechargeOrderMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.RechargeOrderPO; + +/** + * 用户充值订单 mapper + * @author lin.liu + */ +public interface RechargeOrderMapper extends BasicMapper<RechargeOrderPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/RechargeRecordsMapper.java b/src/main/java/com/lunhan/water/repository/mapper/RechargeRecordsMapper.java new file mode 100644 index 0000000..8090db9 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/RechargeRecordsMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.RechargeRecordsPO; + +/** + * 充值记录 mapper + * @author lin.liu + */ +public interface RechargeRecordsMapper extends BasicMapper<RechargeRecordsPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/RefundRecordMapper.java b/src/main/java/com/lunhan/water/repository/mapper/RefundRecordMapper.java new file mode 100644 index 0000000..e0b483e --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/RefundRecordMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.RefundRecordPO; + +/** + * 退款记录 mapper + * @author lin.liu + */ +public interface RefundRecordMapper extends BasicMapper<RefundRecordPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/SysRegionMapper.java b/src/main/java/com/lunhan/water/repository/mapper/SysRegionMapper.java new file mode 100644 index 0000000..b0aa530 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/SysRegionMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.SysRegionPO; + +/** + * 系统行政地区 mapper + * @author lin.liu + */ +public interface SysRegionMapper extends BasicMapper<SysRegionPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/TradeRecordMapper.java b/src/main/java/com/lunhan/water/repository/mapper/TradeRecordMapper.java new file mode 100644 index 0000000..f475574 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/TradeRecordMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.TradeRecordPO; + +/** + * 支付记录 mapper + * @author lin.liu + */ +public interface TradeRecordMapper extends BasicMapper<TradeRecordPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/UserCapitalChangeMapper.java b/src/main/java/com/lunhan/water/repository/mapper/UserCapitalChangeMapper.java new file mode 100644 index 0000000..6892788 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/UserCapitalChangeMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.UserCapitalChangePO; + +/** + * 用户资金变动 mapper + * @author lin.liu + */ +public interface UserCapitalChangeMapper extends BasicMapper<UserCapitalChangePO> { +} diff --git a/src/main/java/com/lunhan/water/repository/mapper/UserLoginMapper.java b/src/main/java/com/lunhan/water/repository/mapper/UserLoginMapper.java new file mode 100644 index 0000000..9f561b7 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/mapper/UserLoginMapper.java @@ -0,0 +1,10 @@ +package com.lunhan.water.repository.mapper; + +import com.lunhan.water.repository.BasicMapper;import com.lunhan.water.repository.po.UserLoginPO; + +/** + * UserLogin + * @author lin.liu + */ +public interface UserLoginMapper extends BasicMapper<UserLoginPO> { +} diff --git a/src/main/java/com/lunhan/water/repository/po/PaymentRecordsPO.java b/src/main/java/com/lunhan/water/repository/po/PaymentRecordsPO.java new file mode 100644 index 0000000..a0a876c --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/PaymentRecordsPO.java @@ -0,0 +1,105 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * PaymentRecords + * @author lin.liu + */ +@Data +@TableName("payment_records") +public class PaymentRecordsPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 用户id + */ + @TableField(value = "user_id") + private Long userId; + /** + * 用户名称 + */ + @TableField(value = "user_name") + private String userName; + /** + * 设备编号 + */ + @TableField(value = "facility_code") + private String facilityCode; + /** + * 消费金额 + */ + @TableField(value = "payment_amount") + private BigDecimal paymentAmount; + /** + * 本次出水量(单位ml) + */ + @TableField(value = "water_amount") + private BigDecimal waterAmount; + /** + * 本次出水秒数 + */ + @TableField(value = "water_seconds") + private BigDecimal waterSeconds; + /** + * 备注 + */ + @TableField(value = "comment") + private String comment; + /** + * 缴费状态 EBillPayStatus + */ + @TableField(value = "pay_status") + private Integer payStatus; + /** + * 支付时间 + */ + @TableField(value = "pay_time") + private String payTime; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据最后更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; +} diff --git a/src/main/java/com/lunhan/water/repository/po/RechargeOrderPO.java b/src/main/java/com/lunhan/water/repository/po/RechargeOrderPO.java new file mode 100644 index 0000000..b58bc94 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/RechargeOrderPO.java @@ -0,0 +1,105 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Data +@TableName("recharge_order") +public class RechargeOrderPO implements Serializable { + /** + * 主键id + */ + private Long id; + /** + * 用户id + */ + @TableField(value = "user_id") + private Long userId; + /** + * 订单编号 + */ + @TableField(value = "order_no") + private String orderNo; + /** + * 订单金额 + */ + @TableField(value = "order_amount") + private BigDecimal orderAmount; + /** + * 折扣金额 + */ + @TableField(value = "discount_amount") + private BigDecimal discountAmount; + /** + * 实际支付金额 + */ + @TableField(value = "payment_amount") + private BigDecimal paymentAmount; + /** + * 支付类型 1现金 2微信 3支付宝 4余额 + */ + @TableField(value = "pay_type") + private Integer payType; + /** + * 支付时间 + */ + @TableField(value = "pay_time") + private Long payTime; + /** + * 状态10待支付 20支付中 200完成支付 300支付失败 + */ + @TableField(value = "pay_state") + private Integer payState; + /** + * 是否删除 + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 修改时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; +} diff --git a/src/main/java/com/lunhan/water/repository/po/RechargeRecordsPO.java b/src/main/java/com/lunhan/water/repository/po/RechargeRecordsPO.java new file mode 100644 index 0000000..fc0a0a3 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/RechargeRecordsPO.java @@ -0,0 +1,110 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 充值记录 + * @author lin.liu + */ +@Data +@TableName("recharge_records") +public class RechargeRecordsPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 充值订单号 + */ + @TableField(value = "recharge_order") + private String rechargeOrder; + /** + * 充值类型 + */ + @TableField(value = "recharge_type") + private String rechargeType; + /** + * 支付方式 + */ + @TableField(value = "payment_method") + private String paymentMethod; + /** + * 充值金额 + */ + @TableField(value = "recharge_amount") + private BigDecimal rechargeAmount; + /** + * 充值状态(0=未充值,1=已充值) + */ + @TableField(value = "recharge_status") + private Integer rechargeStatus; + /** + * 备注 + */ + @TableField(value = "comment") + private String comment; + /** + * 数据创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据最后更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; + /** + * 数据创建人 + */ + @TableField(value = "create_user") + private String createUser; + /** + * 数据创建人名称 + */ + @TableField(value = "create_user_name") + private String createUserName; + /** + * 最后更新人 + */ + @TableField(value = "update_user") + private String updateUser; + /** + * 最后更新人名称 + */ + @TableField(value = "update_user_name") + private String updateUserName; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; +} diff --git a/src/main/java/com/lunhan/water/repository/po/RefundRecordPO.java b/src/main/java/com/lunhan/water/repository/po/RefundRecordPO.java new file mode 100644 index 0000000..42a5f8b --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/RefundRecordPO.java @@ -0,0 +1,190 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 退款记录 + * @author lin.liu + */ +@Data +@TableName("refund_record") +public class RefundRecordPO implements Serializable { + /** + * 自增id + */ + private Long id; + /** + * 退款流水号 + */ + @TableField(value = "refund_no") + private String refundNo; + /** + * 原交易流水号 + */ + @TableField(value = "trade_no") + private String tradeNo; + /** + * 原交易总金额 + */ + @TableField(value = "trade_amount") + private BigDecimal tradeAmount; + /** + * 本次退款金额 + */ + @TableField(value = "refund_amount") + private BigDecimal refundAmount; + /** + * 业务编号 + */ + @TableField(value = "business_no") + private String businessNo; + /** + * 业务描述 + */ + @TableField(value = "business_comment") + private String businessComment; + /** + * 业务类型 EBusinessType + */ + @TableField(value = "business_type") + private Integer businessType; + /** + * 支付渠道 + */ + @TableField(value = "payment_channel") + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + @TableField(value = "channel_name") + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + @TableField(value = "pay_way") + private Integer payWay; + /** + * 支付方式名称 + */ + @TableField(value = "pay_way_name") + private String payWayName; + /** + * 回调地址配置 + */ + @TableField(value = "callback_url") + private String callbackUrl; + /** + * 第三方交易流水号 + */ + @TableField(value = "third_refund_no") + private String thirdRefundNo; + /** + * 业务回调地址配置 + */ + @TableField(value = "business_callback_url") + private String businessCallbackUrl; + /** + * 退款发起时间 + */ + @TableField(value = "submit_time") + private Long submitTime; + /** + * 退款发起时间展示 + */ + @TableField(value = "submit_time_view") + private String submitTimeView; + /** + * 退款通知时间 + */ + @TableField(value = "notify_time") + private Long notifyTime; + /** + * 退款通知时间展示 + */ + @TableField(value = "notify_time_view") + private String notifyTimeView; + /** + * 退款成功时间 + */ + @TableField(value = "refund_time") + private Long refundTime; + /** + * 退款成功时间展示 + */ + @TableField(value = "refund_time_view") + private String refundTimeView; + /** + * 实际退款金额 + */ + @TableField(value = "third_refund_amount") + private BigDecimal thirdRefundAmount; + /** + * 退款关闭时间 + */ + @TableField(value = "closed_time") + private Long closedTime; + /** + * 退款关闭时间展示 + */ + @TableField(value = "closed_time_view") + private String closedTimeView; + /** + * 退款关闭说明 + */ + @TableField(value = "closed_comment") + private String closedComment; + /** + * 备注 + */ + @TableField(value = "comment") + private String comment; + /** + * 状态(ERefundState) 待退款=10,退款中=20,退款成功=200,退款失败=300,退款取消=400 + */ + @TableField(value = "refund_state") + private Integer refundState; + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据最后更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; + /** + * null + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; +} diff --git a/src/main/java/com/lunhan/water/repository/po/SysRegionPO.java b/src/main/java/com/lunhan/water/repository/po/SysRegionPO.java new file mode 100644 index 0000000..c0fcf0a --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/SysRegionPO.java @@ -0,0 +1,125 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 系统行政地区 + * @author lin.liu + */ +@Data +@TableName("sys_region") +public class SysRegionPO implements Serializable { + /** + * 主键Id + */ + private Long id; + /** + * 行政代码 + */ + @TableField(value = "code") + private String code; + /** + * 上级行政代码 + */ + @TableField(value = "parent_code") + private String parentCode; + /** + * 名称 + */ + @TableField(value = "name") + private String name; + /** + * 简称 + */ + @TableField(value = "short_name") + private String shortName; + /** + * 邮政编码 + */ + @TableField(value = "zip_code") + private String zipCode; + /** + * 区号 + */ + @TableField(value = "city_code") + private String cityCode; + /** + * 层级 + */ + @TableField(value = "level") + private Integer level; + /** + * 拼音 + */ + @TableField(value = "pin_yin") + private String pinYin; + /** + * 拼音简写 + */ + @TableField(value = "pin_yin_short") + private String pinYinShort; + /** + * 经度 + */ + @TableField(value = "lng") + private BigDecimal lng; + /** + * 维度 + */ + @TableField(value = "lat") + private BigDecimal lat; + /** + * 排序 + */ + @TableField(value = "sort") + private Integer sort; + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 数据创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 最后更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; +} diff --git a/src/main/java/com/lunhan/water/repository/po/TradeRecordPO.java b/src/main/java/com/lunhan/water/repository/po/TradeRecordPO.java new file mode 100644 index 0000000..d85905d --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/TradeRecordPO.java @@ -0,0 +1,190 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 支付记录 + * @author lin.liu + */ +@Data +@TableName("trade_record") +public class TradeRecordPO implements Serializable { + /** + * 自增id + */ + private Long id; + /** + * 交易流水号 + */ + @TableField(value = "trade_no") + private String tradeNo; + /** + * 交易金额 + */ + @TableField(value = "trade_amount") + private BigDecimal tradeAmount; + /** + * 业务编号 + */ + @TableField(value = "business_no") + private String businessNo; + /** + * 业务描述(如果商户支持,此项将作为支付时展示的商品名) + */ + @TableField(value = "business_comment") + private String businessComment; + /** + * 业务类型 EBusinessType + */ + @TableField(value = "business_type") + private Integer businessType; + /** + * 支付渠道 + */ + @TableField(value = "payment_channel") + private Integer paymentChannel; + /** + * 支付渠道名称 + */ + @TableField(value = "channel_name") + private String channelName; + /** + * 支付方式(EPayWay) App=1,Web=2,H5=3,SDK=4,扫码(静态)=5,扫码(动态)=6 + */ + @TableField(value = "pay_way") + private Integer payWay; + /** + * 支付方式名称 + */ + @TableField(value = "pay_way_name") + private String payWayName; + /** + * 第三方支付回调地址 + */ + @TableField(value = "callback_url") + private String callbackUrl; + /** + * 第三方交易流水号 + */ + @TableField(value = "third_trade_no") + private String thirdTradeNo; + /** + * 业务回调地址 + */ + @TableField(value = "business_callback_url") + private String businessCallbackUrl; + /** + * 交易发起时间 + */ + @TableField(value = "submit_time") + private Long submitTime; + /** + * 交易发起时间展示 + */ + @TableField(value = "submit_time_view") + private String submitTimeView; + /** + * 交易通知时间 + */ + @TableField(value = "notify_time") + private Long notifyTime; + /** + * 交易通知时间展示 + */ + @TableField(value = "notify_time_view") + private String notifyTimeView; + /** + * 交易成功时间 + */ + @TableField(value = "paid_time") + private Long paidTime; + /** + * 交易成功时间展示 + */ + @TableField(value = "paid_time_view") + private String paidTimeView; + /** + * 实际支付金额 + */ + @TableField(value = "paid_amount") + private BigDecimal paidAmount; + /** + * 交易关闭时间 + */ + @TableField(value = "closed_time") + private Long closedTime; + /** + * 交易关闭时间展示 + */ + @TableField(value = "closed_time_view") + private String closedTimeView; + /** + * 交易关闭说明 + */ + @TableField(value = "closed_comment") + private String closedComment; + /** + * 备注 + */ + @TableField(value = "comment") + private String comment; + /** + * 状态(EPayState) 待支付=10,支付中=20,支付成功=200,部分退款=220,支付失败=300,支付取消=400,全额退款=420 + */ + @TableField(value = "pay_state") + private Integer payState; + /** + * 是否能退款 不可退款=0,可退款=1 + */ + @TableField(value = "can_refund") + private Integer canRefund; + /** + * 已退款金额 + */ + @TableField(value = "refund_amount") + private BigDecimal refundAmount; + /** + * 创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据最后更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; + /** + * 是否删除 + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; +} diff --git a/src/main/java/com/lunhan/water/repository/po/UserCapitalChangePO.java b/src/main/java/com/lunhan/water/repository/po/UserCapitalChangePO.java new file mode 100644 index 0000000..60c1fb4 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/UserCapitalChangePO.java @@ -0,0 +1,110 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.math.BigDecimal; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Data +@TableName("user_capital_change") +public class UserCapitalChangePO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 所属用户 + */ + @TableField(value = "user_id") + private Long userId; + /** + * 变动业务 ECapitalChange + */ + @TableField(value = "business") + private Integer business; + /** + * 变动业务名称 + */ + @TableField(value = "business_name") + private String businessName; + /** + * 业务唯一标识 + */ + @TableField(value = "business_code") + private String businessCode; + /** + * 变动前余额 + */ + @TableField(value = "before_money") + private BigDecimal beforeMoney; + /** + * 变动金额 + */ + @TableField(value = "change_money") + private BigDecimal changeMoney; + /** + * 变动后余额 + */ + @TableField(value = "after_money") + private BigDecimal afterMoney; + /** + * 描述 + */ + @TableField(value = "description") + private String description; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 数据创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; + /** + * 数据创建人 + */ + @TableField(value = "create_user") + private String createUser; + /** + * 数据创建人名称 + */ + @TableField(value = "create_user_name") + private String createUserName; +} diff --git a/src/main/java/com/lunhan/water/repository/po/UserLoginPO.java b/src/main/java/com/lunhan/water/repository/po/UserLoginPO.java new file mode 100644 index 0000000..82e8cb7 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/po/UserLoginPO.java @@ -0,0 +1,110 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.po; + +import lombok.Data; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; + +/** + * UserLogin + * @author lin.liu + */ +@Data +@TableName("user_login") +public class UserLoginPO implements Serializable { + /** + * 主键 + */ + private Long id; + /** + * 用户名 + */ + @TableField(value = "user_name") + private String userName; + /** + * 密码 + */ + @TableField(value = "password") + private String password; + /** + * 支付密码 + */ + @TableField(value = "payment_password") + private String paymentPassword; + /** + * 微信open id + */ + @TableField(value = "wx_open_id") + private String wxOpenId; + /** + * 昵称 + */ + @TableField(value = "nick_name") + private String nickName; + /** + * 联系电话 + */ + @TableField(value = "phone") + private String phone; + /** + * 头像地址 + */ + @TableField(value = "head_img") + private String headImg; + /** + * 状态 EState + */ + @TableField(value = "status") + private Integer status; + /** + * 余额 + */ + @TableField(value = "balance") + private BigDecimal balance; + /** + * 备注 + */ + @TableField(value = "comment") + private String comment; + /** + * 是否删除(逻辑删除) + */ + @TableLogic + @TableField(value = "is_delete") + private Integer isDelete; + /** + * 数据创建时间 + */ + @TableField(value = "create_time") + private Long createTime; + /** + * 数据更新时间 + */ + @TableField(value = "update_time") + private Timestamp updateTime; +} diff --git a/src/main/java/com/lunhan/water/repository/vo/PaymentRecordsVO.java b/src/main/java/com/lunhan/water/repository/vo/PaymentRecordsVO.java new file mode 100644 index 0000000..5b68726 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/PaymentRecordsVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.PaymentRecordsPO; + +/** + * PaymentRecords + * @author lin.liu + */ +@Data +public class PaymentRecordsVO extends PaymentRecordsPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/RechargeOrderVO.java b/src/main/java/com/lunhan/water/repository/vo/RechargeOrderVO.java new file mode 100644 index 0000000..cd0278c --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/RechargeOrderVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.RechargeOrderPO; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Data +public class RechargeOrderVO extends RechargeOrderPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/RechargeRecordsVO.java b/src/main/java/com/lunhan/water/repository/vo/RechargeRecordsVO.java new file mode 100644 index 0000000..bca7fb3 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/RechargeRecordsVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.RechargeRecordsPO; + +/** + * 充值记录 + * @author lin.liu + */ +@Data +public class RechargeRecordsVO extends RechargeRecordsPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/RefundRecordVO.java b/src/main/java/com/lunhan/water/repository/vo/RefundRecordVO.java new file mode 100644 index 0000000..ac20978 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/RefundRecordVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.RefundRecordPO; + +/** + * 退款记录 + * @author lin.liu + */ +@Data +public class RefundRecordVO extends RefundRecordPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/SysRegionVO.java b/src/main/java/com/lunhan/water/repository/vo/SysRegionVO.java new file mode 100644 index 0000000..7741e03 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/SysRegionVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.SysRegionPO; + +/** + * 系统行政地区 + * @author lin.liu + */ +@Data +public class SysRegionVO extends SysRegionPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/TradeRecordVO.java b/src/main/java/com/lunhan/water/repository/vo/TradeRecordVO.java new file mode 100644 index 0000000..99034d8 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/TradeRecordVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.TradeRecordPO; + +/** + * 支付记录 + * @author lin.liu + */ +@Data +public class TradeRecordVO extends TradeRecordPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/UserCapitalChangeVO.java b/src/main/java/com/lunhan/water/repository/vo/UserCapitalChangeVO.java new file mode 100644 index 0000000..9c8cfde --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/UserCapitalChangeVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.UserCapitalChangePO; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Data +public class UserCapitalChangeVO extends UserCapitalChangePO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/repository/vo/UserLoginVO.java b/src/main/java/com/lunhan/water/repository/vo/UserLoginVO.java new file mode 100644 index 0000000..f5804a8 --- /dev/null +++ b/src/main/java/com/lunhan/water/repository/vo/UserLoginVO.java @@ -0,0 +1,54 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.repository.vo; + +import lombok.Data; + +import com.lunhan.water.common.util.LocalDateTimeUtil; +import com.lunhan.water.common.util.NumericUtil; +import java.util.Objects; +import com.lunhan.water.repository.po.UserLoginPO; + +/** + * UserLogin + * @author lin.liu + */ +@Data +public class UserLoginVO extends UserLoginPO implements BasicVO { + + @Override + public String getCreateTimeView() { + if (NumericUtil.tryParseLong(this.getCreateTime()).compareTo(0L) > 0) { + return LocalDateTimeUtil.toFormatString(this.getCreateTime()); + } + return ""; + } + + @Override + public String getUpdateTimeView() { + if (Objects.isNull(this.getUpdateTime())) { + return ""; + } + return LocalDateTimeUtil.toFormatFullString(this.getUpdateTime()); + } +} diff --git a/src/main/java/com/lunhan/water/service/PaymentRecordsService.java b/src/main/java/com/lunhan/water/service/PaymentRecordsService.java new file mode 100644 index 0000000..366160b --- /dev/null +++ b/src/main/java/com/lunhan/water/service/PaymentRecordsService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.PaymentRecordsMapperImpl; +import com.lunhan.water.repository.po.PaymentRecordsPO; +import com.lunhan.water.entity.request.paymentrecords.ReqCreatePaymentRecords; +import com.lunhan.water.entity.request.paymentrecords.ReqModifyPaymentRecords; +import com.lunhan.water.entity.search.SearchPaymentRecords; +import com.lunhan.water.repository.vo.PaymentRecordsVO; +import com.lunhan.water.service.convert.PaymentRecordsConvert; + +/** + * PaymentRecords + * @author lin.liu + */ +@Service +public class PaymentRecordsService extends BaseService { + @Autowired + private PaymentRecordsMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreatePaymentRecords request) { + // 转换po + PaymentRecordsPO item = PaymentRecordsConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[null]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyPaymentRecords request) { + // 验证记录是否存在 + ExecutedResult<PaymentRecordsPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + PaymentRecordsPO item = PaymentRecordsConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[null]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<PaymentRecordsVO> get(Long id) { + PaymentRecordsVO result = new PaymentRecordsVO(); + + PaymentRecordsPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = PaymentRecordsConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<PaymentRecordsPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// PaymentRecordsPO item = new PaymentRecordsPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<PaymentRecordsPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// PaymentRecordsPO item = new PaymentRecordsPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<PaymentRecordsPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// PaymentRecordsPO item = new PaymentRecordsPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[null]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<PaymentRecordsPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<PaymentRecordsPO> listUpdate = request.getList().stream() +// .map(c -> { +// PaymentRecordsPO item = new PaymentRecordsPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[null]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[null]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<PaymentRecordsVO>> getList(List<Long> listId) { + List<PaymentRecordsVO> result = new ArrayList<>(); + + List<PaymentRecordsPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = PaymentRecordsConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<PaymentRecordsVO>> search(SearchPaymentRecords search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<PaymentRecordsPO> pageList = mapper.search(search); + List<PaymentRecordsVO> listVo = new ArrayList<>(); + List<PaymentRecordsPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = PaymentRecordsConvert.INSTANCE.toVo(list); + } + PagerResult<PaymentRecordsVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<PaymentRecordsPO> check4Id(Long id) { + PaymentRecordsPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[null]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<PaymentRecordsPO>> check4Id(List<Long> listId) { + // 从数据库查找null + List<PaymentRecordsPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[null]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(PaymentRecordsPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的null + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[null]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/PaymentServices.java b/src/main/java/com/lunhan/water/service/PaymentServices.java new file mode 100644 index 0000000..1452abd --- /dev/null +++ b/src/main/java/com/lunhan/water/service/PaymentServices.java @@ -0,0 +1,645 @@ +package com.lunhan.water.service; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.gson.JsonObject; +import com.lunhan.water.common.ConstantFactory; +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.config.SysConfig; +import com.lunhan.water.common.enums.ELogger; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.jwt.LoginUserDTO; +import com.lunhan.water.common.util.*; +import com.lunhan.water.common.wechat.WechatAuthorization; +import com.lunhan.water.common.wechat.WechatPayV3Util; +import com.lunhan.water.common.wechat.req.*; +import com.lunhan.water.common.wechat.res.ResWeiXinRefund; +import com.lunhan.water.entity.enums.*; +import com.lunhan.water.entity.request.pay.ReqCreatePay; +import com.lunhan.water.entity.request.pay.ReqOrderPay; +import com.lunhan.water.entity.request.pay.ReqPayRefund; + +import com.lunhan.water.repository.impl.*; +import com.lunhan.water.repository.po.*; +import org.slf4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +@Service +public class PaymentServices { + // 微信公众号推送消息模板id + private static final Logger log = LoggerUtil.get(PaymentServices.class); + private Logger logger = LoggerUtil.get(this.getClass()); + private Logger loggerPay = LoggerUtil.get(ELogger.PAY_SERVICE); + @Autowired + private PaymentRecordsMapperImpl paymentRecordsMapper; + @Autowired + private RechargeOrderMapperImpl rechargeOrderMapper; + @Autowired + private UserLoginMapperImpl userLoginMapper; + @Autowired + private RefundRecordMapperImpl refundRecordDao; + @Autowired + private RechargeRecordsMapperImpl dao; + @Autowired + private UserCapitalChangeMapperImpl capitalChangeDao; + @Autowired + private TradeRecordMapperImpl tradeRecordDao; + + + + /** + * 发起微信支付 + * + * @param loginUser 登录用户信息 + * @param request 请求参数 + */ + @Transactional(rollbackFor = Exception.class) + public ExecutedResult<Map<String, Object>> weiXinPay(LoginUserDTO loginUser, ReqCreatePay request) { + EBusinessType type = EBusinessType.getByValue(request.getBusinessType()); + if (Objects.isNull(type)) { + return ExecutedResult.failed("业务不支持." + request.getBusinessType()); + } + String callbackUrl = SysConfig.weiXinPay.getNotifyBasicUrl() + String.format("/notify/pay/%s/%s/%s", + EPaymentChannel.WE_CHAT.getValue(), + EPayWay.SCAN_DYNAMIC.getValue(), + request.getBusinessType() + ); + //查询支付用户信息 + UserLoginPO user = userLoginMapper.get4Openid(loginUser.getUserId()); + if (Objects.isNull(user)) { + return ExecutedResult.failed("用户信息不存在!"); + } + switch (type) { + case RECHARGE: + //查询充值订单 + RechargeOrderPO rechargeOrderPO = rechargeOrderMapper.getByOrderNo(request.getBusinessNo()); + if (Objects.isNull(rechargeOrderPO)) { + return ExecutedResult.failed("未查询到充值订单!"); + } + //修改充值订单为支付中 + rechargeOrderPO.setPayState(EPayState.PAYING.getValue()); + rechargeOrderMapper.updateById(rechargeOrderPO); + //获取订单金额 + request.setTradeAmount(rechargeOrderPO.getPaymentAmount()); + request.setWechatOpenid(user.getWxOpenId()); + request.setBusinessComment("用户充值"); + //添加充值记录 + RechargeRecordsPO item = new RechargeRecordsPO(); + item.setRechargeOrder(request.getBusinessNo()); + item.setRechargeType(ERechargeType.MOBILE.getDesc()); + item.setPaymentMethod(EPayType.WX_PAY.getDesc()); + item.setRechargeStatus(EYesOrNo.NO.getValue()); + item.setRechargeAmount(request.getTradeAmount()); + item.setComment("水卡充值"); + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + item.setCreateUser(loginUser.getUserId()); + item.setCreateUserName(loginUser.getNickName()); + dao.insert(item); + break; + } + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + // 生成支付流水记录 + TradeRecordPO trade = new TradeRecordPO(); + trade.setTradeNo("TN" + SnowFlakeUtil.getId()); + trade.setTradeAmount(request.getTradeAmount()); + trade.setBusinessType(request.getBusinessType()); + trade.setBusinessNo(request.getBusinessNo()); + trade.setBusinessComment(request.getBusinessComment()); + trade.setPaymentChannel(EPaymentChannel.WE_CHAT.getValue()); + trade.setChannelName(EPaymentChannel.WE_CHAT.getDesc()); + trade.setPayWay(EPayWay.SCAN_DYNAMIC.getValue()); + trade.setPayWayName(EPayWay.SCAN_DYNAMIC.getDesc()); + // 这里不需要通知第三方,回调地址为空 + trade.setCallbackUrl(""); + trade.setThirdTradeNo(""); + trade.setSubmitTime(0L); + trade.setSubmitTimeView(""); + trade.setPayState(EPayState.WAITING.getValue()); + trade.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + + int createTrade = tradeRecordDao.insert(trade); + if (createTrade < 1) { + return ExecutedResult.failed("发起支付失败: 创建支付流水失败."); + } + // 发起微信支付 + ExecutedResult<Map<String, Object>> doWeiXinPay = this.doWeiXinPay(request, trade.getTradeNo(), callbackUrl); + if (doWeiXinPay.isFailed()) { + return ExecutedResult.failed(doWeiXinPay.getMsg(), doWeiXinPay.getMsgCode()); + } + TradeRecordPO upd = new TradeRecordPO(); + upd.setId(trade.getId()); + upd.setPayState(EPayState.PAYING.getValue()); + upd.setSubmitTime(now); + upd.setSubmitTimeView(nowView); + int modifyTrade = tradeRecordDao.updateById(upd); + if (modifyTrade < 1) { + return ExecutedResult.failed("回写微信支付状态失败!"); + } + return doWeiXinPay; + } + + /** + * 发起微信支付 + * + * @param request 支付请求参数 + * @param tradeCode 支付流水号 + * @param callbackUrl 支付结果通知地址 + */ + private ExecutedResult<Map<String, Object>> doWeiXinPay(ReqCreatePay request, String tradeCode, String callbackUrl) { + String merchantId = SysConfig.weiXinPay.getMerchantId(); + // 支付证书序列号 + String certificateSerialNo = SysConfig.weiXinPay.getCertificateSn(); + // 支付证书私钥存放路径 + String privateKeyPath = SysConfig.weiXinPay.getPrivateKeyPath(); + String appID = SysConfig.weiXinPay.getAppID(); + + ReqCreateWechatPay reqPay = new ReqCreateWechatPay(); + reqPay.setAppid(appID); + reqPay.setMchid(merchantId); + reqPay.setOut_trade_no(tradeCode); + reqPay.setDescription(request.getBusinessComment()); + reqPay.setNotify_url(""); + if (StringUtil.isNotNullOrEmpty(callbackUrl)) { + reqPay.setNotify_url(callbackUrl); + } + // 微信支付,金额单位为“分”,这里需要乘以100 + Long amount = Long.parseLong(NumericUtil.toNumberString(request.getTradeAmount().multiply(new BigDecimal(ConstantFactory.NUM100)), 0)); + reqPay.setAmount(new CreatePay_Amount() {{ + setTotal(amount); + }}); + reqPay.setPayer(new CreatePay_Payer() {{ + setOpenid(request.getWechatOpenid()); + }}); + + WechatAuthorization author = new WechatAuthorization( + merchantId, + certificateSerialNo, + privateKeyPath + ); + + String wxTradeCode = ""; + try { + loggerPay.info("发起微信支付: " + SerializeUtil.toJson(reqPay)); + ExecutedResult<String> createPay = WechatPayV3Util.createPay(reqPay, author); + loggerPay.info("发起微信支付-结果: " + SerializeUtil.toJson(createPay)); + if (createPay.isFailed()) { + return ExecutedResult.failed("发起第三方支付失败: " + createPay.getMsg(), createPay.getMsgCode()); + } + wxTradeCode = createPay.getData(); + } catch (Exception e) { + return ExecutedResult.failed("发起第三方支付失败: " + e.getMessage()); + } + String prepayId = wxTradeCode; + + Map<String, Object> result = new HashMap<>(); + + String timeStamp = LocalDateTimeUtil.nowTimeStampStr(); + String randomStr = RandVerifyCode.complexCode(10); + result.put("appId", appID); + result.put("timeStamp", timeStamp); + result.put("nonceStr", randomStr); + prepayId = "prepay_id=" + prepayId; + result.put("package", prepayId); + result.put("signType", "RSA"); + + String signText = appID + "\n" + timeStamp + "\n" + randomStr + "\n" + prepayId + "\n"; + String paySign = author.sign(signText.getBytes(StandardCharsets.UTF_8)); + result.put("paySign", paySign); + + loggerPay.info("发起微信支付-返回前端: " + SerializeUtil.toJson(result)); + return ExecutedResult.success(result); + } + + /** + * 支付退款 + * + * @param request 请求参数 + * @return 退款流水号 + */ + public ExecutedResult<String> weiXinRefund(ReqPayRefund request) { + TradeRecordPO trade = tradeRecordDao.get4Business(request.getBusinessType(), request.getBusinessNo()); + if (Objects.isNull(trade) || !Objects.equals(trade.getBusinessNo(), request.getBusinessNo())) { + return ExecutedResult.failed("支付流水不存在!" + request.getBusinessNo()); + } + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + // 添加退款记录 + RefundRecordPO refund = new RefundRecordPO(); + refund.setRefundNo("RN" + SnowFlakeUtil.getId()); + refund.setTradeNo(trade.getTradeNo()); + refund.setTradeAmount(trade.getPaidAmount()); + refund.setRefundAmount(request.getRefundAmount()); + refund.setBusinessType(request.getBusinessType()); + refund.setBusinessNo(request.getBusinessNo()); + refund.setBusinessComment(request.getBusinessComment()); + refund.setPaymentChannel(trade.getPaymentChannel()); + refund.setChannelName(trade.getChannelName()); + refund.setPayWay(trade.getPayWay()); + refund.setPayWayName(trade.getPayWayName()); + // 这里不需要通知第三方,回调地址为空 + refund.setCallbackUrl(""); + + refund.setThirdRefundNo(""); + refund.setSubmitTime(0L); + refund.setSubmitTimeView(""); + refund.setNotifyTime(0L); + refund.setNotifyTimeView(""); + refund.setRefundTime(0L); + refund.setRefundTimeView(""); + refund.setThirdRefundAmount(BigDecimal.ZERO); + refund.setClosedTime(0L); + refund.setClosedTimeView(""); + refund.setClosedComment(""); + refund.setComment(""); + refund.setRefundState(ERefundState.WAITING.getValue()); + refund.setCreateTime(now); + + int addRefund = refundRecordDao.insert(refund); + if (addRefund < 1) { + return ExecutedResult.failed("创建退款失败!"); + } + ExecutedResult<String> doWeiXinRefund = this.doWeiXinRefund(request, trade, refund.getRefundNo(), SysConfig.weiXinPay.getNotifyBasicUrl() + String.format("/notify/refund/%s/%s/%s", + refund.getPaymentChannel(), + refund.getPayWay(), + refund.getBusinessType()) + ); + if (doWeiXinRefund.isFailed()) { + return ExecutedResult.failed(doWeiXinRefund.getMsg(), doWeiXinRefund.getMsgCode()); + } + RefundRecordPO upd = new RefundRecordPO(); + upd.setId(refund.getId()); + upd.setRefundState(ERefundState.REFUNDING.getValue()); + upd.setSubmitTime(now); + upd.setSubmitTimeView(nowView); + int modifyRefund = refundRecordDao.updateById(upd); + if (modifyRefund < 1) { + return ExecutedResult.failed("回写退款状态失败!"); + } + return ExecutedResult.success(refund.getRefundNo()); + } + + private ExecutedResult<String> doWeiXinRefund(ReqPayRefund request, TradeRecordPO trade, String refundNo, String callbackUrl) { + String certificateSerialNo = SysConfig.weiXinPay.getCertificateSn(); + // 支付证书私钥存放路径 + String privateKeyPath = SysConfig.weiXinPay.getPrivateKeyPath(); + + Integer total = Integer.parseInt(NumericUtil.toNumberString(trade.getPaidAmount().multiply(new BigDecimal(ConstantFactory.NUM100.toString())), 0)); + Integer refundAmount = Integer.parseInt(NumericUtil.toNumberString(request.getRefundAmount().multiply(new BigDecimal(ConstantFactory.NUM100.toString())), 0)); + WeiXinRefund_Amount amount = new WeiXinRefund_Amount(); + amount.setTotal(total); + amount.setRefund(refundAmount); + amount.setCurrency("CNY"); + + ReqCreateWeiXinRefund reqWeiXinRefund = new ReqCreateWeiXinRefund(); + reqWeiXinRefund.setTransaction_id(trade.getThirdTradeNo()); + reqWeiXinRefund.setOut_refund_no(refundNo); + reqWeiXinRefund.setAmount(amount); + reqWeiXinRefund.setReason(request.getBusinessComment()); + reqWeiXinRefund.setNotify_url(callbackUrl); + WechatAuthorization author = new WechatAuthorization( + SysConfig.weiXinPay.getMerchantId(), + certificateSerialNo, + privateKeyPath + ); + try { + ExecutedResult<ResWeiXinRefund> createRefund = WechatPayV3Util.createRefund(reqWeiXinRefund, author); + if (createRefund.isFailed()) { + return ExecutedResult.failed("发起第三方支付失败: " + createRefund.getMsg(), createRefund.getMsgCode()); + } + // 这里不回写微信的退款流水号,统一到退款通知时回写 + } catch (Exception e) { + return ExecutedResult.failed("发起第三方支付失败: " + e.getMessage()); + } + return ExecutedResult.success(); + } + + /** + * 执行支付成功 + * + * @param tradeNo 支付流水号 + * @param thirdTradeNo 第三方支付流水号 + * @param paidAmount 实际支付金额 + * @param payTime 支付完成时间 + */ + public ExecutedResult<String> doPaidSuccess(String tradeNo, String thirdTradeNo, BigDecimal paidAmount, LocalDateTime payTime) { + ExecutedResult<TradeRecordPO> checkTrade = this.checkTrade(tradeNo); + if (checkTrade.isFailed()) { + return ExecutedResult.failed(checkTrade.getMsg()); + } + TradeRecordPO trade = checkTrade.getData(); + // 重复通知 + if (Objects.equals(trade.getPayState(), EPayState.SUCCESS.getValue())) { + return ExecutedResult.success(); + } + if (!Objects.equals(trade.getPayState(), EPayState.PAYING.getValue())) { + return ExecutedResult.success(); + } + EBusinessType type = EBusinessType.getByValue(trade.getBusinessType()); + switch (type) { + case RECHARGE: + //充值订单 + RechargeRecordsPO recordsPO = dao.getByRechargeOrder(trade.getBusinessNo()); + LoggerUtil.get(ELogger.PAY_SERVICE).info(trade.getBusinessNo() + ", 查找支付流水: " + SerializeUtil.toJson(recordsPO)); + if (recordsPO.getRechargeStatus() == 0) { + //修改充值记录中的充值状态=1 + recordsPO.setRechargeStatus(1); + dao.updateById(recordsPO); + + RechargeOrderPO rechargeOrderPO = rechargeOrderMapper.getByOrderNo(trade.getBusinessNo()); + if (Objects.nonNull(rechargeOrderPO)) { + //修改充值订单为已充值 + rechargeOrderPO.setPayType(EPayType.WX_PAY.getValue()); + rechargeOrderPO.setPayTime(LocalDateTimeUtil.nowTimeStamp()); + rechargeOrderPO.setPayState(EPayState.SUCCESS.getValue()); + rechargeOrderMapper.updateById(rechargeOrderPO); + //修改用户余额 + UserLoginPO user = userLoginMapper.getById(rechargeOrderPO.getUserId()); + UserLoginPO userLoginPO = new UserLoginPO(); + userLoginPO.setId(user.getId()); + //余额加上交易金额=充值后的余额 + userLoginPO.setBalance(userLoginPO.getBalance().add(trade.getTradeAmount())); + int modify = userLoginMapper.updateById(userLoginPO); + //添加资金明细记录 + UserCapitalChangePO changePO = new UserCapitalChangePO(); + changePO.setUserId(user.getId()); + changePO.setBusiness(ECapitalChange.MOBILE_Recharge.getValue()); + changePO.setBusinessName(ECapitalChange.MOBILE_Recharge.getDesc()); + changePO.setBusinessCode(recordsPO.getRechargeOrder()); + changePO.setChangeMoney(paidAmount); + changePO.setBeforeMoney(user.getBalance()); + changePO.setAfterMoney(userLoginPO.getBalance()); + changePO.setDescription("微信充值"); + changePO.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + changePO.setCreateUser("0"); + changePO.setCreateUserName("系统"); + int addCapitalChange = capitalChangeDao.insert(changePO); + LoggerUtil.get(ELogger.PAY_SERVICE).info("添加资金变动: " + addCapitalChange); + } + + } + break; + } + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + TradeRecordPO upd = new TradeRecordPO(); + upd.setId(trade.getId()); + upd.setNotifyTime(now); + upd.setNotifyTimeView(nowView); + upd.setThirdTradeNo(thirdTradeNo); + upd.setPayState(EPayState.SUCCESS.getValue()); + upd.setPaidTime(LocalDateTimeUtil.getTimeStamp(payTime).getTime()); + upd.setPaidTimeView(LocalDateTimeUtil.toFormatFullString(payTime)); + upd.setPaidAmount(paidAmount); + upd.setCanRefund(EYesOrNo.YES.getValue()); + int updateTrade = tradeRecordDao.updateById(upd); + if (updateTrade < 1) { + return ExecutedResult.failed("修改支付流水状态失败!"); + } + if (StringUtil.isNotNullOrEmpty(trade.getBusinessCallbackUrl())) { + JsonObject data = new JsonObject(); + data.addProperty("isSuccess", Boolean.TRUE); + data.addProperty("errorMsg", ""); + data.addProperty("businessNo", trade.getBusinessNo()); + data.addProperty("tradeAmount", trade.getTradeAmount()); + data.addProperty("paidAmount", paidAmount); + String timeStr = ""; + if (Objects.isNull(payTime)) { + timeStr = LocalDateTimeUtil.toFormatString(payTime); + } + data.addProperty("paidTime", timeStr); + + ThreadPoolUtil.getDefaultPool().execute(() -> { + try { + logger.info("通知业务方支付结果: " + data); + String response = HttpUtil.postJson(trade.getBusinessCallbackUrl(), data, new HashMap<>()); + logger.info("通知业务方支付结果-返回: " + response); + } catch (Exception e) { + logger.error("通知业务方支付结果失败!", e); + } + }); + } + return ExecutedResult.success(); + } + + + /** + * 校验支付流水号是否存在 + * + * @param tradeNo 支付流水号 + */ + public ExecutedResult<TradeRecordPO> checkTrade(String tradeNo) { + TradeRecordPO trade = tradeRecordDao.get4TradeNo(tradeNo); + if (Objects.isNull(trade) || !Objects.equals(trade.getTradeNo(), tradeNo)) { + return ExecutedResult.failed("支付流水不存在!" + tradeNo); + } + return ExecutedResult.success(trade); + } + + /** + * 校验退款流水号是否存在 + * + * @param refundNo 退款流水号 + */ + public ExecutedResult<RefundRecordPO> checkRefund(String refundNo) { + RefundRecordPO refund = refundRecordDao.get4RefundNo(refundNo); + if (Objects.isNull(refund) || !Objects.equals(refund.getRefundNo(), refundNo)) { + return ExecutedResult.failed("退款流水不存在!" + refundNo); + } + return ExecutedResult.success(refund); + } + + /** + * 执行支付失败 + * + * @param tradeNo 支付流水号 + * @param thirdTradeNo 第三方支付流水号 + * @param reason 失败原因 + */ + public ExecutedResult<String> doPaidFailed(String tradeNo, String thirdTradeNo, String reason) { + ExecutedResult<TradeRecordPO> checkTrade = this.checkTrade(tradeNo); + if (checkTrade.isFailed()) { + return ExecutedResult.failed(checkTrade.getMsg()); + } + TradeRecordPO trade = checkTrade.getData(); + // 重复通知 + if (Objects.equals(trade.getPayState(), EPayState.FAILED.getValue())) { + return ExecutedResult.success(); + } + if (!Objects.equals(trade.getPayState(), EPayState.PAYING.getValue())) { + return ExecutedResult.success(); + } + + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + EBusinessType type = EBusinessType.getByValue(trade.getBusinessType()); + switch (type) { + case RECHARGE: + //充值订单 + RechargeRecordsPO recordsPO = dao.getByRechargeOrder(trade.getBusinessNo()); + LoggerUtil.get(ELogger.PAY_SERVICE).info(trade.getBusinessNo() + ", 查找支付流水: " + SerializeUtil.toJson(recordsPO)); + if (recordsPO != null) { + RechargeRecordsPO updRecharge = new RechargeRecordsPO(); + updRecharge.setId(recordsPO.getId()); + updRecharge.setComment("充值失败!" + reason); + dao.updateById(updRecharge); + } + break; + } + TradeRecordPO upd = new TradeRecordPO(); + upd.setId(trade.getId()); + upd.setNotifyTime(now); + upd.setNotifyTimeView(nowView); + upd.setThirdTradeNo(thirdTradeNo); + upd.setPayState(EPayState.FAILED.getValue()); + upd.setClosedComment("微信返回支付失败: " + reason); + + int updateTrade = tradeRecordDao.updateById(upd); + if (updateTrade < 1) { + return ExecutedResult.failed("修改支付流水状态失败!"); + } + if (StringUtil.isNotNullOrEmpty(trade.getBusinessCallbackUrl())) { + JsonObject data = new JsonObject(); + data.addProperty("isSuccess", Boolean.FALSE); + data.addProperty("errorMsg", reason); + data.addProperty("businessNo", trade.getBusinessNo()); + data.addProperty("tradeAmount", trade.getTradeAmount()); + data.addProperty("paidAmount", BigDecimal.ZERO); + data.addProperty("paidTime", ""); + + ThreadPoolUtil.getDefaultPool().execute(() -> { + try { + logger.info("通知业务方支付结果: " + data); + String response = HttpUtil.postJson(trade.getBusinessCallbackUrl(), data, new HashMap<>()); + logger.info("通知业务方支付结果-返回: " + response); + } catch (Exception e) { + logger.error("通知业务方支付结果失败!", e); + } + }); + } + return ExecutedResult.success(); + } + + /** + * 执行退款成功 + * + * @param refundNo 退款流水号 + * @param thirdRefundNo 第三方退款流水号 + * @param refundAmount 实际退款金额 + * @param refundTime 退款成功时间 + * @return + */ + public ExecutedResult<String> doRefundSuccess(String refundNo, String thirdRefundNo, BigDecimal refundAmount, LocalDateTime refundTime) { + ExecutedResult<RefundRecordPO> checkTrade = this.checkRefund(refundNo); + if (checkTrade.isFailed()) { + return ExecutedResult.failed(checkTrade.getMsg()); + } + RefundRecordPO refund = checkTrade.getData(); + + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + + RefundRecordPO upd = new RefundRecordPO(); + upd.setId(refund.getId()); + upd.setNotifyTime(now); + upd.setNotifyTimeView(nowView); + upd.setThirdRefundNo(thirdRefundNo); + upd.setRefundState(ERefundState.SUCCESS.getValue()); + upd.setRefundTime(LocalDateTimeUtil.getTimeStamp(refundTime).getTime()); + upd.setRefundTimeView(LocalDateTimeUtil.toFormatFullString(refundTime)); + upd.setRefundAmount(refundAmount); + int updateTrade = refundRecordDao.updateById(upd); + if (updateTrade < 1) { + return ExecutedResult.failed("修改退款流水状态失败!"); + } + if (StringUtil.isNotNullOrEmpty(refund.getCallbackUrl())) { + JsonObject data = new JsonObject(); + data.addProperty("isSuccess", Boolean.TRUE); + data.addProperty("errorMsg", ""); + data.addProperty("businessNo", refund.getBusinessNo()); + data.addProperty("paidAmount", refund.getTradeAmount()); + data.addProperty("tradeAmount", refund.getRefundAmount()); + data.addProperty("refundAmount", refundAmount); + String timeStr = ""; + if (Objects.isNull(refundTime)) { + timeStr = LocalDateTimeUtil.toFormatString(refundTime); + } + data.addProperty("refundTime", timeStr); + + ThreadPoolUtil.getDefaultPool().execute(() -> { + try { + logger.info("通知业务方退款结果: " + data); + String response = HttpUtil.postJson(refund.getBusinessCallbackUrl(), data, new HashMap<>()); + logger.info("通知业务方退款结果-返回: " + response); + } catch (Exception e) { + logger.error("通知业务方退款结果失败!", e); + } + }); + } + return ExecutedResult.success(); + } + + /** + * 执行退款失败 + * + * @param refundNo 退款流水号 + * @param thirdRefundNo 第三方退款流水号 + * @param reason 失败原因 + */ + public ExecutedResult<String> doRefundFailed(String refundNo, String thirdRefundNo, String reason) { + ExecutedResult<RefundRecordPO> checkTrade = this.checkRefund(refundNo); + if (checkTrade.isFailed()) { + return ExecutedResult.failed(checkTrade.getMsg()); + } + RefundRecordPO refund = checkTrade.getData(); + + Long now = LocalDateTimeUtil.nowTimeStamp(); + String nowView = LocalDateTimeUtil.nowDateTimeFullStr(); + + RefundRecordPO upd = new RefundRecordPO(); + upd.setId(refund.getId()); + upd.setNotifyTime(now); + upd.setNotifyTimeView(nowView); + upd.setThirdRefundNo(thirdRefundNo); + upd.setRefundState(ERefundState.FAILED.getValue()); + upd.setClosedComment("微信返回退款失败: " + reason); + + int updateTrade = refundRecordDao.updateById(upd); + if (updateTrade < 1) { + return ExecutedResult.failed("修改退款流水状态失败!"); + } + if (StringUtil.isNotNullOrEmpty(refund.getBusinessCallbackUrl())) { + JsonObject data = new JsonObject(); + data.addProperty("isSuccess", Boolean.FALSE); + data.addProperty("errorMsg", reason); + data.addProperty("businessNo", refund.getBusinessNo()); + data.addProperty("paidAmount", refund.getTradeAmount()); + data.addProperty("tradeAmount", refund.getRefundAmount()); + data.addProperty("refundAmount", BigDecimal.ZERO); + data.addProperty("refundTime", ""); + + ThreadPoolUtil.getDefaultPool().execute(() -> { + try { + logger.info("通知业务方退款结果: " + data); + String response = HttpUtil.postJson(refund.getBusinessCallbackUrl(), data, new HashMap<>()); + logger.info("通知业务方退款结果-返回: " + response); + } catch (Exception e) { + logger.error("通知业务方退款结果失败!", e); + } + }); + } + return ExecutedResult.success(); + } + +} diff --git a/src/main/java/com/lunhan/water/service/RechargeOrderService.java b/src/main/java/com/lunhan/water/service/RechargeOrderService.java new file mode 100644 index 0000000..7f57680 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/RechargeOrderService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.RechargeOrderMapperImpl; +import com.lunhan.water.repository.po.RechargeOrderPO; +import com.lunhan.water.entity.request.rechargeorder.ReqCreateRechargeOrder; +import com.lunhan.water.entity.request.rechargeorder.ReqModifyRechargeOrder; +import com.lunhan.water.entity.search.SearchRechargeOrder; +import com.lunhan.water.repository.vo.RechargeOrderVO; +import com.lunhan.water.service.convert.RechargeOrderConvert; + +/** + * 用户充值订单 + * @author lin.liu + */ +@Service +public class RechargeOrderService extends BaseService { + @Autowired + private RechargeOrderMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateRechargeOrder request) { + // 转换po + RechargeOrderPO item = RechargeOrderConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[用户充值订单]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyRechargeOrder request) { + // 验证记录是否存在 + ExecutedResult<RechargeOrderPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + RechargeOrderPO item = RechargeOrderConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[用户充值订单]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<RechargeOrderVO> get(Long id) { + RechargeOrderVO result = new RechargeOrderVO(); + + RechargeOrderPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = RechargeOrderConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RechargeOrderPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeOrderPO item = new RechargeOrderPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[用户充值订单]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RechargeOrderPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeOrderPO item = new RechargeOrderPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[用户充值订单]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<RechargeOrderPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeOrderPO item = new RechargeOrderPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[用户充值订单]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<RechargeOrderPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<RechargeOrderPO> listUpdate = request.getList().stream() +// .map(c -> { +// RechargeOrderPO item = new RechargeOrderPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[用户充值订单]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[用户充值订单]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[用户充值订单]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<RechargeOrderVO>> getList(List<Long> listId) { + List<RechargeOrderVO> result = new ArrayList<>(); + + List<RechargeOrderPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = RechargeOrderConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<RechargeOrderVO>> search(SearchRechargeOrder search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<RechargeOrderPO> pageList = mapper.search(search); + List<RechargeOrderVO> listVo = new ArrayList<>(); + List<RechargeOrderPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = RechargeOrderConvert.INSTANCE.toVo(list); + } + PagerResult<RechargeOrderVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<RechargeOrderPO> check4Id(Long id) { + RechargeOrderPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[用户充值订单]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<RechargeOrderPO>> check4Id(List<Long> listId) { + // 从数据库查找用户充值订单 + List<RechargeOrderPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[用户充值订单]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(RechargeOrderPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的用户充值订单 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[用户充值订单]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/RechargeRecordsService.java b/src/main/java/com/lunhan/water/service/RechargeRecordsService.java new file mode 100644 index 0000000..54418cd --- /dev/null +++ b/src/main/java/com/lunhan/water/service/RechargeRecordsService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.RechargeRecordsMapperImpl; +import com.lunhan.water.repository.po.RechargeRecordsPO; +import com.lunhan.water.entity.request.rechargerecords.ReqCreateRechargeRecords; +import com.lunhan.water.entity.request.rechargerecords.ReqModifyRechargeRecords; +import com.lunhan.water.entity.search.SearchRechargeRecords; +import com.lunhan.water.repository.vo.RechargeRecordsVO; +import com.lunhan.water.service.convert.RechargeRecordsConvert; + +/** + * 充值记录 + * @author lin.liu + */ +@Service +public class RechargeRecordsService extends BaseService { + @Autowired + private RechargeRecordsMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateRechargeRecords request) { + // 转换po + RechargeRecordsPO item = RechargeRecordsConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[充值记录]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyRechargeRecords request) { + // 验证记录是否存在 + ExecutedResult<RechargeRecordsPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + RechargeRecordsPO item = RechargeRecordsConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[充值记录]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<RechargeRecordsVO> get(Long id) { + RechargeRecordsVO result = new RechargeRecordsVO(); + + RechargeRecordsPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = RechargeRecordsConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RechargeRecordsPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeRecordsPO item = new RechargeRecordsPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[充值记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RechargeRecordsPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeRecordsPO item = new RechargeRecordsPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[充值记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<RechargeRecordsPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RechargeRecordsPO item = new RechargeRecordsPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[充值记录]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<RechargeRecordsPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<RechargeRecordsPO> listUpdate = request.getList().stream() +// .map(c -> { +// RechargeRecordsPO item = new RechargeRecordsPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[充值记录]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[充值记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[充值记录]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<RechargeRecordsVO>> getList(List<Long> listId) { + List<RechargeRecordsVO> result = new ArrayList<>(); + + List<RechargeRecordsPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = RechargeRecordsConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<RechargeRecordsVO>> search(SearchRechargeRecords search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<RechargeRecordsPO> pageList = mapper.search(search); + List<RechargeRecordsVO> listVo = new ArrayList<>(); + List<RechargeRecordsPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = RechargeRecordsConvert.INSTANCE.toVo(list); + } + PagerResult<RechargeRecordsVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<RechargeRecordsPO> check4Id(Long id) { + RechargeRecordsPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[充值记录]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<RechargeRecordsPO>> check4Id(List<Long> listId) { + // 从数据库查找充值记录 + List<RechargeRecordsPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[充值记录]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(RechargeRecordsPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的充值记录 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[充值记录]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/RefundRecordService.java b/src/main/java/com/lunhan/water/service/RefundRecordService.java new file mode 100644 index 0000000..4a0524f --- /dev/null +++ b/src/main/java/com/lunhan/water/service/RefundRecordService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.RefundRecordMapperImpl; +import com.lunhan.water.repository.po.RefundRecordPO; +import com.lunhan.water.entity.request.refundrecord.ReqCreateRefundRecord; +import com.lunhan.water.entity.request.refundrecord.ReqModifyRefundRecord; +import com.lunhan.water.entity.search.SearchRefundRecord; +import com.lunhan.water.repository.vo.RefundRecordVO; +import com.lunhan.water.service.convert.RefundRecordConvert; + +/** + * 退款记录 + * @author lin.liu + */ +@Service +public class RefundRecordService extends BaseService { + @Autowired + private RefundRecordMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateRefundRecord request) { + // 转换po + RefundRecordPO item = RefundRecordConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[退款记录]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyRefundRecord request) { + // 验证记录是否存在 + ExecutedResult<RefundRecordPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + RefundRecordPO item = RefundRecordConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[退款记录]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<RefundRecordVO> get(Long id) { + RefundRecordVO result = new RefundRecordVO(); + + RefundRecordPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = RefundRecordConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RefundRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RefundRecordPO item = new RefundRecordPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[退款记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<RefundRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RefundRecordPO item = new RefundRecordPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[退款记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<RefundRecordPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// RefundRecordPO item = new RefundRecordPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[退款记录]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<RefundRecordPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<RefundRecordPO> listUpdate = request.getList().stream() +// .map(c -> { +// RefundRecordPO item = new RefundRecordPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[退款记录]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[退款记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[退款记录]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<RefundRecordVO>> getList(List<Long> listId) { + List<RefundRecordVO> result = new ArrayList<>(); + + List<RefundRecordPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = RefundRecordConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<RefundRecordVO>> search(SearchRefundRecord search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<RefundRecordPO> pageList = mapper.search(search); + List<RefundRecordVO> listVo = new ArrayList<>(); + List<RefundRecordPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = RefundRecordConvert.INSTANCE.toVo(list); + } + PagerResult<RefundRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<RefundRecordPO> check4Id(Long id) { + RefundRecordPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[退款记录]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<RefundRecordPO>> check4Id(List<Long> listId) { + // 从数据库查找退款记录 + List<RefundRecordPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[退款记录]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(RefundRecordPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的退款记录 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[退款记录]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/SysRegionService.java b/src/main/java/com/lunhan/water/service/SysRegionService.java new file mode 100644 index 0000000..db69a2d --- /dev/null +++ b/src/main/java/com/lunhan/water/service/SysRegionService.java @@ -0,0 +1,316 @@ +/** + # __----~~~~~~~~~~~------___ + # . . ~~//====...... __--~ ~~ + # -. \_|// |||\\ ~~~~~~::::... /~ + # ___-==_ _-~o~ \/ ||| \\ _/~~- + # __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ + # _-~~ .=~ | \\-_ '-~7 /- / || \ / + # .~ .~ | \\ -_ / /- / || \ / + # / ____ / | \\ ~-_/ /|- _/ .|| \ / + # |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ + # ' ~-| /| |-~\~~ __--~~ + # |-~~-_/ | | ~\_ _-~ /\ + # / \ \__ \/~ \__ + # _--~ _/ | .-~~____--~-/ ~~==. + # ((->/~ '.|||' -_| ~~-/ , . _|| + # -_ ~\ ~~---l__i__i__i--~~_/ + # _-~-__ ~) \--______________--~~ + # //.-~~~-~_--~- |-------~~~~~~~~ + # //.-~~~--\ + # 神兽保佑 + # 永无BUG! + */ +package com.lunhan.water.service; + +import com.lunhan.water.common.ExecutedResult; +import com.lunhan.water.common.PagerResult; +import com.lunhan.water.common.enums.EYesOrNo; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.request.sysregion.ReqCreateSysRegion; +import com.lunhan.water.entity.request.sysregion.ReqModifySysRegion; +import com.lunhan.water.entity.response.region.ResRegionTree; +import com.lunhan.water.entity.search.SearchSysRegion; +import com.lunhan.water.repository.impl.SysRegionMapperImpl; +import com.lunhan.water.repository.po.SysRegionPO; +import com.lunhan.water.repository.vo.SysRegionVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 系统行政地区 + * @author lin.liu + * @description 系统行政地区 + */ +@Service +public class SysRegionService extends BaseService { + @Autowired + private SysRegionMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateSysRegion request) { + // 转换po + SysRegionPO item = CopierUtil.mapTo(request, SysRegionPO.class); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[系统行政地区]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifySysRegion request) { + // 验证记录是否存在 + ExecutedResult<SysRegionPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + SysRegionPO item = CopierUtil.mapTo(request, SysRegionPO.class); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[系统行政地区]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<SysRegionVO> get(String code) { + SysRegionVO result = new SysRegionVO(); + + SysRegionPO find = mapper.get4Code(code); + if (null != find) { + result = CopierUtil.mapTo(find, SysRegionVO.class); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<SysRegionPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// SysRegionPO item = new SysRegionPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[系统行政地区]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<SysRegionPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// SysRegionPO item = new SysRegionPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item);\n" + +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[系统行政地区]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<SysRegionPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// SysRegionPO item = new SysRegionPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item);\n" + +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[系统行政地区]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<SysRegionPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<SysRegionPO> listUpdate = request.getList().stream() +// .map(c -> { +// SysRegionPO item = new SysRegionPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[系统行政地区]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[系统行政地区]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[系统行政地区]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<SysRegionVO>> getList(List<Long> listId) { + List<SysRegionVO> result = new ArrayList<>(); + + List<SysRegionPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + result = CopierUtil.mapTo(list, SysRegionVO.class); + } + return ExecutedResult.success(result); + } + public ExecutedResult<List<ResRegionTree>> getListChild(String code) { + List<SysRegionPO> list = null; + if (StringUtil.isNullOrEmpty(code)) { + list = mapper.getList4Level(1); + } else { + list = mapper.getList4Parent(code); + } + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.success(new ArrayList<>()); + } + return ExecutedResult.success(CopierUtil.mapTo(list, ResRegionTree.class)); + } + public void fillChildMenu(ResRegionTree view, List<SysRegionPO> list) { + List<SysRegionPO> listChild = list.stream() + .filter(c -> c.getParentCode().equals(view.getCode())) + .collect(Collectors.toList()); + view.setChildren(new ArrayList<>()); + if (ListUtil.isNullOrEmpty(listChild)) { + return; + } + listChild = listChild.stream() + .sorted(Comparator.comparing(SysRegionPO::getSort)) + .collect(Collectors.toList()); + for (SysRegionPO child : listChild) { + ResRegionTree viewChild = CopierUtil.mapTo(child, ResRegionTree.class); + this.fillChildMenu(viewChild, list); + view.getChildren().add(viewChild); + } + } + public ExecutedResult<PagerResult<SysRegionVO>> search(SearchSysRegion search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<SysRegionPO> pageList = mapper.search(search); + List<SysRegionVO> listVo = new ArrayList<>(); + List<SysRegionPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = CopierUtil.mapTo(list, SysRegionVO.class); + } + PagerResult<SysRegionVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<SysRegionPO> check4Id(Long id) { + SysRegionPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[系统行政地区]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<SysRegionPO>> check4Id(List<Long> listId) { + // 从数据库查找系统行政地区 + List<SysRegionPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[系统行政地区]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(SysRegionPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的系统行政地区 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[系统行政地区]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + } + public void fillChild(ResRegionTree view, List<SysRegionPO> list) { + List<SysRegionPO> listChild = list.stream() + .filter(c -> c.getParentCode().equals(view.getCode())) + .collect(Collectors.toList()); + view.setChildren(new ArrayList<>()); + if (ListUtil.isNullOrEmpty(listChild)) { + return; + } + listChild = listChild.stream() + .sorted(Comparator.comparing(SysRegionPO::getSort)) + .collect(Collectors.toList()); + for (SysRegionPO child : listChild) { + ResRegionTree viewChild = CopierUtil.mapTo(child, ResRegionTree.class); + this.fillChild(viewChild, list); + view.getChildren().add(viewChild); + } + } + public ExecutedResult<SysRegionPO> check4Code(String code) { + SysRegionPO exists = mapper.get4Code(code); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[系统行政地区]不存在:" + code); + } + return ExecutedResult.success(exists); + } + public ExecutedResult<ResRegionTree> currAndTree(String code) { + // 校验区域信息 + ExecutedResult<SysRegionPO> checkRegion = this.check4Code(code); + if (checkRegion.isFailed()) { + return ExecutedResult.failed(checkRegion.getMsg()); + } + SysRegionPO curr = checkRegion.getData(); + ResRegionTree result = CopierUtil.mapTo(curr, ResRegionTree.class); + + List<SysRegionPO> list = mapper.getList4LevelChild(curr.getLevel()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.success(result); + } + this.fillChild(result, list); + return ExecutedResult.success(result); + } +} diff --git a/src/main/java/com/lunhan/water/service/TradeRecordService.java b/src/main/java/com/lunhan/water/service/TradeRecordService.java new file mode 100644 index 0000000..2610f76 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/TradeRecordService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.TradeRecordMapperImpl; +import com.lunhan.water.repository.po.TradeRecordPO; +import com.lunhan.water.entity.request.traderecord.ReqCreateTradeRecord; +import com.lunhan.water.entity.request.traderecord.ReqModifyTradeRecord; +import com.lunhan.water.entity.search.SearchTradeRecord; +import com.lunhan.water.repository.vo.TradeRecordVO; +import com.lunhan.water.service.convert.TradeRecordConvert; + +/** + * 支付记录 + * @author lin.liu + */ +@Service +public class TradeRecordService extends BaseService { + @Autowired + private TradeRecordMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateTradeRecord request) { + // 转换po + TradeRecordPO item = TradeRecordConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[支付记录]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyTradeRecord request) { + // 验证记录是否存在 + ExecutedResult<TradeRecordPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + TradeRecordPO item = TradeRecordConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[支付记录]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<TradeRecordVO> get(Long id) { + TradeRecordVO result = new TradeRecordVO(); + + TradeRecordPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = TradeRecordConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<TradeRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// TradeRecordPO item = new TradeRecordPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[支付记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<TradeRecordPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// TradeRecordPO item = new TradeRecordPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[支付记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<TradeRecordPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// TradeRecordPO item = new TradeRecordPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[支付记录]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<TradeRecordPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<TradeRecordPO> listUpdate = request.getList().stream() +// .map(c -> { +// TradeRecordPO item = new TradeRecordPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[支付记录]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[支付记录]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[支付记录]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<TradeRecordVO>> getList(List<Long> listId) { + List<TradeRecordVO> result = new ArrayList<>(); + + List<TradeRecordPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = TradeRecordConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<TradeRecordVO>> search(SearchTradeRecord search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<TradeRecordPO> pageList = mapper.search(search); + List<TradeRecordVO> listVo = new ArrayList<>(); + List<TradeRecordPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = TradeRecordConvert.INSTANCE.toVo(list); + } + PagerResult<TradeRecordVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<TradeRecordPO> check4Id(Long id) { + TradeRecordPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[支付记录]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<TradeRecordPO>> check4Id(List<Long> listId) { + // 从数据库查找支付记录 + List<TradeRecordPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[支付记录]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(TradeRecordPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的支付记录 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[支付记录]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/UserCapitalChangeService.java b/src/main/java/com/lunhan/water/service/UserCapitalChangeService.java new file mode 100644 index 0000000..9a4f735 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/UserCapitalChangeService.java @@ -0,0 +1,244 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.util.*; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.UserCapitalChangeMapperImpl; +import com.lunhan.water.repository.po.UserCapitalChangePO; +import com.lunhan.water.entity.request.usercapitalchange.ReqCreateUserCapitalChange; +import com.lunhan.water.entity.request.usercapitalchange.ReqModifyUserCapitalChange; +import com.lunhan.water.entity.search.SearchUserCapitalChange; +import com.lunhan.water.repository.vo.UserCapitalChangeVO; +import com.lunhan.water.service.convert.UserCapitalChangeConvert; + +/** + * 用户资金变动 + * @author lin.liu + */ +@Service +public class UserCapitalChangeService extends BaseService { + @Autowired + private UserCapitalChangeMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateUserCapitalChange request) { + // 转换po + UserCapitalChangePO item = UserCapitalChangeConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[用户资金变动]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyUserCapitalChange request) { + // 验证记录是否存在 + ExecutedResult<UserCapitalChangePO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + UserCapitalChangePO item = UserCapitalChangeConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[用户资金变动]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<UserCapitalChangeVO> get(Long id) { + UserCapitalChangeVO result = new UserCapitalChangeVO(); + + UserCapitalChangePO find = mapper.get(id); + if (null != find) { + // 转换vo + result = UserCapitalChangeConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<UserCapitalChangePO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserCapitalChangePO item = new UserCapitalChangePO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[用户资金变动]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<UserCapitalChangePO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserCapitalChangePO item = new UserCapitalChangePO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[用户资金变动]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<UserCapitalChangePO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserCapitalChangePO item = new UserCapitalChangePO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[用户资金变动]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<UserCapitalChangePO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<UserCapitalChangePO> listUpdate = request.getList().stream() +// .map(c -> { +// UserCapitalChangePO item = new UserCapitalChangePO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[用户资金变动]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[用户资金变动]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[用户资金变动]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<UserCapitalChangeVO>> getList(List<Long> listId) { + List<UserCapitalChangeVO> result = new ArrayList<>(); + + List<UserCapitalChangePO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = UserCapitalChangeConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<UserCapitalChangeVO>> search(SearchUserCapitalChange search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<UserCapitalChangePO> pageList = mapper.search(search); + List<UserCapitalChangeVO> listVo = new ArrayList<>(); + List<UserCapitalChangePO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = UserCapitalChangeConvert.INSTANCE.toVo(list); + } + PagerResult<UserCapitalChangeVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<UserCapitalChangePO> check4Id(Long id) { + UserCapitalChangePO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[用户资金变动]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<UserCapitalChangePO>> check4Id(List<Long> listId) { + // 从数据库查找用户资金变动 + List<UserCapitalChangePO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[用户资金变动]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(UserCapitalChangePO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的用户资金变动 + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[用户资金变动]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + }} diff --git a/src/main/java/com/lunhan/water/service/UserLoginService.java b/src/main/java/com/lunhan/water/service/UserLoginService.java new file mode 100644 index 0000000..c530828 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/UserLoginService.java @@ -0,0 +1,347 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service; + +import com.lunhan.water.common.*; +import com.lunhan.water.common.enums.*; +import com.lunhan.water.common.jwt.JWTUtil; +import com.lunhan.water.common.jwt.LoginUserDTO; +import com.lunhan.water.common.model.Tuple; +import com.lunhan.water.common.security.MD5Util; +import com.lunhan.water.common.util.*; +import com.lunhan.water.entity.enums.EState; +import com.lunhan.water.entity.enums.EUserType; +import com.lunhan.water.entity.request.ReqChangePassword; +import com.lunhan.water.entity.request.ReqUserLogin; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.*; +import java.util.stream.Collectors; +import com.lunhan.water.repository.impl.UserLoginMapperImpl; +import com.lunhan.water.repository.po.UserLoginPO; +import com.lunhan.water.entity.request.userlogin.ReqCreateUserLogin; +import com.lunhan.water.entity.request.userlogin.ReqModifyUserLogin; +import com.lunhan.water.entity.search.SearchUserLogin; +import com.lunhan.water.repository.vo.UserLoginVO; +import com.lunhan.water.service.convert.UserLoginConvert; + +/** + * UserLogin + * @author lin.liu + */ +@Service +public class UserLoginService extends BaseService { + @Autowired + private UserLoginMapperImpl mapper; + + public ExecutedResult<Long> create(ReqCreateUserLogin request) { + // 转换po + UserLoginPO item = UserLoginConvert.INSTANCE.toCreate(request); + // 设置状态 + //item.setStatus(EState.NORMAL.getValue()); + // 设置记录创建时间 + item.setCreateTime(LocalDateTimeUtil.nowTimeStamp()); + // 是否删除(逻辑删除)初始值 + item.setIsDelete(EYesOrNo.NO.getValue()); + + int rowCount = mapper.insert(item); + if (rowCount != 1) { + return ExecutedResult.failed("创建[null]失败。"); + } + return ExecutedResult.success(item.getId()); + } + + public ExecutedResult<String> modify(ReqModifyUserLogin request) { + // 验证记录是否存在 + ExecutedResult<UserLoginPO> checkExists = this.check4Id(request.getId()); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + UserLoginPO item = UserLoginConvert.INSTANCE.toModify(request); + + int rowCount = mapper.updateById(item); + if (rowCount != 1) { + return ExecutedResult.failed("编辑[null]失败。"); + } + return ExecutedResult.success(); + } + + public ExecutedResult<UserLoginVO> get(Long id) { + UserLoginVO result = new UserLoginVO(); + + UserLoginPO find = mapper.get(id); + if (null != find) { + // 转换vo + result = UserLoginConvert.INSTANCE.toVo(find); + } + return ExecutedResult.success(result); + } + +// public ExecutedResult<String> stop(Long id) { +// // 验证记录是否存在 +// ExecutedResult<UserLoginPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserLoginPO item = new UserLoginPO(); +// item.setId(id); +// item.setStatus(EState.DISABLED.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("停用[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> enable(Long id) { +// // 验证记录是否存在 +// ExecutedResult<UserLoginPO> checkExists = this.check4Id(id); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserLoginPO item = new UserLoginPO(); +// item.setId(id); +// item.setStatus(EState.NORMAL.getValue()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("启用[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> setSort(ReqSetSort request) { +// // 验证记录是否存在 +// ExecutedResult<UserLoginPO> checkExists = this.check4Id(request.getId()); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// UserLoginPO item = new UserLoginPO(); +// item.setId(request.getId()); +// item.setSort(request.getSort()); +// +// int rowCount = mapper.updateById(item); +// if (rowCount != 1) { +// return ExecutedResult.failed("设置[null]排序值失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> listSetSort(ReqListSetSort request) { +// // id列表 +// List<Long> listId = request.getList().stream().map(ReqSetSort::getId).collect(Collectors.toList()); +// // 验证记录是否存在 +// ExecutedResult<List<UserLoginPO>> checkExists = this.check4Id(listId); +// if (checkExists.isFailed()) { +// return ExecutedResult.failed(checkExists.getMsg()); +// } +// +// List<UserLoginPO> listUpdate = request.getList().stream() +// .map(c -> { +// UserLoginPO item = new UserLoginPO(); +// item.setId(c.getId()); +// item.setSort(c.getSort()); +// return item; +// }) +// .collect(Collectors.toList()); +// Boolean result = mapper.modifyList(listUpdate); +// if (result) { +// return ExecutedResult.success(); +// } +// return ExecutedResult.failed("[null]设置排序值失败"); +// } +// +// public ExecutedResult<String> remove(Long id) { +// Boolean result = mapper.deleteLogic(id); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[null]失败。"); +// } +// return ExecutedResult.success(); +// } +// +// public ExecutedResult<String> removeList(List<Long> ids) { +// Boolean result = mapper.deleteLogic(ids); +// if (BooleanUtils.isFalse(result)) { +// return ExecutedResult.failed("删除[null]失败。"); +// } +// return ExecutedResult.success(); +// } + + public ExecutedResult<List<UserLoginVO>> getList(List<Long> listId) { + List<UserLoginVO> result = new ArrayList<>(); + + List<UserLoginPO> list = mapper.getList(listId); + if (ListUtil.isNotNullOrEmpty(list)) { + // 转换vo + result = UserLoginConvert.INSTANCE.toVo(list); + } + return ExecutedResult.success(result); + } + + public ExecutedResult<PagerResult<UserLoginVO>> search(SearchUserLogin search) { + // 处理创建时间范围-查询参数 + Tuple<String, String> createTimeRange = ParameterUtil.getTimeRange(search.getCreateTimeRange()); + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem1())) { + search.setCreateTimeStart(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem1()).getTime()); + } + if (StringUtil.isNotNullOrEmpty(createTimeRange.getItem2())) { + search.setCreateTimeEnd(LocalDateTimeUtil.getTimeStamp(createTimeRange.getItem2()).getTime()); + } + + PagerResult<UserLoginPO> pageList = mapper.search(search); + List<UserLoginVO> listVo = new ArrayList<>(); + List<UserLoginPO> list = pageList.getList(); + if (ListUtil.isNotNullOrEmpty(list)) { + pageList.setLastId(list.get(list.size() - 1).getId()); + // 转换vo + listVo = UserLoginConvert.INSTANCE.toVo(list); + } + PagerResult<UserLoginVO> result = new PagerResult<>(pageList.getLimit(), pageList.getPage(), pageList.getTotal(), listVo); + result.setLastId(pageList.getLastId()); + return ExecutedResult.success(result); + } + + protected ExecutedResult<UserLoginPO> check4Id(Long id) { + UserLoginPO exists = mapper.get(id); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[null]不存在:" + id); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<List<UserLoginPO>> check4Id(List<Long> listId) { + // 从数据库查找null + List<UserLoginPO> list = mapper.getList(listId); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[null]不存在." + listId); + } + // 数据库找到的id列表 + List<Long> listIdFind = list.stream().map(UserLoginPO::getId).collect(Collectors.toList()); + // 数量不一致 + if (listId.size() != listIdFind.size()) { + // 筛选数据库不存在的null + List<Long> listIdNotFound = listId.stream().filter(c -> !listIdFind.contains(c)).collect(Collectors.toList()); + if (ListUtil.isNullOrEmpty(list)) { + return ExecutedResult.failed("[null]不存在." + listIdNotFound); + } + } + return ExecutedResult.success(list); + } + + public UserLoginPO get4Openid(String openId) { + return mapper.get4Openid(openId); + } + // 修改密码 + public ExecutedResult<String> changePassword(LoginUserDTO user, ReqChangePassword request) { + String openId = user.getUserId(); + // 验证记录是否存在 + ExecutedResult<UserLoginPO> checkExists = this.check4Openid(openId); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + String oldPass = MD5Util.encrypt(request.getOldPassword() + ConstantFactory.KEY_PASSWORD); + if (BooleanUtils.isFalse(oldPass.equals(checkExists.getData().getPassword()))) { + return ExecutedResult.failed("密码校验失败。"); + } + return this.changePasswordDo(checkExists.getData().getId(), request.getNewPassword()); + } + private ExecutedResult<String> changePasswordDo(Long userLoginId, String password) { + UserLoginPO item = new UserLoginPO(); + item.setId(userLoginId); + // 密码加密 + item.setPassword(MD5Util.encrypt(password + ConstantFactory.KEY_PASSWORD)); + int modify = mapper.updateById(item); + if (modify>0) { + return ExecutedResult.success(); + } + return ExecutedResult.failed("密码修改失败。"); + } + + // 设置登录帐号 + public ExecutedResult<String> setUserName(String openId, String userCode) { + // 验证记录是否存在 + ExecutedResult<UserLoginPO> checkExists = this.check4Openid(openId); + if (checkExists.isFailed()) { + return ExecutedResult.failed(checkExists.getMsg()); + } + // 转换po + UserLoginPO item = new UserLoginPO(); + item.setId(checkExists.getData().getId()); + item.setUserName(userCode); + // 密码加密 + item.setPassword(MD5Util.encrypt("88888888" + ConstantFactory.KEY_PASSWORD)); + + int result = this.mapper.updateById(item); + if (result<1) { + return ExecutedResult.failed("设置登录帐号失败。"); + } + return ExecutedResult.success(); + } + protected ExecutedResult<UserLoginPO> check4Openid(String openId) { + UserLoginPO exists = mapper.get4Openid(openId); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[用户登录]不存在:" + openId); + } + return ExecutedResult.success(exists); + } + protected ExecutedResult<UserLoginPO> check4UserName(String userName) { + UserLoginPO exists = mapper.get4UserName(userName); + if (Objects.isNull(exists)) { + return ExecutedResult.failed("[用户登录]不存在:" + userName); + } + return ExecutedResult.success(exists); + } + public ExecutedResult<LoginUserDTO> login(ReqUserLogin request) { + // 验证记录是否存在 + ExecutedResult<UserLoginPO> checkExists = this.check4UserName(request.getUserName()); + if (checkExists.isFailed()) { + return ExecutedResult.failed("帐号或密码错误"); + } + UserLoginPO user = checkExists.getData(); + String password = MD5Util.encrypt(request.getPassword() + ConstantFactory.KEY_PASSWORD); + if (!Objects.equals(user.getPassword(), password)) { + return ExecutedResult.failed("帐号或密码错误"); + } + if (!Objects.equals(user.getStatus(), EState.NORMAL.getValue())) { + return ExecutedResult.failed("账号异常, 请联系管理员!"); + } + + // 构建登录用户 + LoginUserDTO loginUser = new LoginUserDTO(); + loginUser.setUserType(EUserType.CUSTOMER_USER.getValue()); + loginUser.setUserId(user.getWxOpenId()); + loginUser.setUserName(user.getUserName()); + loginUser.setNickName(user.getNickName()); + loginUser.setHeadImg(user.getHeadImg()); + loginUser.setPhone(user.getPhone()); + loginUser.setListRole(new ArrayList<>()); + loginUser.setListRoleName(new ArrayList<>()); + + // 保存用户信息到jwt + String token = JWTUtil.getToken(loginUser); + loginUser.setToken(token); + return ExecutedResult.success(loginUser); + } +} diff --git a/src/main/java/com/lunhan/water/service/convert/PaymentRecordsConvert.java b/src/main/java/com/lunhan/water/service/convert/PaymentRecordsConvert.java new file mode 100644 index 0000000..81a682c --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/PaymentRecordsConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.paymentrecords.ReqCreatePaymentRecords; +import com.lunhan.water.entity.request.paymentrecords.ReqModifyPaymentRecords; +import com.lunhan.water.repository.po.PaymentRecordsPO; +import com.lunhan.water.repository.vo.PaymentRecordsVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * PaymentRecords + * @author {#=author} + */ +@Mapper +public interface PaymentRecordsConvert { + PaymentRecordsConvert INSTANCE = Mappers.getMapper(PaymentRecordsConvert.class); + + PaymentRecordsPO toCreate(ReqCreatePaymentRecords request); + PaymentRecordsPO toModify(ReqModifyPaymentRecords request); + + PaymentRecordsVO toVo(PaymentRecordsPO item); + List<PaymentRecordsVO> toVo(List<PaymentRecordsPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/RechargeOrderConvert.java b/src/main/java/com/lunhan/water/service/convert/RechargeOrderConvert.java new file mode 100644 index 0000000..3fced74 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/RechargeOrderConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.rechargeorder.ReqCreateRechargeOrder; +import com.lunhan.water.entity.request.rechargeorder.ReqModifyRechargeOrder; +import com.lunhan.water.repository.po.RechargeOrderPO; +import com.lunhan.water.repository.vo.RechargeOrderVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 用户充值订单 + * @author {#=author} + */ +@Mapper +public interface RechargeOrderConvert { + RechargeOrderConvert INSTANCE = Mappers.getMapper(RechargeOrderConvert.class); + + RechargeOrderPO toCreate(ReqCreateRechargeOrder request); + RechargeOrderPO toModify(ReqModifyRechargeOrder request); + + RechargeOrderVO toVo(RechargeOrderPO item); + List<RechargeOrderVO> toVo(List<RechargeOrderPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/RechargeRecordsConvert.java b/src/main/java/com/lunhan/water/service/convert/RechargeRecordsConvert.java new file mode 100644 index 0000000..ceebc2a --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/RechargeRecordsConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.rechargerecords.ReqCreateRechargeRecords; +import com.lunhan.water.entity.request.rechargerecords.ReqModifyRechargeRecords; +import com.lunhan.water.repository.po.RechargeRecordsPO; +import com.lunhan.water.repository.vo.RechargeRecordsVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 充值记录 + * @author {#=author} + */ +@Mapper +public interface RechargeRecordsConvert { + RechargeRecordsConvert INSTANCE = Mappers.getMapper(RechargeRecordsConvert.class); + + RechargeRecordsPO toCreate(ReqCreateRechargeRecords request); + RechargeRecordsPO toModify(ReqModifyRechargeRecords request); + + RechargeRecordsVO toVo(RechargeRecordsPO item); + List<RechargeRecordsVO> toVo(List<RechargeRecordsPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/RefundRecordConvert.java b/src/main/java/com/lunhan/water/service/convert/RefundRecordConvert.java new file mode 100644 index 0000000..c7e6744 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/RefundRecordConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.refundrecord.ReqCreateRefundRecord; +import com.lunhan.water.entity.request.refundrecord.ReqModifyRefundRecord; +import com.lunhan.water.repository.po.RefundRecordPO; +import com.lunhan.water.repository.vo.RefundRecordVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 退款记录 + * @author {#=author} + */ +@Mapper +public interface RefundRecordConvert { + RefundRecordConvert INSTANCE = Mappers.getMapper(RefundRecordConvert.class); + + RefundRecordPO toCreate(ReqCreateRefundRecord request); + RefundRecordPO toModify(ReqModifyRefundRecord request); + + RefundRecordVO toVo(RefundRecordPO item); + List<RefundRecordVO> toVo(List<RefundRecordPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/SysRegionConvert.java b/src/main/java/com/lunhan/water/service/convert/SysRegionConvert.java new file mode 100644 index 0000000..5d9a791 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/SysRegionConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.sysregion.ReqCreateSysRegion; +import com.lunhan.water.entity.request.sysregion.ReqModifySysRegion; +import com.lunhan.water.repository.po.SysRegionPO; +import com.lunhan.water.repository.vo.SysRegionVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 系统行政地区 + * @author {#=author} + */ +@Mapper +public interface SysRegionConvert { + SysRegionConvert INSTANCE = Mappers.getMapper(SysRegionConvert.class); + + SysRegionPO toCreate(ReqCreateSysRegion request); + SysRegionPO toModify(ReqModifySysRegion request); + + SysRegionVO toVo(SysRegionPO item); + List<SysRegionVO> toVo(List<SysRegionPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/TradeRecordConvert.java b/src/main/java/com/lunhan/water/service/convert/TradeRecordConvert.java new file mode 100644 index 0000000..a8d6256 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/TradeRecordConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.traderecord.ReqCreateTradeRecord; +import com.lunhan.water.entity.request.traderecord.ReqModifyTradeRecord; +import com.lunhan.water.repository.po.TradeRecordPO; +import com.lunhan.water.repository.vo.TradeRecordVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 支付记录 + * @author {#=author} + */ +@Mapper +public interface TradeRecordConvert { + TradeRecordConvert INSTANCE = Mappers.getMapper(TradeRecordConvert.class); + + TradeRecordPO toCreate(ReqCreateTradeRecord request); + TradeRecordPO toModify(ReqModifyTradeRecord request); + + TradeRecordVO toVo(TradeRecordPO item); + List<TradeRecordVO> toVo(List<TradeRecordPO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/UserCapitalChangeConvert.java b/src/main/java/com/lunhan/water/service/convert/UserCapitalChangeConvert.java new file mode 100644 index 0000000..fb59461 --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/UserCapitalChangeConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.usercapitalchange.ReqCreateUserCapitalChange; +import com.lunhan.water.entity.request.usercapitalchange.ReqModifyUserCapitalChange; +import com.lunhan.water.repository.po.UserCapitalChangePO; +import com.lunhan.water.repository.vo.UserCapitalChangeVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 用户资金变动 + * @author {#=author} + */ +@Mapper +public interface UserCapitalChangeConvert { + UserCapitalChangeConvert INSTANCE = Mappers.getMapper(UserCapitalChangeConvert.class); + + UserCapitalChangePO toCreate(ReqCreateUserCapitalChange request); + UserCapitalChangePO toModify(ReqModifyUserCapitalChange request); + + UserCapitalChangeVO toVo(UserCapitalChangePO item); + List<UserCapitalChangeVO> toVo(List<UserCapitalChangePO> list); +} diff --git a/src/main/java/com/lunhan/water/service/convert/UserLoginConvert.java b/src/main/java/com/lunhan/water/service/convert/UserLoginConvert.java new file mode 100644 index 0000000..841d85d --- /dev/null +++ b/src/main/java/com/lunhan/water/service/convert/UserLoginConvert.java @@ -0,0 +1,48 @@ +/** +# __----~~~~~~~~~~~------___ +# . . ~~//====...... __--~ ~~ +# -. \_|// |||\\ ~~~~~~::::... /~ +# ___-==_ _-~o~ \/ ||| \\ _/~~- +# __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ +# _-~~ .=~ | \\-_ '-~7 /- / || \ / +# .~ .~ | \\ -_ / /- / || \ / +# / ____ / | \\ ~-_/ /|- _/ .|| \ / +# |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ +# ' ~-| /| |-~\~~ __--~~ +# |-~~-_/ | | ~\_ _-~ /\ +# / \ \__ \/~ \__ +# _--~ _/ | .-~~____--~-/ ~~==. +# ((->/~ '.|||' -_| ~~-/ , . _|| +# -_ ~\ ~~---l__i__i__i--~~_/ +# _-~-__ ~) \--______________--~~ +# //.-~~~-~_--~- |-------~~~~~~~~ +# //.-~~~--\ +# 神兽保佑 +# 永无BUG! +*/ +package com.lunhan.water.service.convert; + +import com.lunhan.water.entity.request.userlogin.ReqCreateUserLogin; +import com.lunhan.water.entity.request.userlogin.ReqModifyUserLogin; +import com.lunhan.water.repository.po.UserLoginPO; +import com.lunhan.water.repository.vo.UserLoginVO; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * UserLogin + * @author {#=author} + */ +@Mapper +public interface UserLoginConvert { + UserLoginConvert INSTANCE = Mappers.getMapper(UserLoginConvert.class); + + UserLoginPO toCreate(ReqCreateUserLogin request); + UserLoginPO toModify(ReqModifyUserLogin request); + + UserLoginVO toVo(UserLoginPO item); + List<UserLoginVO> toVo(List<UserLoginPO> list); +} diff --git a/src/test/java/com/lunhan/water/GenCodeGauss.java b/src/test/java/com/lunhan/water/GenCodeGauss.java index 0a09453..772fa33 100644 --- a/src/test/java/com/lunhan/water/GenCodeGauss.java +++ b/src/test/java/com/lunhan/water/GenCodeGauss.java @@ -20,7 +20,7 @@ private static final String PORT = "57654"; private static final String USER = "lunhan"; private static final String PASSWORD = "lunhan.20240330"; - private static final String DB_NAME = "test_db1"; + private static final String DB_NAME = "water_ration_system"; private static final String AUTHOR = "lin.liu"; public static Connection CONN = null; @@ -29,16 +29,16 @@ //region 输出文件路径设置 class OutSet { - public static final String PO = "./src/main/java/com/lunhan/xxx/repository/po/"; - public static final String VO = "./src/main/java/com/lunhan/xxx/repository/vo/"; - public static final String CONVERT_MAPPER = "./src/main/java/com/lunhan/xxx/service/convert/"; - public static final String MAPPER_IMPL = "./src/main/java/com/lunhan/xxx/repository/impl/"; - public static final String MAPPER = "./src/main/java/com/lunhan/xxx/repository/mapper/"; - public static final String SERVICE = "./src/main/java/com/lunhan/xxx/service/"; - public static final String Controller = "./src/main/java/com/lunhan/xxx/host/controller/"; - public static final String SEARCH = "./src/main/java/com/lunhan/xxx/entity/search/"; - public static final String RequestDTO = "./src/main/java/com/lunhan/xxx/entity/request/"; - public static final String ResponseDTO = "./src/main/java/com/lunhan/xxx/entity/response/"; + public static final String PO = "./src/main/java/com/lunhan/water/repository/po/"; + public static final String VO = "./src/main/java/com/lunhan/water/repository/vo/"; + public static final String CONVERT_MAPPER = "./src/main/java/com/lunhan/water/service/convert/"; + public static final String MAPPER_IMPL = "./src/main/java/com/lunhan/water/repository/impl/"; + public static final String MAPPER = "./src/main/java/com/lunhan/water/repository/mapper/"; + public static final String SERVICE = "./src/main/java/com/lunhan/water/service/"; + public static final String Controller = "./src/main/java/com/lunhan/water/host/controller/"; + public static final String SEARCH = "./src/main/java/com/lunhan/water/entity/search/"; + public static final String RequestDTO = "./src/main/java/com/lunhan/water/entity/request/"; + public static final String ResponseDTO = "./src/main/java/com/lunhan/water/entity/response/"; } //endregion @@ -243,7 +243,7 @@ * 只生成以下配置的表 */ private static final List<String> ONLY_TABLES = Arrays.asList( - + "user_capital_change","recharge_records" ); public static void main(String[] args) { -- Gitblit v1.9.3