Explorar o código

Merge branch 'set_nf_pin'

# Conflicts:
#	netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java
zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
a682881687

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -327,4 +327,9 @@ public interface Constant {
 	 * MJ试用规格id
 	 */
 	Long MIDJOURNEY_TRIAL_SKU_ID = 435L;
+
+	/**
+	 * 电影域名
+	 */
+	String ZHAOJU_MOVIES = "https://zhaoju666.com";
 }

+ 2 - 2
netflix-common/src/main/java/com/cyksj/common/util/J11HttpC.java

@@ -40,12 +40,12 @@ public class J11HttpC {
     /**
      * 连接超时时间
      */
-    private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(4);
+    private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(120);
 
     /**
      * 读取超时时间
      */
-    private static final Duration SOCKET_TIMEOUT = Duration.ofSeconds(6);
+    private static final Duration SOCKET_TIMEOUT = Duration.ofSeconds(120);
 
     /**
      * Thread-safe

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

@@ -23,6 +23,7 @@ import com.cyksj.model.views.GroupsAccountView;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.mange.AccountCommonService;
 import com.cyksj.service.mange.CmsGroupService;
+import com.cyksj.service.relation.GroupsRelationNetflixService;
 import com.cyksj.service.sms.SmsService;
 import com.cyksj.service.user.UserSysMsgNotifyService;
 import com.ejlchina.searcher.BeanSearcher;
@@ -79,6 +80,10 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
 
     private final UserSysMsgNotifyService userSysMsgNotifyService;
 
+    private final GroupsRelationNetflixService groupsRelationNetflixService;
+
+    private final UserMapper userMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 
@@ -256,6 +261,11 @@ public class CmsGroupServiceImpl extends ServiceImpl<GroupsMapper,GroupsTrips> i
                 relation.setVerifyCode(verifyCodeList.get(i));
                 relationMapper.updateById(relation);
             }
+            //设置奈飞用户座位
+            if (account.getGoodsId() == 1) {
+                User user = userMapper.selectById(relation.getUserId());
+                groupsRelationNetflixService.setNetflixSeatNum(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
+            }
         }
         if (groupsRelations.isEmpty() && verifyCodeList != null && verifyCodeList.size() > 0) {
             groupsRelations = relationMapper.selectList(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getGroupsId, groupsTrips.getId()));

+ 13 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -59,6 +59,7 @@ import com.cyksj.service.order.UserRealOrderBenefitsService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.relation.GroupsRelationExpiryRecordService;
+import com.cyksj.service.relation.GroupsRelationNetflixService;
 import com.cyksj.service.shop.YhShopDistributeService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserBindRelationService;
@@ -188,6 +189,10 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final UserBindRelationService userBindRelationService;
 
+    private final GroupsRelationNetflixService groupsRelationNetflixService;
+
+    private final AccountMapper accountMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -689,6 +694,14 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             delMirrorUser(orderDon.getGoodsId(), orderDon.getRelationId());
         }
 
+        //奈飞车票
+        if (orderDon.getGoodsId() == 1) {
+            User user = userMapper.selectById(newRelation.getUserId());
+            GroupsTrips groupsTrips = groupsMapper.selectById(newRelation.getGroupsId());
+            Account account = accountMapper.selectById(groupsTrips.getAccountId());
+            groupsRelationNetflixService.setNetflixSeatNum(newRelation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), newRelation.getExpiryTime());
+        }
+
         if (plusPurchaseSkuRelation != null && plus_relationList != null) {
             plus_relationList.remove(relationId);
             plus_relationList.add(newRelation.getId());

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

@@ -89,6 +89,7 @@ import com.cyksj.service.pay.AliPayCommonService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.relation.GroupsRelationExpiryRecordService;
+import com.cyksj.service.relation.GroupsRelationNetflixService;
 import com.cyksj.service.shop.YhShopDistributeService;
 import com.cyksj.service.shop.YhShopFrontService;
 import com.cyksj.service.sys.SysConfigService;
@@ -310,6 +311,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserTrialTicketJumpPayRecordMapper userTrialTicketJumpPayRecordMapper;
 
+	private final GroupsRelationNetflixService groupsRelationNetflixService;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -1415,13 +1418,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				}
 				//TODO 如未发车逻辑
 				groupsRelationMapper.updateById(relation);
-
+				Account account = null;
 				if (envCommonService.isPrdEnv() && order.getOrderType() == 2) {
 					//ChatGPT plus 独立和Midjourney 独立有人续费了发短信
 					if (Constant.AI_goodsIds.contains(order.getGoodsId()) && sku.getNum() == 1) {
 						try {
 							String accountStr = StrUtil.EMPTY;
-							Account account = accountMapper.selectById(groupsTrips.getAccountId());
+							account = accountMapper.selectById(groupsTrips.getAccountId());
 							if (account != null) {
 								accountStr = account.getAccount();
 							}
@@ -2298,6 +2301,16 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		} else {
 			//修改车位状态并发送模板消息
 			updateCarParkAndSendMsg(goodsDon, sku, orderDon);
+			if (goodsDon.getId() == 1) {
+				//设置netflix座位号
+				GroupsRelation relation = groupsRelationMapper.selectById(orderDon.getRelationId());
+				GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
+				if (groupsTrips.getStatus() != GroupsTrips.Status.waiting) {
+					Account account = accountMapper.selectById(groupsTrips.getAccountId());
+					User user = userMapper.selectById(relation.getUserId());
+					groupsRelationNetflixService.setNetflixSeatNum(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
+				}
+			}
 		}
 		//同步车票是否重购 记录
 		TASK_POOL.execute(() -> {

+ 20 - 0
netflix-service/src/main/java/com/cyksj/service/relation/GroupsRelationNetflixService.java

@@ -0,0 +1,20 @@
+package com.cyksj.service.relation;
+
+import cn.hutool.json.JSONObject;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: GroupsRelationNetflixService
+ * 创建者: JavaZou
+ * 创建时间:2024/6/17 15:44
+ */
+public interface GroupsRelationNetflixService {
+
+	JSONObject setNetflixSeatNum(Integer seatNum, String seatName, String account, String password, Date expiryTime);
+
+	JSONObject setNetflixPin(Long relationId, long userId);
+
+	Integer getPinStatus(String taskId) throws Exception;
+}

+ 119 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupsRelationNetflixServiceImpl.java

@@ -0,0 +1,119 @@
+package com.cyksj.service.relation.impl;
+
+import cn.hutool.json.JSONObject;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.IoKit;
+import com.cyksj.common.util.J11HttpC;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.common.util.StringUtil;
+import com.cyksj.mapper.AccountMapper;
+import com.cyksj.mapper.GroupsMapper;
+import com.cyksj.mapper.GroupsRelationMapper;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.model.entity.Account;
+import com.cyksj.model.entity.GroupsRelation;
+import com.cyksj.model.entity.GroupsTrips;
+import com.cyksj.model.entity.User;
+import com.cyksj.service.relation.GroupsRelationNetflixService;
+import com.cyksj.service.user.UserBindRelationService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: GroupsRelationNetflixServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2024/6/17 15:45
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class GroupsRelationNetflixServiceImpl implements GroupsRelationNetflixService {
+	private final UserMapper userMapper;
+
+	private final GroupsRelationMapper relationMapper;
+
+	private final GroupsMapper groupsMapper;
+
+	private final AccountMapper accountMapper;
+
+	private final UserBindRelationService userBindRelationService;
+
+	@Override
+	public JSONObject setNetflixSeatNum(Integer seatNum, String seatName, String account, String password, Date expiryTime) {
+		JSONObject params = new JSONObject();
+		params.putOpt("username", account);
+		params.putOpt("password", password);
+		params.putOpt("seat_name", seatName);
+		params.putOpt("seat_num", seatNum);
+		params.putOpt("seat_time", expiryTime);
+		//设置座位
+		String url = Constant.ZHAOJU_MOVIES + "/netflix_set/netflix_seat";
+		log.info("设置账号:{} 奈飞用户:{}座位信息", account, seatName);
+		try {
+			HttpResponse<String> res =
+					J11HttpC.custom()
+							.ofPost()
+							.url(url)
+							.headers(J11HttpC.ReqType.raw_json)
+							.body(HttpRequest.BodyPublishers.ofString(Jsons.toJson(params), IoKit.Charsets.UTF_8.getCharset()))
+							.send(HttpResponse.BodyHandlers.ofString());
+			String body = res.body();
+			JSONObject jsonObject = Jsons.parseObject(body, JSONObject.class);
+			JSONObject data = Jsons.parseObject(jsonObject.get("data"), JSONObject.class);
+			Integer status = data.getInt("status");
+			if (status == 2) {
+				log.error("设置用户:{}奈飞座位号失败", seatName);
+			}
+			return data;
+		} catch (Exception e) {
+			log.error("设置用户:{}奈飞座位号错误,msg:{}", seatName, StringUtil.getErrorText(e));
+		}
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.putOpt("status", 2);
+		return jsonObject;
+	}
+
+	@Override
+	public JSONObject setNetflixPin(Long relationId, long userId) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		GroupsRelation relation = relationMapper.selectById(relationId);
+		if (!userIdList.contains(relation.getUserId())) {
+			throw BusinessRuntimeException.getInstance("您车票已失效");
+		}
+		GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
+		Account account = accountMapper.selectById(groupsTrips.getAccountId());
+		if (account.getGoodsId() != 1) {
+			throw BusinessRuntimeException.getInstance("系统错误");
+		}
+		User user = userMapper.selectById(relation.getUserId());
+		return setNetflixSeatNum(relation.getNum(), user.getNickname(), account.getAccount(), account.getPassword(), relation.getExpiryTime());
+	}
+
+	@Override
+	public Integer getPinStatus(String taskId) throws Exception {
+		JSONObject params = new JSONObject();
+		params.putOpt("transId", taskId);
+		//查询任务状态
+		String url = Constant.ZHAOJU_MOVIES + "/netflix_set/netflix_task_status";
+		HttpResponse<String> res =
+				J11HttpC.custom()
+						.ofPost()
+						.url(url)
+						.headers(J11HttpC.ReqType.raw_json)
+						.body(HttpRequest.BodyPublishers.ofString(Jsons.toJson(params), IoKit.Charsets.UTF_8.getCharset()))
+						.send(HttpResponse.BodyHandlers.ofString());
+		String body = res.body();
+		JSONObject jsonObject = Jsons.parseObject(body, JSONObject.class);
+		JSONObject data = Jsons.parseObject(jsonObject.get("data"), JSONObject.class);
+		Integer status = data.getInt("status");
+		return status;
+	}
+}

+ 21 - 0
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -40,6 +40,7 @@ import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.mange.ticket.TicketAdvertiseConfigClickRecordService;
 import com.cyksj.service.order.OrderDonService;
 import com.cyksj.service.relation.GroupRelationFrontService;
+import com.cyksj.service.relation.GroupsRelationNetflixService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpUserUtil;
@@ -122,6 +123,8 @@ public class GroupRelationController {
 
     private final UserGoodsNewbieGuideRecordMapper userGoodsNewbieGuideRecordMapper;
 
+    private final GroupsRelationNetflixService groupsRelationNetflixService;
+
     private final static Sequence SEQUENCE = new Sequence(0);
 
     @RequestMapping("/get/renewal")
@@ -834,4 +837,22 @@ public class GroupRelationController {
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult(false);
     }
+
+    /**
+     * 设置pin码
+     */
+    @PutMapping("/set/pin/{relationId}")
+    public Result<String> setPin(@PathVariable Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        JSONObject data = groupsRelationNetflixService.setNetflixPin(relationId, userId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(data.toString());
+    }
+
+    /**
+     * 查询是否设置成功
+     */
+    @GetMapping("/get/pin/status/{taskId}")
+    public Result<Integer> getPinStatus(@PathVariable String taskId) throws Exception {
+        return GatewayResponse.SUCCESS.newBuilder().toResult(groupsRelationNetflixService.getPinStatus(taskId));
+    }
 }