Browse Source

修改登陆验证码。

master
刘忱 2 years ago
parent
commit
f6fad0a763
  1. 7
      win-dependencies/pom.xml
  2. 4
      win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java
  3. 367
      win-module-wms/win-module-wms-biz/src/test/java/com/win/module/wms/service/itembasic/ItembasicServiceImplTest.java
  4. 12
      win-server/src/main/resources/application.yaml

7
win-dependencies/pom.xml

@ -72,6 +72,7 @@
<jimureport.version>1.6.1</jimureport.version>
<xercesImpl.version>2.12.2</xercesImpl.version>
<kaptcha.version>2.3.3</kaptcha.version>
<magic-api.version>2.1.1</magic-api.version>
</properties>
<dependencyManagement>
@ -629,6 +630,12 @@
<artifactId>spring-boot-starter-websocket</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<!-- magic-api -->
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-spring-boot-starter</artifactId>
<version>${magic-api.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

4
win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/captcha/CaptchaController.java

@ -10,6 +10,7 @@ import com.win.framework.redis.util.RedisCache;
import com.win.module.system.enums.ErrorCodeConstants;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@ -29,7 +30,8 @@ import static com.win.framework.common.pojo.CommonResult.success;
*
* @author win
*/
@RestController
@RestController("adminCaptchaController")
@RequestMapping("/system/captcha")
public class CaptchaController {
@Resource(name = "captchaProducer")
private Producer captchaProducer;

367
win-module-wms/win-module-wms-biz/src/test/java/com/win/module/wms/service/itembasic/ItembasicServiceImplTest.java

@ -1,367 +0,0 @@
package com.win.module.wms.service.itembasic;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
import com.win.framework.test.core.ut.BaseDbUnitTest;
import com.win.module.wms.controller.admin.itembasic.vo.*;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.mysql.itembasic.ItembasicMapper;
import com.win.framework.common.pojo.PageResult;
import javax.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static com.win.framework.test.core.util.AssertUtils.*;
import static com.win.framework.test.core.util.RandomUtils.*;
import static com.win.framework.common.util.date.LocalDateTimeUtils.*;
import static com.win.framework.common.util.object.ObjectUtils.*;
import static com.win.framework.common.util.date.DateUtils.*;
import static com.win.module.wms.enums.itembasic.ErrorCodeConstants.ITEMBASIC_NOT_EXISTS;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
* {@link ItembasicServiceImpl} 的单元测试类
*
* @author 超级管理员
*/
@Import(ItembasicServiceImpl.class)
public class ItembasicServiceImplTest extends BaseDbUnitTest {
@Resource
private ItembasicServiceImpl itembasicService;
@Resource
private ItembasicMapper itembasicMapper;
@Test
public void testCreateItembasic_success() {
// 准备参数
ItembasicCreateReqVO reqVO = randomPojo(ItembasicCreateReqVO.class);
// 调用
Long itembasicId = itembasicService.createItembasic(reqVO);
// 断言
assertNotNull(itembasicId);
// 校验记录的属性是否正确
ItembasicDO itembasic = itembasicMapper.selectById(itembasicId);
assertPojoEquals(reqVO, itembasic);
}
@Test
public void testUpdateItembasic_success() {
// mock 数据
ItembasicDO dbItembasic = randomPojo(ItembasicDO.class);
itembasicMapper.insert(dbItembasic);// @Sql: 先插入出一条存在的数据
// 准备参数
ItembasicUpdateReqVO reqVO = randomPojo(ItembasicUpdateReqVO.class, o -> {
o.setId(dbItembasic.getId()); // 设置更新的 ID
});
// 调用
itembasicService.updateItembasic(reqVO);
// 校验是否更新正确
ItembasicDO itembasic = itembasicMapper.selectById(reqVO.getId()); // 获取最新的
assertPojoEquals(reqVO, itembasic);
}
@Test
public void testUpdateItembasic_notExists() {
// 准备参数
ItembasicUpdateReqVO reqVO = randomPojo(ItembasicUpdateReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> itembasicService.updateItembasic(reqVO), ITEMBASIC_NOT_EXISTS);
}
@Test
public void testDeleteItembasic_success() {
// mock 数据
ItembasicDO dbItembasic = randomPojo(ItembasicDO.class);
itembasicMapper.insert(dbItembasic);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbItembasic.getId();
// 调用
itembasicService.deleteItembasic(id);
// 校验数据不存在了
assertNull(itembasicMapper.selectById(id));
}
@Test
public void testDeleteItembasic_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> itembasicService.deleteItembasic(id), ITEMBASIC_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetItembasicPage() {
// mock 数据
ItembasicDO dbItembasic = randomPojo(ItembasicDO.class, o -> { // 等会查询到
o.setCode(null);
o.setName(null);
o.setDesc1(null);
o.setDesc2(null);
o.setStatus(null);
o.setUom(null);
o.setAltUom(null);
o.setIsStdPack(null);
o.setEnableBuy(null);
o.setEnableMake(null);
o.setEnableOutsourcing(null);
o.setIsRecycled(null);
o.setIsPhantom(null);
o.setAbcClass(null);
o.setType(null);
o.setCategory(null);
o.setItemGroup(null);
o.setColor(null);
o.setConfiguration(null);
o.setProject(null);
o.setEqLevel(null);
o.setValidityDays(null);
o.setAvailable(null);
o.setActiveTime(null);
o.setExpireTime(null);
o.setRemark(null);
o.setCreateTime(null);
o.setCreator(null);
});
itembasicMapper.insert(dbItembasic);
// 测试 code 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCode(null)));
// 测试 name 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setName(null)));
// 测试 desc1 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setDesc1(null)));
// 测试 desc2 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setDesc2(null)));
// 测试 status 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setStatus(null)));
// 测试 uom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setUom(null)));
// 测试 altUom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAltUom(null)));
// 测试 isStdPack 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsStdPack(null)));
// 测试 enableBuy 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableBuy(null)));
// 测试 enableMake 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableMake(null)));
// 测试 enableOutsourcing 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableOutsourcing(null)));
// 测试 isRecycled 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsRecycled(null)));
// 测试 isPhantom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsPhantom(null)));
// 测试 abcClass 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAbcClass(null)));
// 测试 type 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setType(null)));
// 测试 category 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCategory(null)));
// 测试 itemGroup 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setItemGroup(null)));
// 测试 color 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setColor(null)));
// 测试 configuration 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setConfiguration(null)));
// 测试 project 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setProject(null)));
// 测试 eqLevel 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEqLevel(null)));
// 测试 validityDays 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setValidityDays(null)));
// 测试 available 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAvailable(null)));
// 测试 activeTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setActiveTime(null)));
// 测试 expireTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setExpireTime(null)));
// 测试 remark 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setRemark(null)));
// 测试 createTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCreateTime(null)));
// 测试 creator 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCreator(null)));
// 准备参数
ItembasicPageReqVO reqVO = new ItembasicPageReqVO();
reqVO.setCode(null);
reqVO.setName(null);
reqVO.setDesc1(null);
reqVO.setDesc2(null);
reqVO.setStatus(null);
reqVO.setUom(null);
reqVO.setAltUom(null);
reqVO.setIsStdPack(null);
reqVO.setEnableBuy(null);
reqVO.setEnableMake(null);
reqVO.setEnableOutsourcing(null);
reqVO.setIsRecycled(null);
reqVO.setIsPhantom(null);
reqVO.setAbcClass(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setItemGroup(null);
reqVO.setColor(null);
reqVO.setConfiguration(null);
reqVO.setProject(null);
reqVO.setEqLevel(null);
reqVO.setValidityDays(null);
reqVO.setAvailable(null);
reqVO.setActiveTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setExpireTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setRemark(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setCreator(null);
// 调用
PageResult<ItembasicDO> pageResult = itembasicService.getItembasicPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbItembasic, pageResult.getList().get(0));
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetItembasicList() {
// mock 数据
ItembasicDO dbItembasic = randomPojo(ItembasicDO.class, o -> { // 等会查询到
o.setCode(null);
o.setName(null);
o.setDesc1(null);
o.setDesc2(null);
o.setStatus(null);
o.setUom(null);
o.setAltUom(null);
o.setIsStdPack(null);
o.setEnableBuy(null);
o.setEnableMake(null);
o.setEnableOutsourcing(null);
o.setIsRecycled(null);
o.setIsPhantom(null);
o.setAbcClass(null);
o.setType(null);
o.setCategory(null);
o.setItemGroup(null);
o.setColor(null);
o.setConfiguration(null);
o.setProject(null);
o.setEqLevel(null);
o.setValidityDays(null);
o.setAvailable(null);
o.setActiveTime(null);
o.setExpireTime(null);
o.setRemark(null);
o.setCreateTime(null);
o.setCreator(null);
});
itembasicMapper.insert(dbItembasic);
// 测试 code 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCode(null)));
// 测试 name 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setName(null)));
// 测试 desc1 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setDesc1(null)));
// 测试 desc2 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setDesc2(null)));
// 测试 status 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setStatus(null)));
// 测试 uom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setUom(null)));
// 测试 altUom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAltUom(null)));
// 测试 isStdPack 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsStdPack(null)));
// 测试 enableBuy 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableBuy(null)));
// 测试 enableMake 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableMake(null)));
// 测试 enableOutsourcing 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEnableOutsourcing(null)));
// 测试 isRecycled 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsRecycled(null)));
// 测试 isPhantom 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setIsPhantom(null)));
// 测试 abcClass 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAbcClass(null)));
// 测试 type 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setType(null)));
// 测试 category 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCategory(null)));
// 测试 itemGroup 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setItemGroup(null)));
// 测试 color 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setColor(null)));
// 测试 configuration 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setConfiguration(null)));
// 测试 project 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setProject(null)));
// 测试 eqLevel 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setEqLevel(null)));
// 测试 validityDays 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setValidityDays(null)));
// 测试 available 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setAvailable(null)));
// 测试 activeTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setActiveTime(null)));
// 测试 expireTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setExpireTime(null)));
// 测试 remark 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setRemark(null)));
// 测试 createTime 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCreateTime(null)));
// 测试 creator 不匹配
itembasicMapper.insert(cloneIgnoreId(dbItembasic, o -> o.setCreator(null)));
// 准备参数
ItembasicExportReqVO reqVO = new ItembasicExportReqVO();
reqVO.setCode(null);
reqVO.setName(null);
reqVO.setDesc1(null);
reqVO.setDesc2(null);
reqVO.setStatus(null);
reqVO.setUom(null);
reqVO.setAltUom(null);
reqVO.setIsStdPack(null);
reqVO.setEnableBuy(null);
reqVO.setEnableMake(null);
reqVO.setEnableOutsourcing(null);
reqVO.setIsRecycled(null);
reqVO.setIsPhantom(null);
reqVO.setAbcClass(null);
reqVO.setType(null);
reqVO.setCategory(null);
reqVO.setItemGroup(null);
reqVO.setColor(null);
reqVO.setConfiguration(null);
reqVO.setProject(null);
reqVO.setEqLevel(null);
reqVO.setValidityDays(null);
reqVO.setAvailable(null);
reqVO.setActiveTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setExpireTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setRemark(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setCreator(null);
// 调用
List<ItembasicDO> list = itembasicService.getItembasicList(reqVO);
// 断言
assertEquals(1, list.size());
assertPojoEquals(dbItembasic, list.get(0));
}
}

12
win-server/src/main/resources/application.yaml

@ -140,8 +140,7 @@ win:
enable: true
ignore-urls:
- /admin-api/system/tenant/get-id-by-name # 基于名字获取租户,不许带租户编号
- /admin-api/system/captcha/get # 获取图片验证码,和租户无关
- /admin-api/system/captcha/check # 校验图片验证码,和租户无关
- /admin-api/system/captcha/captchaImage # 校验图片验证码,和租户无关
- /admin-api/infra/file/*/get/** # 获取图片,和租户无关
- /admin-api/system/sms/callback/* # 短信回调接口,无法带上租户编号
- /admin-api/pay/notify/** # 支付回调通知,不携带租户编号
@ -205,3 +204,12 @@ debug: false
minidao :
base-package: org.jeecg.modules.jmreport.desreport.dao*
db-type: mysql
# magic-api配置
magic-api:
web: /magic/web
resource:
type: database # 配置接口存储方式,这里选择存在数据库中
table-name: magic_api_file_v2 # 数据库中的表名
prefix: /magic-api # 前缀
location: classpath:magic-api
Loading…
Cancel
Save