ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/entity/message/Message.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java
New file @@ -0,0 +1,55 @@ package com.ycl.common.util; import java.util.Random; public class RandomNumberGenerator { /** * 这是典型的随机洗牌算法。 * 流程是从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域) * 算法时间复杂度O(n) * @return 随机8为不重复数组 */ public static synchronized String generateNumber(int count) { String no=""; //初始化备选数组 int[] defaultNums = new int[10]; for (int i = 0; i < defaultNums.length; i++) { defaultNums[i] = i; } Random random = new Random(); int[] nums = new int[count]; //默认数组中可以选择的部分长度 int canBeUsed = 10; //填充目标数组 for (int i = 0; i < nums.length; i++) { //将随机选取的数字存入目标数组 int index = random.nextInt(canBeUsed); nums[i] = defaultNums[index]; //将已用过的数字扔到备选数组最后,并减小可选区域 swap(index, canBeUsed - 1, defaultNums); canBeUsed--; } if (nums.length>0) { for (int i = 0; i < nums.length; i++) { no+=nums[i]; } } return no; } // private static final int LENGTH = 6; private static void swap(int i, int j, int[] nums) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println(generateNumber(8)); } } } ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java
New file @@ -0,0 +1,31 @@ package com.ycl.common.util; import java.util.Random; public class RandomStringUtil { public static final String NUMBERS = "0123456789"; public static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz"; public static final String CAPITAL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String ALL = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; /** * 生成指定长度的随机字符串 * * @param length * @return */ public static String getRandomString(int length, String base) { // length表示生成字符串的长度 int baseLength = base.length(); Random random = new Random(); StringBuffer sb = new StringBuffer(""); for (int i = 0; i < length; i++) { int number = random.nextInt(baseLength); sb.append(base.charAt(number)); } return sb.toString(); } public static void main(String[] args) { System.out.println(getRandomString(24, RandomStringUtil.ALL)); } } ycl-platform/src/main/java/com/ycl/controller/message/MessageController.java
@@ -22,7 +22,7 @@ */ @RestController @RequestMapping("/message") @Api(tags = "消息") @Api(tags = "消息管理") public class MessageController { @Autowired ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java
@@ -4,7 +4,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** @@ -22,14 +21,14 @@ * 标题 */ @ApiModelProperty(value = "标题") @NotBlank(message = "标题为空") @NotNull(message = "标题为空") private String head; /** * 消息类型 */ @ApiModelProperty(value = "消息类型") @NotBlank(message = "消息类型为空") private Long messageType; @NotNull(message = "消息类型为空") private Integer messageType; /** * 消息体 */ @@ -46,7 +45,7 @@ * 接收者 */ @ApiModelProperty(value = "接收者") @NotBlank(message = "接收者为空") @NotNull(message = "接收者为空") private String targetTo; /** * 随机码 @@ -57,7 +56,7 @@ * 发送时间 */ @ApiModelProperty(value = "发送时间") @NotBlank(message = "发送时间为空") @NotNull(message = "发送时间为空") private String sendTime; /** * 状态0-未发布1-已发布 ycl-platform/src/main/java/com/ycl/entity/message/Message.java
@@ -51,7 +51,7 @@ @TableField("message_type") @ApiModelProperty(value = "消息类型") @NotBlank(message = "消息类型为空") private Long messageType; private Integer messageType; /** * 消息体 @@ -113,7 +113,7 @@ * 是否查看0-未查看1-已查看 */ @TableField("is_view") @ApiModelProperty(value = "状态0-未发布1-已发布") @ApiModelProperty(value = "是否查看0-未查看1-已查看") private Integer isView; /** * 备注 ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java
@@ -1,6 +1,7 @@ package com.ycl.service.message.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.util.RandomNumberGenerator; import com.ycl.dto.message.MessageParam; import com.ycl.entity.message.Message; import com.ycl.mapper.message.MessageMapper; @@ -24,9 +25,15 @@ public Message sendMessage(MessageParam mssageParam) { Message message = new Message(); BeanUtils.copyProperties(mssageParam, message); //生成8位随机数消息编码 String messageNumber = RandomNumberGenerator.generateNumber(8); StringBuilder sb = new StringBuilder("XX"); sb.append(messageNumber); message.setMessageNumber(sb.toString()); //生成默认参数 message.setCreateTime(new Date()); message.setUpdateTime(new Date()); message.setIsView(0); baseMapper.insert(message); return message; }