src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,12 @@ @Getter public enum DataDictionaryEnum { /** * 预约开始时间 * 预约结束时间 */ YU_YUE_START_TIME("YU_YUE_START_TIME","YU_YUE_START_TIME"), YU_YUE_END_TIME("YU_YUE_END_TIME","YU_YUE_END_TIME"), /** * NFT最小提现数量 * NFT手续费 */ src/main/java/cc/mrbird/febs/common/enumerates/ProductEnum.java
@@ -5,6 +5,11 @@ @Getter public enum ProductEnum { /** * 用户冻结 */ MEMBER_FROZEN(1,"用户冻结"), MEMBER_UNFROZEN(0,"用户未冻结"), /** * 用户NFT提现状态 0:失败 1:进行中 2:超时 3:已完成 */ PRODUCT_SELL_SUCCESS(3,"已完成"), src/main/java/cc/mrbird/febs/mall/controller/AdminNewsInfoController.java
@@ -4,12 +4,12 @@ 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.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.ProductEnum; import cc.mrbird.febs.mall.dto.AdminMallProductNftDto; import cc.mrbird.febs.mall.dto.AdminPickSellRecordDtoDto; import cc.mrbird.febs.mall.dto.MallNewsInfoDto; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.MallProductNftMapper; import cc.mrbird.febs.mall.service.ICommonService; import cc.mrbird.febs.mall.service.IMallNewsInfoService; import cc.mrbird.febs.mall.vo.AdminMallProductNftVo; import cc.mrbird.febs.mall.vo.AdminMallProductSellPickVo; @@ -37,6 +37,7 @@ private final IMallNewsInfoService mallNewsInfoService; private final MallProductNftMapper mallProductNftMapper; private final ICommonService commonService; /** * NFT预约产品 @@ -128,6 +129,24 @@ } /** * 基础设置 * @param gfaBasicSetDto * @return */ @PostMapping(value = "/gfaBasicSet") public FebsResponse gfaBasicSet(AdminGfaBasicSetDto gfaBasicSetDto) { commonService.updateDataDic( DataDictionaryEnum.YU_YUE_START_TIME.getType(), DataDictionaryEnum.YU_YUE_START_TIME.getCode(), gfaBasicSetDto.getStartTime()); commonService.updateDataDic( DataDictionaryEnum.YU_YUE_END_TIME.getType(), DataDictionaryEnum.YU_YUE_END_TIME.getCode(), gfaBasicSetDto.getEndTime()); return new FebsResponse().success(); } /** * 新闻中心-列表 * @param mallNewsInfo * @param request src/main/java/cc/mrbird/febs/mall/controller/ViewNewsController.java
@@ -1,14 +1,16 @@ 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.entity.MallNewsCategory; import cc.mrbird.febs.mall.entity.MallNewsInfo; import cc.mrbird.febs.mall.entity.MallProductBuy; import cc.mrbird.febs.mall.entity.MallProductNft; import cc.mrbird.febs.mall.dto.AdminGfaBasicSetDto; import cc.mrbird.febs.mall.dto.HlmScoreSetDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallProductBuyMapper; import cc.mrbird.febs.mall.mapper.MallProductNftMapper; import cc.mrbird.febs.mall.service.IMallNewsInfoService; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; @@ -29,6 +31,7 @@ private final IMallNewsInfoService mallNewsInfoService; private final MallProductNftMapper mallProductNftMapper; private final MallProductBuyMapper mallProductBuyMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; /** * NFT预约产品 @@ -91,6 +94,31 @@ } /** * 基础设置 * @param model * @return */ @GetMapping("gfaBasicSet") @RequiresPermissions("gfaBasicSet:view") public String gfaBasicSet(Model model) { AdminGfaBasicSetDto gfaBasicSetDto = new AdminGfaBasicSetDto(); DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_START_TIME.getType(), DataDictionaryEnum.YU_YUE_START_TIME.getCode()); if (startTimeDic != null) { gfaBasicSetDto.setStartTime(startTimeDic.getValue()); } DataDictionaryCustom endCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_END_TIME.getType(), DataDictionaryEnum.YU_YUE_END_TIME.getCode()); if (startTimeDic != null) { gfaBasicSetDto.setEndTime(endCntDic.getValue()); } model.addAttribute("gfaBasicSet", gfaBasicSetDto); return FebsUtil.view("modules/news/gfaBasicSet"); } /** * 新闻中心-列表 * @return */ src/main/java/cc/mrbird/febs/mall/dto/AdminGfaBasicSetDto.java
New file @@ -0,0 +1,10 @@ package cc.mrbird.febs.mall.dto; import lombok.Data; @Data public class AdminGfaBasicSetDto { private String startTime; private String endTime; } src/main/java/cc/mrbird/febs/mall/mapper/MallProductBuyRecordMapper.java
@@ -12,4 +12,6 @@ List<ApiOrderBuyRecordInfoVo> selectByBuyId(@Param("productBuyId")Long productBuyId); List<MallProductBuyRecord> selectListByBuyId(@Param("buyId")Long buyId,@Param("state")Integer state); List<MallProductBuyRecord> selectByState(@Param("state")int value); } src/main/java/cc/mrbird/febs/mall/mapper/MallProductSellRecordMapper.java
@@ -12,4 +12,6 @@ List<ApiOrderSellRecordInfoVo> selectBySellId(@Param("productSellId")Long productSellId); List<MallProductSellRecord> selectListBySellId(@Param("sellId")Long sellId,@Param("state")Integer state); List<MallProductSellRecord> selectListByState(@Param("state")int value); } src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -125,6 +125,24 @@ agentService.BuyToSell(); } /** * 买单 * 看是否是开始显示订单的时间段,超出结束时间的买单,全部超时失败 */ @Scheduled(cron = "0 0/30 * * * ? ") public void timeGetOrderBuy() { agentService.timeGetOrderBuy(); } /** * 卖单 * 看是否是开始显示订单的时间段,超出结束时间的卖单,全部超时失败 */ @Scheduled(cron = "0 0/30 * * * ? ") public void timeGetOrderSell() { agentService.timeGetOrderSell(); } src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -41,4 +41,8 @@ void perkAgent(); void BuyToSell(); void timeGetOrderBuy(); void timeGetOrderSell(); } src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -864,6 +864,88 @@ } } } @Override public void timeGetOrderBuy() { DateTime nowTime = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_END_TIME.getType(), DataDictionaryEnum.YU_YUE_END_TIME.getCode() ); DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); /** * 当前时间比结束时间大 */ if(nowTime.compareTo(endTime) >= 0){ List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectByState(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); if(CollUtil.isNotEmpty(mallProductBuyRecords)){ for(MallProductBuyRecord mallProductBuyRecord : mallProductBuyRecords){ /** * 用户有超时未支付的订单 * 1、冻结账户 * 2、更新买单主表 * 2、更新卖单主表 * 3、更新买单子表的数据 * 3、更新卖单子表的数据 */ Long buyId = mallProductBuyRecord.getBuyId(); Long sellRecordId = mallProductBuyRecord.getSellRecordId(); MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(buyId); Long memberIdBuy = mallProductBuy.getMemberId(); //冻结账户 MallMember mallMemberBuy = memberMapper.selectById(memberIdBuy); mallMemberBuy.setIsFrozen(ProductEnum.MEMBER_FROZEN.getValue()); memberMapper.updateById(mallMemberBuy); //更新买单子表的数据 mallProductBuyRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); mallProductBuyRecordMapper.updateById(mallProductBuyRecord); //更新买单主表 mallProductBuy.setNftAva(mallProductBuy.getNftAva().add(mallProductBuyRecord.getPickNftCnt())); mallProductBuyMapper.updateById(mallProductBuy); //更新卖单子表的数据 MallProductSellRecord mallProductSellRecord = mallProductSellRecordMapper.selectById(sellRecordId); mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_FAIL.getValue()); mallProductSellRecordMapper.updateById(mallProductSellRecord); //更新卖单主表 Long sellId = mallProductSellRecord.getSellId(); MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); mallProductSell.setNftCntAva(mallProductSell.getNftCntAva().add(mallProductSellRecord.getNftCnt())); mallProductSellMapper.updateById(mallProductSell); } } } } @Override public void timeGetOrderSell() { DateTime nowTime = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_END_TIME.getType(), DataDictionaryEnum.YU_YUE_END_TIME.getCode() ); DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); /** * 当前时间比结束时间大 */ if(nowTime.compareTo(endTime) >= 0){ List<MallProductSellRecord> mallProductSellRecords = mallProductSellRecordMapper.selectListByState(ProductEnum.PRODUCT_MATE_STATE_PAY.getValue()); if(CollUtil.isNotEmpty(mallProductSellRecords)){ for(MallProductSellRecord mallProductSellRecord : mallProductSellRecords){ /** * 卖方 * 1:冻结账户 */ Long sellId = mallProductSellRecord.getSellId(); MallProductSell mallProductSell = mallProductSellMapper.selectById(sellId); MallMember mallMember = memberMapper.selectById(mallProductSell.getMemberId()); mallMember.setIsFrozen(ProductEnum.MEMBER_FROZEN.getValue()); memberMapper.updateById(mallMember); } } } } public void insertSell(Long memberId,BigDecimal nftCnt,BigDecimal nftCntAva, BigDecimal nftFee,BigDecimal fcmFeeCnt){ String orderNo = MallUtils.getOrderNum("NFT"); src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -758,7 +758,7 @@ Long unfreezeMemberId = unfreezeDto.getMemberId(); MallMember mallMember = this.baseMapper.selectById(unfreezeMemberId); Integer isFrozen = mallMember.getIsFrozen(); if(1 != isFrozen){ if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){ throw new FebsException("账户未被冻结"); } DataDictionaryCustom memberFrozenFcmCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( @@ -781,7 +781,7 @@ BigDecimal fcmCntAvaSub = fcmCntAva.subtract(memberFrozenFcmCnt); mallMemberAmount.setFcmCntAva(fcmCntAvaSub); mallMemberAmountMapper.updateById(mallMemberAmount); mallMember.setIsFrozen(0); mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); this.baseMapper.updateById(mallMember); mallMoneyFlowService.addMoneyFlow( src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
@@ -271,29 +271,53 @@ return new FebsResponse().success(); } public static void main(String[] args) { DateTime dateTime = DateUtil.parseTime("15:00:00"); DateTime dateTime2 = DateUtil.parseTime("19:00:00"); DateTime dateTime1 = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); System.out.println(dateTime); System.out.println(dateTime1); System.out.println(dateTime1.compareTo(dateTime)); System.out.println(dateTime1.compareTo(dateTime2)); System.out.println(dateTime1.compareTo(dateTime) >= 0 && dateTime1.compareTo(dateTime2) <= 0); } @Override public FebsResponse orderList(ApiOrderListDto apiOrderListDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); List<ApiOrderListVo> objects = new ArrayList<>(); Integer orderType = apiOrderListDto.getOrderType(); apiOrderListDto.setMemberId(memberId); //买单 if(2 == orderType){ IPage<ApiOrderListVo> page = new Page<>(apiOrderListDto.getPageNum(), apiOrderListDto.getPageSize()); IPage<ApiOrderListVo> apiOrderListVoIPageBuy = mallProductBuyMapper.selectListInPage(page, apiOrderListDto); if(CollUtil.isNotEmpty(apiOrderListVoIPageBuy.getRecords())){ for(ApiOrderListVo apiOrderListVo : apiOrderListVoIPageBuy.getRecords()){ objects.add(apiOrderListVo); DateTime nowTime = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_START_TIME.getType(), DataDictionaryEnum.YU_YUE_START_TIME.getCode() ); DateTime startTime = DateUtil.parseTime(startTimeDic.getValue()); DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.YU_YUE_END_TIME.getType(), DataDictionaryEnum.YU_YUE_END_TIME.getCode() ); DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); if(nowTime.compareTo(startTime) >= 0 && nowTime.compareTo(endTime) <= 0){ //买单 if(2 == orderType){ IPage<ApiOrderListVo> page = new Page<>(apiOrderListDto.getPageNum(), apiOrderListDto.getPageSize()); IPage<ApiOrderListVo> apiOrderListVoIPageBuy = mallProductBuyMapper.selectListInPage(page, apiOrderListDto); if(CollUtil.isNotEmpty(apiOrderListVoIPageBuy.getRecords())){ for(ApiOrderListVo apiOrderListVo : apiOrderListVoIPageBuy.getRecords()){ objects.add(apiOrderListVo); } } } } //卖单 if(1 == orderType){ IPage<ApiOrderListVo> page = new Page<>(apiOrderListDto.getPageNum(), apiOrderListDto.getPageSize()); IPage<ApiOrderListVo> apiOrderListVoIPageSell = mallProductSellMapper.selectListInPage(page, apiOrderListDto); if(CollUtil.isNotEmpty(apiOrderListVoIPageSell.getRecords())){ for(ApiOrderListVo apiOrderListVo : apiOrderListVoIPageSell.getRecords()){ objects.add(apiOrderListVo); //卖单 if(1 == orderType){ IPage<ApiOrderListVo> page = new Page<>(apiOrderListDto.getPageNum(), apiOrderListDto.getPageSize()); IPage<ApiOrderListVo> apiOrderListVoIPageSell = mallProductSellMapper.selectListInPage(page, apiOrderListDto); if(CollUtil.isNotEmpty(apiOrderListVoIPageSell.getRecords())){ for(ApiOrderListVo apiOrderListVo : apiOrderListVoIPageSell.getRecords()){ objects.add(apiOrderListVo); } } } } src/main/java/cc/mrbird/febs/mall/vo/ApiOrderBuyInfoVo.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -11,12 +12,20 @@ @ApiModel(value = "ApiOrderBuyInfoVo", description = "信息返回类") public class ApiOrderBuyInfoVo { private Long id; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "预约状态 0:失败 1:进行中 2:超时 3:已完成") private int state;//预约状态 0:失败 1:进行中 2:超时 3:已完成 @ApiModelProperty(value = "匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成") private int mateState;//匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成 @ApiModelProperty(value = "nft预约额度") private BigDecimal nftTotal;//nft预约额度 @ApiModelProperty(value = "待分配") private BigDecimal nftAva;//待分配 @ApiModelProperty(value = "匹配时间") private Date orderTime;//匹配时间 @ApiModelProperty(value = "支付时间") private Date payTime;//支付时间 @ApiModelProperty(value = "对方详情") private List<ApiOrderBuyRecordInfoVo> apiOrderBuyRecordInfoVos; } src/main/java/cc/mrbird/febs/mall/vo/ApiOrderBuyRecordInfoVo.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -10,20 +11,35 @@ @ApiModel(value = "ApiOrderBuyRecordInfoVo", description = "信息返回类") public class ApiOrderBuyRecordInfoVo { private Long id;// @ApiModelProperty(value = "对方账户") private String accountLogin;// @ApiModelProperty(value = "分配额度、支付金额") private BigDecimal pickNftCnt;//分配额度、支付金额 @ApiModelProperty(value = "匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成") private Integer state;//匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成 @ApiModelProperty(value = "匹配时间") private Date orderTime;//匹配时间 @ApiModelProperty(value = "支付时间") private Date payTime;//支付时间 @ApiModelProperty(value = "支付凭证") private String nftImg;//支付凭证 @ApiModelProperty(value = "支付类型 1:微信 2:支付宝 3:银行转账 4:USDT转账") private Integer type;//支付类型 1:微信 2:支付宝 3:银行转账 4:USDT转账 @ApiModelProperty(value = "微信收款码") private String wxQrcode;//微信收款码 @ApiModelProperty(value = "支付宝收款码") private String aliQrcode;//支付宝收款码 @ApiModelProperty(value = "真实姓名") private String bankName;//真实姓名 @ApiModelProperty(value = "银行卡号") private String bankNo;//银行卡号 @ApiModelProperty(value = "开户行") private String bank;//开户行 @ApiModelProperty(value = "手机号") private String phone;//手机号 @ApiModelProperty(value = "USDT通道类型: TRC20 BEP20") private String usdtTongdao;//USDT通道类型: TRC20 BEP20 @ApiModelProperty(value = "USDT地址") private String usdtAddress;//USDT地址 } src/main/java/cc/mrbird/febs/mall/vo/ApiOrderSellInfoVo.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -10,13 +11,21 @@ @ApiModel(value = "ApiOrderSellInfoVo", description = "信息返回类") public class ApiOrderSellInfoVo { private Long id; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "动态NFT总数") private BigDecimal nftTotal;//动态NFT总数 @ApiModelProperty(value = "实际提现数量") private BigDecimal nftCnt;//实际提现数量 @ApiModelProperty(value = "剩余数量") private BigDecimal nftCntAva;//剩余数量 @ApiModelProperty(value = "NFT手续费") private BigDecimal nftFee;//NFT手续费 @ApiModelProperty(value = "代币手续费") private BigDecimal fcmFee;//代币手续费 @ApiModelProperty(value = "预约状态 0:失败 1:进行中 2:超时 3:已完成") private Integer state;//预约状态 0:失败 1:进行中 2:超时 3:已完成 @ApiModelProperty(value = "对方支付方式详情") private List<ApiOrderSellRecordInfoVo> apiOrderSellRecordInfoVos; } src/main/java/cc/mrbird/febs/mall/vo/ApiOrderSellRecordInfoVo.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -10,20 +11,34 @@ @ApiModel(value = "ApiOrderSellRecordInfoVo", description = "信息返回类") public class ApiOrderSellRecordInfoVo { private Long id; @ApiModelProperty(value = "对方账户") private String accountLogin;// @ApiModelProperty(value = "匹配时间") private Date orderTime;//匹配时间 @ApiModelProperty(value = "支付时间") private Date payTime;//支付时间 @ApiModelProperty(value = "支付数量") private BigDecimal nftCnt;//支付数量 @ApiModelProperty(value = "支付凭证") private String nftImg;//支付凭证 @ApiModelProperty(value = "支付类型 1:微信 2:支付宝 3:银行转账 4:USDT转账") private Integer type;//支付类型 1:微信 2:支付宝 3:银行转账 4:USDT转账 @ApiModelProperty(value = "匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成") private Integer state;//匹配状态0:失败 1:匹配中 2:待支付 3:已支付 4:对方已确认 5:已完成 @ApiModelProperty(value = "微信收款码") private String wxQrcode;//微信收款码 @ApiModelProperty(value = "支付宝收款码") private String aliQrcode;//支付宝收款码 @ApiModelProperty(value = "真实姓名") private String bankName;//真实姓名 @ApiModelProperty(value = "银行卡号") private String bankNo;//银行卡号 @ApiModelProperty(value = "开户行") private String bank;//开户行 @ApiModelProperty(value = "手机号") private String phone;//手机号 @ApiModelProperty(value = "USDT通道类型: TRC20 BEP20") private String usdtTongdao;//USDT通道类型: TRC20 BEP20 @ApiModelProperty(value = "USDT地址") private String usdtAddress;//USDT地址 } src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -66,14 +66,24 @@ @ApiModelProperty(value = "内转标识 1:开启 2:关闭") private Integer insideWith; @ApiModelProperty(value = "静态NFT") private BigDecimal staticNft;//静态NFT @ApiModelProperty(value = "动态NFT") private BigDecimal trendsNft;//动态NFT @ApiModelProperty(value = "冻结NFT") private BigDecimal frozenNft;//冻结NFT @ApiModelProperty(value = "FCM代币可用") private BigDecimal fcmCntAva;//FCM代币可用 @ApiModelProperty(value = "FCM代币冻结") private BigDecimal fcmCntFrozen;//FCM代币冻结 @ApiModelProperty(value = "令牌可用") private BigDecimal tokenAva;//令牌可用 @ApiModelProperty(value = "令牌冻结") private BigDecimal tokenFrozen;//令牌冻结 @ApiModelProperty(value = "FCM提现收续费") private BigDecimal outFcmFee;//FCM提现收续费 @ApiModelProperty(value = "FCM价格") private BigDecimal fcmPrice;//FCM价格 } src/main/resources/mapper/modules/MallProductBuyRecordMapper.xml
@@ -26,4 +26,10 @@ and a.state = #{state} </select> <select id="selectByState" resultType="cc.mrbird.febs.mall.entity.MallProductBuyRecord"> select a.* from mall_product_buy_record a where a.state = #{state} </select> </mapper> src/main/resources/mapper/modules/MallProductSellRecordMapper.xml
@@ -26,4 +26,10 @@ and a.state = #{state} </select> <select id="selectListByState" resultType="cc.mrbird.febs.mall.entity.MallProductSellRecord"> select a.* from mall_product_sell_record a where a.state = #{state} </select> </mapper> src/main/resources/templates/febs/views/modules/news/gfaBasicSet.html
New file @@ -0,0 +1,76 @@ <div class="layui-fluid layui-anim febs-anim" id="gfa-Basic-set" lay-title="预约设置"> <div class="layui-row layui-col-space8 febs-container"> <form class="layui-form" action="" lay-filter="gfa-Basic-set-form"> <div class="layui-card"> <div class="layui-card-body"> <blockquote class="layui-elem-quote blue-border">买卖单时间设置</blockquote> <div class="layui-form-item"> <label class="layui-form-label febs-form-item-require">开始时间:</label> <div class="layui-input-block"> <input type="text" name="startTime" class="layui-input" id="startTimePick" placeholder="HH:mm:ss"> </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="endTime" class="layui-input" id="endTimePick" placeholder="HH:mm:ss"> </div> </div> <div class="layui-card-footer"> <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="gfa-Basic-set-submit" id="submit">保存</button> </div> </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', 'febs', 'form', 'eleTree','laydate'], function () { var $ = layui.jquery, febs = layui.febs, form = layui.form, gfaBasicSet = [[${gfaBasicSet}]], laydate = layui.laydate, $view = $('#gfa-Basic-set'); //日期范围 laydate.render({ elem: '#startTimePick', type: 'time' }); //日期范围 laydate.render({ elem: '#endTimePick', type: 'time' }); initGfaBasicSetValue(); form.render(); function initGfaBasicSetValue() { form.val("gfa-Basic-set-form", { "startTime": gfaBasicSet.startTime, "endTime": gfaBasicSet.endTime }); } form.on('submit(gfa-Basic-set-submit)', function (data) { febs.post(ctx + 'admin/news/gfaBasicSet', data.field, function (res) { febs.alert.success('设置成功'); return ; }); return false; }); }); </script> src/main/resources/templates/index.html
@@ -3,7 +3,7 @@ xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <head> <meta charset="utf-8"> <title>鸿楼梦 权限系统</title> <title>GFA 权限系统</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">