diff --git a/pom.xml b/pom.xml
index 1a1a626..9800d21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -138,7 +138,17 @@
org.springframework.boot
spring-boot-starter-validation
-
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+ 2.0.5.RELEASE
+
+
+ redis.clients
+ jedis
+ 2.9.0
+
diff --git a/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java b/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
index 318b7bf..2844b93 100644
--- a/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
+++ b/rights-client-controller/src/main/java/com/cyjd/rights/controller/AliPayController.java
@@ -10,9 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.cyjd.rights.beans.AliPayProperties;
import com.cyjd.rights.beans.R;
-import com.cyjd.rights.business.service.AliPayOrderService;
-import com.cyjd.rights.business.service.AliPayService;
-import com.cyjd.rights.business.service.AliPaySigningOrderService;
+import com.cyjd.rights.beans.ResultCodeEnum;
+import com.cyjd.rights.business.service.*;
import com.cyjd.rights.constant.AliPayConstant;
import com.cyjd.rights.constant.EnumPeriodType;
import com.cyjd.rights.dto.AliPayInOrderByAgreementDto;
@@ -66,6 +65,12 @@ public class AliPayController {
@Autowired
private AliPaySigningOrderService aliPaySigningOrderService;
+
+ @Autowired
+ private SendSuccessMobileService sendSuccessMobileService;
+
+ @Autowired
+ private ConfigService configService;
/**
* 支付配置
*/
@@ -106,8 +111,10 @@ public class AliPayController {
@PostMapping("/signUp")
public R signUp(@RequestBody AliPaySignUpDto signUpDto) {
String price="19.9";
- //查询数据库用户签约记录
-
+ //查询用户31天内是否已经有代扣成功的记录了
+ if (!aliPayOrderService.checkOpen(signUpDto.getMobile())) {
+ return R.error(ResultCodeEnum.user_month_repeat_open);
+ }
AliPayUserPageSignReq signReq = new AliPayUserPageSignReq();
signUpDto.setIsPage(true);
signUpDto.setPeriod("31"); //设置天数
@@ -115,7 +122,6 @@ public class AliPayController {
signReq.setBusinessType(2);
signReq.setType(0);
String agreementNo = OrderUtil.getAgreementNo();
- int i = checkFrom(signUpDto.getMobile());
//如果未签约,调用支付宝接口获取支付宝签约跳转地址
signReq.setExternalAgreementNo(agreementNo);
signReq.setIsPage(signUpDto.getIsPage());
@@ -395,8 +401,6 @@ public class AliPayController {
* @param inMap
* @return
*/
- @ApiOperation(value = "ces", notes = "cs")
- @PostMapping("/ces")
public String agreementNotify(@RequestBody Map inMap) {
log.info("支付宝代扣回调开始:request{}"+JSON.toJSONString(inMap));
try {
@@ -462,10 +466,17 @@ public class AliPayController {
aliPayOrderEntity.setLinkName(aliPaySigningOrderEntity.getLinkName());
aliPayOrderEntity.setOrderName("会员随心选");
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
- // TODO: 2023/05/22 1.处理业务
aliPayOrderEntity.setStatus(1);
aliPayOrderService.save(aliPayOrderEntity);
log.info("支付订单保存成功"+aliPayOrderEntity);
+ //回传
+ if (1161==aliPaySigningOrderEntity.getLinkId()){
+ //查看是否发送
+ if (sendSuccessMobileService.ifSendDataByType(aliPaySigningOrderEntity.getLinkId().toString())) {
+ //回传成功数据
+ sendSuccessMobileService.sendSuccessMobile(aliPaySigningOrderEntity.getMobile(),"zm");
+ }
+ }
// if (b){
// log.info("支付订单保存成功"+aliPayEntity.getOrderId()+"=====status:"+aliPayEntity.getStatus());
//
@@ -503,5 +514,15 @@ public class AliPayController {
return operatorsId;
}
-
+// @ApiOperation(value = "test", notes = "test")
+// @PostMapping("/test")
+// public void tess() {
+// for (int i = 0; i < 10; i++) {
+// if (sendSuccessMobileService.ifSendDataByType("1059")) {
+// System.out.println("发送");
+// }else {
+// System.out.println("不发送");
+// }
+// }
+// }
}
diff --git a/rights-client-controller/src/main/resources/application-dev.yml b/rights-client-controller/src/main/resources/application-dev.yml
index cb5ff2d..8ac1137 100644
--- a/rights-client-controller/src/main/resources/application-dev.yml
+++ b/rights-client-controller/src/main/resources/application-dev.yml
@@ -35,7 +35,7 @@ payment:
appId: 2021003135690045
privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGq3UKNbNuIazHbD9slLNJsStw2347rYwR1NmFLCi/d62yNLeTZvmrY4aW3GsDsQiK5vFdLRxaT8tIkGO11GilBRn00xkNKnwPkMA8GUdtr7GaudH+YBqk2snDeBhtdlYLq1V79USGZKdnpsPoUIXVIpyhnBlULzcJP7hf7NSauRVBnDf+MuEQOjhRAc6i8RN7nY2Oz5x6ZuIPhJ8qWjbZQoN6sJ00KU5oYZaN34/NGmPIfpR4QwbZbABm0Y0dCwkXzzNoV3cPYsFqKWNN8gxY7mI7YQqYsVb25fvALDjOl0XUGv1D7lMOC4mX3iz4q8b13ZNK+Tb3y4atwO6jK0EdAgMBAAECggEAUb4ZGM1n0F2YZqQKC3pnKT/lQme4w7if4OL19aPMSAv43sao90v2GFYdB81bF66JpOZxc0FCiH8OwUkDfQclTaU/ECBigF9dVoViahheBvIyN9y63lCvW4mCFqf7C9ZcfFDPXqKNqZXHF19eYtEdqzWLJX1+0l6mZXLME03J7u+tPX+OOnjf/K3wBp90RzoS02Ofp8fxiRyiDwFwlcxfRVbffLPVIW8JMqyOuI95U0l90F3N48+twJj8UeZlWHQeTGSDZ5jgfC6T5SXkDxOi6e7ZemZUG43rqsEHyb84fBfpr4ZFh9SkjXSnRih5w0VRws50dE2u1wAeCLG8K5KD8QKBgQDX/rpHjIJl0aD2LsI1kcUW82Yzm7qOJWApRCTe/+mZtrNGotzz/Mc2S0xV8s95ahgsH9AYqytu58UdM0CQhJ5+57fPDQcYWq9QvHB741ljAd1371qTLvRsMQg6E/nmObFvAON7ynNuh+TfkM9e7HQS6dpA0FkVqrREdD7hgUeUewKBgQCfnL3GKdMdH5FTTMBJgiLwHYBpgFQxDPzD5DEvz9lgCgosk76k4jQGi/3/raJWxkAED5K4O2J90IE/VnRXV4Uhi4h54D3ceO9dtXWBN1IxqEuO7pw9ldiRjFrlTo4aSgnq2wrjiVKn92Fm2YXIcAyhibUs7hamWt6LGAULbM5JRwKBgG11jXlM35gxz9xyfcEgCj1DQ/vLY5M9panD+tt33S4kxF17k3WiGGKPbjPwROxGs9FInfCibfRaSC4wFvwl+Rxe2Wt4MqxI6KeFl4tw/4+JFm79QW1tUjix8HVeQjpF6oFSdfX59t2AyJ/zhuOX+IrNL+nArCSqyYgXUPZ+yYOZAoGATbLAkxnDInc+iF1hcac/GMJTw4fr9CDNXxLTeuHkgKMChua5NIzFJLa7Q96jmzhQ62klVDfcX0DD2jBc3DPHpCfHnQSzOINKisSN2gQzJ+c0OPUg673pOhkoGl5eQJ/wKfrNVyx/JzL+oFGdlZAuJejiYGfacMrlcLKVqhUiansCgYEAtPCz8J3fYipscjdWKQIXsejr110KF0zsh8X7ZYKxhAgRZ5ck3wbMbffYIfa7wCm5nIJMY640P3Jh6Rb5W5/4/i04gHbE1Loi714aGCXoY6gm5oVoKIFP8h3g3MyQl7mZ2huAA/KnLsThlmfQ0l0n6Pd8xEcqJ+Ggi/GS2MQQrIw=
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhqt1CjWzbiGsx2w/bJSzSbErcNt+O62MEdTZhSwov3etsjS3k2b5q2OGltxrA7EIiubxXS0cWk/LSJBjtdRopQUZ9NMZDSp8D5DAPBlHba+xmrnR/mAapNrJw3gYbXZWC6tVe/VEhmSnZ6bD6FCF1SKcoZwZVC83CT+4X+zUmrkVQZw3/jLhEDo4UQHOovETe52Njs+cembiD4SfKlo22UKDerCdNClOaGGWjd+PzRpjyH6UeEMG2WwAZtGNHQsJF88zaFd3D2LBailjTfIMWO5iO2EKmLFW9uX7wCw4zpdF1Br9Q+5TDguJl94s+KvG9d2TSvk298uGrcDuoytBHQIDAQAB
- certPath: /home/cert/alibaba/
+ certPath: D:/firefox/rights/
signNotifyUrl: https://interface.bnyer.cn/alipay/signNotify
agreementNotifyUrl: https://interface.bnyer.cn/alipay/agreementNotify
signReturnUrl: https://vediocnd.corpring.com/hotVIP/paybackImg.png
diff --git a/rights-client-controller/src/main/resources/application.yml b/rights-client-controller/src/main/resources/application.yml
index 24deafd..f3f055d 100644
--- a/rights-client-controller/src/main/resources/application.yml
+++ b/rights-client-controller/src/main/resources/application.yml
@@ -9,4 +9,4 @@ spring:
name: right-client
profiles:
# 环境配置
- active: prod
\ No newline at end of file
+ active: dev
\ No newline at end of file
diff --git a/rights-entity/src/main/java/com/cyjd/rights/entity/ConfigEntity.java b/rights-entity/src/main/java/com/cyjd/rights/entity/ConfigEntity.java
new file mode 100644
index 0000000..59bda65
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/entity/ConfigEntity.java
@@ -0,0 +1,25 @@
+package com.cyjd.rights.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("tb_config")
+public class ConfigEntity {
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 配置名字 hj(核减数配置)
+ */
+ private String configName;
+ /**
+ * 配置数据
+ */
+ private String configValue;
+}
diff --git a/rights-entity/src/main/java/com/cyjd/rights/utils/RedisUtil.java b/rights-entity/src/main/java/com/cyjd/rights/utils/RedisUtil.java
new file mode 100644
index 0000000..54c6e3c
--- /dev/null
+++ b/rights-entity/src/main/java/com/cyjd/rights/utils/RedisUtil.java
@@ -0,0 +1,583 @@
+package com.cyjd.rights.utils;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.script.DefaultRedisScript;
+import org.springframework.data.redis.core.script.RedisScript;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author jhf
+ * @date 2020/3/23 14:00
+ */
+@Component
+public class RedisUtil {
+
+
+
+ @Lazy
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ private static final Long SUCCESS = 1L;
+
+
+ /**
+ * 指定缓存失效时间
+ * @param key 键
+ * @param time 时间(秒)
+ * @return
+ */
+ public boolean expire(String key,long time){
+ try {
+ if(time>0){
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据key 获取过期时间
+ * @param key 键 不能为null
+ * @return 时间(秒) 返回0代表为永久有效
+ */
+ public long getExpire(String key){
+ return redisTemplate.getExpire(key,TimeUnit.SECONDS);
+ }
+
+ /**
+ * 判断key是否存在
+ * @param key 键
+ * @return true 存在 false不存在
+ */
+ public boolean hasKey(String key){
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 删除缓存
+ * @param key 可以传一个值 或多个
+ */
+ @SuppressWarnings("unchecked")
+ public void del(String ... key){
+ if(key!=null&&key.length>0){
+ if(key.length==1){
+ redisTemplate.delete(key[0]);
+ }else{
+ redisTemplate.delete(Arrays.asList(key));
+ }
+ }
+ }
+
+ //============================String=============================
+ /**
+ * 普通缓存获取
+ * @param key 键
+ * @return 值
+ */
+ public Object get(String key){
+ return key==null?null:redisTemplate.opsForValue().get(key);
+ }
+
+ /**
+ * 普通缓存放入
+ * @param key 键
+ * @param value 值
+ * @return true成功 false失败
+ */
+ public boolean set(String key,Object value) {
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ }
+
+ /**
+ * 普通缓存放入并设置时间
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
+ * @return true成功 false 失败
+ */
+ public boolean set(String key,Object value,long time){
+ try {
+ if(time>0){
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+ }else{
+ set(key, value);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 递增
+ * @param key 键
+ * @param delta 要增加几(大于0)
+ * @return
+ */
+ public long incr(String key, long delta){
+ if(delta<0){
+ throw new RuntimeException("递增因子必须大于0");
+ }
+ System.out.println(redisTemplate);
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+ /**
+ * 递减
+ * @param key 键
+ * @param delta 要减少几(小于0)
+ * @return
+ */
+ public long decr(String key, long delta){
+ if(delta<0){
+ throw new RuntimeException("递减因子必须大于0");
+ }
+ return redisTemplate.opsForValue().increment(key, -delta);
+ }
+
+ //================================Map=================================
+ /**
+ * HashGet
+ * @param key 键 不能为null
+ * @param item 项 不能为null
+ * @return 值
+ */
+ public Object hget(String key,String item){
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ /**
+ * 获取hashKey对应的所有键值
+ * @param key 键
+ * @return 对应的多个键值
+ */
+ public Map