21 files modified
2 files added
| | |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.dto.*; |
| | | import cc.mrbird.febs.dapp.entity.DappAKlineEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.MallAddressInfo; |
| | | import cc.mrbird.febs.dapp.entity.MallGoodsCategory; |
| | | import cc.mrbird.febs.dapp.mapper.DappAKlineMapper; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cc.mrbird.febs.dapp.service.DappWalletService; |
| | |
| | | return dappMemberService.salePackage(salePackageDto); |
| | | } |
| | | |
| | | @ApiOperation(value = "花吖排行榜", notes = "花吖排行榜") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "success", response = PackageRecordVo.class) |
| | | }) |
| | | @PostMapping(value = "/packageRecord") |
| | | public FebsResponse packageRecord(@RequestBody PackageRecordDto packageRecordDto) { |
| | | return new FebsResponse().success().data(dappMemberService.packageRecord(packageRecordDto)); |
| | | } |
| | | |
| | | @ApiOperation(value = "涨势K线图", notes = "涨势K线图") |
| | | @ApiResponses({ |
| | | @ApiResponse(code = 200, message = "success", response = AKLineLimitVo.class) |
| | | }) |
| | | @PostMapping(value = "/packageKline") |
| | | public FebsResponse packageKline() { |
| | | return new FebsResponse().success().data(dappMemberService.packageKline()); |
| | | } |
| | | |
| | | @ApiOperation(value = "新增地址", notes = "新增地址") |
| | | @PostMapping(value = "/createAddress") |
| | | public FebsResponse createAddress(@RequestBody CreateAddressDto createAddressDto) { |
| New file |
| | |
| | | package cc.mrbird.febs.dapp.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "PackageRecordDto", description = "排行榜") |
| | | public class PackageRecordDto { |
| | | |
| | | @ApiModelProperty(value = "1 -本日 2-本周 3-本月", example = "1") |
| | | private Integer type; |
| | | |
| | | } |
| | |
| | | @TableName("dapp_a_kline") |
| | | public class DappAKlineEntity extends BaseEntity { |
| | | /** |
| | | * 类型 1:小时 2:日 3:周 4:月 |
| | | * 类型 1:实时更新 2:前端显示 |
| | | */ |
| | | private Integer type; |
| | | |
| | |
| | | public enum AccountFlowEnum { |
| | | |
| | | //每日获取金额(前端提示记录) |
| | | SYSTEM_PACKAGE("SYSTEM_PACKAGE", 4), |
| | | |
| | | //每日获取金额(前端提示记录) |
| | | AMOUNT_RECORD("AMOUNT_RECORD", 3), |
| | | |
| | | //支付订单 |
| | |
| | | */ |
| | | @Getter |
| | | public enum FundFlowEnum { |
| | | //商城流水10%进入底池 |
| | | SYSTEM_ORDER_PACKAGE("SYSTEM_ORDER_PACKAGE", 43), |
| | | //资产包增加 |
| | | PACKAGE_ADD("PACKAGE_ADD", 42), |
| | | //系统回购 |
| | |
| | | |
| | | import cc.mrbird.febs.dapp.dto.MallGoodsQueryDto; |
| | | import cc.mrbird.febs.dapp.dto.MallOrderQueryDto; |
| | | import cc.mrbird.febs.dapp.dto.PackageRecordDto; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.MallAddressInfo; |
| | | import cc.mrbird.febs.dapp.vo.*; |
| | | import cn.hutool.core.date.DateTime; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | void deleteByOrderId(@Param("orderId")Long id); |
| | | |
| | | MallAddressInfo selectAddressOneByMemberId(@Param("memberId")Long memberId); |
| | | |
| | | BigDecimal selectOrderAmountByTime(@Param("type") String type, @Param("date") Date date); |
| | | |
| | | Integer selectOrderCountByTime(@Param("type") String type, @Param("date") Date date); |
| | | |
| | | BigDecimal selectAccountChangeAfterAmountByTime(@Param("type") String type, @Param("date") Date date); |
| | | |
| | | List<PackageRecordVo> selectPackageRecordDayInPage(@Param("date") Date date); |
| | | |
| | | List<PackageRecordVo> selectPackageRecordMonthInPage(@Param("date") Date date); |
| | | |
| | | List<PackageRecordVo> selectPackageRecordWeekInPage(@Param("date") Date date); |
| | | } |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | public interface DappWalletCoinDao extends BaseMapper<DappWalletCoinEntity> { |
| | |
| | | void reduceTotalAndAvailableByMemberId(@Param("memberId")Long id, @Param("balance")BigDecimal multiply); |
| | | |
| | | List<DappWalletCoinEntity> selectAmountThanZero(); |
| | | |
| | | BigDecimal selectTotal(); |
| | | |
| | | BigDecimal selectWithdrawAmountByType(@Param("type") String type, @Param("date") Date date); |
| | | } |
| | |
| | | void confirmOrder(Long id); |
| | | |
| | | MallAddressInfo findAddress(); |
| | | |
| | | List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto); |
| | | |
| | | List<AKLineLimitVo> packageKline(); |
| | | } |
| | |
| | | import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappWalletMineEntity; |
| | | import cc.mrbird.febs.dapp.vo.ActiveNftListVo; |
| | | import cc.mrbird.febs.dapp.vo.DappFundFlowVo; |
| | | import cc.mrbird.febs.dapp.vo.MallOrderListVo; |
| | | import cc.mrbird.febs.dapp.vo.WalletInfoVo; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | public interface DappWalletService { |
| | | |
| | |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | import cc.mrbird.febs.system.entity.User; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | |
| | | return mallAddressInfo; |
| | | } |
| | | |
| | | @Override |
| | | public List<PackageRecordVo> packageRecord(PackageRecordDto packageRecordDto) { |
| | | List<PackageRecordVo> packageRecordVos = new ArrayList<>(); |
| | | Integer type = packageRecordDto.getType(); |
| | | if(2 == type){ |
| | | packageRecordVos = dappMemberDao.selectPackageRecordWeekInPage(DateUtil.beginOfWeek(DateUtil.date())); |
| | | }else if(3 == type){ |
| | | packageRecordVos = dappMemberDao.selectPackageRecordMonthInPage(DateUtil.date()); |
| | | }else{ |
| | | packageRecordVos = dappMemberDao.selectPackageRecordDayInPage(DateUtil.date()); |
| | | } |
| | | if(CollUtil.isNotEmpty(packageRecordVos)){ |
| | | Integer packageNum = 0; |
| | | for(PackageRecordVo packageRecordVo : packageRecordVos){ |
| | | packageNum = packageNum + 1; |
| | | packageRecordVo.setPackageNum(packageNum); |
| | | } |
| | | } |
| | | return packageRecordVos; |
| | | } |
| | | |
| | | @Override |
| | | public List<AKLineLimitVo> packageKline() { |
| | | return dappAKlineMapper.selectListByTypeAndLimit(2, 30); |
| | | } |
| | | |
| | | public static List<List<String>> partitionList(List<String> originalList, int partitionSize) { |
| | | List<List<String>> partitionedList = new ArrayList<>(); |
| | | int size = originalList.size(); |
| | |
| | | BigDecimal divide = avaPackagePoor.divide(packageTotalScore, 8, BigDecimal.ROUND_DOWN); |
| | | packageScorePriceDic.setValue(divide.toString()); |
| | | dataDictionaryCustomMapper.updateById(packageScorePriceDic); |
| | | |
| | | DappFundFlowEntity packageFlow = new DappFundFlowEntity( |
| | | AccountFlowEnum.SYSTEM_PACKAGE.getCode(), |
| | | 1L, |
| | | addPoor, |
| | | FundFlowEnum.SYSTEM_ORDER_PACKAGE.getCode(), |
| | | 2, |
| | | BigDecimal.ZERO, |
| | | null, |
| | | orderId); |
| | | dappFundFlowDao.insert(packageFlow); |
| | | |
| | | DappAKlineEntity dappAKlineEntity = new DappAKlineEntity(); |
| | | dappAKlineEntity.setOpenPrice(divide); |
| | | dappAKlineEntity.setType(1); |
| | | dappAKlineMapper.insert(dappAKlineEntity); |
| | | } |
| | | |
| | | } |
| | |
| | | dappWalletCoinEntity.setAvailableAmount(availableAmountRelease); |
| | | dappWalletCoinDao.updateById(dappWalletCoinEntity); |
| | | |
| | | StringBuffer content = new StringBuffer(); |
| | | if(amountMagic.compareTo(localTotalAchieve) > 0){ |
| | | content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" + |
| | | "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" + |
| | | "限,增加消费金额可获得更多收益"); |
| | | }else{ |
| | | content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" + |
| | | "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | DappAccountMoneyChangeEntity record = new DappAccountMoneyChangeEntity( |
| | | memberId, |
| | | totalAmount, |
| | | amountMagic, |
| | | localTotalAchieve, |
| | | AccountFlowEnum.AMOUNT_RECORD.getCode(), |
| | | "今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" + |
| | | "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" + |
| | | "限,增加消费金额可获得更多收益"); |
| | | content.toString()); |
| | | dappAccountMoneyChangeDao.insert(record); |
| | | |
| | | //实时更新用户等级 |
| | |
| | | BigDecimal packageAvaCntScore = packageAvaCnt.add(cnt); |
| | | packageAvaCntDic.setValue(packageAvaCntScore.toString()); |
| | | dataDictionaryCustomMapper.updateById(packageAvaCntDic); |
| | | |
| | | DappAKlineEntity dappAKlineEntity = new DappAKlineEntity(); |
| | | dappAKlineEntity.setOpenPrice(divide); |
| | | dappAKlineEntity.setType(1); |
| | | dappAKlineMapper.insert(dappAKlineEntity); |
| | | |
| | | } |
| | | |
| | | @Override |
| | |
| | | package cc.mrbird.febs.dapp.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.chain.ChainEnum; |
| | | import cc.mrbird.febs.dapp.chain.ChainService; |
| | | import cc.mrbird.febs.dapp.chain.ContractChainService; |
| | | import cc.mrbird.febs.dapp.dto.*; |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.enumerate.*; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cc.mrbird.febs.dapp.service.DappWalletService; |
| | | import cc.mrbird.febs.dapp.utils.BoxUtil; |
| | | import cc.mrbird.febs.dapp.vo.*; |
| | | import cc.mrbird.febs.rabbit.producer.ChainProducer; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateField; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import freemarker.template.utility.StringUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao; |
| | | private final RedisUtils redisUtils; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final DappNftActivationDao dappNftActivationDao; |
| | | private final MemberCoinWithdrawDao memberCoinWithdrawDao; |
| | | |
| | | private final ChainProducer chainProducer; |
| | | private final DappSystemDao dappSystemDao; |
| | | private final DappSystemProfitDao dappSystemProfitDao; |
| | | |
| | | private final DappNodeOrderMapper dappNodeOrderMapper; |
| | | private final DappMemberNodeMapper dappMemberNodeMapper; |
| | | private final DappChargeUsdtMapper dappChargeUsdtMapper; |
| | | private final DappUsdtPerkEntityMapper dappUsdtPerkEntityMapper; |
| | | private final DappAKlineMapper dappAKlineMapper; |
| | | |
| | | @Override |
| | | public List<DappFundFlowEntity> recordInPage(RecordInPageDto recordInPageDto) { |
| | |
| | | BigDecimal feeAmount = amount.multiply(withdrawFee); |
| | | //减少余额 |
| | | this.updateWalletCoinWithLock(amount, member.getId(), 2); |
| | | |
| | | BigDecimal withdrawAmount = amount.divide(new BigDecimal(7),2,BigDecimal.ROUND_DOWN); |
| | | BigDecimal withdrawAmountFee = feeAmount.divide(new BigDecimal(7),2,BigDecimal.ROUND_DOWN); |
| | | //增加流水 |
| | | DappFundFlowEntity dappFundFlowEntity = new DappFundFlowEntity( |
| | | AccountFlowEnum.AMOUNT.getCode(), |
| | | member.getId(), |
| | | amount.negate(), |
| | | withdrawAmount.negate(), |
| | | FundFlowEnum.WITHDRAW_USDT.getCode(), |
| | | DappFundFlowEntity.WITHDRAW_STATUS_ING, |
| | | feeAmount); |
| | | withdrawAmountFee); |
| | | dappFundFlowDao.insert(dappFundFlowEntity); |
| | | //增加提现的记录 |
| | | MemberCoinWithdrawEntity memberCoinWithdraw = new MemberCoinWithdrawEntity(); |
| | | memberCoinWithdraw.setMemberId(member.getId()); |
| | | memberCoinWithdraw.setAddress(member.getAddress()); |
| | | memberCoinWithdraw.setAmount(amount.subtract(feeAmount)); |
| | | memberCoinWithdraw.setFeeAmount(feeAmount); |
| | | memberCoinWithdraw.setAmount(withdrawAmount.subtract(withdrawAmountFee)); |
| | | memberCoinWithdraw.setFeeAmount(withdrawAmountFee); |
| | | memberCoinWithdraw.setStatus(MemberCoinWithdrawEntity.STATUS_DOING); |
| | | memberCoinWithdraw.setSymbol("USDT"); |
| | | memberCoinWithdraw.setFlowId(dappFundFlowEntity.getId()); |
| | |
| | | //生成一条进行中的入金资金流水记录 |
| | | DappFundFlowEntity fundFlow = new DappFundFlowEntity( |
| | | dappMemberEntity.getId(), |
| | | transferAusdDto.getAmount(), |
| | | transferAusdDto.getAmount().multiply(new BigDecimal(7)), |
| | | type, |
| | | 1, |
| | | transferAusdDto.getFee(), |
| | |
| | | /** |
| | | * 增加用户的余额 |
| | | */ |
| | | dappWalletCoinDao.addTotalAndaddAvailableByMemberId(member.getId(),amount); |
| | | dappWalletCoinDao.addTotalAndaddAvailableByMemberId(member.getId(),amount.multiply(new BigDecimal(7))); |
| | | |
| | | DappChargeUsdtEntity dappChargeUsdtEntity = new DappChargeUsdtEntity(); |
| | | dappChargeUsdtEntity.setMemberId(member.getId()); |
| | |
| | | dappChargeUsdtEntity.setMemberHash(transferAusdDto.getTxHash()); |
| | | dappChargeUsdtEntity.setStatus(2); |
| | | dappChargeUsdtEntity.setTotalCnt(amount); |
| | | dappChargeUsdtEntity.setRealCnt(amount); |
| | | dappChargeUsdtEntity.setRealCnt(amount.multiply(new BigDecimal(7))); |
| | | dappChargeUsdtMapper.insert(dappChargeUsdtEntity); |
| | | } else { |
| | | if (flow.getStatus() == 1) { |
| | |
| | | */ |
| | | BigDecimal withdrawFee = dappFundFlowEntity.getFee(); |
| | | if(BigDecimal.ZERO.compareTo(withdrawFee) < 0){ |
| | | BigDecimal addPoor = withdrawFee; |
| | | BigDecimal addPoor = withdrawFee.multiply(new BigDecimal(7)); |
| | | |
| | | DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(), |
| | |
| | | BigDecimal divide = avaPackagePoor.divide(packageTotalScore, 8, BigDecimal.ROUND_DOWN); |
| | | packageScorePriceDic.setValue(divide.toString()); |
| | | dataDictionaryCustomMapper.updateById(packageScorePriceDic); |
| | | |
| | | DappAKlineEntity dappAKlineEntity = new DappAKlineEntity(); |
| | | dappAKlineEntity.setOpenPrice(divide); |
| | | dappAKlineEntity.setType(1); |
| | | dappAKlineMapper.insert(dappAKlineEntity); |
| | | } |
| | | return new FebsResponse().success(); |
| | | } |
| | |
| | | memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO); |
| | | memberCoinWithdrawDao.updateById(memberCoinWithdrawEntity); |
| | | //增加余额 |
| | | this.updateWalletCoinWithLock(dappFundFlowEntity.getAmount().negate(), dappMemberEntity.getId(), 1); |
| | | BigDecimal negate = dappFundFlowEntity.getAmount().negate().multiply(new BigDecimal(7)); |
| | | this.updateWalletCoinWithLock(negate, dappMemberEntity.getId(), 1); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | |
| | | @ApiModel(value = "AKLineLimitVo", description = "K线数据") |
| | | public class AKLineLimitVo { |
| | | |
| | | @ApiModelProperty(value = "价格") |
| | | private BigDecimal openPrice; |
| | | |
| | | private BigDecimal closePrice; |
| | | |
| | | private BigDecimal lowestPrice; |
| | | |
| | | private BigDecimal highestPrice; |
| | | |
| | | @ApiModelProperty(value = "时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private Date createTime; |
| | | |
| New file |
| | |
| | | package cc.mrbird.febs.dapp.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel(value = "PackageRecordVo", description = "排行榜") |
| | | public class PackageRecordVo { |
| | | |
| | | @ApiModelProperty(value = "排名") |
| | | private Integer packageNum; |
| | | |
| | | @ApiModelProperty(value = "地址") |
| | | private String address; |
| | | |
| | | } |
| | |
| | | package cc.mrbird.febs.job; |
| | | |
| | | import cc.mrbird.febs.dapp.entity.DappAKlineEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.mapper.DappAKlineMapper; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | |
| | | |
| | | @Autowired |
| | | private DappSystemService dappSystemService; |
| | | @Autowired |
| | | private DappAKlineMapper dappAKlineMapper; |
| | | |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | public void memberPerk() { |
| | |
| | | } |
| | | } |
| | | |
| | | @Scheduled(cron = "0 0 0/4 * * ? ") |
| | | public void klineUpdate() { |
| | | DappAKlineEntity dappAKlineEntity = new DappAKlineEntity(); |
| | | dappAKlineEntity.setType(2); |
| | | DappAKlineEntity dappAKlineOld = dappAKlineMapper.selectOneHourByType(); |
| | | if(ObjectUtil.isEmpty(dappAKlineOld)){ |
| | | dappAKlineEntity.setOpenPrice(BigDecimal.ZERO); |
| | | }else{ |
| | | dappAKlineEntity.setOpenPrice(dappAKlineOld.getOpenPrice()); |
| | | } |
| | | dappAKlineMapper.insert(dappAKlineEntity); |
| | | } |
| | | |
| | | } |
| | |
| | | package cc.mrbird.febs.rabbit; |
| | | |
| | | import lombok.Data; |
| | | import lombok.Getter; |
| | | |
| | | @Getter |
| | |
| | | |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | | import cc.mrbird.febs.rabbit.QueueConstants; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.rabbitmq.client.Channel; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.amqp.core.Message; |
| | | import org.springframework.amqp.rabbit.annotation.RabbitListener; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
| | |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.service.ValidateCodeService; |
| | | import cc.mrbird.febs.common.utils.Md5Util; |
| | | import cc.mrbird.febs.dapp.mapper.DappMemberDao; |
| | | import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao; |
| | | import cc.mrbird.febs.dapp.mapper.MallOrderInfoMapper; |
| | | import cc.mrbird.febs.monitor.entity.LoginLog; |
| | | import cc.mrbird.febs.monitor.service.ILoginLogService; |
| | | import cc.mrbird.febs.system.entity.User; |
| | | import cc.mrbird.febs.system.service.IUserService; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.shiro.authc.UsernamePasswordToken; |
| | | import org.springframework.validation.annotation.Validated; |
| | |
| | | import javax.servlet.http.HttpSession; |
| | | import javax.validation.constraints.NotBlank; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | private final IUserService userService; |
| | | private final ValidateCodeService validateCodeService; |
| | | private final ILoginLogService loginLogService; |
| | | private final DappMemberDao dappMemberDao; |
| | | private final DappWalletCoinDao dappWalletCoinDao; |
| | | |
| | | @PostMapping("login") |
| | | @Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit") |
| | |
| | | param.setUsername(username); |
| | | List<Map<String, Object>> lastSevenUserVisitCount = this.loginLogService.findLastSevenDaysVisitCount(param); |
| | | data.put("lastSevenUserVisitCount", lastSevenUserVisitCount); |
| | | |
| | | data.put("orderAmountTotal", dappMemberDao.selectOrderAmountByTime(null, null)); |
| | | data.put("orderAmountMonth", dappMemberDao.selectOrderAmountByTime("M", new Date())); |
| | | data.put("orderAmountToday", dappMemberDao.selectOrderAmountByTime("D", new Date())); |
| | | |
| | | data.put("orderTotalCnt", dappMemberDao.selectOrderCountByTime(null, null)); |
| | | data.put("orderMonthCnt", dappMemberDao.selectOrderCountByTime("M", new Date())); |
| | | data.put("orderTodayCnt", dappMemberDao.selectOrderCountByTime("D", new Date())); |
| | | |
| | | BigDecimal releaseTotal = dappMemberDao.selectAccountChangeAfterAmountByTime(null, null); |
| | | BigDecimal releaseTotalPre = dappMemberDao.selectAccountChangeAfterAmountByTime(null, null); |
| | | BigDecimal releaseNot = releaseTotalPre.subtract(releaseTotal); |
| | | data.put("releaseTotal", releaseTotal); |
| | | data.put("releaseNot", releaseNot); |
| | | data.put("releaseToday", dappMemberDao.selectAccountChangeAfterAmountByTime("D", new Date())); |
| | | |
| | | data.put("withdrawTotal", dappWalletCoinDao.selectWithdrawAmountByType(null, null)); |
| | | data.put("withdrawToday", dappWalletCoinDao.selectWithdrawAmountByType("D", new Date())); |
| | | data.put("withdrawNot", dappWalletCoinDao.selectTotal()); |
| | | |
| | | |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | |
| | | <select id="selectListByTypeAndLimit" resultType="cc.mrbird.febs.dapp.vo.AKLineLimitVo"> |
| | | select |
| | | a.open_price openPrice, |
| | | a.close_price closePrice, |
| | | a.lowest_price lowestPrice, |
| | | a.highest_price highestPrice, |
| | | a.create_time createTime |
| | | from dapp_a_kline a |
| | | where a.type = #{type} |
| | | <!-- <where>--> |
| | | <!-- <if test="type != 1">--> |
| | | <!-- and a.type = #{type}--> |
| | | <!-- </if>--> |
| | | <!-- <if test="type == 1">--> |
| | | <!-- and a.type in (0,1)--> |
| | | <!-- </if>--> |
| | | <!-- </where>--> |
| | | order by a.create_time desc |
| | | order by a.create_time asc |
| | | limit #{kLineLimit} |
| | | </select> |
| | | |
| | |
| | | order by a.is_your asc |
| | | limit 1 |
| | | </select> |
| | | |
| | | <select id="selectOrderAmountByTime" resultType="java.math.BigDecimal"> |
| | | select IFNULL(sum(IFNULL(amount,0)),0) |
| | | from mall_order_info |
| | | where |
| | | status = 2 |
| | | <if test='type == "D"'> |
| | | and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d'); |
| | | </if> |
| | | <if test='type == "M"'> |
| | | and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m'); |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectOrderCountByTime" resultType="java.lang.Integer"> |
| | | select count(id) |
| | | from mall_order_info |
| | | where |
| | | status = 2 |
| | | <if test='type == "D"'> |
| | | and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d'); |
| | | </if> |
| | | <if test='type == "M"'> |
| | | and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m'); |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectAccountChangeAfterAmountByTime" resultType="java.math.BigDecimal"> |
| | | select IFNULL(sum(IFNULL(after_amount,0)),0) |
| | | from dapp_account_money_change |
| | | where type = 3 |
| | | <if test='type == "D"'> |
| | | and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d'); |
| | | </if> |
| | | <if test='type == "M"'> |
| | | and date_format(CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m'); |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="selectPackageRecordDayInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo"> |
| | | SELECT |
| | | b.address address, |
| | | IFNULL(SUM(a.amount), 0) totalAmount |
| | | FROM |
| | | dapp_fund_flow a |
| | | LEFT JOIN dapp_member b on a.member_id = b.id |
| | | WHERE |
| | | a.type = 22 |
| | | and date_format(a.CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') |
| | | and b.address is not NULL |
| | | and b.address != 'SYSTEM' |
| | | GROUP BY |
| | | a.member_id |
| | | order by totalAmount desc |
| | | LIMIT 100; |
| | | </select> |
| | | |
| | | <select id="selectPackageRecordMonthInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo"> |
| | | SELECT |
| | | b.address address, |
| | | IFNULL(SUM(a.amount), 0) totalAmount |
| | | FROM |
| | | dapp_fund_flow a |
| | | LEFT JOIN dapp_member b on a.member_id = b.id |
| | | WHERE |
| | | a.type = 22 |
| | | and date_format(a.CREATE_TIME, '%Y-%m') = date_format(#{date}, '%Y-%m') |
| | | and b.address is not NULL |
| | | and b.address != 'SYSTEM' |
| | | GROUP BY |
| | | a.member_id |
| | | order by totalAmount desc |
| | | LIMIT 100; |
| | | </select> |
| | | |
| | | <select id="selectPackageRecordWeekInPage" resultType="cc.mrbird.febs.dapp.vo.PackageRecordVo"> |
| | | SELECT |
| | | b.address address, |
| | | IFNULL(SUM(a.amount), 0) totalAmount |
| | | FROM |
| | | dapp_fund_flow a |
| | | LEFT JOIN dapp_member b on a.member_id = b.id |
| | | WHERE |
| | | a.type = 22 |
| | | and date_format(a.CREATE_TIME, '%Y-%m-%d') > date_format(#{date}, '%Y-%m-%d') |
| | | and b.address is not NULL |
| | | and b.address != 'SYSTEM' |
| | | GROUP BY |
| | | a.member_id |
| | | order by totalAmount desc |
| | | LIMIT 100; |
| | | </select> |
| | | </mapper> |
| | |
| | | <select id="selectAmountThanZero" resultType="cc.mrbird.febs.dapp.entity.DappWalletCoinEntity"> |
| | | select * from dapp_wallet_coin where available_amount > 0 |
| | | </select> |
| | | |
| | | <select id="selectTotal" resultType="java.math.BigDecimal"> |
| | | select IFNULL(sum(IFNULL(total_amount,0)),0) |
| | | from dapp_wallet_coin |
| | | </select> |
| | | |
| | | <select id="selectWithdrawAmountByType" resultType="java.math.BigDecimal"> |
| | | select IFNULL(sum(IFNULL(amount,0)),0) |
| | | from member_coin_withdraw |
| | | where 1=1 |
| | | <if test='type == "D"'> |
| | | and date_format(CREATE_TIME, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d'); |
| | | </if> |
| | | </select> |
| | | </mapper> |
| | |
| | | <!-- <input type="text" placeholder="输入转账HASH" name="fromHash" autocomplete="off" class="layui-input">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-inline">--> |
| | | <!-- <label class="layui-form-label">类型:</label>--> |
| | | <!-- <div class="layui-input-inline">--> |
| | | <!-- <select name="type">--> |
| | | <!-- <option value=""></option>--> |
| | | <!-- <option value="4">入金,买入A币</option>--> |
| | | <!-- <option value="5">进入a底池</option>--> |
| | | <!-- <option value="6">进入b底池</option>--> |
| | | <!-- <option value="7">50%客户秒到</option>--> |
| | | <!-- <option value="8">全网加权分红收益总量</option>--> |
| | | <!-- <option value="9">10%直推</option>--> |
| | | <!-- <option value="10">5%节点-(超级节点收益总量)</option>--> |
| | | <!-- <option value="11">5%节点平分</option>--> |
| | | <!-- <option value="12">5%基金会-(基金会收益总量)</option>--> |
| | | <!-- <option value="13">10%级差奖-(业绩奖收益总量)</option>--> |
| | | <!-- <option value="14">10%级差奖给会员</option>--> |
| | | <!-- <option value="15">dao3的全网分红</option>--> |
| | | <!-- <option value="16">dao4的全网分红</option>--> |
| | | <!-- <option value="17">dao5的全网分红</option>--> |
| | | <!-- <option value="18">dao5的平级全网分红</option>--> |
| | | <!-- <option value="19">DAO 3节点收益</option>--> |
| | | <!-- <option value="20">DAO 4节点收益</option>--> |
| | | <!-- <option value="21">DAO 5节点收益</option>--> |
| | | <!-- <option value="22">DAO 5平级收益</option>--> |
| | | <!-- <option value="23">资产钱包转账到闪对钱包</option>--> |
| | | <!-- <option value="24">资产钱包转账到闪对钱包手续费</option>--> |
| | | <!-- <option value="25">闪对钱包转USDT</option>--> |
| | | <!-- <option value="27">闪对钱包转USDT(USDT流水)</option>--> |
| | | <!-- <option value="28">入金,买入AUSD币</option>--> |
| | | <!-- <option value="29">每小时燃烧</option>--> |
| | | <!-- <option value="30">20%全网加权分红剩余</option>--> |
| | | <!-- <option value="31">AUSDT互转</option>--> |
| | | <!-- <option value="32">ANDAO互转</option>--> |
| | | <!-- <option value="33">权益额度增加</option>--> |
| | | <!-- <option value="34">进入提现池</option>--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">类型:</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="type"> |
| | | <option value=""></option> |
| | | <option value="1">赠送积分</option> |
| | | <option value="2">支付订单</option> |
| | | <option value="3">静态补贴</option> |
| | | <option value="4">预期减少赠送积分</option> |
| | | <option value="5">预期增加余额</option> |
| | | <option value="6">直推</option> |
| | | <option value="7">团队静态收益V1</option> |
| | | <option value="8">团队静态收益V2</option> |
| | | <option value="9">团队静态收益V3</option> |
| | | <option value="10">团队静态收益V4</option> |
| | | <option value="11">团队静态收益V5</option> |
| | | <option value="12">团队静态收益V6</option> |
| | | <option value="13">团队静态收益V7</option> |
| | | <option value="14">共享加速V1</option> |
| | | <option value="15">共享加速V2</option> |
| | | <option value="16">共享加速V3</option> |
| | | <option value="17">共享加速V4</option> |
| | | <option value="18">共享加速V5</option> |
| | | <option value="19">共享加速V6</option> |
| | | <option value="20">共享加速V7</option> |
| | | <option value="21">实际减少赠送积分</option> |
| | | <option value="22">实际增加余额</option> |
| | | <option value="23">卖出资产</option> |
| | | <option value="24">卖出资产获得余额</option> |
| | | <option value="25">卖出资产手续费</option> |
| | | <option value="26">每日获取金额(前端提示记录)</option> |
| | | <option value="27">系统拨付余额</option> |
| | | <option value="28">系统拨付赠送积分</option> |
| | | <option value="29">系统拨付资产包</option> |
| | | <option value="30">新增业绩</option> |
| | | <option value="31">全网分红V1</option> |
| | | <option value="32">全网分红V2</option> |
| | | <option value="33">全网分红V3</option> |
| | | <option value="34">全网分红V4</option> |
| | | <option value="35">全网分红V5</option> |
| | | <option value="36">全网分红V6</option> |
| | | <option value="37">全网分红V7</option> |
| | | <option value="39">充值</option> |
| | | <option value="40">提现</option> |
| | | <option value="41">系统回购</option> |
| | | <option value="42">获得通证</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | |
| | | return { |
| | | address: $searchForm.find('input[name="address"]').val().trim(), |
| | | // fromHash: $searchForm.find('input[name="fromHash"]').val().trim(), |
| | | // type: $searchForm.find("select[name='type']").val() |
| | | type: $searchForm.find("select[name='type']").val() |
| | | }; |
| | | } |
| | | |
| | |
| | | border: 1px solid #f1f1f1; |
| | | margin-bottom: .5rem; |
| | | padding: .5rem; |
| | | background: #FFFFFF; |
| | | } |
| | | |
| | | #febs-index .welcome-info-wrapper { |
| | |
| | | #febs-index .project-desc { |
| | | color: rgba(0, 0, 0, 0.45); |
| | | } |
| | | /*.layui-card:last-child{*/ |
| | | /* background: #F8F8F8;*/ |
| | | /*}*/ |
| | | .box{ |
| | | background: #FFFFFF; |
| | | padding: 30px 30px; |
| | | border-radius: 4px; |
| | | } |
| | | .box .name{ |
| | | font-size: 14px; |
| | | color: #333333; |
| | | } |
| | | .box .num{ |
| | | font-size: 24px; |
| | | color: #1890ff; |
| | | font-weight: bold; |
| | | margin-top: 10px; |
| | | } |
| | | .m-title{ |
| | | position: relative; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | color: #000000; |
| | | padding-left: 20px; |
| | | margin: 0 0 10px; |
| | | } |
| | | .m-title::before{ |
| | | content: ''; |
| | | position: absolute; |
| | | left: 0; |
| | | width: 4px; |
| | | height: 20px; |
| | | background: #1890ff; |
| | | } |
| | | </style> |
| | | <div class="layui-fluid layui-anim febs-anim-up" id="febs-index" lay-title="系统首页"> |
| | | <div class="layui-row layui-col-space8 febs-container"> |
| | | <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card" style="background: #F8F8F8;"> |
| | | <div class="layui-card-body layui-anim layui-anim-fadein"> |
| | | <div class="layui-row welcome-info"> |
| | | <div class="layui-col-md6 layui-col-sm12 layui-col-xs12"> |
| | |
| | | <span id="welcome-message"></span> |
| | | </div> |
| | | <div class="user-dept"> |
| | | <span id="user-dept"></span> | <span id="user-role"></span> |
| | | </div> |
| | | <div class="user-login-info"> |
| | | 上次登录时间:<span id="last-login-time">2019-05-23 18:45:12</span> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-body layui-anim layui-anim-fadein"> |
| | | <div class="layui-row"> |
| | | <div class="m-title">商城订单流水</div> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">总流水</p> |
| | | <p class="num"><span id="orderAmountTotal"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">本月销量流水</p> |
| | | <p class="num"><span id="orderAmountMonth"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">今日销量流水</p> |
| | | <p class="num"><span id="orderAmountToday"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-body layui-anim layui-anim-fadein"> |
| | | <div class="layui-row"> |
| | | <div class="m-title">商城订单数量</div> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">订单总量</p> |
| | | <p class="num"><span id="orderTotalCnt"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">本月订单量</p> |
| | | <p class="num"><span id="orderMonthCnt"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">今日订单量</p> |
| | | <p class="num"><span id="orderTodayCnt"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-body layui-anim layui-anim-fadein"> |
| | | <div class="layui-row"> |
| | | <div class="m-title">商城释放</div> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">总释放数量</p> |
| | | <p class="num"><span id="releaseTotal"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">未释放数量</p> |
| | | <p class="num"><span id="releaseNot"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">今日释放数量</p> |
| | | <p class="num"><span id="releaseToday"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-body layui-anim layui-anim-fadein"> |
| | | <div class="layui-row"> |
| | | <div class="m-title">商城提现</div> |
| | | <div class="layui-row layui-col-space15"> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">总提现数量</p> |
| | | <p class="num"><span id="withdrawTotal"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">未提现数量</p> |
| | | <p class="num"><span id="withdrawNot"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md3"> |
| | | <div class="layui-panel"> |
| | | <div class="box"> |
| | | <p class="name">今日提现数量</p> |
| | | <p class="num"><span id="withdrawToday"></span></p> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | var index = Math.floor((Math.random() * welcomeArr.length)); |
| | | var welcomeMessage = time + ',<a id="febs-index-user">' + currentUser.username + '</a>,' + welcomeArr[index]; |
| | | $view.find('#today-ip').text(data.todayIp).end() |
| | | |
| | | .find('#orderAmountTotal').text(data.orderAmountTotal).end() |
| | | .find('#orderAmountMonth').text(data.orderAmountTotal).end() |
| | | .find('#orderAmountToday').text(data.orderAmountToday).end() |
| | | |
| | | .find('#orderTotalCnt').text(data.orderTotalCnt).end() |
| | | .find('#orderMonthCnt').text(data.orderTotalCnt).end() |
| | | .find('#orderTodayCnt').text(data.orderTodayCnt).end() |
| | | |
| | | .find('#releaseTotal').text(data.releaseTotal).end() |
| | | .find('#releaseToday').text(data.releaseToday).end() |
| | | .find('#releaseNot').text(data.releaseNot).end() |
| | | |
| | | .find('#withdrawTotal').text(data.withdrawTotal).end() |
| | | .find('#withdrawToday').text(data.withdrawToday).end() |
| | | .find('#withdrawNot').text(data.withdrawNot).end() |
| | | |
| | | .find('#today-visit-count').text(data.todayVisitCount).end() |
| | | .find('#total-visit-count').text(data.totalVisitCount).end() |
| | | .find('#user-dept').text(currentUser.deptName ? currentUser.deptName : '暂无所属部门').end() |