zxl
2025-09-26 e02d8b44d4c44355fb20800e1c6b8a31ed30fd45
绑定商店
6个文件已修改
1个文件已添加
106 ■■■■■ 已修改文件
buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/service/MemberService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java
@@ -2,6 +2,7 @@
import cn.lili.base.Result;
import cn.lili.modules.lmk.domain.form.MemberBindStoreForm;
import cn.lili.modules.lmk.domain.form.MemberNickNameForm;
import cn.lili.modules.member.service.MemberService;
import io.swagger.annotations.Api;
@@ -30,4 +31,10 @@
    public Result updateMemberNickName(@RequestBody MemberNickNameForm form){
        return memberService.updateMemberNickName(form);
    }
    @PutMapping("/bindMemberAndStore")
    public Result bindMemberAndStore(@RequestBody MemberBindStoreForm form){
        return memberService.bindMemberAndStore(form);
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java
New file
@@ -0,0 +1,34 @@
package cn.lili.modules.lmk.domain.form;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * lmk-shop-java
 *
 * @author : zxl
 * @date : 2025-09-26 15:05
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemberBindStoreForm {
    /**
     * 绑定分享店铺id
     */
    private String shareStoreId;
    /**
     * 分享时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shareTime;
}
framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
@@ -102,6 +102,8 @@
    @ApiModelProperty(value = "经验值数量")
    private Long experience;
    @TableField("share_store_id")
    private String shareStoreId;
    public Member(String username, String password, String mobile) {
        this.username = username;
framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
@@ -106,6 +106,9 @@
    @ApiModelProperty(value = "黑名单id")
    private String blackId;
    @ApiModelProperty(value = "绑定商店名")
    private String bindStoreName;
    public MemberVO(Member member) {
        BeanUtil.copyProperties(member, this);
    }
framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java
@@ -30,6 +30,12 @@
    @Select("select * from li_member ${ew.customSqlSegment}")
    IPage<MemberVO> pageByMemberVO(IPage<MemberVO> page, @Param(Constants.WRAPPER) Wrapper<Member> queryWrapper);
    @Select("select m.*,s.store_name as bindStoreName " +
            "from li_member m " +
            "LEFT JOIN li_store s on m.share_store_id = s.id " +
            " ${ew.customSqlSegment}")
    IPage<MemberVO> pageByMemberVOAndBindStore(IPage<MemberVO> page, @Param(Constants.WRAPPER) Wrapper<Member> queryWrapper);
    @Select("select * from li_member ${ew.customSqlSegment}")
    List<MemberVO> exportMember(@Param(Constants.WRAPPER) Wrapper<Member> queryWrapper);
framework/src/main/java/cn/lili/modules/member/service/MemberService.java
@@ -6,6 +6,7 @@
import cn.lili.common.security.token.Token;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.connect.entity.dto.ConnectAuthUser;
import cn.lili.modules.lmk.domain.form.MemberBindStoreForm;
import cn.lili.modules.lmk.domain.form.MemberNickNameForm;
import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dto.ManagerMemberEditDTO;
@@ -347,4 +348,6 @@
    Member findByUUID(String uuid);
    void registerHandler(Member user);
    Result bindMemberAndStore(MemberBindStoreForm form);
}
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());
@@ -610,9 +657,9 @@
                    "SELECT DISTINCT member_id FROM lmk_member_tag WHERE tag_id IN (" +
                            tagIdsStr + ")");
            return this.baseMapper.pageByMemberVO(PageUtil.initPage(page), queryWrapper);
            return this.baseMapper.pageByMemberVOAndBindStore(PageUtil.initPage(page), queryWrapper);
        }
        return this.baseMapper.pageByMemberVO(PageUtil.initPage(page),queryWrapper);
        return this.baseMapper.pageByMemberVOAndBindStore(PageUtil.initPage(page),queryWrapper);
    }
    @Override