From fc1f912905287cd1ff9f81207f05f158301f7563 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 15 Jun 2022 19:05:17 +0800
Subject: [PATCH] fix some problem
---
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 6
src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html | 1
src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java | 93 +++++++++
src/main/resources/mapper/modules/MallAchieveRecordMapper.xml | 5
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 2
src/main/java/cc/mrbird/febs/mall/service/IMallAchieveService.java | 9
src/test/java/cc/mrbird/febs/ProfitTest.java | 30 +++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 7
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 36 +++
src/main/resources/mapper/modules/MallMemberMapper.xml | 61 +++--
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 35 ++
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 7
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 27 ++
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 45 ++++
src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java | 5
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 10 +
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 3
src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java | 7
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 113 ++++++++++-
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 5
src/main/java/cc/mrbird/febs/mall/service/impl/MallAchieveServiceImpl.java | 50 +++++
src/main/java/cc/mrbird/febs/mall/entity/MallAchieveRecord.java | 33 +++
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java | 2
23 files changed, 531 insertions(+), 61 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 a172447..ae23dd7 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -12,6 +12,9 @@
INDRECT_BONUS("BONUS_TYPE", "INDRECT_BONUS"),
AGENT_BONUS("BONUS_TYPE", "AGENT_BONUS"),
THANKFUL_BONUS("BONUS_TYPE", "THANKFUL_BONUS"),
+ DIRECTOR_BONUS("BONUS_TYPE", "DIRECTOR_BONUS"),
+ COMMUNITY_BONUS("BONUS_TYPE", "COMMUNITY_BONUS"),
+
//积分中奖概率
WIN_SCORE("WIN_PROBABILITY", "WIN_SCORE"),
//佣金中奖概率
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
index 9c3f041..215b2cd 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -14,6 +14,7 @@
import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -34,6 +35,7 @@
/**
* 平台账单
+ *
* @param mallMember
* @param request
* @return
@@ -46,6 +48,7 @@
/**
* 会员列表
+ *
* @param mallMember
* @param request
* @return
@@ -58,6 +61,7 @@
/**
* 会员列表---禁止
+ *
* @param id
* @return
*/
@@ -69,6 +73,7 @@
/**
* 会员列表---开启
+ *
* @param id
* @return
*/
@@ -78,13 +83,25 @@
return mallMemberService.openAccount(id);
}
+ @GetMapping("changeIdentityYes/{type}/{id}")
+ public FebsResponse changeIdentityYes(@PathVariable("type") Integer type, @PathVariable("id") Long id) {
+ mallMemberService.changeIdentity(type, id, 1);
+ return new FebsResponse().success();
+ }
+
+ @GetMapping("changeIdentityNo/{type}/{id}")
+ public FebsResponse changeIdentityNo(@PathVariable("type") Integer type, @PathVariable("id") Long id) {
+ mallMemberService.changeIdentity(type, id, 2);
+ return new FebsResponse().success();
+ }
+
/**
* 会员列表-资金流水
*/
@GetMapping("/moneyFlow")
public FebsResponse moneyFlow(QueryRequest request, MallMember mallMember, Integer parentId) {
- if(parentId==null){
- ViewMallMemberController.idFromMoneyFlow=0;
+ if (parentId == null) {
+ ViewMallMemberController.idFromMoneyFlow = 0;
}
mallMember.setId(ViewMallMemberController.idFromMoneyFlow);
Map<String, Object> dataTable = getDataTable(mallMemberService.moneyFlow(request, mallMember));
@@ -111,6 +128,7 @@
/**
* 资金流水-列表
+ *
* @param moneyFlowListDto
* @param request
* @return
@@ -123,6 +141,7 @@
/**
* 会员提现-列表
+ *
* @param moneyChargeListDto
* @param request
* @return
@@ -135,6 +154,7 @@
/**
* 会员提现-同意
+ *
* @param id
* @return
*/
@@ -146,6 +166,7 @@
/**
* 会员提现-拒绝
+ *
* @param id
* @return
*/
@@ -157,6 +178,7 @@
/**
* 代理列表
+ *
* @param agentDto
* @param request
* @return
@@ -169,6 +191,7 @@
/**
* 代理级别-列表
+ *
* @param agentLevelDto
* @param request
* @return
@@ -193,7 +216,7 @@
*/
@GetMapping("getAgentLevelOption/tree")
@ControllerEndpoint(exceptionMessage = "获取等级失败")
- public List<AdminAgentLevelOptionTreeVo> getAgentLevelOption(){
+ public List<AdminAgentLevelOptionTreeVo> getAgentLevelOption() {
return mallMemberService.getAgentLevelOption();
}
@@ -203,8 +226,8 @@
*/
@GetMapping("/agentChild")
public FebsResponse agentChild(QueryRequest request, MallMember mallMember, Integer parentId) {
- if(parentId==null){
- ViewMallMemberController.idFromAgentAllMember=0;
+ if (parentId == null) {
+ ViewMallMemberController.idFromAgentAllMember = 0;
}
mallMember.setId(ViewMallMemberController.idFromAgentAllMember);
Map<String, Object> dataTable = getDataTable(mallMemberService.agentChild(request, mallMember));
@@ -213,6 +236,7 @@
/**
* 代理列表---激活
+ *
* @param id
* @return
*/
@@ -233,6 +257,7 @@
/**
* 奖励设置-列表
+ *
* @param rankAwardDto
* @param request
* @return
@@ -254,6 +279,7 @@
/**
* App版本-列表
+ *
* @param appVersion
* @param request
* @return
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallAchieveRecord.java b/src/main/java/cc/mrbird/febs/mall/entity/MallAchieveRecord.java
new file mode 100644
index 0000000..81c7a79
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallAchieveRecord.java
@@ -0,0 +1,33 @@
+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;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2022-06-15
+ **/
+@Data
+@TableName("mall_achieve_record")
+public class MallAchieveRecord extends BaseEntity {
+
+ private Long memberId;
+
+ private BigDecimal amount;
+
+ private BigDecimal costAmount;
+
+ private Date achieveTime;
+
+ private Long orderId;
+
+ private Long orderItemId;
+
+ private Integer isNormal;
+
+ private Date payTime;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index 33d1d25..0deba36 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -122,4 +122,14 @@
@TableField(exist = false)
private String levelName;
+ /**
+ * 董事
+ */
+ private Integer director;
+
+ /**
+ * 店长
+ */
+ private Integer storeMaster;
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
index 0a52615..833a188 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java
@@ -37,4 +37,9 @@
private BigDecimal costPrice;
private Integer isNormal;
+
+ /**
+ * 是否结清
+ */
+ private Integer hasSettle;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java
new file mode 100644
index 0000000..85e4ca9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.MallAchieveRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface MallAchieveRecordMapper extends BaseMapper<MallAchieveRecord> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index 4470b42..b48d370 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -81,4 +81,6 @@
List<MallMember> selectMemberListHasChild();
List<MallMember> selectMemberDirectForHasLevel(@Param("inviteId") String inviteId);
+
+ List<MallMember> selectDirectorsOrStoreMaster(@Param("type") Integer type);
}
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 3db8173..568c99a 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -51,7 +51,11 @@
BigDecimal selectTotalAmountForDate(@Param("date") Date date, @Param("member") Long memberId);
- BigDecimal selectTotalAmountUnCostForDate(@Param("date") Date date, @Param("member") Long memberId, @Param("type") String type);
+ BigDecimal selectTotalAmountUnCostForDate(@Param("date") Date date, @Param("member") Long memberId, @Param("dateType") String dateType, @Param("isNormal") Integer isNormal);
MallOrderInfo selectByOrderNo(@Param("orderNo") String orderNo);
+
+ int updateOrderConfirmStatus(@Param("date") Date date);
+
+ List<MallOrderInfo> selectOrderInfoWithNormalGoods(@Param("date") Date date);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java
new file mode 100644
index 0000000..2906b05
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderSettlementJob.java
@@ -0,0 +1,93 @@
+package cc.mrbird.febs.mall.quartz;
+
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.mall.entity.MallGoodsSku;
+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.mapper.MallGoodsSkuMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cc.mrbird.febs.mall.service.IMemberProfitService;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2022-06-15
+ **/
+@Slf4j
+@Component
+public class OrderSettlementJob {
+
+ @Autowired
+ private MallOrderInfoMapper mallOrderInfoMapper;
+
+ @Autowired
+ private IApiMallMemberWalletService memberWalletService;
+
+ @Autowired
+ private IMallMoneyFlowService mallMoneyFlowService;
+
+ @Autowired
+ private MallMemberMapper mallMemberMapper;
+
+ @Autowired
+ private MallGoodsSkuMapper mallGoodsSkuMapper;
+
+ @Autowired
+ private IMemberProfitService memberProfitService;
+
+ /**
+ * 普通商品结算
+ */
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void normalGoodsSettlementJob() {
+ log.info("普通商品结算");
+ List<MallOrderInfo> orderInfos = mallOrderInfoMapper.selectOrderInfoWithNormalGoods(DateUtil.offsetDay(new Date(), -10));
+ if (CollUtil.isEmpty(orderInfos)) {
+ return;
+ }
+
+ for (MallOrderInfo orderInfo : orderInfos) {
+ MallMember member = mallMemberMapper.selectById(orderInfo.getMemberId());
+ if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
+ continue;
+ }
+
+ for (MallOrderItem item : orderInfo.getItems()) {
+ MallGoodsSku sku = mallGoodsSkuMapper.selectById(item.getSkuId());
+ BigDecimal score = sku.getPresentPrice();
+
+ memberWalletService.add(score, member.getId(), "score");
+ mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
+ }
+
+ // 普通商品动态分红结算
+ memberProfitService.dynamicProfit(orderInfo.getId(), 1);
+ }
+ }
+
+ /**
+ * 自动确认收货
+ */
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void orderAutoConfirmJob() {
+ log.info("自动确认收货");
+ mallOrderInfoMapper.updateOrderConfirmStatus(DateUtil.offsetDay(new Date(), -7));
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
index aa97eb0..19fe2ad 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -45,6 +45,11 @@
memberProfitService.agentProfit(null);
}
+ @Scheduled(cron = "0 30 1 * * ?")
+ public void storeAndDirectorJob() {
+ memberProfitService.storeAndDirectorProfit(null);
+ }
+
/**
* 感恩奖
*/
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
index 35c6b67..bb75da6 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -22,6 +22,8 @@
FebsResponse openAccount(@NotNull(message = "{required}") Long id);
+ void changeIdentity(Integer type, Long id, Integer value);
+
MallMemberVo getMallMemberInfoById(@NotNull(message = "{required}") long id);
IPage<AdminMallMoneyFlowVo> moneyFlow(QueryRequest request, MallMember mallMember);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallAchieveService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallAchieveService.java
new file mode 100644
index 0000000..e771e32
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallAchieveService.java
@@ -0,0 +1,9 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.mall.entity.MallAchieveRecord;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface IMallAchieveService extends IService<MallAchieveRecord> {
+
+ void add(Long orderItemId);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
index c4dccd5..6c5b161 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -18,6 +18,8 @@
*/
void dynamicProfit(Long orderId);
+ void dynamicProfit(Long orderId, Integer isNormal);
+
/**
* 代理分红
*/
@@ -32,4 +34,9 @@
* 感恩奖
*/
void thankfulProfit();
+
+ /**
+ * 店补/董事
+ */
+ void storeAndDirectorProfit(Date profitDate);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index 7dc3136..449fbd4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -96,6 +96,24 @@
}
@Override
+ public void changeIdentity(Integer type, Long id, Integer value) {
+ MallMember mallMember = mallMemberMapper.selectById(id);
+ if(mallMember == null) {
+ throw new FebsException("参数错误");
+ }
+
+ if (type == 1) {
+ mallMember.setDirector(value);
+ } else if (type == 2){
+ mallMember.setStoreMaster(value);
+ } else {
+ throw new FebsException("参数错误");
+ }
+
+ this.baseMapper.updateById(mallMember);
+ }
+
+ @Override
public MallMemberVo getMallMemberInfoById(long id) {
MallMemberVo mallMemberVo = mallMemberMapper.getMallMemberInfoById(id);
return mallMemberVo;
@@ -322,8 +340,9 @@
}
BigDecimal bigDecimal = mallSystemPayDto.getAddBalance();
+ boolean isReduce = false;
if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){
- return new FebsResponse().fail().message("拨付数目需要大于0");
+ isReduce = true;
}
Integer type = mallSystemPayDto.getType();
@@ -338,7 +357,11 @@
throw new FebsException("参数错误");
}
- iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
+ if (isReduce) {
+ iApiMallMemberWalletService.reduce(mallSystemPayDto.getAddBalance().negate(), mallSystemPayDto.getId(), filedType);
+ } else {
+ iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
+ }
mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type);
return new FebsResponse().success();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 320def2..7ef0eda 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -248,19 +248,12 @@
if (mallGoods.getIsNormal() == 2) {
hasTc = true;
score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti());
-
- // 普通商品1:1 返还积分
- } else {
- if (!AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
- score = sku.getPresentPrice();
- }
}
if (score.compareTo(BigDecimal.ZERO) > 0) {
memberWalletService.add(score, member.getId(), "score");
mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
}
-
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallAchieveServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallAchieveServiceImpl.java
new file mode 100644
index 0000000..c0bbe34
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallAchieveServiceImpl.java
@@ -0,0 +1,50 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.mall.entity.MallAchieveRecord;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
+import cc.mrbird.febs.mall.service.IMallAchieveService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2022-06-15
+ **/
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class MallAchieveServiceImpl extends ServiceImpl<MallAchieveRecordMapper, MallAchieveRecord> implements IMallAchieveService {
+
+ private final MallOrderItemMapper mallOrderItemMapper;
+ private final MallOrderInfoMapper mallOrderInfoMapper;
+
+ @Override
+ public void add(Long orderItemId) {
+ MallOrderItem item = mallOrderItemMapper.selectById(orderItemId);
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(item.getOrderId());
+
+ if (orderInfo.getOrderType() == 2) {
+ return;
+ }
+
+ MallAchieveRecord achieve = new MallAchieveRecord();
+ achieve.setMemberId(orderInfo.getMemberId());
+ achieve.setAchieveTime(item.getCreatedTime());
+ achieve.setAmount(item.getAmount());
+ achieve.setCostAmount(item.getCostPrice().multiply(BigDecimal.valueOf(item.getCnt())));
+ achieve.setOrderId(item.getOrderId());
+ achieve.setOrderItemId(item.getId());
+ achieve.setIsNormal(item.getIsNormal());
+ achieve.setPayTime(orderInfo.getPayTime());
+ this.baseMapper.insert(achieve);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index ab73e32..287b60e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cn.hutool.core.collection.CollUtil;
@@ -27,6 +28,7 @@
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* @author wzy
@@ -45,6 +47,7 @@
private final IMallMoneyFlowService moneyFlowService;
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final MallMoneyFlowMapper mallMoneyFlowMapper;
+ private final IMallAchieveService mallAchieveService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -56,7 +59,12 @@
}
Date profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- BigDecimal totalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D");
+ // 套餐业绩
+ BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2);
+ // 普通商品业绩
+ BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1);
+ BigDecimal totalIncome = tcIncome.add(normalIncome);
+
if (totalIncome.compareTo(BigDecimal.ZERO) == 0) {
return;
}
@@ -90,6 +98,11 @@
}
}
+ @Override
+ public void dynamicProfit(Long orderId) {
+ dynamicProfit(orderId, 2);
+ }
+
/**
* 直推20%,隔代收益为直推奖励金额的30%,a_b_c_d,d购买1000套餐,c得200,b得200*30%=60元,a得60*30%=18元。。。
* 以此类推,结算到一元为止。
@@ -98,7 +111,7 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public void dynamicProfit(Long orderId) {
+ public void dynamicProfit(Long orderId, Integer isNormal) {
log.info("######直推奖励, 订单ID:{}######", orderId);
MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(orderId);
if (orderInfo.getOrderType() == 2) {
@@ -126,9 +139,9 @@
continue;
}
- Integer isReturn = null;
- if (item.getIsNormal() == 1) {
- isReturn = 2;
+ // 判断套餐或者普通商品,结算对应商品的动态分红
+ if (!Objects.equals(item.getIsNormal(), isNormal)) {
+ continue;
}
// =======直推返利== start =====
@@ -146,7 +159,7 @@
walletService.add(dynamicProfit, parent.getId(), "commission");
- moneyFlowService.addMoneyFlow(parent.getId(), dynamicProfit, MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue(), isReturn);
+ moneyFlowService.addMoneyFlow(parent.getId(), dynamicProfit, MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue());
moneyFlowService.addMoneyFlow(parent.getId(), dynamicProfit.negate(), MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
// =======直推返利== end =====
@@ -196,10 +209,16 @@
}
walletService.add(direct, parentMember.getId(), "commission");
- moneyFlowService.addMoneyFlow(parentMember.getId(), direct, MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue(), isReturn);
+ moneyFlowService.addMoneyFlow(parentMember.getId(), direct, MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue());
moneyFlowService.addMoneyFlow(parentMember.getId(), direct.negate(), MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
}
// =======隔代奖== end =====
+
+ item.setHasSettle(1);
+ mallOrderItemMapper.updateById(item);
+
+ // 添加业绩
+ mallAchieveService.add(item.getId());
}
}
@@ -210,8 +229,11 @@
if (profitDate == null) {
profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
}
- BigDecimal totalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D");
-
+ // 套餐业绩
+ BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2);
+ // 普通商品业绩
+ BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1);
+ BigDecimal totalIncome = tcIncome.add(normalIncome);
DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS.getType(), DataDictionaryEnum.AGENT_BONUS.getCode());
BigDecimal profit = totalIncome.divide(new BigDecimal(dic.getValue()), 2, RoundingMode.HALF_UP);
@@ -262,7 +284,11 @@
return;
}
- BigDecimal totalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M");
+ // 套餐业绩
+ BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 2);
+ // 普通商品业绩
+ BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 1);
+ BigDecimal totalIncome = tcIncome.add(normalIncome);
List<DataDictionaryCustom> rankAward = dataDictionaryCustomMapper.selectDicByType("RANK_AWARD");
DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANK_BONUS.getType(), DataDictionaryEnum.RANK_BONUS.getCode());
@@ -312,11 +338,11 @@
}
BigDecimal reduceProfit = income.multiply(prop);
- if (reduceProfit.compareTo(BigDecimal.ZERO) > 0) {
+ if (reduceProfit.compareTo(BigDecimal.ZERO) < 1) {
continue;
}
- int reduce = walletService.reduce(reduceProfit.negate(), mallMember.getId(), "commission");
+ int reduce = walletService.reduce(reduceProfit, mallMember.getId(), "commission");
if (reduce == 2) {
continue;
}
@@ -328,7 +354,7 @@
continue;
}
- int reduce1 = walletService.reduce(preProfit.negate(), child.getId(), "score");
+ int reduce1 = walletService.reduce(preProfit, child.getId(), "score");
if (reduce1 == 2) {
continue;
}
@@ -340,4 +366,65 @@
}
log.info("######==感恩奖==end==####");
}
+
+ @Override
+ public void storeAndDirectorProfit(Date profitDate) {
+ log.info("#####==店补/董事==start==######");
+ if (profitDate == null) {
+ profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
+ }
+ // 套餐业绩
+ BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2);
+ // 普通商品业绩
+ BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1);
+ BigDecimal totalIncome = tcIncome.add(normalIncome);
+
+ // 董事
+ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECTOR_BONUS.getType(), DataDictionaryEnum.DIRECTOR_BONUS.getCode());
+ List<MallMember> directors = mallMemberMapper.selectDirectorsOrStoreMaster(1);
+ if (CollUtil.isNotEmpty(directors)) {
+ BigDecimal total = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+ BigDecimal pre = total.divide(new BigDecimal(directors.size()), 2, RoundingMode.HALF_UP);
+
+ for (MallMember director : directors) {
+ if (pre.compareTo(BigDecimal.ZERO) < 1) {
+ continue;
+ }
+
+ int reduce = walletService.reduce(pre, director.getId(), "score");
+ if (reduce == 2) {
+ continue;
+ }
+
+ walletService.add(pre, director.getId(), "commission");
+ moneyFlowService.addMoneyFlow(director.getId(), pre, MoneyFlowTypeEnum.DIRECTOR_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
+ moneyFlowService.addMoneyFlow(director.getId(), pre.negate(), MoneyFlowTypeEnum.DIRECTOR_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
+ }
+ }
+
+ // 店补
+ dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.COMMUNITY_BONUS.getType(), DataDictionaryEnum.COMMUNITY_BONUS.getCode());
+ List<MallMember> storeMasters = mallMemberMapper.selectDirectorsOrStoreMaster(2);
+ if (CollUtil.isNotEmpty(storeMasters)) {
+ BigDecimal total = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+ BigDecimal pre = total.divide(new BigDecimal(storeMasters.size()), 2, RoundingMode.HALF_UP);
+
+ for (MallMember storeMaster : storeMasters) {
+ if (pre.compareTo(BigDecimal.ZERO) < 1) {
+ continue;
+ }
+
+ int reduce = walletService.reduce(pre, storeMaster.getId(), "score");
+ if (reduce == 2) {
+ continue;
+ }
+
+ walletService.add(pre, storeMaster.getId(), "commission");
+ moneyFlowService.addMoneyFlow(storeMaster.getId(), pre, MoneyFlowTypeEnum.COMMUNITY_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
+ moneyFlowService.addMoneyFlow(storeMaster.getId(), pre.negate(), MoneyFlowTypeEnum.COMMUNITY_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
+ }
+ }
+
+ log.info("#####==店补/董事==end==######");
+ }
}
diff --git a/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml b/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
new file mode 100644
index 0000000..8a51fdc
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 30a114d..5ce313a 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -318,35 +318,34 @@
</select>
<!-- <select id="selectRankListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember">-->
-<!-- select * from (-->
-<!-- select a.id, a.name, a.invite_id, a.avatar, sum(b.amount) amount,max(order_time) orderTime from mall_member a, mall_order_info b-->
-<!-- where a.id=b.member_id and b.status = 4-->
-<!-- <!– 日 –>-->
-<!-- <if test="record.query == '1'">-->
-
-<!-- </if>-->
-<!-- <!– 月 –>-->
-<!-- <if test="record.query == '2'">-->
-<!-- and date_format(#{record.createdTime},'%Y-%m') = date_format(b.order_time,'%Y-%m')-->
-<!-- </if>-->
-<!-- <if test="record.amount != null">-->
-<!-- and amount = #{record.amount}-->
-<!-- </if>-->
-<!-- group by a.id-->
-<!-- ) a order by amount desc, a.orderTime desc-->
+<!-- select a.*, b.*-->
+<!-- from mall_member a-->
+<!-- inner join (-->
+<!-- select b.referrer_id refererId, sum(a.amount) amount, max(a.order_time) orderTime-->
+<!-- from mall_order_info a-->
+<!-- inner join mall_member b on a.member_id=b.ID-->
+<!-- inner join mall_order_item c on a.id = c.order_id and c.is_normal=2-->
+<!-- where a.status in (2, 3, 4) and a.order_type=1-->
+<!-- <!– 月 –>-->
+<!-- <if test="record.query == '2'">-->
+<!-- and date_format(#{record.createdTime},'%Y-%m') = date_format(b.order_time,'%Y-%m')-->
+<!-- </if>-->
+<!-- group by b.referrer_id-->
+<!-- ) b on a.invite_id=b.refererId-->
+<!-- order by b.amount desc, b.orderTime desc-->
<!-- </select>-->
+
<select id="selectRankListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember">
select a.*, b.*
from mall_member a
inner join (
- select b.referrer_id refererId, sum(a.amount) amount, max(a.order_time) orderTime
- from mall_order_info a
+ select b.referrer_id refererId, sum(a.amount) amount, max(a.pay_time) orderTime
+ from mall_achieve_record a
inner join mall_member b on a.member_id=b.ID
- inner join mall_order_item c on a.id = c.order_id and c.is_normal=2
- where a.status in (2, 3, 4) and a.order_type=1
+ where 1=1
<!-- 月 -->
<if test="record.query == '2'">
- and date_format(#{record.createdTime},'%Y-%m') = date_format(b.order_time,'%Y-%m')
+ and date_format(#{record.createdTime},'%Y-%m') = date_format(a.achieve_time,'%Y-%m')
</if>
group by b.referrer_id
) b on a.invite_id=b.refererId
@@ -355,15 +354,14 @@
<select id="selectAchieveByMemberId" resultType="java.math.BigDecimal">
select IFNULL(sum(IFNULL(a.amount, 0)), 0)
- from mall_order_info a
+ from mall_achieve_record a
inner join mall_member b on a.member_id=b.ID
- inner join mall_order_item c on a.id = c.order_id and c.is_normal=2
- where a.status in (2, 3, 4) and a.order_type=1
+ where 1=1
<if test="type == 1">
and b.invite_id=#{inviteId}
</if>
<if test="type == 2">
- and b.referrer_id=#{inviteId}
+ and find_in_set(#{inviteId}, b.referrer_ids)
</if>
</select>
@@ -381,4 +379,17 @@
select * from mall_member
where referrer_id=#{inviteId} and level != 'ZERO_LEVEL'
</select>
+
+ <select id="selectDirectorsOrStoreMaster" resultType="cc.mrbird.febs.mall.entity.MallMember">
+ select * from mall_member
+ <where>
+ 1=1
+ <if test="type == 1">
+ and director = 1
+ </if>
+ <if test="type == 2">
+ and store_master = 1
+ </if>
+ </where>
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 9964fe6..00a6577 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -232,7 +232,7 @@
and member_id=#{memberId}
</if>
<if test="date != null">
- and date_format(a.receving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+ and date_format(a.receiving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
</if>
</select>
@@ -240,22 +240,41 @@
select IFNULL(sum(IFNULL(b.amount,0) - IFNULL(b.cost_price*b.cnt, 0)),0)
from mall_order_info a
inner join mall_order_item b on a.id=b.order_id
- where a.status in (2, 3, 4) and a.is_normal = 2 and a.order_type=1
+ where a.order_type=1
+ <if test="isNormal == 2">
+ and a.status in (2, 3, 4) and b.is_normal = 2 and b.has_settle=1
+ </if>
+ <if test="isNormal == 1">
+ and a.status=4 and b.is_normal = 1 and b.has_settle=1
+ </if>
<if test="member != null">
and member_id=#{memberId}
</if>
- <if test="date != null and type == 'D'">
- and date_format(a.receving_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+ <if test='date != null and dateType == "D"'>
+ and date_format(a.pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
</if>
- <if test="date != null and type == 'M'">
- and date_format(a.receving_time, '%Y-%m') = date_format(#{date}, '%Y-%m')
+ <if test='date != null and dateType == "M"'>
+ and date_format(a.pay_time, '%Y-%m') = date_format(#{date}, '%Y-%m')
</if>
- <if test="date != null and type == 'Y'">
- and date_format(a.receving_time, '%Y') = date_format(#{date}, '%Y')
+ <if test='date != null and dateType == "Y"'>
+ and date_format(a.pay_time, '%Y') = date_format(#{date}, '%Y')
</if>
</select>
<select id="selectByOrderNo" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
select * from mall_order_info where order_no=#{orderNo}
</select>
+
+ <update id="updateOrderConfirmStatus">
+ update mall_order_info
+ set status=4,
+ receiving_time=new Date()
+ where status=3 and date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+ </update>
+
+ <select id="selectOrderInfoWithNormalGoods" resultMap="OrderInfoMap">
+ select * from mall_order_info a
+ inner join mall_order_item b on a.id=b.order_id and b.is_normal=1
+ where date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 305289e..b4e86de 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -60,6 +60,20 @@
<input type="checkbox" value={{d.id}} lay-text="正常|禁用" lay-skin="switch" lay-filter="switchStatus">
{{# } }}
</script>
+<script type="text/html" id="switchStoreMaster">
+ {{# if(d.storeMaster === 1) { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchStoreMaster">
+ {{# } else { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchStoreMaster">
+ {{# } }}
+</script>
+<script type="text/html" id="switchDirector">
+ {{# if(d.director === 1) { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchDirector">
+ {{# } else { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchDirector">
+ {{# } }}
+</script>
<style>
.layui-form-onswitch {
background-color: #5FB878 !important;
@@ -155,6 +169,19 @@
});
}
+ function changeIdentityYes(type, id) {
+ febs.get(ctx + 'admin/mallMember/changeIdentityYes/' + type + "/" + id, null, function () {
+ febs.alert.success('设置成功');
+ $query.click();
+ });
+ }
+ function changeIdentityNo(type, id) {
+ febs.get(ctx + 'admin/mallMember/changeIdentityNo/' + type + "/" + id, null, function () {
+ febs.alert.success('设置成功');
+ $query.click();
+ });
+ }
+
function resetPwd(id, type) {
febs.post(ctx + 'admin/mallMember/resetPwdNew/' + type + "/"+ id, null, function () {
febs.alert.success('重置成功');
@@ -194,6 +221,8 @@
{field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
{field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
{field: 'levelName', title: '会员类型', minWidth: 100,align:'left'},
+ {field: 'storeMaster', title: '店长', templet:'#switchStoreMaster', minWidth: 100},
+ {field: 'director', title: '董事', templet:'#switchDirector', minWidth: 100},
{field: 'accountType', title: '账号类型',
templet: function (d) {
if (d.accountType === 2) {
@@ -323,5 +352,21 @@
closeAccount(data.value);
}
})
+
+ form.on('switch(switchStoreMaster)', function (data) {
+ if (data.elem.checked) {
+ changeIdentityYes(2, data.value);
+ } else {
+ changeIdentityNo(2, data.value);
+ }
+ })
+
+ form.on('switch(switchDirector)', function (data) {
+ if (data.elem.checked) {
+ changeIdentityYes(1, data.value);
+ } else {
+ changeIdentityNo(1, data.value);
+ }
+ })
})
</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
index 4ace921..6cdd4de 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
@@ -38,6 +38,7 @@
<label class="layui-form-label febs-form-item-require">拨付数目:</label>
<div class="layui-input-block">
<input type="number" name="addBalance" lay-verify="required" autocomplete="off" class="layui-input">
+ <div class="layui-word-aux">输入负数即减少数量</div>
</div>
</div>
<div class="layui-form-item febs-hide">
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 2c93c7f..0b5ea8c 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,11 +1,19 @@
package cc.mrbird.febs;
+import cc.mrbird.febs.mall.entity.MallOrderItem;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderItemMapper;
import cc.mrbird.febs.mall.service.IAgentService;
+import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
/**
* @author wzy
@@ -32,4 +40,26 @@
public void thankfulProfit() {
memberProfitService.thankfulProfit();
}
+
+ @Autowired
+ private MallOrderInfoMapper mallOrderInfoMapper;
+
+ @Test
+ public void directorProfitTest() {
+ memberProfitService.storeAndDirectorProfit(new Date());
+ }
+
+ @Autowired
+ private MallOrderItemMapper mallOrderItemMapper;
+
+ @Autowired
+ private IMallAchieveService mallAchieveService;
+
+ @Test
+ public void achieveTest() {
+ List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
+ for (MallOrderItem item : items) {
+ mallAchieveService.add(item.getId());
+ }
+ }
}
--
Gitblit v1.9.1