首先是 swagger 的API
@Api(tags = "ActivityManage", description = "活动管理相关接口")
public interface ActivityManageApi {
@ApiOperation(value = "活动管理列表分页查询接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "activityListDto", dataType = "ActivityListDto", value = "活动管理列表查询接口请求参数", paramType = "body")
})
//dto 我泛指用于展示层与服务层之间的数据传输对象
//vo 某个指定页面(或组件)的所有数据封装起来
Result<Page<ActivityManageListVo>> getActivityPage(@RequestBody ActivityListDto activityListDto);
}
然后是Controller
@RestController
@RequestMapping("/activityManage")
public class ActivityManageController implements ActivityManageApi {
@Autowired
private ActivityManageService activityManageService;
/**
* 活动管理列表分页查询接口
*
* @param activityListDto 活动管理列表查询接口请求参数实体
* @return Result<Page < ActivityManageListVo>>
*/
@Override
@PostMapping(value = "/getActivityPage")
public Result<Page<ActivityManageListVo>> getActivityPage(@Valid @RequestBody ActivityListDto activityListDto) {
Page<ActivityManageListVo> activityListVoPage;
try {
activityListVoPage = activityManageService.getActivityPage(activityListDto);
} catch (ScoreMallException scoreCenterException) {
throw scoreCenterException;
} catch (Exception e) {
LOGGER.error("活动管理列表分页查询接口异常", e);
throw new ScoreMallException(ErrorCode.BACK_MANAGEMENT_LOTTERY_ACTIVITY_SERVICE_ERROR, "活动管理列表分页查询失败");
}
return Result.successData(activityListVoPage);
}
}
Server层
@Service
public class ActivityManageService {
@Autowired
private ActivityDao activityDao;
/**
* 活动列表分页查询服务
*
* @param activityListDto 查询条件
* @return Page<ActivityManageListVo> 活动列表信息分页数据
*/
public Page<ActivityManageListVo> getActivityPage(ActivityListDto activityListDto) {
return activityDao.findActivityPage(activityListDto.getStartTime(), activityListDto.getEndTime(),
activityListDto.getStatus(), activityListDto.getKeyword(), activityListDto.getPageNo(), activityListDto.getPageSize(), activityListDto.getSiteId());
}
}
Dao层
@Repository
public class ActivityDao extends BaseDao<Activity> {
/**
* 活动列表分页查询
*
* @param startTime 活动起始时间
* @param endTime 活动截止时间
* @param status 活动状态
* @param keyword 模糊查询关键词
* @param pageNo 页码
* @param pageSize 页数
* @return Page<ActivityManageListVo> 活动信息列表
*/
public Page<ActivityManageListVo> findActivityPage(String startTime, String endTime, Integer status, String keyword, Integer pageNo, Integer pageSize,Integer siteId) {
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder("select * from ").append(Activity.TABLE_NAME).append(" where 1=1 ");
if (StrKit.isNotEmpty(startTime)) {
sql.append(" and (START_TIME >= to_date(:startTime, 'yyyy-mm-dd hh24:mi:ss') or END_TIME >= to_date(:startTime, 'yyyy-mm-dd hh24:mi:ss')) ");
paramMap.put("startTime", startTime);
}
if (StrKit.isNotEmpty(endTime)) {
sql.append(" and (START_TIME <= to_date(:endTime, 'yyyy-mm-dd hh24:mi:ss') or END_TIME <= to_date(:endTime, 'yyyy-mm-dd hh24:mi:ss')) ");
paramMap.put("endTime", endTime);
}
if (Objects.nonNull(status)) {
sql.append(" and STATUS = :status ");
paramMap.put("status", status);
}
if (StrKit.isNotEmpty(keyword)) {
sql.append(" and (NAME like :keyword or DESCRIPTION like :keyword) ");
paramMap.put("keyword", "%" + keyword + "%");
}
if (Objects.nonNull(siteId)) {
sql.append(" and SITE_ID = :siteId ");
paramMap.put("siteId", siteId);
}
sql.append(" and IS_DELETE = 0 ");
sql.append(" order by CREATED_TIME desc ");
return slaverSeasonDao.findPage(ActivityManageListVo.class, pageNo, pageSize, paramMap, sql.toString());
}
}
最后通过通用的Dao 完成对数据库的操作