peng
2 天以前 40d3bb9fe638a0bd79e829e7fd5114871101390b
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeDrawServiceImpl.java
@@ -1,5 +1,12 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.lmk.domain.entity.ActivityRefPrize;
import cn.lili.modules.lmk.domain.vo.GrantRecordVO;
import cn.lili.modules.lmk.service.ActivityRefPrizeService;
import cn.lili.modules.promotion.entity.vos.CouponVO;
import cn.lili.modules.promotion.service.CouponService;
import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.domain.entity.PrizeDraw;
import cn.lili.modules.lmk.mapper.PrizeDrawMapper;
@@ -14,7 +21,9 @@
import cn.lili.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -29,6 +38,41 @@
public class PrizeDrawServiceImpl extends ServiceImpl<PrizeDrawMapper, PrizeDraw> implements PrizeDrawService {
    private final PrizeDrawMapper prizeDrawMapper;
    private final ActivityRefPrizeService activityRefPrizeService;
    private final CouponService couponService;
    private final COSUtil cOSUtil;
    @Override
    public Result canUpDatePrizeDraw(String prizeDrawId) {
        PrizeDraw prizeDraw = baseMapper.selectById(prizeDrawId);
        CouponVO detail = new CouponVO();
        if (StringUtils.isNotBlank(prizeDraw.getCouponId())){
             detail = couponService.getDetail(prizeDraw.getCouponId());
        }
        Result result = Result.ok();
        result.data(detail);
        Object data = activityRefPrizeService.getPrizeByIdAndPrizeActivityId(prizeDrawId).get("data");
        if (data instanceof List<?>) {
            List<?> rawList = (List<?>) data;
            List<ActivityRefPrize> list = new ArrayList<>();
            for (Object item : rawList) {
                if (item instanceof ActivityRefPrize) {
                    list.add((ActivityRefPrize) item);
                }
            }
            if (CollectionUtils.isEmpty(list)) {
                return result.put("state",true);
            }else{
                return result.put("state",false);
            }
            // 使用 list
        }
        return result.put("state",false);
    }
    /**
     * 添加
@@ -50,7 +94,6 @@
    @Override
    public Result update(PrizeDrawForm form) {
        PrizeDraw entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
@@ -89,6 +132,14 @@
    public Result page(PrizeDrawQuery query) {
        IPage<PrizeDrawVO> page = PageUtil.getPage(query, PrizeDrawVO.class);
        baseMapper.getPage(page, query);
        for (PrizeDrawVO vo : page.getRecords()) {
            if (StringUtils.isNotBlank(vo.getPrizeCover())){
                vo.setPrizeCoverUrl(cOSUtil.getPreviewUrl(vo.getPrizeCover()));
            }
            if (StringUtils.isNotBlank(vo.getPrizeImg())){
                vo.setPrizeImgUrl(cOSUtil.getPreviewUrl(vo.getPrizeImg()));
            }
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
@@ -116,4 +167,36 @@
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public Result grantRecord(String prizeActivityId) {
        List<GrantRecordVO> data = baseMapper.grantRecord(prizeActivityId);
        for (GrantRecordVO datum : data) {
            datum.setNickname(nicknameDesensitize(datum.getNickname()));
        }
        return Result.ok().data(data);
    }
    /**
     * 昵称脱敏:保留前1后1位,中间*填充(长度≤2不脱敏)
     */
    public static String nicknameDesensitize(String nickname) {
        if (nickname == null || nickname.trim().isEmpty()) {
            return nickname;
        }
        String trimNick = nickname.trim();
        int length = trimNick.length();
        // JDK 8 不支持 String.repeat,用 StringBuilder 拼接脱敏字符
        if (length ==1){
            return trimNick + "*";
        }
        if (length == 2) {
            return trimNick.charAt(0) + "*";
        }
        StringBuilder mask = new StringBuilder();
        for (int i = 0; i < length - 2; i++) {
            mask.append('*'); // 中间填充 *,长度 = 总长度 - 2(前1位 + 后1位)
        }
        return trimNick.charAt(0) + mask.toString() + trimNick.substring(length - 1);
    }
}