From e02d8b44d4c44355fb20800e1c6b8a31ed30fd45 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 26 九月 2025 17:15:57 +0800
Subject: [PATCH] 绑定商店

---
 framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java             |    2 +
 framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java            |    3 +
 buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java              |    7 +++
 framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java  |   34 +++++++++++++++++
 framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java |   51 ++++++++++++++++++++++++-
 framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java           |    6 +++
 framework/src/main/java/cn/lili/modules/member/service/MemberService.java         |    3 +
 7 files changed, 104 insertions(+), 2 deletions(-)

diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java
index b94997b..ed49bfe 100644
--- a/buyer-api/src/main/java/cn/lili/controller/lmk/MemberController.java
+++ b/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);
+    }
+
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java
new file mode 100644
index 0000000..4249cfb
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/MemberBindStoreForm.java
@@ -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;
+}
diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java b/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
index c66c3e2..c46713d 100644
--- a/framework/src/main/java/cn/lili/modules/member/entity/dos/Member.java
+++ b/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;
diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java b/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
index 6fa585e..ced2121 100644
--- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
+++ b/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberVO.java
@@ -106,6 +106,9 @@
     @ApiModelProperty(value = "榛戝悕鍗昳d")
     private String blackId;
 
+    @ApiModelProperty(value = "缁戝畾鍟嗗簵鍚�")
+    private String bindStoreName;
+
     public MemberVO(Member member) {
         BeanUtil.copyProperties(member, this);
     }
diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java b/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java
index ed82d84..ac31cfe 100644
--- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMapper.java
+++ b/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);
 
diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java b/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
index 4539594..34e1bf0 100644
--- a/framework/src/main/java/cn/lili/modules/member/service/MemberService.java
+++ b/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);
 }
diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
index 455df7b..113c83a 100644
--- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
+++ b/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()锛氱敤鎴穒d鑾峰彇寮傚父");
+        }
+        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

--
Gitblit v1.8.0