| 
					
				 | 
			
			
				@ -1,11 +1,16 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.healthyhouse.controller.user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.google.common.base.Joiner; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.model.facility.Facility; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.exception.business.ManageException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.model.facility.FacilityServerRelation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.model.user.FacilityUsedRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.model.user.NavigationServiceEvaluation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.service.facility.FacilityServerRelationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.service.facility.FacilityService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.service.user.FacilityUsedRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.service.user.NavigationServiceEvaluationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.healthyhouse.service.user.UserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ListEnvelop; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -18,12 +23,14 @@ import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -41,6 +48,10 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private UserService userService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private FacilityService facilityService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private NavigationServiceEvaluationService navigationServiceEvaluationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private FacilityServerRelationService facilityServerRelationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "获取用户使用导航记录列表--分页(web)", responseContainer = "List") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = HealthyHouseMapping.HealthyHouse.FacilityUsedRecord.PAGE) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -60,12 +71,13 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "创建/更新(id存在)用户使用导航记录") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(value = HealthyHouseMapping.HealthyHouse.FacilityUsedRecord.CREATE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<FacilityUsedRecord> createFacilityUsedRecord( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "facilityUsedRecord", value = "用户使用导航记录JSON结构") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestBody FacilityUsedRecord facilityUsedRecord) throws IOException, ManageException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        facilityUsedRecord = facilityUsedRecordService.save(facilityUsedRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userService.updateFacilityUse(facilityUsedRecord.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userService.updateFacilityUse(facilityUsedRecord.getCreateUser()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return success(facilityUsedRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -108,19 +120,19 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "userId", value = "用户ID", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "userId") String userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "filters", value = "检索字段", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "filters",required = false) String filters, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "filters", required = false) String filters, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "nearbyFlag", value = "是否为“附近”的功能", defaultValue = "false") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "nearbyFlag") boolean nearbyFlag) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<FacilityUsedRecord> facilityUsedRecordList =new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<FacilityUsedRecord> facilityUsedRecordList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        FacilityUsedRecord facilityUsedRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(nearbyFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(StringUtils.isNotEmpty(filters)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters=  "name?"+filters+" g1;cityName?"+filters+" g1;countyName?"+filters+" g1;street?"+filters+" g1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (nearbyFlag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNotEmpty(filters)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                filters = "name?" + filters + " g1;cityName?" + filters + " g1;countyName?" + filters + " g1;street?" + filters + " g1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取所有设施,并根据设施编码及用户id查找使用次数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<Facility> facilityList = facilityService.search(filters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(Facility facility:facilityList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord=new FacilityUsedRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (Facility facility : facilityList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord = new FacilityUsedRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setFacilitieCode(facility.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setFacilitieName(facility.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setFacilitieLongitude(facility.getLongitude()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -129,10 +141,10 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setCreateUser(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setFacilitieId(facility.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                long count = facilityUsedRecordService.countByFacilitieCodeAndUserId(facility.getCode(), userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setNum((int)count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecord.setNum((int) count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                facilityUsedRecordList.add(facilityUsedRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //根据用户id,获取我的历史记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            facilityUsedRecordList = facilityUsedRecordService.countDistinctByFacilitieCodeAndUserId(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for (FacilityUsedRecord facilityUsedRecord1 : facilityUsedRecordList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -170,5 +182,35 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return success(usedRecordDetail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ApiOperation(value = "获取用户使用导航记录列表--分页(app)", responseContainer = "List") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @GetMapping(value = HealthyHouseMapping.HealthyHouse.FacilityUsedRecord.PAGE_FACILITY_USED_RECORD_BY_USERID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public PageEnvelop<FacilityUsedRecord> getFacilityUsedRecordsByUserId( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "userId", value = "必输参数:登录用户id", defaultValue = "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "userId") String userId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "sorts", value = "排序", defaultValue = "-createTime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "sorts", required = false) String sorts, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "size", value = "分页大小", defaultValue = "15") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "size", required = false) Integer size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @ApiParam(name = "page", value = "页码", defaultValue = "1") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            @RequestParam(value = "page", required = false) Integer page) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String filters = "createUser=" + userId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<FacilityUsedRecord> facilityUsedRecordList = facilityUsedRecordService.search("", filters, sorts, page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (FacilityUsedRecord record : facilityUsedRecordList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //根据设施编码获取关联服务的名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String facilityCode = record.getFacilitieCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<FacilityServerRelation> facilityServerRelations = facilityServerRelationService.findByField("facilitieCode", facilityCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<String> services = facilityServerRelations.stream().map(FacilityServerRelation::getServiceName).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String servicesValue = Joiner.on("、").join(services); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            record.setFacilityRelationServiceName(servicesValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //根据记录获取评价记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            NavigationServiceEvaluation comment = navigationServiceEvaluationService.findByUseRecordId(record.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (comment == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                record.setNavigationServiceEvaluationFlag("未评价"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                record.setNavigationServiceEvaluationFlag("已评价"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return success(facilityUsedRecordList, (null == facilityUsedRecordList) ? 0 : facilityUsedRecordList.size(), page, size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |