日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

人脸考勤签到进阶篇

發(fā)布時間:2024/1/18 pytorch 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人脸考勤签到进阶篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

簽到業(yè)務流程說明

一、需求介紹

二、如何獲取地理信息?

三、如何判定某地區(qū)新冠疫情的風險等級?

開通騰訊位置服務

二、騰訊位置服務SDK

把定位坐標轉(zhuǎn)換成真實地址

一、獲取定位坐標

uni.authorize(OBJECT)

二、編輯簽到頁面

在Docker中安裝人臉識別鏡像

安裝Docker程序

導入人臉識別鏡像

運行人臉識別程序

一、創(chuàng)建Docker容器

二、運行人臉識別程序

三、接口調(diào)用

實現(xiàn)人臉簽到(持久層)?

一、維護員工人臉模型數(shù)據(jù)

二、保存簽到記錄

實現(xiàn)人臉簽到(業(yè)務層)

一、判斷簽到用戶是否存在人臉模型

查詢簽到所在地區(qū)新冠疫情風險等級

一、利用本地寶查詢地區(qū)風險等級

二、編寫持久層代碼

三、補充簽到業(yè)務層代碼

發(fā)送疫情高風險地區(qū)告警郵件

一、為什么要采用異步發(fā)送郵件?

二、導入Email郵件庫

三、設(shè)置SMTP服務器信息

二、實現(xiàn)異步發(fā)送郵件

實現(xiàn)人臉簽到(Web層)

一、設(shè)置上傳圖片存儲的路徑

二、編輯Controller類?

創(chuàng)建新員工人臉模型數(shù)據(jù)(業(yè)務層)?

一、編寫抽象方法

二、編寫創(chuàng)建人臉模型方法

創(chuàng)建新員工人臉模型數(shù)據(jù)(Web層)

實現(xiàn)人臉簽到(移動端)


簽到業(yè)務流程說明

一、需求介紹

????????Emos系統(tǒng)的人臉簽到模塊包含的功能非常豐富,不僅僅只有人臉識別的簽到功能,而且還可以根據(jù)用戶簽到時候的地理定位,計算出該地區(qū)是?新冠疫情?的?高風險?還是?低風險?地區(qū)。如果員工是在疫情高風險地區(qū)簽到的,Emos系統(tǒng)會立即向公司人事部門發(fā)送告警郵件。

二、如何獲取地理信息?

????????微信小程序提供了獲取地理定位的接口方法,我們調(diào)用該方法就能獲取到地理坐標。但是我們得到的僅僅是坐標而已,我們還需要把地理坐標轉(zhuǎn)換成地址信息,例如什么省份、什么城市、什么街道等等。

????????騰訊位置服務提供了把地理坐標轉(zhuǎn)換成地址這個功能,只需要我們注冊之后就可以免費使用了。并且還提供了JS調(diào)用接口,我們在小程序中可以很簡單的把地理坐標轉(zhuǎn)換成地址信息。

三、如何判定某地區(qū)新冠疫情的風險等級?

????????本地寶這個網(wǎng)站提供了新冠疫情地區(qū)風險等級的查詢,我們輸入自己的地址,就能看到具體的風險等級。

????????既然我們已經(jīng)把地理坐標轉(zhuǎn)換成了地址信息,那么就可以根據(jù)地址信息去查詢風險等級了。但是本地寶并沒有提供Web接口讓我們調(diào)用,所以我們只能URL地址傳參的方式獲取本地寶返回的響應。而且響應的內(nèi)容是HTML,我們還要從HTML中解析出我們想要的風險等級信息。

開通騰訊位置服務

一、開通騰訊位置服務步驟

????????因為Emos簽到流程中要獲取用戶當前所在地址的信息,所以需要把定位坐標緩存成地址,恰好騰訊位置服務提供了這個功能。所以我們按照提示開通這個服務即可,該服務對開發(fā)者來說是免費的,所以我們可以放心使用。?

????????首先我們用瀏覽器訪問 騰訊位置服務 官網(wǎng),然后在頁面的右上角點擊注冊按鈕,并且填寫注冊信息。?

????????在 應用管理 ?〉我的應用 欄目中,可以看到已經(jīng)創(chuàng)建的密鑰。如果是新注冊的用戶,這里沒有任何密鑰,需要你自己創(chuàng)建一個新的密鑰。

????????根據(jù)提示填寫密鑰的信息。密鑰創(chuàng)建成功之后,你要把密鑰字符串記錄下來,在小程序開發(fā)當中會用到。

????????把該密鑰和咱們的小程序關(guān)聯(lián)在一起,在界面中填寫小程序的授權(quán)ID。

二、騰訊位置服務SDK

????????騰訊位置服務提供了多種SDK程序包,其中的JavaScript版本的SDK適用于微信小程序,所以我們下載這個SDK包。?

????????登陸微信公眾平臺里面,在“開發(fā)管理” -> “開發(fā)設(shè)置”中設(shè)置request合法域名,添加https://apis.map.qq.com 。

????????在小程序項目中,創(chuàng)建?lib?目錄,把SDK文件放入其中。

把定位坐標轉(zhuǎn)換成真實地址

一、獲取定位坐標

可以通過用戶授權(quán)API來判斷用戶是否給應用授予定位權(quán)限。

uni.authorize(OBJECT)

uni.authorize({scope: 'scope.userLocation',success() {uni.getLocation()} })

注意:scope.userLocation 權(quán)限需要在 manifest.json 配置 permission?

????????微信小程序提供了定位接口,只需要我們調(diào)用方法即可。uni-app框架的uni對象里面也封裝了地理定位的方法,我們來看一下。

uni.getLocation(OBJECT)? ? ?

????????獲取當前的地理位置和速度。 在微信小程序中,當用戶離開應用后,此接口無法調(diào)用,除非申請后臺持續(xù)定位權(quán)限;當用戶點擊“顯示在聊天頂部”時,此接口可繼續(xù)調(diào)用。?

// 示例 uni.getLocation({type: 'wgs84',success: function (res) {console.log('當前位置的經(jīng)度:' + res.longitude);console.log('當前位置的緯度:' + res.latitude);} });

二、編輯簽到頁面

我們首先要獲取用戶簽到時的地理定位

uni.showLoading({title: '簽到中請稍后' 3. });setTimeout(function() { 5. uni.hideLoading(); }, 30000); //獲取地理定位 uni.getLocation({type: 'wgs84',success: function(resp) {let latitude = resp.latitude;let longitude = resp.longitude;} })

接下來我們根據(jù)定位坐標,換算成真實地址,先引用騰訊位置SDK文件?

var QQMapWX = require('../../lib/qqmap-wx-jssdk.min.js'); var qqmapsdk;?

然后在?onLoad()?生命周期函數(shù)中,初始化?qqmapsdk?對象?

onLoad: function() {?qqmapsdk = new QQMapWX({key: 'KSFBZ-####-####-####-37KUE-W3FLZ'}); },

編寫JS代碼把GPS坐標轉(zhuǎn)換成地址?

qqmapsdk.reverseGeocoder({location: {?latitude: latitude,?longitude: longitude},success: function(resp) {?// console.log(resp.result);let address = resp.result.address;?let addressComponent = resp.result.address_component;let nation = addressComponent.nation;let province = addressComponent.province;let city = addressComponent.city;let district = addressComponent.district;} })

在Docker中安裝人臉識別鏡像

安裝Docker程序

執(zhí)行下面的指令,稍等片刻,Docker程序就安裝好了?

yum install docker -y?

管理Docker程序的命令也非常簡單,如下:

service docker startservice docker stopservice docker restart

導入人臉識別鏡像

把?face.tar.gz?文件上傳到CentOS系統(tǒng)?

把鏡像導入Docker環(huán)境

#導入鏡像文件docker load < face.tar.gz#查看安裝的鏡像docker images#刪除鏡像docker rmi face

運行人臉識別程序

一、創(chuàng)建Docker容器

????????上節(jié)課我們在Docker中安裝了人臉識別鏡像,因為人臉識別程序是用Python寫的,而且需要很多依賴庫,安裝起來非常麻煩,所以我就把依賴環(huán)境和人臉識別程序封裝成Docker鏡像,只要你在本地Docker上面導入鏡像,創(chuàng)建出容器,就能運行Python人臉程序了。?

把?demo.tar?文件上傳到Linux根目錄,然后解壓縮?

tar -xvf demo.tar

????????解壓縮之后,demo文件夾中就包含了人臉識別Python程序,我們只需要把demo文件夾掛載到Docker容器,那么在容器中就能訪問Linux主機的demo文件夾了。下面開始創(chuàng)建容器,映射端口號,掛載目錄。?

#創(chuàng)建容器,把容器3000端口映射到宿主機3000端口,把/demo映射到宿主機的/demodocker run -d -it -p 3000:3000 -v /demo:/demo --name node face#查看容器運行狀態(tài)docker ps -a?#進入到node容器docker exec -it node bash

二、運行人臉識別程序

進入到node容器之后,然后進入?/demo?目錄,運行人臉識別程序

cd /demo#把Python程序掛起到后臺運行nohup python3 -c "from app import app;" > log.out 2>&1 &ps -auxkill -9 進程ID

三、接口調(diào)用

人臉識別程序程序結(jié)合了Flask框架,提供Web接口,具體如下?

1.?創(chuàng)建人臉模型數(shù)據(jù)?

????????當Emos系統(tǒng)的MySQL數(shù)據(jù)庫中不存在簽到員工的人臉模型數(shù)據(jù),這時候應該調(diào)用人臉識別程序的Web接口,上傳照片文件,然后由Python程序識別照片中的人臉,返回人臉模型數(shù)據(jù)。Java系統(tǒng)接收到人臉模型數(shù)據(jù)之后,把數(shù)據(jù)保存在MySQL數(shù)據(jù)表里面。?

接口名稱:/create_face_model?

請求類型:POST?

傳入?yún)?shù):icode

返回結(jié)果:人臉模型數(shù)據(jù)?

2.?執(zhí)行人臉簽到識別?

接口名稱:/checkin?

請求類型:POST?

傳入?yún)?shù):icode?

返回結(jié)果:人臉識別結(jié)果

實現(xiàn)人臉簽到(持久層)?

一、維護員工人臉模型數(shù)據(jù)

在?TbFaceModelDao.xml?文件中添加SQL語句?

<select id="searchFaceModel" parameterType="int" resultType="String">SELECT face_model FROM tb_face_modelWHERE user_id=#{userId}</select><insert id="insert" parameterType="com.example.emos.wx.db.pojo.TbFaceModel">INSERT INTO tb_face_modelSET user_id=#{userId},face_model=#{faceModel}</insert><delete id="deleteFaceModel" parameterType="int">DELETE FROM tb_face_modelWHERE user_id=#{userId}</delete>

在?TbFaceModelDao.java?接口中添加DAO方法??

@Mapper public interface TbFaceModelDao {public String searchFaceModel(int userId);public void insert(TbFaceModel faceModel);public int deleteFaceModel(int userId); }

二、保存簽到記錄

在?TbCheckinDao.xml?文件中添加INSERT語句

<insert id="insert" parameterType="com.example.emos.wx.db.pojo.TbCheckin">INSERT INTO tb_checkinSET user_id=#{userId},<if test="address!=null">address=#{address},</if><if test="country!=null">country=#{country},</if><if test="province!=null">province=#{province},</if><if test="city!=null">city=#{city},</if><if test="district!=null">district=#{district},</if>status=#{status},<if test="risk!=null">risk=#{risk},</if>date=#{date},create_time=#{createTime}</insert>

在?TbCheckinDao.java?中添加抽象方法?

@Mapper public interface TbCheckinDao {……public void insert(TbCheckin entity); }

實現(xiàn)人臉簽到(業(yè)務層)

一、判斷簽到用戶是否存在人臉模型

在?application.yml?文件中,添加值注入信息?

emos:……face:createFaceModelUrl: http://CentOS的IP地址:3000/create_face_modelcheckinUrl: http://CentOS的IP地址:3000/checkincode: HelloWorld

創(chuàng)建?CheckinForm.java?表單類,接收小程序提交的簽到數(shù)據(jù)?

@Data @ApiModel public class CheckinForm {private String address;private String country;private String province;private String city;private String district; }

在?CheckinService.java?接口中添加抽象的簽到方法?

public interface CheckinService {……public void checkin(HashMap param); }

在?CheckinServiceImpl.java?中實現(xiàn)抽象方法

@Service @Scope("prototype") @Slf4j public class CheckinServiceImpl implements CheckinService {@Autowiredprivate TbFaceModelDao faceModelDao;@Value("${emos.face.checkinUrl}")private String checkinUrl;@Autowiredprivate SystemConstants constants;@Value("${emos.code}")private String code;@Overridepublic void checkin(HashMap param) {Date d1=DateUtil.date();Date d2=DateUtil.parse(DateUtil.today()+" "+constants.attendanceTime);Date d3=DateUtil.parse(DateUtil.today()+" "+constants.attendanceEndTime);int status=1;if(d1.compareTo(d2)<=0){status=1;}else if(d1.compareTo(d2)>0&&d1.compareTo(d3)<0){status=2;}else{throw new EmosException("超出考勤時間段,無法考勤");}int userId= (Integer) param.get("userId");String faceModel=faceModelDao.searchFaceModel(userId);if(faceModel==null){throw new EmosException("不存在人臉模型");}else{String path=(String)param.get("path");HttpRequest request= HttpUtil.createPost(checkinUrl);request.form("photo", FileUtil.file(path),"targetModel",faceModel);request.form("code",code);HttpResponse response=request.execute();if(response.getStatus()!=200){log.error("人臉識別服務異常");throw new EmosException("人臉識別服務異常");}String body=response.body();if("無法識別出人臉".equals(body)||"照片中存在多張人臉".equals(body)){throw new EmosException(body);}else if("False".equals(body)){throw new EmosException("簽到無效,非本人簽到");}else if("True".equals(body)){//TODO 查詢疫情風險等級//TODO 保存簽到記錄}}} }

查詢簽到所在地區(qū)新冠疫情風險等級

@Data public class TbCheckin implements Serializable {private String date;private Date createTime; }

延伸:date字段是日期類型,createTime字段是Datetime類型。Java中沒有Datetime類型,所以映射時用了日期類型-Date類。數(shù)據(jù)表中date類型就是date類型,保存的數(shù)據(jù)就是日期不包含時間。如果映射成Java中的日期類型,Java中日期類型還會有小時分鐘秒毫秒,這些信息不應該存在。所以一個正確的ORM映射,就是把數(shù)據(jù)表中date類型字段映射到Java的string變量上。這樣就只保存了日期數(shù)據(jù),并不包含小時分鐘秒毫秒之類的。

一、利用本地寶查詢地區(qū)風險等級

????????本地寶H5網(wǎng)頁提供了新冠疫情風險等級查詢,在網(wǎng)頁上面直接輸入地區(qū),就能查詢到疫情的風險等級。?

????????Java程序想要查詢用戶簽到地區(qū)的風險等級,不能到頁面里面點來點去的,所以我們要用URL傳參的方式,把地址信息傳入本地寶的H5頁面。?

????????你可以在瀏覽器地址欄填寫下方的URL連接,就能查詢到北京市西城區(qū)當前的新冠疫情風險等級。

????????http://m.bj.bendibao.com/news/yqdengji/?qu=西城區(qū)

從上面的案例推斷,URL地址要傳入兩個參數(shù):?城市編碼?和?區(qū)縣?。?

城市編碼可以從?tb_city?表中查詢到,其中的code字段就是城市對應的編號。

????????我們可以用小程序提交過來的簽到城市,然后到?tb_city?表中根據(jù)城市名稱查詢到城市編號。接下來,就可以把參數(shù)添加到URL上面。?

????????我們想要提取查詢到的風險等級結(jié)果應該怎么辦呢?這個很簡單,用Java程序解析本地寶HTML頁面的標簽,提取我們想要的結(jié)果信息即可。在Java領(lǐng)域中?jsoup?提供了解析HTML標簽的功能,所以我們要在Java項目中引入?jsoup?庫。?

在?pom.xml?文件中添加?jsoup?依賴,然后重新reload項目

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version> </dependency>

二、編寫持久層代碼

在?TbCityDao.xml?文件中添加查詢語句?

<select id="searchCode" parameterType="String" resultType="String">?SELECT codeFROM tb_cityWHERE city = #{city} </select>

在?TbCityDao.java?接口中添加抽象方法?

@Mapper public interface TbCityDao {?public String searchCode(String city); }

三、補充簽到業(yè)務層代碼

在?CheckinServiceImpl.java?文件中繼續(xù)補充查詢疫情風險等級的代碼?

@Autowired private TbCityDao cityDao;@Override public void checkin(HashMap param) {……String faceModel=faceModelDao.searchFaceModel(userId);if(faceModel==null){throw new EmosException("不存在人臉模型");}else{……if("無法識別出人臉".equals(body)||"照片中存在多張人臉".equals(body)){throw new EmosException(body);}else if("False".equals(body)){throw new EmosException("簽到無效,非本人簽到");}else if("True".equals(body)){//查詢疫情風險等級int risk=1;String city= (String) param.get("city");String district= (String) param.get("district");String address= (String) param.get("address");String country= (String) param.get("country");String province= (String) param.get("province");if(!StrUtil.isBlank(city)&&!StrUtil.isBlank(district)){String code=cityDao.searchCode(city);try{String url = "http://m." + code + ".bendibao.com/news/yqdengji/?qu=" + district;Document document=Jsoup.connect(url).get();Elements elements=document.getElementsByClass("list-content");if(elements.size()>0){Element element=elements.get(0);String result=element.select("p:last-child").text();// result="高風險";if("高風險".equals(result)){risk=3;//發(fā)送告警郵件}else if("中風險".equals(result)){risk=2;}}}catch (Exception e){log.error("執(zhí)行異常",e);throw new EmosException("獲取風險等級失敗");}}//保存簽到記錄TbCheckin entity=new TbCheckin();entity.setUserId(userId);entity.setAddress(address);entity.setCountry(country);entity.setProvince(province);entity.setCity(city);entity.setDistrict(district);entity.setStatus((byte) status);entity.setRisk(risk);entity.setDate(DateUtil.today());entity.setCreateTime(d1);checkinDao.insert(entity);}}} }

發(fā)送疫情高風險地區(qū)告警郵件

一、為什么要采用異步發(fā)送郵件?

????????因為在簽到過程中,執(zhí)行人臉識別和查詢疫情風險等級,都比較消耗時間。如果發(fā)送郵件再做成同步執(zhí)行的,勢必導致簽到執(zhí)行時間過長,影響用戶體驗。由于要把簽到結(jié)果保存到簽到表,所以人臉識別和疫情風險等級查詢必須是同步執(zhí)行的。發(fā)送郵件跟保存簽到數(shù)據(jù)沒有直接關(guān)聯(lián),所以做成異步并行執(zhí)行的程序更好一些,這樣也能縮短用戶簽到時候等待的時間。

二、導入Email郵件庫

編輯?pom.xml?文件,添加依賴庫?

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency>

三、設(shè)置SMTP服務器信息

????????發(fā)送郵件是通過SMTP服務器來完成的,所以我們要配置一下SMTP服務器的連接信息。這里我以163的SMTP服務器為例,并且提前已經(jīng)開啟了163郵箱的SMTP功能。?

spring:……mail:default-encoding: UTF-8host: smtp.163.comusername: *************@163.compassword: 此處是密碼

????????接下來我們把系統(tǒng)內(nèi)的常用郵箱聲明一下,以后會用到這些郵箱往外發(fā)送郵件,或者給這些郵箱發(fā)送內(nèi)部郵件。例如,員工簽到地點是疫情高風險地區(qū),那么就應該向HR郵箱發(fā)送郵件,告知人事總監(jiān)有員工需要隔離。?

emos:……email:system: *********@163.comhr: **********@qq.com

二、實現(xiàn)異步發(fā)送郵件

在SpringBoot項目中開啟異步多線程非常簡單,只需要下面幾個步驟即可。?

在主類上面開啟?@EnableAsync?注解?

…… @EnableAsync public class EmosWxApiApplication {?…… }?

在?com.example.emos.wx.config?中創(chuàng)建?ThreadPoolConfig?類,聲明Java線程池?

@Configuration public class ThreadPoolConfig {@Bean("AsyncTaskExecutor")public AsyncTaskExecutor taskExecutor(){ThreadPoolTaskExecutor executor=new ThreadPoolTaskExecutor();// 設(shè)置核心線程數(shù)executor.setCorePoolSize(8);// 設(shè)置最大線程數(shù)executor.setMaxPoolSize(16);// 設(shè)置隊列容量executor.setQueueCapacity(32);// 設(shè)置線程活躍時間(秒)executor.setKeepAliveSeconds(60);// 設(shè)置默認線程名稱executor.setThreadNamePrefix("task-");// 設(shè)置拒絕策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());executor.initialize();return executor;} }// 線程池對象自動注冊給Spring項目了。

在?com.example.emos.wx.task?中創(chuàng)建?EmailTask?類,定義線程任務

@Component @Scope("prototype") public class EmailTask implements Serializable {@Autowiredprivate JavaMailSender javaMailSender;@Value("${emos.email.system}")private String mailbox;@Asyncpublic void sendAsync(SimpleMailMessage message){message.setFrom(mailbox);// message.setCc(mailbox); // 抄送給自己javaMailSender.send(message);} }// @Component // @Scope("prototype") // Serializable // @Async // 都是必須的

查詢員工的姓名和部門名稱,在?TbUserDao.xml?文件中聲明查詢語句?

<select id="searchNameAndDept" parameterType="int" resultType="HashMap">?SELECT u.name, d.dept_nameFROM tb_user u LEFT JOIN tb_dept d ON u.dept_id=d.idWHERE u.id = #{userId} AND u.status = 1 </select>

在?TbUserDao?接口中定義抽象方法?

public HashMap searchNameAndDept(int userId);

定義值注入變量,用來接收人員隔離告警郵件?

@Value("${emos.email.hr}")? private String hrEmail;?@Autowired private EmailTask emailTask;?@Autowired private TbUserDao userDao;

編寫發(fā)送告警郵件的代碼?

HashMap<String,String> map=userDao.searchNameAndDept(userId); String name = map.get("name"); String deptName = map.get("dept_name"); deptName = deptName != null ? deptName : ""; SimpleMailMessage message=new SimpleMailMessage(); message.setTo(hrEmail); message.setSubject("員工" + name + "身處高風險疫情地區(qū)警告"); message.setText(deptName + "員工" + name + "," + DateUtil.format(new Date(), "yyyy年MM月dd日") + "處于" + address + ",屬于新冠疫情高風險地區(qū),請及時與該員工聯(lián)系,核實情況!"); emailTask.sendAsync(message);

實現(xiàn)人臉簽到(Web層)

一、設(shè)置上傳圖片存儲的路徑

????????因為簽到自拍照是臨時使用,所以不需要存儲在騰訊云對象存儲中,我們只需要在本地找個文件夾存放這些簽到照片,簽到業(yè)務執(zhí)行完,就立即刪除該文件即可。?

在?application.yml?文件中,設(shè)置圖片存放路徑

emos:……image-folder: D:/emos/image

在主類中添加初始化代碼,項目啟動時候自動創(chuàng)建圖片文件夾?

…… public class EmosWxApiApplication {?……@Value("${emos.image-folder}")?private String imageFolder;?……@PostConstructpublic void init(){……new File(imageFolder).mkdirs();}}

二、編輯Controller類?

編輯?CheckinController.java?類,定義?checkin()?方法

@RequestMapping("/checkin") @RestController @Api("簽到模塊Web接口") @Slf4j public class CheckinController {@Value("${emos.image-folder}")private String imageFolder;@PostMapping("/checkin")@ApiOperation("簽到")public R checkin(@Valid CheckinForm form,@RequestParam("photo") MultipartFile file,@RequestHeader("token") String token){if(file==null){return R.error("沒有上傳文件");}int userId=jwtUtil.getUserId(token);String fileName=file.getOriginalFilename().toLowerCase();if(!fileName.endsWith(".jpg")){return R.error("必須提交JPG格式圖片");}else{String path=imageFolder+"/"+fileName;try{file.transferTo(Paths.get(path));HashMap param=new HashMap();param.put("userId",userId);param.put("path",path);param.put("city",form.getCity());param.put("district",form.getDistrict());param.put("address",form.getAddress());param.put("country",form.getCountry());param.put("province",form.getProvince());checkinService.checkin(param);return R.ok("簽到成功");}catch (IOException e){log.error(e.getMessage(),e);throw new EmosException("圖片保存錯誤");}finally {FileUtil.del(path);}}} } // 防止照片重名,加上時間戳 if (file != null) {//獲取上傳文件名fileName = file1.getOriginalFilename();//獲取后綴名String sname = fileName.substring(fileName.lastIndexOf("."));//時間格式化格式SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");//獲取當前時間并作為時間戳String timeStamp=simpleDateFormat.format(new Date());//拼接新的文件名String newName ="人臉識別"+timeStamp+sname;//指定上傳文件的路徑String path = "F:\\" + newName;//上傳保存file.transferTo(new File(path));//保存當前文件路徑request.getSession().setAttribute("currFilePath", path); }

創(chuàng)建新員工人臉模型數(shù)據(jù)(業(yè)務層)?

一、編寫抽象方法

????????如果用戶是第一次簽到,checkin方法檢測到數(shù)據(jù)庫中沒有該員工的人臉模型數(shù)據(jù),移動端會收到異常消息,所以要重新發(fā)送HTTP請求,讓后端項目用簽到照片創(chuàng)建人臉模型數(shù)據(jù)。所以我們先來把創(chuàng)建人臉模型的業(yè)務層抽象方法聲明一下。?

在?CheckinService?接口中,聲明抽象方法?

public interface CheckinService {……public void createFaceModel(int userId, String path); }

二、編寫創(chuàng)建人臉模型方法

在?CheckinServiceImpl?類中,實現(xiàn)抽象方法?

…… public class CheckinServiceImpl implements CheckinService {……@Value("${emos.face.createFaceModelUrl}")private String createFaceModelUrl;……@Overridepublic void createFaceModel(int userId, String path) {HttpRequest request=HttpUtil.createPost(createFaceModelUrl);request.form("photo",FileUtil.file(path));request.form("code",code);HttpResponse response=request.execute();String body=response.body();if("無法識別出人臉".equals(body)||"照片中存在多張人臉".equals(body)){throw new EmosException(body);}else{TbFaceModel entity=new TbFaceModel();entity.setUserId(userId);entity.setFaceModel(body);faceModelDao.insert(entity);}} }

創(chuàng)建新員工人臉模型數(shù)據(jù)(Web層)

在?CheckinController?類中創(chuàng)建?createFaceModel()?方法

@RequestMapping("/checkin") @RestController @Api("簽到模塊Web接口") @Slf4j public class CheckinController {……@PostMapping("/createFaceModel")@ApiOperation("創(chuàng)建人臉模型")public R createFaceModel(@RequestParam("photo") MultipartFile file,@RequestHeader("token") String token){if(file==null){return R.error("沒有上傳文件");}int userId=jwtUtil.getUserId(token);String fileName=file.getOriginalFilename().toLowerCase();if(!fileName.endsWith(".jpg")){return R.error("必須提交JPG格式圖片");}else{String path=imageFolder+"/"+fileName;try{file.transferTo(Paths.get(path));checkinService.createFaceModel(userId,path);return R.ok("人臉建模成功");}catch (IOException e){log.error(e.getMessage(),e);throw new EmosException("圖片保存錯誤");}finally {FileUtil.del(path);}}} }

實現(xiàn)人臉簽到(移動端)

? ? ? ? 每人每天只可簽到一次,調(diào)試時要刪掉數(shù)據(jù)表數(shù)據(jù)。

? ? ? ? 163郵箱反垃圾郵件級別提升,會攔截咱們項目發(fā)送郵件,推薦使用阿里郵箱個人版。

? ? ? ? application.yml 中修改 spring.mail 和 emos.email 項

總結(jié)

以上是生活随笔為你收集整理的人脸考勤签到进阶篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产精品不卡一区 | 亚洲精品一区中文字幕乱码 | 精品久久久久久亚洲综合网 | 久久狠狠婷婷 | aaaaaa毛片 | 99久久这里有精品 | 欧美大码xxxx | www.综合网.com | 精品视频一区在线观看 | 久久理论片 | av字幕在线 | 日韩精品一卡 | 97综合在线 | 一区二区三区在线免费 | 91成人精品一区在线播放 | 99热播精品 | 黄色免费网战 | 99资源网| 91资源在线播放 | 国产黄色av影视 | 欧美日韩超碰 | 国产精品1区2区3区 久久免费视频7 | 国产中文视| 天天操天天干天天摸 | 色.www| 成人97人人超碰人人99 | 亚洲日韩欧美一区二区在线 | 99久久精品国产一区二区三区 | 亚洲三级黄色 | 狠狠干狠狠色 | 久久夜色精品国产欧美乱 | 国内精品久久久精品电影院 | 婷婷网址 | 久久a热6 | 亚洲人成精品久久久久 | 性色av免费在线观看 | 99精品视频一区 | 免费亚洲视频在线观看 | 国产黄色成人av | 在线观看成人毛片 | 中文字幕在线观看一区 | 国产精品va在线观看入 | 国产精品高清av | 国产免费二区 | 欧美色图30p | 91热在线| 探花在线观看 | 国产一卡二卡在线 | 日韩中文字幕第一页 | 国产日韩精品一区二区三区在线 | 中文字幕在线看视频 | 伊甸园av在线| 久久爱综合 | 99精品在线直播 | 免费在线中文字幕 | 国产一区二区久久 | 国产专区免费 | 波多野结衣精品在线 | 美女av在线免费 | 亚洲精品天天 | 国产麻豆精品一区 | 日韩影视在线 | 日韩精品一区不卡 | 天天色天天上天天操 | 在线看日韩av | 一级一片免费看 | 草久久精品 | 国产永久网站 | 日韩激情精品 | 奇米网777| 日韩免费中文字幕 | 国语黄色片 | 国产午夜小视频 | 久久久影院官网 | 91人人揉日日捏人人看 | 一区二区三区四区不卡 | 国产99久久久精品 | 日韩理论影院 | 欧美精品少妇xxxxx喷水 | 亚洲精品久久久久中文字幕二区 | 婷婷久久丁香 | 国产精品不卡av | 免费在线观看av的网站 | 色丁香婷婷 | 亚洲婷婷在线 | 亚洲成a人片综合在线 | 九九免费在线观看 | 成人毛片a | 国产精品欧美久久久久无广告 | a在线免费 | 少妇性xxx| 中文在线最新版天堂 | 人人超碰人人 | 高清有码中文字幕 | 黄色国产区 | 99精品观看 | 国产精品成人品 | 俺要去色综合狠狠 | 国产成人精品久久二区二区 | 日韩在线电影一区二区 | 国产91勾搭技师精品 | 色多视频在线观看 | 久久精品视频在线看 | 国产精品久久久av久久久 | 97在线免费| 国产精品麻豆免费版 | 精品福利在线 | 国产成人a亚洲精品v | 91九色最新地址 | 国产欧美三级 | 国产三级视频在线 | 国产精品 999| 99精品视频在线观看播放 | 午夜天天操| 一二区电影 | 国产精品不卡在线播放 | 欧美成年人在线视频 | 日韩免费三级 | 欧美精品二区 | 欧美 日韩 性 | 欧美视频日韩视频 | 日韩免费电影一区二区 | 精品久久久久久久久久久久久久久久久久 | 国产一区二区在线免费观看 | 欧美一级视频免费 | 国产视频日本 | 高清免费在线视频 | 国产精品久久久久久久久久ktv | 在线视频 一区二区 | 久久毛片视频 | 日韩午夜高清 | 中文字幕一区2区3区 | 成年人免费在线观看网站 | 国产又粗又猛又黄又爽 | 日韩高清在线一区二区三区 | 久久视频在线观看中文字幕 | 五月亚洲婷婷 | 日本aaa在线观看 | av蜜桃在线 | 日日夜精品 | 日本久久视频 | 国产精品黑丝在线观看 | 天堂久久电影网 | 夜夜操网| 国产黄色视 | 欧美精品国产综合久久 | 99热国产精品 | 91九色在线观看视频 | 欧美日韩在线精品 | 欧美一级久久 | 久久精品香蕉 | 亚洲精品免费看 | 欧美a在线看 | 日韩夜夜爽 | 久久这里只有精品23 | 日韩视频区 | 日韩伦理片一区二区三区 | 五月天狠狠操 | 国产视频一二区 | 手机在线视频福利 | 黄色动态图xx | 亚洲一区免费在线 | 久草在线手机观看 | 日韩一区二区三免费高清在线观看 | 日韩在线观看网址 | 91视频国产高清 | 欧美日韩亚洲一 | 韩日av在线| 在线看欧美 | 国产玖玖精品视频 | 精品一区二区影视 | 日韩免费二区 | 国产乱老熟视频网88av | 色偷偷888欧美精品久久久 | 99在线热播精品免费 | 午夜精品久久久久久久99 | 成人手机在线视频 | 在线看片中文字幕 | 九草在线观看 | 91黄色免费看 | 欧美一级大片在线观看 | 最新中文字幕视频 | 成人a在线| 久久精品爱爱视频 | 日韩在线观看精品 | 97成人在线免费视频 | 国产原创91| 精品久久久久久一区二区里番 | 国产欧美最新羞羞视频在线观看 | 黄网站免费久久 | 69xx视频 | 精品欧美一区二区精品久久 | 国产精品久久久网站 | 久久久久免费看 | 国产在线探花 | 热精品 | 国产黄色片免费 | 在线а√天堂中文官网 | 国产精品国产三级在线专区 | 色在线视频网 | 国产一级片在线播放 | 国产糖心vlog在线观看 | 18国产精品福利片久久婷 | 国产专区在线 | 久久五月天色综合 | 国产亚洲一区二区三区 | 国产精品久久久久永久免费 | 亚洲欧美日本一区二区三区 | 婷婷中文字幕 | 国产在线观看,日本 | 中文字幕在线看视频国产中文版 | 国产一级不卡视频 | 亚洲播播| 波多野结衣精品视频 | 国产精品久久久久久久av电影 | 久久伊人八月婷婷综合激情 | 久久综合色8888 | 国产成人免费在线 | 欧美性精品 | a级一a一级在线观看 | 在线观看日韩av | 久久午夜剧场 | 日韩3区 | 久久免费试看 | 91麻豆视频 | 人操人 | 人人舔人人爱 | 国产精品久久久视频 | 国产精品一区二区精品视频免费看 | 久久久久精 | 国产欧美精品在线观看 | 欧洲成人av | 黄色软件大全网站 | 日本激情视频中文字幕 | 亚洲国产合集 | 国产二区视频在线观看 | 91成人精品一区在线播放 | 成人理论在线观看 | 国产91欧美| 久久久久久久久久久久久久电影 | 激情视频一区 | 中文字幕在线观看91 | 国产一二区免费视频 | 91手机电视 | 天天爽天天摸 | 国产手机在线观看 | 久久精品日产第一区二区三区乱码 | 亚洲精品国产精品国自产观看 | 五月婷网站 | 亚洲日本va午夜在线影院 | 69国产精品成人在线播放 | 国产h在线播放 | 综合成人在线 | 在线视频福利 | 国产美女免费视频 | 日韩免费看 | 最近中文字幕完整高清 | 在线你懂的视频 | 97理论片| 日韩精品91偷拍在线观看 | 亚洲免费av在线播放 | 黄色看片| 日韩a级免费视频 | 中文字幕日韩在线播放 | 免费黄av| 国产在线视频一区二区三区 | 天天综合久久 | 婷婷在线色 | 免费亚洲视频在线观看 | japanesexxx乱女另类 | 欧美成年网站 | 黄色毛片大全 | 亚洲国产中文字幕在线观看 | 99产精品成人啪免费网站 | 色偷偷av男人天堂 | 久久超| 一区二区三区中文字幕在线观看 | 精品国产一区二区三区久久久蜜月 | 久久久久久黄 | 国产日韩欧美在线播放 | 欧美日韩国产在线观看 | 久久久久久国产精品免费 | 人人草人人做 | 操操日| 国产精品嫩草影院99网站 | 欧美精品乱码久久久久久按摩 | 99色网站| 在线观看91 | 国产精品久久久久亚洲影视 | 黄色免费在线视频 | 日本三级吹潮在线 | 国产精品毛片久久 | 美国av片在线观看 | 欧美经典久久 | av成人免费在线观看 | 中文字幕xxxx | 亚洲精品www久久久久久 | 免费黄色在线播放 | 中文字幕免费久久 | 天天操天天操天天爽 | av网站地址 | 成人va在线观看 | 午夜精品在线看 | 久久精品国产精品 | 极品国产91在线网站 | 久久精品久久久久 | 天天艹天天干天天 | a视频在线 | 天天爱综合| 午夜色场| 黄色av电影网 | 免费av在 | 中文字幕亚洲高清 | 丁香九月婷婷综合 | 99热最新地址 | 国产在线毛片 | 婷婷丁香av | 国产一级一级国产 | 久草观看 | 国产精品一二三 | 亚洲黄色软件 | av大全在线播放 | 毛片网在线观看 | 激情六月婷婷久久 | 欧美激情片在线观看 | 国产小视频在线看 | 激情在线五月天 | 国产精品久久中文字幕 | 欧美日韩性视频在线 | 欧美福利久久 | 久久久久久高潮国产精品视 | 中文av在线免费观看 | 国产精品久久久久久吹潮天美传媒 | 91精品国产综合久久福利不卡 | 婷婷视频在线观看 | 黄色资源在线观看 | 久久成人高清视频 | 久久在线免费视频 | 久久精品中文字幕一区二区三区 | 日韩欧美黄色网址 | 国产成人在线免费观看 | 精品一区二区三区四区在线 | 九色91福利| 久久久精品网 | 久草在线免费看视频 | 在线国产视频观看 | 免费在线观看一区二区三区 | 久久精品视频网址 | 天天操夜夜操 | 欧美狠狠操| 欧美激精品 | 色婷婷视频网 | 在线看片日韩 | 国产免费一区二区三区网站免费 | 久久久99国产精品免费 | 人人玩人人添人人澡97 | 久久精品在线 | 97超视频| 黄色片网站 | 婷婷丁香花五月天 | 久久99国产精品免费 | 亚洲电影久久久 | 亚洲国产中文在线 | 日韩大片免费观看 | av不卡网站 | 成人午夜精品久久久久久久3d | 一区三区视频 | 97狠狠操 | 麻豆首页 | 欧美一级淫片videoshd | 中文字幕电影一区 | 9999免费视频 | 特级西西444www大精品视频免费看 | 91免费观看网站 | 五月综合激情婷婷 | 国产美女视频免费观看的网站 | 欧美日韩国产网站 | 久久国产精品免费视频 | 青草视频免费观看 | 中文字幕色网站 | 天天天操操操 | 日日夜操 | 久久久久在线视频 | 国产成人亚洲精品自产在线 | 青草视频在线播放 | 日韩av免费观看网站 | 日本黄色大片免费 | 91精品老司机久久一区啪 | 中文一区二区三区在线观看 | 久久久久久国产精品亚洲78 | 国产精品亚 | 狠狠狠干| 成人性生交大片免费看中文网站 | 人人舔人人干 | 99精品视频免费全部在线 | 丁香激情综合久久伊人久久 | 国产午夜三级一区二区三 | 亚洲高清久久久 | 深爱激情五月综合 | 国产视频一区二区三区在线 | 免费又黄又爽视频 | 亚洲一区精品人人爽人人躁 | 99国产一区二区三精品乱码 | 911国产在线观看 | 国产成人亚洲在线观看 | 日韩精品久久久久久久电影99爱 | 人人揉人人揉人人揉人人揉97 | 午夜精品一区二区三区视频免费看 | 中文字幕在线成人 | 亚洲精品毛片一级91精品 | 天天看天天干 | 久久久久久久久久久网 | 国产亚洲成人精品 | 粉嫩av一区二区三区四区在线观看 | 免费网站在线 | 国产日韩av在线 | 免费国产一区二区视频 | 精品国产精品久久一区免费式 | 久久综合久久伊人 | 最新不卡av| www日韩精品| 成人精品一区二区三区电影免费 | 中文字幕中文字幕在线中文字幕三区 | 色视频在线免费观看 | 丁香婷婷深情五月亚洲 | 久久综合九色综合欧美狠狠 | 99爱视频| 草免费视频 | 久久人网| 国产看片免费 | 国产一区精品在线 | 欧美日韩成人 | 天天操天天艹 | 99热这里只有精品在线观看 | 中文字幕字幕中文 | 色婷婷视频在线 | 在线观看激情av | 亚洲综合狠狠干 | 免费观看91视频 | 人人澡人摸人人添学生av | 九草在线观看 | 精品在线免费观看 | 91麻豆视频| 综合激情av| 久草在线官网 | 亚洲在线不卡 | 婷婷网站天天婷婷网站 | 国产传媒一区在线 | 日日夜夜草 | 免费看的黄色的网站 | 日韩免费看片 | 亚洲成人动漫在线观看 | 丰满少妇在线观看资源站 | 中文字幕.av.在线 | 精品v亚洲v欧美v高清v | 日日干av| 婷婷六月网 | 91亚洲精品久久久蜜桃 | 日韩av电影免费在线观看 | 97品白浆高清久久久久久 | 999国内精品永久免费视频 | 国产精品九九视频 | 三级av片 | 日韩视频一区二区三区在线播放免费观看 | 婷婷新五月 | 91在线九色 | 国产成人av电影在线 | 欧美激情精品久久久久久 | av中文字幕av | 手机成人在线 | 中国一级片视频 | 国产福利一区二区在线 | 亚洲一级理论片 | 97国产大学生情侣白嫩酒店 | 国产精品美女久久久久久久久久久 | 国产精品一区二区久久久 | 日韩在线观看视频免费 | 午夜国产在线观看 | 狠狠色丁香婷婷综合最新地址 | 人人玩人人添人人澡超碰 | 亚洲国产高清在线观看视频 | 五月天天av| 在线视频a | 色在线观看网站 | 亚洲最大av网 | 国产一区二区在线免费播放 | 中文字幕亚洲综合久久五月天色无吗'' | 五月天中文字幕 | 亚洲精品在线视频网站 | 天天干天天在线 | 久久久伊人网 | 成人免费观看a | 成人亚洲综合 | 中文字幕在线资源 | 久久午夜剧场 | 日韩在线观看精品 | 国产一区二区在线免费视频 | 在线a视频免费观看 | 天天操网址 | 日日爽视频 | 91在线免费视频观看 | 天天搞天天干天天色 | 在线观看亚洲免费视频 | 亚洲一区日韩精品 | 最新av在线播放 | 久久久久亚洲精品中文字幕 | 黄色软件大全网站 | 亚洲日本韩国一区二区 | 亚洲3级 | 黄色av一区二区三区 | 国产亚洲精品久久 | 日韩 精品 一区 国产 麻豆 | 日韩xxxbbb| 国产专区在线视频 | 99国产一区二区三精品乱码 | 国产色视频网站 | 精品二区视频 | 欧美视频日韩视频 | 欧美精品一区二区三区一线天视频 | 免费久久网 | 91精品一区二区三区蜜桃 | 精品国产亚洲在线 | 日韩成人免费在线 | av在线等 | 亚洲国产人午在线一二区 | 97成人在线观看 | 伊人手机在线 | 久久免费的视频 | 国产精品女同一区二区三区久久夜 | 久久综合九色综合欧美狠狠 | 69av在线视频 | 亚洲精品乱码久久久久久按摩 | 久久久久久黄 | 国产精品一区二区中文字幕 | 中文字幕一区二区三区在线视频 | 久久福利影视 | 国产一区免费在线 | 亚洲电影图片小说 | 日本中文字幕电影在线免费观看 | 国产精品久久久久久久av电影 | 日韩久久一区二区 | 在线免费观看不卡av | 在线观看免费日韩 | 国产精品一区二区三区久久 | 日韩av一区在线观看 | 亚洲精品97 | 国产亚洲精品福利 | 日本中文字幕在线视频 | av夜夜操 | 最新国产精品拍自在线播放 | 五月婷婷在线观看视频 | 国产精久久久 | 国产精品女同一区二区三区久久夜 | 欧美成人xxx | 精精国产xxxx视频在线播放 | 欧美影片 | 91精品在线免费观看视频 | 99成人免费视频 | 亚洲欧美少妇 | 中文亚洲欧美日韩 | 91大神电影 | 亚洲精品高清在线观看 | 国产成人精品999在线观看 | 欧美日韩一区二区三区在线观看视频 | 豆豆色资源网xfplay | 玖玖综合网 | 亚洲天堂网在线视频观看 | 国产福利一区二区三区视频 | 日本黄色片一区二区 | 国产小视频你懂的在线 | av福利第一导航 | 成人黄色免费观看 | 久久高清免费 | 91欧美视频网站 | 日韩欧美在线不卡 | 69国产盗摄一区二区三区五区 | 国产精品mv在线观看 | 亚洲天堂色婷婷 | 国产中文字幕在线观看 | 久热只有精品 | 亚洲精品动漫在线 | 日韩在线观看小视频 | 天天色天天| 色视频网站在线观看一=区 a视频免费在线观看 | 久久久网 | 国产a国产 | 婷婷久久国产 | 国产生活一级片 | 日本中文字幕视频 | 草 免费视频 | 狠狠躁日日躁 | 在线电影av| 一区二区三区免费在线观看视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产在线视频导航 | 婷婷色中文 | 天天干天天操天天搞 | 亚洲日本欧美在线 | 在线观看中文字幕av | 在线观看免费一级片 | 奇米影视777影音先锋 | 91中文字幕在线 | 久草视频手机在线 | 久久免费视频精品 | 久草在线资源免费 | 久久久久久久影视 | 国产黄色片免费观看 | www.亚洲精品在线 | 久久久免费看视频 | 一区二区在线电影 | 欧产日产国产69 | 91三级视频 | 制服丝袜一区二区 | 婷婷激情小说网 | 五月天.com | 国产一区二区在线看 | 九九视频精品免费 | 蜜臀aⅴ国产精品久久久国产 | 99色婷婷 | 中文字幕亚洲欧美日韩 | 欧美日韩1区 | 精品中文字幕视频 | 日韩在线资源 | 综合久久久久 | 日韩在线精品 | 欧美日韩久久不卡 | 一区二区欧美在线观看 | 天天操天天色天天射 | 免费观看黄色12片一级视频 | 精品视频123区在线观看 | 久久婷婷国产色一区二区三区 | 国产在线观看av | 一级片视频在线 | 在线观看日韩专区 | 久久久久久久久免费视频 | 射射射综合网 | 91视频在线免费下载 | 91免费视频网站在线观看 | 天天干天天射天天操 | 色www精品视频在线观看 | 婷婷激情综合网 | 久久综合九色综合久久久精品综合 | 99在线精品视频 | 欧美天天干| 国产亚洲人成网站在线观看 | 国产在线观看你懂的 | 草莓视频在线观看免费观看 | 91在线视频精品 | 午夜精品视频一区二区三区在线看 | 国产一级三级 | 五月综合在线观看 | 亚洲九九精品 | 韩国一区二区三区在线观看 | 国产流白浆高潮在线观看 | 91精品福利在线 | 在线视频日韩一区 | 香蕉网在线| 日批视频在线观看免费 | 日韩欧美视频免费观看 | 日韩理论电影在线 | 欧美性生活久久 | 久久久精品电影 | 黄色一级在线免费观看 | 狠狠狠色丁香婷婷综合激情 | 亚洲在线视频观看 | 日韩在线视频线视频免费网站 | 国产一级精品绿帽视频 | 久久国内精品99久久6app | 在线观看www视频 | 欧美日韩久久一区 | 免费看的黄色录像 | 激情影院在线观看 | 久久国产精品久久精品 | 天天操伊人 | 日本天天色 | 九九热在线免费观看 | 久久激情日本aⅴ | 久久在草 | 久久1电影院 | 日韩二区精品 | 手机看片1042 | 日韩av成人在线 | 国产精品资源网 | 欧美精品久久久久久久久老牛影院 | 一级免费片 | 天天草天天摸 | 午夜精品一区二区三区免费视频 | 久久99亚洲精品久久 | 天天操天天射天天爱 | 久久手机免费观看 | 国产破处在线播放 | 免费在线黄色av | 91成人精品一区在线播放 | 日韩精品一区二区三区第95 | 在线观看aa | 国产精品18久久久久久久久 | 国产69熟| 久久国产精品99久久久久 | 97视频免费 | 日日日日干 | 99在线观看 | 久久99国产精品 | 黄色a一级片 | 亚洲精品乱码久久 | 精品久久久久久久久中文字幕 | 免费v片 | 免费的成人av | 99精品成人 | 毛片网免费 | 久久人人看 | 97免费中文视频在线观看 | 亚洲综合色婷婷 | 婷婷丁香激情 | 久草视频在线观 | 日韩欧美一区二区三区黑寡妇 | 国产成人精品在线 | 婷婷色5月 | 国产成人在线观看免费 | 亚洲成人频道 | 日韩一区二区三区观看 | 国产网站在线免费观看 | 国产精品久久久免费看 | 99精品国产视频 | 青青啪 | 99久久精品国产亚洲 | 91精品视屏 | 九九久久国产 | 午夜精品久久久久久久久久久久久久 | 国产精品手机在线 | 久草免费新视频 | 国产97超碰 | 天堂av在线免费观看 | 99这里只有精品视频 | 日日草天天干 | 偷拍精品一区二区三区 | 婷婷夜夜 | av丝袜制服 | 色综合久久88色综合天天6 | 婷久久| 国产精品久久久久9999吃药 | 欧美精品久久久久久久久久丰满 | 日韩一二三区不卡 | 亚洲狠狠婷婷综合久久久 | 久久经典国产视频 | 久久夜色精品国产欧美乱 | 狠狠色丁香久久婷婷综 | 国产999久久久 | 日韩高清在线一区 | 久久成人国产精品 | 亚洲黄色av网址 | 欧美a级免费视频 | 日韩中字在线 | 黄色三级网站 | 成人中文字幕在线观看 | 韩国av一区二区三区在线观看 | 国产一区二区三区黄 | 久久综合色8888 | 久久最新网址 | 亚洲视频aaa | 香蕉看片| 欧美一级免费高清 | 日韩中文字幕免费电影 | 中文字幕在线观看91 | 午夜久久| 91精品视频免费看 | 狠狠狠干 | 操久在线 | 在线看不卡av | 激情婷婷亚洲 | 免费看久久 | 精品国产一区二区三区四区vr | 96av在线视频 | 91麻豆精品国产91久久久无限制版 | 久久好看免费视频 | 啪啪免费视频网站 | 精品视频123区在线观看 | 狠狠色狠狠色综合日日小说 | 天天色天天干天天色 | 就要干b | 西西大胆啪啪 | 天天色天天干天天 | 欧美激情第一页xxx 午夜性福利 | 久久免费看a级毛毛片 | 波多野结衣久久资源 | 天天干天天综合 | 91在线日本| 国产精品久久久久久久久久久久午夜 | 美女网站久久 | 成人超碰97 | 中国美女一级看片 | 日韩在线高清 | 国内精品久久久久国产 | 久久美女电影 | 亚洲jizzjizz日本少妇 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 成人免费91 | 国产激情电影综合在线看 | 综合色综合 | 日日夜夜草 | 欧美成人中文字幕 | 久久午夜精品影院一区 | 一本一本久久a久久精品综合 | www.黄色片网站 | 国产精品2019| 亚洲精品三级 | 视频在线91 | 久久国产欧美日韩精品 | 操久在线| 中文伊人 | 日韩黄色在线观看 | 91正在播放 | 久久久久免费看 | 超碰在线公开 | 日本性xxxxx| 99精品在线视频观看 | 天天射天天干天天爽 | 国产三级午夜理伦三级 | 久久999精品| 99热最新在线| 欧美了一区在线观看 | 国产精品高潮在线观看 | 成年人网站免费在线观看 | 狠狠色噜噜狠狠狠狠2021天天 | 日韩二区三区在线 | 日本一区二区三区免费看 | 午夜电影久久久 | 欧美日韩免费一区二区 | 国产无套一区二区三区久久 | 黄色福利网 | 又紧又大又爽精品一区二区 | 国内外成人在线 | 中文字幕在线播放一区二区 | 国产精品中文字幕在线播放 | 99久久精品久久久久久清纯 | 久久精选 | 天天天综合 | 尤物一区二区三区 | 天天视频色 | 激情综合一区 | 欧美日韩视频在线 | 久草在线手机视频 | 国产精品免费在线 | 久久久综合九色合综国产精品 | 日日摸日日添夜夜爽97 | 天天操夜夜曰 | 最近中文字幕国语免费av | 欧美大片第1页 | 久久久久亚洲精品中文字幕 | 激情五月网站 | 激情婷婷综合网 | 欧美成人区 | 99精品国产兔费观看久久99 | 日日操网 | 九九99| 日日躁你夜夜躁你av蜜 | 久久99网站| 国产精品久久久久久久久久妇女 | 99国产精品视频免费观看一公开 | 亚洲国产精品va在线 | 91成人破解版 | 91高清免费| 日韩sese| 国产一区二区三区四区在线 | 国产精品久久久久久久久久久久 | 成人在线视频观看 | 国产精品久久精品 | 人人干人人添 | 九九精品久久 | 在线韩国电影免费观影完整版 | 五月天久久激情 | 久久久久免费精品视频 | 日韩无在线 | 天天天天天天天天操 | 91久久一区二区 | 久久天天躁夜夜躁狠狠85麻豆 | 欧美色伊人 | 免费国产一区二区 | 在线免费av观看 | 日韩成人免费电影 | 久久99精品一区二区三区三区 | 国产一级精品绿帽视频 | 中日韩在线视频 | 激情视频国产 | 国产在线1区 | 欧美一区二区在线刺激视频 | 国产手机视频精品 | 粉嫩一区二区三区粉嫩91 | 久久久久久激情 | 午夜影院一区 | 韩日精品视频 | 国产1区在线观看 | 久久视频免费在线观看 | 一区二区三高清 | 九九九毛片 | 一本一道久久a久久精品 | 亚洲精品久久久久久中文传媒 | 香蕉影视| 亚洲一区精品人人爽人人躁 | 国产黄色特级片 | 99精品国产99久久久久久福利 | 毛片一区二区 | 国产手机在线观看视频 | 国产精品午夜免费福利视频 | 免费日韩一区 | 久久国产一区二区 | www.国产精品 | av电影在线播放 | 激情视频国产 | 激情欧美一区二区免费视频 | 欧美视频在线观看免费网址 | 欧美日韩一区二区三区在线观看视频 | 亚洲劲爆av| 午夜精品福利一区二区 | 国产爽视频| 国产区av在线 | 精品亚洲成人 | 九九一级片| 不卡的av在线播放 | 一区二区精品在线视频 | 天堂资源在线观看视频 | 国产精品福利无圣光在线一区 | 国产精品色在线 | 91最新视频在线观看 | 成人黄色电影在线 | av黄色在线观看 | 国产精品美女久久久久久 | 久久婷亚洲五月一区天天躁 | mm1313亚洲精品国产 | 国产婷婷色| 色在线视频 | 欧美污污网站 | 亚洲精品影院在线观看 | 色偷偷男人的天堂av | 黄色av免费电影 | 韩国av免费| 久久精品91久久久久久再现 | 99久久精品国产免费看不卡 | 91亚洲精品久久久久图片蜜桃 | 亚洲精品乱码白浆高清久久久久久 | 18pao国产成视频永久免费 | 久99热| 国产精品久久久久久久婷婷 | 国产一区二区视频在线播放 | 天天爱天天操天天射 | 欧美少妇xxx| 成人国产一区 | 婷婷精品进入 | 国产老太婆免费交性大片 | 在线中文字幕av观看 | 91网在线看| 亚洲午夜精品久久久 | 精品在线观看一区二区三区 | 中文字幕视频网站 | 欧美日韩一区二区三区不卡 | 日女人电影 | 国产成人l区 | 亚洲精欧美一区二区精品 | 日韩免费高清在线 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美日韩视频在线播放 | 久久综合丁香 | 人人操日日干 | 97在线视频免费观看 | 国产特级毛片aaaaaa高清 | 91亚洲精品久久久 | 亚洲精品国产精品国自产在线 | 国产精品一区二区三区在线播放 | 天天色天天操综合网 | 伊人久久影视 | 色永久免费视频 | 91欧美视频网站 | 国产黄免费看 | 国产日本三级 | 91视频 - 114av| 久久全国免费视频 | 9999在线视频| 天天干天天草天天爽 | 日韩综合色 | 碰超人人 | 久久久福利视频 | 亚洲 欧洲av | 国产又粗又猛又色又黄视频 | jizzjizzjizz亚洲 | 69视频永久免费观看 | 久久看看 | 日本bbbb摸bbbb | 99久久9 | 中文字幕亚洲在线观看 | 97碰在线 | 国产精品福利午夜在线观看 | 日韩一二三在线 | 天天操天天操天天操天天 | 欧美日产在线观看 | 国产原创av在线 | 一区二区中文字幕在线观看 | 国产91全国探花系列在线播放 | 狠狠色丁香九九婷婷综合五月 | 午夜视频在线观看一区二区三区 |