Skip to content
zhanyeye edited this page Mar 3, 2020 · 4 revisions

Welcome to the dingtalk-springboot wiki!

开发笔记

Nginx
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  127.0.0.1;

        location / {
            root   C:\Users\zhanyeye\Desktop\dingtalk-vue\dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }

        location /api {
                proxy_set_header   Host             $host;
                proxy_set_header   x-forwarded-for  $remote_addr;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_pass http://127.0.0.1:8080; 
        }    

        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

nginx
  • start nginx
  • nginx.exe -s stop
  • nginx.exe -s quit
  • nginx.exe -s reload
钉钉卡片消息

整体跳转ActionCard样式参数示例:

{
    "msgtype": "action_card",
    "action_card": {
        "title": "是透出到会话列表和通知的文案",
        "markdown": "支持markdown格式的正文内容",
        "single_title": "查看详情",
        "single_url": "https://open.dingtalk.com"
    }
}

独立跳转ActionCard样式参数示例:

{
    "msgtype": "action_card",
    "action_card": {
        "title": "是透出到会话列表和通知的文案",
        "markdown": "支持markdown格式的正文内容",
        "btn_orientation": "1",
        "btn_json_list": [
            {
                "title": "一个按钮",
                "action_url": "https://www.taobao.com"
            },
            {
                "title": "两个按钮",
                "action_url": "https://www.tmall.com"
            }
        ]
    }
}
钉钉内网穿透
cd windows_64

ding -config=./ding.cfg -subdomain=air-dev 8081
jpa 用原生sql 获取部分字段
JPA 原生 sql 的返回不能直接转换成对象,原生 sql 的返回形式是 Map 、 List<Map> 或 Object,因此可以使用 List<Map<String,Object>> 接收
连表查询

连表查询不要使用where 而是 再 on 后加 and

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户;

where条件是在临时表生成好后,再对临时表进行过滤的条件;

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。

SELECT
	u.id,
	u.name,
	d.yearmonth,
	d.week1,
	d.week2,
	d.week3,
	d.week4,
	d.week5,
	IFNULL(d.total,0) as total,
	IFNULL(ac.total,0) AS ac 
FROM
	USER u
	LEFT JOIN ( SELECT user_id, sum( ac ) AS total FROM ac_record WHERE DATE_FORMAT(`create_time`,'%Y%m%d') <= DATE_FORMAT('2020-03-28','%Y%m%d')  GROUP BY user_id ) AS ac ON u.id = ac.user_id
	LEFT JOIN dc_summary d ON ac.user_id = d.user_id 
	AND d.yearmonth = 202001 
ORDER BY
	total DESC
Sum BigDecimal using Stream
List<BigDecimal> invoices = new LinkedList<>();
invoices.add(BigDecimal.valueOf(9.9));
invoices.add(BigDecimal.valueOf(1.0));
invoices.add(BigDecimal.valueOf(19.99));
invoices.add(BigDecimal.valueOf(0.2));
invoices.add(BigDecimal.valueOf(5.5));

// sum using a for loop
BigDecimal sum = BigDecimal.ZERO;
for (BigDecimal amt : invoices) {
	sum = sum.add(amt);
}
System.out.println("Sum = " + sum);

// sum using stream
BigDecimal sum2 = invoices.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("Sum (Stream) = " + sum2);
java double 四舍五入
get_double = (double)(Math.round(result_value*100)/100.0)

BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
bg.doubleValue();
切面通知
  • @Before : 前置通知,在切入点方法执行前通知

  • @AfterReturning : 后置返回通知,在切入点方法执行并返回后执行,方法抛出异常时不执行

  • @AfterThrowing : 后置异常通知,在切入点方法抛出异常时执行

  • @After :后置最终通知,在切入点方法执行后,后置通过前执行,即使抛出异常也执行

  • @Around: 环绕通知,在切入点方法执行前、或执行后执行,可阻止目标方法的执行,替换参数等

切面Join Point
  • JoinPoint 接口,仅可以获取信息,无法改变连接点的执行

    • Object getTarget(),获取连接点对象
    • Object[] getArgs(),获取方法参数
    • Object getThis(),获取代理对象
  • ProceedingJoinPoint接口,仅可注入around通知

    • Object proceed() ,执行连接点方法,并返回执行结果,不执行则不会调用连接点方法

    • Object proceed(Object[] args),基于参数执行连接点对象方法

消息数据库的设计

显示为阅读消息数量

select count(id) from table where uid = 当前yon'g'hu
StringBuilder 的使用
StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:");
sBuffer.append("www");
sBuffer.append(".runoob");
sBuffer.append(".com");
System.out.println(sBuffer);  
分页查询
Clone this wiki locally