zoujiajian 2 năm trước cách đây
mục cha
commit
8bb7e9a41c
21 tập tin đã thay đổi với 435 bổ sung8 xóa
  1. 2 0
      netflix-common/src/main/java/com/cyksj/common/constant/Constant.java
  2. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/LumaUserMapper.java
  3. 6 0
      netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDonSku.java
  4. 53 0
      netflix-dao/src/main/java/com/cyksj/model/entity/LumaUser.java
  5. 2 2
      netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuInsert.java
  6. 2 0
      netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuFrontView.java
  7. 37 0
      netflix-dao/src/main/java/com/cyksj/model/views/LumaUserView.java
  8. 18 0
      netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java
  9. 15 0
      netflix-dao/src/main/java/com/cyksj/model/views/YhShopGoodsSkuFrontView.java
  10. 2 0
      netflix-service/src/main/java/com/cyksj/redis/RedisService.java
  11. 13 0
      netflix-service/src/main/java/com/cyksj/service/luma/LumaService.java
  12. 159 0
      netflix-service/src/main/java/com/cyksj/service/luma/impl/LumaServiceImpl.java
  13. 19 0
      netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java
  14. 14 0
      netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java
  15. 19 2
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  16. 13 1
      netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java
  17. 22 2
      netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java
  18. 21 0
      netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java
  19. 0 0
      netflix-web/src/main/resources/application-dev.yml
  20. 0 0
      netflix-web/src/main/resources/application-prd.yml
  21. 5 1
      netflix-web/src/main/resources/application-pre.yml

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

