From 9b558f2bd330f86d8044ffc402b42394758f8310 Mon Sep 17 00:00:00 2001
From: liyj <1617420630@qq.com>
Date: Wed, 14 Jan 2026 15:23:10 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E4=BC=9A=E5=91=98mq=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/ShopStoreMemberLevelMapper.java | 9 +
.../account/mapper/ShopStoreMemberMapper.java | 9 +
.../AccountUserBindConnectService.java | 2 +
.../service/ShopStoreMemberLevelService.java | 12 ++
.../service/ShopStoreMemberService.java | 23 +++
.../AccountUserBindConnectServiceImpl.java | 11 ++
.../impl/AccountUserInfoServiceImpl.java | 17 +-
.../impl/ShopStoreMemberLevelServiceImpl.java | 42 +++++
.../impl/ShopStoreMemberServiceImpl.java | 165 ++++++++++++++++++
.../modules/account/AccountUserInfo.java | 4 +
.../impl/ShopOrderBaseServiceImpl.java | 3 +
.../impl/ShopStoreMemberServiceImpl.java | 1 -
12 files changed, 290 insertions(+), 8 deletions(-)
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberLevelMapper.java
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberMapper.java
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberLevelService.java
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberService.java
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/service/impl/ShopStoreMemberLevelServiceImpl.java
create mode 100644 mall-account/src/main/java/com/suisung/mall/account/service/impl/ShopStoreMemberServiceImpl.java
diff --git a/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberLevelMapper.java b/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberLevelMapper.java
new file mode 100644
index 00000000..9753537c
--- /dev/null
+++ b/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberLevelMapper.java
@@ -0,0 +1,9 @@
+package com.suisung.mall.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.suisung.mall.common.modules.store.ShopStoreMemberLevel;
+import org.springframework.stereotype.Component;
+
+@Component
+public interface ShopStoreMemberLevelMapper extends BaseMapper {
+}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberMapper.java b/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberMapper.java
new file mode 100644
index 00000000..699d1570
--- /dev/null
+++ b/mall-account/src/main/java/com/suisung/mall/account/mapper/ShopStoreMemberMapper.java
@@ -0,0 +1,9 @@
+package com.suisung.mall.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.suisung.mall.common.modules.store.ShopStoreMember;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ShopStoreMemberMapper extends BaseMapper {
+}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindConnectService.java b/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindConnectService.java
index 8ad03781..81d35e0b 100644
--- a/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindConnectService.java
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindConnectService.java
@@ -113,4 +113,6 @@ public interface AccountUserBindConnectService extends IBaseService accountUserBindConnectList);
+
+ List getAllBindList(AccountUserBindConnect accountUserBindConnect);
}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberLevelService.java b/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberLevelService.java
new file mode 100644
index 00000000..55943f2e
--- /dev/null
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberLevelService.java
@@ -0,0 +1,12 @@
+package com.suisung.mall.account.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.suisung.mall.common.modules.store.ShopStoreMemberLevel;
+
+import java.util.List;
+
+public interface ShopStoreMemberLevelService extends IService {
+
+ List findShopStoreMemberLevelList(ShopStoreMemberLevel shopStoreMemberLevel);
+}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberService.java b/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberService.java
new file mode 100644
index 00000000..b569a552
--- /dev/null
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/ShopStoreMemberService.java
@@ -0,0 +1,23 @@
+package com.suisung.mall.account.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.suisung.mall.common.modules.account.AccountUserInfo;
+import com.suisung.mall.common.modules.store.ShopStoreMember;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface ShopStoreMemberService extends IService {
+
+ Page findPage(ShopStoreMember shopStoreMember, Integer pageNo, Integer pageSize);
+
+ List findShopStoreMemberList(ShopStoreMember shopStoreMember);
+
+ List findSendPage(QueryWrapper queryWrapper, Integer pageNo, Integer pageSize);
+
+ ShopStoreMember getShopStoreMemberById(Long id);
+
+ void dealStoreMember(AccountUserInfo accountUserInfo);
+}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindConnectServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindConnectServiceImpl.java
index b18f484a..fa1091b9 100644
--- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindConnectServiceImpl.java
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindConnectServiceImpl.java
@@ -516,6 +516,17 @@ public class AccountUserBindConnectServiceImpl extends BaseServiceImpl getAllBindList(AccountUserBindConnect accountUserBindConnect) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("bind_id", accountUserBindConnect.getBind_id());
+ queryWrapper.eq("bind_type", BindCode.MOBILE)
+ .eq("user_type", 0)
+ .eq("user_id", accountUserBindConnect.getUser_id())
+ .orderByAsc("bind_time");
+ return this.list(queryWrapper);
+ }
+
/**
* 用户绑定手机号和openid
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserInfoServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserInfoServiceImpl.java
index 5b6d715b..36fbf476 100644
--- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserInfoServiceImpl.java
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserInfoServiceImpl.java
@@ -81,6 +81,10 @@ public class AccountUserInfoServiceImpl extends BaseServiceImpl shopStoreMemberLevels= shopService.findShopStoreMemberLevelList(params);
+ ShopStoreMemberLevel params = new ShopStoreMemberLevel();
+ params.setUserId(user_id);
+ params.setStoreId(store_id);
+ List shopStoreMemberLevels= shopStoreMemberLevelService.findShopStoreMemberLevelList(params);
if(shopStoreMemberLevels!=null && !shopStoreMemberLevels.isEmpty()){
ShopStoreMemberLevel updateShopStoreMemberLevel= shopStoreMemberLevels.get(0);
BigDecimal storeSpend=NumberUtil.add(updateShopStoreMemberLevel.getUserLevelSpend(),user_store_spend_total);//店铺会员总消费
@@ -234,11 +238,10 @@ public class AccountUserInfoServiceImpl extends BaseServiceImpl
+ * 店铺会员-会员等级
+ *
+ */
+@Transactional
+@Service
+public class ShopStoreMemberLevelServiceImpl extends BaseServiceImpl implements ShopStoreMemberLevelService {
+
+ @Override
+ public List findShopStoreMemberLevelList(ShopStoreMemberLevel shopStoreMemberLevel) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ if(shopStoreMemberLevel.getStoreId()!=null){
+ queryWrapper.eq("store_id",shopStoreMemberLevel.getStoreId());
+ }
+
+ if(shopStoreMemberLevel.getMemberLevelId()!=null){
+ queryWrapper.eq("store_member_id",shopStoreMemberLevel.getStoreMemberId());
+ }
+
+ if(shopStoreMemberLevel.getUserId()!=null){
+ queryWrapper.eq("user_id",shopStoreMemberLevel.getUserId());
+ }
+
+ return this.list(queryWrapper);
+ }
+
+
+}
diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/ShopStoreMemberServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/ShopStoreMemberServiceImpl.java
new file mode 100644
index 00000000..bf891d47
--- /dev/null
+++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/ShopStoreMemberServiceImpl.java
@@ -0,0 +1,165 @@
+package com.suisung.mall.account.service.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.suisung.mall.account.mapper.ShopStoreMemberMapper;
+import com.suisung.mall.account.service.AccountUserBindConnectService;
+import com.suisung.mall.account.service.ShopStoreMemberLevelService;
+import com.suisung.mall.account.service.ShopStoreMemberService;
+import com.suisung.mall.common.api.BindCode;
+import com.suisung.mall.common.constant.CommonConstant;
+import com.suisung.mall.common.domain.UserDto;
+import com.suisung.mall.common.exception.ApiException;
+import com.suisung.mall.common.modules.account.AccountUserBindConnect;
+import com.suisung.mall.common.modules.account.AccountUserInfo;
+import com.suisung.mall.common.modules.store.ShopStoreMember;
+import com.suisung.mall.common.modules.store.ShopStoreMemberLevel;
+import com.suisung.mall.common.utils.ContextUtil;
+import com.suisung.mall.common.utils.StringUtils;
+import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ *
+ * 店铺会员-店铺会员
+ *
+ */
+@Transactional
+@Service
+@Slf4j
+public class ShopStoreMemberServiceImpl extends BaseServiceImpl implements ShopStoreMemberService {
+
+ @Autowired
+ private ShopStoreMemberLevelService shopStoreMemberLevelService;
+
+ @Autowired
+ private AccountUserBindConnectService accountUserBindConnectService;
+
+ @Override
+ public Page findPage(ShopStoreMember shopStoreMember, Integer pageNo, Integer pageSize) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ UserDto userDto= ContextUtil.getCurrentUser();
+ assert userDto != null;
+ if(userDto.getRole_id()!=2){
+ throw new ApiException("无权限");
+ }
+ queryWrapper.eq("store_id", Convert.toInt(userDto.getStore_id()));
+ if(shopStoreMember.getUserId()!=null){
+ queryWrapper.eq("user_id", shopStoreMember.getUserId());
+ }
+ if(StringUtils.isNotEmpty(shopStoreMember.getUserAccount())){
+ queryWrapper.like("user_account", shopStoreMember.getUserAccount());
+ }
+ return this.lists(queryWrapper, pageNo, pageSize);
+ }
+
+ @Override
+ public List findShopStoreMemberList(ShopStoreMember shopStoreMember) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ if(shopStoreMember.getUserId()!=null){
+ queryWrapper.eq("user_id",shopStoreMember.getUserId());
+ }
+ if(shopStoreMember.getStoreId()!=null){
+ queryWrapper.eq("store_id", shopStoreMember.getStoreId());
+ }
+ return this.list(queryWrapper);
+ }
+
+ @Override
+ public List findSendPage(QueryWrapper queryWrapper, Integer pageNo, Integer pageSize) {
+ return this.lists(queryWrapper,pageNo,pageSize).getRecords();
+ }
+
+ @Override
+ public ShopStoreMember getShopStoreMemberById(Long id) {
+ ShopStoreMember shopStoreMember=this.getById(id);
+ if(null!=shopStoreMember){
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("store_member_id", shopStoreMember.getStore_member_id());
+ ShopStoreMemberLevel shopStoreMemberLevel= shopStoreMemberLevelService.getOne(queryWrapper);
+ if(shopStoreMemberLevel!=null){
+ shopStoreMember.setShopStoreMemberLevel(shopStoreMemberLevel);
+ }
+ }
+ return shopStoreMember;
+ }
+
+ @Override
+ public void dealStoreMember(AccountUserInfo accountUserInfo){
+ if(null!=accountUserInfo.getStore_id()){
+ log.info("MQ处理店铺会员开始:accountUserInfo:{}", JSONUtil.toJsonStr(accountUserInfo));
+ Integer store_id = accountUserInfo.getStore_id();
+ Integer user_id = accountUserInfo.getUser_id();
+ QueryWrapper params=new QueryWrapper<>();
+ params.eq("store_id",store_id);
+ params.eq("user_id",user_id);
+ List shopStoreMembers= this.list(params);
+ if(shopStoreMembers.isEmpty()){
+ AccountUserBindConnect paramAccountUserBindConnect=new AccountUserBindConnect();
+ paramAccountUserBindConnect.setBind_id("+86"+accountUserInfo.getUser_mobile());
+ paramAccountUserBindConnect.setBind_type(BindCode.MOBILE);
+ paramAccountUserBindConnect.setUser_id(user_id);
+ paramAccountUserBindConnect.setBind_active(CommonConstant.Enable);
+ paramAccountUserBindConnect.setUser_type(0);
+ List accountUserBindConnectList = accountUserBindConnectService.getAllBindList(paramAccountUserBindConnect);
+ if (!accountUserBindConnectList.isEmpty()){
+ AccountUserBindConnect accountUserBindConnect= accountUserBindConnectList.get(0);
+ ShopStoreMember shopStoreMember = new ShopStoreMember();
+ shopStoreMember.setStoreName(accountUserInfo.getStore_name());
+ shopStoreMember.setStoreId(store_id);
+ shopStoreMember.setUserId(user_id);
+ shopStoreMember.setBind_openid(accountUserBindConnect.getBind_openid());
+ shopStoreMember.setUserNickname(accountUserBindConnect.getBind_nickname());
+ shopStoreMember.setUserAccount(accountUserBindConnect.getBind_id());
+ this.save(shopStoreMember);
+ ShopStoreMemberLevel shopStoreMemberLevel = getShopStoreMemberLevel(store_id, shopStoreMember);
+ shopStoreMemberLevel.setUserId(user_id);
+ shopStoreMemberLevelService.saveOrUpdate(shopStoreMemberLevel);
+ }
+ }
+ }
+ }
+
+ /**
+ * 店铺会员初始化信息
+ * @param storeId
+ * @param shopStoreMember
+ * @return
+ */
+ private ShopStoreMemberLevel getShopStoreMemberLevel(Integer storeId, ShopStoreMember shopStoreMember) {
+ ShopStoreMemberLevel shopStoreMemberLevel=new ShopStoreMemberLevel();
+ shopStoreMemberLevel.setStoreId(storeId);
+ shopStoreMemberLevel.setStoreMemberId(shopStoreMember.getStore_member_id());
+ shopStoreMemberLevel.setUserLevelName("v1");
+ shopStoreMemberLevel.setUserLevelId(1001);
+ shopStoreMemberLevel.setMemberLevelId(1001);
+ shopStoreMemberLevel.setMemberLevelName("v1");
+ return shopStoreMemberLevel;
+ }
+
+
+ // 设置Excel响应头
+ private void setExcelResponseHeader(HttpServletResponse response, String fileName) {
+ try {
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + encodedFileName);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("文件名编码失败");
+ }
+ }
+
+
+
+}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserInfo.java b/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserInfo.java
index 7d8df49e..a305b4d2 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserInfo.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserInfo.java
@@ -126,4 +126,8 @@ public class AccountUserInfo implements Serializable {
@ApiModelProperty(value = "店铺id")
@TableField(exist = false)
private Integer store_id;
+
+ @ApiModelProperty(value = "店铺名称")
+ @TableField(exist = false)
+ private String store_name;
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
index 19a3a11a..9a5fcce7 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java
@@ -3389,6 +3389,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl