From 1d064aa5ec2556155bbf116cef1d6d0ac5007acc Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期一, 29 九月 2025 10:23:44 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao --- server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java | 11 h5/package-lock.json | 13 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java | 16 h5/static/loading.gif | 0 h5/pages/index/index.vue | 1 server/system_service/src/main/java/com/doumee/dao/system/dto/LoginH5DTO.java | 3 h5/pages/appointment/appointment.vue | 678 +++++++++++++++++++++++++++++ h5/package.json | 1 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 33 + h5/pages/loading/loading.vue | 83 +++ h5/static/ic_fail.png | 0 server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java | 2 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DDAuthorizeVO.java | 24 + h5/pages.json | 14 server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java | 3 h5/utils/config.js | 4 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 108 ++++ h5/pages/login/login.vue | 56 +- h5/pages/driver/notice.vue | 6 server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java | 2 h5/utils/service.js | 8 h5/utils/http.interceptor.js | 10 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java | 7 server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java | 2 h5/pages/notice/notice.vue | 10 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java | 10 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java | 20 h5/App.vue | 27 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java | 6 h5/utils/getCode.js | 23 + h5/pages/answer/answer.vue | 2 server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java | 138 ++++++ 32 files changed, 1,223 insertions(+), 98 deletions(-) diff --git a/h5/App.vue b/h5/App.vue index 2fb62ad..6d141ba 100644 --- a/h5/App.vue +++ b/h5/App.vue @@ -6,20 +6,19 @@ } from '@/api' export default { onLaunch: function() { - window.addEventListener("popstate", (event) => { - const path = this.$route.fullPath - // console.log('path', path); - if (path == '/pages/login/login' || path == '/') { - window.location.href = app_url - } - if (path == '/pages/wdata/home') { - window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/wdata/home' - } - if (path == '/pages/waybill/home') { - window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/waybill/home' - } - }) - uni.setStorageSync('transportList', []) + // window.addEventListener("popstate", (event) => { + // const path = this.$route.fullPath + // if (path == '/pages/login/login' || path == '/') { + // window.location.href = app_url + // } + // if (path == '/pages/wdata/home') { + // window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/wdata/home' + // } + // if (path == '/pages/waybill/home') { + // window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/waybill/home' + // } + // }) + // uni.setStorageSync('transportList', []) console.log('onLaunch') }, onShow: function() { diff --git a/h5/package-lock.json b/h5/package-lock.json index e0ea285..da7f0a2 100644 --- a/h5/package-lock.json +++ b/h5/package-lock.json @@ -27,11 +27,24 @@ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, + "dingtalk-jsapi": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-3.2.0.tgz", + "integrity": "sha512-PZhTM1T9ERdaOzjFbyokegVmf/vUVvlg0BKcMiP1bB0e3vBflroPpbW2SjrZEKuvFxFtuFDpvYpk2EhbbKH/6Q==", + "requires": { + "promise-polyfill": "^7.1.0" + } + }, "mutation-observer": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz", "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==" }, + "promise-polyfill": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz", + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==" + }, "regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", diff --git a/h5/package.json b/h5/package.json index 3f666de..48cc685 100644 --- a/h5/package.json +++ b/h5/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "dayjs": "^1.11.13", + "dingtalk-jsapi": "^3.2.0", "uniapp-qrcode": "^1.0.2", "uview-ui": "^2.0.37", "vconsole": "^3.15.1" diff --git a/h5/pages.json b/h5/pages.json index 7d64341..4a75021 100644 --- a/h5/pages.json +++ b/h5/pages.json @@ -503,6 +503,20 @@ { "navigationBarTitleText" : "閫夋嫨琚浜�" } + }, + { + "path" : "pages/appointment/appointment", + "style" : + { + "navigationBarTitleText" : "棰勭害" + } + }, + { + "path" : "pages/loading/loading", + "style" : + { + "navigationBarTitleText" : "鎺堟潈" + } } ], "subPackages": [ diff --git a/h5/pages/answer/answer.vue b/h5/pages/answer/answer.vue index e9f232e..54723fe 100644 --- a/h5/pages/answer/answer.vue +++ b/h5/pages/answer/answer.vue @@ -412,7 +412,7 @@ }).then(res => { this.score = 0 uni.navigateTo({ - url: `/pages/userinfo/userinfo?answerId=${res.data}` + url: `/pages/appointment/appointment?answerId=${res.data}` }) }) diff --git a/h5/pages/appointment/appointment.vue b/h5/pages/appointment/appointment.vue new file mode 100644 index 0000000..a4833a4 --- /dev/null +++ b/h5/pages/appointment/appointment.vue @@ -0,0 +1,678 @@ +<template> + <view class="container"> + <view class="visitor-form"> + <view class="cell"> + <view class="title"><b>*</b>濮撳悕</view> + <view class="content"> + <input class="input" @focus="showKeyboard = true" @blur="showKeyboard = false" + placeholder-style="color: #999999;" maxlength="30" v-model="visitorData.name" placeholder="璇疯緭鍏ユ偍鐨勭湡瀹炲鍚�" /> + </view> + </view> + <view class="cell"> + <view class="title"><b>*</b>鎵嬫満鍙�</view> + <view class="content"> + <input type="number" @focus="showKeyboard = true" @blur="showKeyboard = false" class="input" maxlength="11" + placeholder-style="color: #999999;" v-model="visitorData.phone" placeholder="璇疯緭鍏ユ偍鐨勬墜鏈哄彿" /> + </view> + </view> + <view class="cell"> + <view class="title"><b>*</b>璇佷欢绫诲瀷</view> + <view class="content" @click="show = true"> + <text + :style="{color: visitorData.idcardTypeName ? '#000000' : ''}">{{visitorData.idcardTypeName ? visitorData.idcardTypeName : '璇烽�夋嫨'}}</text> + <u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon> + </view> + </view> + <view class="cell"> + <view class="title">璇佷欢鍙风爜</view> + <view class="content"> + <input class="input" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false" + placeholder-style="color: #999999;" v-model="visitorData.idcardNo" placeholder="璇疯緭鍏ユ偍鐨勮瘉浠跺彿鐮�" /> + </view> + </view> + <view class="empty"></view> + <view class="cell"> + <view class="title"><b>*</b>鍏徃鍚嶇О</view> + <view class="content"> + <input class="input" maxlength="50" @focus="showKeyboard = true" @blur="showKeyboard = false" + placeholder-style="color: #999999;" v-model="visitorData.companyName" placeholder="璇疯緭鍏ユ偍鐨勫叕鍙稿悕绉�" /> + </view> + </view> + <view class="cell"> + <view class="title1"> + <text class="title1_a"><b>*</b>浜鸿劯鐓х墖</text> + <text class="title1_b">1銆佽鎻愪緵浜斿畼娓呮櫚锛屼汉鑴稿眳涓殑姝i潰浜鸿劯鍏嶅啝鐓х墖锛�</text> + <text class="title1_b">2銆佺収鐗囨棤閫嗗厜銆佹棤PS銆佹棤杩囧害缇庨澶勭悊</text> + </view> + <view class="content"> + <view class="content_uplaod" @click="upload('faceImg')" v-if="!visitorData.faceImgUrl"> + <u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon> + </view> + <view class="content_uplaod" @click="upload('faceImg')" v-else> + <image :src="visitorData.faceImgUrl" mode="widthFix"></image> + </view> + </view> + </view> + <view style="height: 20rpx; background-color: #F7F7F7;"></view> + <view class="cell"> + <view class="title"><b>*</b>琚浜�</view> + <view class="content" @click="selName"> + <text + :style="{ color: form1.receptMemberName ? '#000000' : '' }">{{form1.receptMemberName ? form1.receptMemberName : "璇烽�夋嫨"}}</text> + <u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon> + </view> + </view> + <view class="cell"> + <view class="title"><b>*</b>鍏ュ洯鏃堕棿</view> + <view class="content" @click="show4 = true"> + <text + :style="{color: form1.starttime ? '#000000' : ''}">{{form1.starttime ? form1.starttime : '璇烽�夋嫨'}}</text> + <u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon> + </view> + </view> + <view class="cell"> + <view class="title"><b>*</b>绂诲洯鏃堕棿</view> + <view class="content" @click="openLC"> + <text + :style="{color: form1.endtime ? '#000000' : ''}">{{form1.endtime ? form1.endtime : '璇烽�夋嫨'}}</text> + <u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon> + </view> + </view> + <view class="cell"> + <view class="title"><b>*</b>鎷滆浜嬬敱</view> + <view class="content" @click="showReason = true"> + <text + :style="{color: form1.reason ? '#000000' : ''}">{{form1.reason ? form1.reason : '璇烽�夋嫨'}}</text> + <u-icon name="arrow-right" color="#CCCCCC" size="16" class="ml6"></u-icon> + </view> + </view> + <view class="cell" v-if="form1.type == 1"> + <view class="title">鏂藉伐鍐呭</view> + <view class="content"> + <input class="input" @focus="showKeyboard = true" @blur="showKeyboard = false" + placeholder-style="color: #999999;" maxlength="30" v-model="form1.constructionReason" placeholder="璇疯緭鍏ユ柦宸ュ唴瀹�" /> + </view> + </view> + <view class="cell"> + <view class="title">闅忚杞﹁締</view> + <view class="content" @click="openInput(1)"> + <text :style="{color: form1.carNos ? '#000000' : ''}">{{form1.carNos ? form1.carNos : '璇疯緭鍏ヨ溅鐗屽彿鐮�'}}</text> + </view> + </view> + <!-- <view class="cell"> + <view class="title">鍋ュ悍璇�<b v-if="visit === '1'">*</b></view> + <view class="content"> + <view class="content_uplaod" @click="upload('imgurl')" v-if="!visitorData.imgurlUrl"> + <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon> + </view> + <view class="content_uplaod" @click="upload('imgurl')" v-else> + <image :src="visitorData.imgurlUrl" mode="widthFix"></image> + </view> + </view> + </view> --> + </view> + <view style="width: 100%; height: 110rpx;" v-if="!showKeyboard"></view> + <view v-if="!showKeyboard" class="footer-box"> + <view class="submit-button" @click="submit">涓嬩竴姝�</view> + </view> + <!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> --> + <u-picker :show="show" :columns="columns" keyName="name" @cancel="show = false" @confirm="confirm"></u-picker> + <qf-image-cropper ref="cropper" :width="280" :height="280" :radius="0" fileType="jpg" + @crop="uploadImg"></qf-image-cropper> + <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" /> + <!-- 鍏ュ洯鏃堕棿 --> + <u-datetime-picker :show="show4" :minDate="new Date().getTime()" :formatter="formatter" mode="datetime" + @cancel="show4 = false" @confirm="setstarttime"></u-datetime-picker> + <!-- 绂诲洯鏃堕棿 --> + <u-datetime-picker v-if="form1.starttime" :show="show5" :formatter="formatter" + :minDate="formatTimeStamp(form1.starttime)" :maxDate="formatTimeStamp(form1.starttime.slice(0,10) + ' 23:59')" + mode="datetime" @cancel="show5 = false" @confirm="setendtime"></u-datetime-picker> + <u-picker keyName="title" :show="showReason" :columns="VisitReason" @confirm="selectedReason" + @cancel="showReason = false"></u-picker> + </view> +</template> + +<script> + import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue"; + import keyboardInput from "@/components/keyboard-input/keyboard-input.vue" + import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue'; + import { + mapState + } from 'vuex' + import { + uploadAvatar + } from "@/utils/config" + import { + getSystemDictData, + visitorSub, + getVisitedVisitReason, + createFk + } from '@/api' + export default { + data() { + return { + photoSrc: "", + inputType: '', + show: false, + showKeyboard: false, + visit: '', + type: '', + show4: false, + show5: false, + showReason: false, + personnel: [], + VisitReason: [], + columns: [ + [{ + name: '韬唤璇�', + id: 0 + }, { + name: '娓境璇佷欢', + id: 1 + }, { + name: '鎶ょ収', + id: 2 + }] + ], + fileList: [], + visitorData: { + userAnswerId: '', + name: '', + phone: '', + idcardType: 0, + idcardTypeName: '韬唤璇�', + idcardNo: '', + faceImg: '', + faceImgUrl: '', + imgurl: '', + imgurlUrl: '', + companyName: '' + }, + form1: { + phone1: '', + receptMemberId: '', + receptMemberName: '', + starttime: '', + endtime: '', + doors: '', + doorSelectName: '', + reason: '', + carNos: '', + type: 0 + }, + withUserList: { + name: '', + phone: '', + idcardType: '', + idcardTypeName: '', + companyName: '', + idcardNo: '', + faceImg: '', + faceImgUrl: '', + imgurl: '', + imgurlUrl: '' + }, + } + }, + components: { + tlyPictureCut, + QfImageCropper, + keyboardInput + }, + + onLoad(option) { + this.getUser() + const visitorData = uni.getStorageSync('member') + if (visitorData.faceImg) { + visitorData.faceImgUrl = visitorData.prefixUrl + visitorData.faceImg + } + if (visitorData && visitorData.name) { + this.visitorData = visitorData + } + this.visitorData.companyName = visitorData.visitCompanyName + this.visitorData.idcardNo = visitorData.idcardDecode + if (this.visitorData.idcardType === 0) { + this.visitorData.idcardTypeName = '韬唤璇�' + } else if (this.visitorData.idcardType === 1) { + this.visitorData.idcardTypeName = '娓境璇佷欢' + } else if (this.visitorData.idcardType === 2) { + this.visitorData.idcardTypeName = '鎶ょ収' + } + if (this.visitorData.imgurl) { + this.visitorData.imgurlUrl = this.visitorData.prefixUrl + this.visitorData.imgurl + } + // if (this.member ) { + // this.visitorData.name = this.member.name + // this.visitorData.phone = this.member.phone + // this.visitorData.idcardNo = this.member.idcardDecode + // this.visitorData.companyName = this.member.visitCompanyName + // this.visitorData.faceImg = this.member.faceImg + // if (this.member.faceImg) { + // this.visitorData.faceImgUrl = this.member.prefixUrl + this.member.faceImg + // } + // this.visitorData.imgurl = this.member.imgurl + // if (this.member.imgurl) { + // this.visitorData.imgurlUrl = this.member.prefixUrl + this.member.imgurl + // } + // this.visitorData.idcardType = this.member.idcardType + // if (this.member.idcardType === 0) { + // this.visitorData.idcardTypeName = '韬唤璇�' + // } else if (this.member.idcardType === 1) { + // this.visitorData.idcardTypeName = '娓境璇佷欢' + // } else if (this.member.idcardType === 2) { + // this.visitorData.idcardTypeName = '鎶ょ収' + // } + // } + this.visitorData.userAnswerId = option.answerId || '' + // this.getVisit() + // uni.$on('update', (data) => { + // this.uploadImg(data.tempFilePath) + // }) + }, + mounted() { + this.$eventBus.$on('svisitorAppSel', (option) => { + // this.$set(this.param, 'checkUserId', option.id) + // this.$set(this.param, 'applyCheckUserId', option.id) + // this.$set(this.param, 'checkorName', option.name) + + this.form1.receptMemberName = option.name + this.form1.receptMemberId = option.id + this.form1.receptMemberDepartment = option.companyName + }) + }, + methods: { + selectedReason(e) { + this.form1.reason = e.value[0].title + this.form1.type = e.value[0].constructionType + this.showReason = false + }, + // 鏌ヨ鐢ㄦ埛 + getUser() { + getVisitedVisitReason({}).then(res => { + this.VisitReason = [res.data || []] + }) + }, + setendtime(e) { + this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + this.show5 = false + }, + formatTimeStamp(date) { + return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g, '/')}`)) + }, + openLC() { + if (!this.form1.starttime) return uni.showToast({ + title: '璇峰厛閫夋嫨鍏ュ洯鏃堕棿', + icon: 'none' + }) + this.show5 = true + }, + setstarttime(e) { + this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') + this.maxTime = this.form1.starttime + this.show4 = false + }, + formatter(type, value) { + if (type === 'year') { + return `${value}骞碻 + } + if (type === 'month') { + return `${value}鏈坄 + } + if (type === 'day') { + return `${value}鏃 + } + if (type === 'hour') { + return `${value}鏃禶 + } + if (type === 'minute') { + return `${value}鍒哷 + } + return value + }, + closeInput() { + this.$refs.keyboard.close() + }, + setPlate(e) { + if (this.inputType === 1) { + this.form1.carNos = e + } else if (this.inputType === 2) { + this.withUserList.carNos = e + } + this.$forceUpdate() + this.closeInput() + }, + openInput(type) { + this.inputType = type + this.$refs.keyboard.open() + }, + selName() { + uni.navigateTo({ + url: '/pages/visitorApplication/memberSel' + }) + }, + submit() { + const { + visitorData + } = this + if (!this.visitorData.name) return uni.showToast({ + title: '濮撳悕涓嶈兘涓虹┖', + icon: 'none' + }) + if (!this.visitorData.phone) return uni.showToast({ + title: '鎵嬫満鍙蜂笉鑳戒负绌�', + icon: 'none' + }) + const regExp = /^1[3456789]\d{9}$/; + if (!regExp.test(this.visitorData.phone)) return uni.showToast({ + title: '鎵嬫満鍙锋牸寮忛敊璇�', + icon: 'none' + }) + if (!String(this.visitorData.idcardType)) return uni.showToast({ + title: '璇佷欢绫诲瀷涓嶈兘涓虹┖', + icon: 'none' + }) + // if (!this.visitorData.idcardNo) return uni.showToast({ + // title: '璇佷欢鍙风爜涓嶈兘涓虹┖', + // icon: 'none' + // }) + if (this.visitorData.idcardType === 0 && this.visitorData.idcardNo) { + const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/; + if (!regex.test(this.visitorData.idcardNo)) return uni.showToast({ + title: '璇佷欢鍙风爜鏍煎紡閿欒', + icon: 'none' + }) + } + if (!this.visitorData.companyName) return uni.showToast({ + title: '鍏徃涓嶈兘涓虹┖', + icon: 'none' + }) + if (!this.visitorData.faceImg) return uni.showToast({ + title: '浜鸿劯鐓х墖涓嶈兘涓虹┖', + icon: 'none' + }) + // if (this.visit === '1') { + // if (!this.visitorData.imgurl) return uni.showToast({ + // title: '鍋ュ悍璇佷笉鑳戒负绌�', + // icon: 'none' + // }) + // } + if (!this.form1.receptMemberId) return uni.showToast({ + title: '璇峰~鍐欐湁鏁堢殑璁块棶浜�', + icon: 'none' + }) + if (!this.form1.starttime) return uni.showToast({ + title: '鍏ュ洯鏃堕棿涓嶈兘涓虹┖', + icon: 'none' + }) + if (!this.form1.endtime) return uni.showToast({ + title: '绂诲洯鏃堕棿涓嶈兘涓虹┖', + icon: 'none' + }) + if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({ + title: '璁块棶闂ㄧ涓嶈兘涓虹┖', + icon: 'none' + }) + if (!this.form1.reason) return uni.showToast({ + title: '鎷滆浜嬬敱涓嶈兘涓虹┖', + icon: 'none' + }) + let data = JSON.parse(JSON.stringify(this.form1)) + data.starttime = data.starttime + ':00' + data.endtime = data.endtime + ':00' + createFk({ + ...this.visitorData, + ...data, + withUserList: this.personnel + }).then(res => { + if (res.code === 200) { + uni.navigateTo({ + url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}` + }) + } + }) + // uni.setStorageSync('visitorData', this.visitorData) + // uni.navigateTo({ + // url: `/pages/visitorApplication/visitorApplication?data=${JSON.stringify(this.visitorData)}` + // }); + }, + getVisit() { + // 鏄惁闇�瑕� 鍋ュ悍璇� + getSystemDictData({ + dictCode: 'SYSTEM', + label: 'HEALTH_CARD' + }).then(res => { + if (res.code === 200) { + this.visit = res.data.code + } + }) + }, + uploadImg(file) { + var that = this + that.$refs.cropper.close() + uni.showLoading({ + title: '涓婁紶涓�', + mask: true + }); + uni.uploadFile({ + url: uploadAvatar, + filePath: file.tempFilePath, + name: 'file', + formData: { + folderCode: 'MEMBER_IMG', + // isFace: 0 + }, + success: (uploadFileRes) => { + let res = JSON.parse(uploadFileRes.data) + if(res.code !== 200){ + return this.showToast(res.message) + } + this.visitorData.faceImg = res.data.halfPath + this.visitorData.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath + }, + fail: (err) => { + // this.showToast(err) + }, + complete() { + uni.hideLoading(); + } + }); + }, + deleUser(i) { + this.personnel.splice(i, 1) + }, + upload(type) { + var that = this + that.type = type + if (type === 'faceImg') { + that.$refs.cropper.chooseImage() + return + } + uni.chooseImage({ + count: 1, + success: (chooseImageRes) => { + // if (type === 'faceImg') { + // that.photoSrc = chooseImageRes.tempFilePaths[0]; + // that.$refs.tlyPictureCut.showPop(); + // } + if (type === 'imgurl') { + uni.showLoading({ + title: '涓婁紶涓�', + mask: true + }); + uni.uploadFile({ + url: uploadAvatar, + filePath: chooseImageRes.tempFilePaths[0], + name: 'file', + formData: { + folderCode: 'MEMBER_IMG' + }, + timeout: 60000, + success: (uploadFileRes) => { + let res = JSON.parse(uploadFileRes.data) + that.visitorData.imgurl = res.data.halfPath + that.visitorData.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath + }, + complete() { + uni.hideLoading(); + } + }); + } + }, + fail(err) { + alert('api鎶ラ敊') + } + }); + }, + confirm(e) { + this.visitorData.idcardType = e.value[0].id + this.visitorData.idcardTypeName = e.value[0].name + this.show = false + } + } + } +</script> + +<style lang="scss"> + page { + background-color: #F7F7F7 !important; + } + + .u-upload__button { + margin: 0 !important; + } + + .content_uplaod { + width: 120rpx; + height: 120rpx; + background: #F7F7F7; + border-radius: 8rpx; + border: 2rpx solid #E5E5E5; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + } + + .content_uplaod image { + width: 100%; + height: 100%; + } + + .empty { + width: 750rpx; + height: 20rpx; + margin: 0 -30rpx; + background-color: #f7f7f7; + ; + } + + .title { + font-size: 30rpx; + font-weight: 400; + color: #222222; + display: flex; + align-items: center; + } + + .title b { + color: #E42D2D; + margin-right: 4rpx; + } + + .title1 { + display: flex; + flex-direction: column; + + .title1_a { + font-size: 30rpx !important; + font-weight: 400; + color: #222222; + display: flex; + align-items: center; + margin-bottom: 20rpx; + + b { + color: #E42D2D; + margin-right: 4rpx; + + } + } + + .title1_b { + font-size: 24rpx !important; + font-weight: 400; + color: #999999; + } + } + + .add-other { + border: 1rpx solid #4d99a8; + color: #4d99a8; + font-size: 11rpx; + padding: 0 12rpx; + height: 32rpx; + line-height: 32rpx; + width: 120rpx; + text-align: center; + border-radius: 24rpx; + margin: 20rpx auto; + } + + .footer-box { + width: 100%; + position: fixed; + bottom: 30rpx; + height: 80rpx; + display: flex; + justify-content: center; + align-items: center; + } + + .submit-button { + width: calc(100% - 60rpx); + height: 88rpx; + line-height: 88rpx; + background: #4d99a8; + border-radius: 4rpx; + color: #fff; + border-radius: 44rpx; + font-size: 32rpx; + display: flex; + align-items: center; + justify-content: center; + } +</style> + +<style lang="scss" scoped> + .popup-content { + padding: 20rpx; + height: 100%; + overflow: hidden; + display: flex; + flex-flow: column; + + .input { + border: 1rpx solid #ccc; + border-radius: 4rpx; + padding: 4rpx 12rpx; + font-size: 28rpx; + font-weight: 400; + color: #333333; + } + + .respondent-item { + padding: 10rpx; + border-bottom: 1rpx solid #eee; + cursor: pointer; + + &:hover { + background-color: #eee; + } + } + + .van-list { + flex: 1; + overflow: auto; + } + } +</style> \ No newline at end of file diff --git a/h5/pages/driver/notice.vue b/h5/pages/driver/notice.vue index 27be0c1..4d4e993 100644 --- a/h5/pages/driver/notice.vue +++ b/h5/pages/driver/notice.vue @@ -30,9 +30,9 @@ }, onLoad() { this.getInfo() - if (!this.$store.state.openId) { - // this.initToken() - } + // if (!this.$store.state.openId) { + // this.initToken() + // } }, methods: { initToken() { diff --git a/h5/pages/index/index.vue b/h5/pages/index/index.vue index 6e9fb01..7300f5f 100644 --- a/h5/pages/index/index.vue +++ b/h5/pages/index/index.vue @@ -58,6 +58,7 @@ jump(type) { switch (type) { case 1: + console.log('1') uni.navigateTo({ url: '/pages/notice/notice' }) diff --git a/h5/pages/loading/loading.vue b/h5/pages/loading/loading.vue new file mode 100644 index 0000000..335064a --- /dev/null +++ b/h5/pages/loading/loading.vue @@ -0,0 +1,83 @@ +<template> + <view class="box"> + <!-- 鍔犺浇涓� --> + <view class="loading" v-if="loading === 'loading'"> + <image src="/static/loading.gif" mode="widthFix"></image> + <text>韬唤鏍¢獙涓紝璇风◢鍚巭</text> + </view> + <!-- 澶辫触 --> + <view class="error" v-if="loading === 'error'"> + <image src="/static/ic_fail.png" mode="widthFix"></image> + <text class="title">鎺堟潈澶辫触</text> + <text class="desc">鎮ㄧ殑璐﹀彿鏆傛湭缁戝畾绯荤粺锛岃鑱旂郴绠$悊鍛�</text> + <button>閲嶆柊楠岃瘉</button> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + loading: 'error' + }; + } + } +</script> + +<style lang="scss" scoped> + .box { + width: 100%; + .error { + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + image { + width: 180rpx; + height: 180rpx; + margin-top: 160rpx; + } + .title { + font-weight: 500; + font-size: 36rpx; + color: #333333; + margin-top: 32rpx; + } + .desc { + font-weight: 400; + font-size: 26rpx; + color: #999999; + margin-top: 20rpx; + } + button { + width: 224rpx; + height: 76rpx; + font-weight: 400; + font-size: 28rpx; + color: #279BAA; + border-radius: 38rpx; + border: 1rpx solid #279BAA; + margin-top: 68rpx; + background-color: #ffffff; + } + } + .loading { + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + image { + width: 200rpx; + height: 200rpx; + margin-top: 202rpx; + } + text { + font-weight: 500; + font-size: 36rpx; + color: #333333; + margin-top: 40rpx; + } + } + } +</style> diff --git a/h5/pages/login/login.vue b/h5/pages/login/login.vue index d198595..e068cc0 100644 --- a/h5/pages/login/login.vue +++ b/h5/pages/login/login.vue @@ -46,37 +46,37 @@ }, onLoad(option) { console.log('onLoad'); - if (option.ywid) { - uni.setStorageSync('ywinfo', { - type: option.type, - yw: option.yw, - ywid: option.ywid - }) - } + // if (option.ywid) { + // uni.setStorageSync('ywinfo', { + // type: option.type, + // yw: option.yw, + // ywid: option.ywid + // }) + // } // https://atwl.ahzyssl.com/zhyq_h5/#/pages/login/login?type=2&yw=5&ywid=b3db2072-a453-470d-8c0d-ba3b8b256530 }, onShow() { - var that = this - let url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' - let code = '' - if (window.location.href.indexOf('code=') !== -1 || this.code) { - // if(window.location.href.indexOf('wdata') !== -1){ - // uni.redirectTo({ - // url: '/pages/wdata/home?code=' + - // }) - // } - const ywinfo = uni.getStorageSync('ywinfo') || {} - if (ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)) { - this.userAuth(ywinfo.type) - } - } else { - // let url = window.location.href - const appID = 'wx173e6caf5abc718a' - let uri = encodeURIComponent(url) - let authURL = - `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base#wechat_redirect` - window.location.href = authURL - } + // var that = this + // let url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' + // let code = '' + // if (window.location.href.indexOf('code=') !== -1 || this.code) { + // // if(window.location.href.indexOf('wdata') !== -1){ + // // uni.redirectTo({ + // // url: '/pages/wdata/home?code=' + + // // }) + // // } + // const ywinfo = uni.getStorageSync('ywinfo') || {} + // if (ywinfo.ywid && (ywinfo.type || ywinfo.type == 0)) { + // this.userAuth(ywinfo.type) + // } + // } else { + // // let url = window.location.href + // const appID = 'wx173e6caf5abc718a' + // let uri = encodeURIComponent(url) + // let authURL = + // `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base#wechat_redirect` + // window.location.href = authURL + // } }, methods: { diff --git a/h5/pages/notice/notice.vue b/h5/pages/notice/notice.vue index fcbd3ee..ea0c8d5 100644 --- a/h5/pages/notice/notice.vue +++ b/h5/pages/notice/notice.vue @@ -16,6 +16,7 @@ <script> let timer import { getSystemDictData } from "@/api" +import { getCode } from "@/utils/getCode.js"; export default { name: 'Index', data() { @@ -27,9 +28,12 @@ }, onLoad() { this.getInfo() - if (!this.$store.state.openId) { - // this.initToken() - } + getCode(code => { + console.log('code', code) + }); + // if (!this.$store.state.openId) { + // this.initToken() + // } }, methods: { initToken() { diff --git a/h5/static/ic_fail.png b/h5/static/ic_fail.png new file mode 100644 index 0000000..c54111b --- /dev/null +++ b/h5/static/ic_fail.png Binary files differ diff --git a/h5/static/loading.gif b/h5/static/loading.gif new file mode 100644 index 0000000..6ea9db1 --- /dev/null +++ b/h5/static/loading.gif Binary files differ diff --git a/h5/utils/config.js b/h5/utils/config.js index 05ff784..70b5a4d 100644 --- a/h5/utils/config.js +++ b/h5/utils/config.js @@ -1,8 +1,8 @@ // export const baseUrl = 'zhyq_interface/' -// export const baseUrl = 'http://192.168.0.173/gateway_interface/' +export const baseUrl = 'http://192.168.1.54:10010/' // export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' -export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' +// export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' diff --git a/h5/utils/getCode.js b/h5/utils/getCode.js new file mode 100644 index 0000000..79b9ec5 --- /dev/null +++ b/h5/utils/getCode.js @@ -0,0 +1,23 @@ +import * as dd from 'dingtalk-jsapi'; +export function getCode(callback) { + let corpId = 'dingb14b7554444efe0a'; + console.log(dd.env.platform) + if (dd.env.platform !== "notInDingTalk") { + dd.ready(() => { + //浣跨敤SDK 鑾峰彇鍏嶇櫥鎺堟潈鐮� + dd.runtime.permission.requestAuthCode({ + corpId: corpId, + onSuccess: (info) => { + // 鏍规嵁閽夐拤鎻愪緵鐨刟pi 鑾峰緱code鍚�,鍐嶆璋冪敤杩欎釜callback鏂规硶 + // 鐢变簬鏄拤閽夎幏鍙朿ode鏄紓姝ユ搷浣�,涓嶇煡閬撲粈涔堟椂鍊欐墽琛屽畬姣� + // callback 鍑芥暟浼氱瓑浠栨墽琛屽畬姣曞悗鍦ㄨ嚜宸辫皟鐢ㄨ嚜宸� + callback(info.code) + }, + onFail: (err) => { + alert('fail'); + alert(JSON.stringify(err)); + }, + }); + }); + } +} \ No newline at end of file diff --git a/h5/utils/http.interceptor.js b/h5/utils/http.interceptor.js index 6d17428..a136b00 100644 --- a/h5/utils/http.interceptor.js +++ b/h5/utils/http.interceptor.js @@ -18,11 +18,11 @@ uni.$u.http.interceptors.response.use((response) => { uni.hideLoading(); // 鐧诲綍杩囨湡 - if (response.data.code === 401) { - uni.navigateTo({ - url: '/packageA/loginAgain/loginAgain' - }); - } + // if (response.data.code === 401) { + // uni.navigateTo({ + // url: '/packageA/loginAgain/loginAgain' + // }); + // } if (response.data.code !== 200) { uni.showToast({ title: response.data.message, diff --git a/h5/utils/service.js b/h5/utils/service.js index 55d60a4..4d7a31a 100644 --- a/h5/utils/service.js +++ b/h5/utils/service.js @@ -39,10 +39,10 @@ 'title': '鏈嶅姟鍣ㄥ紓甯�',icon:'none' }) } - if (data.code === 5112) { - uni.clearStorageSync() - window.location.href = app_url - } + // if (data.code === 5112) { + // uni.clearStorageSync() + // window.location.href = app_url + // } return resolve(data) } resolve(data) diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java index 4e53960..6239c13 100644 --- a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java +++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java @@ -22,6 +22,9 @@ @ApiModelProperty(value = "寰俊openId") private String openid; + @ApiModelProperty(value = "閽夐拤 unionId") + private String ddUnionId; + @NotBlank(message = "瀵嗙爜涓嶈兘涓虹┖") @ApiModelProperty(value = "瀵嗙爜") private String password; diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginH5DTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginH5DTO.java index 5cda109..9df4bde 100644 --- a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginH5DTO.java +++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginH5DTO.java @@ -22,6 +22,9 @@ @ApiModelProperty(value = "寰俊openId") private String openid; + @ApiModelProperty(value = "閽夐拤 unionId") + private String ddUnionId; + @NotBlank(message = "瀵嗙爜涓嶈兘涓虹┖") @ApiModelProperty(value = "瀵嗙爜") private String password; diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java index 4f8a018..647c679 100644 --- a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java +++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginPhoneDTO.java @@ -23,6 +23,8 @@ private String code; @ApiModelProperty(value = "openid") private String openid; + @ApiModelProperty(value = "閽夐拤 unionId") + private String ddUnionId; @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷锛�0=鍙告満锛�1=璁垮锛�2=鍐呴儴鍛樺伐") private Integer userType; } diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java index ad790af..48f88b9 100644 --- a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java +++ b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java @@ -98,6 +98,8 @@ private String openidHkInfo; @ApiModelProperty(value = "寰俊openid鎺ㄩ�佹捣搴锋椂闂�", example = "1", hidden = true) private Date openidHkDate; + @ApiModelProperty(value = "閽夐拤 unionId", example = "1", hidden = true) + private String ddUnionId; //2024骞�12鏈�6鏃�11:00:30 绫诲瀷 0鍙告満浜哄憳 1鏅�氳瀹� 2鍐呴儴浜哄憳 3tms绠℃帶浜哄憳 @ApiModelProperty(value = "绫诲瀷 0鍙告満浜哄憳 1鏅�氳瀹� 2鍐呴儴浜哄憳 3tms绠℃帶浜哄憳", example = "0") diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index 0fdc117..5334a12 100644 --- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -156,7 +156,7 @@ } } try { - LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),request); + LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),dto.getDdUnionId(),request); systemLoginLogService.create(loginLog); return user; }catch (BusinessException e){ @@ -186,7 +186,7 @@ throw e; } } - LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),request); + LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),dto.getDdUnionId(),request); systemLoginLogService.create(loginLog); return user; } @@ -213,7 +213,7 @@ isCaptcheValide(dto.getPhone(),dto.getCode());//妫�鏌ラ獙璇佺爜 SystemLoginLog loginLog = getInitLoginlog(dto.getPhone(),request); try{ - LoginUserInfo userInfo = dealLoginByPwdNewBiz(null,null,dto.getPhone(),dto.getOpenid(), request ); + LoginUserInfo userInfo = dealLoginByPwdNewBiz(null,null,dto.getPhone(),dto.getOpenid(),dto.getDdUnionId(), request ); systemLoginLogService.create(loginLog); return userInfo; }catch (BusinessException e){ @@ -227,7 +227,7 @@ throw e; } } - private LoginUserInfo dealLoginByPwdNewBiz(String username,String pwd, String phone, String openid, ServerHttpRequest request) { + private LoginUserInfo dealLoginByPwdNewBiz(String username,String pwd, String phone, String openid, String ddUnionId, ServerHttpRequest request) { // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); queryDto.setMobile(phone); @@ -248,7 +248,12 @@ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); } } - dealOpenIdBiz(user,openid); + if(StringUtils.isNotBlank(openid)){ + dealOpenIdBiz(user,openid); + } + if(StringUtils.isNotBlank(ddUnionId)){ + dealDDUnionIdBiz(user,ddUnionId); + } Company company = new Company(); if(Objects.nonNull(user.getCompanyId())){ company = companyMapper.selectById(user.getCompanyId()); @@ -320,6 +325,24 @@ .eq(SystemUser::getId,user.getId())); } } + + private void dealDDUnionIdBiz(SystemUser user, String ddUnionId) { + if(StringUtils.isNotBlank(ddUnionId)){ + //濡傛灉openId涓嶄负绌�,缁戝畾璇ョ敤鎴穙penid + systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda() + .set(SystemUser::getDdUnionId,null) + .set(SystemUser::getOpenidHkStatus,Constants.ZERO) + .ne(SystemUser::getType,Constants.memberType.gkuser) + .eq(SystemUser::getDdUnionId,ddUnionId) + ); + systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda() + .set(SystemUser::getDdUnionId,ddUnionId) + .set(SystemUser::getOpenidHkStatus,Constants.ZERO) + .set(SystemUser::getOpenidHkDate,null) + .set(SystemUser::getOpenidHkInfo,null) + .eq(SystemUser::getId,user.getId())); + } + } private void dealOpenIdBizForGk(SystemUser user, String openid) { if(StringUtils.isNotBlank(openid)){ //濡傛灉openId涓嶄负绌�,缁戝畾璇ョ敤鎴穙penid diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java index ee19a81..b8f1acc 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java @@ -21,6 +21,7 @@ import com.doumee.service.business.ext.ERPSyncService; import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromHKServiceImpl; import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromSelfServiceImpl; +import com.taobao.api.ApiException; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -367,4 +368,14 @@ return ApiResponse.success(null); } + + @ApiOperation("鍏ㄩ噺浜哄憳淇℃伅鍚屾 - 閽夐拤") + @PostMapping("/syncAllDingding") +// @CloudRequiredPermission("business:company:sync") + public ApiResponse syncAllDingding() throws ApiException { + memberService.syncDDUserInfo(); + return ApiResponse.success("鍚屾鎴愬姛"); + } + + } diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java index 6ec9c82..c8bb46b 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java @@ -3,6 +3,7 @@ import com.doumee.api.BaseController; import com.doumee.config.annotation.LoginNoRequired; import com.doumee.core.annotation.trace.Trace; +import com.doumee.dao.web.response.DDAuthorizeVO; import com.doumee.service.business.third.model.ApiResponse; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; @@ -17,6 +18,7 @@ import com.doumee.service.business.MemberService; import com.doumee.service.business.VisitReasonService; import com.doumee.service.business.VisitsService; +import com.taobao.api.ApiException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -65,6 +67,18 @@ return ApiResponse.success("鏌ヨ鎴愬姛",wxAuthorizeVO); } + + @ApiOperation(value = "閽夐拤寰俊鎺堟潈", notes = "璁垮寰俊鎺堟潈鑾峰彇openId") + @GetMapping("/ddAuthorize") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "鎺堟潈鐮�", required = true), + @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "source", value = "鏉ユ簮:0=鍙告満锛�1=璁垮锛�2=鍐呴儴鍛樺伐", required = true) + }) + public ApiResponse<DDAuthorizeVO> ddAuthorize(@RequestParam String code, @RequestParam Integer source) throws ApiException { + DDAuthorizeVO ddAuthorizeVO = memberService.ddAuthorize(code,source); + return ApiResponse.success("鏌ヨ鎴愬姛",ddAuthorizeVO); + } + @ApiOperation(value = "鏌ヨ琚闂汉淇℃伅", notes = "鏌ヨ琚闂汉淇℃伅") @PostMapping("/getVisitedMember") public ApiResponse<List<MemberVO>> getVisitedMember(@Valid @RequestBody CheckVisitedDTO checkVisitedDTO) { @@ -78,6 +92,8 @@ visits.setSourceType(Constants.ZERO); return ApiResponse.success("鏌ヨ鎴愬姛", visitsService.createFk(visits,false,Constants.ZERO)); } + + @ApiOperation(value = "鏉ヨ浜嬬敱", notes = "鏉ヨ浜嬬敱") @PostMapping("/visitReason") public ApiResponse<List<VisitReason>> visitReason() { diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java index 05bda56..84ac5f5 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java @@ -14,16 +14,21 @@ import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DateUtil; import com.doumee.dao.business.dao.CompanyMapper; +import com.doumee.dao.business.model.CarUseBook; import com.doumee.dao.business.model.Company; +import com.doumee.dao.business.model.Visits; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.business.CompanyService; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.taobao.api.ApiException; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.DateFormat; import java.util.*; import java.util.stream.Collectors; @@ -102,6 +107,19 @@ public String getToken(){ String accessToken = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.ACCESS_TOKEN).getCode(); return accessToken; + } + + + public OapiV2UserGetuserinfoResponse.UserGetByCodeResponse getDDUserByCode(String code) throws ApiException { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo"); + OapiV2UserGetuserinfoRequest req = new OapiV2UserGetuserinfoRequest(); + req.setCode(code); + OapiV2UserGetuserinfoResponse rsp = client.execute(req, getToken()); + if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){ + return rsp.getResult(); + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),rsp.getMessage()); + } } @@ -364,6 +382,126 @@ } } + public void workInfoOANotice(Long agentId,String userIds,OapiMessageCorpconversationAsyncsendV2Request.Msg msg)throws ApiException { + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); + OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); + request.setAgentId(agentId); + request.setUseridList(userIds); + request.setToAllUser(false); + request.setMsg(msg); + OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getToken()); + if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){ + + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),rsp.getMessage()); + } + } + + + /** + * 璁垮鐢宠/鎶ュ OA 宸ヤ綔閫氱煡 鍐呭 + * @param visits + * @param title + * @return + */ + public OapiMessageCorpconversationAsyncsendV2Request.Msg getVisitNoticeMsg(Visits visits,String title){ + OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); + msg.setMsgtype("oa"); + OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA(); + oa.setMessageUrl(""); + OapiMessageCorpconversationAsyncsendV2Request.Head head = new OapiMessageCorpconversationAsyncsendV2Request.Head(); + head.setText(title); + head.setBgcolor("#279BAA"); + oa.setHead(head); + + OapiMessageCorpconversationAsyncsendV2Request.Body body = new OapiMessageCorpconversationAsyncsendV2Request.Body(); + body.setTitle(!Constants.equalsInteger(visits.getType(),Constants.TWO)?visits.getName()+"鐨勮瀹㈢敵璇�":"鐨勮瀹㈡姤澶�"); + List<OapiMessageCorpconversationAsyncsendV2Request.Form> formList = new ArrayList<>(); + + OapiMessageCorpconversationAsyncsendV2Request.Form visitUser = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + visitUser.setKey("鏉ヨ浜�"); + visitUser.setValue(visits.getName()); + formList.add(visitUser); + + OapiMessageCorpconversationAsyncsendV2Request.Form inDate = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + inDate.setKey("鍏ュ洯鏃堕棿"); + inDate.setValue(DateUtil.formatDate(visits.getStarttime(),"MM-dd HH:mm")); + formList.add(inDate); + + OapiMessageCorpconversationAsyncsendV2Request.Form outDate = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + outDate.setKey("绂诲洯鏃堕棿"); + outDate.setValue(DateUtil.formatDate(visits.getEndtime(),"MM-dd HH:mm")); + formList.add(outDate); + + OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + inReason.setKey("鏉ヨ浜嬬敱"); + inReason.setValue(visits.getReason()); + formList.add(inReason); + + if(StringUtils.isNotBlank(visits.getCarNos())){ + OapiMessageCorpconversationAsyncsendV2Request.Form carNos = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + carNos.setKey("闅忚杞﹁締"); + carNos.setValue(visits.getCarNos()); + formList.add(visitUser); + } + + body.setForm(formList); + oa.setBody(body); + msg.setOa(oa); + + return msg; + } + + + /* public OapiMessageCorpconversationAsyncsendV2Request.Msg getCarUseNoticeMsg(CarUseBook carUseBook,String title){ + OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); + msg.setMsgtype("oa"); + OapiMessageCorpconversationAsyncsendV2Request.OA oa = new OapiMessageCorpconversationAsyncsendV2Request.OA(); + oa.setMessageUrl(""); + OapiMessageCorpconversationAsyncsendV2Request.Head head = new OapiMessageCorpconversationAsyncsendV2Request.Head(); + head.setText(title); + head.setBgcolor("#279BAA"); + oa.setHead(head); + + OapiMessageCorpconversationAsyncsendV2Request.Body body = new OapiMessageCorpconversationAsyncsendV2Request.Body(); + body.setTitle("鍏姟鐢ㄨ溅"); + List<OapiMessageCorpconversationAsyncsendV2Request.Form> formList = new ArrayList<>(); + + + OapiMessageCorpconversationAsyncsendV2Request.Form startDate = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + startDate.setKey("寮�濮嬫椂闂�"); + startDate.setValue(DateUtil.formatDate(carUseBook.getStartTime(),"MM-dd HH:mm")); + formList.add(startDate); + + OapiMessageCorpconversationAsyncsendV2Request.Form endDate = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + endDate.setKey("缁撴潫鏃堕棿"); + endDate.setValue(DateUtil.formatDate(carUseBook.getEndTime(),"MM-dd HH:mm")); + formList.add(endDate); + + + OapiMessageCorpconversationAsyncsendV2Request.Form userNum = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + userNum.setKey("涔樿溅浜烘暟"); + userNum.setValue(DateUtil.formatDate(carUseBook.getEndTime(),"MM-dd HH:mm")); + formList.add(userNum); + + OapiMessageCorpconversationAsyncsendV2Request.Form inReason = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + inReason.setKey("鏉ヨ浜嬬敱"); + inReason.setValue(visits.getReason()); + formList.add(inReason); + + if(StringUtils.isNotBlank(visits.getCarNos())){ + OapiMessageCorpconversationAsyncsendV2Request.Form carNos = new OapiMessageCorpconversationAsyncsendV2Request.Form(); + carNos.setKey("闅忚杞﹁締"); + carNos.setValue(visits.getCarNos()); + formList.add(visitUser); + } + + body.setForm(formList); + oa.setBody(body); + msg.setOa(oa); + + return msg; + }*/ } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java index 474b586..5dfd1a8 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java @@ -76,7 +76,7 @@ if(eventType.startsWith("org")){ companyService.ddPushCompanyInfo(eventType,bizData); }else if(eventType.startsWith("user")){ - + memberService.ddPushMemberInfo(eventType,bizData); } //澶勭悊浜嬩欢 // process(bizData); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DDAuthorizeVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DDAuthorizeVO.java new file mode 100644 index 0000000..8ad2562 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DDAuthorizeVO.java @@ -0,0 +1,24 @@ +package com.doumee.dao.web.response; + +import com.doumee.dao.business.model.Member; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2023/12/7 11:19 + */ +@Data +public class DDAuthorizeVO { + + @ApiModelProperty(value = "鎺堟潈 unionId ") + private String unionId; + + @ApiModelProperty(value = "鐢ㄦ埛token") + private String token; + + @ApiModelProperty(value = "鐢ㄦ埛淇℃伅") + private Member member; +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java index d425932..024145c 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java @@ -1,5 +1,6 @@ package com.doumee.service.business; +import com.doumee.dao.web.response.DDAuthorizeVO; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; @@ -13,6 +14,7 @@ import com.doumee.dao.web.reqeust.VisitMemberDTO; import com.doumee.dao.web.response.MemberVO; import com.doumee.dao.web.response.WxAuthorizeVO; +import com.taobao.api.ApiException; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -172,6 +174,7 @@ */ WxAuthorizeVO wxAuthorize(String code,Integer source); + DDAuthorizeVO ddAuthorize(String code, Integer source) throws ApiException; List<MemberVO> getVisitedMember(CheckVisitedDTO checkVisitedDTO); @@ -208,4 +211,8 @@ List<Member> findDriveList(Member model); void initPinyinTool(); + + void syncDDUserInfo() throws ApiException; + + void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException; } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java index 7336cb7..575f5a3 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java @@ -961,7 +961,7 @@ company.setCompanyNamePath(company.getName());//鍚嶇О璺緞 company.setHkParentId(rootOrgId); String idPath = ""; - if(StringUtils.isNotBlank(company.getErpParentId()) && !StringUtils.equals(company.getErpParentId(),Constants.ONE+"")){ + if(StringUtils.isNotBlank(company.getErpParentId())){ Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId()) .eq(Company::getIsdeleted,Constants.ZERO).last(" limit 1 ")); if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){ @@ -981,6 +981,7 @@ company.setHkParentId(parent.getHkId()); company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/"); company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName()); + company.setParentId(parent.getId()); } company.setHkCompanyPath(company.getCompanyNamePath()); company.setCreateDate(new Date()); @@ -1009,7 +1010,7 @@ public Company syncDDEditCompanyModel(OapiV2DepartmentGetResponse.DeptGetResponse deptGetResponse,Company company){ company.setErpParentId(deptGetResponse.getParentId().toString()); String idPath = ""; - if(StringUtils.isNotBlank(company.getErpParentId()) && !StringUtils.equals(company.getErpParentId(),Constants.ONE+"")){ + if(StringUtils.isNotBlank(company.getErpParentId())){ Company parent = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,company.getErpParentId()) .eq(Company::getIsdeleted,Constants.ZERO).last("limit 1 ")); if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){ @@ -1026,6 +1027,7 @@ company.setHkParentId(parent.getHkId()); company.setCompanyPath(parent.getCompanyPath()+company.getId()+"/"); company.setCompanyNamePath(parent.getCompanyNamePath()+"/"+company.getName()); + company.setParentId(parent.getId()); } company.setName(deptGetResponse.getName()); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index 43c2c6f..b30488b 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dingtalk.api.response.OapiV2DepartmentGetResponse; import com.dingtalk.api.response.OapiV2UserGetResponse; +import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.config.DataSyncConfig; import com.doumee.core.annotation.excel.ExcelImporter; @@ -22,6 +23,7 @@ import com.doumee.core.haikang.model.param.respose.UserAddResponse; import com.doumee.core.haikang.model.param.respose.UserDelResponse; import com.doumee.core.haikang.service.HKService; +import com.doumee.dao.web.response.DDAuthorizeVO; import com.doumee.service.business.third.TmsService; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; @@ -219,9 +221,9 @@ private Member initAddMemberModel(Member member, LoginUserInfo loginUserInfo) { Member insert= new Member(); - insert.setCreator(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null); + insert.setCreator(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null); insert.setCreateDate(new Date()); - insert.setEditor(Objects.nonNull(loginUserInfo.getId())?loginUserInfo.getId():null); + insert.setEditor(Objects.nonNull(loginUserInfo)?loginUserInfo.getId():null); insert.setEditDate(new Date()); insert.setHkOrgId(member.getHkOrgId()); insert.setIsdeleted(Constants.ZERO); @@ -231,6 +233,7 @@ insert.setCode(member.getCode()); insert.setType(Constants.TWO); insert.setHkDate(new Date()); + insert.setErpId(member.getErpId()); insert.setWorkStatus(Constants.ZERO);//榛樿鍦ㄨ亴 insert.setCanVisit(Constants.ZERO);//榛樿涓嶅彲璁块棶 insert.setAuthStatus(Constants.ZERO); @@ -1845,6 +1848,12 @@ return wxAuthorizeVO; } + /** + * 寰俊鎺堟潈 鍐呴儴浜哄憳鐧诲綍 + * @param wxAuthorizeVO + * @param openId + * @param source + */ private void dealSystemUserAuthBiz(WxAuthorizeVO wxAuthorizeVO, String openId, Integer source) { SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() .eq(SystemUser::getOpenid,openId) @@ -1874,6 +1883,44 @@ wxAuthorizeVO.setToken(token); } } + + /** + * 閽夐拤鎺堟潈鑾峰彇鍐呴儴浜哄憳鐧诲綍淇℃伅 + * @param ddAuthorizeVO + * @param unionId + * @param source + */ + private void dealSystemUserAuthBizByDD(DDAuthorizeVO ddAuthorizeVO, String unionId, Integer source) { + SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() + .eq(SystemUser::getDdUnionId,unionId) + .in(SystemUser::getType,Constants.memberType.internal) + .eq(SystemUser::getDeleted,Constants.ZERO) + .last(" limit 1 ")); + //闈炶瀹㈢敤鎴� 杩涜鍒ゆ柇鏄惁瀛樺湪鐢ㄦ埛 + if(!Objects.isNull(user)){ + Member member = memberMapper.selectById(user.getMemberId()); + if(member == null || member.getIsdeleted() == Constants.ONE){ + return; +// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳"); + } + if(member.getStatus() != Constants.ZERO){ + return; +// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳"); + } + if(StringUtils.isNotBlank(member.getIdcardNo())){ + member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo())); + } + String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + member.setPrefixUrl(prefixUrl); + ddAuthorizeVO.setMember(member); + //鍙告満 涓� 鍐呴儴浜哄憳 鎻愪緵token + String token = systemLoginService.loginByUserId(user.getId()); + ddAuthorizeVO.setToken(token); + } + } + + private void dealDriverUserAuthBiz(WxAuthorizeVO wxAuthorizeVO, String openId, Integer source) { SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() .eq(SystemUser::getOpenid,openId) @@ -2345,6 +2392,7 @@ /** * 鍚屾閽夐拤鍐呴儴鍛樺伐淇℃伅 */ + @Override public void syncDDUserInfo() throws ApiException { List<OapiV2UserGetResponse.UserGetResponse> list = dingTalk.syncAllUserInfo(); if(CollectionUtils.isEmpty(list)){ @@ -2410,7 +2458,7 @@ private Member syncDDAddMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member member) { member.setCreateDate(new Date()); - member.setErpId(deptGetResponse.getUserid()); + member.setErpId(deptGetResponse.getUnionid()); member.setPhone(deptGetResponse.getMobile()); member.setName(deptGetResponse.getName()); member.setCode(deptGetResponse.getJobNumber()); @@ -2440,7 +2488,7 @@ if(Objects.nonNull(deptIdList)){ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda().in(Company::getErpId,deptIdList) .eq(Company::getType,Constants.ONE).eq(Company::getIsdeleted,Constants.ZERO) - .isNotNull(Company::getHkId) +// .isNotNull(Company::getHkId) 鏆傛椂鏃犳硶鍚屾寮�鑸� 鍏堟敞閲� ); if(CollectionUtils.isNotEmpty(companyList)){ member.setHkOrgId(companyList.get(Constants.ZERO).getHkId()); @@ -2469,7 +2517,7 @@ public Member syncDDEditMemberModel(OapiV2UserGetResponse.UserGetResponse deptGetResponse,Member updateMember) { updateMember.setEditDate(new Date()); - updateMember.setErpId(deptGetResponse.getUserid()); + updateMember.setErpId(deptGetResponse.getUnionid()); updateMember.setPhone(deptGetResponse.getMobile()); updateMember.setName(deptGetResponse.getName()); updateMember.setCode(deptGetResponse.getJobNumber()); @@ -2536,6 +2584,7 @@ } + @Override public void ddPushMemberInfo(String eventType, shade.com.alibaba.fastjson2.JSONObject eventData) throws ApiException { JSONArray jsonArray = eventData.getJSONArray("userId"); if(jsonArray.isEmpty()){ @@ -2553,20 +2602,61 @@ } }else if(eventType.equals("user_add_org")||eventType.equals("user_modify_org")){ for (int i = 0; i < jsonArray.size(); i++) { + OapiV2UserGetResponse.UserGetResponse userGetResponse = dingTalk.syncUserInfo(jsonArray.getString(i)); Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda() .eq(Member::getIsdeleted,Constants.ZERO) - .eq(Member::getErpId,jsonArray.getLong(i)) + .eq(Member::getErpId,userGetResponse.getUnionid()) .last(" limit 1") ); - OapiV2UserGetResponse.UserGetResponse deptGetResponse = dingTalk.syncUserInfo(jsonArray.getString(i)); if(Objects.isNull(member)){ - getAddMemberModel(deptGetResponse,member); + member = new Member(); + getAddMemberModel(userGetResponse,member); }else{ - getUpdateMemberModel(deptGetResponse,member); + getUpdateMemberModel(userGetResponse,member); } } } } + /** + * 閽夐拤鎺堟潈鐧诲綍 + * @param code + * @param source + * @return + * @throws ApiException + */ + @Override + public DDAuthorizeVO ddAuthorize(String code, Integer source) throws ApiException { + if(StringUtils.isBlank(code)||Objects.isNull(source)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + OapiV2UserGetuserinfoResponse.UserGetByCodeResponse userGetByCodeResponse = dingTalk.getDDUserByCode(code); + if(Objects.isNull(userGetByCodeResponse) + || StringUtils.isBlank(userGetByCodeResponse.getUnionid())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽夐拤鎺堟潈澶辫触"); + } + String unionId = userGetByCodeResponse.getUnionid(); + + DDAuthorizeVO ddAuthorizeVO = new DDAuthorizeVO(); + if(StringUtils.isBlank(unionId)){ + return ddAuthorizeVO; + } + ddAuthorizeVO.setUnionId(unionId); +// if(source==1){ +// //澶勭悊鏅�氳瀹汉鍛樿嚜鍔ㄦ巿鏉冮�昏緫 +// dealVisitUserAuthBiz(wxAuthorizeVO,openId,source); +// }else if(source == 3){ +// //澶勭悊tms绠℃帶浜哄憳鑷姩鎺堟潈閫昏緫 +// dealGkUserAuthBiz(wxAuthorizeVO,openId,source); +// }else if(source == 0){ +// //濡傛灉鏄徃鏈猴紝鍒欎粠system_user鏌ヨ +// dealDriverUserAuthBiz(wxAuthorizeVO,openId,source); +// }else{ + //濡傛灉鏄唴閮ㄤ汉鍛橈紝鍒欎粠system_user鏌ヨ + dealSystemUserAuthBizByDD(ddAuthorizeVO,unionId,source); +// } + return ddAuthorizeVO; + } + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java index d9ab31f..4ad2587 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java @@ -239,7 +239,7 @@ //妫�鏌ユ槸鍚﹀繀椤荤瓟棰橈紝骞朵笖绗﹀悎绛旈瑕佹眰 ProblemLog problemLog = isValidProblemLog(visits,source); //鑾峰彇鐢宠鐨勬捣搴疯闂棬绂佺粍淇℃伅 - getHkDeviceRoles(visits,isERP); +// getHkDeviceRoles(visits,isERP); //妫�楠屾嫓璁夸汉鏄惁鍚堟硶 Member visitMember = isValideVisitedUser(visits.getReceptMemberId()); if(StringUtils.isNotBlank(visits.getIdcardNo()) && Constants.equalsInteger(Constants.ZERO, visits.getIdcardType()) @@ -258,24 +258,6 @@ //鍒濆鍖栬瀹俊鎭� initVisitInfo(visits,date); -// if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){ -// //浜鸿劯璇勫垎 -// FacePictureCheckRequest param = new FacePictureCheckRequest(); -// String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() + -// systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); -// param.setFacePicUrl(prefixUrl + visits.getFaceImg()); -// BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param); -// if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ -// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~"); -// } -// FacePictureCheckResponse facePictureCheckResponse = response.getData(); -// if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){ -// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~"); -// } -// if(!facePictureCheckResponse.getCheckResult()){ -// throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage()); -// } -// } visits.setSendTimeOutNotice(Constants.ZERO); visitsMapper.insert(visits); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java index c525f0e..552d487 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java @@ -1360,12 +1360,18 @@ List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1())) .filter(i->Objects.nonNull(i.getParam1())&&i.getParam1().indexOf(today)>=0) .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList()); - Long startTime = Collections.min(startTimeList); + Long startTime = null ; + if(CollectionUtils.isNotEmpty(startTimeList)){ + startTime = Collections.min(startTimeList); + } //鑾峰彇缁撴潫鏃堕棿 List<Long> endTimeList = platformLogList.stream() .filter(i->Objects.nonNull(i.getParam2())&&i.getParam2().indexOf(today)>=0) .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList()); - Long endTime = Collections.max(endTimeList); + Long endTime = null ; + if(CollectionUtils.isNotEmpty(endTimeList)){ + endTime = Collections.max(endTimeList); + } if(Objects.isNull(startTime) || Objects.isNull(endTime) || (startTime>=endTime)){ return BigDecimal.ZERO; -- Gitblit v1.9.3