Explorar o código

Merge remote-tracking branch 'origin/master'

chenbiao hai 7 meses
pai
achega
8890aa22c9

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

@@ -118,6 +118,8 @@ public interface Constant {
 
 	String CHANGE_GROUPS_TRIPS_ACCOUNT = "您好,您购买的%s,车票账号:%s密码已更换【杭州崇宇信息】";
 
+	String NETFLIX_ERROR_CHANGE_TICKET_MSG = "您申请恢复的奈飞账号已更换,请登录官网https://nf.video/ 查看【杭州崇宇信息】";
+
 	String ONE_EMPTY = " ";
 
 	String AMERICA_APPID_SECRET = "1990-01-01 朋友 aaa111 工作 aab112 父母 aac113";

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

@@ -99,4 +99,6 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 	List<DistributeOrderStatisticsDataView> getDistributeOrderView(@Param("goodsId") Long goodsId, @Param("start") String start, @Param("end") String end, @Param("isGeneral") Boolean isGeneral, @Param("chain") Integer chain);
 
 	Integer hasPaymentAiGoods(Long userId);
+
+	List<Long> selectTransportOids(@Param("phone") String phone, @Param("receiver") String receiver);
 }

+ 6 - 1
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelBannerNfAccountData.java

@@ -18,7 +18,8 @@ import java.util.Date;
 @Getter
 @Setter
 @SearchBean(tables = "netflix_user_account_status_record ans inner join order_don o on o.id = ans.order_id" +
-		" left join goods_don_sku sku on sku.id = o.sku_id",
+		" left join goods_don_sku sku on sku.id = o.sku_id" +
+		" left join account a on a.account = ans.account and a.goods_id = o.goods_id",
 		where = "ans.state = 3",
 		groupBy = "ans.account,o.sku_id,o.goods_id")
 @ExcelIgnoreUnannotated
@@ -41,4 +42,8 @@ public class ExcelBannerNfAccountData {
 	@DbField("sku.spec_val")
 	@ExcelProperty("规格")
 	private String specVal;
+
+	@DbField("any_value(a.remark)")
+	@ExcelProperty("备注")
+	private String remark;
 }

+ 6 - 7
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonBackView.java

