package com.zy.asrs.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.core.controller.AbstractBaseController; import com.zy.asrs.entity.BasStation; import com.zy.asrs.entity.BasStationTv; import com.zy.asrs.entity.TvDevice; import com.zy.asrs.service.BasStationService; import com.zy.asrs.service.BasStationTvService; import com.zy.asrs.service.TvDeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 站台与电视机绑定配置 Controller */ @RestController @RequestMapping("/basStationTv") public class BasStationTvController extends AbstractBaseController { @Autowired private BasStationService basStationService; @Autowired private TvDeviceService tvDeviceService; @Autowired private BasStationTvService basStationTvService; /** * 获取配置数据 (站点、电视机、绑定关系) */ @RequestMapping(value = "/data/auth", method = RequestMethod.GET) @ManagerAuth public R getData() { // 1. 获取所有站点 List stations = basStationService .selectList(new EntityWrapper().orderBy("station_id", true)); // 2. 获取所有电视机 (按名称排序) List tvs = tvDeviceService.selectList(new EntityWrapper().orderBy("name", true)); // 3. 获取所有绑定关系 List relations = basStationTvService.selectList(new EntityWrapper<>()); Map data = new HashMap<>(); data.put("stations", stations); data.put("tvs", tvs); data.put("relations", relations); return R.ok(data); } /** * 保存配置 */ @RequestMapping(value = "/save/auth", method = RequestMethod.POST) @ManagerAuth public R save(@RequestBody JSONObject params) { try { // 获取提交的关系列表 List relations = params.getJSONArray("relations").toJavaList(BasStationTv.class); // 全量替换策略:先删除所有旧关系,再插入新关系 // 注意:这里没有事务控制,如果要求严格一致性,建议在Service层加@Transactional basStationTvService.delete(new EntityWrapper<>()); if (relations != null && !relations.isEmpty()) { basStationTvService.insertBatch(relations); } return R.ok(); } catch (Exception e) { e.printStackTrace(); return R.error("保存失败:" + e.getMessage()); } } }