礼包中心model
礼包中心model
This commit is contained in:
@@ -967,6 +967,8 @@ public enum BusiStatus {
|
||||
SERIES_MEDAL_LIMIT(20515, "超过可设置上限,请升级VIP获取更多位置"),
|
||||
|
||||
GUILD_USD_WITHDRAW_ACCOUNT_TYPE_ERROR(500, "提現方式錯誤,請重新綁定帳戶後重試。"),
|
||||
|
||||
PACK_NUM_NOT_ENOUGH(500, "礼包数量不足"),
|
||||
;
|
||||
|
||||
private final int value;
|
||||
|
@@ -313,6 +313,8 @@ public enum I18nAlertEnum {
|
||||
ACCOUNT_CANCEL_TOAST("ACCOUNT CANCEL SUCCESS"),
|
||||
|
||||
GUILD_USD_TO_RECHARGE_USER_DAY_OF_MONTH_LIMIT("该功能仅在本月的【{0}】号可以操作"),
|
||||
PACK_SEND_SYS("【{0}】给你赠送了【{1}】*【{2}】快去礼包中心查看使用吧!"),
|
||||
PACK_USE_SELF_SYS("你已经使用了【礼包名称】,对应的奖励已经放入你的背包啦!记得查收~"),
|
||||
;
|
||||
|
||||
private final String defaultStr;
|
||||
|
@@ -7,6 +7,11 @@ public interface PackConstant {
|
||||
byte USER_SEND = 2;
|
||||
}
|
||||
|
||||
interface PackUseType {
|
||||
byte SELF = 1;
|
||||
byte SEND = 2;
|
||||
}
|
||||
|
||||
interface UserPackRecordStatus {
|
||||
byte NORMAL = 1;
|
||||
byte RE_CALL = 2;
|
||||
|
@@ -1,12 +1,13 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.accompany.core.mybatis.typehandler.IntegerListTypeHandler;
|
||||
import com.accompany.core.mybatis.typehandler.LongListTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -42,8 +43,8 @@ public class UserUsePackRecord implements Serializable {
|
||||
/**
|
||||
* 礼包奖励id
|
||||
*/
|
||||
@TableField(typeHandler = IntegerListTypeHandler.class)
|
||||
private List<Integer> numberList;
|
||||
@TableField(typeHandler = LongListTypeHandler.class)
|
||||
private List<Long> numberList;
|
||||
/**
|
||||
* 礼包数量
|
||||
*/
|
||||
@@ -51,11 +52,11 @@ public class UserUsePackRecord implements Serializable {
|
||||
/**
|
||||
* 使用类型.1-自己用,2-赠送
|
||||
*/
|
||||
private Integer useType;
|
||||
private Byte useType;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Byte createTime;
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,24 @@
|
||||
package com.accompany.business.vo.packcenter;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class PackItemRewardVo {
|
||||
@ApiModelProperty("奖励图片")
|
||||
private String pic;
|
||||
@ApiModelProperty("奖励名称")
|
||||
private String rewardName;
|
||||
@ApiModelProperty("奖励类型")
|
||||
private Byte rewardType;
|
||||
@ApiModelProperty("*D")
|
||||
private String unit;
|
||||
@ApiModelProperty("奖励数量")
|
||||
private Integer awardNum;
|
||||
}
|
@@ -0,0 +1,26 @@
|
||||
package com.accompany.business.vo.packcenter;
|
||||
|
||||
import com.accompany.core.annotation.I18n;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
public class UserPackVo {
|
||||
@ApiModelProperty("赠送或者使用的时候用的ID")
|
||||
private Long userPackId;
|
||||
@ApiModelProperty("礼包名称")
|
||||
@I18n(className = "PackInfo")
|
||||
private String packName;
|
||||
@ApiModelProperty("过期剩余秒数")
|
||||
private Long expireSeconds;
|
||||
@ApiModelProperty("礼包数量")
|
||||
private Integer packNum;
|
||||
@ApiModelProperty("礼包使用数量")
|
||||
private Integer useNum;
|
||||
@ApiModelProperty("奖励信息")
|
||||
private List<PackItemRewardVo> rewardList;
|
||||
}
|
@@ -2,6 +2,7 @@ package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 用户礼包 Mapper 接口
|
||||
@@ -11,4 +12,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface UserPackMapper extends BaseMapper<UserPack> {
|
||||
|
||||
int packUseNumAdd(@Param("userPackId") Long userPackId, @Param("useNum") Integer useNum);
|
||||
}
|
||||
|
@@ -0,0 +1,201 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.accompany.business.common.constant.RewardTypeEnum;
|
||||
import com.accompany.business.common.vo.RewardVo;
|
||||
import com.accompany.business.constant.PackConstant;
|
||||
import com.accompany.business.constant.activity.ActivityType;
|
||||
import com.accompany.business.model.activity.h5.ActivityH5LevelAward;
|
||||
import com.accompany.business.model.packcenter.*;
|
||||
import com.accompany.business.service.BaseSendService;
|
||||
import com.accompany.business.service.activity.h5.ActivityH5AwardRecordService;
|
||||
import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.packcenter.PackItemRewardVo;
|
||||
import com.accompany.business.vo.packcenter.UserPackVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.utils.PageUtil;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.accompany.common.status.BusiStatus.PACK_NUM_NOT_ENOUGH;
|
||||
import static com.accompany.core.enumeration.I18nAlertEnum.PACK_SEND_SYS;
|
||||
import static com.accompany.core.enumeration.I18nAlertEnum.PACK_USE_SELF_SYS;
|
||||
|
||||
@Service
|
||||
public class PackCenterService {
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private UserPackService userPackService;
|
||||
@Autowired
|
||||
private UserPackRecordService userPackRecordService;
|
||||
@Autowired
|
||||
private UserUsePackRecordService userUsePackRecordService;
|
||||
@Autowired
|
||||
private PackItemService packItemService;
|
||||
@Autowired
|
||||
private PackInfoService packInfoService;
|
||||
@Autowired
|
||||
private ActivityH5LevelAwardService activityH5LevelAwardService;
|
||||
@Autowired
|
||||
private ActivityH5AwardRecordService activityH5AwardRecordService;
|
||||
@Autowired
|
||||
private BaseSendService baseSendService;
|
||||
|
||||
|
||||
public List<UserPackVo> userPackList(Long uid, Integer pageNo, Integer pageSize) {
|
||||
Users users = usersService.getUsersByUid(uid);
|
||||
Integer partitionId = users.getPartitionId();
|
||||
|
||||
List<UserPackVo> resultList = new ArrayList<>();
|
||||
List<UserPack> userPacks = userPackService.listByUid(uid);
|
||||
|
||||
userPacks = PageUtil.page(userPacks, pageNo, pageSize);
|
||||
if (CollectionUtils.isEmpty(userPacks)) {
|
||||
return resultList;
|
||||
}
|
||||
|
||||
List<Integer> packIds = userPacks.stream().map(UserPack::getPackId).collect(Collectors.toList());
|
||||
Map<Integer, PackInfo> packInfoMap = packInfoService.mapByPackIds(packIds);
|
||||
if (packInfoMap.size() <= 0) {
|
||||
return resultList;
|
||||
}
|
||||
List<PackItem> packItems = packItemService.listByPackIds(packIds);
|
||||
if (CollectionUtils.isEmpty(packItems)) {
|
||||
return resultList;
|
||||
}
|
||||
List<Long> awardIds = packItems.stream().map(PackItem::getAwardId).collect(Collectors.toList());
|
||||
List<ActivityH5LevelAward> activityH5LevelAwards = activityH5LevelAwardService.listByIds(awardIds);
|
||||
|
||||
if (CollectionUtils.isEmpty(activityH5LevelAwards)) {
|
||||
return resultList;
|
||||
}
|
||||
Map<Long, ActivityH5LevelAward> awardMap = activityH5LevelAwards.stream().collect(Collectors.toMap(ActivityH5LevelAward::getId, x -> x));
|
||||
Map<Integer, List<PackItem>> packItemMap = packItems.stream().collect(Collectors.groupingBy(PackItem::getPackId));
|
||||
|
||||
Date date = new Date();
|
||||
for (UserPack userPack : userPacks) {
|
||||
UserPackVo vo = new UserPackVo();
|
||||
PackInfo packInfo = packInfoMap.get(userPack.getPackId());
|
||||
List<PackItem> itemList = packItemMap.get(userPack.getPackId());
|
||||
if (CollectionUtils.isEmpty(itemList)) {
|
||||
continue;
|
||||
}
|
||||
vo.setUserPackId(userPack.getId());
|
||||
vo.setPackName(packInfo.getPackName());
|
||||
vo.setPackNum(userPack.getPackNum());
|
||||
vo.setUseNum(userPack.getUseNum());
|
||||
vo.setExpireSeconds(DateUtil.between(date, userPack.getExpireTime(), DateUnit.SECOND));
|
||||
List<PackItemRewardVo> rewardList = new ArrayList<>();
|
||||
vo.setRewardList(rewardList);
|
||||
for (PackItem packItem : itemList) {
|
||||
ActivityH5LevelAward award = awardMap.get(packItem.getAwardId());
|
||||
if (award == null) {
|
||||
continue;
|
||||
}
|
||||
RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(award.getAwardType()),
|
||||
award.getAwardId().intValue(), partitionId);
|
||||
rewardList.add(PackItemRewardVo.builder()
|
||||
.awardNum(rewardVo.getNum())
|
||||
.pic(rewardVo.getPic())
|
||||
.unit(rewardVo.getUnit())
|
||||
.rewardName(rewardVo.getName())
|
||||
.rewardType(rewardVo.getType())
|
||||
.build());
|
||||
}
|
||||
resultList.add(vo);
|
||||
}
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
public BusiResult<Void> usePack(Long uid, Long targetUid, Long userPackId, Integer useNum) {
|
||||
Users users = usersService.getUsersByUid(uid);
|
||||
Users targetUser = usersService.getUsersByUid(targetUid);
|
||||
if (!users.getPartitionId().equals(targetUser.getPartitionId())) {
|
||||
throw new ServiceException("PARTITION ERROR");
|
||||
}
|
||||
|
||||
UserPack userPack = userPackService.getById(userPackId);
|
||||
Integer remainNum = userPack.getPackNum() - userPack.getUseNum();
|
||||
if (remainNum < useNum) {
|
||||
throw new ServiceException(PACK_NUM_NOT_ENOUGH);
|
||||
}
|
||||
userPackService.packUseNumAdd(userPackId, useNum);
|
||||
|
||||
Date createTime = new Date();
|
||||
UserUsePackRecord usePackRecord = new UserUsePackRecord();
|
||||
usePackRecord.setUserPackId(userPackId);
|
||||
usePackRecord.setTargetUid(targetUid);
|
||||
usePackRecord.setUid(uid);
|
||||
usePackRecord.setPackId(userPack.getPackId());
|
||||
usePackRecord.setPackNum(useNum);
|
||||
usePackRecord.setCreateTime(createTime);
|
||||
|
||||
PackInfo packInfo = packInfoService.getById(userPack.getPackId());
|
||||
String i18nId = PackInfo.class.getSimpleName() + StrUtil.DOT + packInfo.getPackName();
|
||||
String packName = I18NMessageSourceUtil.getMessage(i18nId, packInfo.getPackName(), targetUid);
|
||||
String message;
|
||||
if (uid.equals(targetUid)) {
|
||||
usePackRecord.setUseType(PackConstant.PackUseType.SELF);
|
||||
List<PackItem> packItems = packItemService.listByPackId(userPack.getPackId());
|
||||
List<Long> awardIds = packItems.stream().map(PackItem::getAwardId).collect(Collectors.toList());
|
||||
List<ActivityH5LevelAward> activityH5LevelAwards = activityH5LevelAwardService.listByIds(awardIds);
|
||||
for (int i = 0; i < useNum; i++) {
|
||||
for (ActivityH5LevelAward award : activityH5LevelAwards) {
|
||||
award.setAwardNum(award.getAwardNum() * useNum);
|
||||
activityH5AwardRecordService.sendDetailAward(targetUid, targetUser.getPartitionId(), "", award, ActivityType.PACK_CENTER_REWARD);
|
||||
}
|
||||
}
|
||||
usePackRecord.setNumberList(awardIds);
|
||||
message = I18NMessageSourceUtil.getMessage(PACK_USE_SELF_SYS, new Object[]{packName}, targetUser.getPartitionId());
|
||||
} else {
|
||||
usePackRecord.setUseType(PackConstant.PackUseType.SEND);
|
||||
|
||||
UserPack pack = new UserPack();
|
||||
Integer packId = userPack.getPackId();
|
||||
pack.setPackId(packId);
|
||||
pack.setUid(targetUid);
|
||||
pack.setPackNum(useNum);
|
||||
pack.setSource(PackConstant.PackSource.USER_SEND);
|
||||
pack.setStatus(PackConstant.UserPackStatus.valid);
|
||||
pack.setCreateTime(createTime);
|
||||
pack.setExpireTime(userPack.getExpireTime());
|
||||
pack.setUpdateTime(createTime);
|
||||
userPackService.save(pack);
|
||||
|
||||
UserPackRecord packRecord = new UserPackRecord();
|
||||
packRecord.setPackId(packId);
|
||||
packRecord.setUid(uid);
|
||||
packRecord.setUserPackId(pack.getId());
|
||||
packRecord.setPackNum(useNum);
|
||||
packRecord.setSendUid(uid);
|
||||
packRecord.setSource(PackConstant.PackSource.USER_SEND);
|
||||
packRecord.setStatus(PackConstant.UserPackRecordStatus.NORMAL);
|
||||
packRecord.setCreateTime(createTime);
|
||||
packRecord.setExpireDay(0);
|
||||
packRecord.setExpireTime(userPack.getExpireTime());
|
||||
userPackRecordService.save(packRecord);
|
||||
message = I18NMessageSourceUtil.getMessage(PACK_SEND_SYS, new Object[]{users.getNick(), packName, useNum}, targetUid);
|
||||
}
|
||||
userUsePackRecordService.save(usePackRecord);
|
||||
|
||||
baseSendService.sendSystemMsg(targetUid.toString(), message);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -4,6 +4,7 @@ import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 礼包内容 服务类
|
||||
@@ -14,4 +15,8 @@ import java.util.List;
|
||||
public interface PackItemService extends IService<PackItem> {
|
||||
|
||||
List<PackItem> listByPackId(Integer packId);
|
||||
|
||||
Map<Integer, List<PackItem>> mapByList(List<Integer> packIds);
|
||||
|
||||
List<PackItem> listByPackIds(List<Integer> packIds);
|
||||
}
|
||||
|
@@ -3,6 +3,8 @@ package com.accompany.business.service.packcenter;
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户礼包 服务类
|
||||
*
|
||||
@@ -13,4 +15,8 @@ public interface UserPackService extends IService<UserPack> {
|
||||
|
||||
UserPack getByUidPackId(Long uid, Integer packId);
|
||||
|
||||
List<UserPack> listByUid(Long uid);
|
||||
|
||||
Integer packUseNumAdd(Long userPackId, Integer useNum);
|
||||
|
||||
}
|
||||
|
@@ -6,9 +6,13 @@ import com.accompany.business.service.packcenter.PackItemService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 礼包内容 服务实现类
|
||||
@@ -26,4 +30,20 @@ public class PackItemServiceImpl extends ServiceImpl<PackItemMapper, PackItem> i
|
||||
wrapper.eq(PackItem::getPackId, packId);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, List<PackItem>> mapByList(List<Integer> packIds) {
|
||||
List<PackItem> packItems = this.listByPackIds(packIds);
|
||||
if (CollectionUtils.isEmpty(packItems)) {
|
||||
return Collections.EMPTY_MAP;
|
||||
}
|
||||
return packItems.stream().collect(Collectors.groupingBy(PackItem::getPackId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PackItem> listByPackIds(List<Integer> packIds) {
|
||||
LambdaQueryWrapper<PackItem> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.in(PackItem::getPackId, packIds);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.constant.PackConstant;
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.accompany.business.mybatismapper.packcenter.UserPackMapper;
|
||||
import com.accompany.business.service.packcenter.UserPackService;
|
||||
@@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户礼包 服务实现类
|
||||
*
|
||||
@@ -25,4 +28,18 @@ public class UserPackServiceImpl extends ServiceImpl<UserPackMapper, UserPack> i
|
||||
.eq(UserPack::getPackId, packId);
|
||||
return baseMapper.selectOne(wrapper, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserPack> listByUid(Long uid) {
|
||||
LambdaQueryWrapper<UserPack> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(UserPack::getUid, uid);
|
||||
wrapper.eq(UserPack::getStatus, PackConstant.UserPackStatus.valid)
|
||||
.orderByAsc(UserPack::getExpireTime);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer packUseNumAdd(Long userPackId, Integer useNum) {
|
||||
return baseMapper.packUseNumAdd(userPackId, useNum);
|
||||
}
|
||||
}
|
||||
|
@@ -2,4 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.accompany.business.mybatismapper.packcenter.UserPackMapper">
|
||||
|
||||
<update id="packUseNumAdd">
|
||||
update user_pack set use_num = use_num + #{useNum} where id = #{userPackId}
|
||||
</update>
|
||||
</mapper>
|
||||
|
@@ -0,0 +1,40 @@
|
||||
package com.accompany.business.controller;
|
||||
|
||||
import com.accompany.business.service.packcenter.PackCenterService;
|
||||
import com.accompany.business.vo.packcenter.UserPackVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID;
|
||||
|
||||
@Api(tags = "礼包中心", value = "礼包中心")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/packCenter")
|
||||
public class PackCenterController {
|
||||
|
||||
@Autowired
|
||||
private PackCenterService packCenterService;
|
||||
|
||||
@ApiOperation(value = "礼包中心", httpMethod = "GET")
|
||||
@GetMapping("/list")
|
||||
public BusiResult<List<UserPackVo>> userPackList(@RequestHeader(PUB_UID) Long uid, Integer pageNo, Integer pageSize) {
|
||||
List<UserPackVo> userPackVos = packCenterService.userPackList(uid, pageNo, pageSize);
|
||||
return BusiResult.success(userPackVos);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "使用礼包", httpMethod = "GET")
|
||||
@GetMapping("/usePack")
|
||||
public BusiResult<Void> usePack(@RequestHeader(PUB_UID) Long uid, Long targetUid, Long userPackId, Integer useNum) {
|
||||
return packCenterService.usePack(uid, targetUid, userPackId, useNum);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user