DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • BBS

  • 订单平台

    • 单点知识
    • 表结构
    • 用户名登陆
    • 短信登陆
    • 菜单和权限
    • 级别管理
    • 客户管理
    • 分页和搜索
    • 价格策略
    • 交易中心
    • message组件
    • 我的交易列表
      • 基本展示
      • 组合搜索组件
        • 简单使用
        • 封装和使用
      • 交易记录
      • 总结
    • worker
    • 部署之代码同步
    • 部署之线上运行
    • 张sir的部署
  • CRM

  • flask+layui

  • django+layui

  • 供应链

  • 实战
  • 订单平台
DC
2023-12-01
目录

我的交易列表

# 基本展示

现目前, 管理员用户 可以看到所有的交易记录.. 那么, 角色为客户的用户登陆后呢?也应该能看到自己的交易记录!!

都是在前面实现过的功能, 改巴改巴集成到这里面即可..

image-20230417180118435

1. 我的交易列表页面跟管理员登陆后,看到的 `首页/客户列表/交易记录列表` 是差不多的.. 改巴改巴能行.
   相比之下,我的交易列表页面少了新增的功能,多了搜索查询(根据关键字搜索)的功能!!
2. 在管理员登陆后,看到的客户列表页面是实现过搜索查询(根据关键字搜索)功能的.也改巴改巴就行.


from django.shortcuts import render
from web import models
from utils.pager import Pagination
from django.db.models import Q


def my_transaction_list(request):
    """ 我的交易记录 """
    keyword = request.GET.get("keyword", "").strip()
    con = Q()
    if keyword:  # 只根据订单号搜
        con.connector = 'OR'
        con.children.append(('order_oid__contains', keyword))

    queryset = models.TransactionRecord.objects. \
        filter(customer_id=request.nb_user.id, active=1). \
        filter(con).order_by("-id")
    pager = Pagination(request, queryset)
    return render(request, 'my_transaction_list.html', {"pager": pager, "keyword": keyword})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 组合搜索组件

根据关键字搜索, 它在后端的逻辑是可以根据当前表中的字段、或者跨表字段的值来匹配搜索的值..
它是有局限性的, 针对于有choices属性的字段, 根据关键字搜索较麻烦, 因为像 "充值" 在数据库里存储的是1.
需要根据 "充值" 转变成条件 "1", 再根据 "1" 去搜索.. 所以用户在填写搜索关键字 "充值" 是不能写错的..

使用组合搜索, 相对简便些!!

# 简单使用

step1: 获取 group.py文件并放到项目中 (通常是utils目录). step2: 在视图函数中配置 step3: 前端页面中配置

image-20230417190515171

视图函数中的代码

from django.shortcuts import render
from web import models
from django.shortcuts import render
from web import models
from utils.pager import Pagination
from utils.group import Option, get_search_group_condition
from django.db.models import Q


def my_transaction_list(request):
    """ 我的交易记录 """
    # ◆ 组合搜索配置 - 页面展示
    search_group = [Option('charge_type'), ]
    search_group_row_list = []
    for option_object in search_group:
        row = option_object.get_queryset_or_tuple(models.TransactionRecord, request)
        search_group_row_list.append(row)
    # ◆ 组合搜索配置 - 构建搜索条件
    conn = get_search_group_condition(search_group, request)

    # 根据关键字搜索!
    keyword = request.GET.get("keyword", "").strip()
    con = Q()
    if keyword:  # 只根据订单号搜
        con.connector = 'OR'
        con.children.append(('order_oid__contains', keyword))

    queryset = models.TransactionRecord.objects. \
        filter(customer_id=request.nb_user.id, active=1). \
        filter(**conn). \
        filter(con).order_by("-id")
    pager = Pagination(request, queryset)

    context = {
        "pager": pager,
        "keyword": keyword,
        "search_group_row_list": search_group_row_list
    }
    return render(request, 'my_transaction_list.html', context)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

前端页面的关键代码

... ... ...
{% block css %}
    <link rel="stylesheet" href="{% static 'css/search-group.css' %}">
{% endblock %}

{% block content %}
    {% if search_group_row_list %}
        <!-- 生成了一个面板 -->
        <div class="panel panel-default">
            <div class="panel-heading">
                <i class="fa fa-filter" aria-hidden="true"></i> 快速筛选
            </div>
            <div class="panel-body">
                <div class="search-group">
                    {% for row in search_group_row_list %}
                        <div class="row">
                            {% for obj in row %}
                                {{ obj|safe }}
                            {% endfor %}
                        </div>
                    {% endfor %}
                </div>
            </div>
        </div>
    {% endif %}
    ... ... ...
{% endblock %}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 封装和使用

来细细剖析下, group.py 这个组合搜索组件 实现的细节!!!

略. (因为后续开发了 rbac组件和stark组件, 这个基本上就不会用到了..
需要的时候, 或者有时间的时, 再来理下逻辑吧!!


# 交易记录

这个交易记录是针对管理员的, 管理员可以看到所有的交易记录!!

略. 后续我会通过 rbac组件和stark组件, 重构 订单系统!! 也会加上这个功能.
该需求效果截图如下:

image-20240507094216296


# 总结

到现目前, 实现了哪些需求.

- 权限和菜单
  - 动态菜单,不同用户角色【配置文件】
    ```
    - 配置文件,写配置用户级别配置 + 默认配置
    - 构造属于自己的结构:权限、菜单字典。
    - 数据库获取用户角色
    ```
  - 默认选中和展开
    ```
    - inclusion_tag
    ```
  - 权限校验
    ```
    - 中间件
    - request.nb_user 赋值
    ```
  - 控制按钮是否显示
    ```
    - filter,可以模板语言中的if else的条件
    ```
- 基于Form和ModelForm实现增删改查
- 构建的了BootStrapForm类实现BootStrap样式 + 免除BootStrap样式
- 删除/撤单
  - 直接超链接删除,跳转
  - 对话框 + ajax删除(推荐)
  - 直接超链接删除,跳转 + message => 成功和失败的提醒.(推荐)
- 添加和编辑
  - 跳转到添加和编辑页面,成功后跳转回来.
  - 对话框 + ajax 
- 原条件保留
  - 删除
  - 编辑
- 分页
- 关键字搜索
- 组合搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

message组件
worker

← message组件 worker→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式