From c96fbe6b0aeb413a17c429133ee6d81d138144b9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 09 六月 2026 10:58:52 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 50 insertions(+), 10 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
index d394562..2b77da3 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -7,16 +7,27 @@
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.io.resource.ClassPathResource;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.xiaopeng.api.dto.account.UcUserInfo;
+import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
+import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.model.operation.XpInvitationCode;
import com.xiaopeng.api.model.operation.XpWhitelist;
+import com.xiaopeng.api.vo.account.LoginUser;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.DateUtils;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.log.annotation.AdminOperationLog;
+import com.xiaopeng.common.log.enums.AdminBusinessType;
+import com.xiaopeng.common.log.enums.AdminOperationType;
+import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.operation.constant.I18nKeyConstant;
import com.xiaopeng.operation.dto.InvitationAddDto;
import com.xiaopeng.operation.exportExcle.XpInvitationCodeExportExcel;
@@ -29,6 +40,7 @@
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.transaction.annotation.Transactional;
@@ -71,16 +83,27 @@
private IXpWhitelistService xpWhitelistService;
@Resource
private MessageSource messageSource;
+ @Resource
+ private SysGroupMenuClient groupMenuClient;
+ @Resource
+ private TokenService tokenService;
+ @Autowired
+ private UserResourcesClient userResourcesClient;
private static final Pattern CHINESE_PATTERN = Pattern.compile("\\p{IsHan}");
private static final long INVITATION_CODE_LIMIT = 500L;
- @ApiOperation(value = "邀请码管理分页列表",response = XpInvitationCode.class)
+ @ApiOperation(value = "邀请码管理分页列表", response = XpInvitationCode.class)
@PostMapping("/api/v1/invitation/pageList")
public R<PageInfo<XpInvitationCode>> pageList(@RequestBody InvitationPageListQuery query) {
+ LoginUser loginUser = tokenService.getLoginUser();
PageInfo<XpInvitationCode> pageList = xpInvitationCodeService.pageList(query);
+ if(!loginUser.getPhoneDesensitizationExempt()){
+ pageList.getRecords().forEach(s -> s.setBindAccount(DesensitizedUtil.mobilePhone(s.getBindAccount())));
+ }
return R.ok(pageList);
}
+
/**
* 生成邀请码
*/
@@ -108,6 +131,7 @@
}
return xpInvitationCodeService.add(dto.getPhones());
}
+
/**
* 解绑
*/
@@ -125,12 +149,13 @@
)
public R unbind(@RequestParam("id") Long id){
UpdateWrapper<XpInvitationCode> xpInvitationCodeUpdateWrapper = new UpdateWrapper<>();
- xpInvitationCodeUpdateWrapper.eq("id",id);
- xpInvitationCodeUpdateWrapper.set("status",3);
+ xpInvitationCodeUpdateWrapper.eq("id", id);
+ xpInvitationCodeUpdateWrapper.set("status", 3);
xpInvitationCodeUpdateWrapper.set("bind_account", null);
xpInvitationCodeService.update(xpInvitationCodeUpdateWrapper);
return R.ok();
}
+
@ApiOperation(value = "邀请码导入模板下载")
@GetMapping("/api/v1/invitation/import-template")
public void importTemplate() {
@@ -162,6 +187,7 @@
}
}
}
+
@ApiOperation(value = "邀请码导入")
@PostMapping("/base/v1/invitation/importExcel")
@AdminOperationLog(
@@ -269,7 +295,7 @@
}
if (!errors.isEmpty()) {
- return R.fail(messageSource.getMessage(I18nKeyConstant.INVITATION_IMPORT_VALIDATE_FAIL, new Object[]{String.join("\n", errors)},I18nKeyConstant.INVITATION_IMPORT_VALIDATE_FAIL, LocaleContextHolder.getLocale()));
+ return R.fail(messageSource.getMessage(I18nKeyConstant.INVITATION_IMPORT_VALIDATE_FAIL, new Object[]{String.join("\n", errors)}, I18nKeyConstant.INVITATION_IMPORT_VALIDATE_FAIL, LocaleContextHolder.getLocale()));
}
List<XpInvitationCode> addList = new ArrayList<>();
@@ -280,16 +306,19 @@
XpInvitationCode xpInvitationCode = new XpInvitationCode();
xpInvitationCode.setInvitationCode(locationExcel.getInvitationCode());
xpInvitationCode.setBindAccount(locationExcel.getBindAccount());
- if (StringUtils.hasLength(locationExcel.getBindTime())){
+ if (StringUtils.hasLength(locationExcel.getBindTime())) {
String replace = locationExcel.getBindTime().replace(".", "-");
String res = replace.replace("/", "-");
locationExcel.setBindTime(res);
}
-
- xpInvitationCode.setBindTime(DateUtils.stringToLocalDateTime(locationExcel.getBindTime()));
- xpInvitationCode.setStatus(2);
+ UcUserInfo userByMobile = userResourcesClient.getUserByMobile(locationExcel.getBindAccount());
+ if(null == userByMobile || StringUtils.isEmpty(userByMobile.getUid())){
+ throw new ServiceException("手机号"+locationExcel.getBindAccount()+"查询用户失败");
+ }
XpWhitelist xpWhitelist = new XpWhitelist();
- xpWhitelist.setAccount(locationExcel.getBindAccount());
+ xpWhitelist.setAccount(SensitiveDataCryptoUtil.encrypt(locationExcel.getBindAccount()));
+ xpWhitelist.setNickName(userByMobile.getNickName());
+ xpWhitelist.setAppUserId(userByMobile.getUid());
xpWhitelist.setStatus(true);
xpWhitelist.setIsPriorityDispatch(false);
xpWhitelist.setWhitelistSource(2);
@@ -315,6 +344,7 @@
}
return CHINESE_PATTERN.matcher(value).find();
}
+
@ApiOperation(value = "邀请码导出")
@PostMapping(value = "/api/v1/invitation/exportExcel")
@AdminOperationLog(
@@ -360,6 +390,7 @@
}
}
+
/**
* 批量删除
*/
@@ -375,13 +406,22 @@
public R deleteByIds(String ids){
// 再转化为Long类型
List<Long> longs = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
+ List<XpInvitationCode> xpInvitationCodes = xpInvitationCodeService.listByIds(longs);
+ for (XpInvitationCode xpInvitationCode : xpInvitationCodes) {
+ XpWhitelist one = xpWhitelistService.getOne(new QueryWrapper<XpWhitelist>().eq("whitelist_source", 2)
+ .eq("status", 1).eq("is_deleted", 0)
+ .eq("account", SensitiveDataCryptoUtil.encrypt(xpInvitationCode.getBindAccount())).last(" limit 1"));
+ if(null != one){
+ xpWhitelistService.removeById(one);
+ }
+ }
xpInvitationCodeService.removeBatchByIds(longs);
return R.ok();
}
@ApiOperation(value = "校验生成邀请码的手机号是否合法")
@GetMapping("/api/v1/invitation/validateCode")
- public R<List<String>> validateCode(@RequestParam String phone){
+ public R<List<String>> validateCode(@RequestParam String phone) {
List<String> phoneList = Arrays.asList(phone.split(","));
List<String> existPhones = phoneList.stream().filter(item -> xpInvitationCodeService.lambdaQuery()
.in(XpInvitationCode::getBindAccount, item)
--
Gitblit v1.7.1