src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -23,5 +23,6 @@ registration.excludePathPatterns("/api/goods/**"); registration.excludePathPatterns("/api/pay/**"); registration.excludePathPatterns("/api/news/**"); registration.excludePathPatterns("/api/member/cashOutSetting"); } } src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -12,12 +12,12 @@ INDRECT_BONUS("BONUS_TYPE", "INDRECT_BONUS"), AGENT_BONUS("BONUS_TYPE", "AGENT_BONUS"), THANKFUL_BONUS("BONUS_TYPE", "THANKFUL_BONUS"), //积分中奖概率 WIN_SCORE("WIN_PROBABILITY", "WIN_SCORE"), //佣金中奖概率 WIN_CASH("WIN_PROBABILITY", "WIN_CASH"), RANK_BONUS("BONUS_TYPE", "RANK_BONUS"); RANK_BONUS("BONUS_TYPE", "RANK_BONUS"), CASHOUT_SETTING("CASHOUT_SET", "CASHOUT_SETTING"); private String type; src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -1,6 +1,9 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.mall.dto.CashOutSettingDto; import cc.mrbird.febs.mall.service.ICommonService; import cc.mrbird.febs.mall.service.ISystemService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,9 +26,17 @@ @Autowired private ISystemService systemService; private final ICommonService commonService; @PostMapping(value = "/bonusSystemSetting") public FebsResponse bonusSystemSetting(@RequestBody Map<String, Object> map) { systemService.bonusSystemSetting(map); return new FebsResponse().success().message("设置成功"); } @PostMapping(value = "/cashOutSetting") public FebsResponse cashOutSetting(CashOutSettingDto cashOutSettingDto) { commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置"); return new FebsResponse().success(); } } src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -94,6 +94,15 @@ return new FebsResponse().success().message("转账成功"); } @ApiOperation(value = "提现规则", notes = "提现规则") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = CashOutSettingVo.class) }) @GetMapping(value = "/cashOutSetting") public FebsResponse cashOutSetting() { return new FebsResponse().success().data(memberService.cashOutSetting()); } @ApiOperation(value = "提现") @PostMapping(value = "/withdrawal") public FebsResponse withdrawal(@RequestBody @Validated WithdrawalDto withdrawalDto) { src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -1,9 +1,17 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.mall.dto.CashOutSettingDto; import cc.mrbird.febs.mall.dto.ScoreSettingDto; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -13,8 +21,20 @@ @RequiredArgsConstructor public class ViewSystemController { private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @GetMapping("profitSetting") public String profitSetting() { return FebsUtil.view("modules/system/profitSetting"); } @GetMapping("cashOutSetting") @RequiresPermissions("cashOutSetting:update") public String cashOutSetting(Model model) { DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode()); if (dic != null) { model.addAttribute("cashout", JSONObject.parseObject(dic.getValue(), CashOutSettingDto.class)); } return FebsUtil.view("modules/system/cashOutSetting"); } } src/main/java/cc/mrbird/febs/mall/dto/CashOutSettingDto.java
New file @@ -0,0 +1,23 @@ package cc.mrbird.febs.mall.dto; import lombok.Data; import java.math.BigDecimal; /** * * * {"minCashOut":100,"allCashOut":5000,"serviceFee":0.3,"workingDays":1} * * */ @Data public class CashOutSettingDto { //每次提现最小金额 private BigDecimal minCashOut; //金额每日累计上限 private BigDecimal allCashOut; //提现手续费率 private BigDecimal serviceFee; //提现时间 1:工作日 2:每一天 private Integer workingDays; } src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -5,6 +5,7 @@ import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMemberPayment; import cc.mrbird.febs.mall.entity.MallShopApply; import cc.mrbird.febs.mall.vo.CashOutSettingVo; import cc.mrbird.febs.mall.vo.MyCommissionVo; import cc.mrbird.febs.mall.vo.MyTeamVo; import com.baomidou.mybatisplus.extension.service.IService; @@ -58,4 +59,6 @@ MallShopApply findNewestApply(); void addRegisterAppeal(RegisterAppealDto registerAppeal); CashOutSettingVo cashOutSetting(); } src/main/java/cc/mrbird/febs/mall/service/ICommonService.java
@@ -2,6 +2,7 @@ import cc.mrbird.febs.mall.entity.AppVersion; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.vo.CashOutSettingVo; import java.util.List; @@ -17,4 +18,5 @@ List<AppVersion> findAppVersion(); void addDataDic(String type, String key, Object value, String description); } src/main/java/cc/mrbird/febs/mall/service/ISystemService.java
@@ -1,8 +1,12 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.mall.dto.CashOutSettingDto; import java.util.Map; public interface ISystemService { void bonusSystemSetting(Map<String, Object> map); void cashOutSetting(String type, String code, CashOutSettingDto cashOutSettingDto, String 提现设置); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -2,6 +2,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; 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.exception.FebsException; @@ -527,4 +528,14 @@ mallRegisterAppealMapper.insert(isExist); } @Override public CashOutSettingVo cashOutSetting() { CashOutSettingVo cashOutSettingVo = new CashOutSettingVo(); DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode()); if (dic != null) { cashOutSettingVo = JSONObject.parseObject(dic.getValue(), CashOutSettingVo.class); } return cashOutSettingVo; } } src/main/java/cc/mrbird/febs/mall/service/impl/SystemServiceImpl.java
@@ -1,5 +1,6 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.mall.dto.CashOutSettingDto; import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.service.ICommonService; @@ -42,4 +43,9 @@ } } } @Override public void cashOutSetting(String type, String code, CashOutSettingDto cashOutSettingDto, String 提现设置) { } } src/main/java/cc/mrbird/febs/mall/vo/CashOutSettingVo.java
New file @@ -0,0 +1,23 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class CashOutSettingVo { @ApiModelProperty(value = "每次最小提现金额") private BigDecimal minCashOut; @ApiModelProperty(value = "每日提现上限") private BigDecimal allCashOut; @ApiModelProperty(value = "提现手续费") private BigDecimal serviceFee; @ApiModelProperty(value = "提现时间 1:工作日 2:每一天") private Integer workingDays; } src/main/resources/templates/febs/views/modules/system/cashOutSetting.html
New file @@ -0,0 +1,89 @@ <div class="layui-fluid layui-anim febs-anim" id="cashout-setting" lay-title="提现设置"> <div class="layui-row layui-col-space8 febs-container"> <form class="layui-form" action="" lay-filter="cashout-setting-form"> <div class="layui-card"> <div class="layui-card-body"> <div class="layui-form-item"> <label class="layui-form-label ">每次最小提现金额:</label> <div class="layui-input-block"> <input type="text" name="minCashOut" data-th-id="${cashout.minCashOut}" lay-verify="number" autocomplete="off" class="layui-input" > </div> </div> <div class="layui-form-item"> <label class="layui-form-label ">每日提现上限:</label> <div class="layui-input-block"> <input type="text" name="allCashOut" data-th-id="${cashout.allCashOut}" lay-verify="number" autocomplete="off" class="layui-input" > </div> </div> <div class="layui-form-item"> <label class="layui-form-label ">提现手续费:</label> <div class="layui-input-block"> <input type="text" name="serviceFee" data-th-id="${cashout.serviceFee}" lay-verify="text" autocomplete="off" class="layui-input" > </div> </div> <div class="layui-form-item"> <label class="layui-form-label">提现时间:</label> <div class="layui-input-block"> <input type="radio" name="workingDays" value="1" title="工作日"> <input type="radio" name="workingDays" value="2" title="每一天"> </div> </div> </div> <div class="layui-card-footer"> <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="cashout-setting-form-submit" id="submit">保存</button> </div> </div> </form> </div> </div> <style> .layui-form-label { width: 120px; } .layui-form-item .layui-input-block { margin-left: 150px; } .layui-table-form .layui-form-item { margin-bottom: 20px !important; } </style> <script data-th-inline="javascript" type="text/javascript"> layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () { var $ = layui.jquery, febs = layui.febs, form = layui.form, cashout = [[${cashout}]], validate = layui.validate, $view = $('#cashout-setting'); form.verify(validate); initCashoutValue(); form.render(); function initCashoutValue() { form.val("cashout-setting-form", { "minCashOut": cashout.minCashOut, "allCashOut": cashout.allCashOut, "serviceFee": cashout.serviceFee, "workingDays": cashout.workingDays }); } form.on('submit(cashout-setting-form-submit)', function (data) { console.log(data); febs.post(ctx + 'admin/system/cashOutSetting', data.field, function (res) { febs.alert.success('设置成功'); }); window.location.reload(); return false; }); }); </script>