Explorar el Código

用户注销API接口;渠道分销订单数据环比;更换车票同步奈飞恢复时间

zoujiajian hace 10 meses
padre
commit
e7e866b36c

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

@@ -96,5 +96,5 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 
 	Map<String, Object> selectUserMIrrorShopDistributeOrderDetail(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
-	List<DistributeOrderStatisticsDataView> getDistributeOrderView(@Param("goodsId") Long goodsId, @Param("start") String start, @Param("end") String end, @Param("isGeneral") Boolean isGeneral);
+	List<DistributeOrderStatisticsDataView> getDistributeOrderView(@Param("goodsId") Long goodsId, @Param("start") String start, @Param("end") String end, @Param("isGeneral") Boolean isGeneral, @Param("chain") Integer chain);
 }

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserBlackRecord;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserBlackRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2025/10/20 14:01
+ */
+public interface UserBlackRecordMapper extends BaseMapper<UserBlackRecord> {
+}

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/UserWhoami.java

@@ -64,4 +64,6 @@ public class UserWhoami implements Serializable {
      */
     @DbIgnore
     private Boolean tc;
+
+    private Boolean isBlack;
 }

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserBlackRecord.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserBlackRecord
+ * 创建者: JavaZou
+ * 创建时间:2025/10/20 14:01
+ */
+@Getter
+@Setter
+public class UserBlackRecord extends BaseEntity{
+	/**
+	 * 操作用户id
+	 */
+	private Long operateUserId;
+
+	private Long userId;
+
+	/**
+	 * 拉黑状态
+	 */
+	private Boolean status;
+}

+ 31 - 3
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -542,9 +542,28 @@
         select us.shared_id as user_id,
         o.goods_id,
         (select nickname from `user` where id = us.shared_id limit 1) as nickname,
-        date_format(o.created_time,'%Y-%m-%d') `date`,
+        <if test="chain == 1">
+            date_format(o.created_time,'%Y-%m-%d')
+        </if>
+        <if test="chain == 2">
+            date_format(o.created_time,'%Y-%m')
+        </if>
+        <if test="chain == 3">
+            date_format(o.created_time,'%Y')
+        </if>
+         `date`,
         sum(money)/100 as money,
-        row_number() over (partition by date_format(o.created_time,'%Y-%m-%d') order by sum(money) desc) as rn
+        row_number() over (partition by
+        <if test="chain == 1">
+            date_format(created_time,'%Y-%m-%d')
+        </if>
+        <if test="chain == 2">
+            date_format(created_time,'%Y-%m')
+        </if>
+        <if test="chain == 3">
+            date_format(created_time,'%Y')
+        </if>
+        order by sum(money) desc) as rn
         from user_distribute_shared us
         <if test="isGeneral != null">
             left join user_distribute ud on ud.user_id = us.shared_id and ud.deleted
@@ -561,7 +580,16 @@
                 and ud.id is not null
             </if>
         </if>
-        group by us.shared_id,o.goods_id,date_format(o.created_time,'%Y-%m-%d')
+        group by us.shared_id,o.goods_id,
+        <if test="chain == 1">
+            date_format(o.created_time,'%Y-%m-%d')
+        </if>
+        <if test="chain == 2">
+            date_format(o.created_time,'%Y-%m')
+        </if>
+        <if test="chain == 3">
+            date_format(o.created_time,'%Y')
+        </if>
         ) ranked
         where rn &lt;= 5
         order by `date` asc, money desc

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

@@ -957,6 +957,9 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
                 if (recoverRecord != null) {
                     recoverRecord.setStatus(3);
                     netflixUserAccountSubmitRecoverRecordMapper.updateById(recoverRecord);
+
+                    newRelation.setExpiryTime(DateUtil.offsetDay(DateTime.now(), recoverRecord.getRemainDays().intValue()));
+                    relationMapper.updateById(newRelation);
                 }
             }
         } finally {

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/user/UserService.java

@@ -73,4 +73,6 @@ public interface UserService extends IService<User> {
 	UserCertInfoView getCertOverView(long userId);
 
 	UserSyncInfoView getUserSyncInfo(long userId);
+
+	void revokedAccount(Long userId);
 }

+ 52 - 1
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -20,8 +20,8 @@ import com.cyksj.config.wxlogin.WxOpenPlatYHLXLoginConfig;
 import com.cyksj.dto.UserSharedDto;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.channel.ChannelPopularizeMapper;
-import com.cyksj.mapper.claudecode.PopularizeTrialTicketRecordMapper;
 import com.cyksj.mapper.claudecode.ClaudeCodeUserTrialReceiveRecordMapper;
+import com.cyksj.mapper.claudecode.PopularizeTrialTicketRecordMapper;
 import com.cyksj.mapper.corp.*;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
 import com.cyksj.mapper.manage.coupon.CouponRecommendMapper;
@@ -45,6 +45,7 @@ import com.cyksj.service.distribute.equipment.EquipmentDistributeService;
 import com.cyksj.service.exchange.ExchangeCodeService;
 import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.market.task.BindTaskService;
+import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.shop.YhShopDistributeService;
 import com.cyksj.service.sys.SysConfigService;
@@ -162,6 +163,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
 	private final NanoUserQuotaMapper nanoUserQuotaMapper;
 
+	private final GroupRelationClearService groupRelationClearService;
+
+	private final UserBlackRecordMapper blackRecordMapper;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
@@ -331,6 +336,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		if (popularizeGoodsId != null) {
 			setPopularizeUserInfo(popularizeGoodsId, userIdList, userId, userWhoami);
 		}
+		userWhoami.setIsBlack(user.getIsBlack());
 		return userWhoami;
 	}
 
@@ -932,6 +938,51 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		return syncInfoView;
 	}
 
+	@Override
+	@Transactional(rollbackFor = Throwable.class)
+	public void revokedAccount(Long userId) {
+		User user = userMapper.selectById(userId);
+
+		if (user.getIsBlack()) {
+			return;
+		}
+		//关联用户
+		List<Long> userIds = userBindRelationService.getRelationUserIdList(userId, user);
+		//清除车票数据
+		List<RenewalView> groupsRelations = beanSearcher.searchAll(RenewalView.class, MapUtils.builder()
+				.field(RenewalView::getUserId, 0).op(Operator.GreaterThan)
+				.field(RenewalView::getUserId, userIds).op(Operator.InList)
+				.field(RenewalView::getStatus, List.of("validity", "overdue", "outside")).op(Operator.InList)
+				.orderBy(RenewalView::getExpiryTime).asc()
+				.build());
+		groupsRelations.forEach(ticket -> {
+			GroupsRelation relation = groupsRelationMapper.selectById(ticket.getRelationId());
+			groupRelationClearService.clearTicket(relation, UserTicketClearedRecord.Source.black);
+		});
+		//清会员
+		Optional.ofNullable(vipUserMapper.selectOne(Wrappers.lambdaQuery(VipUser.class)
+				.in(VipUser::getUserId, userIds)
+				.gt(VipUser::getExpiryTime, DateTime.now())
+				.last("limit 1"))).ifPresent(vipUser -> {
+			//设置当天拉黑的时间
+			vipUser.setExpiryTime(DateUtil.beginOfDay(DateTime.now()));
+			vipUserMapper.updateById(vipUser);
+		});
+
+		List<User> users = userMapper.selectBatchIds(userIds);
+		for (User relateUser : users) {
+			relateUser.setIsBlack(Boolean.TRUE);
+			userMapper.updateById(relateUser);
+
+			//用户拉黑记录
+			UserBlackRecord userBlackRecord = new UserBlackRecord();
+			userBlackRecord.setOperateUserId(userId);
+			userBlackRecord.setUserId(relateUser.getId());
+			userBlackRecord.setStatus(user.getIsBlack());
+			blackRecordMapper.insert(userBlackRecord);
+		}
+	}
+
 	/**
 	 * 处理大学生快递站用户
 	 */

+ 3 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/statistics/StatisticsDataController.java

@@ -672,11 +672,11 @@ public class StatisticsDataController {
 	 * 商品渠道分销趋势
 	 *
 	 * @param isGeneral true 普通推广 false 渠道推广
-	 * @return
+	 * @param chain 1.日环比 2.月环比 3.年环比
 	 */
 	@GetMapping("/get/distributeOrder/brokenLine")
-	public Result<List<DistributeOrderStatisticsDataView>> getDistributeOrderView(Long goodsId, String first, String end, Boolean isGeneral) {
-		List<DistributeOrderStatisticsDataView> dataList = orderDonMapper.getDistributeOrderView(goodsId, first, end, isGeneral);
+	public Result<List<DistributeOrderStatisticsDataView>> getDistributeOrderView(Long goodsId, String first, String end, Boolean isGeneral, @RequestParam(defaultValue = "1") Integer chain) {
+		List<DistributeOrderStatisticsDataView> dataList = orderDonMapper.getDistributeOrderView(goodsId, first, end, isGeneral, chain);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(dataList);
 	}
 

+ 6 - 6
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -542,12 +542,12 @@ public class AuthorizationController {
             throw BusinessRuntimeException.getInstance("系统错误,请重新授权");
         }
 
-        Optional.ofNullable(user.getIsBlack())
-                .ifPresent(black -> {
-                    if (black) {
-                        throw BusinessRuntimeException.getInstance("您的账号已被注销...");
-                    }
-                });
+//        Optional.ofNullable(user.getIsBlack())
+//                .ifPresent(black -> {
+//                    if (black) {
+//                        throw BusinessRuntimeException.getInstance("您的账号已被注销...");
+//                    }
+//                });
 
         //写回登陆信息
         StpUserUtil.login(user.getId());

+ 10 - 0
netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

@@ -676,4 +676,14 @@ public class UserController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(syncInfoView);
     }
 
+    /**
+     * 注销账号
+     */
+    @PutMapping("/revoked/account")
+    public Result<String> revokedAccount() {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        userService.revokedAccount(userId);
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
 }