From 77c79f189d86a99595d2666faef135e64b7a627f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 18 Dec 2024 17:52:38 +0800
Subject: [PATCH] refactor(test): 重构 AgentTest 类并添加新的测试方法
---
src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java | 32 +
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java | 172 ++++++
src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java | 7
src/main/resources/application-prod.yml | 3
src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java | 10
src/main/java/cc/mrbird/febs/mall/vo/ApiRunHealthVo.java | 23 +
src/main/java/cc/mrbird/febs/mall/service/AsyncService.java | 14
src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java | 4
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 7
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java | 43 +
src/main/resources/application-dev.yml | 3
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 13
src/main/java/cc/mrbird/febs/mall/vo/ApiRunDataVo.java | 26 +
src/main/resources/templates/febs/views/modules/runVip/buyVipList.html | 4
src/main/java/cc/mrbird/febs/mall/dto/ApiGetRunDateDto.java | 17
src/test/java/cc/mrbird/febs/AgentTest.java | 749 -------------------------------
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java | 2
src/main/resources/mapper/modules/MallMemberMapper.xml | 13
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 24
src/main/java/cc/mrbird/febs/mall/dto/ApiGoChargeDto.java | 4
src/main/resources/mapper/modules/MallMemberWalletMapper.xml | 5
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 112 ++++
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 14
src/main/java/cc/mrbird/febs/mall/vo/ApiGetRunDateVo.java | 18
26 files changed, 538 insertions(+), 785 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
index 33ee4f1..8304d00 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
@@ -5,6 +5,10 @@
@Getter
public enum RunVipDataDictionaryEnum {
+ //释放碳积分的开始结束时间
+ RUN_START_TIME("RUN_START_TIME", "RUN_START_TIME"),
+ RUN_END_TIME("RUN_END_TIME", "RUN_END_TIME"),
+
//充值类型
CHARGE_TYPE_TRC("CHARGE_TYPE", "CHARGE_TYPE_TRC"),
CHARGE_TYPE_BSC("CHARGE_TYPE", "CHARGE_TYPE_BSC"),
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
index ba19bd8..845351c 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
@@ -6,9 +6,14 @@
public enum RunVipMoneyFlowTypeEnum {
/**
+ * 获得碳积分
+ */
+ GET_SCORE(9,"本次获得碳积分{}","获得碳积分"),
+
+ /**
* 系统拨付碳积分
*/
- SYS_SCORE(8,"系统拨付碳积分{}","系统拨付碳积分"),
+ SYS_SCORE(8,"获得碳积分{}","系统拨付碳积分"),
/**
* 系统拨付碳币
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 3ce9956..5da3a9a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.controller;
+import cc.mrbird.febs.common.annotation.SubmitRepeat;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
@@ -48,6 +49,7 @@
@ApiOperation(value = "修改用户信息")
@PostMapping(value = "/modifyInfo")
+ @SubmitRepeat
public FebsResponse modifyInfo(@RequestBody ModifyMemberInfoDto modifyMemberInfoDto) {
return memberService.modifyMemberInfo(modifyMemberInfoDto);
}
@@ -73,6 +75,7 @@
@ApiOperation(value = "兑换碳币")
@PostMapping(value = "/changeScore")
+ @SubmitRepeat
public FebsResponse changeScore(@RequestBody @Validated CommissionChangeDto commissionChange) {
memberService.commissionChange(commissionChange);
return new FebsResponse().success().message("操作成功");
@@ -80,6 +83,7 @@
@ApiOperation(value = "转赠好友")
@PostMapping(value = "/giveFriend")
+ @SubmitRepeat
public FebsResponse giveFriend(@RequestBody @Validated TransferDto transferDto) {
memberService.transfer(transferDto);
return new FebsResponse().success().message("操作成功");
@@ -88,6 +92,7 @@
@ApiOperation(value = "地址新增和编辑")
@PostMapping(value = "/setPayment")
+ @SubmitRepeat
public FebsResponse setPayment(@RequestBody ApiMallMemberPaymentDto mallMemberPayment) {
memberService.setPayment(mallMemberPayment);
return new FebsResponse().success().message("操作成功");
@@ -101,6 +106,7 @@
@ApiOperation(value = "地址删除")
@PostMapping(value = "/delPayment")
+ @SubmitRepeat
public FebsResponse delPayment(@RequestBody ApiMallMemberPaymentDto mallMemberPayment) {
memberService.delPayment(mallMemberPayment);
return new FebsResponse().success().message("操作成功");
@@ -108,6 +114,7 @@
@ApiOperation(value = "兑换提现")
@PostMapping(value = "/withdrawal")
+ @SubmitRepeat
public FebsResponse withdrawal(@RequestBody @Validated WithdrawalDto withdrawalDto) {
memberService.withdrawal(withdrawalDto);
return new FebsResponse().success().message("操作成功");
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
index 577e80c..0b0591a 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
@@ -3,12 +3,11 @@
import cc.mrbird.febs.common.annotation.SubmitRepeat;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.ApiChargeListDto;
+import cc.mrbird.febs.mall.dto.ApiGetRunDateDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeInfoDto;
import cc.mrbird.febs.mall.service.IRunVipService;
-import cc.mrbird.febs.mall.vo.ApiChargeVo;
-import cc.mrbird.febs.mall.vo.ApiGoChargeVo;
-import cc.mrbird.febs.mall.vo.ApiRunVipVo;
+import cc.mrbird.febs.mall.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -31,6 +30,33 @@
private final IRunVipService iRunVipService;
+ @ApiOperation(value = "走路-健康", notes = "走路-健康")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiRunHealthVo.class)
+ })
+ @GetMapping(value = "/runHealth")
+ public FebsResponse runHealth() {
+ return new FebsResponse().success().data(iRunVipService.runHealth());
+ }
+
+ @ApiOperation(value = "运动数据", notes = "运动数据")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiRunDataVo.class)
+ })
+ @GetMapping(value = "/runData")
+ public FebsResponse runData() {
+ return new FebsResponse().success().data(iRunVipService.runData());
+ }
+
+ @ApiOperation(value = "运动日历", notes = "运动日历")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiGetRunDateVo.class)
+ })
+ @PostMapping(value = "/getRunDate")
+ public FebsResponse getChargeList(@RequestBody @Valid ApiGetRunDateDto apiGetRunDateDto) {
+ return new FebsResponse().success().data(iRunVipService.getRunDate(apiGetRunDateDto));
+ }
+
@ApiOperation(value = "会员中心-购买VIP列表", notes = "会员中心-购买VIP列表")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiRunVipVo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGetRunDateDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetRunDateDto.java
new file mode 100644
index 0000000..be2dce8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetRunDateDto.java
@@ -0,0 +1,17 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@ApiModel(value = "ApiGetRunDateDto", description = "参数接收类")
+public class ApiGetRunDateDto {
+
+ @NotBlank(message = "参数不能为空")
+ @ApiModelProperty(value = "日期的年月日")
+ private String dateStr;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGoChargeDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGoChargeDto.java
index d6d4498..b3ee102 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiGoChargeDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGoChargeDto.java
@@ -22,4 +22,8 @@
@ApiModelProperty(value = "数量", example = "123456")
private Integer vipCnt;
+ @NotNull(message = "请输入资金密码")
+ @ApiModelProperty(value = "资金密码", example = "123456")
+ private String tradeWord;
+
}
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 9534d40..c03ff77 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -97,4 +97,6 @@
void updateLastLogin(@Param("id")Long id,@Param("lastLogin") Date lastLogin);
void updateVipLevelTimeAndLevel(@Param("id")Long id,@Param("vipLevelTime") Date lastLogin,@Param("level") String level);
+
+ void updateNameAndAvatar(@Param("id")Long id, @Param("name")String name, @Param("photo")String photo);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
index acefcfa..1283fd1 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -17,4 +17,6 @@
int updateAmountWithVersion(@Param("record") MallMemberWallet wallet);
void updateBalanceWithId(@Param("record")MallMemberWallet mallMemberWallet);
+
+ void updateScore();
}
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 8644275..23a8af3 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -9,17 +9,29 @@
@Slf4j
@Component
-@ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true")
+@ConditionalOnProperty(prefix = "system", name = "runStep", havingValue = "true")
public class ProfitJob {
@Autowired
private IMemberProfitService memberProfitService;
/**
+ * 每天凌晨
+ * 清空用户的碳积分
* 套餐过期后,更新用户为游客等级
*/
@Scheduled(cron = "0 0 0 * * ?")
public void updateMemberLevel() {
memberProfitService.updateMemberLevel();
}
+
+ /**
+ * 每1小时执行一次
+ * 分发碳积分
+ * 根据会员等级分发
+ */
+ @Scheduled(cron = "0 0 0/1 * * ?")
+ public void updateRunScore() {
+ memberProfitService.updateRunScore();
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
new file mode 100644
index 0000000..b217db9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/AsyncService.java
@@ -0,0 +1,14 @@
+package cc.mrbird.febs.mall.service;
+
+import cc.mrbird.febs.common.entity.FebsConstant;
+import cc.mrbird.febs.mall.entity.MallMember;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.scheduling.annotation.Async;
+
+import java.math.BigDecimal;
+
+public interface AsyncService extends IService<MallMember> {
+
+ @Async(FebsConstant.ASYNC_POOL)
+ void releaseScore(BigDecimal amount,Long memberId);
+}
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 f47e4b8..325cbc4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -43,4 +43,6 @@
void getOrderCoupon(Long orderId);
void updateMemberLevel();
+
+ void updateRunScore();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
index c13df6d..a642de2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
@@ -2,11 +2,11 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.dto.ApiChargeListDto;
+import cc.mrbird.febs.mall.dto.ApiGetRunDateDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeInfoDto;
import cc.mrbird.febs.mall.entity.RunVip;
-import cc.mrbird.febs.mall.vo.ApiChargeVo;
-import cc.mrbird.febs.mall.vo.ApiRunVipVo;
+import cc.mrbird.febs.mall.vo.*;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@@ -19,4 +19,10 @@
FebsResponse goChargeInfo(ApiGoChargeInfoDto apiGoChargeInfoDto);
List<ApiChargeVo> getChargeList(ApiChargeListDto apiChargeListDto);
+
+ List<ApiGetRunDateVo> getRunDate(ApiGetRunDateDto queryDto);
+
+ ApiRunDataVo runData();
+
+ ApiRunHealthVo runHealth();
}
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 438a86b..3801332 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
@@ -361,7 +361,7 @@
mallMember.setAvatar(modifyMemberInfoDto.getPhoto());
}
- this.baseMapper.updateById(mallMember);
+ this.baseMapper.updateNameAndAvatar(member.getId(),modifyMemberInfoDto.getName(),modifyMemberInfoDto.getPhoto());
return new FebsResponse().success().message("修改成功");
}
@@ -691,20 +691,24 @@
@Override
public void setPayment(ApiMallMemberPaymentDto apiMallMemberPaymentDto) {
- List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
- new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
- if(CollUtil.isNotEmpty(mallMemberPayments)){
- throw new FebsException("地址已使用");
- }
-
MallMember member = LoginUserUtil.getLoginUser();
if(null == apiMallMemberPaymentDto.getId()){//新增
+ List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
+ new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
+ if(CollUtil.isNotEmpty(mallMemberPayments)){
+ throw new FebsException("地址已使用");
+ }
MallMemberPayment mallMemberPayment = new MallMemberPayment();
mallMemberPayment.setMemberId(member.getId());
mallMemberPayment.setBankNo(apiMallMemberPaymentDto.getBankNo());
mallMemberPayment.setBank(apiMallMemberPaymentDto.getBank());
mallMemberPaymentMapper.insert(mallMemberPayment);
}else{
+ List<MallMemberPayment> mallMemberPayments = mallMemberPaymentMapper.selectList(
+ new LambdaQueryWrapper<MallMemberPayment>().eq(MallMemberPayment::getBank, apiMallMemberPaymentDto.getBank()));
+ if(CollUtil.isNotEmpty(mallMemberPayments) && mallMemberPayments.size() > 1){
+ throw new FebsException("地址已使用");
+ }
MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(apiMallMemberPaymentDto.getId());
mallMemberPayment.setMemberId(member.getId());
mallMemberPayment.setBankNo(apiMallMemberPaymentDto.getBankNo());
@@ -1576,7 +1580,11 @@
mallMoneyFlowLambdaQueryWrapper.ge(MallMoneyFlow :: getCreatedTime , dateTime);
}
mallMoneyFlowLambdaQueryWrapper.eq(MallMoneyFlow :: getFlowType, FlowTypeEnum.SCORE.getValue());
- mallMoneyFlowLambdaQueryWrapper.eq(MallMoneyFlow :: getType, RunVipMoneyFlowTypeEnum.SCORE_OUT_BALANCE.getValue());
+ mallMoneyFlowLambdaQueryWrapper.in(
+ MallMoneyFlow :: getType,
+ RunVipMoneyFlowTypeEnum.GET_SCORE.getValue(),
+ RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue()
+ );
List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(mallMoneyFlowLambdaQueryWrapper);
List<ApiChartVo> apiChartVos = new ArrayList<>();
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
new file mode 100644
index 0000000..bef028b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
@@ -0,0 +1,43 @@
+package cc.mrbird.febs.mall.service.impl;
+
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.RunVipMoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
+import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.service.AsyncService;
+import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cn.hutool.core.util.StrUtil;
+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;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class AsyncServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements AsyncService {
+
+ private final IMallMoneyFlowService mallMoneyFlowService;
+ private final IApiMallMemberWalletService walletService;
+ @Override
+ public void releaseScore(BigDecimal V3, Long memberId) {
+ walletService.addScore(V3,memberId);
+ String orderNo = MallUtils.getOrderNum("HD");
+ mallMoneyFlowService.runVipMoneyFlowAdd(
+ memberId,
+ memberId,
+ orderNo,
+ FlowTypeEnum.SCORE.getValue(),
+ RunVipMoneyFlowTypeEnum.GET_SCORE.getValue(),
+ V3,
+ StrUtil.format(RunVipMoneyFlowTypeEnum.GET_SCORE.getDescription(),V3),
+ YesOrNoEnum.YES.getValue()
+ );
+
+ }
+}
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 7f2e537..d65136d 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
@@ -1,18 +1,20 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
-import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.AsyncService;
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.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -48,6 +50,9 @@
private final MallAchieveRecordMapper mallAchieveRecordMapper;
private final MallMemberCouponMapper mallMemberCouponMapper;
private final RunVipMapper runVipMapper;
+ private final MallMemberWalletMapper mallMemberWalletMapper;
+
+ private final AsyncService asyncService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -497,6 +502,7 @@
@Override
public void updateMemberLevel() {
+ mallMemberWalletMapper.updateScore();
List<RunVip> runVips = runVipMapper.selectList(new LambdaQueryWrapper<RunVip>().orderByAsc(RunVip :: getOrderNumber));
RunVip runVip = runVips.get(0);
@@ -513,4 +519,102 @@
);
}
}
+
+ public static void main(String[] args) {
+
+ //计算当前时间是否是最后一次
+ String lastDateTimeStr = DateUtil.formatDate(DateUtil.date())+" 20:00:00";
+ DateTime lastDateTime = DateUtil.parseDateTime(lastDateTimeStr);
+ System.out.println(DateUtil.compare(DateUtil.date(),lastDateTime) > 0);
+ System.out.println(DateUtil.parseTime(DateUtil.date().toTimeStr()));
+ }
+
+
+
+ /**
+ * 获取全部会员
+ * 根据会员等级的最大每日获得去给用户新增碳积分
+ * 更新钱包数据
+ * 生成对应的流水数据
+ * 释放规则
+ * 当前时间的小时 H1 / 2,整除时
+ * 每个会员等级每日总释放量 T1 / 总时间间隔 C1 = 每次释放量上限 V1
+ * 每次释放量上线 V1 / 2 = 每次释放量下限 V2
+ * 每次释放量 V3 = 随机 [V2,V1)
+ * 当前时间的小时 H1 / 2,不整除时
+ * 每个会员等级每日总释放量 T1 / 总时间间隔 C1 = 每次释放量上限 V1
+ * 每次释放量 V3 = 每次释放量上限 V1 + (每次释放量上限 V1 - 上一次释放的数量 U1)
+ * 如果上一次没有释放,则 V3 = 每次释放量上限 [V1,V1*2)
+ */
+ @Override
+ public void updateRunScore() {
+ DateTime nowTimeStr = DateUtil.date();
+ String startTimeStr = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.RUN_START_TIME.getType(),
+ RunVipDataDictionaryEnum.RUN_START_TIME.getCode()
+ ).getValue();
+ String endTimeStr = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.RUN_END_TIME.getType(),
+ RunVipDataDictionaryEnum.RUN_END_TIME.getCode()
+ ).getValue();
+
+ DateTime nowTime = DateUtil.parseTime(nowTimeStr.toTimeStr());
+ DateTime startTime = DateUtil.parseTime(startTimeStr);
+ DateTime endTime = DateUtil.parseTime(endTimeStr);
+ //判断时间是否在时间范围内
+ if(DateUtil.compare(nowTime,startTime) < 0 || DateUtil.compare(nowTime,endTime) > 0){
+ return;
+ }
+ int hour = DateUtil.hour(nowTime,true);
+ boolean flag = isDivisibleByTwo(hour);
+
+ int C1 = Integer.parseInt(String.valueOf(DateUtil.between(startTime, endTime, DateUnit.HOUR)));
+
+ List<RunVip> runVips = runVipMapper.selectList(null);
+ Map<String, RunVip> runVipMap = runVips.stream()
+ .collect(Collectors.toMap(RunVip::getVipCode, runVip -> runVip));
+ List<MallMember> mallMembers = mallMemberMapper.selectList(null);
+ if(CollUtil.isNotEmpty(mallMembers)){
+ for (MallMember item : mallMembers) {
+ RunVip runVip = runVipMap.get(item.getLevel());
+ if(ObjectUtil.isEmpty(runVip)){
+ //未匹配到,直接跳过
+ continue;
+ }
+ BigDecimal T1 = new BigDecimal(runVip.getGrowthCnt());
+ BigDecimal V3 = BigDecimal.ZERO;
+ BigDecimal V1 = T1.divide(new BigDecimal(C1), 2, BigDecimal.ROUND_DOWN);
+ if (flag) {
+ BigDecimal V2 = V1.divide(new BigDecimal("2"), 2, BigDecimal.ROUND_DOWN);
+ V3 = RandomUtil.randomBigDecimal(V2,V1);
+ }else{
+ List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+ new LambdaQueryWrapper<MallMoneyFlow>()
+ .eq(MallMoneyFlow::getMemberId, item.getId())
+ .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue())
+ .eq(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.GET_SCORE.getValue())
+ .ge(MallMoneyFlow::getCreatedTime, DateUtil.beginOfDay(nowTimeStr))
+ .orderByDesc(MallMoneyFlow::getCreatedTime)
+ .last("LIMIT 1")
+ );
+ if(CollUtil.isNotEmpty(mallMoneyFlows)){
+ V3 = V1.add(V1.subtract(mallMoneyFlows.get(0).getAmount()));
+ }else{
+ V3 = RandomUtil.randomBigDecimal(V1,V1.multiply(new BigDecimal("2")));
+ }
+ }
+ V3 = V3.setScale(0,BigDecimal.ROUND_DOWN);
+ //更新钱包数据
+ if(V3.intValue() <= 0){
+ continue;
+ }
+ //异步线程池去释放积分操作
+ asyncService.releaseScore(V3,item.getId());
+ }
+ }
+ }
+
+ public boolean isDivisibleByTwo(int number) {
+ return number % 2 == 0;
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
index 9310a62..2b15086 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
@@ -1,33 +1,27 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum;
+import cc.mrbird.febs.common.enumerates.RunVipMoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.mall.conversion.RunVipConversion;
-import cc.mrbird.febs.mall.dto.ApiChargeListDto;
-import cc.mrbird.febs.mall.dto.ApiGoChargeDto;
-import cc.mrbird.febs.mall.dto.ApiGoChargeInfoDto;
-import cc.mrbird.febs.mall.dto.ApiMemberChargeFailDto;
-import cc.mrbird.febs.mall.entity.MallCharge;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallMemberPayment;
-import cc.mrbird.febs.mall.entity.RunVip;
-import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
-import cc.mrbird.febs.mall.mapper.MallChargeMapper;
-import cc.mrbird.febs.mall.mapper.MallMemberPaymentMapper;
-import cc.mrbird.febs.mall.mapper.RunVipMapper;
+import cc.mrbird.febs.mall.dto.*;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IRunVipService;
-import cc.mrbird.febs.mall.vo.ApiChargeVo;
-import cc.mrbird.febs.mall.vo.ApiGoChargeVo;
-import cc.mrbird.febs.mall.vo.ApiRunVipVo;
+import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,6 +32,9 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
@Slf4j
@Service
@@ -48,6 +45,9 @@
private final MallMemberPaymentMapper mallMemberPaymentMapper;
private final MallChargeMapper mallChargeMapper;
private final AgentProducer agentProducer;
+ private final MallMoneyFlowMapper mallMoneyFlowMapper;
+ private final MallMemberWalletMapper mallMemberWalletMapper;
+ private final MallMemberMapper mallMemberMapper;
@Override
public List<ApiRunVipVo> vipInfo() {
MallMember member = LoginUserUtil.getLoginUser();
@@ -72,7 +72,14 @@
public FebsResponse goCharge(ApiGoChargeDto apiGoChargeDto) {
Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if (StrUtil.isBlank(mallMember.getTradePassword())) {
+ throw new FebsException("未设置资金密码");
+ }
+ if (!mallMember.getTradePassword().equals(SecureUtil.md5(apiGoChargeDto.getTradeWord()))) {
+ throw new FebsException("资金密码错误");
+ }
Long runVipId = apiGoChargeDto.getRunVipId();
RunVip runVip = this.baseMapper.selectById(runVipId);
if(runVip.getState() != YesOrNoEnum.YES.getValue()){
@@ -169,4 +176,139 @@
Page<ApiChargeVo> page = new Page<>(apiChargeListDto.getPageNum(), apiChargeListDto.getPageSize());
return mallChargeMapper.selectChargeListInPage(apiChargeListDto, page);
}
+
+ @Override
+ public List<ApiGetRunDateVo> getRunDate(ApiGetRunDateDto queryDto) {
+
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ DateTime dateTime = DateUtil.parseDate(queryDto.getDateStr());
+
+ DateTime startTime = DateUtil.beginOfMonth(dateTime);
+ DateTime endTime = DateUtil.endOfMonth(dateTime);
+ long between = DateUtil.between(startTime, endTime, DateUnit.DAY);
+ List<ApiGetRunDateVo> apiGetRunDateVos = generateDateList(startTime, between);
+
+ List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+ new LambdaQueryWrapper<MallMoneyFlow>()
+ .eq(MallMoneyFlow::getMemberId, memberId)
+ .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue())
+ .eq(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.SCORE_OUT_BALANCE.getValue())
+ .ge(MallMoneyFlow::getCreatedTime, startTime)
+ .le(MallMoneyFlow::getCreatedTime, endTime)
+ );
+ if(CollUtil.isNotEmpty(mallMoneyFlows)){
+ calculateProfits(apiGetRunDateVos,mallMoneyFlows);
+ }
+
+ return apiGetRunDateVos;
+ }
+
+ /**
+ * 生成日期列表
+ *
+ * @param startDate 开始日期
+ * @param days 从开始日期算起的天数
+ * @return 一个包含日期信息的ApiGetRunDateVo对象列表
+ */
+ private List<ApiGetRunDateVo> generateDateList(DateTime startDate, long days) {
+ // 使用IntStream生成从0到days(包含days)的整数流,表示每一天
+ return IntStream.range(0, (int) days + 1)
+ // 将每个整数映射为一个ApiGetRunDateVo对象
+ .mapToObj(i -> {
+ // 创建ApiGetRunDateVo对象
+ ApiGetRunDateVo apiGetRunDateVo = new ApiGetRunDateVo();
+ // 计算日期:从起始日期开始偏移i天
+ DateTime dateTime = DateUtil.offsetDay(startDate, i);
+ // 格式化日期为"yyyy-MM-dd"字符串,并设置到对象中
+ apiGetRunDateVo.setDateStr(DateUtil.format(dateTime, "yyyy-MM-dd"));
+ // 初始化碳积分为0
+ apiGetRunDateVo.setScore(BigDecimal.ZERO);
+ // 返回构建好的对象
+ return apiGetRunDateVo;
+ })
+ // 将流中的对象收集到一个列表中
+ .collect(Collectors.toList());
+ }
+ /**
+ * 计算每日累计碳积分
+ *
+ * @param dateList 日期列表,包含了每日的碳积分信息
+ * @param mallMoneyFlows 商城资金流列表,包含了每笔碳积分信息
+ */
+ private void calculateProfits(List<ApiGetRunDateVo> dateList, List<MallMoneyFlow> mallMoneyFlows) {
+ // 将日期列表转换为映射,以便通过日期快速访问每日碳积分信息
+ Map<String, ApiGetRunDateVo> dateMap = dateList.stream()
+ .collect(Collectors.toMap(ApiGetRunDateVo::getDateStr, vo -> vo));
+
+ // 遍历mallMoneyFlows
+ for (MallMoneyFlow item : mallMoneyFlows) {
+ // 格式化当前项的创建时间,提取日期
+ String date = DateUtil.format(item.getCreatedTime(), "yyyy-MM-dd");
+ // 从日期映射中获取对应的每日碳积分信息
+ ApiGetRunDateVo apiGetRunDateVo = dateMap.get(date);
+ // 如果找到了对应的每日碳积分信息
+ if (apiGetRunDateVo != null) {
+ // 获取当前日期的碳积分
+ BigDecimal score = apiGetRunDateVo.getScore();
+ // 计算新的碳积分,将碳积分与碳积分相加,并向下取整到个位数
+ BigDecimal profit = score.add(item.getAmount().abs()).setScale(0,BigDecimal.ROUND_DOWN);
+ // 更新每日碳积分信息的利润值
+ apiGetRunDateVo.setScore(profit);
+ }
+ }
+ }
+
+ @Override
+ public ApiRunDataVo runData() {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ ApiRunDataVo apiRunDataVo = new ApiRunDataVo();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ String level = mallMember.getLevel();
+ RunVip runVip = this.baseMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, level));
+ apiRunDataVo.setAimScore(runVip.getGrowthCnt());
+
+ List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+ new LambdaQueryWrapper<MallMoneyFlow>()
+ .eq(MallMoneyFlow::getMemberId, memberId)
+ .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue())
+ .in(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.GET_SCORE.getValue(),RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue())
+ .ge(MallMoneyFlow::getCreatedTime, DateUtil.beginOfDay(DateUtil.date()))
+ .le(MallMoneyFlow::getCreatedTime, DateUtil.endOfDay(DateUtil.date()))
+ );
+ if(CollUtil.isNotEmpty(mallMoneyFlows)){
+ BigDecimal reduce = mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ apiRunDataVo.setScore(reduce.intValue());
+ }
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ apiRunDataVo.setBalance(mallMemberWallet.getBalance());
+ apiRunDataVo.setRealScore(mallMemberWallet.getScore().intValue());
+ return apiRunDataVo;
+ }
+
+ @Override
+ public ApiRunHealthVo runHealth() {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ ApiRunHealthVo apiRunHealthVo = new ApiRunHealthVo();
+
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ int realScore = mallMemberWallet.getScore().intValue();
+ apiRunHealthVo.setScore(realScore);
+ List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
+ new LambdaQueryWrapper<MallMoneyFlow>()
+ .eq(MallMoneyFlow::getMemberId, memberId)
+ .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue())
+ .in(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.GET_SCORE.getValue(),RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue())
+ .ge(MallMoneyFlow::getCreatedTime, DateUtil.beginOfDay(DateUtil.date()))
+ .le(MallMoneyFlow::getCreatedTime, DateUtil.endOfDay(DateUtil.date()))
+ );
+ if(CollUtil.isNotEmpty(mallMoneyFlows)){
+ BigDecimal reduce = mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ if(reduce.intValue() > realScore){
+ apiRunHealthVo.setScoreUsed(reduce.intValue() - realScore);
+ apiRunHealthVo.setScoreTotal(reduce.intValue());
+ }
+ }
+ return apiRunHealthVo;
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGetRunDateVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetRunDateVo.java
new file mode 100644
index 0000000..7c9c7d7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetRunDateVo.java
@@ -0,0 +1,18 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiGetRunDateVo", description = "信息返回类")
+public class ApiGetRunDateVo {
+
+ @ApiModelProperty(value = "日期")
+ private String dateStr;
+
+ @ApiModelProperty(value = "当日已兑换碳积分")
+ private BigDecimal score;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRunDataVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunDataVo.java
new file mode 100644
index 0000000..1c083f9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunDataVo.java
@@ -0,0 +1,26 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiRunDataVo", description = "信息返回类")
+public class ApiRunDataVo {
+
+ @ApiModelProperty(value = "我的碳积分")
+ private Integer score = 0;//今日累计获得
+
+ @ApiModelProperty(value = "碳币")
+ private BigDecimal balance = BigDecimal.ZERO;
+
+ @ApiModelProperty(value = "今日行走")
+ private Integer realScore = 0;//今日剩余
+
+ @ApiModelProperty(value = "今日目标")
+ private Integer aimScore = 0;//当前等级每日获取的最大值
+
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRunHealthVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunHealthVo.java
new file mode 100644
index 0000000..e0b293f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunHealthVo.java
@@ -0,0 +1,23 @@
+package cc.mrbird.febs.mall.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiRunHealthVo", description = "信息返回类")
+public class ApiRunHealthVo {
+
+
+ @ApiModelProperty(value = "可兑换")
+ private Integer score = 0;
+
+
+ @ApiModelProperty(value = "今日累计兑换")
+ private Integer scoreUsed = 0;
+
+
+ @ApiModelProperty(value = "碳积分")
+ private Integer scoreTotal = 0;
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 82db5c0..7356a45 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -79,4 +79,5 @@
path: /home/javaweb/resource/
system:
- job: true
\ No newline at end of file
+ job: true
+ runStep: true
\ No newline at end of file
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 9ffca9f..712ce34 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -79,4 +79,5 @@
path: /home/javaweb/resource/
system:
- job: true
\ No newline at end of file
+ job: true
+ runStep: true
\ 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 144ae85..d43669e 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -438,8 +438,6 @@
order by m.CREATED_TIME desc
</select>
-
-
<update id="updateReferrerId">
update mall_member
set referrer_id = '',
@@ -447,16 +445,12 @@
where id = #{id}
</update>
-
-
<update id="updateLastLogin">
update mall_member
set last_login_time = #{lastLogin}
where id = #{id}
</update>
-
-
<update id="updateVipLevelTimeAndLevel">
update mall_member
set vip_level_time = #{vipLevelTime},
@@ -464,4 +458,11 @@
where id = #{id}
</update>
+ <update id="updateNameAndAvatar">
+ update mall_member
+ set avatar = #{photo},
+ name = #{name}
+ where id = #{id}
+ </update>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
index 1f5e297..23a7bb6 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -51,4 +51,9 @@
</if>
where id=#{record.id} and revision=#{record.revision}
</update>
+
+ <update id="updateScore">
+ UPDATE mall_member_wallet
+ SET score = 0
+ </update>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 65ad4aa..fc5d0ec 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -26,14 +26,11 @@
select
a.*,
b.name,
- b.bind_phone bindPhone,
- c.pay_method payMethod,
b.phone
from mall_money_flow a
inner join mall_member b on a.member_id=b.id
- left join mall_order_info c on a.order_no = c.order_no
<where>
- 1=1 and a.status = 2
+ 1=1
<if test="record != null" >
<if test="record.name!=null and record.name!=''">
and b.name like concat('%', #{record.name},'%')
@@ -41,11 +38,11 @@
<if test="record.phone!=null and record.phone!=''">
and b.phone like concat('%', #{record.phone},'%')
</if>
- <if test="record.type!=null and record.type!=''">
- and a.type like concat('%', #{record.type},'%')
+ <if test="record.type!=null">
+ and a.type = #{record.type}
</if>
- <if test="record.flowType!=null and record.flowType!=''">
- and a.flow_type like concat('%', #{record.flowType},'%')
+ <if test="record.flowType!=null">
+ and a.flow_type = #{record.flowType}
</if>
<if test="record.startTime != null and record.startTime != ''">
and a.created_time >= #{record.startTime}
diff --git a/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html b/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html
index 266d514..c7df2b7 100644
--- a/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html
+++ b/src/main/resources/templates/febs/views/modules/runVip/buyVipList.html
@@ -133,13 +133,13 @@
{type: 'numbers', title: '序号', width: 80},
{field: 'orderNo', title: '编号', minWidth: 100,align:'center', totalRowText: '合计'},
{field: 'account', title: '账号', minWidth: 150,align:'center'},
- {field: 'type', title: '链', minWidth: 100,align:'center'},
{field: 'vipName', title: '会员名称', minWidth: 100,align:'center'},
- {field: 'vipCnt', title: '数量', minWidth: 100,align:'center'},
{field: 'amount', title: '金额', minWidth: 100,align:'center',totalRow: '{{= parseInt(d.amount) }}'},
+ {field: 'type', title: '链', minWidth: 100,align:'center'},
{field: 'address', title: '地址', minWidth: 100,align:'center'},
{title: '状态', templet: '#stateType', minWidth: 100,align:'center'},
{field: 'failTime', title: '失效时间', minWidth: 180,align:'center'},
+ {field: 'vipCnt', title: '数量', minWidth: 100,align:'center'},
{field: 'createdTime', title: '创建时间', minWidth: 180,align:'center'},
{title: '操作', toolbar: '#commissionOption', minWidth: 200}
]],
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index c91446d..4358b15 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,737 +1,20 @@
-//package cc.mrbird.febs;
-//
-//import cc.mrbird.febs.vip.service.IVipCommonService;
-//import lombok.extern.slf4j.Slf4j;
-//import org.junit.jupiter.api.Test;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.test.context.SpringBootTest;
-//
-///**
-// * @author wzy
-// * @date 2021-09-25
-// **/
-//@Slf4j
-//@SpringBootTest
-//public class AgentTest {
-// @Autowired
-// private IVipCommonService vipCommonService;
+package cc.mrbird.febs;
+
+import cc.mrbird.febs.mall.service.IMemberProfitService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@Slf4j
+@SpringBootTest
+public class AgentTest {
+
+ @Autowired
+ private IMemberProfitService memberProfitService;
// @Test
// public void getCouponAmountMap(){
-// vipCommonService.getScore(283L);
+//
+// memberProfitService.updateRunScore();
//
// }
-//
-//
-//// @Autowired
-//// private RedisUtils redisUtils;
-//// @Resource
-//// RestTemplate restTemplate;
-////
-//// public static final String API_KEY = "MPHXcBxkGLIDOmoaahS9pIB7";
-//// public static final String SECRET_KEY = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
-////
-//// static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
-//// @Test
-//// public void getAccessToken(){
-//// ApiIdentifyAddressDto apiIdentifyAddressDto = new ApiIdentifyAddressDto();
-//// apiIdentifyAddressDto.setText("上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三");
-//// MediaType mediaType = MediaType.parse("application/json");
-//// RequestBody body = RequestBody.create(mediaType, JSONUtil.toJsonStr(apiIdentifyAddressDto));
-//// Request request = new Request.Builder()
-//// .url("https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=" + redisUtils.get(WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY).toString())
-//// .method("POST", body)
-//// .addHeader("Content-Type", "application/json")
-//// .addHeader("Accept", "application/json")
-//// .build();
-//// try {
-//// Response response = HTTP_CLIENT.newCall(request).execute();
-//// String responseStr = response.body().string();
-//// System.out.println(responseStr);
-//// if (responseStr.contains("error_code")) {
-//// System.out.println("获取access_token失败");
-//// JSONObject jsonObject = JSONUtil.parseObj(responseStr);
-//// System.out.print(jsonObject.get("error_code").toString());
-//// }
-//// } catch (IOException e) {
-//// e.printStackTrace();
-//// }
-//// }
-//// @Test
-//// public void getAccessToken2(){
-//// // 官网获取的 API Key 更新为你注册的
-//// String clientId = "MPHXcBxkGLIDOmoaahS9pIB7";
-//// // 官网获取的 Secret Key 更新为你注册的
-//// String clientSecret = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
-//// String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
-//// String getAccessTokenUrl = authHost
-//// // 1. grant_type为固定参数
-//// + "grant_type=client_credentials"
-//// // 2. 官网获取的 API Key
-//// + "&client_id=" + clientId
-//// // 3. 官网获取的 Secret Key
-//// + "&client_secret=" + clientSecret;
-//// String jsonStr = restTemplate.getForObject(getAccessTokenUrl, String.class);
-////
-//// /**
-//// * 返回结果
-//// * {"access_token":"ACCESS_TOKEN","expires_in":7200}
-//// */
-//// if (!jsonStr.contains("access_token")) {
-//// System.out.println("获取access_token失败");
-//// }
-//// com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(jsonStr);
-//// String accessToken = jsonObject.getString("access_token");
-////
-//// String accessTokenKey = WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY;
-//// if (StrUtil.isEmpty(accessToken)) {
-//// log.error("获取baidu access_token失败: {}" , jsonObject.getString("errmsg"));
-//// throw new ApiException("获取access token失败");
-//// } else {
-//// log.info("baidu access_token : {}",accessToken);
-//// System.out.println(accessToken);
-//// redisUtils.set(accessTokenKey,accessToken);
-//// }
-//// }
-//// @Test
-//// public void goodsDetails(){
-//// Long id = 68L;
-//// MallGoods mallGoods = mallGoodsMapper.selectGoodsDetailById(id);
-//// if (mallGoods == null) {
-//// throw new FebsException("商品不存在");
-//// }
-//// List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId());
-//// MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods);
-////
-//// List<GoodsDetailsStyleVo> styles = mallGoodsDetailsVo.getStyles();
-//// if(ObjectUtil.isNotEmpty(styles)){
-//// for(GoodsDetailsStyleVo goodsDetailsStyleVo : styles){
-//// List<GoodsDetailsSkuVo> skus = goodsDetailsStyleVo.getSkus();
-//// if(CollUtil.isNotEmpty(skus) ){
-//// for(GoodsDetailsSkuVo goodsDetailsSkuVo : skus){
-//// if(StrUtil.isNotEmpty(goodsDetailsSkuVo.getSample())){
-//// goodsDetailsSkuVo.setSampleFlag(true);
-//// }else{
-//// goodsDetailsSkuVo.setSampleFlag(false);
-//// }
-//// }
-//// }
-//// }
-//// }
-////
-//// if (CollUtil.isNotEmpty(mallGoods.getStyles())) {
-//// Map<String, BigDecimal> stockAndVolume = mallGoodsMapper.selectGoodsStockAndVolume(id);
-//// mallGoodsDetailsVo.setStock(stockAndVolume.get("stock").intValue());
-//// mallGoodsDetailsVo.setVolume(stockAndVolume.get("volume").intValue());
-//// }
-//// mallGoodsDetailsVo.setImages(images);
-////
-//// }
-////
-//// @Test
-//// public void levelTest(){
-//// ApiCreateOrderVerifyDto apiCreateOrderVerifyDto = new ApiCreateOrderVerifyDto();
-//// List<AddOrderItemDto> addOrderItemDtos = new ArrayList<>();
-//// AddOrderItemDto addOrderItemDto = new AddOrderItemDto();
-//// addOrderItemDto.setCnt(1);
-//// addOrderItemDto.setSkuId(243L);
-//// addOrderItemDtos.add(addOrderItemDto);
-//// apiCreateOrderVerifyDto.setItems(addOrderItemDtos);
-//// MallMember member = mallMemberMapper.selectById(401L);
-//// List<AddOrderItemDto> items = apiCreateOrderVerifyDto.getItems();
-//// if(CollUtil.isEmpty(items)){
-//// System.out.println("请先挑选商品");
-//// }
-//// for (AddOrderItemDto item : apiCreateOrderVerifyDto.getItems()) {
-//// MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
-//// if (sku == null) {
-//// System.out.println("购买商品或sku不存在");
-//// }
-//// if("样品".equals(sku.getSample())){
-//// List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
-//// if (CollUtil.isNotEmpty(mallOrderItems)) {
-//// System.out.println("样品只能购买一次");
-//// }
-//// Integer cnt = item.getCnt();
-//// if(1 < cnt){
-//// System.out.println("样品只能购买一件");
-//// }
-//// }else{
-//// //验证用户的等级
-//// if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
-//// System.out.println(sku.getSkuName() + "请先申请成为合伙人");
-//// }
-//// }
-////
-//// if (sku.getStock() < item.getCnt()) {
-//// System.out.println(sku.getSkuName() + "库存不足");
-//// }
-////
-//// MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
-//// if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
-//// System.out.println(mallGoods.getGoodsName() + "已下架");
-//// }
-//// }
-//// }
-////// @Test
-////// public void skusTest() {
-////// ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo();
-////// Long memberId = 4L;
-////// Long actId = 1L;
-////// MallMember mallMember = mallMemberMapper.selectById(memberId);
-////// if(ObjectUtil.isEmpty(mallMember)){
-////// throw new FebsException("用户不存在");
-////// }
-//////
-////// MallActSet mallActSet = mallActSetMapper.selectById(actId);
-////// if(ObjectUtil.isEmpty(mallActSet)){
-////// throw new FebsException("活动不存在");
-////// }
-////// Integer actStatus = mallActSet.getActStatus();
-////// if(MallActSet.ACT_STATUS_DISABLED == actStatus){
-////// throw new FebsException("活动还没开始");
-////// }
-////// /**
-////// * 获取用户积分数,判断能不能抽奖
-////// * 减少对应的积分数量
-////// * 较少奖品的已抽奖
-////// * 生成一条抽奖记录
-////// */
-//////
-////// MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
-////// if(ObjectUtil.isEmpty(wallet)){
-////// throw new FebsException("账户不存在");
-////// }
-////// BigDecimal commission = wallet.getCommission();
-////// BigDecimal prizeScore = wallet.getPrizeScore();
-////// Integer actScoreCnt = mallActSet.getActScoreCnt();
-////// if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
-////// throw new FebsException("竞猜积分不足");
-////// }
-////// /**
-////// * 中奖概率 20%
-////// * 每次抽奖产生一个随机数要大于8,则中奖
-////// * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖
-////// */
-////// //获取中奖概率
-////// DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-////// DataDictionaryEnum.WIN_SCORE.getType(),
-////// DataDictionaryEnum.WIN_SCORE.getCode());
-////// DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
-////// DataDictionaryEnum.WIN_CASH.getType(),
-////// DataDictionaryEnum.WIN_CASH.getCode());
-////// String scoreDicValue = scoreDic.getValue();
-////// String cashDicValue = cashDic.getValue();
-////// BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
-////// //获取那个更大一点的几率
-////// BigDecimal maxProbability = BigDecimal.ZERO;
-////// BigDecimal minProbability = BigDecimal.ZERO;
-////// Integer maxAwardType = 0;
-////// Integer minAwardType = 0;
-////// if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){
-////// maxProbability = new BigDecimal(cashDicValue);
-////// minProbability = new BigDecimal(scoreDicValue);
-////// maxAwardType = MallActAwardSet.AWARD_TYPE_YJ;
-////// minAwardType = MallActAwardSet.AWARD_TYPE_JF;
-////// }else{
-////// maxProbability = new BigDecimal(scoreDicValue);
-////// minProbability = new BigDecimal(cashDicValue);
-////// maxAwardType = MallActAwardSet.AWARD_TYPE_JF;
-////// minAwardType = MallActAwardSet.AWARD_TYPE_YJ;
-////// }
-//////
-////// BigDecimal multiply = totalProbability.multiply(new BigDecimal(100));
-////// BigDecimal failureScope = new BigDecimal(100).subtract(multiply);
-////// int randomInt = 90;
-////// //小于failureScope这个数字,则没中奖
-////// if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0
-////// && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){
-////// //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖
-////// //获取最新的十条抽奖记录
-////// List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
-////// if(CollUtil.isNotEmpty(records)){
-////// //中奖次数
-////// Integer count = 0;
-////// for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
-////// Integer status = mallActLuckdrawRecord.getStatus();
-////// if(MallActLuckdrawRecord.STATUS_ENABLE == status){
-////// count = count + 1;
-////// }
-////// }
-////// if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){
-////// //获取活动下该类别的奖品
-////// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
-////// if(CollUtil.isEmpty(mallActAwardSets)){
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }else{
-////// List<MallActAwardSet> idList = new ArrayList();
-////// for(MallActAwardSet mallActAwardSet : mallActAwardSets){
-////// Integer awardTotal = mallActAwardSet.getAwardTotal();
-////// Integer awardCnt = mallActAwardSet.getAwardCnt();
-////// if(awardCnt < awardTotal){
-////// idList.add(mallActAwardSet);
-////// }
-////// }
-////// MallActAwardSet mallActAwardSet = new MallActAwardSet();
-////// if(idList.size() <= 1){
-////// mallActAwardSet = idList.get(0);
-////// }else{
-////// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
-////// mallActAwardSet = idList.get(randomIdIndex);
-////// }
-////// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
-////// mallActAwardSetMapper.updateById(mallActAwardSet);
-//////
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// MallActWinRecord mallActWinRecord = new MallActWinRecord();
-////// mallActWinRecord.setMemberId(memberId);
-////// mallActWinRecord.setActId(actId);
-////// mallActWinRecord.setActName(mallActSet.getActName());
-////// mallActWinRecord.setAwardId(mallActAwardSet.getId());
-////// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
-////// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
-////// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
-////// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
-////// mallActWinRecordMapper.insert(mallActWinRecord);
-//////
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
-////// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
-////// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
-//////
-////// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
-////// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
-////// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }
-////// }
-////// }else{
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }
-////// }else{
-////// //获取活动下该类别的奖品
-////// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
-////// if(CollUtil.isEmpty(mallActAwardSets)){
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }else{
-////// List<MallActAwardSet> idList = new ArrayList();
-////// for(MallActAwardSet mallActAwardSet : mallActAwardSets){
-////// Integer awardTotal = mallActAwardSet.getAwardTotal();
-////// Integer awardCnt = mallActAwardSet.getAwardCnt();
-////// if(awardCnt < awardTotal){
-////// idList.add(mallActAwardSet);
-////// }
-////// }
-////// MallActAwardSet mallActAwardSet = new MallActAwardSet();
-////// if(idList.size() <= 1){
-////// mallActAwardSet = idList.get(0);
-////// }else{
-////// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
-////// mallActAwardSet = idList.get(randomIdIndex);
-////// }
-////// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
-////// mallActAwardSetMapper.updateById(mallActAwardSet);
-//////
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// MallActWinRecord mallActWinRecord = new MallActWinRecord();
-////// mallActWinRecord.setMemberId(memberId);
-////// mallActWinRecord.setActId(actId);
-////// mallActWinRecord.setActName(mallActSet.getActName());
-////// mallActWinRecord.setAwardId(mallActAwardSet.getId());
-////// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
-////// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
-////// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
-////// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
-////// mallActWinRecordMapper.insert(mallActWinRecord);
-//////
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
-////// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
-////// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
-//////
-////// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
-////// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
-////// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }
-////// }
-////// }
-////// }else{
-////// //中奖
-////// //获取最新的十条抽奖记录
-////// List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
-////// if(CollUtil.isNotEmpty(records)){
-////// //中奖次数
-////// Integer count = 0;
-////// for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
-////// Integer status = mallActLuckdrawRecord.getStatus();
-////// if(MallActLuckdrawRecord.STATUS_ENABLE == status){
-////// count = count + 1;
-////// }
-////// }
-////// if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){
-////// //获取活动下该类别的奖品
-////// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
-////// if(CollUtil.isEmpty(mallActAwardSets)){
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }else{
-////// List<MallActAwardSet> idList = new ArrayList();
-////// for(MallActAwardSet mallActAwardSet : mallActAwardSets){
-////// Integer awardTotal = mallActAwardSet.getAwardTotal();
-////// Integer awardCnt = mallActAwardSet.getAwardCnt();
-////// if(awardCnt < awardTotal){
-////// idList.add(mallActAwardSet);
-////// }
-////// }
-////// MallActAwardSet mallActAwardSet = new MallActAwardSet();
-////// if(idList.size() <= 1){
-////// mallActAwardSet = idList.get(0);
-////// }else{
-////// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
-////// mallActAwardSet = idList.get(randomIdIndex);
-////// }
-////// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
-////// mallActAwardSetMapper.updateById(mallActAwardSet);
-//////
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// MallActWinRecord mallActWinRecord = new MallActWinRecord();
-////// mallActWinRecord.setMemberId(memberId);
-////// mallActWinRecord.setActId(actId);
-////// mallActWinRecord.setActName(mallActSet.getActName());
-////// mallActWinRecord.setAwardId(mallActAwardSet.getId());
-////// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
-////// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
-////// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
-////// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
-////// mallActWinRecordMapper.insert(mallActWinRecord);
-//////
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
-////// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
-////// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
-//////
-////// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
-////// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
-////// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }
-////// }
-////// }else{
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }
-////// }else{
-////// //获取活动下该类别的奖品
-////// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
-////// if(CollUtil.isEmpty(mallActAwardSets)){
-////// //抽奖记录
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
-////// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
-////// }else{
-////// apiMallAwardDetailsVo.setAwardName("未中奖");
-////// }
-////// }else{
-////// List<MallActAwardSet> idList = new ArrayList();
-////// for(MallActAwardSet mallActAwardSet : mallActAwardSets){
-////// Integer awardTotal = mallActAwardSet.getAwardTotal();
-////// Integer awardCnt = mallActAwardSet.getAwardCnt();
-////// if(awardCnt < awardTotal){
-////// idList.add(mallActAwardSet);
-////// }
-////// }
-////// MallActAwardSet mallActAwardSet = new MallActAwardSet();
-////// if(idList.size() <= 1){
-////// mallActAwardSet = idList.get(0);
-////// }else{
-////// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
-////// mallActAwardSet = idList.get(randomIdIndex);
-////// }
-////// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
-////// mallActAwardSetMapper.updateById(mallActAwardSet);
-//////
-////// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
-////// mallActLuckdrawRecord.setActId(actId);
-////// mallActLuckdrawRecord.setActName(mallActSet.getActName());
-////// mallActLuckdrawRecord.setMemberId(memberId);
-////// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
-////// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
-////// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
-//////
-////// MallActWinRecord mallActWinRecord = new MallActWinRecord();
-////// mallActWinRecord.setMemberId(memberId);
-////// mallActWinRecord.setActId(actId);
-////// mallActWinRecord.setActName(mallActSet.getActName());
-////// mallActWinRecord.setAwardId(mallActAwardSet.getId());
-////// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
-////// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
-////// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
-////// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
-////// mallActWinRecordMapper.insert(mallActWinRecord);
-//////
-////// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
-////// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
-////// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
-////// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
-//////
-////// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
-////// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
-////// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
-////// }
-////// }
-////// }
-////// }
-//////
-////// //扣竞猜积分
-////// prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt));
-////// wallet.setPrizeScore(prizeScore);
-////// wallet.setCommission(commission);
-////// mallMemberWalletMapper.updateAmountWithVersion(wallet);
-//////
-////// System.out.println(apiMallAwardDetailsVo);
-////// }
-//////
-////// @Test
-////// public void agentTest() {
-//////// agentProducer.sendDelayMsg(1L, 10000L);
-//////
-////// ApiMallActWinDetailsDto apiMallActWinDetailsDto = new ApiMallActWinDetailsDto();
-////// apiMallActWinDetailsDto.setActId(1L);
-////// apiMallActWinDetailsDto.setPageNow(1);
-////// apiMallActWinDetailsDto.setPageSize(10);
-////// Long memberId = 4L;
-////// MallMember mallMember = mallMemberMapper.selectById(memberId);
-////// if(ObjectUtil.isEmpty(mallMember)){
-////// throw new FebsException("用户不存在");
-////// }
-////// apiMallActWinDetailsDto.setMemberId(memberId);
-//////
-////// Long actId = apiMallActWinDetailsDto.getActId();
-////// MallActSet mallActSet = mallActSetMapper.selectById(actId);
-////// if(ObjectUtil.isEmpty(mallActSet)){
-////// throw new FebsException("活动不存在");
-////// }
-////// Page<ApiMallActWinDetailsVo> page = new Page<>(apiMallActWinDetailsDto.getPageNow(), apiMallActWinDetailsDto.getPageSize());
-////// IPage<ApiMallActWinDetailsVo> apiMallActWinDetailsVoIPage = mallActWinRecordMapper.selectApiMallActWinDetailsListInPage(apiMallActWinDetailsDto, page);
-////// System.out.println(apiMallActWinDetailsVoIPage);
-////// }
-//////
-////// @Test
-////// public void insertAgentTest() {
-//////// AgentInfo agentInfo = new AgentInfo();
-//////// agentInfo.setOrderType(2);
-//////// agentInfo.setOrderCnt(2000);
-//////// agentInfo.setLastCnt(3);
-//////// agentInfo.setDirectIncome(BigDecimal.valueOf(50));
-//////// agentInfo.setTeamIncome(BigDecimal.valueOf(15));
-//////// agentInfo.setTeamIncomeType(2);
-////////
-//////// DataDictionaryCustom data = new DataDictionaryCustom();
-//////// data.setType("AGENT_LEVEL_REQUIRE");
-//////// data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
-//////// data.setValue(JSONObject.toJSONString(agentInfo));
-//////// dataDictionaryCustomMapper.insert(data);
-////// }
-//////
-////// @Test
-////// public void insertData() {
-////// int i = 1;
-////// for (AgentLevelEnum value : AgentLevelEnum.values()) {
-////// DataDictionaryCustom data = new DataDictionaryCustom();
-////// data.setType("AGENT_LEVEL");
-////// data.setDescription(value.getName());
-////// data.setCode(value.name());
-////// data.setValue(String.valueOf(i));
-////// dataDictionaryCustomMapper.insert(data);
-////// }
-//////
-////// }
-//////
-////// public static void main(String[] args) {
-////// getJson();
-////// }
-//////
-////// public static void getJson(){
-////// AgentLevelUpdateDto adminAgentLevelUpdateInfoVo = new AgentLevelUpdateDto();
-////// String jsonStr = "{\"directIncome\":50,\"lastCnt\":3,\"orderCnt\":2000,\"orderType\":2,\"teamIncome\":15,\"teamIncomeType\":2}";
-////// JSONObject jsonObject = JSONObject.parseObject(jsonStr);
-////// adminAgentLevelUpdateInfoVo.setDirectIncome(new BigDecimal((jsonObject.get("directIncome")==null?0:jsonObject.get("directIncome")).toString()));
-////// adminAgentLevelUpdateInfoVo.setLastCnt(Integer.parseInt((jsonObject.get("lastCnt")==null?0:jsonObject.get("lastCnt")).toString()));
-////// adminAgentLevelUpdateInfoVo.setOrderCnt(Integer.parseInt((jsonObject.get("orderCnt")==null?0:jsonObject.get("orderCnt")).toString()));
-////// adminAgentLevelUpdateInfoVo.setOrderType(Integer.parseInt(jsonObject.get("orderType").toString()));
-////// adminAgentLevelUpdateInfoVo.setTeamIncome(new BigDecimal((jsonObject.get("teamIncome")==null?0:jsonObject.get("teamIncome")).toString()));
-////// adminAgentLevelUpdateInfoVo.setTeamIncomeType(Integer.parseInt(jsonObject.get("orderType").toString()));
-////// adminAgentLevelUpdateInfoVo.setId(14L);
-////// AgentLevelUpdateDto agentLevelUpdateDtoJson = new AgentLevelUpdateDto();
-////// agentLevelUpdateDtoJson.setDirectIncome(adminAgentLevelUpdateInfoVo.getDirectIncome());
-////// agentLevelUpdateDtoJson.setLastCnt(adminAgentLevelUpdateInfoVo.getLastCnt());
-////// agentLevelUpdateDtoJson.setOrderCnt(adminAgentLevelUpdateInfoVo.getOrderCnt());
-////// agentLevelUpdateDtoJson.setTeamIncome(adminAgentLevelUpdateInfoVo.getTeamIncome());
-////// agentLevelUpdateDtoJson.setOrderType(adminAgentLevelUpdateInfoVo.getOrderType());
-////// agentLevelUpdateDtoJson.setTeamIncomeType(adminAgentLevelUpdateInfoVo.getTeamIncomeType());
-////// JSONObject jsonObjectA = (JSONObject)JSONObject.toJSON(agentLevelUpdateDtoJson);
-////// System.out.println(jsonObjectA.toJSONString());
-////// }
-//////
-////// @Test
-////// public void autoLevelUp() {
-////// // agentService.autoUpAgentLevel(3L);
-//////// agentProducer.sendAutoLevelUpMsg(5L);
-//////
-////// agentProducer.sendReturnMoneyMsg(2L);
-////// }
-//////
-////// @Test
-////// public void returnMoney() {
-////// // agentService.autoUpAgentLevel(3L);
-//////// agentProducer.sendAutoLevelUpMsg(5L);
-//////// agentProducer.sendReturnMoneyMsg(52L);
-////// agentService.returnMoneyToAgent(52L);
-////// }
-//////
-////// @Test
-////// public void bigdecimalTest() {
-////// BigDecimal aa = new BigDecimal("1.345");
-//////
-////// System.out.println(aa.setScale(2, RoundingMode.DOWN));
-////// System.out.println(aa.setScale(2, RoundingMode.UP));
-////// }
-//////
-////// @Autowired
-////// private ProfitJob profitJob;
-//////
-////// @Test
-////// public void profitJobTest() {
-////// profitJob.profitJob();
-////// }
-//////
-//////
-//// @Autowired
-//// private AgentConsumer agentConsumer;
-////
-//// @Test
-//// public void orderReturnTest() {
-//// agentConsumer.getScoreMsg(215L);
-//// }
-//}
+}
--
Gitblit v1.9.1