发表于: 2020-02-08 23:27:46
1 1203
今天完成的事:
1、修改nginx配置,指向前端静态资源。
因为他们的vue项目跑起来的首页就是登录页,所以是可以直接访问域名,就到登录页面,但是貌似没有对着接口,目前还登录不了。。
查看了其他师兄组的代码,他们是直接指向静态资源的这个文件夹,志安说是他们打包后才有的,生成的页面可以直接打开,虽然我也打不开。。
所以应该直接指向该文件夹,我之前只是指向到“run”文件夹,指向上上一级是不行的。
按理说应该是可以的啊。。可能还是跟前端的打包有关系。。
修改后重新加载nginx配置文件。
2、修改阿里云白名单,由小程序读取图片。
前端使用小程序读取阿里云中的图片,报错403。
前端百度后发来的解决办法,在这之前因为阿里云的白名单中没有添加“home”前台的域名,我还以为是这个的原因,添加了“https://dev.home.daoxiangzhe.xiuzhenyuan.cn”,结果没有效果,于是按照下图添加了“https://servicewechat.com”,就可以访问图片了。
修改阿里云白名单。
3、修改后台课程(视频)管理列表页面接口逻辑。
首先测试了 list集合 添加是根据添加顺序输出的。
后台课程(视频)管理列表页面接口,输入条件则按照条件查询列表,无条件则查询全部列表。
其中只有 老师名称 的条件不是视频的字段变量,如果添加到视频表格中,在老师修改姓名时,就需要维护这个变量。
这里打算根据 老师姓名模糊 查询list集合,再将其id设置到course中,进行条件查询,但是这样只能新建一个list集合依次添加每次根据老师id查询出来的视频list集合,而list集合添加是根据 添加顺序 输出的,所以这里就 不会按照编辑时间倒序 输出,与原型不符。
最好的办法就是课程中 添加老师名称 字段,按理说老师名称应该不同于用户名称,不能修改,那就不需要后期维护,这样是可行的,就是现在修改有些麻烦。
所以这里就 忽略根据老师名称模糊查询,只能准确查询。
或者后期试试 联表查询 是否可行。。
修改前:
因为不管老师查询的顺序怎么样,根据老师的id顺序查询出的一个个list视频,很可能造成无法按照编辑时间排序。
比如,根据老师1查询出视频3、1,根据老师2查询出视频4、2,那么视频最后的顺序就是3、1、4、2。
修改后:
老师姓名查询只能精准查询。
这里需要注意set之前需判断变量是否为空,为空会报错。
4、修改视频上下架接口逻辑。
因为涉及到banner视频的数量限制为8,所以在修改上下架状态时,需要判断是否是banner视频进行上下架,而且要判断banner视频的数量。
因此接口文档添加了视频的分类,再进行判断。
5、修改前台视频列表接口逻辑。
如果用户设置了年级,需要按照年级展示全部科目的视频,如果没有设置年级,就默认展示全部视频。
因为之前跟前端约定,前台点击全部,是不传输数据到后台的,这样就是null,也就是查询这个条件的全部了。
但是现在需要判断是否输入年级,且用户是否设置年级,因此需要另外一个值来代替判断是否输入。
这就设置输入0,代表查询全部,不输入数据设为null。
6、修改个人中心-绑定接口逻辑。
因为原型要求首次绑定成功,积分增加20,且绑定成功需要展示绑定号码,以及手机或邮箱哪个未绑定。这就需要绑定成功后,也要返回用户信息。
7、修改签到接口逻辑,调整时间戳获取工具类。
这里使用 Calendar 类,来获取当天零点、昨天零点、上个月一号零点、当月一号零点的时间戳,通过时间戳范围查询,判断签到记录。
还可以控制昨天的天数,每月1号也可以依照-1,来控制 昨天天数 为上个月末。也就省的我在判断是否为每月一号,以及上个月最后一天是几号了。
工具类:
package com.dxz.home.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@Component
public class TimeUtil {
private final Logger log = LoggerFactory.getLogger(this.getClass());
// 获取 昨天零点零分零秒 时间戳
public Long yesterdayZeroTime(){
Calendar cal = Calendar.getInstance();
// 获取年,如果在clear()方法后获取,将获取1970年
int year = cal.get(Calendar.YEAR);
// 获取月份,clear()之后,再获取月份就是0,即一月
int month = cal.get(Calendar.MONTH);
// 获取昨天天数,clear()之后,再获取天数就是1,即一号
int day = cal.get(Calendar.DAY_OF_MONTH) -1;
// 在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
cal.clear();
cal.set(Calendar.YEAR,year);//控制年
// 控制月份,0表示1月份,这里设置为当月
cal.set(Calendar.MONTH,month);
// 控制天,这里设置为昨天的天数,1号也可以设置成上个月末
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.HOUR_OF_DAY, 0);//控制时
cal.set(Calendar.MINUTE, 0);//控制分
cal.set(Calendar.SECOND, 0);//控制秒
cal.set(Calendar.MILLISECOND, 0);//控制毫秒
Long yesterdayTime = cal.getTimeInMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("昨天零点零分零秒 时间戳:{}ms,{}",yesterdayTime,sdf.format(cal.getTime()));
return yesterdayTime;
}
// 获取 今天零点零分零秒 时间戳
public Long todayZeroTime(){
Calendar ca2 = Calendar.getInstance();
int year2 = ca2.get(Calendar.YEAR);
int month2 = ca2.get(Calendar.MONTH);
int day2 = ca2.get(Calendar.DAY_OF_MONTH);
ca2.clear();
ca2.set(Calendar.YEAR,year2);
ca2.set(Calendar.MONTH,month2);
// 获取当天天数
ca2.set(Calendar.DAY_OF_MONTH, day2);
ca2.set(Calendar.HOUR_OF_DAY, 0);
ca2.set(Calendar.MINUTE, 0);
ca2.set(Calendar.SECOND, 0);
ca2.set(Calendar.MILLISECOND, 0);
Long todayTime = ca2.getTimeInMillis();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("今天零点零分零秒 时间戳:{}ms,{}",todayTime,sdf2.format(ca2.getTime()));
return todayTime;
}
// 获取 上个月一号零点零分零秒 时间戳
public Long oldMonthZeroTime(){
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
// 0表示1月份,这里设置为上个月
int month = cal.get(Calendar.MONTH) -1;
cal.clear();
cal.set(Calendar.YEAR,year);
// 控制月份
cal.set(Calendar.MONTH,month);
cal.set(Calendar.DAY_OF_MONTH, 1 );
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("上个月一号零点零分零秒 时间戳:{}ms,{}",cal.getTimeInMillis(),sdf.format(cal.getTime()));
return cal.getTimeInMillis();
}
// 获取 当月一号零点零分零秒 时间戳
public Long nowMonthZeroTime(){
Calendar ca2 = Calendar.getInstance();
int year2 = ca2.get(Calendar.YEAR);
int month2 = ca2.get(Calendar.MONTH);
ca2.clear();
ca2.set(Calendar.YEAR,year2);
// 控制月份,0表示1月份,这里设置为当月
ca2.set(Calendar.MONTH, month2 );
ca2.set(Calendar.DAY_OF_MONTH, 1 );
ca2.set(Calendar.HOUR_OF_DAY, 0);
ca2.set(Calendar.MINUTE, 0);
ca2.set(Calendar.SECOND, 0);
ca2.set(Calendar.MILLISECOND, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("当月一号零点零分零秒 时间戳:{}ms,{}",ca2.getTimeInMillis(),sdf.format(ca2.getTime()));
return ca2.getTimeInMillis();
}
}
进行时间戳范围查询,使用example类的方法,范围查询是左右全闭。
但是结果显示。。这两个之间应该是 或 的关系,还是老老实实写sql吧。。
测试成功。
明天计划的事:
1、微信小程序登录
遇到的问题:
1、微信小程序要求上线后必须域名是配置https,简单查看下说是nginx可以配置,但是查看复盘服务器中的nginx配置,没有发现有师兄们配置https,不知道怎么才能配置https,请师兄指教。
收获:
1、修改nginx配置,指向前端静态资源。
2、修改阿里云白名单,由小程序读取图片。
3、修改后台课程(视频)管理列表页面接口逻辑。
4、修改视频上下架接口逻辑。
5、修改前台视频列表接口逻辑。
6、修改个人中心-绑定接口逻辑。
7、修改签到接口逻辑,调整时间戳获取工具类。
评论