peng
2025-10-23 05522e00fc976bec6644bd00953e1a4e1c3d96e8
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -25,6 +25,7 @@
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.connect.service.ConnectService;
import cn.lili.modules.lmk.domain.entity.VideoAccount;
import cn.lili.modules.lmk.domain.form.MemberBindStoreForm;
import cn.lili.modules.lmk.domain.form.MemberNickNameForm;
import cn.lili.modules.lmk.domain.form.MemberTagForm;
import cn.lili.modules.lmk.domain.vo.PrizeRecordVO;
@@ -74,6 +75,9 @@
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -356,6 +360,49 @@
    }
    @Override
    public Result bindMemberAndStore(MemberBindStoreForm form) {
        String memberId = UserContext.getCurrentUserId();
        if(StringUtils.isNotBlank(memberId)){
            Member member = baseMapper.selectById(memberId);
            if (member != null){
                //判断用户的创建时间是否和 分享shareTime在24小时内
                LocalDateTime memberCreateTime = member.getCreateTime().toInstant()
                        .atZone(ZoneId.systemDefault())
                        .toLocalDateTime();
                LocalDateTime shareTime = form.getShareTime().toInstant()
                        .atZone(ZoneId.systemDefault())
                        .toLocalDateTime();
                // 计算时间差 第一个参数 较早的时间 后一个较晚的时间
                Duration duration = Duration.between(
                        memberCreateTime.isBefore(shareTime) ? memberCreateTime : shareTime,
                        memberCreateTime.isBefore(shareTime) ? shareTime : memberCreateTime
                );
                long hoursDifference = duration.toHours();
                if (hoursDifference <= 24) {
                    // 在24小时内 与店铺进行绑定
                    if(StringUtils.isNotBlank(member.getShareStoreId())){
                        return Result.ok("已绑定店铺");
                    }
                    member.setShareStoreId(form.getShareStoreId());
                    baseMapper.updateById(member);
                } else {
                    return Result.ok("分享已过期,有效期为24小时");
                }
            }
        }else{
            throw new RuntimeException("UserContext.getCurrentUserId():用户id获取异常");
        }
        return Result.ok("绑定成功");
    }
    @Override
    public Member editOwn(MemberEditDTO memberEditDTO) {
        //查询会员信息
        Member member = this.findByUsername(Objects.requireNonNull(UserContext.getCurrentUser()).getUsername());
@@ -597,6 +644,8 @@
        queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getNickName()), "nick_name", memberSearchVO.getNickName());
        //按照电话号码查询
        queryWrapper.like(CharSequenceUtil.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile());
        //按照会员id查询
        queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getMemberId()), "m.id", memberSearchVO.getMemberId());
        //按照会员状态查询
        queryWrapper.eq(CharSequenceUtil.isNotBlank(memberSearchVO.getDisabled()), "disabled",
                memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0);
@@ -606,13 +655,11 @@
            String tagIdsStr = memberSearchVO.getTagIds().stream()
                    .map(String::valueOf)
                    .collect(Collectors.joining(","));
            queryWrapper.inSql("id",
            queryWrapper.inSql("m.id",
                    "SELECT DISTINCT member_id FROM lmk_member_tag WHERE tag_id IN (" +
                            tagIdsStr + ")");
            return this.baseMapper.pageByMemberVO(PageUtil.initPage(page), queryWrapper);
        }
        return this.baseMapper.pageByMemberVO(PageUtil.initPage(page),queryWrapper);
        return this.baseMapper.pageByMemberVOAndBindStore(PageUtil.initPage(page),queryWrapper);
    }
    @Override
@@ -689,6 +736,7 @@
        // 创建表头
        Row header = sheet.createRow(0);
        String[] headers = {
                "会员id",
                "会员名称", "会员昵称","联系方式",
                "注册时间","最后登录时间"
        };
@@ -699,11 +747,12 @@
        for (int i=0;i< exportDetailDTOS.size();i++){
            MemberExportVO dto = exportDetailDTOS.get(i);
            Row row = sheet.createRow(i+1);
            row.createCell(0).setCellValue(dto.getUsername());
            row.createCell(1).setCellValue(dto.getNickName());
            row.createCell(2).setCellValue(dto.getMobile());
            row.createCell(3).setCellValue(dto.getCreateTime());
            row.createCell(4).setCellValue(dto.getLastLoginDate());
            row.createCell(0).setCellValue(dto.getId());
            row.createCell(1).setCellValue(dto.getUsername());
            row.createCell(2).setCellValue(dto.getNickName());
            row.createCell(3).setCellValue(dto.getMobile());
            row.createCell(4).setCellValue(dto.getCreateTime());
            row.createCell(5).setCellValue(dto.getLastLoginDate());
        }
        return workbook;