@@ -363,4 +363,6 @@ public interface Constant {
 	String money = "money";
 
 	String orders = "orders";
+
+	Long LUMA_GOODS_ID = 87l;
 }

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.LumaUser;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: LumaUserMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/8/2 18:22
+ */
+public interface LumaUserMapper extends BaseMapper<LumaUser> {
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDonSku.java

@@ -189,6 +189,12 @@ public class GoodsDonSku extends BaseEntity {
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Integer mjRelaxNum;
 
+    /**
+     * luma次数
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer lumaNum;
+
     /**
      * 特定价格
      */

+ 53 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/LumaUser.java

@@ -0,0 +1,53 @@
+package com.cyksj.model.entity;
+
+/**
+ * @author zwhui
+ * @date 2024/4/16 17:01
+ */
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class LumaUser extends BaseEntity{
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 头像
+     */
+    private String img;
+
+    /**
+     * 用户凭证
+     */
+    private String userToken;
+
+    /**
+     * 过期时间
+     */
+    private Date expireTime;
+
+    /**
+     * 车票id
+     */
+    private Long relationId;
+
+    /**
+     * 可用次数
+     */
+    private Integer num;
+
+    /**
+     * 车票类型 2试用
+     */
+    @DbIgnore
+    @TableField(exist = false)
+    private Integer aqType;
+}

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

@@ -1,7 +1,5 @@
 package com.cyksj.model.manage.request;
 
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.cyksj.model.entity.GoodsDiscountPlusPurchaseRelation;
 import lombok.Getter;
 import lombok.Setter;
@@ -163,6 +161,8 @@ public class ReqGoodsSkuInsert {
          * mj relax次数
          */
         private Integer mjRelaxNum;
+
+        private Integer lumaNum;
     }
 
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuFrontView.java

@@ -154,4 +154,6 @@ public class GoodsDonSkuFrontView {
 	private Boolean isCar;
 
 	private Boolean isMirror;
+
+	private Integer lumaNum;
 }

+ 37 - 0
netflix-dao/src/main/java/com/cyksj/model/views/LumaUserView.java

@@ -0,0 +1,37 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zwhui
+ * @date 2024/4/28 17:43
+ */
+@Data
+@SearchBean(tables = "luma_user lu left join groups_relation gr on lu.relation_id = gr.id ")
+public class LumaUserView {
+
+
+    @DbField("lu.id")
+    private Long id;
+
+    @DbField("lu.relation_id")
+    private Long relationId;
+
+    @DbField("gr.user_id")
+    private Long userId;
+
+    @DbField("lu.num")
+    private Integer lumaNum;
+
+    @DbField("lu.expire_time")
+    private Date expireTime;
+
+
+
+
+
+}

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java

@@ -204,12 +204,24 @@ public class RenewalView {
     @DbField("sku.mj_relax_num")
     private Integer mjRelaxNum;
 
+    /**
+     * luma 次数
+     */
+    @DbField("sku.luma_num")
+    private Integer lumaNUm;
+
     /**
      * mj 套餐包最低单价
      */
     @DbIgnore
     private BigDecimal mjPackagePrice;
 
+    /**
+     * luma 套餐包最低单价
+     */
+    @DbIgnore
+    private BigDecimal lumaPackagePrice;
+
     /**
      * 用户 mj fast次数
      */
@@ -234,6 +246,12 @@ public class RenewalView {
     @DbIgnore
     private Long gptUserLimitTime;
 
+    /**
+     * luma 用户次数
+     */
+    @DbIgnore
+    private Integer lumaUserNum;
+
     @DbIgnore
     private Long use;
 

+ 15 - 0
netflix-dao/src/main/java/com/cyksj/model/views/YhShopGoodsSkuFrontView.java

@@ -142,4 +142,19 @@ public class YhShopGoodsSkuFrontView {
 
 	@DbField("sku.is_mirror")
 	private Boolean isMirror;
+
+	/**
+	 * mj fast次数
+	 */
+	@DbField("sku.mj_fast_num")
+	private Integer mjFastNum;
+
+	/**
+	 * mj relax次数
+	 */
+	@DbField("sku.mj_relax_num")
+	private Integer mjRelaxNum;
+
+	@DbField("sku.luma_num")
+	private Integer lumaNum;
 }

+ 2 - 0
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -842,6 +842,8 @@ public class RedisService {
         MIDJOURNEY_ACCOUNT("midjourney:account:", "midjourney account", 60 * 60 * 48L),
         APPLY_MONEY_DAY_LIMIT_KEY("apply_money_day_limit_key:%s:%s:%s", "每日提现次数限制", 60 * 60 * 24L),
         NETFLIX_SET_LIMIT_TIME("netflix_set_limit_time", "奈飞设置限制", 30l),
+        LUMA_USER("luma_user:", "luma_user", 60 * 60 * 2L),
+        LUMA_NUM_LIMIT("luma_num_limit:", "luma次数", 60 * 60 * 48L),
         ;
 
         private String name;

+ 13 - 0
netflix-service/src/main/java/com/cyksj/service/luma/LumaService.java

@@ -0,0 +1,13 @@
+package com.cyksj.service.luma;
+
+import com.cyksj.model.entity.LumaUser;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: LumaService
+ * 创建者: JavaZou
+ * 创建时间:2024/8/5 11:54
+ */
+public interface LumaService {
+	LumaUser getLumaUser(Long userId, Long relationId);
+}

+ 159 - 0
netflix-service/src/main/java/com/cyksj/service/luma/impl/LumaServiceImpl.java

@@ -0,0 +1,159 @@
+package com.cyksj.service.luma.impl;
+
+import cn.hutool.core.lang.UUID;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.StringUtil;
+import com.cyksj.mapper.*;
+import com.cyksj.model.entity.*;
+import com.cyksj.redis.RedisService;
+import com.cyksj.service.luma.LumaService;
+import com.cyksj.service.user.UserBindRelationService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.stereotype.Service;
+
+import javax.imageio.stream.FileImageOutputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: LumaServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2024/8/5 11:55
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class LumaServiceImpl implements LumaService {
+	private final GoodsDonMapper goodsDonMapper;
+
+	private final GoodsDonSkuMapper skuMapper;
+
+	private final UserBindRelationService userBindRelationService;
+
+	private final GroupsRelationMapper groupsRelationMapper;
+
+	private final GroupsMapper groupsMapper;
+
+	private final LumaUserMapper lumaUserMapper;
+
+	private final UserMapper userMapper;
+
+	private final RedisService redisService;
+
+	@Override
+	public LumaUser getLumaUser(Long userId, Long relationId) {
+		GroupsRelation groupsRelation = getGroupsRelation(userId, relationId);
+		GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
+		GoodsDonSku goodsDonSku = skuMapper.selectById(groupsTrips.getSkuId());
+
+		if (goodsDonSku != null && goodsDonSku.getGoodsId() == Constant.LUMA_GOODS_ID) {
+			return getLumaUser(userId, relationId, groupsRelation, goodsDonSku);
+		} else {
+			throw BusinessRuntimeException.getInstance("服务器出了点问题");
+		}
+	}
+
+	private GroupsRelation getGroupsRelation(Long userId, Long relationId) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		GroupsRelation groupsRelation = groupsRelationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class).in(GroupsRelation::getUserId, userIdList).eq(GroupsRelation::getId, relationId));
+		if (groupsRelation == null) {
+			throw BusinessRuntimeException.getInstance("车票不存在");
+		}
+		return groupsRelation;
+	}
+
+	/**
+	 * 获取车队信息
+	 *
+	 * @param groupsRelation
+	 * @return
+	 */
+	private GroupsTrips getGroupsTrips(GroupsRelation groupsRelation) {
+		GroupsTrips groupsTrips = groupsMapper.selectById(groupsRelation.getGroupsId());
+		if (groupsTrips == null) {
+			throw BusinessRuntimeException.getInstance("车队异常");
+		}
+		return groupsTrips;
+	}
+
+	private LumaUser getLumaUser(Long userId, Long relationId, GroupsRelation groupsRelation, GoodsDonSku goodsDonSku) {
+		LumaUser lumaUser = lumaUserMapper.selectOne(Wrappers.lambdaQuery(LumaUser.class).eq(LumaUser::getRelationId, relationId));
+		User user = userMapper.selectById(userId);
+		if (lumaUser == null) {
+			lumaUser = createLumaUser(groupsRelation, user, goodsDonSku);
+		} else {
+			updateLumaUser(groupsRelation, user, lumaUser);
+		}
+		return lumaUser;
+	}
+
+	private void updateLumaUser(GroupsRelation groupsRelation, User user, LumaUser lumaUser) {
+		lumaUser.setName(user.getNickname());
+		lumaUser.setImg(getWxImg(user.getHeadimgurl(), user));
+		lumaUser.setExpireTime(groupsRelation.getExpiryTime());
+		lumaUserMapper.updateById(lumaUser);
+		lumaUser.setAqType(groupsRelation.getAqType());
+		redisService.set(RedisService.key.LUMA_USER.getName() + lumaUser.getUserToken(), lumaUser, RedisService.key.LUMA_USER.getTimeout());
+	}
+
+	private LumaUser createLumaUser(GroupsRelation groupsRelation, User user, GoodsDonSku goodsDonSku) {
+		LumaUser lumaUser = new LumaUser();
+		lumaUser.setExpireTime(groupsRelation.getExpiryTime());
+		lumaUser.setName(user.getNickname());
+		lumaUser.setImg(getWxImg(user.getHeadimgurl(), user));
+		lumaUser.setRelationId(groupsRelation.getId());
+		lumaUser.setUserToken(UUID.randomUUID().toString());
+		if (groupsRelation.getAqType() == 2) {
+			lumaUser.setNum(goodsDonSku.getLumaNum());
+		} else {
+			lumaUser.setNum(goodsDonSku.getLumaNum());
+		}
+		lumaUser.setAqType(groupsRelation.getAqType());
+		try {
+			lumaUserMapper.insert(lumaUser);
+		} catch (DuplicateKeyException e) {
+		}
+		redisService.set(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId(), lumaUser.getNum(), RedisService.key.LUMA_NUM_LIMIT.getTimeout());
+		return lumaUser;
+	}
+
+	/**
+	 * 更换wx头像至oss
+	 */
+	private String getWxImg(String headimgurl, User user) {
+		if (headimgurl.contains("thirdwx.qlogo.cn")) {
+			try {
+				return uploadPic(headimgurl, "wxheadimg-" + user.getId());
+			} catch (Exception ex) {
+				log.error("上传微信头像错误!msg:{}", StringUtil.getErrorText(ex));
+				return "./avatars.png";
+			}
+		} else {
+			return user.getHeadimgurl();
+		}
+	}
+
+	private static String uploadPic(String url, String prefix) throws IOException {
+		byte[] body = HttpUtil.downloadBytes(url);
+		Path tempFile = Files.createTempFile(prefix, ".jpeg");
+		try (FileImageOutputStream imageOutput = new FileImageOutputStream(tempFile.toFile())) {
+			imageOutput.write(body, 0, body.length);
+		}
+		Map<String, Object> paramMap = new HashMap<>();
+		paramMap.put("file", tempFile.toFile());
+		JSONObject result = JSONUtil.parseObj(HttpUtil.post("https://files.liuliangbang.vip/pic/ups", paramMap));
+		return result.getJSONObject("value").getJSONArray("saved").getJSONObject(0).getJSONObject("info").getStr("cdnUrl");
+	}
+}

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

@@ -199,6 +199,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final OrderDonRenewRecordMapper orderDonRenewRecordMapper;
 
+    private final LumaUserMapper lumaUserMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -509,6 +511,23 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 }
             }
         }
+
+        //扣除luma套餐次数
+        if (upgradePackage.getGoodsId() == Constant.LUMA_GOODS_ID) {
+            LumaUser lumaUser = lumaUserMapper.selectOne(Wrappers.lambdaQuery(LumaUser.class).eq(LumaUser::getRelationId, orderDon.getRelationId()));
+            if (lumaUser != null) {
+                int update = lumaUserMapper.update(null, Wrappers.lambdaUpdate(LumaUser.class)
+                        .set(LumaUser::getNum, lumaUser.getNum() < upgradePackage.getNum() ? 0 : lumaUser.getNum() - upgradePackage.getNum())
+                        .eq(LumaUser::getId, lumaUser.getId()));
+                if (update == 0) {
+                    log.info("lumaUser 套餐包增值失败 id:{},orderId:{}", lumaUser.getId(), orderDon.getId());
+                }
+                Long decr = redisService.decr(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId(), upgradePackage.getNum().longValue());
+                if (decr < 0) {
+                    redisService.set(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId(), 0L);
+                }
+            }
+        }
     }
 
     /**

+ 14 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/MirrorUserCleatServiceImpl.java

@@ -2,6 +2,7 @@ package com.cyksj.service.mange.impl;
 
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.Constant;
 import com.cyksj.mapper.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
@@ -43,6 +44,8 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 
 	private final GroupsMapper groupsMapper;
 
+	private final LumaUserMapper lumaUserMapper;
+
 	@Override
 	public void delMirrorUser(Long goodsId, Long relationId) {
 		//gpt镜像
@@ -64,6 +67,17 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
 				redisService.del(RedisService.key.MIDJOURNEY_USER.getName() + user.getUserToken());
 			}
 		}
+
+		//luma
+		if (goodsId != null && goodsId == Constant.LUMA_GOODS_ID) {
+			LumaUser user = lumaUserMapper.selectOne(Wrappers.lambdaQuery(LumaUser.class)
+					.eq(LumaUser::getRelationId, relationId).last("limit 1"));
+			if (user != null) {
+				lumaUserMapper.delete(Wrappers.lambdaQuery(LumaUser.class)
+						.eq(LumaUser::getRelationId, relationId));
+				redisService.del(RedisService.key.LUMA_NUM_LIMIT.getName() + user.getId());
+			}
+		}
 	}
 
 	@Override

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

@@ -72,7 +72,6 @@ import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.corp.WxCorpOps;
 import com.cyksj.service.coupon.CouponFontService;
-import com.cyksj.service.distribute.DistributeExtraRebateService;
 import com.cyksj.service.distribute.UserBusinessFrontService;
 import com.cyksj.service.distribute.equipment.EquipmentDistributeService;
 import com.cyksj.service.exchange.ExchangeCodeService;
@@ -308,7 +307,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final ChatgptUserMapper chatgptUserMapper;
 
-	private final DistributeExtraRebateService distributeExtraRebateService;
+	private final LumaUserMapper lumaUserMapper;
 
 	private final UserTrialTicketJumpPayRecordMapper userTrialTicketJumpPayRecordMapper;
 
@@ -3596,6 +3595,24 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				}
 			}
 		}
+
+		//luma
+		if (upgradePackage.getGoodsId() == Constant.LUMA_GOODS_ID) {
+			LumaUser lumaUser = lumaUserMapper.selectOne(Wrappers.lambdaQuery(LumaUser.class).eq(LumaUser::getRelationId, orderDon.getRelationId()));
+			if (lumaUser != null) {
+				int update = lumaUserMapper.update(null, Wrappers.lambdaUpdate(LumaUser.class)
+						.set(LumaUser::getNum, lumaUser.getNum() + upgradePackage.getNum()).eq(LumaUser::getId, lumaUser.getId()));
+				if (update == 0) {
+					log.info("lumaUser 套餐包增值失败 id:{},orderId:{}", lumaUser.getId(), orderDon.getId());
+				}
+				Object num = redisService.get(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId());
+				if (num == null) {
+					redisService.set(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId(), lumaUser.getNum() + upgradePackage.getNum().longValue(), RedisService.key.LUMA_NUM_LIMIT.getTimeout());
+				} else {
+					redisService.incr(RedisService.key.LUMA_NUM_LIMIT.getName() + lumaUser.getId(), upgradePackage.getNum().longValue());
+				}
+			}
+		}
 	}
 
 

+ 13 - 1
netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java

@@ -35,6 +35,7 @@ import com.cyksj.redis.RedisService;
 import com.cyksj.service.chatgpt.ChatGptAccountService;
 import com.cyksj.service.chatgpt.ChatGptAuthService;
 import com.cyksj.service.groups.GroupsFuncService;
+import com.cyksj.service.luma.LumaService;
 import com.cyksj.service.mail.CuiQiuMailService;
 import com.cyksj.service.mail.MailService;
 import com.cyksj.service.mange.coupon.CouponCommonService;
@@ -126,7 +127,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final UpgradePackageMapper upgradePackageMapper;
 
-	private final GoodsDonQaRelateMapper goodsDonQaRelateMapper;
+	private final LumaService lumaService;
 
 	private final GroupsRelationNetflixService groupsRelationNetflixService;
 
@@ -299,6 +300,17 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				}
 				ticket.setIsRenewPackage(userInfo.getIsRenewPackage());
 			}
+			if (ticket.getGoodsId() == Constant.LUMA_GOODS_ID && ticket.getExpiryTime() != null) {
+				try {
+					List<UpgradePackage> upgradePackages = upgradePackageMapper.selectList(Wrappers.lambdaQuery(UpgradePackage.class).apply("JSON_CONTAINS(sku_ids,'\"" + ticket.getSkuId() + "\"')").eq(UpgradePackage::getStatus, Boolean.TRUE).eq(UpgradePackage::getDeleted, Boolean.TRUE));
+					if (CollectionUtil.isNotEmpty(upgradePackages)){
+						upgradePackages.stream().map(e -> e.getPrice().divide(BigDecimal.valueOf(e.getNum()), 2, RoundingMode.HALF_UP)).min(BigDecimal::compareTo).ifPresent(ticket::setLumaPackagePrice);
+					}
+					LumaUser lumaUser = lumaService.getLumaUser(userId, ticket.getRelationId());
+					ticket.setLumaUserNum(lumaUser.getNum());
+				} catch (Exception e) {
+				}
+			}
 			List<GroupsRelationUserView> relationUserViews = groupsRelationMapper.getUserRelationUserViews(ticket.getGroupId(), ticket.getRelationId(), ticket.getUserId(), List.of(GroupsRelation.Status.validity, GroupsRelation.Status.outside));
 			ticket.setRelationViews(relationUserViews);
 			if (ticket.getExpiryTime() != null) {

+ 22 - 2
netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java

@@ -19,6 +19,7 @@ import com.cyksj.model.views.ChatGptUserView;
 import com.cyksj.model.views.ChatgptCarInfoView;
 import com.cyksj.model.views.ChatgptConversionLimitView;
 import com.cyksj.service.chatgpt.ChatGptAccountService;
+import com.cyksj.service.luma.LumaService;
 import com.cyksj.service.midjourney.MidjourneyAccountService;
 import com.cyksj.web.util.StpUserUtil;
 import com.ejlchina.searcher.BeanSearcher;
@@ -34,14 +35,12 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.swing.text.html.Option;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * /server/镜像服务
@@ -75,12 +74,20 @@ public class MirrorController {
     @Value("${midjourney.drawUrl}")
     private String midjourneyDrawUrl;
 
+    @Value("${luma.url}")
+    private String lumaHost;
+
+    @Value("${luma.videoUrl}")
+    private String lumaVideoUrl;
+
     private final RenewUpgradePackageMapper renewUpgradePackageMapper;
 
     private final GroupsRelationMapper relationMapper;
 
     private final GroupsMapper groupsMapper;
 
+    private final LumaService lumaService;
+
 
     /**
      * GPT车票跳转登录
@@ -405,4 +412,17 @@ public class MirrorController {
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
+
+
+    /**
+     * luma车票跳转登录
+     *
+     * @param relationId 车票id
+     */
+    @GetMapping("/luma/{relationId}")
+    public Result<String> lumaRedirect(@PathVariable Long relationId) {
+        Long userId = StpUserUtil.getLoginIdAsLong();
+        LumaUser lumaUser = lumaService.getLumaUser(userId, relationId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult(lumaHost + (EnvCommonService.active_pre.equals(envCommonService.getEnv()) ? "/8083":"/8084") +"/api/applets/luma/lumaMirrorWithToken/" + lumaUser.getUserToken());
+    }
 }

+ 21 - 0
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -33,8 +33,10 @@ import com.cyksj.model.request.AlipayOrderDonReq;
 import com.cyksj.model.request.OrderPayRequest;
 import com.cyksj.model.response.AliPayTradeStatus;
 import com.cyksj.model.views.GoodsDonSkuView;
+import com.cyksj.model.views.LumaUserView;
 import com.cyksj.model.views.MidjourneyUserView;
 import com.cyksj.model.views.OrderCommentView;
+import com.cyksj.service.luma.LumaService;
 import com.cyksj.service.midjourney.MidjourneyAccountService;
 import com.cyksj.service.order.OrderDonService;
 import com.cyksj.service.paypal.PayPalService;
@@ -129,6 +131,9 @@ public class OrderController {
     @Autowired
     private OrderDonRenewRecordMapper orderDonRenewRecordMapper;
 
+    @Autowired
+    private LumaService lumaService;
+
     /**
      * 支付
      * @author chan
@@ -862,4 +867,20 @@ public class OrderController {
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
+
+    /**
+     * luma查询订单用户账号剩余次数
+     */
+    @GetMapping("/get/luma/user")
+    public Result<LumaUserView> getLumaUser(Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        LumaUserView search = beanSearcher.searchFirst(LumaUserView.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(LumaUserView::getUserId, userId).field(LumaUserView::getRelationId, relationId).build());
+        if (search == null) {
+            LumaUser lumaUser = lumaService.getLumaUser(userId, relationId);
+            search = new LumaUserView();
+            BeanUtils.copyProperties(lumaUser, search);
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
netflix-web/src/main/resources/application-dev.yml


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
netflix-web/src/main/resources/application-prd.yml


+ 5 - 1
netflix-web/src/main/resources/application-pre.yml

@@ -197,4 +197,8 @@ smsVerify:
 
 midjourney:
   url: https://nf.video
-  drawUrl: https://nf.video/drawTest/web/
+  drawUrl: https://nf.video/drawTest/web/
+
+luma:
+  url: https://luma.galaxydvd.com
+  videoUrl: https://luma.galaxydvd.com/videoTest/web

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác