个人中心会员相关
This commit is contained in:
parent
d99f5121ed
commit
f4b6e68eff
|
|
@ -1,10 +1,8 @@
|
||||||
package com.czg.controller.user;
|
package com.czg.controller.user;
|
||||||
|
|
||||||
import com.czg.market.dto.MemberOrderDTO;
|
|
||||||
import com.czg.market.entity.MemberOrder;
|
|
||||||
import com.czg.market.entity.MkShopConsumeDiscountRecord;
|
|
||||||
import com.czg.market.service.MkShopConsumeDiscountRecordService;
|
|
||||||
import com.czg.market.service.TbMemberConfigService;
|
import com.czg.market.service.TbMemberConfigService;
|
||||||
|
import com.czg.market.vo.MemberDetailVO;
|
||||||
|
import com.czg.market.vo.MemberListVO;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.utils.ServletUtil;
|
import com.czg.utils.ServletUtil;
|
||||||
|
|
@ -12,8 +10,10 @@ import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新客立减相关
|
* 会员相关
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
|
|
@ -23,4 +23,22 @@ public class UMemberController {
|
||||||
@Resource
|
@Resource
|
||||||
private TbMemberConfigService memberConfigService;
|
private TbMemberConfigService memberConfigService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有已开通的会员
|
||||||
|
* @return 列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/list")
|
||||||
|
public CzgResult<List<MemberListVO>> getMemberList() {
|
||||||
|
return CzgResult.success(memberConfigService.getMemberList(StpKit.USER.getLoginIdAsLong()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取会员信息详情
|
||||||
|
* @param shopId 店铺id
|
||||||
|
*/
|
||||||
|
@GetMapping("/detail")
|
||||||
|
public CzgResult<MemberDetailVO> getDetail(@RequestParam Long shopId) {
|
||||||
|
return CzgResult.success(memberConfigService.getUserDetail(StpKit.USER.getLoginIdAsLong(), shopId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,15 @@ import com.czg.market.dto.MemberLevelDTO;
|
||||||
import com.czg.market.dto.MemberOrderDTO;
|
import com.czg.market.dto.MemberOrderDTO;
|
||||||
import com.czg.market.entity.MemberOrder;
|
import com.czg.market.entity.MemberOrder;
|
||||||
import com.czg.market.vo.MemberConfigVO;
|
import com.czg.market.vo.MemberConfigVO;
|
||||||
|
import com.czg.market.vo.MemberDetailVO;
|
||||||
import com.czg.market.vo.MemberLevelVO;
|
import com.czg.market.vo.MemberLevelVO;
|
||||||
|
import com.czg.market.vo.MemberListVO;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
import com.czg.market.entity.TbMemberConfig;
|
import com.czg.market.entity.TbMemberConfig;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员基础配置 服务层。
|
* 会员基础配置 服务层。
|
||||||
|
|
@ -48,4 +51,13 @@ public interface TbMemberConfigService extends IService<TbMemberConfig> {
|
||||||
*/
|
*/
|
||||||
boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId);
|
boolean deliver(Long shopId, Long userId, TableValueConstant.MemberExpFlow.Type type, BigDecimal money, Integer expVal, Long sourceId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户会员列表
|
||||||
|
*/
|
||||||
|
List<MemberListVO> getMemberList(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户会员详情
|
||||||
|
*/
|
||||||
|
MemberDetailVO getUserDetail(Long userId, Long shopId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.czg.market.vo;
|
||||||
|
|
||||||
|
import com.czg.account.entity.ShopInfo;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class MemberDetailVO implements Serializable {
|
||||||
|
/**
|
||||||
|
* 店铺信息
|
||||||
|
*/
|
||||||
|
private ShopInfo shopInfo;
|
||||||
|
/**
|
||||||
|
* 当前会员等级信息
|
||||||
|
*/
|
||||||
|
private MemberLevelVO memberLevel;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 距离下一等级经验值
|
||||||
|
*/
|
||||||
|
private Long nextExperienceValue;
|
||||||
|
/**
|
||||||
|
* 当前经验值
|
||||||
|
*/
|
||||||
|
private Long experience;
|
||||||
|
/**
|
||||||
|
* 到期时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime endTime;
|
||||||
|
}
|
||||||
|
|
@ -84,5 +84,8 @@ public class MemberLevelVO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否消费增积分
|
||||||
|
*/
|
||||||
private Integer isCostRewardPoints;
|
private Integer isCostRewardPoints;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.czg.market.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class MemberListVO implements Serializable {
|
||||||
|
private String logo;
|
||||||
|
private Long shopId;
|
||||||
|
private String shopName;
|
||||||
|
}
|
||||||
|
|
@ -15,8 +15,10 @@ import com.czg.account.service.*;
|
||||||
import com.czg.market.entity.*;
|
import com.czg.market.entity.*;
|
||||||
import com.czg.market.service.*;
|
import com.czg.market.service.*;
|
||||||
import com.czg.market.vo.MemberConfigVO;
|
import com.czg.market.vo.MemberConfigVO;
|
||||||
|
import com.czg.market.vo.MemberDetailVO;
|
||||||
import com.czg.market.vo.MemberLevelVO;
|
import com.czg.market.vo.MemberLevelVO;
|
||||||
import com.czg.exception.ApiNotPrintException;
|
import com.czg.exception.ApiNotPrintException;
|
||||||
|
import com.czg.market.vo.MemberListVO;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
import com.czg.order.entity.OrderPayment;
|
import com.czg.order.entity.OrderPayment;
|
||||||
import com.czg.order.service.OrderInfoService;
|
import com.czg.order.service.OrderInfoService;
|
||||||
|
|
@ -36,9 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员基础配置 服务层实现。
|
* 会员基础配置 服务层实现。
|
||||||
|
|
@ -69,6 +70,8 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
||||||
private MemberExpFlowService memberExpFlowService;
|
private MemberExpFlowService memberExpFlowService;
|
||||||
@Resource
|
@Resource
|
||||||
private MkShopCouponRecordService shopCouponRecordService;
|
private MkShopCouponRecordService shopCouponRecordService;
|
||||||
|
@DubboReference
|
||||||
|
private ShopInfoService shopInfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MemberConfigVO detail(Long shopId) {
|
public MemberConfigVO detail(Long shopId) {
|
||||||
|
|
@ -414,4 +417,40 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
|
||||||
shopUser.setIsVip(1);
|
shopUser.setIsVip(1);
|
||||||
return shopUserService.updateById(shopUser);
|
return shopUserService.updateById(shopUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MemberListVO> getMemberList(Long userId) {
|
||||||
|
List<ShopUser> shopUsers = shopUserService.list(new QueryWrapper().eq(ShopUser::getUserId, userId));
|
||||||
|
Set<Long> shopIdList = shopUsers.stream().map(ShopUser::getSourceShopId).collect(Collectors.toSet());
|
||||||
|
Map<Long, ShopInfo> shopInfoMap = shopInfoService.list(new QueryWrapper().in(ShopInfo::getId, shopIdList)).stream().collect(Collectors.toMap(ShopInfo::getId, item -> item));
|
||||||
|
ArrayList<MemberListVO> memberListVOS = new ArrayList<>();
|
||||||
|
shopUsers.forEach(shopUser -> {
|
||||||
|
if (shopUser.getStartTime() != null && shopUser.getEndTime() != null && DateUtil.isIn(DateUtil.date(), DateUtil.date(shopUser.getStartTime()), DateUtil.date(shopUser.getEndTime()))) {
|
||||||
|
ShopInfo shopInfo = shopInfoMap.getOrDefault(shopUser.getSourceShopId(), new ShopInfo());
|
||||||
|
memberListVOS.add(new MemberListVO().setShopName(shopInfo.getShopName())
|
||||||
|
.setShopId(shopInfo.getId())
|
||||||
|
.setLogo(shopInfo.getLogo()));
|
||||||
|
}else {
|
||||||
|
shopUser.setIsVip(0);
|
||||||
|
shopUserService.updateById(shopUser);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return memberListVOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberDetailVO getUserDetail(Long userId, Long shopId) {
|
||||||
|
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getUserId, userId).eq(ShopUser::getSourceShopId, shopId));
|
||||||
|
ShopInfo shopInfo = shopInfoService.getById(shopUser.getSourceShopId());
|
||||||
|
MemberLevelVO levelVO = levelConfigService.detail(shopUser.getMemberLevelId());
|
||||||
|
MemberLevelConfig nextLevel = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).ge(MemberLevelConfig::getExperienceValue, shopUser.getExperience())
|
||||||
|
.ne(MemberLevelConfig::getId, shopUser.getId()).orderBy(MemberLevelConfig::getExperienceValue, true));
|
||||||
|
return new MemberDetailVO()
|
||||||
|
.setShopInfo(shopInfo)
|
||||||
|
.setMemberLevel(levelVO)
|
||||||
|
.setExperience(shopUser.getExperience())
|
||||||
|
.setEndTime(shopUser.getEndTime())
|
||||||
|
.setNextExperienceValue(nextLevel.getExperienceValue() - shopUser.getExperience());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue