From 076f5a4f0a7c5a4d3a6d3a1a61ff96a0091e3320 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Sat, 06 May 2023 15:04:21 +0800 Subject: [PATCH] 星级补贴逻辑修改 --- src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java | 33 - src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html | 3 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 134 +++--- src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 14 src/test/java/cc/mrbird/febs/ProfitTest.java | 7 src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java | 2 src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java | 2 src/main/resources/templates/febs/views/modules/mallMember/agentList.html | 14 src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java | 4 src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 69 ++++ src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 8 src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java | 6 src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html | 15 src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html | 3 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 8 src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java | 8 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java | 64 +++ src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 8 src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java | 2 src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html | 76 ++++ src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java | 5 src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java | 2 src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java | 2 src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java | 3 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 4 src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java | 6 src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java | 2 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 99 +++++ src/main/resources/mapper/modules/MallMemberMapper.xml | 16 src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html | 40 + src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 4 src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java | 2 src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 25 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 50 ++ src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 3 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 7 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java | 15 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 193 ++++++++++ src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 11 src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml | 1 src/main/resources/templates/febs/views/modules/order/orderList.html | 17 src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java | 2 src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html | 19 + 45 files changed, 877 insertions(+), 135 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index f0cafc8..9ecd9a5 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -6,6 +6,14 @@ @Getter public enum DataDictionaryEnum { /** + * 星级补贴百分比 + */ + PERK_AGENT_ACHIEVE_PERCENT("PERK_SET","PERK_AGENT_ACHIEVE_PERCENT"), + /** + * 星级补贴总数 + */ + PERK_AGENT_ACHIEVE_TOTAL("PERK_SET","PERK_AGENT_ACHIEVE_TOTAL"), + /** * 贡献点设置-购买商品获得 */ STAR_GET("PERK_SET","STAR_GET"), diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java index 50cd54d..f0fd5ad 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java @@ -4,11 +4,21 @@ import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.excl.ExcelSheetPO; +import cc.mrbird.febs.common.utils.excl.ExcelUtil; +import cc.mrbird.febs.common.utils.excl.ExcelVersion; +import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper; import cc.mrbird.febs.mall.service.IAdminMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; @@ -16,8 +26,15 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -29,6 +46,8 @@ public class AdminMallMemberController extends BaseController { private final IAdminMallMemberService mallMemberService; + private final MallMemberWalletMapper mallMemberWalletMapper; + private final MallMemberMapper mallMemberMapper; private final IApiMallMemberService apiMallMemberService; /** @@ -79,6 +98,30 @@ @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") public FebsResponse openAccount(@NotNull(message = "{required}") @PathVariable Long id) { return mallMemberService.openAccount(id); + } + + /** + * 会员列表---禁止 + * + * @param id + * @return + */ + @GetMapping("outsideWithYes/{id}") + @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "禁止失败") + public FebsResponse outsideWithYes(@NotNull(message = "{required}") @PathVariable Long id) { + return mallMemberService.outsideWithType(id,1); + } + + /** + * 会员列表---开启 + * + * @param id + * @return + */ + @GetMapping("outsideWithNo/{id}") + @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败") + public FebsResponse outsideWithNo(@NotNull(message = "{required}") @PathVariable Long id) { + return mallMemberService.outsideWithType(id,2); } /** @@ -195,6 +238,15 @@ @ControllerEndpoint(operation = "会员提现-同意", exceptionMessage = "操作失败") public FebsResponse chargeAgree(@NotNull(message = "{required}") @PathVariable Long id) { return mallMemberService.chargeAgree(id); + } + + /** + * 会员提现-同意 + */ + @PostMapping("chargeAgreeWithType") + @ControllerEndpoint(operation = " 会员提现-同意", exceptionMessage = "操作失败") + public FebsResponse chargeAgreeWithType(@Valid MallMemberWithdraw mallMemberWithdraw) { + return mallMemberService.chargeAgreeWithType(mallMemberWithdraw); } /** @@ -482,4 +534,51 @@ return new FebsResponse().success().data(dataTable); } + @GetMapping("exportMember") + @ControllerEndpoint(operation = "会员列表", exceptionMessage = "导出失败") + public FebsResponse exportMemberList(MallMember mallMember, HttpServletResponse response) throws IOException { + + List<ExcelSheetPO> res = new ArrayList<>(); + ExcelSheetPO orderSheet = new ExcelSheetPO(); + String title = "会员列表"; + orderSheet.setSheetName(title); + orderSheet.setTitle(title); + String[] header = {"登录账户", "手机号码", "名称", "余额", "现金积分", "贡献点", "补贴额度", "凭证", "凭证现金"}; + orderSheet.setHeaders(header); + + QueryRequest request = new QueryRequest(); + request.setPageNum(1); + request.setPageSize(9999); + List<MallMember> dataList = mallMemberMapper.selectList(null); + List<List<Object>> list = new ArrayList<>(); + if (dataList.size() > 0) { + for (MallMember item : dataList) { + List<Object> temp = new ArrayList<>(); + temp.add(item.getAccountLogin()); + temp.add(item.getPhone()); + temp.add(item.getName()); + + Long memberId = item.getId(); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + if(ObjectUtil.isNotNull(mallMemberWallet)){ + temp.add(mallMemberWallet.getBalance()); + temp.add(mallMemberWallet.getPrizeScore()); + temp.add(mallMemberWallet.getStar()); + temp.add(mallMemberWallet.getTotalScore()); + temp.add(mallMemberWallet.getVoucherCnt()); + temp.add(mallMemberWallet.getVoucherAmount()); + } + list.add(temp); + } + } + orderSheet.setDataList(list); + res.add(orderSheet); + response = ResponseHeadUtil.setExcelHead(response); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8")); + OutputStream os = response.getOutputStream(); + ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); + return null; + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java index ba47f51..4c7a4bb 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java @@ -14,6 +14,7 @@ import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.MallExpressInfoMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; import cc.mrbird.febs.mall.service.IAdminMallOrderService; @@ -52,6 +53,7 @@ private final IAdminMallOrderService adminMallOrderService; private final MallExpressInfoMapper mallExpressInfoMapper; private final MallMemberMapper mallMemberMapper; + private final MallOrderInfoMapper mallOrderInfoMapper; /** * 订单列表 @@ -340,6 +342,68 @@ return null; } + @GetMapping("exportOrderListAll") + @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败") + public FebsResponse exportOrderListAll(MallOrderInfo mallOrderInfo, HttpServletResponse response) throws IOException { + + List<ExcelSheetPO> res = new ArrayList<>(); + ExcelSheetPO orderSheet = new ExcelSheetPO(); + String title = "订单列表"; + orderSheet.setSheetName(title); + orderSheet.setTitle(title); + String[] header = {"订单编号", "登录账户", "购买人", "手机号码", "订单金额", "状态"}; + orderSheet.setHeaders(header); + + QueryRequest request = new QueryRequest(); + request.setPageNum(1); + request.setPageSize(9999); + List<MallOrderInfo> dataList = mallOrderInfoMapper.selectList(null); + List<List<Object>> list = new ArrayList<>(); + if (dataList.size() > 0) { + for (MallOrderInfo item : dataList) { + List<Object> temp = new ArrayList<>(); + temp.add(item.getOrderNo()); + temp.add(mallMemberMapper.selectById(item.getMemberId()).getAccountLogin()); + temp.add(mallMemberMapper.selectById(item.getMemberId()).getName()); + temp.add(mallMemberMapper.selectById(item.getMemberId()).getPhone()); + temp.add(item.getAmount()); + switch (item.getStatus()) { + case 1: + temp.add("待支付"); + break; + case 2: + temp.add("待发货"); + break; + case 3: + temp.add("待收货"); + break; + case 4: + temp.add("已完成"); + break; + case 5: + temp.add("退款中"); + break; + case 6: + temp.add("已退款"); + break; + case 7: + temp.add("已取消"); + break; + default: + } + list.add(temp); + } + } + orderSheet.setDataList(list); + res.add(orderSheet); + response = ResponseHeadUtil.setExcelHead(response); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8")); + OutputStream os = response.getOutputStream(); + ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); + return null; + } + @PostMapping(value = "/importDeliver") @ControllerEndpoint(operation = "导入发货", exceptionMessage = "导入失败") public FebsResponse importDeliver(@RequestBody MultipartFile file) throws IOException { diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java index a24183c..1518632 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java @@ -115,6 +115,14 @@ DataDictionaryEnum.AGENT_PERK.getType(), DataDictionaryEnum.AGENT_PERK.getCode(), hlmBasicPerkDto.getAgentPerk()); + commonService.updateDataDic( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode(), + hlmBasicPerkDto.getPerkAgentAchieveTotal()); + commonService.updateDataDic( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode(), + hlmBasicPerkDto.getPerkAgentAchievePercent()); return new FebsResponse().success(); } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java index 767c777..dcb5383 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java @@ -155,6 +155,21 @@ } /** + * 提现列表-付款方式 + * @param id + * @param model + * @return + */ + @GetMapping("chargeFlowListType/{id}") + @RequiresPermissions("chargeFlowListType:update") + public String chargeFlowListType(@PathVariable long id, Model model) { + AdminMallMemberPaymentVo data = new AdminMallMemberPaymentVo(); + data.setId(id); + model.addAttribute("chargeUpdateInfo", data); + return FebsUtil.view("modules/mallMember/chargeFlowListType"); + } + + /** * 代理列表 * @return */ diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java index 0efed2f..7e5e601 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java @@ -215,6 +215,20 @@ String agentPerk = ObjectUtil.isEmpty(agentPerkDic.getValue()) ? "0" : agentPerkDic.getValue(); hlmBasicPerkDto.setAgentPerk(agentPerk); } + DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()); + if (perkAgentAchieveTotalDic != null) { + String perkAgentAchieveTotal = ObjectUtil.isEmpty(perkAgentAchieveTotalDic.getValue()) ? "0" : perkAgentAchieveTotalDic.getValue(); + hlmBasicPerkDto.setPerkAgentAchieveTotal(perkAgentAchieveTotal); + } + DataDictionaryCustom perkAgentAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode()); + if (perkAgentAchievePercentDic != null) { + String perkAgentAchievePercent = ObjectUtil.isEmpty(perkAgentAchievePercentDic.getValue()) ? "0" : perkAgentAchievePercentDic.getValue(); + hlmBasicPerkDto.setPerkAgentAchievePercent(perkAgentAchievePercent); + } model.addAttribute("hlmBasicPerk", hlmBasicPerkDto); return FebsUtil.view("modules/system/hlmBasicPerk"); } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java index 8bc8028..67f197e 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java @@ -9,6 +9,8 @@ private String name; + private String accountLogin; + private String account; private String level; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java index e6074c3..0578fe2 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java @@ -27,5 +27,13 @@ * 基础补贴-代理商补贴 */ private String agentPerk; + /** + * 星级补贴总数 + */ + private String perkAgentAchieveTotal; + /** + * 星级补贴百分比 + */ + private String perkAgentAchievePercent; } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java index 0dbafff..e6f253c 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java @@ -23,6 +23,8 @@ private String name; + private String accountLogin; + private Integer orderType; private String startTime; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java index f8cd89a..4acb2b3 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java @@ -9,6 +9,8 @@ private String name; + private String accountLogin; + private String phone; private Integer status; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java index 4f9560b..ae38f06 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java @@ -7,6 +7,8 @@ @ApiModel(value = "MoneyFlowListDto", description = "接收参数类") public class MoneyFlowListDto { + private String accountLogin; + private String name; private String phone; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java index c873610..d637872 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java @@ -15,6 +15,10 @@ public class RegisterDto { @NotBlank(message = "账号不能为空") + @ApiModelProperty(value = "账号", example = "hjsj") + private String accountLogin; + + @NotBlank(message = "手机号不能为空") @ApiModelProperty(value = "手机号", example = "15773001234") private String account; diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java index c0d175d..e177ca0 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -18,6 +18,10 @@ public class MallMember extends BaseEntity { /** + * 登录账号 + */ + private String accountLogin; + /** * 姓名 */ private String name; @@ -160,4 +164,7 @@ //内转标识 1:开启 2:关闭 private Integer insideWith; + + //提现开关 1:开启 2:关闭 + private Integer outsideWith; } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java index aa9a6cd..d0fba2a 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.entity; import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -32,4 +33,9 @@ private String withdrawNo; private String remark; + /** + * 绿色凭证 + */ + @TableField(exist = false) + private String agreeType; } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java index 5b05c03..091b5bd 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java @@ -52,5 +52,8 @@ private String name; @TableField(exist = false) + private String accountLogin; + + @TableField(exist = false) private String phone; } 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 8318cac..492c3b6 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java @@ -103,4 +103,8 @@ List<MallMember> selectByRole(@Param("type") int type, @Param("state")int state); List<MallMember> selectByLevel( @Param("level")String type); + + MallMember selectByAccountLogin(@Param("accountLogin")String accountLogin); + + MallMember selectInfoByAccountLoginAndPwd(@Param("accountLogin")String account, @Param("password")String md5Pwd); } 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 c000908..fe90cf4 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -7,6 +7,7 @@ import cc.mrbird.febs.mall.entity.MallMoneyFlow; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper; +import cc.mrbird.febs.mall.service.IAgentService; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMemberProfitService; @@ -36,6 +37,8 @@ @Autowired private IMemberProfitService memberProfitService; + @Autowired + private IAgentService agentService; /** * 代理分红 @@ -106,6 +109,14 @@ memberProfitService.achieveReleaseJob(); } + /** + * 代理星级补贴 + */ + @Scheduled(cron = "0 0 0 * * ?") + public void perkAgentAchieveJob() { + agentService.perkAgent(); + } + diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java index 529b72d..559c53f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java @@ -5,6 +5,7 @@ import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.vo.*; +import com.alipay.api.domain.AlipayOfflineTrade; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -116,4 +117,8 @@ FebsResponse searchInfo(Long id); FebsResponse accountInfo(Long id); + + FebsResponse outsideWithType(Long id, int i); + + FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdraw); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index 53c62d4..ee9999f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java @@ -37,4 +37,6 @@ * 按购买业绩(不按权益积分)每天静态释0.6%~1.2% */ void achieveReleasePercent(); + + void perkAgent(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java index 900d4f2..1e1ee93 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java @@ -806,6 +806,75 @@ return new FebsResponse().success().message("可以转账"); } + @Override + public FebsResponse outsideWithType(Long id, int i) { + MallMember mallMember = mallMemberMapper.selectById(id); + if(ObjectUtil.isEmpty(mallMember)) { + return new FebsResponse().fail().message("会员信息不存在"); + } + mallMember.setOutsideWith(i); + mallMemberMapper.updateById(mallMember); + return new FebsResponse().success(); + } + + @Override + public FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdrawInfo) { + MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(mallMemberWithdrawInfo.getId()); + + if(ObjectUtil.isEmpty(mallMemberWithdraw)){ + return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); + } + if(1 != mallMemberWithdraw.getStatus()){ + return new FebsResponse().fail().message("当前状态不是提现中"); + } + + Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId(); + MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId); + if(ObjectUtil.isEmpty(mallMemberBank)){ + return new FebsResponse().fail().message("提现银行卡已删除"); + } + String agreeType = mallMemberWithdrawInfo.getAgreeType(); + if("1".equals(agreeType)){ + mallMemberWithdraw.setStatus(2); + mallMemberWithdrawMapper.updateById(mallMemberWithdraw); + + QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>(); + flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); + flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); + MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper); + if(ObjectUtil.isNotEmpty(mallMoneyFlow)){ + mallMoneyFlow.setStatus(2); + mallMoneyFlowMapper.updateById(mallMoneyFlow); + } + return new FebsResponse().success(); + }else{ + String bankName = mallMemberBank.getBankName(); + NBYHResponse nbyhResponse = new NBYHResponse(); + if("宁波银行".equals(bankName)){ + nbyhResponse = nbyhService.tradeSinge(mallMemberWithdraw.getId()); + }else{ + nbyhResponse = nbyhService.tradeSingeOuterTransfer(mallMemberWithdraw.getId()); + } + if(nbyhResponse.isFlag()){ + mallMemberWithdraw.setStatus(2); + mallMemberWithdrawMapper.updateById(mallMemberWithdraw); + + QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>(); + flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); + flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); + MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper); + if(ObjectUtil.isNotEmpty(mallMoneyFlow)){ + mallMoneyFlow.setStatus(2); + mallMoneyFlowMapper.updateById(mallMoneyFlow); + } + return new FebsResponse().success().message(nbyhResponse.getMsg()); + }else{ + return new FebsResponse().fail().message(nbyhResponse.getMsg()); + } + } + + } + private String refererIds(String parentId) { boolean flag = false; if (StrUtil.isBlank(parentId)) { diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 2e1f3a1..7f0f76c 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -52,6 +52,8 @@ private final MallMoneyFlowMapper mallMoneyFlowMapper; private final MallMqRecordMapper mallMqRecordMapper; + private final ICommonService commonService; + @Override @Transactional(rollbackFor = Exception.class) public void autoUpAgentLevel(Long memberId) { @@ -241,12 +243,41 @@ * 从最顶级级别的合伙人开始补贴 * 补贴完,把已经补贴的合伙人加入下一个级别 */ - List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); - List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); - List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); - List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); - List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); - List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); + + DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()); + BigDecimal perkAgentAchieveTotal = new BigDecimal(perkAgentAchieveTotalDic.getValue()); + //星级奖励百分比等于每个级别的累计之和 + List<DataDictionaryCustom> starPerkDics = dataDictionaryCustomMapper.selectDicByType( + "AGENT_LEVEL_REQUIRE"); + BigDecimal totalProfitProp = BigDecimal.ZERO; + if(CollUtil.isNotEmpty(starPerkDics)){ + for(DataDictionaryCustom starPerkDic : starPerkDics){ + String starPerkStr = starPerkDic.getValue(); + AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); + BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); + String code = starPerkDic.getCode(); + //存在当前级别的会员,则加上这个比例的补贴 + List<MallMember> mallMembers = memberMapper.selectByLevel(code); + if(CollUtil.isNotEmpty(mallMembers)){ + totalProfitProp = totalProfitProp.add(profitProp); + } + } + } + + if(totalProfitProp.compareTo(BigDecimal.ZERO) > 0){ + BigDecimal perkTotal = amount.multiply(totalProfitProp).setScale(2,BigDecimal.ROUND_DOWN); + perkAgentAchieveTotal = perkAgentAchieveTotal.add(perkTotal); + perkAgentAchieveTotalDic.setValue(perkAgentAchieveTotal.toString()); + dataDictionaryCustomMapper.updateById(perkAgentAchieveTotalDic); + } +// List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); +// List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); +// List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); +// List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); +// List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); +// List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); /** * 团队补贴 @@ -345,7 +376,8 @@ * @return */ public List<MallMember> getStarRecord(List<MallMember> mallMembersOlds,String LevelParam,BigDecimal amount,String orderNo,Long memberId,int starPerkType){ - + //实际补贴总金额 + BigDecimal totalPerkAgentAmount = BigDecimal.ZERO; //根据用户的level获取用户 List<MallMember> mallMemberStars = memberMapper.selectMemberWithLevel(LevelParam); if(CollUtil.isNotEmpty(mallMembersOlds)){ @@ -367,13 +399,32 @@ if(starSum <= 0){ return mallMemberStars; } + + BigDecimal totalProfitProp = BigDecimal.ZERO; + List<DataDictionaryCustom> agentLevelRequireDics = dataDictionaryCustomMapper.selectDicByType("AGENT_LEVEL_REQUIRE"); + if(CollUtil.isNotEmpty(agentLevelRequireDics)){ + for(DataDictionaryCustom dic : agentLevelRequireDics){ + String starPerkStr = dic.getValue(); + AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); + //当前星级所占份数 + BigDecimal profitProp = agentInfo.getProfitProp().abs(); + List<MallMember> mallMembers = memberMapper.selectByLevel(dic.getCode()); + if(CollUtil.isNotEmpty(mallMembers)){ + totalProfitProp = profitProp.add(totalProfitProp); + } + } + } //星级补贴比例 DataDictionaryCustom starPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( "AGENT_LEVEL_REQUIRE", LevelParam); String starPerkStr = starPerkDic.getValue(); AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class); - BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); +// BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100)); + //当前星级所占份数 + BigDecimal profitProp = agentInfo.getProfitProp().abs(); + //每一份多少钱 + amount = amount.divide(totalProfitProp,4,BigDecimal.ROUND_DOWN); //当前等级的星级补贴 BigDecimal starPerkAmountSum = amount.multiply(profitProp); //当前等级的每一个贡献点的补贴金额 @@ -416,6 +467,7 @@ mallMoneyFlows.add(mallMoneyFlow); reduceStar(mallMemberWallet.getMemberId(),starPerkAmount); + totalPerkAgentAmount = totalPerkAgentAmount.add(starPerkAmount); } count = count + 1; if (count % 1000 == 0 || count == mallMemberWallets.size()) { @@ -452,6 +504,16 @@ } } } + + log.info("============实际补贴金额:{}",totalPerkAgentAmount.setScale(2,BigDecimal.ROUND_DOWN)); + DataDictionaryCustom totalPerkAgentAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode() + ); + totalPerkAgentAmountDic.setValue( + new BigDecimal(totalPerkAgentAmountDic.getValue()).subtract(totalPerkAgentAmount).setScale(2,BigDecimal.ROUND_DOWN).toString() + ); + dataDictionaryCustomMapper.updateById(totalPerkAgentAmountDic); return mallMemberStars; } @@ -591,15 +653,41 @@ ); List<MallMember> mallMembers = memberMapper.selectByLevel(MemberLevelEnum.SECOND_LEVEL.getType()); + BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue()) + .multiply(new BigDecimal(0.001)); + BigDecimal totalAchieve = BigDecimal.ZERO; + Integer totalStar = 0; if(CollUtil.isNotEmpty(mallMembers)){ for(MallMember mallMember : mallMembers){ //总业绩 - BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); - BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue()) - .multiply(new BigDecimal(0.001)); - //每个人的补贴额度 - BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent); + BigDecimal achieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); + totalAchieve = totalAchieve.add(achieve); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + Integer star = mallMemberWallet.getStar(); + totalStar = totalStar + star; + } + } + if(BigDecimal.ZERO.compareTo(totalAchieve) >= 0){ + return; + } + //总释放=总业绩*一星每日业绩每日释放业绩到余额的千分比 + totalAchieve = totalAchieve.multiply(jobAchieveReleasePercent); + + if(totalStar <= 0){ + return; + } + //一个贡献点的价值 + BigDecimal divide = totalAchieve.divide(new BigDecimal(totalStar), 2, BigDecimal.ROUND_DOWN); + + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember mallMember : mallMembers){ + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + Integer star = mallMemberWallet.getStar(); + //每个人贡献值数量*一个贡献点的价值=获取的收益 + BigDecimal multiply = divide.multiply(new BigDecimal(star)).setScale(2,BigDecimal.ROUND_DOWN); + BigDecimal totalScore = mallMemberWallet.getTotalScore(); if(BigDecimal.ZERO.compareTo(multiply) < 0){ if(BigDecimal.ZERO.compareTo(totalScore) < 0){ @@ -623,6 +711,85 @@ } } } + + + +// if(CollUtil.isNotEmpty(mallMembers)){ +// for(MallMember mallMember : mallMembers){ +// //总业绩 +// BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId()); +// //每个人的补贴额度 +// BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent); +// MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); +// BigDecimal totalScore = mallMemberWallet.getTotalScore(); +// if(BigDecimal.ZERO.compareTo(multiply) < 0){ +// if(BigDecimal.ZERO.compareTo(totalScore) < 0){ +// if(totalScore.compareTo(multiply) < 0){ +// multiply = totalScore; +// } +// //减少补贴额度 +// mallMemberWalletMapper.reduceTotalScoreById(multiply, mallMemberWallet.getId()); +// +// reduceStar(mallMember.getId(),multiply); +// +// mallMemberWalletMapper.addBalanceById(multiply, mallMemberWallet.getId()); +// +// mallMoneyFlowService.addMoneyFlow( +// mallMember.getId(), +// multiply, +// MoneyFlowTypeEnum.STATIC_BONUS.getValue(), +// MallUtils.getOrderNum(), +// FlowTypeEnum.BALANCE.getValue()); +// } +// } +// } +// } + } + + @Override + public void perkAgent() { + DataDictionaryCustom totalAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode() + ); + if(ObjectUtil.isEmpty(totalAmountDic)){ + return; + } + //星级补贴总数 + BigDecimal totalAmount = new BigDecimal(totalAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); + if(BigDecimal.ZERO.compareTo(totalAmount) >= 0){ + return; + } + + DataDictionaryCustom perkAgentPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(), + DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode() + ); + if(ObjectUtil.isEmpty(perkAgentPercentDic)){ + return; + } + //星级补贴百分比 + BigDecimal perkAgentPercent = new BigDecimal(perkAgentPercentDic.getValue()).abs().divide(new BigDecimal(100)); + BigDecimal amount = totalAmount.multiply(perkAgentPercent); + if(BigDecimal.ZERO.compareTo(amount) >= 0){ + return; + } +// //星级补贴总数 +// totalAmountDic.setValue(totalAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN).toString()); +// dataDictionaryCustomMapper.updateById(totalAmountDic); + + String orderNo = MallUtils.getOrderNum("SPA"); + /** + * 星级奖励 + * 从最顶级级别的合伙人开始补贴 + * 补贴完,把已经补贴的合伙人加入下一个级别 + */ + List<MallMember> sevenLevelRecord = getStarRecord(null, MemberLevelEnum.SEVEN_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue()); + List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord, MemberLevelEnum.SIX_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue()); + List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord, MemberLevelEnum.FIFTH_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue()); + List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord, MemberLevelEnum.FOUR_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue()); + List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); + List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); } 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 384cb75..f2855ed 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 @@ -67,18 +67,23 @@ @Transactional(rollbackFor = Exception.class) @Override public FebsResponse register(RegisterDto registerDto) { - MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); +// MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); +// if (mallMember != null) { +// throw new FebsException("该账号已被占用"); +// } + String accountLogin = registerDto.getAccountLogin(); + MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin); if (mallMember != null) { throw new FebsException("该账号已被占用"); } - List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName()); - if (CollUtil.isNotEmpty(mallMembers)) { - MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount()); - if (registerAppeal == null || registerAppeal.getStatus() != 1) { - return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在"); - } - } +// List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName()); +// if (CollUtil.isNotEmpty(mallMembers)) { +// MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount()); +// if (registerAppeal == null || registerAppeal.getStatus() != 1) { +// return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在"); +// } +// } String account = registerDto.getAccount(); if (!"admin".equals(registerDto.getRegistType())) { @@ -90,6 +95,7 @@ } mallMember = new MallMember(); + mallMember.setAccountLogin(accountLogin); mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); // 判断账号类型 @@ -160,7 +166,8 @@ public FebsResponse toLogin(LoginDto loginDto) { String md5Pwd = SecureUtil.md5(loginDto.getPassword()); - MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); +// MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); + MallMember mallMember = this.baseMapper.selectInfoByAccountLoginAndPwd(loginDto.getAccount(), md5Pwd); if (mallMember == null) { throw new FebsException("用户不存在或账号密码错误"); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java index d24988d..d9eddd8 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java @@ -53,6 +53,12 @@ public void withdrawal(WithdrawalDto withdrawalDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = mallMemberService.getById(memberId); + + Integer outsideWith = mallMember.getOutsideWith() == null ? 2 :mallMember.getOutsideWith(); + if (1 != outsideWith) { + throw new FebsException("功能升级中"); + } + if (StrUtil.isBlank(mallMember.getTradePassword())) { throw new FebsException("未设置支付密码"); } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java index eb25e51..77aa70f 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java @@ -13,6 +13,8 @@ private String name; + private String accountLogin; + private String phone; private String level; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java index c9ace57..67b20a4 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java @@ -13,6 +13,8 @@ private String name; + private String accountLogin; + private String phone; private String bindPhone; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java index 8807def..4b7b1a0 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java @@ -47,6 +47,8 @@ private String name; + private String accountLogin; + private String phone; private String address; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java index 49df3af..80053ce 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java @@ -26,6 +26,8 @@ private String name; + private String accountLogin; + private String phone; private String bindPhone; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java index 1f931a5..65b4161 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java @@ -28,6 +28,8 @@ private String name; + private String accountLogin; + private String phone; private Integer status; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java index a5aa7c2..20d222a 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java @@ -15,6 +15,9 @@ @ApiModelProperty(value = "id") private Long id; + @ApiModelProperty(value = "登录账号") + private String accountLogin; + @ApiModelProperty(value = "昵称") private String name; diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java index d3509a0..00d9202 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.io.*; import java.math.BigDecimal; import java.net.*; @@ -107,15 +108,12 @@ * 接收报文url */ // private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess"; -// private static final String URL = "http://220.168.79.89:9080/directlink/httpAccess"; - private static final String URL = "http://747f9407.r3.cpolar.top/directlink/httpAccess"; -// private static final String URL = "http://1d6d-220-168-79-89.ngrok.io/directlink/httpAccess"; + private static final String URL = "http://n5z7ej.natappfree.cc/directlink/httpAccess"; /** * 签名ip */ // private static final String VERIFY_IP = "127.0.0.1"; - private static final String VERIFY_IP = "3b425db8.r10.cpolar.top"; -// private static final String VERIFY_IP = "747f9407.r3.cpolar.top"; + private static final String VERIFY_IP = "server.natappfree.cc"; /** * 付款账号 */ @@ -123,7 +121,8 @@ /** * 签名端口 */ - private static final int VERIFY_PORT = 8010; + private static final int VERIFY_PORT = 41933; +// private static final int VERIFY_PORT = 8010; /** * cookies @@ -154,22 +153,12 @@ try { InetAddress addr = InetAddress.getByName(VERIFY_IP); - String hostName = addr.getHostName(); -// Socket socket = new Socket(hostName, VERIFY_PORT); - String hostAddress = addr.getHostAddress(); - SocketAddress address = new InetSocketAddress(VERIFY_IP, 8010); + Socket socket = new Socket(addr, VERIFY_PORT); - Proxy proxy = new Proxy(Proxy.Type.HTTP, address); - Socket socket = new Socket(proxy); - int port = socket.getPort(); System.out.println("发送登录请求:"+addr); - System.out.println("发送登录请求:"+address); - System.out.println("发送登录请求:"+hostName); - System.out.println("发送登录请求:"+port); + System.out.println("发送登录请求:"+socket.getKeepAlive()); // System.out.println("发送登录请求:"); // test.executeServerHttpService("srv001_signOn"); -// System.out.println("\n发送转账结果查询请求:"); -// executeServerHttpService("srv008_transferResultInfoQuery","转账结果查询","2023032910585227466"); // System.out.println("\n发送跨行转账请求:"); // test.executeServerHttpService("srv007_singleOuterTransfer","跨行转账",null); // System.out.println("\n发送行内转账请求:"); @@ -180,11 +169,11 @@ } - @Autowired + @Resource private MallMemberWithdrawMapper mallMemberWithdrawMapper; - @Autowired + @Resource private MallMemberWithdrawMsgMapper mallMemberWithdrawMsgMapper; - @Autowired + @Resource private MallMemberBankMapper mallMemberBankMapper; @Override @@ -683,6 +672,8 @@ try { addr = InetAddress.getByName(VERIFY_IP); socket = new Socket(addr, VERIFY_PORT); +// InetAddress localHost = addr.getLocalHost(); +// socket = new Socket(localHost, VERIFY_PORT); // 发送 BufferedWriter wr = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream(),"GBK")); diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java index 927279a..30df9c7 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java @@ -29,71 +29,71 @@ @Autowired private IMemberProfitService memberProfitService; -// @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) -// public void agentReturn(Message message, Channel channel) { -// log.info("消费者:{}", new String(message.getBody())); -// } -// -// @RabbitListener(queues = "hlm_queue_order_delay") -// public void orderCancelDelay(String id) { -// try { -// orderInfoService.autoCancelOrder(Long.parseLong(id)); -// } catch (Exception e) { -// log.error("订单超时支付异常", e); -// } -// } -// -// @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP) -// public void agentAutoLevelUp(String id) { -// log.info("收到合伙人自动升级消息:{}", id); -// try { -// agentService.autoUpAgentLevel(Long.parseLong(id)); -// } catch (Exception e) { -// log.error("合伙人自动升级异常", e); -// } -// } -// -// @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY) -// public void agentReturnMoney(String orderId) { -// log.info("收到返利消息:{}", orderId); -// try { -// agentService.returnMoneyToAgent(Long.parseLong(orderId)); -// } catch (Exception e) { -// log.error("返利异常", e); -// } -// } -// -// @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY) -// public void orderReturnMoney(String orderId) { -// log.info("收到订单返利消息:{}", orderId); -// try { -// memberProfitService.dynamicProfit(Long.parseLong(orderId)); -// } catch (Exception e) { -// log.error("订单返利异常:", e); -// } -// } -// -// @RabbitListener(queues = QueueConstants.PERK_MONEY) -// public void perkMoneyConsumer(String id) { -// log.info("收到补贴消息:{}", id); -// try { -// agentService.perkMoneyConsumer(Long.parseLong(id)); -// } catch (Exception e) { -// log.error("用户补贴异常", e); -// // todo 更新表 -// -// } -// } -// -// @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE) -// public void forceVoucherSaleConsumer(String price) { -// log.info("收到强制卖出消息,价格:{}",price); -// try { -// memberProfitService.selaHalfVoucher(price); -// } catch (Exception e) { -// log.error("强制卖出异常", e); -// // todo 更新表 -// -// } -// } + @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) + public void agentReturn(Message message, Channel channel) { + log.info("消费者:{}", new String(message.getBody())); + } + + @RabbitListener(queues = "hlm_queue_order_delay") + public void orderCancelDelay(String id) { + try { + orderInfoService.autoCancelOrder(Long.parseLong(id)); + } catch (Exception e) { + log.error("订单超时支付异常", e); + } + } + + @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP) + public void agentAutoLevelUp(String id) { + log.info("收到合伙人自动升级消息:{}", id); + try { + agentService.autoUpAgentLevel(Long.parseLong(id)); + } catch (Exception e) { + log.error("合伙人自动升级异常", e); + } + } + + @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY) + public void agentReturnMoney(String orderId) { + log.info("收到返利消息:{}", orderId); + try { + agentService.returnMoneyToAgent(Long.parseLong(orderId)); + } catch (Exception e) { + log.error("返利异常", e); + } + } + + @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY) + public void orderReturnMoney(String orderId) { + log.info("收到订单返利消息:{}", orderId); + try { + memberProfitService.dynamicProfit(Long.parseLong(orderId)); + } catch (Exception e) { + log.error("订单返利异常:", e); + } + } + + @RabbitListener(queues = QueueConstants.PERK_MONEY) + public void perkMoneyConsumer(String id) { + log.info("收到补贴消息:{}", id); + try { + agentService.perkMoneyConsumer(Long.parseLong(id)); + } catch (Exception e) { + log.error("用户补贴异常", e); + // todo 更新表 + + } + } + + @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE) + public void forceVoucherSaleConsumer(String price) { + log.info("收到强制卖出消息,价格:{}",price); + try { + memberProfitService.selaHalfVoucher(price); + } catch (Exception e) { + log.error("强制卖出异常", e); + // todo 更新表 + + } + } } diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml index 9a6e4ed..30011e0 100644 --- a/src/main/resources/mapper/modules/MallMemberMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberMapper.xml @@ -24,6 +24,9 @@ <if test="record.name!=null and record.name!=''"> and m.name like concat('%', #{record.name},'%') </if> + <if test="record.accountLogin!=null and record.accountLogin!=''"> + and m.account_login like concat('%', #{record.accountLogin},'%') + </if> <if test="record.account!=null and record.account!=''"> and ( m.phone like concat('%', #{record.account},'%') @@ -163,6 +166,9 @@ left join data_dictionary_custom a on a.code = m.level <where> <if test="record != null" > + <if test="record.accountLogin!=null and record.accountLogin!=''"> + and m.account_login like concat('%', #{record.accountLogin},'%') + </if> <if test="record.name!=null and record.name!=''"> and m.name like concat('%', #{record.name},'%') </if> @@ -450,4 +456,14 @@ select * from mall_member where level = #{level} </select> + + <select id="selectByAccountLogin" resultType="cc.mrbird.febs.mall.entity.MallMember"> + select * from mall_member + where account_login = #{accountLogin} + </select> + + <select id="selectInfoByAccountLoginAndPwd" resultType="cc.mrbird.febs.mall.entity.MallMember"> + select * from mall_member + where account_login = #{accountLogin} and password = #{password} + </select> </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 6f89a70..8fe8066 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml @@ -47,6 +47,7 @@ a.*, b.name, b.bind_phone bindPhone, + b.account_login accountLogin, c.pay_method payMethod, b.phone, d.name fromMemberName @@ -56,6 +57,9 @@ left join mall_member d on d.id = a.rt_member_id <where> <if test="record != null" > + <if test="record.accountLogin!=null and record.accountLogin!=''"> + and b.account_login like concat('%', #{record.accountLogin},'%') + </if> <if test="record.name!=null and record.name!=''"> and b.name like concat('%', #{record.name},'%') </if> @@ -83,12 +87,16 @@ a.remark remark, a.status status, b.name, + b.account_login accountLogin, b.bind_phone bindPhone, b.phone from mall_member_withdraw a inner join mall_member b on a.member_id=b.id <where> <if test="record != null" > + <if test="record.accountLogin!=null and record.accountLogin!=''"> + and b.account_login like concat('%', #{record.accountLogin},'%') + </if> <if test="record.name!=null and record.name!=''"> and b.name like concat('%', #{record.name},'%') </if> diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index 8316f7d..fb2e09e 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -47,6 +47,7 @@ select a.*, b.name memberName, b.bind_phone memberBindPhone, + b.account_login accountLogin, b.phone memberPhone, c.goods_name from mall_order_item c @@ -72,6 +73,9 @@ <if test="record.name != null and record.name != ''"> and b.name like CONCAT('%', CONCAT(#{record.name}, '%')) </if> + <if test="record.accountLogin != null and record.accountLogin != ''"> + and b.account_login like CONCAT('%', CONCAT(#{record.accountLogin}, '%')) + </if> <if test="record.startTime != null and record.startTime != ''"> and a.order_time >= #{record.startTime} </if> diff --git a/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml index dcbc73b..17e3b35 100644 --- a/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml +++ b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml @@ -13,6 +13,7 @@ select a.*, b.name name, + b.account_login accountLogin, b.phone phone from mall_money_flow a left join mall_member b on b.id = a.member_id diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html b/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html index 5216595..818999b 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html @@ -49,8 +49,9 @@ id: 'agentChild', url: ctx + 'admin/mallMember/agentChild?parentId=1', cols: [[ + {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'}, {field: 'name', title: '姓名', minWidth: 150,align:'center'}, - {field: 'phone', title: '电话', minWidth: 150,align:'center',hide:toolbarAgentListChild}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'center',hide:toolbarAgentListChild}, {field: 'inviteId', title: '邀请码', minWidth: 150,align:'center'}, {field: 'levelName', title: '等级', minWidth: 150,align:'center'}, {field: 'amount', title: '团队业绩', minWidth: 150,align:'center'}, diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html index 2a9e086..5eb4024 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html @@ -8,15 +8,21 @@ <div class="layui-col-md10"> <div class="layui-form-item"> <div class="layui-inline"> + <label class="layui-form-label">登录账户:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> <label class="layui-form-label">名称:</label> <div class="layui-input-inline"> <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> - <label class="layui-form-label">账号:</label> + <label class="layui-form-label">手机号码:</label> <div class="layui-input-inline"> - <input type="text" placeholder="账号" name="account" autocomplete="off" class="layui-input"> + <input type="text" placeholder="手机号码" name="account" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> @@ -141,7 +147,8 @@ url: ctx + 'admin/mallMember/getAgentList', cols: [[ // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, - {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarAgentList}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarAgentList}, + {field: 'accountLogin', title: '登录账号', minWidth: 100,align:'left'}, {field: 'name', title: '名称', minWidth: 100,align:'left'}, {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, {field: 'levelName', title: '代理层级', minWidth: 100,align:'left'}, @@ -159,6 +166,7 @@ // 获取查询参数 function getQueryParams() { return { + accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), name: $searchForm.find('input[name="name"]').val().trim(), account: $searchForm.find('input[name="account"]').val().trim(), level: $searchForm.find("select[name='level']").val(), diff --git a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html index 5e4e4d2..7d9317e 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html @@ -8,15 +8,21 @@ <div class="layui-col-md10"> <div class="layui-form-item"> <div class="layui-inline"> + <label class="layui-form-label">登录账户:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> <label class="layui-form-label">名称:</label> <div class="layui-input-inline"> <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> - <label class="layui-form-label">账号:</label> + <label class="layui-form-label">手机号码:</label> <div class="layui-input-inline"> - <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input"> + <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> @@ -50,6 +56,7 @@ </div> <script type="text/html" id="charge-flow-list-option"> {{# if(d.status === 1) { }} +<!-- <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button>--> <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button> <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="searchInfo:view" lay-event="searchInfo">查询结果</button> <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="accountInfo:view" lay-event="accountInfo">账户余额</button> @@ -87,9 +94,20 @@ table.on('tool(moneyFlowChargeTable)', function (obj) { var data = obj.data, layEvent = obj.event; + // if (layEvent === 'chargeAgree') { + // febs.modal.confirm('同意', '同意提现?', function () { + // chargeAgree(data.id); + // }); + // } if (layEvent === 'chargeAgree') { - febs.modal.confirm('同意', '同意提现?', function () { - chargeAgree(data.id); + febs.modal.open( '提现方式', 'modules/mallMember/chargeFlowListType/' + data.id, { + btn: ['提交', '取消'], + yes: function (index, layero) { + $('#charge-update').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } }); } if (layEvent === 'chargeDisagree') { @@ -117,16 +135,16 @@ febs.get(ctx + 'admin/mallMember/searchInfo/' + id, null, function (data) { febs.alert.success(data.message); // febs.alert.success('操作成功'); - window.location.reload(); - // $query.click(); + // window.location.reload(); + $query.click(); }); } function accountInfo(id) { febs.get(ctx + 'admin/mallMember/accountInfo/' + id, null, function (data) { febs.alert.success(data.message); // febs.alert.success('操作成功'); - window.location.reload(); - // $query.click(); + // window.location.reload(); + $query.click(); }); } function chargeAgree(id) { @@ -164,9 +182,10 @@ totalRow: true ,// 开启合计行 cols: [[ {field: 'withdrawNo', title: '编号', minWidth: 100,align:'left', totalRowText: '合计:'}, + {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'}, {field: 'name', title: '名称', minWidth: 100,align:'left'}, - {field: 'phone', title: '账号', minWidth: 150,align:'left'}, - {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'left'}, + // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'}, {field: 'amount', title: '金额', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amount) }}'}, {field: 'amountFee', title: '手续费', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amountFee) }}'}, {field: 'remark', title: '类型', minWidth: 150,align:'left'}, @@ -192,6 +211,7 @@ function getQueryParams() { return { name: $searchForm.find('input[name="name"]').val().trim(), + accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), phone: $searchForm.find('input[name="phone"]').val().trim(), status: $searchForm.find("select[name='status']").val(), }; diff --git a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html new file mode 100644 index 0000000..386f772 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html @@ -0,0 +1,76 @@ +<style> + #charge-update { + padding: 20px 25px 25px 0; + } + + #charge-update .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #charge-update #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #charge-update .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + +</style> +<div class="layui-fluid" id="charge-update"> + <form class="layui-form" action="" lay-filter="charge-update-form"> + + <blockquote class="layui-elem-quote blue-border">请选择以下提现方式</blockquote> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="id"> + </div> + </div> + <div class="layui-form-item sftj"> + <label class="layui-form-label febs-form-item-require">方式:</label> + <div class="layui-input-block"> + <input type="radio" name="agreeType" value="1" title="手动转账" > + <input type="radio" name="agreeType" value="2" title="宁波银行转账" checked=""> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="charge-update-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + eleTree = layui.eleTree, + chargeUpdateInfo = [[${chargeUpdateInfo}]], + $view = $('#charge-update'), + validate = layui.validate, + _deptTree; + + form.render(); + + initUserValue(); + + function initUserValue() { + form.val("charge-update-form", { + "id": chargeUpdateInfo.id + }); + } + + form.on('submit(charge-update-form-submit)', function (data) { + febs.post(ctx + 'admin/mallMember/chargeAgreeWithType', data.field, function () { + layer.closeAll(); + febs.alert.success('操作成功'); + $('#febs-money-flow-charge').find('#reset').click(); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html index 6b99f98..4b46ec5 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html @@ -8,6 +8,12 @@ <div class="layui-col-md10"> <div class="layui-form-item"> <div class="layui-inline"> + <label class="layui-form-label">登录账户:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> <label class="layui-form-label">名称:</label> <div class="layui-input-inline"> <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> @@ -16,7 +22,7 @@ <div class="layui-inline"> <label class="layui-form-label">账号:</label> <div class="layui-input-inline"> - <input type="text" placeholder="账号/邀请码" name="account" autocomplete="off" class="layui-input"> + <input type="text" placeholder="手机号码/邀请码" name="account" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> @@ -110,6 +116,13 @@ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchInsideWith"> {{# } }} </script> +<script type="text/html" id="switchOutsideWith"> + {{# if(d.outsideWith === 1) { }} + <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchOutsideWith"> + {{# } else { }} + <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchOutsideWith"> + {{# } }} +</script> <style> .layui-form-onswitch { background-color: #5FB878 !important; @@ -117,6 +130,7 @@ </style> <script type="text/html" id="tableMemberBar"> <div class="layui-btn-container"> + <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="exportMember">导出会员信息</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="addMember:update" lay-event="registMember">添加会员</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="balance">拨付余额</button> <!-- <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="score">拨付赠送积分</button>--> @@ -130,7 +144,7 @@ <!-- 表格操作栏 end --> <script data-th-inline="none" type="text/javascript"> // 引入组件并初始化 - layui.use([ 'jquery', 'form', 'table', 'febs'], function () { + layui.use([ 'jquery', 'form', 'table', 'upload','febs'], function () { var $ = layui.jquery, febs = layui.febs, form = layui.form, @@ -199,6 +213,18 @@ } }); + function outsideWithYes(id) { + febs.get(ctx + 'admin/mallMember/outsideWithYes/' + id, null, function () { + febs.alert.success('操作成功'); + $query.click(); + }); + } + function outsideWithNo(id) { + febs.get(ctx + 'admin/mallMember/outsideWithNo/' + id, null, function () { + febs.alert.success('操作成功'); + $query.click(); + }); + } function insideWithYes(id) { febs.get(ctx + 'admin/mallMember/insideWithYes/' + id, null, function () { febs.alert.success('操作成功'); @@ -264,11 +290,12 @@ id: 'userTable', url: ctx + 'admin/mallMember/getMallMemberList', toolbar:"#tableMemberBar", - defaultToolbar:[], + // defaultToolbar:[], totalRow: true ,// 开启合计行 cols: [[ {type: 'checkbox'}, - {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarMallmember}, + {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'left'}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarMallmember}, {field: 'name', title: '名称', minWidth: 100,align:'left', totalRowText: '合计:'}, {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, {field: 'balance', title: '余额', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.balance) }}'}, @@ -284,6 +311,7 @@ {field: 'creater', title: '联创', templet:'#switchCreate', minWidth: 120,align:'left' ,hide:toolbarMallmember}, {field: 'partner', title: '合伙人', templet:'#switchPartner', minWidth: 120,align:'left' ,hide:toolbarMallmember}, {field: 'insideWith', title: '是否内转', templet:'#switchInsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, + {field: 'outsideWith', title: '是否提现', templet:'#switchOutsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, {field: 'accountType', title: '账号类型', templet: function (d) { if (d.accountType === 2) { @@ -313,7 +341,12 @@ var data = obj.data, layEvent = obj.event; + if (layEvent === 'exportMember') { + window.location.href = ctx + "admin/mallMember/exportMember"; + } + if (layEvent === 'registMember') { + febs.modal.open( '添加会员', 'modules/mallMember/addMember', { btn: ['提交', '取消'], yes: function (index, layero) { @@ -467,6 +500,7 @@ return { name: $searchForm.find('input[name="name"]').val().trim(), account: $searchForm.find('input[name="account"]').val().trim(), + accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), accountStatus: $searchForm.find("select[name='accountStatus']").val(), level: $searchForm.find("select[name='level']").val(), }; @@ -480,6 +514,14 @@ } }) + form.on('switch(switchOutsideWith)', function (data) { + if (data.elem.checked) { + outsideWithYes(data.value); + } else { + outsideWithNo(data.value); + } + }) + form.on('switch(switchStatus)', function (data) { if (data.elem.checked) { openAccount(data.value); diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html index 1568604..107977e 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html @@ -8,15 +8,21 @@ <div class="layui-col-md10"> <div class="layui-form-item"> <div class="layui-inline"> + <label class="layui-form-label">登录账户:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> <label class="layui-form-label">名称:</label> <div class="layui-input-inline"> <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> - <label class="layui-form-label">账号:</label> + <label class="layui-form-label">手机号码:</label> <div class="layui-input-inline"> - <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input"> + <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> @@ -24,6 +30,7 @@ <div class="layui-input-inline"> <select name="type"> <option value="">请选择</option> + <option value="1">静态收益</option> <option value="2">直推奖</option> <option value="8">提现</option> <option value="9">转账</option> @@ -123,8 +130,9 @@ id: 'moneyFlowTable', url: ctx + 'admin/mallMember/getMoneyFlowList', cols: [[ + {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'}, {field: 'name', title: '名称', minWidth: 100,align:'left'}, - {field: 'phone', title: '账号', minWidth: 150,align:'left'}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'left'}, {field: 'amount', title: '金额', minWidth: 150,align:'left'}, {field: 'fromMemberName', title: '来自', minWidth: 150,align:'left'}, {field: 'type', title: '流水类型', @@ -216,6 +224,7 @@ function getQueryParams() { return { name: $searchForm.find('input[name="name"]').val().trim(), + accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), phone: $searchForm.find('input[name="phone"]').val().trim(), type: $searchForm.find("select[name='type']").val(), flowType: $searchForm.find("select[name='flowType']").val(), diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html index b5879eb..1885e7c 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html @@ -30,7 +30,8 @@ totalRow: true ,// 开启合计行 cols: [[ {field: 'name', title: '名称', minWidth: 150,align:'center', totalRowText: '合计:'}, - {field: 'phone', title: '电话', minWidth: 150,align:'center'}, + {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'}, + {field: 'phone', title: '手机号码', minWidth: 150,align:'center'}, {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center'}, {field: 'type', title: '类型', templet: function (d) { diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html index 1b57287..f371842 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderList.html +++ b/src/main/resources/templates/febs/views/modules/order/orderList.html @@ -7,6 +7,12 @@ <div class="layui-form-item"> <div class="layui-col-md10"> <div class="layui-inline"> + <label class="layui-form-label">登录账户:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> <label class="layui-form-label">购买人:</label> <div class="layui-input-inline"> <input type="text" placeholder="购买人" name="name" autocomplete="off" class="layui-input"> @@ -121,6 +127,7 @@ <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" id="importDeliver" lay-event="importDeliver">导入发货</button> <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverDone">导出已发货订单</button> <button id="printSelect" type="button" class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view">自定义打印</button> + <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverAll">导出全部订单</button> </div> </script> <!-- 表格操作栏 end --> @@ -165,6 +172,10 @@ if (event == 'exportDeliver') { window.location.href = ctx + "admin/order/exportOrderList?orderType=1&status=2"; + } + + if (event == 'exportDeliverAll') { + window.location.href = ctx + "admin/order/exportOrderListAll?orderType=1&status=0"; } if (event == 'exportDeliverDone') { @@ -287,9 +298,10 @@ cols: [[ {type: 'checkbox',fixed: 'left'}, {field: 'orderNo', title: '订单编号', minWidth: 120,align:'left', totalRowText: '合计:'}, + {field: 'accountLogin', title: '登录账户', minWidth: 120,align:'left'}, {field: 'memberName', title: '购买人', minWidth: 120,align:'left'}, - {field: 'memberPhone', title: '账号', minWidth: 120,align:'left'}, - {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, + {field: 'memberPhone', title: '手机号码', minWidth: 120,align:'left'}, + // {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'}, {field: 'goodsName', title: '商品信息', minWidth: 200,align:'left'}, {field: 'remark', title: '备注', minWidth: 200,align:'left'}, {field: 'amount', title: '订单金额', minWidth: 120,align:'left',totalRow: '{{= parseInt(d.amount) }}'}, @@ -366,6 +378,7 @@ return { startTime: $searchForm.find('input[name="startTime"]').val().trim(), endTime: $searchForm.find('input[name="endTime"]').val().trim(), + accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), name: $searchForm.find('input[name="name"]').val().trim(), orderNo: $searchForm.find('input[name="orderNo"]').val().trim(), goodsName: $searchForm.find('input[name="goodsName"]').val().trim(), diff --git a/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html b/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html index bad857b..78664ca 100644 --- a/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html +++ b/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html @@ -40,6 +40,23 @@ </div> </div> </div> + <div class="layui-card-body"> + <blockquote class="layui-elem-quote blue-border">星级每日补贴</blockquote> + <div class="layui-row layui-col-space10 layui-form-item"> + <label class="layui-form-label febs-form-item-require">补贴总额:</label> + <div class="layui-input-block"> + <input type="text" name="perkAgentAchieveTotal" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > + <div class="layui-word-aux">例:15000</div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">补贴百分比:</label> + <div class="layui-input-block"> + <input type="text" name="perkAgentAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > + <div class="layui-word-aux">例:15%,填写15</div> + </div> + </div> + </div> <div class="layui-card-footer"> <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-basic-perk-submit" id="submit">保存</button> @@ -82,6 +99,8 @@ function initHlmBasicPerkValue() { form.val("hlm-basic-perk-form", { + "perkAgentAchieveTotal": hlmBasicPerk.perkAgentAchieveTotal, + "perkAgentAchievePercent": hlmBasicPerk.perkAgentAchievePercent, "sharePerk": hlmBasicPerk.sharePerk, "teamPerk": hlmBasicPerk.teamPerk, "teamEqualsPerk": hlmBasicPerk.teamEqualsPerk, diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 53af054..5040508 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -37,6 +37,8 @@ @SpringBootTest public class ProfitTest { + @Autowired + private IAgentService agentService; // @Autowired // private AgentConsumer agentConsumer; // @@ -92,6 +94,7 @@ private NBYHService nbyhService; @Autowired private IAdminMallMemberService mallMemberService; + @Test public void agentProfitTrade() { // try { @@ -102,10 +105,12 @@ // nbyhService.tradeSinge(306L); // nbyhService.tradeSingeOuterTransfer(306L); // nbyhService.accountInfoQuery(306L); -// nbyhService.transferResultInfoQuery(306L); +// nbyhService.transferResultInfoQuery(315L); // mallMemberService.chargeAgree(307L); // mallMemberService.searchInfo(307L); + + agentService.perkAgent(); } @Test public void agentProfit() { -- Gitblit v1.9.1