环境:ide+maven3+mysql5.7+mybatis3+spring4+springmvc
控制层:
@CrossOrigin
@RestController
@RequestMapping("/mip/crowdmanager")
public class OwnCrowdController extends BaseController {
//log日志
private static final Logger LOGGER = LoggerFactory.getLogger(OwnCrowdController.class);
@Autowired
private OwnCrowdService ownCrowdService;
/**
* 新建自有人群
* @param brandCode
* @param audienceName
* @param equipmentType:自有人群管理设备类型:1手机号码表; 2手机号MD5;3会员编码;4imei原始值;5IDFA原始值;6imei MD5;7IDFA MD5
* @param file
* @param request
* @return
*/
@PostMapping("/createOwnCrowd")
public ResponseEntity<BaseResponse> createOwnCrowd(
@Validated
@NotNull(message = "%custom%品牌编码不可为空")
@RequestParam(value = "brandCode")
String brandCode,
@Validated
@NotNull(message = "%custom%人群包名称不可为空")
@Pattern(regexp = "[\u4e00-\u9fa5_a-zA-Z0-9-_]+?", message = "%custom%人群包名称只能包含数字,字母,中文,特殊字符仅允许:-_")
@RequestParam(value = "audienceName")
String audienceName,
@Validated
@NotNull(message = "%custom%设备类型不可为空")
@RequestParam(value = "equipmentType")
Integer equipmentType,
@Validated
@NotNull(message = "%custom%上传文件不可为空")
@RequestParam(value = "file", required = true)
MultipartFile file, HttpServletRequest request) {
assertBrandCode(brandCode, request);
//校验人群包名称是否重复
Integer count = ownCrowdService.checkAudienceName(brandCode, audienceName);
if (count > 0) {
throw new FieldInvalidException("createOwnCrowd", "同一品牌下人群包名称不允许重复!");
}
// 上传文件校验
if (file == null || file.getSize() == 0) {
LOGGER.info("upload file is empty");
throw new FieldInvalidException("uploadOwnCrowd", "上传文件不得为空!");
}
// 非txt文件
if (!StringUtils.isBlank(file.getOriginalFilename()) && !".txt"
.equals(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf('.')))) {
LOGGER.info("upload file is not txt");
throw new FieldInvalidException("uploadOwnCrowd", "上传的文件必须是txt文件!");
}
// 过大
if (file.getSize() > 30 * 1024 * 1024) {
LOGGER.info("upload file size max 30M");
throw new FieldInvalidException("uploadOwnCrowd", "上传文件不得大于30M!");
}
try {
FileResultVo fileResultVo = ownCrowdService.createOwnCrowd(brandCode, audienceName, equipmentType, file);
String msg = fileResultVo.getCheckMessage();
Object data = fileResultVo.getCheckResult();
if (Objects.equals(SNConstant.CODE_SUCCESS, fileResultVo.getCheckCode())) {
return ResponseEntity.ok(BaseResponse.success().setResult(data));
} else {
return ResponseEntity.ok(new BaseResponse(msg).setResult(data));
}
} catch (Exception e) {
LOGGER.info("新建自有人群异常,exception:{}", e);
return ResponseEntity.ok(new BaseResponse("新建自有人群失败").setResult(null));
}
}
}
业务层:
@Service
public class OwnCrowdServiceImpl implements OwnCrowdService {
//log日志
private static final Logger LOGGER = LoggerFactory.getLogger(OwnCrowdServiceImpl.class);
@Autowired
priva