ソースを参照

银河币续费车票列表

zoujiajian 1 年間 前
コミット
c0e141ed99

+ 125 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GalaxyCoinRenewTicketsView.java

@@ -0,0 +1,125 @@
+package com.cyksj.model.views;
+
+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;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: GalaxyCoinRenewTicketsView
+ * 创建者: JavaZou
+ * 创建时间:2025/7/14 11:26
+ */
+@Getter
+@Setter
+@SearchBean(tables = "groups_relation gr left join groups_trips gt on gt.id = gr.groups_id " +
+		"left join goods_don_sku sku on gt.sku_id = sku.id " +
+		"left join goods_don g on g.id = sku.goods_id ",
+		where = ":condition:")
+public class GalaxyCoinRenewTicketsView {
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("sku.id")
+	private Long skuId;
+
+	@DbField("g.status")
+	private Boolean goodsStatus;
+
+	@DbField("sku.status")
+	private Boolean skuStatus;
+
+	@DbField("sku.months")
+	private Integer months;
+
+	@DbField("sku.days")
+	private Integer days;
+
+	@DbField("sku.num")
+	private Integer skuNum;
+
+	/**
+	 * 是否是多人规格
+	 */
+	@DbIgnore
+	private Boolean isMulti;
+
+	@DbField("sku.price")
+	private BigDecimal price;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("gr.id")
+	private Long relationId;
+
+	@DbField("gr.num")
+	private Integer num;
+
+	@DbField("gr.groups_id")
+	private Long groupId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("g.logo")
+	private String logo;
+
+	@DbField("g.img")
+	private String img;
+
+	@DbField("g.type")
+	@JsonIgnore
+	private Integer goodsType;
+
+	@DbField("gr.user_id")
+	@JsonIgnore
+	private Long userId;
+
+	@DbField("gr.start_time")
+	private Date startTime;
+
+	@DbField("gr.expiry_time")
+	private Date expiryTime;
+
+	@DbField("gr.status")
+	private String status;
+
+	/**
+	 * 店铺id
+	 */
+	@DbField("gr.yhs_id")
+	private Long yhsId;
+
+	/**
+	 * 店铺类型
+	 * 0无 1.普通店铺 2.镜像店铺
+	 */
+	@DbField("gr.cmt")
+	private Integer cmt;
+
+	/**
+	 * 车票获取类型 默认1购买,2.体验 3.镜像裂变
+	 */
+	@DbField("gr.aq_type")
+	private Integer aqType;
+
+	/**
+	 * 是否是VIP
+	 */
+	@DbField("gr.is_vip")
+	private Boolean isVip;
+
+	/**
+	 * 最高抵扣可用银河币
+	 */
+	@DbIgnore
+	private BigDecimal maxGalaxyCoinDeduct = BigDecimal.ZERO;
+}

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

@@ -26,6 +26,7 @@ import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.form.FormFieldsDataMapper;
 import com.cyksj.mapper.manage.form.QuestionnairePromotionMapper;
 import com.cyksj.model.dto.DoubleVerifyDto;
+import com.cyksj.model.dto.GalaxyCoinPayConfigDto;
 import com.cyksj.model.dto.QuestionnaireView;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.AccountView;
@@ -44,6 +45,7 @@ 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.sys.SysConfigService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpUserUtil;
@@ -142,6 +144,10 @@ public class GroupRelationController {
 
     private final ClaudeUserMapper claudeUserMapper;
 
+    private final UserMapper userMapper;
+
+    private final SysConfigService sysConfigService;
+
     private final static Sequence SEQUENCE = new Sequence(0);
 
     @RequestMapping("/get/renewal")
@@ -1280,4 +1286,41 @@ public class GroupRelationController {
         Boolean flag = groupRelationFrontService.getMirrorPopups(userId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(flag);
     }
+
+    /**
+     * 银河币续费车票列表
+     */
+    @GetMapping("/get/galaxyCoin/tickets")
+    public Result<SearchResult<GalaxyCoinRenewTicketsView>> getGalaxyCoinTickets() throws Exception {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+        DateTime now = DateTime.now();
+        String conditionSql = String.format("(gr.expiry_time is null or gr.expiry_time > '%s'", now);
+        conditionSql += String.format(" or (sku.is_mirror and gr.expiry_time > '%s')", DateUtil.offsetDay(now, -7));
+        SearchResult<GalaxyCoinRenewTicketsView> search = beanSearcher.search(GalaxyCoinRenewTicketsView.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(GalaxyCoinRenewTicketsView::getUserId, userIdList).op(Operator.InList)
+                .put("condition", conditionSql)
+                .orderBy(GalaxyCoinRenewTicketsView::getExpiryTime).asc()
+                .build());
+        User user = userMapper.selectById(userId);
+        if (user.getGalaxyCoin().compareTo(BigDecimal.ZERO) == 0) {
+            return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+        }
+        BigDecimal userGalaxyCoin = user.getGalaxyCoin();
+        SysConfig payDeductConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
+                .eq(SysConfig::getSysKey, Constant.GALAXY_COIN_PAY_DEDUCT_KEY)
+                .last("limit 1"));
+        GalaxyCoinPayConfigDto galaxyCoinPayConfigDto = Jsons.parseObject(payDeductConfig.getSysValue(), GalaxyCoinPayConfigDto.class);
+        BigDecimal maxRate = galaxyCoinPayConfigDto.getMaxRate();
+        BigDecimal payGalaxyCoin = galaxyCoinPayConfigDto.getGalaxyCoin();
+        BigDecimal payMoney = galaxyCoinPayConfigDto.getMoney();
+        for (GalaxyCoinRenewTicketsView galaxyCoinRenewTicketsView : search.getDataList()) {
+            Long skuId = galaxyCoinRenewTicketsView.getSkuId();
+            GoodsDonSku sku = goodsDonSkuMapper.selectById(skuId);
+            //此次最大可抵扣银河币数量
+            BigDecimal maxDeductGalaxyCoin = sku.getPrice().multiply(maxRate).divide(payMoney).multiply(payGalaxyCoin);
+            galaxyCoinRenewTicketsView.setMaxGalaxyCoinDeduct(userGalaxyCoin.compareTo(maxDeductGalaxyCoin) > 0 ? maxDeductGalaxyCoin : userGalaxyCoin);
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
 }