| | |
| | | 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.update.UpdateWrapper; |
| | | import com.xiaopeng.api.feignClient.account.SysGroupMenuClient; |
| | | 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.WebUtils; |
| | | import com.xiaopeng.common.core.web.page.PageInfo; |
| | | 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; |
| | |
| | | private IXpWhitelistService xpWhitelistService; |
| | | @Resource |
| | | private MessageSource messageSource; |
| | | @Resource |
| | | private SysGroupMenuClient groupMenuClient; |
| | | @Resource |
| | | private TokenService tokenService; |
| | | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 生成邀请码 |
| | | */ |
| | | @PostMapping("/api/v1/invitation/add") |
| | | @ResponseBody |
| | | @ApiOperation(value = "生成邀请码") |
| | | public R add(@RequestBody InvitationAddDto dto){ |
| | | public R add(@RequestBody InvitationAddDto dto) { |
| | | long existing = xpInvitationCodeService.count(); |
| | | long incoming = Arrays.stream(Optional.ofNullable(dto.getPhones()).orElse("").split(",")) |
| | | .map(String::trim) |
| | |
| | | } |
| | | return xpInvitationCodeService.add(dto.getPhones()); |
| | | } |
| | | |
| | | /** |
| | | * 解绑 |
| | | */ |
| | |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "id", name = "id", dataType = "Long", required = true) |
| | | }) |
| | | public R unbind(@RequestParam("id") Long id){ |
| | | 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() { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @ApiOperation(value = "邀请码导入") |
| | | @PostMapping("/base/v1/invitation/importExcel") |
| | | public R<String> importExcel(@RequestParam("file") MultipartFile file) { |
| | |
| | | } |
| | | |
| | | 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<>(); |
| | |
| | | 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); |
| | |
| | | } |
| | | return CHINESE_PATTERN.matcher(value).find(); |
| | | } |
| | | |
| | | @ApiOperation(value = "邀请码导出") |
| | | @PostMapping(value = "/api/v1/invitation/exportExcel") |
| | | public void exportExcel(@RequestBody InvitationPageListQuery query) { |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 批量删除 |
| | | */ |
| | | @GetMapping("/api/v1/invitation/deleteByIds") |
| | | @ResponseBody |
| | | @ApiOperation(value = "批量删除") |
| | | public R deleteByIds(String ids){ |
| | | public R deleteByIds(String ids) { |
| | | // 再转化为Long类型 |
| | | List<Long> longs = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList()); |
| | | xpInvitationCodeService.removeBatchByIds(longs); |
| | |
| | | |
| | | @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) |