From 237dc82b539966a08fca13bbedbeaafd0822aff2 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Tue, 07 May 2024 15:43:01 +0800
Subject: [PATCH] 我的团队、商品的类别
---
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 6 +
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java | 1
src/main/resources/templates/febs/views/modules/product/categoryAdd.html | 7 +
src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java | 12 +
src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java | 106 +++++++++--------
src/main/resources/mapper/modules/MallMemberMapper.xml | 26 ++--
src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java | 1
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 4
src/main/resources/templates/febs/views/modules/product/categoryList.html | 1
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2
src/main/java/cc/mrbird/febs/mall/entity/MallMemberLevel.java | 20 +++
src/main/java/cc/mrbird/febs/mall/dto/ApiLevelUpdateDto.java | 26 ++++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 73 ++++++++++++
src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java | 43 ++----
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 8 +
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 6 +
src/main/resources/application-dev.yml | 6
src/main/resources/application.yml | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberLevelMapper.java | 7 +
19 files changed, 255 insertions(+), 102 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 4f00b80..a33213c 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,12 @@
@Getter
public enum DataDictionaryEnum {
+ // 用户层级
+ MEMBER_LEVEL_ONE("MEMBER_LEVEL_CODE", "MEMBER_LEVEL_ONE"),
+ MEMBER_LEVEL_TWO("MEMBER_LEVEL_CODE", "MEMBER_LEVEL_TWO"),
+ // 用户佣金比例最小最大值
+ MEMBER_LEVEL_PERCENT_MIN("MEMBER_LEVEL_PERCENT_MIN", "MEMBER_LEVEL_PERCENT_MIN"),
+ MEMBER_LEVEL_PERCENT_MAX("MEMBER_LEVEL_PERCENT_MAX", "MEMBER_LEVEL_PERCENT_MAX"),
// 发票的通知回调路径
FP_CALLBACK_URL("FP_CALLBACK_URL", "FP_CALLBACK_URL"),
//微信订阅模板ID,
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java
index 1c8028d..1991e86 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java
@@ -8,6 +8,7 @@
/**
*
*/
+ LEVEL_PERK(4, "订单编号:{}的佣金"),
PAY(1, "积分支付"),
BUY(2, "购买商品获得积分"),
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index e588d9c..90acdef 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -88,6 +88,14 @@
return memberService.teamList(teamListDto);
}
+ @ApiOperation(value = "我的团队-更新用户层级和佣金比例")
+ @PostMapping(value = "/levelUpdate")
+ public FebsResponse levelUpdate(@RequestBody ApiLevelUpdateDto apiLevelUpdateDto) {
+ return memberService.levelUpdate(apiLevelUpdateDto);
+ }
+
+
+
@ApiOperation(value = "资金流水列表")
@ApiResponses({
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiLevelUpdateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiLevelUpdateDto.java
new file mode 100644
index 0000000..479afcd
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiLevelUpdateDto.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiLevelUpdateDto", description = "参数接收类")
+public class ApiLevelUpdateDto {
+
+
+ @NotNull(message = "层级ID不能为空")
+ @ApiModelProperty(value = "层级ID", example = "1")
+ private Long levelId;
+
+ @NotNull(message = "层级不能为空")
+ @ApiModelProperty(value = "层级", example = "1")
+ private Integer levelCode;
+
+ @NotNull(message = "佣金比例不能为空")
+ @ApiModelProperty(value = "佣金比例", example = "10")
+ private BigDecimal levelPercent;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberLevel.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberLevel.java
new file mode 100644
index 0000000..4e1c206
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberLevel.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@TableName("mall_member_level")
+public class MallMemberLevel extends BaseEntity {
+
+
+ private Long memberId;
+
+ private Integer levelCode;//等级编码
+
+ private BigDecimal levelPercent;//佣金比例
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberLevelMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberLevelMapper.java
new file mode 100644
index 0000000..dd1dac8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberLevelMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallMemberLevel;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallMemberLevelMapper extends BaseMapper<MallMemberLevel> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index 841527e..c64f6a1 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -84,6 +84,12 @@
@SqlParser(filter = true)
IPage<AdminGoodsStatisticsVo> getGoodsStatisticsInPage(Page<AdminGoodsStatisticsVo> page, @Param("record") MallOrderItem mallOrderItem);
+ /**
+ *
+ * @param inviteId
+ * @param type 1-查询自己 2-查询我的直推
+ * @return
+ */
BigDecimal selectAmountOrTeamAmount(@Param("inviteId") String inviteId, @Param("type") Integer type);
MallOrderInfo selectBypayOrderNo(@Param("payOrderNo")String payOrderNo);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index 48a2488..adf7b86 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -107,4 +107,6 @@
FebsResponse bindList();
FebsResponse bindResult(BindResultDto bindResultDto);
+
+ FebsResponse levelUpdate(ApiLevelUpdateDto apiLevelUpdateDto);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java
index 1201a68..5d5ff09 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallGoodsCategoryService.java
@@ -78,6 +78,7 @@
goodsCategory.setParentId(0L);
goodsCategory.setIsRecommend(mallGoodsCategory.getIsRecommend());
}
+ goodsCategory.setIndexNum(mallGoodsCategory.getIndexNum());
mallGoodsCategoryMapper.insert(goodsCategory);
return new FebsResponse().success();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 18dd2a9..0d2c1c5 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -95,6 +95,7 @@
private final MallStoreMapper mallStoreMapper;
private final MallStoreItemMapper mallStoreItemMapper;
private final MallStoreMemberMapper mallStoreMemberMapper;
+ private final MallMemberLevelMapper mallMemberLevelMapper;
@Value("${spring.profiles.active}")
@@ -379,12 +380,30 @@
MallMember mallMember = this.baseMapper.selectById(memberId);
List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId());
+ if(CollUtil.isNotEmpty(list)){
+ for(TeamListVo teamListVo : list){
+ String levelName = "";
+ if(1 == teamListVo.getLevelCode()){
+ levelName = "一级";
+ }else if(2 == teamListVo.getLevelCode()){
+ levelName = "二级";
+ }
+ teamListVo.setLevelName(levelName);
+ }
+ }
+
+ QueryWrapper<MallMemberLevel> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("member_id",memberId);
+ MallMemberLevel mallMemberLevel = mallMemberLevelMapper.selectOne(queryWrapper);
MyTeamVo myTeamVo = new MyTeamVo();
+ myTeamVo.setLevelPercent(mallMemberLevel.getLevelPercent());
+ myTeamVo.setLevelCode(mallMemberLevel.getLevelCode());
myTeamVo.setTeam(list);
myTeamVo.setMyAchieve(this.mallOrderInfoMapper.selectAmountOrTeamAmount(mallMember.getInviteId(), 1));
myTeamVo.setMyTeamAchieve(this.mallOrderInfoMapper.selectAmountOrTeamAmount(mallMember.getInviteId(), 2));
- myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size());
+ List<MallMember> mallMembers = this.baseMapper.selectChildAgentListByInviteId(mallMember.getInviteId());
+ myTeamVo.setMyTeamCnt(CollUtil.isEmpty(mallMembers) ? 0 : mallMembers.size());
return new FebsResponse().success().data(myTeamVo);
}
@@ -674,6 +693,12 @@
}
}
this.baseMapper.insert(mallMember);
+
+ MallMemberLevel mallMemberLevel = new MallMemberLevel();
+ mallMemberLevel.setMemberId(mallMember.getId());
+ mallMemberLevel.setLevelCode(0);
+ mallMemberLevel.setLevelPercent(BigDecimal.ZERO);
+ mallMemberLevelMapper.insert(mallMemberLevel);
mallMember = this.baseMapper.selectMemberByOpenId(openId);
String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId());
@@ -1307,6 +1332,52 @@
return new FebsResponse().success().data(data);
}
+ @Override
+ public FebsResponse levelUpdate(ApiLevelUpdateDto apiLevelUpdateDto) {
+ Long levelId = apiLevelUpdateDto.getLevelId();
+ MallMemberLevel mallMemberLevel = mallMemberLevelMapper.selectById(levelId);
+ if(ObjectUtil.isEmpty(mallMemberLevel)){
+ throw new FebsException("记录不存在");
+ }
+
+ DataDictionaryCustom memberLevelOneDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.MEMBER_LEVEL_ONE.getType(),
+ DataDictionaryEnum.MEMBER_LEVEL_ONE.getCode()
+ );
+ if(Integer.parseInt(memberLevelOneDic.getValue()) != mallMemberLevel.getLevelCode()){
+ throw new FebsException(StrUtil.format("{}才能设置层级和佣金比例}", memberLevelOneDic.getDescription()));
+ }
+
+ DataDictionaryCustom memberLevelTwoDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.MEMBER_LEVEL_TWO.getType(),
+ DataDictionaryEnum.MEMBER_LEVEL_TWO.getCode()
+ );
+ Integer levelCode = apiLevelUpdateDto.getLevelCode();
+ if(Integer.parseInt(memberLevelTwoDic.getValue()) != levelCode){
+ throw new FebsException(StrUtil.format("当前用户只能设置{}}", memberLevelTwoDic.getDescription()));
+ }
+
+ DataDictionaryCustom minPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.MEMBER_LEVEL_PERCENT_MIN.getType(),
+ DataDictionaryEnum.MEMBER_LEVEL_PERCENT_MIN.getCode()
+ );
+ DataDictionaryCustom maxPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.MEMBER_LEVEL_PERCENT_MAX.getType(),
+ DataDictionaryEnum.MEMBER_LEVEL_PERCENT_MAX.getCode()
+ );
+ BigDecimal minPercent = new BigDecimal(minPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal maxPercent = new BigDecimal(maxPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal levelPercent = apiLevelUpdateDto.getLevelPercent();
+ if(levelPercent.compareTo(minPercent) < 0 || levelPercent.compareTo(maxPercent) > 0){
+ throw new FebsException(StrUtil.format("佣金比例必须在{}和{}之间。", minPercent,maxPercent));
+ }
+
+ mallMemberLevel.setLevelCode(levelCode);
+ mallMemberLevel.setLevelPercent(levelPercent);
+ mallMemberLevelMapper.updateById(mallMemberLevel);
+ return new FebsResponse().success().message("操作成功");
+ }
+
public static void main(String[] args) {
Long userld = 173L;
String shopAccount = "luohu";
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
index 0bd7bfc..79e1674 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
@@ -11,15 +11,21 @@
@ApiModel(value = "MyTeamVo", description = "我的团队返回参数类")
public class MyTeamVo {
- @ApiModelProperty(value = "我的业绩")
+ @ApiModelProperty(value = "个人业绩")
private BigDecimal myAchieve;
- @ApiModelProperty(value = "我的团队业绩")
+ @ApiModelProperty(value = "团队业绩")
private BigDecimal myTeamAchieve;
- @ApiModelProperty(value = "团队数量")
+ @ApiModelProperty(value = "团队总数")
private int myTeamCnt;
+ @ApiModelProperty(value = "层级编码 1-可以设置团队的佣金比例和层级 2-不能设置")
+ private Integer levelCode;
+
+ @ApiModelProperty(value = "佣金比例")
+ private BigDecimal levelPercent;
+
@ApiModelProperty(value = "团队列表")
private List<TeamListVo> team;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
index f49e4aa..d62a1e6 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
@@ -19,45 +19,34 @@
@ApiModelProperty(value = "用户ID")
private Long id;
- @ApiModelProperty(value = "邀请码")
- private String inviteId;
-
- @ApiModelProperty(value = "昵称")
- private String name;
+ @ApiModelProperty(value = "等级ID")
+ private Long levelId;
@ApiModelProperty(value = "头像")
private String avatar;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ApiModelProperty(value = "注册时间")
- private Date createTime;
-
- @ApiModelProperty(value = "手机号")
- private String phone;
-
- @ApiModelProperty(value = "金额")
- private BigDecimal amount;
-
- @ApiModelProperty(value = "订单数量")
- private Integer orderCnt;
-
- @ApiModelProperty(value = "团队数量")
- private Integer cnt;
+ @ApiModelProperty(value = "昵称")
+ private String name;
@ApiModelProperty(value = "注册时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createdTime;
- @ApiModelProperty(value = "是否当前用户 1-是")
- private Integer isCurrent;
+ @ApiModelProperty(value = "手机号")
+ private String phone;
- @ApiModelProperty(value = "竞猜积分")
- private BigDecimal prizeScore;
+ @ApiModelProperty(value = "层级编码")
+ private Integer levelCode;
- @ApiModelProperty(value = "用户等级")
+ @ApiModelProperty(value = "层级")
private String levelName;
- @ApiModelProperty(value = "自己下单数量")
- private Integer selfOrderCnt;
+ @ApiModelProperty(value = "佣金比例")
+ private BigDecimal levelPercent;
+ @ApiModelProperty(value = "推荐人数")
+ private Integer cnt;
+
+ @ApiModelProperty(value = "消费金额")
+ private BigDecimal amount;
}
diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
index d514a17..728157d 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java
@@ -3,10 +3,8 @@
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
-import cc.mrbird.febs.mall.entity.MallGoods;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallOrderInfo;
-import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.MallMemberLevelMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.service.IApiMallGoodsService;
@@ -21,8 +19,10 @@
import cc.mrbird.febs.vip.service.IVipCommonService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -50,6 +50,7 @@
private final MallVipConfigMapper mallVipConfigMapper;
private final AgentProducer agentProducer;
private final IApiMallGoodsService mallGoodsService;
+ private final MallMemberLevelMapper mallMemberLevelMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -58,60 +59,61 @@
if (mallOrderInfo == null) {
return;
}
+ BigDecimal amount = mallOrderInfo.getAmount();
Long memberId = mallOrderInfo.getMemberId();
- MallVipBenefits mallVipBenefits = mallVipConfigService.hasVipBenefits(memberId);
-
MallMember member = mallMemberMapper.selectById(memberId);
- BigDecimal multiple = BigDecimal.ONE;
- String name = "";
- if (mallVipBenefits != null) {
- multiple = mallVipBenefits.getScoreMultiple();
- name = mallVipBenefits.getName();
+ /**
+ * 一级返佣
+ */
+ String referrerId = member.getReferrerId();
+ if(StrUtil.isEmpty(referrerId)){
+ return;
+ }
+ MallMember mallMemberRef = mallMemberMapper.selectInfoByInviteId(referrerId);
+ QueryWrapper<MallMemberLevel> mallMemberLevelQueryWrapper = new QueryWrapper<>();
+ mallMemberLevelQueryWrapper.eq("member_id",mallMemberRef.getId());
+ MallMemberLevel mallMemberLevelRef = mallMemberLevelMapper.selectOne(mallMemberLevelQueryWrapper);
+ if(ObjectUtil.isNotEmpty(mallMemberLevelRef)){
+ BigDecimal levelPercent = mallMemberLevelRef.getLevelPercent();
+
+ BigDecimal refAmount = amount.multiply(levelPercent.multiply(new BigDecimal(0.01))).setScale(2, BigDecimal.ROUND_DOWN);
+ mallMemberWalletService.addBalance(refAmount,mallMemberRef.getId());
+ mallMoneyFlowService.addMoneyFlow(
+ mallMemberRef.getId(),
+ refAmount,
+ ScoreFlowTypeEnum.LEVEL_PERK.getValue(),
+ mallOrderInfo.getOrderNo(),
+ FlowTypeEnum.BALANCE.getValue(),
+ StrUtil.format(ScoreFlowTypeEnum.LEVEL_PERK.getDesc(),mallOrderInfo.getOrderNo()),
+ 2);
}
- List<String> skuNames = mallOrderInfo.getItems().stream().map(MallOrderItem::getSkuName).collect(Collectors.toList());
- double sum = mallOrderInfo.getItems().stream().map(MallOrderItem::getAmount).mapToDouble(BigDecimal::doubleValue).sum();
+ /**
+ * 两级返佣
+ */
+ String referrerIdRef = mallMemberRef.getReferrerId();
+ if(StrUtil.isEmpty(referrerIdRef)){
+ return;
+ }
+ MallMember mallMemberRefTwo = mallMemberMapper.selectInfoByInviteId(referrerIdRef);
+ QueryWrapper<MallMemberLevel> mallMemberLevelQueryWrapperTwo = new QueryWrapper<>();
+ mallMemberLevelQueryWrapperTwo.eq("member_id",mallMemberRefTwo.getId());
+ MallMemberLevel mallMemberLevelRefTwo = mallMemberLevelMapper.selectOne(mallMemberLevelQueryWrapperTwo);
+ if(ObjectUtil.isNotEmpty(mallMemberLevelRefTwo)){
+ BigDecimal levelPercentTwo = mallMemberLevelRefTwo.getLevelPercent();
- int score = multiple.multiply(BigDecimal.valueOf(sum)).intValue();
-
- mallMoneyFlowService.addMoneyFlow(memberId, new BigDecimal(score), ScoreFlowTypeEnum.BUY.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue(), CollUtil.join(skuNames, ","), 2);
- mallMemberWalletService.add(new BigDecimal(score), memberId, "prizeScore");
-
- List<Long> itemGoodsIds = mallOrderInfo.getItems().stream().map(MallOrderItem::getGoodsId).distinct().collect(Collectors.toList());
- List<MallGoods> goodsList = mallGoodsService.listByIds(itemGoodsIds);
- Map<Long, MallGoods> goodsMap = goodsList.stream().collect(Collectors.toMap(MallGoods::getId, MallGoods -> MallGoods));
-
- Map<Long, BigDecimal> recommendScoreMap = new HashMap<>();
- mallOrderInfo.getItems().forEach(item -> {
- if (StrUtil.isNotBlank(item.getMemberInviteId()) && !member.getInviteId().equals(item.getMemberInviteId())) {
- MallGoods mallGoods = goodsMap.get(item.getGoodsId());
- if (mallGoods.getStaticMulti() == null) {
- return;
- }
-
- BigDecimal multi = mallGoods.getStaticMulti().divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
- MallMember mallMember = mallMemberMapper.selectInfoByInviteId(item.getMemberInviteId());
- if (mallMember == null) {
- return;
- }
-
- BigDecimal recommendScore = recommendScoreMap.get(mallMember.getId());
- recommendScore = recommendScore == null ? BigDecimal.ZERO : recommendScore;
- recommendScore = recommendScore.add(item.getAmount().multiply(multi));
-
- recommendScoreMap.put(mallMember.getId(), recommendScore);
- }
- });
-
- recommendScoreMap.forEach((key, value) -> {
- if (value != null) {
- mallMoneyFlowService.addMoneyFlow(key, value, ScoreFlowTypeEnum.RECOMMEND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue(), CollUtil.join(skuNames, ","), 2);
- mallMemberWalletService.add(value, key, "prizeScore");
- }
- });
-
- agentProducer.sendVipLevelUp(orderId);
+ BigDecimal refAmountTwo = amount.multiply(levelPercentTwo.multiply(new BigDecimal(0.01))).setScale(2, BigDecimal.ROUND_DOWN);
+ mallMemberWalletService.addBalance(refAmountTwo,mallMemberRefTwo.getId());
+ mallMoneyFlowService.addMoneyFlow(
+ mallMemberRefTwo.getId(),
+ refAmountTwo,
+ ScoreFlowTypeEnum.LEVEL_PERK.getValue(),
+ mallOrderInfo.getOrderNo(),
+ FlowTypeEnum.BALANCE.getValue(),
+ StrUtil.format(ScoreFlowTypeEnum.LEVEL_PERK.getDesc(),mallOrderInfo.getOrderNo()),
+ 2);
+ }
}
@Override
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index a3d7d38..c38296f 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -15,10 +15,10 @@
datasource:
# 数据源-1,名称为 base
base:
- username: db_blnka
- password: blnka!@#123
+ username: store_basic
+ password: store_basic321
driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://121.37.162.173:3306/db_blnka?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
+ url: jdbc:mysql://120.27.238.55:3406/store_basic?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
redis:
# Redis数据库索引(默认为 0)
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f1ab545..27b958e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@
spring:
profiles:
- active: test
+ active: dev
servlet:
multipart:
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 405cf4f..9d05a0e 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -80,23 +80,23 @@
<select id="selectTeamListByInviteId" resultType="cc.mrbird.febs.mall.vo.TeamListVo">
select
a.id,
- a.name,
- a.phone,
- a.invite_id,
- 2 isCurrent,
- a.created_time,
a.avatar,
- (select count(1) from mall_order_info orderInfo
- where orderInfo.status in (2, 3, 4) and orderInfo.member_id=a.id) selfOrderCnt,
+ a.name,
+ a.created_time,
+ a.phone,
+ b.id levelId,
+ b.level_code levelCode,
+ b.level_percent levelPercent,
(select sum(e.amount)
from mall_order_info e
- inner join mall_member b on e.member_id=b.ID
- where e.status in (2, 3, 4) and e.order_type=1 and (b.invite_id=a.invite_id or b.referrer_id=a.invite_id)) amount,
- (select count(1) from mall_member e
- inner join mall_order_info b on e.id=b.member_id and b.status in (2, 3, 4)
- where find_in_set(a.invite_id, e.referrer_ids) or a.invite_id=e.invite_id) orderCnt,
- (select count(1) from mall_member x where find_in_set(a.invite_id, x.referrer_ids)) cnt
+ inner join mall_member c on e.member_id = c.id
+ where e.status = 4
+ and c.referrer_id = a.invite_id) amount,
+ (select count(1)
+ from mall_member x
+ where x.referrer_id = a.invite_id) cnt
from mall_member a
+ left join mall_member_level b on a.id = b.member_id
where a.referrer_id=#{inviteId}
</select>
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 9e7f9e6..d2f0556 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -458,12 +458,12 @@
select IFNULL(sum(IFNULL(a.amount,0)),0) from mall_order_info a
inner join mall_member b on a.member_id=b.ID
<where>
- a.status in (2,3,4)
+ a.status = 4
<if test="type == 1">
and b.invite_id=#{inviteId}
</if>
<if test="type == 2">
- and FIND_IN_SET(#{inviteId},b.referrer_ids)
+ and b.referrer_id=#{inviteId}
</if>
</where>
</select>
diff --git a/src/main/resources/templates/febs/views/modules/product/categoryAdd.html b/src/main/resources/templates/febs/views/modules/product/categoryAdd.html
index 6803957..9ab63c7 100644
--- a/src/main/resources/templates/febs/views/modules/product/categoryAdd.html
+++ b/src/main/resources/templates/febs/views/modules/product/categoryAdd.html
@@ -72,6 +72,13 @@
<input type="radio" name="isRecommend" value="2" title="否" checked="">
</div>
</div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">排序:</label>
+ <div class="layui-input-block">
+ <input type="number" name="indexNum"
+ lay-verify="indexNum" autocomplete="off" class="layui-input" >
+ </div>
+ </div>
<div class="layui-form-item febs-hide">
<button class="layui-btn" lay-submit="" lay-filter="categary-add-form-submit" id="submit"></button>
</div>
diff --git a/src/main/resources/templates/febs/views/modules/product/categoryList.html b/src/main/resources/templates/febs/views/modules/product/categoryList.html
index 6be61b3..a20e0fd 100644
--- a/src/main/resources/templates/febs/views/modules/product/categoryList.html
+++ b/src/main/resources/templates/febs/views/modules/product/categoryList.html
@@ -153,6 +153,7 @@
id: 'userTable',
url: ctx + 'admin/goodsCategory/categoryList',
cols: [[
+ {type: 'numbers'},
{field: 'name', title: '名称', minWidth: 150,align:'left'},
{field: 'parentName', title: '父级名称', minWidth: 150,align:'left'},
{field: 'image', title: '图片',
--
Gitblit v1.9.1