礼包后台
礼包后台 礼包中心-礼包配置
This commit is contained in:
@@ -11,6 +11,8 @@ import java.math.BigDecimal;
|
||||
@ApiModel
|
||||
@Data
|
||||
public class ActivityDayTotalVo {
|
||||
@ExcelIgnore
|
||||
private Integer partitionId;
|
||||
@ApiModelProperty("日期")
|
||||
@ExcelProperty("日期")
|
||||
private String statDate;
|
||||
|
@@ -11,6 +11,6 @@ public class ActivityUserVo extends SimpleUserVo {
|
||||
private Integer rank;
|
||||
private String regionName;
|
||||
private String partitionDesc;
|
||||
private Long chargeGoleNUm;
|
||||
private Long chargeGoleNum;
|
||||
private String signTime;
|
||||
}
|
||||
|
@@ -0,0 +1,13 @@
|
||||
package com.accompany.admin.vo.packcenter;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class PackAwardVo {
|
||||
private Long awardId;
|
||||
private String awardName;
|
||||
private String awardPic;
|
||||
private String awardTypeName;
|
||||
private Integer awardNum;
|
||||
private Integer itemId;
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
package com.accompany.admin.vo.packcenter;
|
||||
|
||||
import com.accompany.core.annotation.I18n;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
public class PackInfoAdminVo {
|
||||
@ApiModelProperty("礼包ID")
|
||||
private Integer packId;
|
||||
@ApiModelProperty("分区ID")
|
||||
private Integer partitionId;
|
||||
@ApiModelProperty("分区")
|
||||
private String partitionDesc;
|
||||
@ApiModelProperty("礼包名称")
|
||||
@I18n(className = "PackInfo")
|
||||
private String packName;
|
||||
@ApiModelProperty("状态.1-有效,0-无效")
|
||||
private Byte status;
|
||||
@ApiModelProperty("礼包样式")
|
||||
private String imgUrl;
|
||||
@ApiModelProperty("礼包赠送过期天数(需求上写过期时间,避免混淆,显示这个)")
|
||||
private Integer expireDay;
|
||||
@ApiModelProperty()
|
||||
private String createTime;
|
||||
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
package com.accompany.admin.vo.packcenter;
|
||||
|
||||
import com.accompany.core.annotation.I18n;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class UserPackRecordAdminVo {
|
||||
@ApiModelProperty(value = "ID")
|
||||
private Long id;
|
||||
private Long uid;
|
||||
@ApiModelProperty(value = "平台ID")
|
||||
private Long erbanNo;
|
||||
@ApiModelProperty(value = "礼包名称")
|
||||
@I18n(className = "PackInfo")
|
||||
private String packName;
|
||||
@ApiModelProperty(value = "礼包ID")
|
||||
private Integer packId;
|
||||
@ApiModelProperty(value = "数量")
|
||||
private Integer packNum;
|
||||
@ApiModelProperty(value = "来源.1-官方赠送,2-用户赠送")
|
||||
private Byte source;
|
||||
@ApiModelProperty(value = "状态.1-正常,2-撤回")
|
||||
private Byte status;
|
||||
@ApiModelProperty(value = "操作人")
|
||||
private String adminUser;
|
||||
@ApiModelProperty(value = "原由")
|
||||
private String remark;
|
||||
@ApiModelProperty(value = "撤回人")
|
||||
private String recallAdminUser;
|
||||
@ApiModelProperty(value = "过期时间")
|
||||
private Date expireTime;
|
||||
@ApiModelProperty(value = "发放时间")
|
||||
private Date createTime;
|
||||
}
|
@@ -173,10 +173,10 @@ public class ActivityDayTotalAdminService {
|
||||
}
|
||||
|
||||
for (ActivityUserVo activityUserVo : resultList) {
|
||||
activityUserVo.setChargeGoleNUm(uidGoldMap.getOrDefault(activityUserVo.getUid(), 0L));
|
||||
activityUserVo.setChargeGoleNum(uidGoldMap.getOrDefault(activityUserVo.getUid(), 0L));
|
||||
}
|
||||
|
||||
resultList.sort(Comparator.comparing(ActivityUserVo::getChargeGoleNUm).reversed());
|
||||
resultList.sort(Comparator.comparing(ActivityUserVo::getChargeGoleNum).reversed());
|
||||
|
||||
resultList = PageUtil.page(resultList, pageNo, pageSize);
|
||||
if (CollectionUtils.isEmpty(resultList)) {
|
||||
|
@@ -0,0 +1,141 @@
|
||||
package com.accompany.admin.service.packcenter;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.accompany.admin.vo.packcenter.PackAwardVo;
|
||||
import com.accompany.admin.vo.packcenter.PackInfoAdminVo;
|
||||
import com.accompany.business.common.constant.RewardTypeEnum;
|
||||
import com.accompany.business.common.vo.RewardVo;
|
||||
import com.accompany.business.constant.activity.ActivityType;
|
||||
import com.accompany.business.model.activity.h5.ActivityH5LevelAward;
|
||||
import com.accompany.business.model.packcenter.PackInfo;
|
||||
import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService;
|
||||
import com.accompany.business.service.packcenter.PackInfoService;
|
||||
import com.accompany.business.service.packcenter.PackItemService;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.Collections.EMPTY_MAP;
|
||||
|
||||
@Service
|
||||
public class PackInfoAdminService {
|
||||
|
||||
@Autowired
|
||||
private PackInfoService packInfoService;
|
||||
@Autowired
|
||||
private PackItemService packItemService;
|
||||
@Autowired
|
||||
private ActivityH5LevelAwardService activityH5LevelAwardService;
|
||||
|
||||
public BusiResult<PageResult<PackInfoAdminVo>> list(Integer pageNo, Integer pageSize) {
|
||||
PageResult<PackInfoAdminVo> pageResult = new PageResult<>();
|
||||
IPage<PackInfo> page = new Page<>(pageNo, pageSize);
|
||||
List<PackInfo> list = packInfoService.list(page);
|
||||
pageResult.setTotal((int)page.getTotal());
|
||||
List<PackInfoAdminVo> resultVo = new ArrayList<>();
|
||||
pageResult.setRows(resultVo);
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return BusiResult.success(pageResult);
|
||||
}
|
||||
for (PackInfo packInfo : list) {
|
||||
PackInfoAdminVo packInfoAdminVo = new PackInfoAdminVo();
|
||||
packInfoAdminVo.setPackName(packInfo.getPackName());
|
||||
packInfoAdminVo.setPartitionId(packInfo.getPartitionId());
|
||||
packInfoAdminVo.setPartitionDesc(PartitionEnum.getByPartitionId(packInfo.getPartitionId()).getDesc());
|
||||
packInfoAdminVo.setStatus(packInfo.getStatus());
|
||||
packInfoAdminVo.setCreateTime(DateUtil.formatDateTime(packInfo.getCreateTime()));
|
||||
packInfoAdminVo.setImgUrl(packInfo.getImgUrl());
|
||||
packInfoAdminVo.setExpireDay(packInfo.getExpireDay());
|
||||
packInfoAdminVo.setPackId(packInfo.getPackId());
|
||||
resultVo.add(packInfoAdminVo);
|
||||
}
|
||||
return BusiResult.success(pageResult);
|
||||
}
|
||||
|
||||
public BusiResult<Void> save(PackInfoAdminVo vo) {
|
||||
I18NMessageSourceUtil.deserialization(vo, Collections.singletonList("name"));
|
||||
PackInfo packInfo = new PackInfo();
|
||||
packInfo.setUpdateTime(new Date());
|
||||
BeanUtils.copyProperties(vo, packInfo);
|
||||
packInfoService.saveOrUpdate(packInfo);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
public BusiResult<List<PackAwardVo>> awards(Integer partitionId) {
|
||||
List<ActivityH5LevelAward> records = activityH5LevelAwardService.listByPartition(partitionId, ActivityType.PACK_CENTER_REWARD.getType());
|
||||
List<PackAwardVo> resultList = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(records)) {
|
||||
for (ActivityH5LevelAward record : records) {
|
||||
resultList.add(coverAwardVo(record, EMPTY_MAP));
|
||||
}
|
||||
}
|
||||
return BusiResult.success(resultList);
|
||||
}
|
||||
|
||||
public BusiResult<List<PackAwardVo>> itemList(Integer packId) {
|
||||
List<PackAwardVo> resultList = new ArrayList<>();
|
||||
List<PackItem> packItems = packItemService.listByPackId(packId);
|
||||
if (CollectionUtils.isEmpty(packItems)) {
|
||||
return BusiResult.success(resultList);
|
||||
}
|
||||
Map<Long, PackItem> awardItemMap = packItems.stream().collect(Collectors.toMap(PackItem::getAwardId, x -> x));
|
||||
List<Long> awardIds = packItems.stream().map(PackItem::getAwardId).collect(Collectors.toList());
|
||||
List<ActivityH5LevelAward> activityH5LevelAwards = activityH5LevelAwardService.listByIds(awardIds);
|
||||
if (CollectionUtils.isEmpty(activityH5LevelAwards)) {
|
||||
return BusiResult.success(resultList);
|
||||
}
|
||||
for (ActivityH5LevelAward record : activityH5LevelAwards) {
|
||||
resultList.add(coverAwardVo(record, awardItemMap));
|
||||
}
|
||||
return BusiResult.success(resultList);
|
||||
}
|
||||
|
||||
private PackAwardVo coverAwardVo(ActivityH5LevelAward award, Map<Long, PackItem> awardItemMap) {
|
||||
PackAwardVo awardVo = new PackAwardVo();
|
||||
awardVo.setAwardId(award.getId());
|
||||
RewardVo rewardVo = activityH5LevelAwardService.coverRewardByType(award.getAwardType(), award.getAwardId().intValue());
|
||||
if (rewardVo != null) {
|
||||
awardVo.setAwardName(rewardVo.getName());
|
||||
awardVo.setAwardPic(rewardVo.getPic());
|
||||
}
|
||||
RewardTypeEnum byRewardType = RewardTypeEnum.getByRewardType(award.getAwardType());
|
||||
awardVo.setAwardNum(award.getAwardNum());
|
||||
awardVo.setAwardTypeName(byRewardType.getDesc());
|
||||
PackItem packItem = awardItemMap.get(award.getId());
|
||||
if (packItem != null) {
|
||||
awardVo.setItemId(packItem.getId());
|
||||
}
|
||||
return awardVo;
|
||||
}
|
||||
|
||||
public BusiResult<Void> itemAdd(PackItem packItem) {
|
||||
LambdaQueryWrapper<PackItem> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(PackItem::getPackId, packItem.getPackId());
|
||||
wrapper.eq(PackItem::getAwardId, packItem.getAwardId());
|
||||
if (packItemService.count(wrapper) > 0) {
|
||||
throw new AdminServiceException("重复添加");
|
||||
}
|
||||
packItem.setCreateTime(new Date());
|
||||
packItemService.save(packItem);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
public BusiResult<Void> itemDel(Integer itemId) {
|
||||
packItemService.removeById(itemId);
|
||||
return BusiResult.success();
|
||||
}
|
||||
}
|
@@ -0,0 +1,182 @@
|
||||
package com.accompany.admin.service.packcenter;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.accompany.admin.service.system.AdminUserService;
|
||||
import com.accompany.admin.vo.packcenter.UserPackRecordAdminVo;
|
||||
import com.accompany.business.constant.PackConstant;
|
||||
import com.accompany.business.model.packcenter.PackInfo;
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.accompany.business.model.packcenter.UserPackRecord;
|
||||
import com.accompany.business.service.packcenter.PackInfoService;
|
||||
import com.accompany.business.service.packcenter.UserPackRecordService;
|
||||
import com.accompany.business.service.packcenter.UserPackService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.accompany.common.redis.RedisKey.lock_user_pack;
|
||||
|
||||
@Service
|
||||
public class UserPackRecordAdminService {
|
||||
@Autowired
|
||||
private UserPackRecordService userPackRecordService;
|
||||
@Autowired
|
||||
private UserPackService userPackService;
|
||||
@Autowired
|
||||
private PackInfoService packInfoService;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private AdminUserService adminUserService;
|
||||
@Autowired
|
||||
private RedissonClient redissonClient;
|
||||
|
||||
public BusiResult<PageResult<UserPackRecordAdminVo>> list(Integer pageNo, Integer pageSize, Integer packId, Long erbanNo) {
|
||||
PageResult<UserPackRecordAdminVo> pageResult = new PageResult<>();
|
||||
Page<UserPackRecord> page = new Page<>(pageNo, pageSize);
|
||||
Long uid = null;
|
||||
if (erbanNo != null) {
|
||||
Users user = usersService.getUserByErbanNo(erbanNo);
|
||||
if (user == null) {
|
||||
throw new AdminServiceException("ID:" + erbanNo + ",不存在");
|
||||
}
|
||||
uid = user.getUid();
|
||||
}
|
||||
LambdaQueryWrapper<UserPackRecord> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(uid != null, UserPackRecord::getUid, uid);
|
||||
wrapper.eq(packId != null, UserPackRecord::getPackId, packId);
|
||||
wrapper.eq(UserPackRecord::getSource, PackConstant.PackSource.SYSTEM);
|
||||
List<UserPackRecord> list = userPackRecordService.list(page, wrapper);
|
||||
List<UserPackRecordAdminVo> resultList = new ArrayList<>();
|
||||
pageResult.setRows(resultList);
|
||||
pageResult.setTotal((int)page.getTotal());
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return BusiResult.success(pageResult);
|
||||
}
|
||||
List<Long> uids = list.stream().map(UserPackRecord::getUid).collect(Collectors.toList());
|
||||
List<Integer> packIds = list.stream().map(UserPackRecord::getPackId).collect(Collectors.toList());
|
||||
|
||||
Map<Long, Users> usersMap = usersService.getUsersMapByUids(uids);
|
||||
Map<Integer, PackInfo> packInfoMap = packInfoService.mapByPackIds(packIds);
|
||||
Map<Integer, String> adminUserMap = adminUserService.adminUserMap();
|
||||
for (UserPackRecord packRecord : list) {
|
||||
UserPackRecordAdminVo vo = new UserPackRecordAdminVo();
|
||||
BeanUtils.copyProperties(packRecord, vo);
|
||||
Users users = usersMap.get(packRecord.getUid());
|
||||
if (users != null) {
|
||||
vo.setErbanNo(users.getErbanNo());
|
||||
}
|
||||
PackInfo packInfo = packInfoMap.get(packRecord.getPackId());
|
||||
if (packInfo != null) {
|
||||
vo.setPackName(packInfo.getPackName());
|
||||
}
|
||||
vo.setAdminUser(adminUserMap.get(packRecord.getAdminId()));
|
||||
resultList.add(vo);
|
||||
}
|
||||
return BusiResult.success(pageResult);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public BusiResult<Void> packSend(Integer packId, Long erbanNo, Integer packNum, String remark, Integer adminId) {
|
||||
PackInfo packInfo = packInfoService.getById(packId);
|
||||
if (packInfo == null || Constant.StatusV2.invalid.equals(packInfo.getStatus())) {
|
||||
throw new AdminServiceException("该礼包不存在或无效");
|
||||
}
|
||||
Users user = usersService.getUserByErbanNo(erbanNo);
|
||||
if (user == null) {
|
||||
throw new AdminServiceException("ID:" + erbanNo + ",不存在");
|
||||
}
|
||||
Date createTime = new Date();
|
||||
Integer expireDay = packInfo.getExpireDay();
|
||||
DateTime expireTime = DateUtil.offsetDay(createTime, expireDay);
|
||||
UserPack pack = new UserPack();
|
||||
pack.setPackId(packId);
|
||||
pack.setUid(user.getUid());
|
||||
pack.setPackNum(packNum);
|
||||
pack.setSource(PackConstant.PackSource.SYSTEM);
|
||||
pack.setStatus(PackConstant.UserPackStatus.valid);
|
||||
pack.setCreateTime(createTime);
|
||||
pack.setExpireTime(expireTime);
|
||||
pack.setUpdateTime(createTime);
|
||||
userPackService.save(pack);
|
||||
|
||||
UserPackRecord packRecord = new UserPackRecord();
|
||||
packRecord.setPackId(packId);
|
||||
Long uid = user.getUid();
|
||||
packRecord.setUid(uid);
|
||||
packRecord.setUserPackId(pack.getId());
|
||||
packRecord.setPackNum(packNum);
|
||||
packRecord.setRemark(remark);
|
||||
packRecord.setAdminId(adminId);
|
||||
packRecord.setSource(PackConstant.PackSource.SYSTEM);
|
||||
packRecord.setStatus(PackConstant.UserPackRecordStatus.NORMAL);
|
||||
packRecord.setCreateTime(createTime);
|
||||
packRecord.setExpireDay(expireDay);
|
||||
packRecord.setExpireTime(expireTime);
|
||||
userPackRecordService.save(packRecord);
|
||||
|
||||
return BusiResult.success("赠送成功", null);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public BusiResult<Void> packRecall(Long recordId, Integer recallAdminId) {
|
||||
UserPackRecord record = userPackRecordService.getById(recordId);
|
||||
String lockKey = lock_user_pack.getKey(record.getUserPackId().toString());
|
||||
RLock lock = redissonClient.getLock(lockKey);
|
||||
boolean isLocked = false;
|
||||
try {
|
||||
isLocked = lock.tryLock(3, TimeUnit.SECONDS);
|
||||
if (!isLocked){
|
||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||
}
|
||||
UserPack userPack = userPackService.getById(record.getUserPackId());
|
||||
if (userPack == null) {
|
||||
throw new AdminServiceException("记录不存在");
|
||||
}
|
||||
if (userPack.getPackNum() - userPack.getUseNum() <= 0) {
|
||||
throw new AdminServiceException("该用户礼包已经使用完,不可撤回");
|
||||
}
|
||||
if (userPack.getExpireTime().before(new Date())) {
|
||||
throw new AdminServiceException("该用户礼包已经过期,不可撤回");
|
||||
}
|
||||
userPack.setStatus(PackConstant.UserPackStatus.invalid);
|
||||
userPack.setUpdateTime(new Date());
|
||||
record.setRecallAdminId(recallAdminId);
|
||||
record.setStatus(PackConstant.UserPackRecordStatus.RE_CALL);
|
||||
userPackService.updateById(userPack);
|
||||
userPackRecordService.updateById(record);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
if (isLocked){
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,82 @@
|
||||
package com.accompany.admin.controller.packcenter;
|
||||
|
||||
import com.accompany.admin.controller.BaseController;
|
||||
import com.accompany.admin.service.packcenter.PackInfoAdminService;
|
||||
import com.accompany.admin.service.system.AdminLogService;
|
||||
import com.accompany.admin.vo.packcenter.PackAwardVo;
|
||||
import com.accompany.admin.vo.packcenter.PackInfoAdminVo;
|
||||
import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Api(tags = "礼包配置中心", value = "礼包配置中心")
|
||||
@RestController
|
||||
@RequestMapping("/admin/packCenter")
|
||||
public class PackInfoAdminController extends BaseController {
|
||||
@Autowired
|
||||
private PackInfoAdminService packInfoAdminService;
|
||||
@Autowired
|
||||
private AdminLogService adminLogService;
|
||||
|
||||
@ApiOperation(value = "礼包配置列表", httpMethod = "GET")
|
||||
@GetMapping("/configList")
|
||||
public BusiResult<PageResult<PackInfoAdminVo>> list(Integer pageNo, Integer pageSize) {
|
||||
return packInfoAdminService.list(pageNo, pageSize);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "礼包配置保存更新", httpMethod = "POST")
|
||||
@PostMapping("/configSave")
|
||||
public BusiResult<Void> save(PackInfoAdminVo vo) {
|
||||
adminLogService.insertLog(getAdminId(), getClass().getCanonicalName(), "PackInfoAdminController.save" , JSONObject.toJSONString(vo));
|
||||
return packInfoAdminService.save(vo);
|
||||
}
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true)
|
||||
})
|
||||
@ApiOperation(value = "奖励列表(传礼包的分区id,添加礼包的是时候下拉选)", httpMethod = "GET")
|
||||
@GetMapping("/awards")
|
||||
public BusiResult<List<PackAwardVo>> awards(Integer partitionId) {
|
||||
return packInfoAdminService.awards(partitionId);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据礼包ID获取奖品列表", httpMethod = "GET")
|
||||
@GetMapping("/itemList")
|
||||
public BusiResult<List<PackAwardVo>> itemList(Integer packId) {
|
||||
return packInfoAdminService.itemList(packId);
|
||||
}
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "packId", value = "packId", required = true),
|
||||
@ApiImplicitParam(name = "awardId", value = "奖品ID", required = true)
|
||||
})
|
||||
@ApiOperation(value = "添加奖品", httpMethod = "POST")
|
||||
@PostMapping("/itemAdd")
|
||||
public BusiResult<Void> itemAdd(PackItem packItem) {
|
||||
adminLogService.insertLog(getAdminId(), getClass().getCanonicalName(), "PackInfoAdminController.itemAdd" , JSONObject.toJSONString(packItem));
|
||||
return packInfoAdminService.itemAdd(packItem);
|
||||
}
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "itemId", value = "别传错itemList返回的itemId", required = true)
|
||||
})
|
||||
@ApiOperation(value = "奖品删除", httpMethod = "POST")
|
||||
@PostMapping("/itemDel")
|
||||
public BusiResult<Void> itemDel(Integer itemId) {
|
||||
adminLogService.insertLog(getAdminId(), getClass().getCanonicalName(), "PackInfoAdminController.itemDel" , itemId.toString());
|
||||
return packInfoAdminService.itemDel(itemId);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,65 @@
|
||||
package com.accompany.admin.controller.packcenter;
|
||||
|
||||
import com.accompany.admin.controller.BaseController;
|
||||
import com.accompany.admin.service.packcenter.UserPackRecordAdminService;
|
||||
import com.accompany.admin.service.system.AdminLogService;
|
||||
import com.accompany.admin.vo.packcenter.UserPackRecordAdminVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Api(tags = "礼包发放记录", value = "礼包发放记录")
|
||||
@RestController
|
||||
@RequestMapping("/admin/userPackRecord")
|
||||
public class UserPackRecordAdminController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private UserPackRecordAdminService userPackRecordAdminService;
|
||||
@Autowired
|
||||
private AdminLogService adminLogService;
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "packId", value = "礼包id", required = true),
|
||||
@ApiImplicitParam(name = "erbanNo", value = "用户id", required = true)
|
||||
})
|
||||
@ApiOperation(value = "发放记录", httpMethod = "GET")
|
||||
@GetMapping("/recordList")
|
||||
public BusiResult<PageResult<UserPackRecordAdminVo>> list(Integer pageNo, Integer pageSize, Integer packId, Long erbanNo) {
|
||||
return userPackRecordAdminService.list(pageNo, pageSize, packId, erbanNo);
|
||||
}
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "packId", value = "packId", required = true),
|
||||
@ApiImplicitParam(name = "erbanNo", value = "用户ID", required = true),
|
||||
@ApiImplicitParam(name = "packNum", value = "礼包数量", required = true),
|
||||
@ApiImplicitParam(name = "remark", value = "理由", required = true),
|
||||
})
|
||||
@ApiOperation(value = "赠送礼包", httpMethod = "POST")
|
||||
@PostMapping("/send")
|
||||
public BusiResult<Void> packSend(Integer packId, Long erbanNo, Integer packNum, String remark) {
|
||||
adminLogService.insertLog(getAdminId(), getClass().getCanonicalName(), "PackInfoAdminController.packSend" ,
|
||||
String.format("packId:%s,erbanNo:%s,packNum:%s", packId, erbanNo, packNum));
|
||||
return userPackRecordAdminService.packSend(packId, erbanNo, packNum, remark, getAdminId());
|
||||
}
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "recordId", value = "记录ID", required = true),
|
||||
})
|
||||
@ApiOperation(value = "撤回礼包", httpMethod = "POST")
|
||||
@PostMapping("/packRecall")
|
||||
public BusiResult<Void> packRecall(Long recordId) {
|
||||
adminLogService.insertLog(getAdminId(), getClass().getCanonicalName(), "PackInfoAdminController.packRecall" ,
|
||||
String.format("recordId:%s", recordId));
|
||||
return userPackRecordAdminService.packRecall(recordId, getAdminId());
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -1460,6 +1460,7 @@ public enum RedisKey {
|
||||
first_charge_ip, //首充ip状态
|
||||
first_charge_device, //首充设备状态
|
||||
|
||||
lock_user_pack; //礼包锁
|
||||
;
|
||||
|
||||
public String getKey() {
|
||||
|
@@ -0,0 +1,20 @@
|
||||
package com.accompany.business.constant;
|
||||
|
||||
public interface PackConstant {
|
||||
|
||||
interface PackSource {
|
||||
byte SYSTEM = 1;
|
||||
byte USER_SEND = 2;
|
||||
}
|
||||
|
||||
interface UserPackRecordStatus {
|
||||
byte NORMAL = 1;
|
||||
byte RE_CALL = 2;
|
||||
}
|
||||
|
||||
interface UserPackStatus {
|
||||
byte invalid = 0;
|
||||
byte valid = 1;
|
||||
byte empty = 2;
|
||||
}
|
||||
}
|
@@ -36,6 +36,7 @@ public enum ActivityType {
|
||||
DAILY_SHOP(20, "日常任务兑换商城", ACTIVITY_FIRST_COMMON, true),
|
||||
CHARGE_TREASURE(21, "充值寻宝活动", ACTIVITY_FIRST_COMMON, true),
|
||||
FIRST_CHARGE(22, "首充活动", ACTIVITY_FIRST_COMMON, true),
|
||||
PACK_CENTER_REWARD(23, "礼包中心奖励", ACTIVITY_FIRST_COMMON, true),
|
||||
;
|
||||
|
||||
private Integer type;
|
||||
|
@@ -0,0 +1,66 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.accompany.core.annotation.I18n;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 礼包中心实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class PackInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "pack_id" , type = IdType.AUTO)
|
||||
private Integer packId;
|
||||
/**
|
||||
* 礼包名称
|
||||
*/
|
||||
private Integer partitionId;
|
||||
/**
|
||||
* 礼包名称
|
||||
*/
|
||||
@I18n(className = "PackInfo")
|
||||
private String packName;
|
||||
/**
|
||||
* 礼包类型.1-普通礼包 2-特殊礼包
|
||||
*/
|
||||
private Integer type;
|
||||
/**
|
||||
* 礼包图片地址
|
||||
*/
|
||||
private String imgUrl;
|
||||
/**
|
||||
* 送出过期天数
|
||||
*/
|
||||
private Integer expireDay;
|
||||
/**
|
||||
* 状态.1-有效,0-无效
|
||||
*/
|
||||
private Byte status;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
private Integer seqNo;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,40 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 礼包内容实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class PackItem implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id" , type = IdType.AUTO)
|
||||
private Integer id;
|
||||
/**
|
||||
* 礼包id
|
||||
*/
|
||||
private Integer packId;
|
||||
/**
|
||||
* 奖品id, 对应表activity_h5_level_award type=23的id
|
||||
*/
|
||||
private Long awardId;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,64 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户礼包实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class UserPack implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id" , type = IdType.AUTO)
|
||||
private Long id;
|
||||
/**
|
||||
* 用户uid
|
||||
*/
|
||||
private Long uid;
|
||||
/**
|
||||
* 礼包id
|
||||
*/
|
||||
private Integer packId;
|
||||
/**
|
||||
* 礼包数量
|
||||
*/
|
||||
private Integer packNum;
|
||||
/**
|
||||
* 礼包使用数量
|
||||
*/
|
||||
private Integer useNum;
|
||||
/**
|
||||
* 来源.1-官方赠送,2-用户赠送
|
||||
*/
|
||||
private Byte source;
|
||||
/**
|
||||
* 状态.1-有效,0-无效, 2-已用完
|
||||
*/
|
||||
private Byte status;
|
||||
/**
|
||||
* 礼包过期时间
|
||||
*/
|
||||
private Date expireTime;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,79 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户礼包获得记录实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class UserPackRecord implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id" , type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long userPackId;
|
||||
/**
|
||||
* 用户uid
|
||||
*/
|
||||
private Long uid;
|
||||
/**
|
||||
* 礼包id
|
||||
*/
|
||||
private Integer packId;
|
||||
/**
|
||||
* 礼包数量
|
||||
*/
|
||||
private Integer packNum;
|
||||
/**
|
||||
* 过期天数
|
||||
*/
|
||||
private Integer expireDay;
|
||||
/**
|
||||
* 来源.1-官方赠送,2-用户赠送
|
||||
*/
|
||||
private Byte source;
|
||||
/**
|
||||
* 状态.1-正常,2-撤回
|
||||
*/
|
||||
private Byte status;
|
||||
/**
|
||||
* 后台操作人
|
||||
*/
|
||||
private Integer adminId;
|
||||
/**
|
||||
* 原由
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 赠送人uid
|
||||
*/
|
||||
private Long sendUid;
|
||||
/**
|
||||
* 后台操作人
|
||||
*/
|
||||
private Integer recallAdminId;
|
||||
/**
|
||||
* 礼包截止时间-
|
||||
*/
|
||||
private Date expireTime;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,58 @@
|
||||
package com.accompany.business.model.packcenter;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户使用礼包记录实体类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class UserUsePackRecord implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id" , type = IdType.AUTO)
|
||||
private Integer id;
|
||||
/**
|
||||
* 用户uid
|
||||
*/
|
||||
private Long uid;
|
||||
/**
|
||||
* 用户uid
|
||||
*/
|
||||
private Long target_uid;
|
||||
|
||||
private Long userPackId;
|
||||
/**
|
||||
* 礼包id
|
||||
*/
|
||||
private Integer packId;
|
||||
/**
|
||||
* 礼包奖励id
|
||||
*/
|
||||
private String numberList;
|
||||
/**
|
||||
* 礼包数量
|
||||
*/
|
||||
private Integer packNum;
|
||||
/**
|
||||
* 使用类型.1-自己用,2-赠送
|
||||
*/
|
||||
private Integer useType;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackInfo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 礼包中心 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface PackInfoMapper extends BaseMapper<PackInfo> {
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 礼包内容 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface PackItemMapper extends BaseMapper<PackItem> {
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 用户礼包 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserPackMapper extends BaseMapper<UserPack> {
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPackRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 用户礼包获得记录 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserPackRecordMapper extends BaseMapper<UserPackRecord> {
|
||||
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
package com.accompany.business.mybatismapper.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserUsePackRecord;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 用户使用礼包记录 Mapper 接口
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserUsePackRecordMapper extends BaseMapper<UserUsePackRecord> {
|
||||
|
||||
}
|
@@ -26,6 +26,8 @@ public interface ActivityH5LevelAwardService extends IService<ActivityH5LevelAwa
|
||||
|
||||
Map<Integer, List<ActivityH5LevelAward>> levelMapByPartition(Integer partitionId, Integer type);
|
||||
|
||||
List<ActivityH5LevelAward> listByPartition(Integer partitionId, Integer type);
|
||||
|
||||
IPage<ActivityH5LevelAwardVo> listPage(ActivityH5Param param);
|
||||
|
||||
RewardVo coverRewardByType(Byte type, Integer refId);
|
||||
|
@@ -234,17 +234,23 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
|
||||
|
||||
@Override
|
||||
public Map<Integer, List<ActivityH5LevelAward>> levelMapByPartition(Integer partitionId, Integer type) {
|
||||
LambdaQueryWrapper<ActivityH5LevelAward> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(ActivityH5LevelAward::getType, type)
|
||||
.eq(ActivityH5LevelAward::getPartitionId, partitionId)
|
||||
.eq(ActivityH5LevelAward::getAwardStatus, 1);
|
||||
List<ActivityH5LevelAward> activityH5LevelAwards = baseMapper.selectList(wrapper);
|
||||
List<ActivityH5LevelAward> activityH5LevelAwards = this.listByPartition(partitionId, type);
|
||||
if (CollectionUtils.isEmpty(activityH5LevelAwards)) {
|
||||
return MapUtils.EMPTY_MAP;
|
||||
}
|
||||
return activityH5LevelAwards.stream().collect(Collectors.groupingBy(ActivityH5LevelAward::getLevel));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ActivityH5LevelAward> listByPartition(Integer partitionId, Integer type) {
|
||||
LambdaQueryWrapper<ActivityH5LevelAward> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(ActivityH5LevelAward::getType, type)
|
||||
.eq(ActivityH5LevelAward::getPartitionId, partitionId)
|
||||
.eq(ActivityH5LevelAward::getAwardStatus, 1)
|
||||
.orderByDesc(ActivityH5LevelAward::getCreateTime);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
public RewardVo covertI18nRewardInfo(RewardTypeEnum typeEnum, Integer refId, Integer partitionId) {
|
||||
RewardVo vo = new RewardVo();
|
||||
vo.setType(typeEnum.getType());
|
||||
|
@@ -0,0 +1,19 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackInfo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 礼包中心 服务类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface PackInfoService extends IService<PackInfo> {
|
||||
|
||||
Map<Integer, PackInfo> mapByPackIds(List<Integer> packIds);
|
||||
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 礼包内容 服务类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface PackItemService extends IService<PackItem> {
|
||||
|
||||
List<PackItem> listByPackId(Integer packId);
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPackRecord;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* 用户礼包获得记录 服务类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserPackRecordService extends IService<UserPackRecord> {
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* 用户礼包 服务类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserPackService extends IService<UserPack> {
|
||||
|
||||
UserPack getByUidPackId(Long uid, Integer packId);
|
||||
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package com.accompany.business.service.packcenter;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserUsePackRecord;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* 用户使用礼包记录 服务类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
public interface UserUsePackRecordService extends IService<UserUsePackRecord> {
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackInfo;
|
||||
import com.accompany.business.mybatismapper.packcenter.PackInfoMapper;
|
||||
import com.accompany.business.service.packcenter.PackInfoService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.Collections.EMPTY_MAP;
|
||||
|
||||
/**
|
||||
* 礼包中心 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Service
|
||||
public class PackInfoServiceImpl extends ServiceImpl<PackInfoMapper, PackInfo> implements PackInfoService {
|
||||
|
||||
|
||||
@Override
|
||||
public Map<Integer, PackInfo> mapByPackIds(List<Integer> packIds) {
|
||||
List<PackInfo> packInfos = baseMapper.selectByIds(packIds);
|
||||
if (CollectionUtils.isEmpty(packInfos)) {
|
||||
return EMPTY_MAP;
|
||||
}
|
||||
|
||||
return packInfos.stream().collect(Collectors.toMap(PackInfo::getPackId, x -> x));
|
||||
}
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.model.packcenter.PackItem;
|
||||
import com.accompany.business.mybatismapper.packcenter.PackItemMapper;
|
||||
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.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 礼包内容 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Service
|
||||
public class PackItemServiceImpl extends ServiceImpl<PackItemMapper, PackItem> implements PackItemService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<PackItem> listByPackId(Integer packId) {
|
||||
LambdaQueryWrapper<PackItem> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(PackItem::getPackId, packId);
|
||||
return baseMapper.selectList(wrapper);
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPackRecord;
|
||||
import com.accompany.business.mybatismapper.packcenter.UserPackRecordMapper;
|
||||
import com.accompany.business.service.packcenter.UserPackRecordService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户礼包获得记录 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Service
|
||||
public class UserPackRecordServiceImpl extends ServiceImpl<UserPackRecordMapper, UserPackRecord> implements UserPackRecordService {
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,28 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserPack;
|
||||
import com.accompany.business.mybatismapper.packcenter.UserPackMapper;
|
||||
import com.accompany.business.service.packcenter.UserPackService;
|
||||
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.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户礼包 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Service
|
||||
public class UserPackServiceImpl extends ServiceImpl<UserPackMapper, UserPack> implements UserPackService {
|
||||
|
||||
|
||||
@Override
|
||||
public UserPack getByUidPackId(Long uid, Integer packId) {
|
||||
LambdaQueryWrapper<UserPack> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(UserPack::getUid, uid)
|
||||
.eq(UserPack::getPackId, packId);
|
||||
return baseMapper.selectOne(wrapper, false);
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
package com.accompany.business.service.packcenter.impl;
|
||||
|
||||
import com.accompany.business.model.packcenter.UserUsePackRecord;
|
||||
import com.accompany.business.mybatismapper.packcenter.UserUsePackRecordMapper;
|
||||
import com.accompany.business.service.packcenter.UserUsePackRecordService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 用户使用礼包记录 服务实现类
|
||||
*
|
||||
* @author
|
||||
* @since 2025-07-03
|
||||
*/
|
||||
@Service
|
||||
public class UserUsePackRecordServiceImpl extends ServiceImpl<UserUsePackRecordMapper, UserUsePackRecord> implements UserUsePackRecordService {
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!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.PackInfoMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!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.PackItemMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!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">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!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.UserPackRecordMapper">
|
||||
|
||||
</mapper>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!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.UserUsePackRecordMapper">
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user