zwhui 2 jaren geleden
bovenliggende
commit
fb290e93b3
23 gewijzigde bestanden met toevoegingen van 282 en 46 verwijderingen
  1. 6 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderDetailView.java
  2. 4 0
      netflix-dao/src/main/java/com/cyksj/model/entity/UpgradeOrderDon.java
  3. 1 1
      netflix-dao/src/main/java/com/cyksj/model/excel/ExcelUpgradeOrderDonData.java
  4. 60 0
      netflix-dao/src/main/java/com/cyksj/model/manage/views/UpgradeOrderDonSearchView.java
  5. 15 1
      netflix-dao/src/main/java/com/cyksj/model/manage/views/UpgradeOrderDonView.java
  6. 5 0
      netflix-dao/src/main/java/com/cyksj/model/request/OrderPayRequest.java
  7. 11 0
      netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonSkuFrontView.java
  8. 3 0
      netflix-dao/src/main/java/com/cyksj/model/views/MidjourneyAccountView.java
  9. 1 1
      netflix-dao/src/main/java/com/cyksj/model/views/MidjourneyUserView.java
  10. 21 0
      netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java
  11. 3 1
      netflix-service/src/main/java/com/cyksj/service/midjourney/impl/MidjourneyServiceImpl.java
  12. 3 1
      netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java
  13. 52 29
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  14. 13 0
      netflix-service/src/main/java/com/cyksj/service/relation/impl/GroupRelationFrontServiceImpl.java
  15. 13 0
      netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java
  16. 2 2
      netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java
  17. 3 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java
  18. 3 0
      netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java
  19. 13 2
      netflix-web/src/main/java/com/cyksj/web/controller/mirror/MirrorController.java
  20. 46 7
      netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java
  21. 0 0
      netflix-web/src/main/resources/application-dev.yml
  22. 0 0
      netflix-web/src/main/resources/application-prd.yml
  23. 4 1
      netflix-web/src/main/resources/application-pre.yml

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

@@ -71,6 +71,12 @@ public class OrderDetailView {
 	@DbIgnore
 	private OrderDonTransport transport;
 
+	@DbIgnore
+	private Integer mjFastNum;
+
+	@DbIgnore
+	private Integer mjRelaxNum;
+
 	@DbField("o.relation_id")
 	private Long relationId;
 

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

@@ -43,6 +43,10 @@ public class UpgradeOrderDon extends BaseEntity {
 
     private String transactionId;
 
+    private Integer num;
+
+    private BigDecimal price;
+
     /**
      * 金额
      */

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

@@ -21,7 +21,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "upgrade_order_don o left join upgrade_package up on o.package_id = up.id left join sku " +
+@SearchBean(tables = "upgrade_order_don o left join upgrade_package up on o.package_id = up.id " +
 		"left join user u on o.user_id = u.id "
 )
 public class ExcelUpgradeOrderDonData {

+ 60 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/UpgradeOrderDonSearchView.java

@@ -0,0 +1,60 @@
+package com.cyksj.model.manage.views;
+
+import com.cyksj.model.entity.GoodsDon;
+import com.cyksj.model.entity.OrderDon;
+import com.cyksj.model.entity.OrderDonWaybill;
+import com.cyksj.model.views.GoodsDonSkuView;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDonSearchView
+ *创建者: JavaZou
+ *创建时间:2023/7/28 16:21
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select * from upgrade_order_don :orderId:) o left join upgrade_package up on o.package_id = up.id " +
+		"left join goods_don g on g.id = up.goods_id " +
+		"left join goods_don_sku gs on gs.id = up.sku_id ")
+public class UpgradeOrderDonSearchView {
+	@DbField("o.id")
+	private Long id;
+
+	@DbField("up.name")
+	private String name;
+
+	@DbField("up.price")
+	private BigDecimal price;
+
+	@DbField("up.num")
+	private Integer num;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("gs.spec_val")
+	private String specVal;
+
+	@DbField("o.status")
+	private OrderDon.Status status;
+
+	@DbField("o.type")
+	private OrderDon.Type type;
+
+	@DbField("o.created_time")
+	private Date createdTime;
+
+	@DbField("o.pay_time")
+	private Date payTime;
+
+}

+ 15 - 1
netflix-dao/src/main/java/com/cyksj/model/manage/views/UpgradeOrderDonView.java

@@ -23,7 +23,8 @@ import java.util.List;
 @Getter
 @Setter
 @SearchBean(tables = "upgrade_order_don o left join upgrade_package up on o.package_id = up.id " +
-        "left join goods_don g on g.id = o.goods_id")
+        "left join goods_don g on g.id = o.goods_id " +
+        "left join goods_don_sku sku on up.sku_id = sku.id ")
 public class UpgradeOrderDonView {
 
     @DbField("o.id")
@@ -41,9 +42,22 @@ public class UpgradeOrderDonView {
     @DbField("g.title")
     private String title;
 
+    @DbField("sku.spec_val")
+    private String specVal;
+
     @DbField("g.id")
     private Long goodsId;
 
+    @DbField("g.logo")
+    private String logo;
+
+    @DbField("up.name")
+    private String name;
+
+    @DbField("up.num")
+    private Integer num;
+
+
     @DbField("o.user_id")
     @JsonIgnore
     private Long userId;

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderPayRequest.java

@@ -170,4 +170,9 @@ public class OrderPayRequest {
      * 套餐id
      */
     private Long packageId;
+
+    /**
+     * 源订单id
+     */
+    private Long originalOrderId;
 }

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

@@ -140,6 +140,17 @@ public class GoodsDonSkuFrontView {
 	 */
 	private Long gptLimitTime;
 
+
+	/**
+	 * mj fast次数
+	 */
+	private Integer mjFastNum;
+
+	/**
+	 * mj relax次数
+	 */
+	private Integer mjRelaxNum;
+
 	private Boolean isCar;
 
 	private Boolean isMirror;

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/MidjourneyAccountView.java

@@ -22,6 +22,9 @@ public class MidjourneyAccountView {
     @DbField("ma.id")
     private Long id;
 
+    @DbField("ma.account_id")
+    private Long accountId;
+
     @DbField("a.account")
     private String account;
 

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/MidjourneyUserView.java

@@ -19,7 +19,7 @@ public class MidjourneyUserView {
     private Long id;
 
     @DbField("mu.relation_id")
-    private String relationId;
+    private Long relationId;
 
     @DbField("gr.user_id")
     private Long userId;

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

@@ -148,6 +148,8 @@ public class RenewalView {
 
     @DbIgnore
     private String orderNo;
+    @DbIgnore
+    private Long orderId;
 
     @DbIgnore
     private String transactionId;
@@ -183,4 +185,23 @@ public class RenewalView {
      */
     @DbField("sku.is_car")
     private Boolean isCar;
+
+
+    /**
+     * mj fast次数
+     */
+    @DbField("sku.mj_fast_num")
+    private Integer mjFastNum;
+
+    /**
+     * mj relax次数
+     */
+    @DbField("sku.mj_relax_num")
+    private Integer mjRelaxNum;
+
+    /**
+     * mj 套餐包最低单价
+     */
+    @DbIgnore
+    private BigDecimal mjPackagePrice;
 }

+ 3 - 1
netflix-service/src/main/java/com/cyksj/service/midjourney/impl/MidjourneyServiceImpl.java

@@ -66,12 +66,13 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         return saveConversation(user.getId(), user.getMode(),Long.parseLong(result.getResult()),result.getProperties(),"IMAGINE", StringUtils.EMPTY);
     }
 
-    public MidjourneyUserConversation saveConversation(Long userId,Integer mode,Long taskId,Map<String,Object> properties, String action,String prompt) {
+    public MidjourneyUserConversation saveConversation(Long userId,Integer mode,Long taskId,Map<String,Object> properties, String action,String prompt) throws Exception {
         MidjourneyUserConversation conversation = new MidjourneyUserConversation()
                 .setUserId(userId).setTaskId(taskId).setAction(action).setPrompt(prompt)
                 .setMode(mode).setStartTime(System.currentTimeMillis()).setProgress("0%")
                 .setStatus("IN_PROGRESS").setTaskId(taskId);
         if (MapUtil.isNotEmpty(properties)) {
+            conversation.setProperties(Jsons.toJson(properties));
             conversation.setChannelId(properties.get("discordChannelId") == null ? null : Long.parseLong(properties.get("discordChannelId").toString()))
                     .setInstanceId(properties.get("discordInstanceId") == null ? null : Long.parseLong(properties.get("discordInstanceId").toString()));
         }
@@ -133,6 +134,7 @@ public class MidjourneyServiceImpl implements MidjourneyService {
         if (StringUtils.isNotBlank(conversation.getButtons())){
             Jsons.parseList(conversation.getButtons(), MessageButton.class).forEach(button -> {
                 if (button.getCustomId().equals(customId)) {
+                    log.info("action customId:{}", customId);
                     button.setStyle(3);
                 }
             });

+ 3 - 1
netflix-service/src/main/java/com/cyksj/service/order/OrderDonService.java

@@ -92,11 +92,13 @@ public interface OrderDonService extends IService<OrderDon> {
      */
     void zeroOrderConfirm(Long orderId);
 
+    void zeroUpgradeOrderConfirm(Long orderId);
+
     void orderNotify(OrderDon orderDon);
 
     UpgradeOrderDon submitUpgrade(OrderPayRequest payRequest);
 
-    AliPayParams aliPayUpgrade(AlipayOrderDonReq re, String productCode) throws Exception;
+    AliPayParams aliPayUpgrade(AlipayOrderDonReq re, String productCode, String qrPayMode) throws Exception;
 
     void aliPayUpgradeNotify(Map<String, String> params) throws Exception;
 

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

@@ -1240,6 +1240,27 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		unifiedHandlerOrderNotify(orderDon, goodsDon, sku);
 	}
 
+	@Override
+	public void zeroUpgradeOrderConfirm(Long orderId) {
+		UpgradeOrderDon orderDon = upgradeOrderDonMapper.selectById(orderId);
+		if (orderDon == null) throw BusinessRuntimeException.getInstance("订单不存在");
+		if (orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0) {
+			throw BusinessRuntimeException.getInstance("订单异常");
+		}
+		if (orderDon.getStatus() != UpgradeOrderDon.Status.noPayment) {
+			throw BusinessRuntimeException.getInstance("订单状态已修改");
+		}
+		UpgradePackage upgradePackage = null;
+		if (orderDon.getPackageId() != null) {
+			upgradePackage = upgradePackageMapper.selectById(orderDon.getPackageId());
+		}
+		if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+			orderDon.setType(UpgradeOrderDon.Type.BALANCE);
+			orderDon.setPayTime(DateTime.now());
+		}
+		unifiedHandlerUpgradeOrderNotify(orderDon,upgradePackage);
+	}
+
 	public void updateCarParkAndSendMsg(GoodsDon goodsDon, GoodsDonSku sku, OrderDon order) {
 		if (goodsDon.getType() == 1) {
 			//修改车位状态
@@ -3130,30 +3151,32 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				payRequest.setDonMoney(upgradePackage.getPrice());
 			}
 			MidjourneyUser midjourneyUser = midjourneyUserMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUser.class).eq(MidjourneyUser::getRelationId, payRequest.getRelationId()));
-			if (midjourneyUser != null){
-
-				String donNo = SEQUENCE.nextId().toString();
-				UpgradeOrderDon upgradeOrderDon = new UpgradeOrderDon();
-				upgradeOrderDon.setOrderNo(donNo);
-				upgradeOrderDon.setUserId(payRequest.getUserId());
-				upgradeOrderDon.setOriginalOrderId(groupsRelation.getOrderId());
-				upgradeOrderDon.setRelationId(payRequest.getRelationId());
-				upgradeOrderDon.setPackageId(payRequest.getPackageId());
-				upgradeOrderDon.setGoodsId(groupsTrips.getGoodsId());
-				upgradeOrderDon.setMoney(payRequest.getDonMoney());
-				upgradeOrderDon.setStatus(UpgradeOrderDon.Status.noPayment);
-				upgradeOrderDon.setType(UpgradeOrderDon.Type.ALI_PAY);
-				upgradeOrderDonMapper.insert(upgradeOrderDon);
-
-				deductUpgradeBalancePayOrderMoney(upgradeOrderDon, payRequest.getBalance(),user );
-
-				if (upgradeOrderDon.getStatus() == UpgradeOrderDon.Status.noPayment) {
-					jobManager.addJob(EXPIRY_TIME, () -> {
-						closeUpgradeOrder(upgradeOrderDon.getId(), null);
-					});
-				}
-				return upgradeOrderDon;
-			}
+			if (midjourneyUser == null){
+				throw BusinessRuntimeException.getInstance("车票未激活Midjourney账号,请先激活");
+			}
+			String donNo = SEQUENCE.nextId().toString();
+			UpgradeOrderDon upgradeOrderDon = new UpgradeOrderDon();
+			upgradeOrderDon.setOrderNo(donNo);
+			upgradeOrderDon.setUserId(payRequest.getUserId());
+			upgradeOrderDon.setOriginalOrderId(payRequest.getOriginalOrderId());
+			upgradeOrderDon.setRelationId(payRequest.getRelationId());
+			upgradeOrderDon.setPackageId(payRequest.getPackageId());
+			upgradeOrderDon.setPrice(upgradePackage.getPrice());
+			upgradeOrderDon.setNum(upgradePackage.getNum());
+			upgradeOrderDon.setGoodsId(goodsDonSku.getGoodsId());
+			upgradeOrderDon.setMoney(payRequest.getDonMoney());
+			upgradeOrderDon.setStatus(UpgradeOrderDon.Status.noPayment);
+			upgradeOrderDon.setType(UpgradeOrderDon.Type.ALI_PAY);
+			upgradeOrderDonMapper.insert(upgradeOrderDon);
+
+			deductUpgradeBalancePayOrderMoney(upgradeOrderDon, payRequest.getBalance(),user );
+
+			if (upgradeOrderDon.getStatus() == UpgradeOrderDon.Status.noPayment) {
+				jobManager.addJob(EXPIRY_TIME, () -> {
+					closeUpgradeOrder(upgradeOrderDon.getId(), null);
+				});
+			}
+			return upgradeOrderDon;
 		}
 		return null;
 	}
@@ -3210,8 +3233,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	}
 
 	@Override
-	public AliPayParams aliPayUpgrade(AlipayOrderDonReq re, String productCode) throws Exception {
-		return aliPayCommonService.unifiedPayUpgrade(re,productCode,null);
+	public AliPayParams aliPayUpgrade(AlipayOrderDonReq re, String productCode, String qrPayMode) throws Exception {
+		return aliPayCommonService.unifiedPayUpgrade(re,productCode,qrPayMode);
 	}
 
 
@@ -3237,7 +3260,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		//买家支付宝账号
 		String buyerId = params.get("buyer_id");
 		log.info("支付宝回调信息:{}", Jsons.toJson(params));
-		if (!orderDon.getStatus().equals(OrderDon.Status.noPayment) && !orderDon.getStatus().equals(OrderDon.Status.close)) {
+		if (!orderDon.getStatus().equals(UpgradeOrderDon.Status.noPayment) && !orderDon.getStatus().equals(UpgradeOrderDon.Status.close)) {
 			log.info("支付宝已回调,重复修改状态 id:{}", orderDon.getId());
 			return;
 		}
@@ -3251,8 +3274,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		orderDon.setPayTime(payTime);
 		orderDon.setShopId(appId);
 		orderDon.setType(UpgradeOrderDon.Type.ALI_PAY);
-
 		orderDon.setBuyerId(buyerId);
+		upgradeOrderDonMapper.updateById(orderDon);
 		//该支付账号id 是否被后台拉黑
 		Integer count1 = userPayOrderBlockMapper.selectCount(Wrappers.lambdaQuery(UserPayOrderBlock.class)
 				.eq(UserPayOrderBlock::getBuyerId, buyerId));
@@ -3271,7 +3294,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 	 * 统一订单信息回调
 	 */
 	public void unifiedHandlerUpgradeOrderNotify(UpgradeOrderDon orderDon, UpgradePackage upgradePackage) {
-		orderDon.setStatus(UpgradeOrderDon.Status.hasPayment);
+		orderDon.setStatus(UpgradeOrderDon.Status.complete);
 		int isSuccess = upgradeOrderDonMapper.update(null,Wrappers.lambdaUpdate(UpgradeOrderDon.class)
 				.set(UpgradeOrderDon::getStatus, orderDon.getStatus())
 				.in(UpgradeOrderDon::getStatus, List.of(UpgradeOrderDon.Status.noPayment, UpgradeOrderDon.Status.close))

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

@@ -1,5 +1,6 @@
 package com.cyksj.service.relation.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.BetweenFormater;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -15,6 +16,7 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Jsons;
+import com.cyksj.common.util.StringUtil;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.sys.SysEmailMapper;
@@ -41,6 +43,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -98,6 +102,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 
 	private final UserLoginRecordService userLoginRecordService;
 
+	private final UpgradeOrderDonMapper upgradeOrderDonMapper;
+
 	private final static String VERIFY_CODE_SECRET = "q1w2e3";
 
 	@Override
@@ -184,6 +190,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 					.last("limit 1"));
 			if (orderDon != null) {
 				ticket.setOrderNo(orderDon.getOrderNo());
+				ticket.setOrderId(orderDon.getId());
 				ticket.setTransactionId(orderDon.getTransactionId());
 			}
 
@@ -216,6 +223,12 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
 				}
 				ticket.setPayTime(payTime);
 			}
+			if (ticket.getGoodsId() == 26 && ticket.getIsMirror()){
+				List<GoodsDonSku> goodsDonSkus = goodsDonSkuMapper.selectList(Wrappers.lambdaQuery(GoodsDonSku.class).eq(GoodsDonSku::getId, ticket.getSkuId()));
+				if (CollectionUtil.isNotEmpty(goodsDonSkus)){
+					goodsDonSkus.stream().map(e -> e.getPrice().divide(BigDecimal.valueOf(e.getNum()), 2, RoundingMode.HALF_UP)).min(BigDecimal::compareTo).ifPresent(ticket::setMjPackagePrice);
+				}
+			}
 			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) {

+ 13 - 0
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -1216,4 +1216,17 @@ public class GoodsDonController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDonSkuSubsidyAvailableViews);
 	}
 
+
+	/**
+	 * 获取套餐列表
+	 */
+	@GetMapping("/get/upgradePackage")
+	public Result<SearchResult<UpgradePackageView>> list() {
+		log.info("获取套餐列表");
+		Map<String, Object> build = MapUtils.flatBuilder(request.getParameterMap()).build();
+		SearchResult<UpgradePackageView> search = beanSearcher.search(UpgradePackageView.class, build);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+
 }

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

@@ -874,8 +874,8 @@ public class CmsOrderController {
 	 * 套餐退款订单列表
 	 */
 	@GetMapping("/get/upgrade/refund/list")
-	public Result<SearchResult<RefundOrderDonView>> getRefundUpgradeOrderDonView() {
-		SearchResult<RefundOrderDonView> search = beanSearcher.search(RefundOrderDonView.class, MapUtils.flatBuilder(request.getParameterMap())
+	public Result<SearchResult<RefundUpdradeOrderDonView>> getRefundUpgradeOrderDonView() {
+		SearchResult<RefundUpdradeOrderDonView> search = beanSearcher.search(RefundUpdradeOrderDonView.class, MapUtils.flatBuilder(request.getParameterMap())
 				.build());
 		search.getDataList().forEach(data -> {
 			Optional.ofNullable(userService.getById(data.getUserId()))

+ 3 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java

@@ -16,6 +16,7 @@ import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.manage.request.ReqGoodsSpuInsert;
 import com.cyksj.model.manage.views.GoodsDonViewer;
 import com.cyksj.model.views.GoodsDonCategoryDetailView;
+import com.cyksj.model.views.UpgradePackageView;
 import com.cyksj.service.mange.CmsGoodsDonService;
 import com.cyksj.service.mange.GoodsDonCategoryService;
 import com.cyksj.service.mange.RefreshCacheService;
@@ -32,6 +33,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -223,4 +225,5 @@ public class CmsGoodsDonController {
         goodsDon.setCategoryList(categoryView.stream().map(GoodsDonCategory::getId).collect(Collectors.toList()));
         return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDon);
     }
+
 }

+ 3 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java

@@ -121,6 +121,9 @@ public class CmsGoodsDonSkuController {
         if (sku.getDays() == null) {
             sku.setDays(null);
         }
+        if (sku.getMjRelaxNum() == null) {
+            sku.setMjRelaxNum(null);
+        }
         String specificGoodsIds = sku.getSpecificGoodsIds();
         if (StrUtil.isEmpty(specificGoodsIds)) {
             sku.setSpecificPrice(BigDecimal.ZERO);

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

@@ -23,8 +23,10 @@ import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -56,6 +58,9 @@ public class MirrorController {
 
     private final MidjourneyAccountService midjourneyAccountService;
 
+    @Value("${midjourney.url}")
+    private String midjourneyHost;
+
 
     /**
      * GPT车票跳转登录
@@ -300,8 +305,14 @@ public class MirrorController {
      * @param relationId 车票id
      */
     @GetMapping("/midjourneyMirror/{relationId}")
-    public Result<String> midjourneyMirror(@PathVariable Long relationId) {
+    public Result<String> midjourneyMirror(@PathVariable Long relationId) throws IOException {
         Long userId = StpUserUtil.getLoginIdAsLong();
-        return GatewayResponse.SUCCESS.newBuilder().toResult(midjourneyAccountService.getMidjourneyUserToken(userId, relationId));
+        String userToken = midjourneyAccountService.getMidjourneyUserToken(userId, relationId);
+        Cookie cookie = new Cookie("userToken", userToken);
+        cookie.setMaxAge(31536000);
+        cookie.setPath("/");
+        response.addCookie(cookie);
+        response.sendRedirect(midjourneyHost+"/draw/web/");
+        return GatewayResponse.SUCCESS.newBuilder().toResult(userToken);
     }
 }

+ 46 - 7
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderController.java

@@ -26,10 +26,7 @@ import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.dto.AliPayParams;
 import com.cyksj.model.dto.H5JsPayParams;
 import com.cyksj.model.entity.*;
-import com.cyksj.model.manage.views.OrderDonSearchView;
-import com.cyksj.model.manage.views.OrderDonView;
-import com.cyksj.model.manage.views.UpgradeOrderDetailView;
-import com.cyksj.model.manage.views.UpgradeOrderDonView;
+import com.cyksj.model.manage.views.*;
 import com.cyksj.model.request.AlipayOrderDonReq;
 import com.cyksj.model.request.OrderPayRequest;
 import com.cyksj.model.response.AliPayTradeStatus;
@@ -198,6 +195,15 @@ public class OrderController {
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
+    /**
+     * 套餐0元订单确认
+     */
+    @PostMapping("/post/upgrade/order/status/{orderId}")
+    public Result<String> zeroUpgradeOrderConfirm(@PathVariable Long orderId) {
+        orderDonService.zeroUpgradeOrderConfirm(orderId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
 
     /**
      * 支付
@@ -318,7 +324,7 @@ public class OrderController {
     @PostMapping("/post/pay/upgrade/zfb")
     @Deprecated
     public Result<String> aliPayUpgrade(@RequestBody @Validated AlipayOrderDonReq re) throws Exception {
-        AliPayParams aliPayParams = orderDonService.aliPayUpgrade(re, ZfbProductCode.MOBILE_WEB.getProductCode());
+        AliPayParams aliPayParams = orderDonService.aliPayUpgrade(re, ZfbProductCode.MOBILE_WEB.getProductCode(),null);
         return GatewayResponse.SUCCESS.newBuilder().toResult(aliPayParams.getBody());
     }
 
@@ -338,6 +344,21 @@ public class OrderController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(aliPayParams.getBody());
     }
 
+    /**
+     * 支付宝web支付
+     * pc网页内嵌二维码
+     */
+    @PostMapping("/get/zfb/upgrade/orderQrCode")
+    public Result<String> zfbWebQrCodeUpgrade(@RequestBody @Validated AlipayOrderDonReq re) throws Exception {
+        AliPayParams aliPayParams = orderDonService.aliPayUpgrade(re, ZfbProductCode.PC_WEB.getProductCode(), BaseZfbConfig.qrPayMode_orderCode);
+//        response.setContentType("text/html;charset=" + BaseZfbConfig.charset);
+        //直接将完整的表单html输出到页面
+//        response.getWriter().write(aliPayParams.getBody());
+//        response.getWriter().flush();
+//        response.getWriter().close();
+        return GatewayResponse.SUCCESS.newBuilder().toResult(aliPayParams.getBody());
+    }
+
     /**
      * 支付宝web支付
      * pc网页跳转二维码
@@ -486,6 +507,23 @@ public class OrderController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(orderDonView);
     }
 
+    /**
+     * 查询套餐订单支付状态
+     */
+    @GetMapping("/get/upgrade/order/status/{orderId}")
+    public Result<UpgradeOrderDonSearchView> getUpgradeOrderStatusById(@PathVariable Long orderId) {
+        if (orderId < 1) {
+            throw BusinessRuntimeException.getInstance("订单不存在");
+        }
+        UpgradeOrderDonSearchView orderDonView = beanSearcher.searchFirst(UpgradeOrderDonSearchView.class, MapUtils.builder()
+                .put("orderId", String.format("where id = %s", orderId))
+                .build());
+        if (orderDonView == null) {
+            throw BusinessRuntimeException.getInstance("订单不存在");
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(orderDonView);
+    }
+
     @PostMapping("/get/noLogin/order")
     public Result<List<OrderDonView>> getSearchResult(@RequestBody List<Long> orderIds) {
         List<OrderDonView> orderDonViews = beanSearcher.searchAll(OrderDonView.class, MapUtils.builder()
@@ -746,8 +784,9 @@ public class OrderController {
      * midjourney查询订单用户账号剩余次数
      */
     @GetMapping("/get/midjourney/user")
-    public Result<SearchResult<MidjourneyUserView>> getMidjourneyUser(Long userId, Long relationId) {
-        SearchResult<MidjourneyUserView> search = beanSearcher.search(MidjourneyUserView.class, MapUtils.flatBuilder(request.getParameterMap())
+    public Result<MidjourneyUserView> getMidjourneyUser(Long relationId) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        MidjourneyUserView search = beanSearcher.searchFirst(MidjourneyUserView.class, MapUtils.flatBuilder(request.getParameterMap())
                 .field(MidjourneyUserView::getUserId, userId).field(MidjourneyUserView::getRelationId, relationId).build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }

File diff suppressed because it is too large
+ 0 - 0
netflix-web/src/main/resources/application-dev.yml


File diff suppressed because it is too large
+ 0 - 0
netflix-web/src/main/resources/application-prd.yml


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

@@ -188,4 +188,7 @@ chatgpt:
 
 smsVerify:
   apikey: bc0737b7339ab0f275f954a161fdb313
-  shoppingApikey: 72d4ff765b6c962f35c9a4125100680d
+  shoppingApikey: 72d4ff765b6c962f35c9a4125100680d
+
+midjourney:
+  url: https://nf.video

Some files were not shown because too many files changed in this diff