Procházet zdrojové kódy

Merge branch 'disney_login_code'

zoujiajian před 2 roky
rodič
revize
1f1cbeafb9

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GoodsDonSkuMapper.java

@@ -20,4 +20,6 @@ public interface GoodsDonSkuMapper  extends BaseMapper<GoodsDonSku> {
 	List<Long> getSpecificSkuIdsByGoodsId(@Param("goodsId") Long goodsId, @Param("num") Integer num, @Param("months") Integer months);
 
 	List<YhShopGoodsSku> selectSkuShops(@Param("list") List<Long> goodsIds);
+
+	List<Long> selectSingleSkuIdsByGoodsId(Long goodsId);
 }

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GroupsRelationLoginCodeRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.GroupsRelationLoginCodeRecord;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: GroupsRelationLoginCodeRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2023/12/4 11:07
+ */
+public interface GroupsRelationLoginCodeRecordMapper extends BaseMapper<GroupsRelationLoginCodeRecord> {
+}

+ 24 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GroupsRelationLoginCodeRecord.java

@@ -0,0 +1,24 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: GroupsRelationLoginCodeRecord
+ * 创建者: JavaZou
+ * 创建时间:2023/12/4 11:06
+ */
+@Getter
+@Setter
+public class GroupsRelationLoginCodeRecord extends BaseEntity{
+	private Long userId;
+
+	private Long skuId;
+
+	private Long relationId;
+
+	private Long goodsId;
+
+	private String account;
+}

+ 4 - 0
netflix-dao/src/main/resources/mapper/GoodsDonSkuMapper.xml

@@ -33,4 +33,8 @@
         </foreach>
         and status = true
     </select>
+
+    <select id="selectSingleSkuIdsByGoodsId" resultType="java.lang.Long">
+        select id from goods_don_sku where goods_id = #{goodsId} and num = 1
+    </select>
 </mapper>

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/mange/group/CmsGroupServiceImpl.java

@@ -260,8 +260,8 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
         }
        groupsTrips.setStatus(GroupsTrips.Status.validity);
         GoodsDonSku sku = skuMapper.selectById(groupsTrips.getSkuId());
-        //下架上过车的POE,PS AI账号
-        if (Constant.DOWN_GOODS_PAY.contains(sku.getGoodsId())) {
+        //下架上过车的POE,PS AI账号 || GPT Plus独立规格 下架
+        if (Constant.DOWN_GOODS_PAY.contains(sku.getGoodsId()) || skuMapper.selectSingleSkuIdsByGoodsId(Constant.AI_goodsIds.get(0)).contains(groupsTrips.getSkuId())) {
             Number number = beanSearcher.searchCount(GroupsRelation.class, MapUtils.builder()
                     .field(GroupsRelation::getGroupsId, groupsTrips.getId())
                     .field(GroupsRelation::getUserId, 0).op(Operator.NotEqual)

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -1337,8 +1337,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 						order.setStatus(OrderDon.Status.complete);
 					}
 				}
-				//下架POE会员车队
-				if (order.getGoodsId() != null && Constant.DOWN_GOODS_PAY.contains(order.getGoodsId())) {
+				//下架POE会员车队 || GPT Plus独立规格 下架
+				if (order.getGoodsId() != null && Constant.DOWN_GOODS_PAY.contains(order.getGoodsId()) || goodsDonSkuMapper.selectSingleSkuIdsByGoodsId(Constant.AI_goodsIds.get(0)).contains(groupsTrips.getSkuId())) {
 					if (groupsTrips.getAccountId() != null && groupsTrips.getStatus() == GroupsTrips.Status.validity) {
 						groupsTrips.setStatus(GroupsTrips.Status.down);
 						groupsMapper.updateById(groupsTrips);

+ 73 - 17
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -6,13 +6,14 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpStatus;
+import cn.hutool.http.HttpUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
-import com.cyksj.common.util.J11HttpC;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.mapper.*;
@@ -37,11 +38,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
-import java.net.http.HttpResponse;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
 import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
@@ -84,6 +83,10 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final OrderDiscountPlusPurchaseSkuRelationMapper orderDiscountPlusPurchaseSkuRelationMapper;
 
+	private final GroupsRelationLoginCodeRecordMapper groupsRelationLoginCodeRecordMapper;
+
+	private final SysEmailMapper sysEmailMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 	private final static String VERIFY_CODE_SECRET = "q1w2e3";
@@ -411,24 +414,49 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 		if (renewalView == null) {
 			throw BusinessRuntimeException.getInstance("您的车票不存在...");
 		}
+		if (StrUtil.isEmpty(renewalView.getAccount())) {
+			throw BusinessRuntimeException.getInstance("车票未配置账号");
+		}
 		String account = renewalView.getAccount();
 		String password = renewalView.getPassword();
 		if (StrUtil.hasEmpty(account, password)) {
 			throw BusinessRuntimeException.getInstance("您的车票账号密码异常,请联系客服...");
 		}
-		String url = String.format("http://yinhelx.com/api/imap_yhcz.php?sc=&id=&yhm=%s&mm=%s&duan_kou=143&ip=127.0.0.1&mi_yao=%s", account, password, VERIFY_CODE_SECRET);
-		HttpResponse<String> send = J11HttpC.custom()
-				.ofGet()
-				.url(url)
-				.send(HttpResponse.BodyHandlers.ofString());
-		if (send.statusCode() != HttpStatus.HTTP_OK) {
-			throw BusinessRuntimeException.getInstance("获取验证码失败...");
+		//获取邮箱密码
+		SysEmail sysEmail = sysEmailMapper.selectOne(Wrappers.lambdaQuery(SysEmail.class)
+				.eq(SysEmail::getEmail, account)
+				.last("limit 1"));
+		if (sysEmail == null) {
+			log.info("获取账号:{}验证码异常,未配置对应系统邮箱", account);
+			throw BusinessRuntimeException.getInstance("获取账号验证码异常,请联系客服...");
 		}
-		String code = StrUtil.subBetween(send.body(), "Doğrulama kodunuz:", "Bu istek sizin");
-		if (StrUtil.isEmpty(code)) {
-			throw BusinessRuntimeException.getInstance("获取验证码失败...");
+		String url = "http://yinhelx.com/api/controller.php";
+		Map<String,Object> params = new HashMap<>();
+
+		params.put("imap_key", "imap_56568niua@@");
+		params.put("fun", "imap_read");
+		params.put("imap_ip", "yinhelx.com");
+		params.put("port", "143");
+		params.put("username", account);
+		params.put("password", sysEmail.getPassword());
+		params.put("mbox_id", "0");
+		params.put("delete", "0");
+
+		HttpRequest post = HttpUtil.createPost(url);
+		post.form(params);
+		cn.hutool.http.HttpResponse execute = post.execute();
+		if (execute.getStatus() != HttpStatus.HTTP_OK) {
+			throw BusinessRuntimeException.getInstance("获取验证码异常,请联系客服...");
 		}
-		return code.trim();
+		String code = getDifferentGoodsCode(renewalView.getGoodsId(), execute.body());
+		GroupsRelationLoginCodeRecord record = new GroupsRelationLoginCodeRecord();
+		record.setUserId(userId);
+		record.setRelationId(relationId);
+		record.setAccount(renewalView.getAccount());
+		record.setGoodsId(renewalView.getGoodsId());
+		record.setSkuId(renewalView.getSkuId());
+		groupsRelationLoginCodeRecordMapper.insert(record);
+		return code;
 	}
 
 
@@ -522,4 +550,32 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			}
 		}
 	}
+
+	public String getDifferentGoodsCode(Long goodsId, String body) {
+		String code = null;
+		//奈飞
+		if (goodsId == 1) {
+			code = StrUtil.subBetween(body, "Doğrulama kodunuz:", "Bu istek sizin");
+		}
+		//迪士尼
+		if (goodsId == 3) {
+			code = StrUtil.subWithLength(body, body.indexOf(" 15 "), 215);
+			if (StrUtil.isNotEmpty(code)) {
+				Pattern pattern = Pattern.compile("\\d{6}");
+				Matcher matcher = pattern.matcher(code);
+				while (matcher.find()) {
+					code = matcher.group();
+					break;
+				}
+			}
+		}
+		if (!Validator.isNumber(code)) {
+			throw BusinessRuntimeException.getInstance("获取验证码失败,请重新获取");
+		}
+		if (StrUtil.isEmpty(code)) {
+			log.error("获取账号验证码失败:{}", StrUtil.subSufByLength(code, 512));
+			throw BusinessRuntimeException.getInstance("获取验证码失败,请重新获取...");
+		}
+		return code.trim();
+	}
 }