xiaoyong931011
2022-06-23 5aad7ef3aef4ebf8ab6462e6e5b89425ab5d426c
20220528
1 files added
4 files modified
284 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/OrderPayMethodEnum.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/system/controller/LoginController.java 39 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallOrderInfoMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/index.html 218 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/OrderPayMethodEnum.java
New file
@@ -0,0 +1,19 @@
package cc.mrbird.febs.common.enumerates;
import lombok.Getter;
@Getter
public enum OrderPayMethodEnum {
    WECHAT("微信支付"),
    ALIPAY("支付宝支付"),
    SCORE("积分支付"),
    BALANCE("余额支付");
    private String name;
    OrderPayMethodEnum(String name) {
        this.name = name;
    }
}
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.mapper;
import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
import cc.mrbird.febs.mall.dto.MallOrderInfoDto;
import cc.mrbird.febs.mall.dto.OrderListDto;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
@@ -58,4 +59,6 @@
    int updateOrderConfirmStatus(@Param("date") Date date);
    List<MallOrderInfo> selectOrderInfoWithNormalGoods(@Param("date") Date date);
    BigDecimal selectSumAmountByPayMethodAndStatue(@Param("payMethod")String name, @Param("statue")int value);
}
src/main/java/cc/mrbird/febs/system/controller/LoginController.java
@@ -3,16 +3,22 @@
import cc.mrbird.febs.common.annotation.Limit;
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
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.mall.entity.MallMember;
import cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.springframework.validation.annotation.Validated;
@@ -43,6 +49,7 @@
    private final ValidateCodeService validateCodeService;
    private final ILoginLogService loginLogService;
    private final MallMemberMapper mallMemberMapper;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final MallAchieveRecordMapper mallAchieveRecordMapper;
    @PostMapping("login")
@@ -91,11 +98,43 @@
//        Long todayIp = this.loginLogService.findTodayIp();
//        data.put("todayIp", todayIp);
        //支付统计
        data.put("wechatPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.WECHAT.getName(), OrderStatusEnum.FINISH.getValue()));
        data.put("alipayPay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.ALIPAY.getName(), OrderStatusEnum.FINISH.getValue()));
        data.put("scorePay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.SCORE.getName(), OrderStatusEnum.FINISH.getValue()));
        data.put("balancePay",mallOrderInfoMapper.selectSumAmountByPayMethodAndStatue(OrderPayMethodEnum.BALANCE.getName(), OrderStatusEnum.FINISH.getValue()));
        data.put("lastDay", mallAchieveRecordMapper.selectAchieveTotal("D", DateUtil.offsetDay(new Date(), -1)));
        data.put("today", mallAchieveRecordMapper.selectAchieveTotal("D", new Date()));
        data.put("lastMonth", mallAchieveRecordMapper.selectAchieveTotal("M", DateUtil.offsetMonth(new Date(), -1)));
        data.put("thisMonth", mallAchieveRecordMapper.selectAchieveTotal("M", new Date()));
        //会员数据
        data.put("totalMember",mallMemberMapper.selectCount(new QueryWrapper<>()) );
        QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
        formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
        data.put("formalMember",mallMemberMapper.selectCount(formalMember));
        QueryWrapper<MallMember> informalMember = new QueryWrapper<>();
        informalMember.eq("level", AgentLevelEnum.ZERO_LEVEL.name());
        data.put("informalMember",mallMemberMapper.selectCount(informalMember));
        QueryWrapper<MallMember> todayMember = new QueryWrapper<>();
        todayMember.like("CREATED_TIME", DateUtil.today());
        todayMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
        data.put("todayMember",mallMemberMapper.selectCount(todayMember));
        QueryWrapper<MallMember> thisMonthMember = new QueryWrapper<>();
        thisMonthMember.like("CREATED_TIME", DateUtil.format(DateUtil.date(),"yyyy-MM"));
        thisMonthMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
        data.put("thisMonthMember",mallMemberMapper.selectCount(thisMonthMember));
        QueryWrapper<MallMember> lastMonthMember = new QueryWrapper<>();
        lastMonthMember.like("CREATED_TIME", DateUtil.format(DateUtil.offsetMonth(new Date(), -1),"yyyy-MM"));
        lastMonthMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
        data.put("lastMonthMember",mallMemberMapper.selectCount(lastMonthMember));
        // 获取近期系统访问记录
        List<Map<String, Object>> lastSevenVisitCount = this.loginLogService.findLastSevenDaysVisitCount(null);
        data.put("lastSevenVisitCount", lastSevenVisitCount);
src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -278,4 +278,9 @@
        inner join mall_order_item b on a.id=b.order_id and b.is_normal=1
        where date_format(pay_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
    </select>
    <select id="selectSumAmountByPayMethodAndStatue" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0) from mall_order_info
        where pay_method = #{payMethod} and status = #{statue}
    </select>
</mapper>
src/main/resources/templates/febs/views/index.html
@@ -3,6 +3,7 @@
        border: 1px solid #f1f1f1;
        margin-bottom: .5rem;
        padding: .5rem;
        background: #FFFFFF;
    }
    #febs-index .welcome-info-wrapper {
@@ -68,6 +69,40 @@
    #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">
@@ -95,41 +130,153 @@
                                </div>
                            </div>
                        </div>
                        <div class="layui-col-md6 layui-col-sm12 layui-col-xs12">
                            <div class="layui-col-md-offset4">
                                <table class="login-count-table">
                                    <tr>
                                        <td>今日业绩</td>
                                        <td>昨日业绩</td>
                                        <td>本月业绩</td>
                                        <td>上月业绩</td>
                                    </tr>
                                    <tr>
                                        <td class="count" id="today">
                                            0
                                        </td>
                                        <td class="count" id="lastDay">
                                            0
                                        </td>
                                        <td class="count" id="thisMonth">
                                            0
                                        </td>
                                        <td class="count" id="lastMonth">
                                            0
                                        </td>
                                    </tr>
                                </table>
                    </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="wechatPay"></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="alipayPay"></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="scorePay"></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="balancePay"></span></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-col-md6 layui-col-sm6 layui-col-xs12">
<!--            <div class="layui-card">-->
<!--                <div class="layui-card-body">-->
<!--                </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="today"></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="lastDay"></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="thisMonth"></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="lastMonth"></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="totalMember"></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="formalMember"></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="informalMember"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-card-body layui-anim layui-anim-fadein">
                    <div class="layui-row">
                        <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="todayMember"></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="thisMonthMember"></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="lastMonthMember"></span></p>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
@@ -164,6 +311,19 @@
                .find('#lastDay').text(data.lastDay).end()
                .find('#thisMonth').text(data.thisMonth).end()
                .find('#lastMonth').text(data.lastMonth).end()
                //会员信息
                .find('#totalMember').text(data.totalMember).end()
                .find('#formalMember').text(data.formalMember).end()
                .find('#informalMember').text(data.informalMember).end()
                .find('#todayMember').text(data.todayMember).end()
                .find('#thisMonthMember').text(data.thisMonthMember).end()
                .find('#lastMonthMember').text(data.lastMonthMember).end()
                .find('#wechatPay').text(data.wechatPay).end()
                .find('#alipayPay').text(data.alipayPay).end()
                .find('#scorePay').text(data.scorePay).end()
                .find('#balancePay').text(data.balancePay).end()
                .find('#user-dept').text(currentUser.deptName ? currentUser.deptName : '暂无所属部门').end()
                .find('#user-role').text(currentUser.roleName ? currentUser.roleName : '暂无角色').end()
                .find('#last-login-time').text(currentUser.lastLoginTime ? currentUser.lastLoginTime : '第一次访问系统').end()