日常任务-商城

This commit is contained in:
2025-05-20 19:07:29 +08:00
parent 7f74b75456
commit 31b6ef3ec0
19 changed files with 260 additions and 32 deletions

View File

@@ -302,6 +302,8 @@ public enum I18nAlertEnum {
LUCKY_NUMBER_GET_JACKPOT_TIP("恭喜你在幸运数字活动中获得了{0}金币。"),
USER_EVENT_SHARE_TEXT("快来加入我们一起聊天吧!{0}"),
GOLD_NAME("GOLD"),
;
private final String defaultStr;

View File

@@ -32,6 +32,8 @@ public enum ActivityType {
RAMADAN_GIFT_SEND_TOTAL(16, "斋月送礼总榜", ACTIVITY_FIRST_COMMON, true),
LUCKY_NUMBER_JACKPOT(17, "幸运数字瓜分", ACTIVITY_FIRST_COMMON, true),
USER_SIGN(17, "签到送礼", ACTIVITY_FIRST_COMMON, true),
DAILY_SHOP(18, "日常任务兑换商城", ACTIVITY_FIRST_COMMON, true),
;
private Integer type;

View File

@@ -0,0 +1,24 @@
package com.accompany.business.vo.dailytask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@ApiModel
@Data
public class DailyTaskShopCenterVo {
@ApiModelProperty("昵称")
private String nick;
@ApiModelProperty("id")
private Long erbanNo;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("金豆数量")
private BigDecimal goldBean;
@ApiModelProperty("兑换中心")
List<DailyTaskShopVo> shops;
}

View File

@@ -0,0 +1,22 @@
package com.accompany.business.vo.dailytask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel
@Data
public class DailyTaskShopVo {
@ApiModelProperty("商品图片")
private String pic;
@ApiModelProperty("商品图片")
private String shopName;
@ApiModelProperty("商品兑换金豆")
private Long exchangeGoldBean;
@ApiModelProperty("商品id")
private Long awardId;
@ApiModelProperty("*D")
private String unit;
@ApiModelProperty("商品数量")
private Integer awardNum;
}

View File

@@ -1,4 +1,4 @@
package com.accompany.business.vo;
package com.accompany.business.vo.dailytask;
import com.accompany.business.constant.dailytask.DailyTaskConstant;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;

View File

@@ -1,6 +1,7 @@
package com.accompany.business.service.activity.h5;
import com.accompany.business.common.constant.RewardTypeEnum;
import com.accompany.business.common.vo.RewardVo;
import com.accompany.business.model.activity.h5.ActivityH5LevelAward;
import com.accompany.business.param.ActivityH5Param;
@@ -28,4 +29,6 @@ public interface ActivityH5LevelAwardService extends IService<ActivityH5LevelAwa
IPage<ActivityH5LevelAwardVo> listPage(ActivityH5Param param);
RewardVo coverRewardByType(Byte type, Integer refId);
RewardVo covertI18nRewardInfo(RewardTypeEnum typeEnum, Integer refId, Integer partitionId);
}

View File

@@ -9,9 +9,11 @@ import com.accompany.business.model.activity.h5.ActivityH5LevelAward;
import com.accompany.business.model.dress.ChatBubble;
import com.accompany.business.model.dress.InfoCard;
import com.accompany.business.model.dress.PersonalBackground;
import com.accompany.business.model.vip.VipAuthItem;
import com.accompany.business.model.vip.VipInfo;
import com.accompany.business.mybatismapper.NameplateMapper;
import com.accompany.business.mybatismapper.activity.h5.ActivityH5LevelAwardMapper;
import com.accompany.business.mybatismapper.vip.VipAuthItemMapper;
import com.accompany.business.param.ActivityH5Param;
import com.accompany.business.service.car.CarGoodsService;
import com.accompany.business.service.dress.InfoCardService;
@@ -22,7 +24,12 @@ import com.accompany.business.service.medal.MedalService;
import com.accompany.business.service.vip.ChatBubbleService;
import com.accompany.business.service.vip.VipInfoService;
import com.accompany.business.vo.activity.h5.ActivityH5LevelAwardVo;
import com.accompany.common.constant.Constant;
import com.accompany.common.status.BusiStatus;
import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.ServiceException;
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.extension.plugins.pagination.Page;
@@ -32,9 +39,10 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import static com.accompany.core.enumeration.I18nAlertEnum.GOLD_NAME;
/**
* <p>
@@ -217,4 +225,126 @@ public class ActivityH5LevelAwardServiceImpl extends ServiceImpl<ActivityH5Level
public List<ActivityH5LevelAward> listByLevelPartition(Integer partitionId, Integer level, Integer type) {
return this.baseMapper.listByLevelPartition(partitionId, level,type);
}
public RewardVo covertI18nRewardInfo(RewardTypeEnum typeEnum, Integer refId, Integer partitionId) {
RewardVo vo = new RewardVo();
vo.setType(typeEnum.getType());
vo.setRefId(refId);
String i18nId = "";
String i18nValue = "";
switch (typeEnum) {
case HEADWEAR:
Headwear headwear = headwearService.getHeadwear(refId);
if (null == headwear) {
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", Headwear.class.getSimpleName(), headwear.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, headwear.getName(), partitionId);
vo.setUnit("D");
vo.setPic(headwear.getPic());
break;
case NAMEPLATE:
Nameplate nameplate = nameplateMapper.selectById(refId.longValue());
if (null == nameplate) {
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", Nameplate.class.getSimpleName(), nameplate.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, nameplate.getName(), partitionId);
vo.setUnit("D");
vo.setPic(nameplate.getIconPic());
break;
case CHATBUBBLE:
ChatBubble chatBubble = chatBubbleService.getChatBubbleById(refId.longValue());
if (null == chatBubble) {
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", ChatBubble.class.getSimpleName(), chatBubble.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, chatBubble.getName(), partitionId);
vo.setUnit("D");
vo.setPic(chatBubble.getAndroidUrl());
break;
case INFOCARD:
InfoCard infoCard = infoCardService.getInfoCardById(refId.longValue());
if (null == infoCard) {
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", InfoCard.class.getSimpleName(), infoCard.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, infoCard.getName(), partitionId);
vo.setUnit("D");
vo.setPic(infoCard.getPic());
break;
case CAR:
CarGoods car = carGoodsService.getCarGoods(refId);
if (null == car) {
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", CarGoods.class.getSimpleName(), car.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, car.getName(), partitionId);
vo.setUnit("D");
vo.setPic(car.getPic());
break;
case GIFT:
Gift gift = giftService.getGiftById(refId);
if (null == gift){
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", Gift.class.getSimpleName(), gift.getGiftName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, gift.getGiftName(), partitionId);
vo.setPic(gift.getPicUrl());
break;
case DIAMOND:
i18nValue = I18NMessageSourceUtil.getMessage(GOLD_NAME, partitionId);
vo.setPic("https://image.molistar.xyz/Molistarcoins.png");
break;
case VIP:
VipInfo vipInfo = vipInfoService.getByVipLevel(refId);
if (null == vipInfo){
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", VipInfo.class.getSimpleName(), vipInfo.getVipName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, vipInfo.getVipName(), partitionId);
List<VipAuthItem> vipAuthItems = SpringContextHolder.getBean(VipAuthItemMapper.class).listValidItemByVipLevel(refId);
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(vipAuthItems)) {
Map<Byte, List<VipAuthItem>> typeMap = vipAuthItems.stream().collect(Collectors.groupingBy(VipAuthItem::getAuthType));
// vip铭牌
List<VipAuthItem> nameplates = typeMap.get(Constant.VipAuthType.NAMEPLATE);
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(nameplates)) {
Optional<VipAuthItem> maxLevelNameplate = nameplates.stream().sorted(Comparator.comparing(VipAuthItem::getVipLevel).reversed()).limit(1).findAny();
if (maxLevelNameplate.isPresent()) {
Long nameplateId = Long.parseLong(maxLevelNameplate.get().getItemValue());
Nameplate vipNameplate = SpringContextHolder.getBean(NameplateMapper.class).selectById(nameplateId);
if (null != vipNameplate) {
vo.setPic(vipNameplate.getIconPic());
}
}
}
}
break;
case MEDAL:
Medal medal = medalService.getById(refId);
if (null == medal){
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", Medal.class.getSimpleName(), medal.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, medal.getName(), partitionId);
vo.setPic(medal.getPicUrl());
break;
case PERSONAL:
PersonalBackground personalBackground = personalBackgroundService.getById(refId);
if (null == personalBackground){
throw new ServiceException(BusiStatus.NOT_FOUNT_REWARD_ITEM);
}
i18nId = String.join(".", PersonalBackground.class.getSimpleName(), personalBackground.getName());
i18nValue = I18NMessageSourceUtil.getMessage(i18nId, personalBackground.getName(), partitionId);
vo.setPic(personalBackground.getPic());
break;
default:
break;
}
vo.setName(i18nValue);
return vo;
}
}

View File

@@ -5,7 +5,7 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.constant.dailytask.GoldBeanBillType;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.service.usergoldbean.UserGoldBeanService;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.common.result.BusiResult;

View File

@@ -4,7 +4,7 @@ package com.accompany.business.service.dailytask;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.common.result.BusiResult;
import java.util.Date;

View File

@@ -1,21 +1,30 @@
package com.accompany.business.service.dailytask;
import com.accompany.business.common.constant.RewardTypeEnum;
import com.accompany.business.common.vo.RewardVo;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.model.UserGoldBean;
import com.accompany.business.model.activity.h5.ActivityH5LevelAward;
import com.accompany.business.service.activity.h5.ActivityH5LevelAwardService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.service.usergoldbean.UserGoldBeanService;
import com.accompany.business.vo.dailytask.*;
import com.accompany.common.result.BusiResult;
import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.StringUtils;
import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.Users;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestHeader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static com.accompany.business.constant.activity.ActivityType.DAILY_SHOP;
import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.*;
import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID;
@Service
public class DailyTaskService {
@@ -23,6 +32,15 @@ public class DailyTaskService {
@Autowired
private DailyTaskHandlerRegistry taskHandlerRegistry;
@Autowired
private UserGoldBeanService userGoldBeanService;
@Autowired
private UsersService usersService;
@Autowired
private ActivityH5LevelAwardService activityH5LevelAwardService;
public DailyTaskVo executeDailyTask(DailyTaskTypeEnum contextTaskType, DailyTaskTypeEnum handlerTaskType, Long uid) {
DailyTaskHandler handler = taskHandlerRegistry.getHandler(handlerTaskType);
DailyTaskContext dailyTaskContext = new DailyTaskContext(uid, contextTaskType);
@@ -89,4 +107,36 @@ public class DailyTaskService {
return BusiResult.success(result);
}
public BusiResult<DailyTaskShopCenterVo> shops(Long uid) {
UserGoldBean userGoldBean = userGoldBeanService.queryUserGoldBean(uid);
DailyTaskShopCenterVo dailyTaskShopCenterVo = new DailyTaskShopCenterVo();
dailyTaskShopCenterVo.setGoldBean(userGoldBean.getGoldBean());
Users users = usersService.getUsersByUid(uid);
dailyTaskShopCenterVo.setNick(users.getNick());
dailyTaskShopCenterVo.setAvatar(users.getAvatar());
dailyTaskShopCenterVo.setErbanNo(users.getErbanNo());
List<DailyTaskShopVo> shopVos = new ArrayList<>();
dailyTaskShopCenterVo.setShops(shopVos);
Integer partitionId = users.getPartitionId();
List<ActivityH5LevelAward> activityH5LevelAwards = activityH5LevelAwardService.listByLevelPartition(partitionId, 1, DAILY_SHOP.getType());
if (CollectionUtils.isEmpty(activityH5LevelAwards)) {
return BusiResult.success(dailyTaskShopCenterVo);
}
for (ActivityH5LevelAward award : activityH5LevelAwards) {
RewardVo rewardVo = activityH5LevelAwardService.covertI18nRewardInfo(RewardTypeEnum.getByRewardType(award.getAwardType()), award.getAwardId().intValue(), partitionId);
if (rewardVo == null) {
continue;
}
DailyTaskShopVo dailyTaskShopVo = new DailyTaskShopVo();
dailyTaskShopVo.setShopName(rewardVo.getName());
dailyTaskShopVo.setPic(rewardVo.getPic());
dailyTaskShopVo.setUnit(rewardVo.getUnit());
dailyTaskShopVo.setExchangeGoldBean(award.getReferenceValue());
dailyTaskShopVo.setAwardId(award.getAwardId());
dailyTaskShopVo.setAwardNum(award.getAwardNum());
shopVos.add(dailyTaskShopVo);
}
return BusiResult.success(dailyTaskShopCenterVo);
}
}

View File

@@ -1,23 +1,16 @@
package com.accompany.business.service.dailytask.handler;
import com.accompany.business.constant.dailytask.DailyTaskConstant;
import com.accompany.business.vo.dailytask.DailyProgressContext;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.core.model.Users;
import org.redisson.api.RBucket;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RMap;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.IntegerCodec;
import org.redisson.client.codec.LongCodec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.charge_gold;

View File

@@ -5,11 +5,10 @@ import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
@Component
@DailyTaskHandlerType(DailyTaskTypeEnum.DAILY_SIGN)

View File

@@ -5,13 +5,12 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.redisson.api.RSet;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.play_game;

View File

@@ -6,13 +6,12 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
@Component
@DailyTaskHandlerType(DailyTaskTypeEnum.RECV_LUCKY_GIFT)

View File

@@ -5,13 +5,12 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
import static com.accompany.business.constant.dailytask.DailyTaskConstant.RedisKey.recv_gold_num;
import static com.accompany.business.constant.dailytask.DailyTaskTypeEnum.RECV_NOMAL_GIFT_GOLD;

View File

@@ -6,13 +6,12 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
@Component
@DailyTaskHandlerType(DailyTaskTypeEnum.RECV_NOMAL_GIFT)

View File

@@ -5,12 +5,11 @@ import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.redisson.api.RBucket;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Date;
@Component
@DailyTaskHandlerType(DailyTaskTypeEnum.ROOM_SEND_GIFT)

View File

@@ -5,7 +5,7 @@ import com.accompany.business.service.dailytask.AbstractDailyTaskHandler;
import com.accompany.business.vo.dailytask.DailyTaskContext;
import com.accompany.business.service.dailytask.annotation.DailyTaskHandlerType;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import org.springframework.stereotype.Component;
@Component

View File

@@ -2,7 +2,8 @@ package com.accompany.business.controller.activity.dailytask;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.service.dailytask.DailyTaskService;
import com.accompany.business.vo.DailyTaskVo;
import com.accompany.business.vo.dailytask.DailyTaskShopCenterVo;
import com.accompany.business.vo.dailytask.DailyTaskVo;
import com.accompany.common.result.BusiResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -36,4 +37,11 @@ public class DailyTaskController {
return dailyTaskService.executeReceive(taskType, uid, todayDate);
}
@ApiOperation(value = "兑换中心", httpMethod = "GET")
@GetMapping("/shops")
public BusiResult<DailyTaskShopCenterVo> shops(@RequestHeader(PUB_UID) Long uid) {
return dailyTaskService.shops(uid);
}
}