|  | @ -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)
 | 
	
	
		
			
				|  | @ -56,16 +67,18 @@ public class FacilityUsedRecordController extends EnvelopRestEndpoint {
 | 
	
		
			
				|  |  |             @ApiParam(name = "page", value = "页码", defaultValue = "1")
 | 
	
		
			
				|  |  |             @RequestParam(value = "page", required = false) Integer page) throws Exception {
 | 
	
		
			
				|  |  |         List<FacilityUsedRecord> facilityUsedRecordList = facilityUsedRecordService.search(fields, filters, sorts, page, size);
 | 
	
		
			
				|  |  |         return success(facilityUsedRecordList, (null == facilityUsedRecordList) ? 0 : facilityUsedRecordList.size(), page, size);
 | 
	
		
			
				|  |  |         int count = (int) facilityUsedRecordService.getCount(filters);
 | 
	
		
			
				|  |  |         return success(facilityUsedRecordList, count, page, size);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @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 +121,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;address?"  + 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 +142,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 +183,37 @@ 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;
 | 
	
		
			
				|  |  |         sorts = "-createTime";
 | 
	
		
			
				|  |  |         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("已评价");
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         int count = (int) facilityUsedRecordService.getCount(filters);
 | 
	
		
			
				|  |  |         return success(facilityUsedRecordList, count, page, size);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |