星油云站
This commit is contained in:
184
api/cloud-site.js
Normal file
184
api/cloud-site.js
Normal file
@@ -0,0 +1,184 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "cloud-site-service"
|
||||
const group_name = "cloudSite"
|
||||
export default {
|
||||
// 小程序码下单
|
||||
saveXoilOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/saveXoilOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 小程序加油订单详情
|
||||
getNewItemSiteOrderInfo(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getNewItemSiteOrderInfo`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 小程序加油订单列表
|
||||
getNewItemSiteOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getNewItemSiteOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 换手机号提交
|
||||
updatePhone(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/updatePhone`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 换手机号发送验证码
|
||||
updatePhoneSms(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/updatePhoneSms`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 确认修改密码
|
||||
setPassword(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/setPassword`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// setPasswordSms
|
||||
sendPwdSms(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/setPasswordSms`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 个人中心
|
||||
personCenter() {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/personCenter`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 根据ID查询订单详情
|
||||
getSiteOrderById(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getSiteOrderById/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 油站基本资料和油站的油品价格等信息
|
||||
getSiteDetail(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getSiteDetail`,
|
||||
method: 'get',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取云站当前登录用户的基础资料
|
||||
getSiteBasicData(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getSiteBasicData`,
|
||||
method: 'get',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取油站订单列表*全部
|
||||
getAllSiteOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getAllSiteOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取油站订单列表*当天
|
||||
getSiteOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getSiteOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 查询云站号是否存在,并返回云站基本信息
|
||||
verifyOilSite(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/registerOilSite/${data.oilSiteCode}`,
|
||||
method: 'get',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取不带参数的油站二维码
|
||||
getSiteQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getSiteQrCode`,
|
||||
method: 'get',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取带参数的油站二维码
|
||||
getDesignatedSiteQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/updateSiteQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 扫码
|
||||
VerifyQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/VerifyQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 扫则一码
|
||||
VerifyZeYiQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/VerifyZeYiQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 下单
|
||||
saveOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/saveOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 下则一单
|
||||
saveZeyiOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/saveZeyiOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 经营分析 日
|
||||
getAnyDay(date) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getAnyDay/${date}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 经营分析 月
|
||||
getAnyMonth(date) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getAnyMonth/${date}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 昨日数据
|
||||
getYesterday() {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getYesterday`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
}
|
||||
12
api/g7.js
Normal file
12
api/g7.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "cloud-site-service"
|
||||
const group_name = "tbOilOrder"
|
||||
export default {
|
||||
// G7订单支付状态
|
||||
getPayStatus(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/get/${id} `,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
}
|
||||
12
api/global.js
Normal file
12
api/global.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const baseURL = 'https://www.51xingka.net/LSMOIL/'
|
||||
const mainURL = 'https://xingka51.oss-cn-hangzhou.aliyuncs.com/applets/cloudSite/'
|
||||
const token = '123456'
|
||||
|
||||
const userSite = '林花落了春红,太匆匆'
|
||||
|
||||
export default {
|
||||
baseURL,
|
||||
token,
|
||||
userSite,
|
||||
mainURL
|
||||
}
|
||||
53
api/login.js
Normal file
53
api/login.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "identity-service"
|
||||
const group_name = "oilUser"
|
||||
|
||||
export default {
|
||||
loginWeixin (code) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/loginWeixin`,
|
||||
method: 'post',
|
||||
data: {
|
||||
code
|
||||
}
|
||||
})
|
||||
},
|
||||
registerWeixin (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/registerWeixin`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
registerWeixinSMS (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/registerWeixinSMS`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
loginAppSendSms (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/loginAppSms`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 旧登录接口
|
||||
// loginWeiXinSMS (data) {
|
||||
// return request({
|
||||
// url: `/${service_name}/${group_name}/loginWeiXinSMS`,
|
||||
// method: 'post',
|
||||
// data:data
|
||||
// })
|
||||
// },
|
||||
loginWeiXinByPassword (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/loginWeiXinByPassword`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
}
|
||||
32
api/oil-finance.js
Normal file
32
api/oil-finance.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "oil-finance"
|
||||
const group_name = "oilOrderInfo"
|
||||
export default {
|
||||
checkOrderState(orderId){ //check 顺丰 订单状态
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/checkOrderState/${orderId}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
getOrderInfo(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getNewOrderInfo`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
report(data) {
|
||||
return request({
|
||||
url: `/${service_name}/oilBalanceReport/report`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
getByPage(data) {
|
||||
return request({
|
||||
url: `/${service_name}/oilBalanceReport/getByPage`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
}
|
||||
95
api/oil-identity.js
Normal file
95
api/oil-identity.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name ='oil-identity'
|
||||
const group_name ='weChatCloudAuthorization'
|
||||
const Customer_name = 'oilCustomerChannelRelation'
|
||||
const WchatLogin_name ='weChatCloudAuthorization'
|
||||
export default{
|
||||
// 新登录接口 手机密码登录
|
||||
loginByPhonePwd (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/loginByPhonePwd`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 获取用户信息
|
||||
sendCode(code){
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/sendCode`,
|
||||
method: 'post',
|
||||
data:{
|
||||
code:code,
|
||||
appId:'wxaf56b8bae925ba19'
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取验证码
|
||||
getVerifyCode(phone){
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getVerifyCode`,
|
||||
method: 'post',
|
||||
data: phone,
|
||||
})
|
||||
},
|
||||
// 验证码登录
|
||||
verifyCodeLogin(data){
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/verifyCodeLogin`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
//切换油站
|
||||
changeChannelLogin(data){
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/changeChannelLogin`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
//微信一键登录 new
|
||||
loginPersonal(data){
|
||||
return request({
|
||||
url: `/${service_name}/${WchatLogin_name}/loginPersonal`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
//首次登录绑定手机号 绑定微信手机号 new
|
||||
bindLoginByPhonePersonal(data){
|
||||
return request({
|
||||
url: `/${service_name}/${WchatLogin_name}/bindLoginByPhonePersonal`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
//首次登录绑定手机号 当用户拒绝获取微信手机号时走此接口,判断用户是否存在,不存在提示注册,存在就发送验证码登录 new
|
||||
bindWeChatSendVerifyCode(data){
|
||||
return request({
|
||||
url: `/${service_name}/${WchatLogin_name}/bindWeChatSendVerifyCode`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
// 首次登录绑定手机号 当用户拒绝获取微信手机号时走此接kou 手机号存在账户时,调用此接口登录 个人通道
|
||||
bindWeChatLoginByVerifyCodePersonal(){
|
||||
return request({
|
||||
url: `/${service_name}/${WchatLogin_name}/bindWeChatLoginByVerifyCodePersonal`,
|
||||
method: 'post',
|
||||
data:data,
|
||||
|
||||
})
|
||||
},
|
||||
bindLoginByPhone (data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/bindLoginByPhone`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
}
|
||||
163
api/oli-site.js
Normal file
163
api/oli-site.js
Normal file
@@ -0,0 +1,163 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "oil-site"
|
||||
const group_name = "oilCloudSite"
|
||||
const info_name = 'oilSiteAppInfo'
|
||||
const qr_name = 'qrCode'
|
||||
const pay_name = 'rrs'
|
||||
const order_name = 'oilSiteOrderInfo'
|
||||
export default{
|
||||
getOrderDiscountInfo(data){
|
||||
return request({
|
||||
url: `/${service_name}/${order_name}/getOrderDiscountInfo`,
|
||||
method:'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 二维码扫码下单
|
||||
verifyQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/verifyQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
plateNumberRecognition(data) { //车牌图文识别
|
||||
return request({
|
||||
url: `/${service_name}/oilSiteAppInfo/plateNumberRecognition`,
|
||||
method: 'post' ,
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 开放平台下单接口
|
||||
payOfQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/openPlatform/payOfQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 顺丰下单接口
|
||||
sfPay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/sf/createOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 顺丰下单接口
|
||||
FYPay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/fuYou/pay`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 则一下单接口
|
||||
zeyiPay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/zeyi/zeyiPay`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 星油下单接口
|
||||
xoilPay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/xoil/xoilPay`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取订单列表
|
||||
getNewItemSiteOrder(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getNewItemSiteOrder`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取用户基础信息
|
||||
getSiteBasicData(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getSiteBasicData/`+id,
|
||||
method: 'get'
|
||||
})
|
||||
},// 获取油站信息
|
||||
getSiteDetail(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getSiteDetail/`+id,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 获取昨日交易信息
|
||||
getYesterdayOrderInfo(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getYesterdayOrderInfo/`+id,
|
||||
method: 'get'
|
||||
})
|
||||
},// 获取昨日交易信息
|
||||
getOrderInfoByDay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getOrderInfoByDay`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},// 获取员工列表
|
||||
getAllStaffList(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getAllStaffList`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},// 获取角色列表
|
||||
getRoleList() {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getRoleList`,
|
||||
method: 'get'
|
||||
})
|
||||
},// 查询某月交易信息
|
||||
getOrderInfoByMonth(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getOrderInfoByMonth`,
|
||||
method: 'POST',
|
||||
data:data
|
||||
})
|
||||
},// 油站二维码
|
||||
getOilSiteCollectQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${qr_name}/getOilSiteCollectQrCode`,
|
||||
method: 'POST',
|
||||
data:data
|
||||
})
|
||||
},// 获取某日的交易信息
|
||||
getRefuelDataByDay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${info_name}/getRefuelDataByDay`,
|
||||
method: 'POST',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 日日顺支付
|
||||
RrsPay(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${pay_name}/pay`,
|
||||
method: 'POST',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//根据id回显促销编辑
|
||||
getPrice (id) {
|
||||
return request({
|
||||
url: `/${service_name}/oilSiteInfo/get/${id} `,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
//促销编辑
|
||||
update(data) {
|
||||
return request({
|
||||
url: `/${service_name}/oilSiteInfo/update`,
|
||||
method: 'POST',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
}
|
||||
97
api/oli-user.js
Normal file
97
api/oli-user.js
Normal file
@@ -0,0 +1,97 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name ='oil-user'
|
||||
const group_name ='oilCustomerChannelRelation'
|
||||
const change_phone ='sysCustomerInfo'
|
||||
export default{
|
||||
//根据用户手机查询油站
|
||||
getByPhone(phone){
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getByPhone/${phone}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
testButton(){
|
||||
return request({
|
||||
url: `/oil-finance/oilOrderInfo/aggregatePayNotify`,
|
||||
method: 'post',
|
||||
data:{
|
||||
otherOrderNumber: "XOILAWMP202111160013109293",
|
||||
receiptMessage: "123",
|
||||
receiptResult: 1,
|
||||
receiptTime: "2021-11-16 13:29:23"
|
||||
}
|
||||
})
|
||||
},
|
||||
//发送更换手机号验证码(旧手机号)
|
||||
sendOldPhoneSms(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/sendOldPhoneSms`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//验证旧手机号验证码(旧手机号)
|
||||
checkOldPhoneCode(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/checkOldPhoneCode`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//发送更换手机号验证码(新手机号)
|
||||
sendNewPhoneSms(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/sendNewPhoneSms`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//保存修改的手机号(新手机号)
|
||||
changeNewPhone(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/changeNewPhone`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//发送更换密码短信
|
||||
changePwdSms(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/changePwdSms`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//保存修改密码
|
||||
changePwd(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/changePwd`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//员工保存
|
||||
addNewStaff(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/addNewStaff`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
//员工保存
|
||||
removeStaff(data){
|
||||
return request({
|
||||
url: `/${service_name}/${change_phone}/removeStaff`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
},
|
||||
// 测试接口
|
||||
// oil-user/sysCustomerInfo/initCouldUser/{initCouldUser} GET
|
||||
initCouldUser(){
|
||||
return request({
|
||||
url: `/${service_name}/sysCustomerInfo/initCouldUser/initCouldUser`,
|
||||
method: 'GET'
|
||||
})
|
||||
},
|
||||
}
|
||||
35
api/partner.js
Normal file
35
api/partner.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import request from '@/utils/request'
|
||||
const service_name = "cloud-site-service"
|
||||
const group_name = "cloudSite"
|
||||
export default {
|
||||
// 获取企业列表
|
||||
companyJoinSite(oilSiteId) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/companyJoinSite/${oilSiteId}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 获取企业二维码
|
||||
getCompanyQrCode(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getCompanyQrCode`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
// 获取模拟司机的二维码
|
||||
getQrCode(id) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getQrCode/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
},
|
||||
// 根据车牌/手机号/司机Id获取加油司机信息
|
||||
getUserMegByCarNo(data) {
|
||||
return request({
|
||||
url: `/${service_name}/${group_name}/getUserMegByCarNo`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user