Merge branch 'master' of gitee.com:darlk/ShengTangManage into develop
This commit is contained in:
@ -1,11 +1,13 @@
|
||||
package com.stdiet.web.controller;
|
||||
|
||||
import com.stdiet.common.config.AliyunOSSConfig;
|
||||
import com.stdiet.common.core.domain.AjaxResult;
|
||||
import com.stdiet.common.core.domain.entity.SysUser;
|
||||
import com.stdiet.common.utils.StringUtils;
|
||||
import com.stdiet.common.utils.oss.AliyunOSSUtils;
|
||||
import com.stdiet.common.utils.poi.ExcelUtil;
|
||||
import com.stdiet.custom.domain.SysNutritionQuestion;
|
||||
import com.stdiet.custom.domain.SysNutritionalVideo;
|
||||
import com.stdiet.custom.domain.SysWxUserInfo;
|
||||
import com.stdiet.custom.domain.SysWxUserLog;
|
||||
import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper;
|
||||
@ -13,6 +15,7 @@ import com.stdiet.custom.mapper.SysNutritionQuestionMapper;
|
||||
import com.stdiet.custom.mapper.SysWxUserInfoMapper;
|
||||
import com.stdiet.custom.mapper.SysWxUserLogMapper;
|
||||
import com.stdiet.custom.service.ISysNutritionQuestionService;
|
||||
import com.stdiet.custom.service.ISysNutritionalVideoService;
|
||||
import com.stdiet.custom.service.ISysWxUserLogService;
|
||||
import com.stdiet.custom.utils.LuceneIndexUtils;
|
||||
import com.stdiet.framework.web.domain.server.Sys;
|
||||
@ -28,6 +31,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Order(value = 1)
|
||||
@ -42,6 +46,9 @@ public class MyApplicationRunner implements ApplicationRunner {
|
||||
@Autowired
|
||||
private ISysNutritionQuestionService sysNutritionQuestionService;
|
||||
|
||||
@Autowired
|
||||
private ISysNutritionalVideoService sysNutritionalVideoService;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@ -105,4 +112,19 @@ public class MyApplicationRunner implements ApplicationRunner {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void updateVideo(){
|
||||
Map<String, Object> map = sysNutritionalVideoService.searchVideo(null, null, 1,100, null);
|
||||
if(map != null){
|
||||
List<SysNutritionalVideo> list = (List<SysNutritionalVideo>)map.get("nutritionalVideoList");
|
||||
if(list != null && list.size() > 0){
|
||||
for (SysNutritionalVideo video : list) {
|
||||
sysNutritionalVideoService.insertSysNutritionalVideo(video);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -2,14 +2,20 @@ package com.stdiet.web.controller.custom;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import com.stdiet.common.utils.DateUtils;
|
||||
import com.stdiet.custom.domain.SysCommissionDayDetail;
|
||||
import com.stdiet.custom.domain.SysOrder;
|
||||
import com.stdiet.custom.domain.SysOrderCommisionDayDetail;
|
||||
import com.stdiet.custom.dto.request.SysOrderCommision;
|
||||
import com.stdiet.custom.service.ISysCommissionDayService;
|
||||
import com.stdiet.custom.service.ISysNutritionalVideoService;
|
||||
import com.stdiet.custom.service.ISysOrderService;
|
||||
import com.stdiet.custom.service.impl.SysCommissionDayServiceImpl;
|
||||
import com.stdiet.framework.web.domain.server.Sys;
|
||||
import com.stdiet.system.domain.CusSalesman;
|
||||
import com.stdiet.system.service.ISysUserService;
|
||||
@ -41,6 +47,7 @@ import com.stdiet.common.core.page.TableDataInfo;
|
||||
@RestController
|
||||
@RequestMapping("/custom/commision")
|
||||
public class SysCommisionController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private ISysCommisionService sysCommisionService;
|
||||
|
||||
@ -50,6 +57,9 @@ public class SysCommisionController extends BaseController {
|
||||
@Autowired
|
||||
private ISysCommissionDayService sysCommissionDayService;
|
||||
|
||||
@Autowired
|
||||
private ISysNutritionalVideoService sysNutritionalVideoService;
|
||||
|
||||
/**
|
||||
* 查询业务提成比例列表
|
||||
*/
|
||||
@ -158,6 +168,14 @@ public class SysCommisionController extends BaseController {
|
||||
@GetMapping("/detail")
|
||||
public TableDataInfo getDetail(SysCommision sysCommision) {
|
||||
startPage();
|
||||
if(sysCommision.getPostId() != null && sysCommision.getPostId().intValue() > 0){
|
||||
//查询售后所有ID
|
||||
SysCommision param = new SysCommision();
|
||||
param.setPostId(sysCommision.getPostId());
|
||||
List<Long> userIds = sysCommisionService.getAfterSaleId(param);
|
||||
sysCommision.setUserIds(userIds.size() == 0 ? null : userIds);
|
||||
sysCommision.setPostId(null);
|
||||
}
|
||||
List<SysCommision> list = sysCommisionService.selectSysCommisionDetail(sysCommision);
|
||||
for (SysCommision detail : list) {
|
||||
detail.setRate(0F);
|
||||
@ -165,22 +183,38 @@ public class SysCommisionController extends BaseController {
|
||||
tmpQueryCom.setUserId(detail.getUserId());
|
||||
tmpQueryCom.setPostId(detail.getPostId());
|
||||
List<SysCommision> tmpComList = sysCommisionService.selectSysCommisionList(tmpQueryCom);
|
||||
|
||||
//按比例开始时间分类
|
||||
Map<String, List<SysCommision>> rateYearMonthMap = sysCommissionDayService.getRateMapByStartTime(tmpComList);
|
||||
String yearMonth = DateUtils.stringToLocalDate(sysCommision.getBeginTime(),"yyyy-MM-dd").getYear() + "" + DateUtils.stringToLocalDate(sysCommision.getBeginTime(),"yyyy-MM-dd").getMonth().getValue();
|
||||
List<SysCommision> yearMonthRateList = new ArrayList<>();
|
||||
for (String rateMonth : rateYearMonthMap.keySet()) {
|
||||
if(Long.parseLong(yearMonth) >= Long.parseLong(rateMonth)){
|
||||
yearMonthRateList = rateYearMonthMap.get(rateMonth);
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
}
|
||||
float dAmount = detail.getAmount().floatValue();
|
||||
for (int i = 0; i < tmpComList.size(); i++) {
|
||||
SysCommision com = tmpComList.get(i);
|
||||
for (int i = 0; i < yearMonthRateList.size(); i++) {
|
||||
SysCommision com = yearMonthRateList.get(i);
|
||||
float cAmount = com.getAmount().floatValue();
|
||||
if (dAmount <= cAmount && i == 0) {
|
||||
Long rateStartYearMonth = null;
|
||||
if(com.getStartTime() != null){
|
||||
rateStartYearMonth = Long.parseLong(DateUtils.dateToLocalDate(com.getStartTime()).getYear() + "" + DateUtils.dateToLocalDate(com.getStartTime()).getMonth().getValue());
|
||||
}else{
|
||||
rateStartYearMonth = 19001L;
|
||||
}
|
||||
if (dAmount <= cAmount && i == 0 && Long.parseLong(yearMonth) >= rateStartYearMonth) {
|
||||
// 第一条规则
|
||||
detail.setRate(com.getRate());
|
||||
break;
|
||||
} else if (i == tmpComList.size() - 1 && dAmount > cAmount) {
|
||||
} else if (i == yearMonthRateList.size() - 1 && dAmount > cAmount && Long.parseLong(yearMonth) >= rateStartYearMonth) {
|
||||
// 最后一条规则
|
||||
detail.setRate(com.getRate());
|
||||
break;
|
||||
} else if (cAmount < dAmount && dAmount <= tmpComList.get(i + 1).getAmount().floatValue()) {
|
||||
} else if (cAmount < dAmount && dAmount <= yearMonthRateList.get(i + 1).getAmount().floatValue() && Long.parseLong(yearMonth) >= rateStartYearMonth) {
|
||||
// 中间规则
|
||||
detail.setRate(tmpComList.get(i + 1).getRate());
|
||||
detail.setRate(yearMonthRateList.get(i + 1).getRate());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -188,6 +222,7 @@ public class SysCommisionController extends BaseController {
|
||||
float amount = detail.getAmount().floatValue();
|
||||
amount = amount * detail.getRate() / 100F;
|
||||
detail.setCommision(new BigDecimal(amount));
|
||||
|
||||
}
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public class SysFileUploadController extends BaseController {
|
||||
* 上传文件到OSS返回URL
|
||||
*/
|
||||
@PostMapping(value = "/{prefix}")
|
||||
@PreAuthorize("@ss.hasPermi('custom:file:upload')")
|
||||
//@PreAuthorize("@ss.hasPermi('custom:file:upload')")
|
||||
public AjaxResult uploadCseFile(MultipartFile file, @PathVariable String prefix) throws Exception {
|
||||
|
||||
try {
|
||||
|
@ -4,8 +4,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.aliyun.vod20170321.models.CreateUploadVideoResponse;
|
||||
import com.aliyun.vod20170321.models.GetVideoListResponseBody;
|
||||
import com.stdiet.common.core.page.TableDataInfo;
|
||||
import com.stdiet.common.utils.AliyunVideoUtils;
|
||||
import com.stdiet.common.utils.StringUtils;
|
||||
import com.stdiet.common.utils.oss.AliyunOSSUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -34,32 +36,18 @@ public class SysNutritionalVideoController extends BaseController
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:nutritionalVideo:list')")
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(SysNutritionalVideo sysNutritionalVideo, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "5")int pageSize)
|
||||
public TableDataInfo list(SysNutritionalVideo sysNutritionalVideo)
|
||||
{
|
||||
AjaxResult result = AjaxResult.success();
|
||||
int total = 0;
|
||||
List<SysNutritionalVideo> nutritionalVideoList = new ArrayList<>();
|
||||
try{
|
||||
GetVideoListResponseBody videoListResponseBody = AliyunVideoUtils.getVideoListByPage(null, "Normal,Blocked", pageNum, pageSize);
|
||||
if(videoListResponseBody != null){
|
||||
total = videoListResponseBody.total;
|
||||
for (GetVideoListResponseBody.GetVideoListResponseBodyVideoListVideo video : videoListResponseBody.videoList.video) {
|
||||
SysNutritionalVideo nutritionalVideo = new SysNutritionalVideo();
|
||||
nutritionalVideo.setCoverUrl(video.getCoverURL());
|
||||
nutritionalVideo.setTitle(video.getTitle());
|
||||
nutritionalVideo.setVideoId(video.getVideoId());
|
||||
nutritionalVideo.setDescription(video.getDescription());
|
||||
nutritionalVideo.setTags(video.getTags());
|
||||
nutritionalVideoList.add(nutritionalVideo);
|
||||
nutritionalVideo.setShowFlag("Normal".equals(video.getStatus()) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
/*AjaxResult result = AjaxResult.success();
|
||||
Map<String, Object> map = sysNutritionalVideoService.searchVideo(sysNutritionalVideo.getKey(), sysNutritionalVideo.getShowFlag(), pageNum, pageSize, null);
|
||||
if(map != null){
|
||||
result.put("total", map.get("total"));
|
||||
result.put("rows", map.get("nutritionalVideoList"));
|
||||
}
|
||||
result.put("total",total);
|
||||
result.put("rows", nutritionalVideoList);
|
||||
return result;
|
||||
return result;*/
|
||||
startPage();
|
||||
List<SysNutritionalVideo> list = sysNutritionalVideoService.selectSysNutritionalVideoList(sysNutritionalVideo, true);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,7 +57,11 @@ public class SysNutritionalVideoController extends BaseController
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(sysNutritionalVideoService.selectSysNutritionalVideoById(id));
|
||||
SysNutritionalVideo sysNutritionalVideos = sysNutritionalVideoService.selectSysNutritionalVideoById(id);
|
||||
if(sysNutritionalVideos != null && StringUtils.isNotEmpty(sysNutritionalVideos.getCoverUrl())){
|
||||
sysNutritionalVideos.setPreviewUrl(AliyunOSSUtils.generatePresignedUrl(sysNutritionalVideos.getCoverUrl()));
|
||||
}
|
||||
return AjaxResult.success(sysNutritionalVideos);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,6 +72,7 @@ public class SysNutritionalVideoController extends BaseController
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody SysNutritionalVideo sysNutritionalVideo)
|
||||
{
|
||||
sysNutritionalVideo.setShowFlag(1);
|
||||
return toAjax(sysNutritionalVideoService.insertSysNutritionalVideo(sysNutritionalVideo));
|
||||
}
|
||||
|
||||
@ -93,7 +86,7 @@ public class SysNutritionalVideoController extends BaseController
|
||||
{
|
||||
AjaxResult result = AjaxResult.error();
|
||||
try {
|
||||
CreateUploadVideoResponse response = AliyunVideoUtils.createUploadVideoRequest(sysNutritionalVideo.getCateId(), sysNutritionalVideo.getFileName(), sysNutritionalVideo.getTitle(), sysNutritionalVideo.getCoverUrl(), sysNutritionalVideo.getTags(), sysNutritionalVideo.getDescription());
|
||||
CreateUploadVideoResponse response = AliyunVideoUtils.createUploadVideoRequest(null, sysNutritionalVideo.getFileName(), sysNutritionalVideo.getTitle(), null, sysNutritionalVideo.getTags(), sysNutritionalVideo.getDescription());
|
||||
if(response != null){
|
||||
result = AjaxResult.success();
|
||||
result.put("uploadAuth", response.body);
|
||||
@ -125,4 +118,20 @@ public class SysNutritionalVideoController extends BaseController
|
||||
{
|
||||
return toAjax(sysNutritionalVideoService.deleteSysNutritionalVideoByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改营养小知识是否微信展示状态
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:nutritionalVideo:edit')")
|
||||
@Log(title = "微信展示状态修改", businessType = BusinessType.UPDATE)
|
||||
@GetMapping("/updateWxShow")
|
||||
public AjaxResult updateWxShow(@RequestParam("id")String id, @RequestParam("showFlag")Integer showFlag)
|
||||
{
|
||||
if(StringUtils.isEmpty(id) || showFlag == null){
|
||||
return AjaxResult.error();
|
||||
}
|
||||
Long[] ids = {Long.parseLong(id)};
|
||||
return toAjax(sysNutritionalVideoService.updateWxshowByIds(showFlag, ids));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
package com.stdiet.web.controller.custom;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.stdiet.common.annotation.Log;
|
||||
import com.stdiet.common.core.controller.BaseController;
|
||||
import com.stdiet.common.core.domain.AjaxResult;
|
||||
import com.stdiet.common.enums.BusinessType;
|
||||
import com.stdiet.custom.domain.SysVideoClassify;
|
||||
import com.stdiet.custom.service.ISysVideoClassifyService;
|
||||
import com.stdiet.common.utils.poi.ExcelUtil;
|
||||
import com.stdiet.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 视频分类Controller
|
||||
*
|
||||
* @author xzj
|
||||
* @date 2021-05-05
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/custom/videoClassify")
|
||||
public class SysVideoClassifyController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private ISysVideoClassifyService sysVideoClassifyService;
|
||||
|
||||
/**
|
||||
* 查询视频分类列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(SysVideoClassify sysVideoClassify)
|
||||
{
|
||||
startPage();
|
||||
List<SysVideoClassify> list = sysVideoClassifyService.selectSysVideoClassifyList(sysVideoClassify);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出视频分类列表
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:export')")
|
||||
@Log(title = "视频分类", businessType = BusinessType.EXPORT)
|
||||
@GetMapping("/export")
|
||||
public AjaxResult export(SysVideoClassify sysVideoClassify)
|
||||
{
|
||||
List<SysVideoClassify> list = sysVideoClassifyService.selectSysVideoClassifyList(sysVideoClassify);
|
||||
ExcelUtil<SysVideoClassify> util = new ExcelUtil<SysVideoClassify>(SysVideoClassify.class);
|
||||
return util.exportExcel(list, "videoClassify");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取视频分类详细信息
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:query')")
|
||||
@GetMapping(value = "/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||
{
|
||||
return AjaxResult.success(sysVideoClassifyService.selectSysVideoClassifyById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增视频分类
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:add')")
|
||||
@Log(title = "视频分类", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody SysVideoClassify sysVideoClassify)
|
||||
{
|
||||
return toAjax(sysVideoClassifyService.insertSysVideoClassify(sysVideoClassify));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改视频分类
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:edit')")
|
||||
@Log(title = "视频分类", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody SysVideoClassify sysVideoClassify)
|
||||
{
|
||||
return toAjax(sysVideoClassifyService.updateSysVideoClassify(sysVideoClassify));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除视频分类
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('custom:videoClassify:remove')")
|
||||
@Log(title = "视频分类", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids)
|
||||
{
|
||||
return toAjax(sysVideoClassifyService.deleteSysVideoClassifyByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询视频分类列表
|
||||
*/
|
||||
@GetMapping("/getAllClassify")
|
||||
public AjaxResult getAllClassify()
|
||||
{
|
||||
List<SysVideoClassify> list = sysVideoClassifyService.getAllClassify();
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
}
|
@ -360,30 +360,16 @@ public class WechatAppletController extends BaseController {
|
||||
* 获取视频列表
|
||||
*/
|
||||
@GetMapping(value = "/getVideoList")
|
||||
public AjaxResult getVideoList(SysNutritionalVideo sysNutritionalVideo, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "5") int pageSize) {
|
||||
AjaxResult result = AjaxResult.success();
|
||||
int total = 0;
|
||||
List<NutritionalVideoResponse> nutritionalVideoList = new ArrayList<>();
|
||||
try {
|
||||
GetVideoListResponseBody videoListResponseBody = AliyunVideoUtils.getVideoListByPage(null, "Normal", pageNum, pageSize);
|
||||
if (videoListResponseBody != null) {
|
||||
total = videoListResponseBody.total;
|
||||
for (GetVideoListResponseBody.GetVideoListResponseBodyVideoListVideo video : videoListResponseBody.videoList.video) {
|
||||
NutritionalVideoResponse nutritionalVideoResponse = new NutritionalVideoResponse();
|
||||
nutritionalVideoResponse.setCoverUrl(video.getCoverURL());
|
||||
nutritionalVideoResponse.setTitle(video.getTitle());
|
||||
nutritionalVideoResponse.setVideoId(video.getVideoId());
|
||||
nutritionalVideoResponse.setDescription(video.getDescription());
|
||||
nutritionalVideoResponse.setTags(video.getTags());
|
||||
nutritionalVideoList.add(nutritionalVideoResponse);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
result.put("total", total);
|
||||
result.put("rows", nutritionalVideoList);
|
||||
return result;
|
||||
public TableDataInfo getVideoList(SysNutritionalVideo sysNutritionalVideo) {
|
||||
/* AjaxResult result = AjaxResult.success();
|
||||
Map<String, Object> map = sysNutritionalVideoService.searchVideo(sysNutritionalVideo.getKey(), 1, pageNum, pageSize, null);
|
||||
result.put("total", map.get("total"));
|
||||
result.put("rows", map.get("nutritionalVideoList"));
|
||||
return result;*/
|
||||
startPage();
|
||||
sysNutritionalVideo.setShowFlag(1);
|
||||
List<SysNutritionalVideo> list = sysNutritionalVideoService.selectSysNutritionalVideoList(sysNutritionalVideo, true);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user