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