@@ -24,7 +24,6 @@ import java.util.List;
 @Getter
 @Setter
 @SearchBean(tables = "order_don o left join goods_don g on g.id = o.goods_id" +
-		" left join order_don_transport odt on odt.order_id = o.id" +
 		" left join goods_don_sku sku on sku.id = o.sku_id" +
 		" :tb:",
 		where = ":condition:"
@@ -223,37 +222,37 @@ public class OrderDonBackView {
 	/**
 	 * 收货人
 	 */
-	@DbField("odt.receiver")
+	@DbIgnore
 	private String receiver;
 
 	/**
 	 * 手机号
 	 */
-	@DbField("odt.phone")
+	@DbIgnore
 	private String phone;
 
 	/**
 	 * 省份
 	 */
-	@DbField("odt.province")
+	@DbIgnore
 	private String province;
 
 	/**
 	 * 城市
 	 */
-	@DbField("odt.city")
+	@DbIgnore
 	private String city;
 
 	/**
 	 * 区/县
 	 */
-	@DbField("odt.district")
+	@DbIgnore
 	private String district;
 
 	/**
 	 * 详细地址
 	 */
-	@DbField("odt.address")
+	@DbIgnore
 	private String address;
 
 	/**

+ 10 - 0
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -599,4 +599,14 @@
         select count(1) from order_don where user_id = #{userId} and status not in ('close','noPayment')
         and goods_id in (select distinct goods_id from goods_don_category_relate where category = 1)
     </select>
+
+    <select id="selectTransportOids" resultType="java.lang.Long">
+        select order_id from order_don_transport where 1 = 1
+        <if test="phone != null">
+            and phone = #{phone}
+        </if>
+        <if test="receiver != null">
+            and receiver = #{receiver}
+        </if>
+    </select>
 </mapper>

+ 4 - 1
netflix-service/src/main/java/com/cyksj/service/mail/impl/CuiQiuMailServiceImpl.java

@@ -157,7 +157,7 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 		if (goodsId == 1) {
 			if (type != null && type == 1) {
 				String pre = "NetflixSans-Regular, Helvetica, Roboto, Segoe UI, sans-serif; font-weight";
-				if (body.contains("輸入此代碼登入") || body.contains("输入此代码登录") || body.contains("Enter this code to sign in")) {
+				if (body.contains("輸入此代碼登入") || body.contains("输入此代码登录") || body.contains("Enter this code to sign in") || content.getSubject().contains("seu código de acesso")) {
 					code = StrUtil.subAfter(body, pre, false);
 					if (StrUtil.isEmpty(code)) {
 						code = StrUtil.subAfter(body, "font-weight: 400; color: #232323; padding-top: 20px;", true);
@@ -165,6 +165,9 @@ public class CuiQiuMailServiceImpl implements CuiQiuMailService {
 					if (StrUtil.isEmpty(code)) {
 						code = StrUtil.subAfter(body, "Enter this code to sign in", true);
 					}
+					if (StrUtil.isEmpty(code)) {
+						code = StrUtil.subAfter(body, "Informe este código para entrar", true);
+					}
 				}
 				if (StrUtil.isEmpty(code)) {
 					throw BusinessRuntimeException.getInstance("查询失败,请检查是否发送了登陆码..");

+ 9 - 0
netflix-service/src/main/java/com/cyksj/service/relation/impl/CmsGroupsRelationServiceImpl.java

@@ -10,6 +10,7 @@ import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.relation.CmsGroupsRelationService;
 import com.cyksj.service.relation.GroupRelationClearService;
+import com.cyksj.service.sms.SmsService;
 import com.cyksj.service.user.UserBindRelationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -44,6 +45,8 @@ public class CmsGroupsRelationServiceImpl implements CmsGroupsRelationService {
 
 	private final OrderDonMapper orderDonMapper;
 
+	private final SmsService smsService;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
@@ -88,6 +91,12 @@ public class CmsGroupsRelationServiceImpl implements CmsGroupsRelationService {
 						recoverRecordMapper.update(null, Wrappers.lambdaUpdate(NetflixUserAccountSubmitRecoverRecord.class)
 								.set(NetflixUserAccountSubmitRecoverRecord::getReplaceRelationId, newRelation.getId())
 								.eq(NetflixUserAccountSubmitRecoverRecord::getId, recoverRecordId));
+						try {
+							//发送奈飞恢复短信通知
+							smsService.sendSmsToRelationUser(recoverRecord.getUserId(), Constant.NETFLIX_ERROR_CHANGE_TICKET_MSG);
+						} catch (Exception e) {
+
+						}
 					}
 				}
 			}

+ 25 - 4
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -311,9 +311,10 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 			Integer vipUserCount = vipUserMapper.selectCount(Wrappers.lambdaQuery(VipUser.class)
 					.in(VipUser::getUserId, userIds)
 					.gt(VipUser::getExpiryTime, now));
-			list.getDataList().forEach(ticket -> {
+			List<RenewalView> removeElements = null;
+			for (RenewalView ticket : list.getDataList()) {
 				if (ticket.getSkuId() == null || ticket.getGoodsId() == null) {
-					return;
+					continue;
 				}
 				if (ticket.getGoodsId() == 18 && ticket.getSkuNum() > 1) {
 					ticket.setPassword(null);
@@ -433,7 +434,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 						for (OrderDiscountPlusPurchaseSkuRelation data : plusPurchaseSkuRelations) {
 							String relationIds = data.getRelationIds();
 							if (StrUtil.isEmpty(relationIds)) {
-								return;
+								continue;
 							}
 							try {
 								List<Long> relationList = Jsons.parseList(relationIds, Long.class);
@@ -509,7 +510,27 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 						ticket.setIsPay(codexUser.getIsPay());
 					}
 				}
-			});
+
+				//codex、cc 不保留过期
+				if (ticket.getGoodsId() == Constant.CLAUDE_CODE_GOODS_ID || ticket.getGoodsId() == Constant.CODEX_GOODS_ID) {
+					//如果过期 直接清除
+					if (ticket.getExpiryTime() != null && ticket.getExpiryTime().before(now)) {
+						GroupsRelation groupsRelation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class).eq(GroupsRelation::getId, ticket.getRelationId()).eq(GroupsRelation::getUserId, ticket.getUserId()).last("limit 1"));
+						if (groupsRelation != null) {
+							clearService.clearTicket(groupsRelation, UserTicketClearedRecord.Source.self);
+						}
+						if (removeElements == null) {
+							removeElements = new ArrayList<>();
+						}
+						removeElements.add(ticket);
+					}
+				}
+			}
+			if (CollUtil.isNotEmpty(removeElements)) {
+				list.getDataList().removeAll(removeElements);
+				list.setTotalCount(size - removeElements.size());
+				removeElements.clear();
+			}
 		}
 		userLoginRecordService.saveUserLoginDayRecord(userId);
 		return list;

+ 6 - 0
netflix-service/src/main/java/com/cyksj/service/sms/impl/SmsServiceImpl.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.sms.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.SmsUtil;
 import com.cyksj.mapper.GroupsRelationMapper;
@@ -22,8 +23,13 @@ import org.springframework.stereotype.Service;
 public class SmsServiceImpl implements SmsService {
 	private final GroupsRelationMapper groupsRelationMapper;
 
+	private final EnvCommonService envCommonService;
+
 	@Override
 	public void sendSmsToRelationUser(Long userId, String template, String... objs) throws Exception {
+		if (!envCommonService.isPrdEnv()) {
+			return;
+		}
 		PhoneCode areaPhone = groupsRelationMapper.getAreaPhoneByUserId(userId);
 		if (areaPhone != null && StrUtil.isNotBlank(areaPhone.getPhone())) {
 			String phone = areaPhone.getPhone();

+ 12 - 2
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -303,7 +303,7 @@ public class GoodsDonController {
      * h5 银河首页平台展示
      */
     @GetMapping("/get/homePage")
-    public Result<? extends Object> getGoodsHomePage(String customId, Boolean isFilter) {
+    public Result<? extends Object> getGoodsHomePage(String customId, Boolean isFilter, String dsCode) {
 	    if (StrUtil.isNotBlank(customId)) {
 		    Result<List<YhShopGoodsFrontView>> shopGoods = getShopGoods(yhShopFrontService.getYhsIdByCustomId(customId));
 		    return shopGoods;
@@ -328,7 +328,11 @@ public class GoodsDonController {
 	    if (list == null) {
 		    list = Jsons.parseList(o, GoodsFrontListView.class);
 	    }
-
+	    AtomicLong dsUserId = new AtomicLong();
+	    if (StrUtil.isNotBlank(dsCode)) {
+		    UserSharedDto userSharedDto = userService.getUserShredDtoByDsCode(dsCode);
+		    dsUserId.set(userSharedDto.getSharedId());
+	    }
 	    DateTime now = DateTime.now();
 	    list.forEach(data -> {
 		    data.setSold(getGoodsSold(data.getId(), data.getSold()));
@@ -336,6 +340,12 @@ public class GoodsDonController {
 
 		    //设置特定价格
 		    setSpecificPrice(data, fUid, null);
+		    GoodsDonSku minPriceUserOwnsSku = goodsDonSkuMapper.checkAndReturnMinPriceUserOwnsSku(data.getId(), dsUserId.get());
+		    if (minPriceUserOwnsSku != null) {
+			    data.setPrice(minPriceUserOwnsSku.getPrice());
+			    data.setMonths(minPriceUserOwnsSku.getMonths());
+			    data.setDays(minPriceUserOwnsSku.getDays());
+		    }
 	    });
 	    return GatewayResponse.SUCCESS.newBuilder().toResult(Optional.of(list));
     }

+ 14 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -146,7 +146,7 @@ public class CmsOrderController {
 
 	@GetMapping("/get")
 	@SaCheckPermission("order:view")
-	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId, Boolean isTp) {
+	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId, Boolean isTp, String phone, String receiver) {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		if (channelId != null) {
 			List<Long> popularizeIds = channelPopularizeMapper.getPopularizeIdByChannelId(channelId);
@@ -222,6 +222,10 @@ public class CmsOrderController {
 			}
 			conditionSql += String.format(" exists (select 1 from user_mirror_shop_order_relate umr where mp_id = %s and umr.order_id = o.id limit 1)", userMirrorShopId);
 		}
+		if (!StrUtil.isAllEmpty(phone, receiver)) {
+			List<Long> transportOrderIds = orderDonMapper.selectTransportOids(phone, receiver);
+			builder.field(OrderDonBackView::getId, transportOrderIds).op(Operator.InList);
+		}
 		if (diffGoodsId != null || StrUtil.isNotBlank(operator) || isTp != null) {
 			if (StrUtil.isNotEmpty(conditionSql)) {
 				conditionSql += " and ";
@@ -254,6 +258,15 @@ public class CmsOrderController {
 					data.setBeforeServiceName(realGoodsOrderHandle.getBeforeServiceName());
 					data.setAfterServiceName(realGoodsOrderHandle.getAfterServiceName());
 				}
+				OrderDonTransportView transportView = beanSearcher.searchFirst(OrderDonTransportView.class, MapUtils.builder().field(OrderDonTransportView::getOrderId, data.getId()).build());
+				if (transportView != null) {
+					data.setReceiver(transportView.getReceiver());
+					data.setPhone(transportView.getPhone());
+					data.setProvince(transportView.getProvince());
+					data.setCity(transportView.getCity());
+					data.setDistrict(transportView.getDistrict());
+					data.setAddress(transportView.getAddress());
+				}
 			}
 
 			//使用优惠码