chenbiao 3 年 前
コミット
d7c3fc0e60

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/RegisterOrderDon.java

@@ -33,6 +33,10 @@ public class RegisterOrderDon extends BaseEntity{
 
     private String gender;
 
+    private String phone;
+
+    private String country;
+
     private String orderNo;
 
     private BigDecimal money;

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/RegisterReq.java

@@ -37,4 +37,6 @@ public class RegisterReq {
     private String country;
 
     private String phone;
+
+    private String nickname;
 }

+ 13 - 5
netflix-service/src/main/java/com/cyksj/service/register/impl/RegisterOrderDonServiceImpl.java

@@ -1,7 +1,6 @@
 package com.cyksj.service.register.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,7 +11,11 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.config.WeChatConfig;
 import com.cyksj.dto.RedisKey;
 import com.cyksj.mapper.RegisterOrderDonMapper;
+import com.cyksj.mapper.UserMapper;
 import com.cyksj.model.dto.H5JsPayParams;
+import com.cyksj.model.entity.RegisterOrderDon;
+import com.cyksj.model.entity.SysConfig;
+import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.request.RegisterReq;
 import com.cyksj.model.request.OrderAttach;
@@ -54,7 +57,9 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
 
     private final WeChatConfig weChatConfig;
 
-    private SysConfigService sysConfigService;
+    private final SysConfigService sysConfigService;
+
+    private final UserMapper userMapper;
 
     /**
      * 判断是否免费
@@ -72,7 +77,7 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
         }
         Long num = redisService.decr(RedisKey.SPOTIFY_FREE_NUM, 1L);
         if(num >= 0){
-            return false;
+            return true;
         }else {
             redisService.incr(RedisKey.SPOTIFY_FREE_NUM, 1L);
         }
@@ -88,13 +93,16 @@ public class RegisterOrderDonServiceImpl extends ServiceImpl<RegisterOrderDonMap
     @Transactional(rollbackFor = Throwable.class)
     public RegisterOrderDon saveOrder(long userId, RegisterReq req, boolean isFree) throws Exception {
         RegisterOrderDon orderDon = new RegisterOrderDon();
+        User user = userMapper.selectById(userId);
         BeanUtil.copyProperties(req,orderDon);
         SysConfig register_price = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "register_price").last("limit 1"));
-        Map<String, String> map = Jsons.toMap(register_price.getSysValue());
+        Map<String, Integer> map = Jsons.toMap(register_price.getSysValue());
 
         orderDon.setOrderNo(SEQUENCE.nextId() + "");
+        orderDon.setUserId(userId);
+        orderDon.setOpenId(user.getOpenId());
         orderDon.setIsFree(isFree);
-        orderDon.setMoney(isFree ? BigDecimal.ZERO : new BigDecimal(map.get(req.getPlatform())));
+        orderDon.setMoney(isFree ? BigDecimal.ZERO : BigDecimal.valueOf(map.get(req.getPlatform())));
         orderDon.setStatus(isFree ? RegisterOrderDon.Status.hasPayment : RegisterOrderDon.Status.noPayment);
         save(orderDon);
 

+ 55 - 40
netflix-service/src/main/java/com/cyksj/service/register/impl/SpotifyServiceImpl.java

@@ -27,9 +27,7 @@ import org.springframework.stereotype.Service;
 
 import java.net.InetSocketAddress;
 import java.net.Proxy;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -99,83 +97,100 @@ public class SpotifyServiceImpl implements SpotifyService {
         jsonObject.put("key","a1e486e2729f46d6bb368d6b2bcda326");
         //creation_point=https://www.spotify.com/uk/
         jsonObject.put("creation_point","https://www.spotify.com/us/");
-        jsonObject.put("displayname",registerOrderDon.getNickname());
+        jsonObject.put("displayname",Optional.ofNullable(registerOrderDon.getNickname()).orElse(registerOrderDon.getEmail()));
         jsonObject.put("password_repeat",registerOrderDon.getPassword());
         jsonObject.put("password",registerOrderDon.getPassword());
-        jsonObject.put("username",registerOrderDon.getUsername());
-        jsonObject.put("birth_year",registerOrderDon.getBirthYear());
-        jsonObject.put("birth_month",registerOrderDon.getBirthMonth());
-        jsonObject.put("birth_day",registerOrderDon.getBirthDay());
+        jsonObject.put("username",Optional.ofNullable(registerOrderDon.getUsername()).orElse(registerOrderDon.getEmail()));
+        jsonObject.put("birth_year", Optional.ofNullable(registerOrderDon.getBirthYear()).orElse("1995"));
+        jsonObject.put("birth_month",Optional.ofNullable(registerOrderDon.getBirthMonth()).orElse("01"));
+        jsonObject.put("birth_day",Optional.ofNullable(registerOrderDon.getBirthDay()).orElse("01"));
         jsonObject.put("gender",registerOrderDon.getGender());
         jsonObject.put("email",registerOrderDon.getEmail());
         jsonObject.put("iagree","1");
         request.setMethod(Method.POST);
+        request.setConnectionTimeout(15 * 1000);
+        request.setReadTimeout(15 * 1000);
 
         request.form(jsonObject);
 
-        String proxyJson = HttpUtil.get("http://inside.sxfoundation.com:8899/api/v1/proxies");
-        log.info(proxyJson);
-        JSONArray array = JSONUtil.parseObj(proxyJson).getJSONArray("proxies");
-        List<ProxyInfo> proxyInfos = array.toList(ProxyInfo.class);
-        log.info("{}",proxyInfos);
+
+
+
 
         int start = 1;
         int limit = 20;
         boolean regFlag = false;
-        while (true){
+        while (true) {
+
+            List<ProxyInfo> proxyInfos = new ArrayList<>();
+            List<Proxys> records = proxysMapper.selectPage(new Page<>(start, limit), Wrappers.lambdaQuery(Proxys.class).orderByDesc(Proxys::getId)).getRecords();
+            if (records.isEmpty()) {
+                break;
+            }
+            proxyInfos = records.stream().map((proxy) -> {
+                ProxyInfo proxyInfo = new ProxyInfo();
+                proxyInfo.setIp(proxy.getIp());
+                proxyInfo.setPort(proxy.getPort());
+                return proxyInfo;
+            }).collect(Collectors.toList());
+
             for (ProxyInfo proxyInfo : proxyInfos) {
                 try {
-                    log.info("执行:info:{}",proxyInfo);
+                    log.info("执行:info:{}", proxyInfo);
                     Proxy proxy = new Proxy(Proxy.Type.HTTP,
                             new InetSocketAddress(proxyInfo.getIp(), proxyInfo.getPort()));
                     request.setProxy(proxy);
                     HttpResponse response = request.execute();
                     String body = response.body();
-                    log.info("spotify 返回body:{}",body);
+                    log.info("spotify 返回body:{}", body);
                     JSONObject resObj = JSONUtil.parseObj(body);
                     JSONObject errors = resObj.getJSONObject("errors");
-                    String errorMsg = errors.getStr("generic_error");
-                    if (!errors.isEmpty()) {
-                        if ("你似乎正在使用代理服务。请关闭此类服务,然后再试一次。如需更多帮助,请联系客服服务。".equals(errorMsg)) {
-                            log.info("spotify 注册 被监测出代理服务 。 删除该代理 ip:{}",proxyInfo.getIp());
-                            if(proxyInfo.getId() != null){
+
+                    Integer status = resObj.getInt("status");
+                    if (status == 320) {
+                        String errorMsg = errors.getStr("generic_error");
+                        if (StringUtils.isNotBlank(errorMsg) || "你似乎正在使用代理服务。请关闭此类服务,然后再试一次。如需更多帮助,请联系客户服务。".equals(errorMsg) || errorMsg.contains("代理")) {
+                            log.info("spotify 注册 被监测出代理服务 。 删除该代理 ip:{}", proxyInfo.getIp());
+                            if (proxyInfo.getId() != null) {
                                 proxysMapper.deleteById(proxyInfo.getId());
                             }
                             continue;
-                        }else {
-                            registerOrderDon.setErrorMsg(errorMsg);
-                            registerOrderDon.setStatus(RegisterOrderDon.Status.error);
-                            registerOrderDonMapper.updateById(registerOrderDon);
-                            break;
                         }
                     }
-                    if(StringUtils.isNotBlank(resObj.getStr("login_token"))){
+
+                    if (StringUtils.isNotBlank(resObj.getStr("login_token"))) {
                         log.info("注册成功!");
                         registerOrderDon.setStatus(RegisterOrderDon.Status.complete);
                         registerOrderDonMapper.updateById(registerOrderDon);
                         regFlag = true;
                         break;
+                    } else {
+                        if (errors != null && !errors.isEmpty()) {
+                            StringBuilder error = new StringBuilder();
+                            for (String str : errors.keySet()) {
+                                error.append(errors.getStr(str));
+                            }
+                            registerOrderDon.setErrorMsg(error.toString());
+                            registerOrderDon.setStatus(RegisterOrderDon.Status.error);
+                            registerOrderDonMapper.updateById(registerOrderDon);
+                            regFlag = true;
+                            break;
+                        }
+                    }
+
+                } catch (Exception e) {
+                    if (proxyInfo.getId() != null) {
+                        proxysMapper.deleteById(proxyInfo.getId());
                     }
-                }catch (Exception e){
                     e.printStackTrace();
-                    log.error("错误 ip:{}",proxyInfo.getIp());
+                    log.error("错误 ip:{}", proxyInfo.getIp());
                 }
             }
 
-            if(regFlag){
+            if (regFlag) {
                 break;
             }
 
-            List<Proxys> records = proxysMapper.selectPage(new Page<>(start, limit), Wrappers.lambdaQuery(Proxys.class).orderByDesc(Proxys::getId)).getRecords();
-            if(records.isEmpty()){
-                break;
-            }
-            proxyInfos = records.stream().map((proxy)->{
-                ProxyInfo proxyInfo = new ProxyInfo();
-                proxyInfo.setIp(proxy.getIp());
-                proxyInfo.setPort(proxy.getPort());
-                return proxyInfo;
-            }).collect(Collectors.toList());
         }
     }
 

+ 2 - 2
netflix-service/src/main/java/com/cyksj/task/Scheduler.java

@@ -126,7 +126,7 @@ public class Scheduler {
     /**
      * 定时关闭订单
      */
-    @Scheduled(cron = "0 0/5 0 * * ?")
+    @Scheduled(cron = "0 0/5 * * * ?")
     public void closeOrder() {
         //获取为支付订单
         DateTime now = new DateTime();
@@ -141,7 +141,7 @@ public class Scheduler {
     /**
      * spotify 注册
      */
-    @Scheduled(cron = "0 0/5 0 * * ?")
+    @Scheduled(cron = "0 0/5 * * * ?")
     public void spotify() {
         List<RegisterOrderDon> spotify = registerOrderDonMapper.selectList(Wrappers.lambdaQuery(RegisterOrderDon.class)
                 .select(RegisterOrderDon::getId)

+ 4 - 1
netflix-web/src/main/java/com/cyksj/web/controller/register/RegisterController.java

@@ -108,7 +108,10 @@ public class RegisterController {
 
     @GetMapping("/get")
     public Result<SearchResult<RegisterOrderDon>> get(){
-        SearchResult<RegisterOrderDon> search = beanSearcher.search(RegisterOrderDon.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+        long userId = StpUserUtil.getLoginIdAsLong();
+        SearchResult<RegisterOrderDon> search = beanSearcher.search(RegisterOrderDon.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(RegisterOrderDon::getUserId,userId)
+                .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }