Procházet zdrojové kódy

后台开通会员

zoujiajian před 1 rokem
rodič
revize
765466a85e

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.vip;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.VipUserOperateLog;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: VipUserOperateLogMapper
+ * 创建者: JavaZou
+ * 创建时间:2025/6/10 11:17
+ */
+public interface VipUserOperateLogMapper extends BaseMapper<VipUserOperateLog> {
+}

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/VipUserOperateLog.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: VipUserOperateLog
+ * 创建者: JavaZou
+ * 创建时间:2025/6/10 11:16
+ */
+@Getter
+@Setter
+public class VipUserOperateLog extends BaseEntity{
+	private Long userId;
+
+	private String operator;
+
+	private Integer days;
+}

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OpenVipReq.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.request;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: OpenVipReq
+ * 创建者: JavaZou
+ * 创建时间:2025/6/10 10:49
+ */
+@Getter
+@Setter
+public class OpenVipReq {
+	private Long userId;
+
+	private Long adminId;
+
+	private Integer days;
+}

+ 13 - 0
netflix-service/src/main/java/com/cyksj/service/vip/CmsVipUserService.java

@@ -0,0 +1,13 @@
+package com.cyksj.service.vip;
+
+import com.cyksj.model.request.OpenVipReq;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CmsVipUserService
+ * 创建者: JavaZou
+ * 创建时间:2025/6/10 10:56
+ */
+public interface CmsVipUserService {
+	void openVip(OpenVipReq openVipReq);
+}

+ 89 - 0
netflix-service/src/main/java/com/cyksj/service/vip/impl/CmsVipUserServiceImpl.java

@@ -0,0 +1,89 @@
+package com.cyksj.service.vip.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.mapper.GroupsRelationMapper;
+import com.cyksj.mapper.manage.cms.CmsUserMapper;
+import com.cyksj.mapper.vip.VipGoodsSkuMapper;
+import com.cyksj.mapper.vip.VipUserMapper;
+import com.cyksj.mapper.vip.VipUserOperateLogMapper;
+import com.cyksj.model.entity.*;
+import com.cyksj.model.request.OpenVipReq;
+import com.cyksj.service.relation.GroupRelationFrontService;
+import com.cyksj.service.user.UserBindRelationService;
+import com.cyksj.service.vip.CmsVipUserService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CmsVipUserServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2025/6/10 10:56
+ */
+@Service
+@RequiredArgsConstructor
+public class CmsVipUserServiceImpl implements CmsVipUserService {
+	private final VipUserMapper vipUserMapper;
+
+	private final UserBindRelationService userBindRelationService;
+
+	private final CmsUserMapper cmsUserMapper;
+
+	private final VipGoodsSkuMapper vipGoodsSkuMapper;
+
+	private final GroupRelationFrontService groupRelationFrontService;
+
+	private final VipUserOperateLogMapper vipUserOperateLogMapper;
+
+	private final GroupsRelationMapper groupsRelationMapper;
+
+	@Override
+	public void openVip(OpenVipReq openVipReq) {
+		Long userId = openVipReq.getUserId();
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		VipUser vipUser = vipUserMapper.selectOne(Wrappers.lambdaQuery(VipUser.class)
+				.in(VipUser::getUserId, userIdList).last("limit 1"));
+		CmsUser cmsUser = cmsUserMapper.selectById(openVipReq.getAdminId());
+		if (vipUser != null) {
+			if (vipUser.getExpiryTime().after(DateTime.now())) {
+				throw BusinessRuntimeException.getInstance("相关联账号已开通会员");
+			}
+		}
+		if (vipUser == null) {
+			vipUser = new VipUser();
+		}
+		DateTime now = DateTime.now();
+		Integer days = openVipReq.getDays();
+		vipUser.setUserId(userId);
+		vipUser.setStartTime(now);
+		vipUser.setExpiryTime(DateUtil.offsetDay(now, days));
+		if (vipUser.getId() == null) {
+			vipUserMapper.insert(vipUser);
+		} else {
+			vipUserMapper.updateById(vipUser);
+		}
+		//发送车票
+		List<VipGoodsSku> skus = vipGoodsSkuMapper.selectList(null);
+		for (VipGoodsSku sku : skus) {
+			//未有抵扣 直接发送会员车票
+			groupRelationFrontService.getTicket(userId, sku.getSkuId(), Boolean.TRUE);
+		}
+		//同步时间
+		groupsRelationMapper.update(null, Wrappers.lambdaUpdate(GroupsRelation.class)
+				.set(GroupsRelation::getExpiryTime, vipUser.getExpiryTime())
+				.in(GroupsRelation::getUserId, userIdList)
+				.eq(GroupsRelation::getIsVip, Boolean.TRUE));
+		//操作记录
+		VipUserOperateLog vipUserOperateLog = new VipUserOperateLog();
+		vipUserOperateLog.setUserId(userId);
+		vipUserOperateLog.setOperator(cmsUser != null ? cmsUser.getNickname() : StrUtil.EMPTY);
+		vipUserOperateLog.setDays(days);
+		vipUserOperateLogMapper.insert(vipUserOperateLog);
+	}
+}

+ 15 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsUserController.java

@@ -23,6 +23,7 @@ import com.cyksj.mapper.vip.VipUserMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.MaliceUserView;
 import com.cyksj.model.manage.views.UserView;
+import com.cyksj.model.request.OpenVipReq;
 import com.cyksj.model.request.UserBalanceReq;
 import com.cyksj.model.request.UserFuncPropertyReq;
 import com.cyksj.model.views.*;
@@ -30,6 +31,7 @@ import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.user.UserBindRelationService;
 import com.cyksj.service.user.UserPayOrderBlockService;
+import com.cyksj.service.vip.CmsVipUserService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;
@@ -90,6 +92,8 @@ public class CmsUserController{
 
     private final VipUserMapper vipUserMapper;
 
+    private final CmsVipUserService cmsVipUserService;
+
     private final List<Long> no_blacks_userIds = List.of(375274l, 545599l, 523937l, 507498l, 604146l, 613437l, 651728l, 614100l, 604148l);
 
     @GetMapping("/get")
@@ -592,4 +596,15 @@ public class CmsUserController{
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
+
+    /**
+     * 后台 开通会员
+     */
+    @PostMapping("/open/vip")
+    public Result<String> openVip(@RequestBody OpenVipReq openVipReq) {
+        long adminId = StpUtil.getLoginIdAsLong();
+        openVipReq.setAdminId(adminId);
+        cmsVipUserService.openVip(openVipReq);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
 }