@RequestMapping('/autoSort2')
public R autoSort2(@RequestParam Map<String, Object> params,NongzuowuEntity nongzuowu, HttpServletRequest request){
String userId = request.getSession().getAttribute('userId').toString();
String inteltypeColumn = 'zuowufenlei';
List storeups = storeupService.selectList(new EntityWrapper().eq('type', 1).eq('userid', userId).eq('tablename', 'nongzuowu').orderBy('addtime', false));
List inteltypes = new ArrayList();
Integer limit = params.get('limit')==null?10:Integer.parseInt(params.get('limit').toString());
List nongzuowuList = new ArrayList();
//去重
if(storeups!=null && storeups.size()>0) {
for(StoreupEntity s : storeups) {
nongzuowuList.addAll(nongzuowuService.selectList(new EntityWrapper().eq(inteltypeColumn, s.getInteltype())));
}
}
EntityWrapper ew = new EntityWrapper();
params.put('sort', 'id');
params.put('order', 'desc');
PageUtils page = nongzuowuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, nongzuowu), params), params));
List pageList = (List)page.getList();
if(nongzuowuList.size()<limit) {
int toAddNum = (limit-nongzuowuList.size())<=pageList.size()?(limit-nongzuowuList.size()):pageList.size();
for(NongzuowuEntity o1 : pageList) {
boolean addFlag = true;
for(NongzuowuEntity o2 : nongzuowuList) {
if(o1.getId().intValue()==o2.getId().intValue()) {
addFlag = false;
break;
}
}
if(addFlag) {
nongzuowuList.add(o1);
if(--toAddNum==0) break;
}
}
} else if(nongzuowuList.size()>limit) {
nongzuowuList = nongzuowuList.subList(0, limit);
}
page.setList(nongzuowuList);
return R.ok().put('data', page);
}
// 代码的功能说明:
该接口实现农作物自动排序推荐功能,根据用户收藏的农作物类型进行推荐,并限制返回数据的数量。具体流程如下:
- 获取用户 ID 和收藏数据
- 根据收藏数据筛选农作物列表
- 根据请求参数进行分页查询,获取更多农作物数据
- 将收藏数据和分页查询数据合并,并限制返回数据的数量
- 返回一个包含推荐排序结果的分页数据
// 代码的详细解释:
- @RequestMapping('/autoSort2'):定义接口的访问路径
- @RequestParam Map<String, Object> params:获取请求参数
- NongzuowuEntity nongzuowu:农作物实体类
- HttpServletRequest request:获取请求对象
- String userId:获取用户 ID
- String inteltypeColumn:农作物分类字段
- List storeups:用户收藏的农作物数据
- List inteltypes:收藏的农作物类型列表
- Integer limit:限制返回数据的数量
- List nongzuowuList:推荐排序的农作物列表
- EntityWrapper ew:查询条件构造器
- PageUtils page:分页数据对象
- List pageList:分页查询结果
- int toAddNum:需要添加的数据数量
- boolean addFlag:判断数据是否已存在
// 代码的优缺点:
- 优点:代码逻辑清晰,易于理解,功能实现完善
- 缺点:代码没有进行错误处理,例如获取用户 ID 失败等情况