package com.dsh.guns.modular.system.controller.code; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.CityManagerClient; import com.dsh.course.feignClient.account.StoreStaffClient; import com.dsh.course.feignClient.account.model.*; import com.dsh.course.feignClient.activity.BodySideAppointmentClient; import com.dsh.course.feignClient.activity.model.BodySideAppointment; import com.dsh.course.feignClient.activity.model.QueryBodySideAppointment; import com.dsh.course.feignClient.activity.model.QueryBodySideAppointmentVO; import com.dsh.course.feignClient.other.StoreClient; import com.dsh.guns.config.UserExt; import com.dsh.guns.modular.system.model.Store; import com.dsh.guns.modular.system.model.TCity; import com.dsh.guns.modular.system.model.TSiteType; import com.dsh.guns.modular.system.service.ICityService; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * 用户管理控制器 */ @Controller @RequestMapping("/appUser") public class TAppUserController { private String PREFIX = "/system/appUser/"; @Autowired private StoreClient storeClient; @Autowired private BodySideAppointmentClient bodySideAppointmentClient; @Autowired private CityManagerClient cityManagerClient; @Autowired private StoreStaffClient storeStaffClient; @Autowired private AppUserClient appUserClient; @Autowired private ICityService cityService; /** * 跳转体测预约管理首页 */ @RequestMapping("") public String index(Model model) { Integer roleType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); model.addAttribute("roleType",roleType); model.addAttribute("objectId",objectId); List province = cityManagerClient.listAll(); // 已有城市管理的省 ArrayList list1 = new ArrayList<>(); // 已有城市管理的市 ArrayList list2 = new ArrayList<>(); for (CityManager cityManager : province) { list1.add(cityManager.getProvince()); list2.add(cityManager.getCity()); } HashSet set = new HashSet(list1); model.addAttribute("list",set); return PREFIX + "TAppUser.html"; } /** * 跳转用户信息管理添加页面 */ @RequestMapping("/add") public String add(Model model) { Integer roleType = UserExt.getUser().getObjectType(); List province = cityManagerClient.listAll(); Set seenNames = new HashSet<>(); List result = new ArrayList<>(); for (CityManager cityManager : province) { if(!seenNames.contains(cityManager.getProvince())){ result.add(cityManager); seenNames.add(cityManager.getProvince()); } } if (roleType == 2){ Integer cityManagerId = UserExt.getUser().getObjectId(); CityManager cityManager = cityManagerClient.queryCityManagerById(cityManagerId); List stores = storeClient.getStoreByCityManagerId(cityManagerId); model.addAttribute("stores",stores); } model.addAttribute("list",result); model.addAttribute("roleType",roleType); return PREFIX + "TAppUser_add.html"; } /** * 跳转体测预约管理添加页面 */ @RequestMapping("/addStudent") public String addStudent(Model model) { Integer roleType = UserExt.getUser().getObjectType(); List province = cityManagerClient.listAll(); Set seenNames = new HashSet<>(); List result = new ArrayList<>(); for (CityManager cityManager : province) { if(!seenNames.contains(cityManager.getProvince())){ result.add(cityManager); seenNames.add(cityManager.getProvince()); } } if (roleType == 2){ Integer cityManagerId = UserExt.getUser().getObjectId(); CityManager cityManager = cityManagerClient.queryCityManagerById(cityManagerId); List stores = storeClient.getStoreByCityManagerId(cityManagerId); model.addAttribute("stores",stores); } model.addAttribute("list",result); model.addAttribute("roleType",roleType); return PREFIX + "TAppUser_addStudent.html"; } /** * 跳转体测预约管理编辑页面 * @param type 1 = 用户管理编辑 2 = 用户管理详情-非会员 3 = 用户管理详情-会员 */ @RequestMapping("/update/{id}/{type}") public String update(Model model,@PathVariable("id") Integer id,@PathVariable("type") Integer type) { Integer roleType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); BodySideAppointment data = bodySideAppointmentClient.getInfoById(id); if (roleType == 1){ List cityManagers = cityManagerClient.listAll(); List province = new ArrayList<>(); List city = new ArrayList<>(); Set seenNames = new HashSet<>(); Set c = new HashSet<>(); // 省列表 List result = new ArrayList<>(); // 市列表 List cities = new ArrayList<>(); // 对省/市去重 for (CityManager cityManager : cityManagers) { if(!seenNames.contains(cityManager.getProvince())){ result.add(cityManager); seenNames.add(cityManager.getProvince()); } if(!c.contains(cityManager.getProvince())){ cities.add(cityManager); c.add(cityManager.getProvince()); } } List stores = storeClient.getStore(data.getCity()); model.addAttribute("stores",stores); model.addAttribute("list",result); model.addAttribute("cities",cities); }else if (roleType == 2){ List stores = storeClient.getStoreByCityManagerId(objectId); model.addAttribute("stores",stores); } String birthday = new SimpleDateFormat("yyyy-MM-dd").format(data.getBirthday()); String appointmentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(data.getAppointmentTime()); model.addAttribute("birthday",birthday); model.addAttribute("appointmentTime",appointmentTime); model.addAttribute("data",data); model.addAttribute("roleType",roleType); return PREFIX + "TAppUser_edit.html"; } /** * 获取所有用户信息 * @return */ @RequestMapping("/listAll") @ResponseBody public List listAll(String province, String city,String name, String phone,Integer isVip, String salesmanUserName){ QueryAppUser queryAppUser = new QueryAppUser(); queryAppUser.setProvince(province); queryAppUser.setCity(city); queryAppUser.setName(name); queryAppUser.setPhone(phone); queryAppUser.setIsVip(isVip); queryAppUser.setSalesmanUserName(salesmanUserName); return appUserClient.listAll(queryAppUser); } /** * 新增用户信息 * @return */ @RequestMapping("/addAppUser") @ResponseBody public ResultUtil addAppUser(TAppUser appUser){ appUserClient.addAppUser(appUser); return ResultUtil.success("添加成功"); } /** * 添加/修改体测预约记录 */ @ResponseBody @RequestMapping(value = "/addBodySideAppointments") public ResultUtil addBodySideAppointments(@RequestBody QueryBodySideAppointmentVO vo) { Integer roleType = UserExt.getUser().getObjectType(); // 获取当前登录人id Integer cityManagerId = UserExt.getUser().getObjectId(); if (roleType == 2){ CityManager cityManager = cityManagerClient.queryCityManagerById(cityManagerId); vo.setProvince(cityManager.getProvince()); vo.setProvinceCode(cityManager.getProvinceCode()); vo.setCity(cityManager.getCity()); vo.setCityCode(cityManager.getCityCode()); }else if (roleType == 3){ TStoreStaff storeByStoreStaffId = storeStaffClient.getStoreByStoreStaffId(cityManagerId); Store storeById = storeClient.getStoreById(storeByStoreStaffId.getStoreId()); vo.setProvince(storeById.getProvince()); vo.setProvinceCode(storeById.getProvinceCode()); vo.setCity(storeById.getCity()); vo.setCityCode(storeById.getCityCode()); } bodySideAppointmentClient.addBodySideAppointments(vo); return ResultUtil.success("添加成功"); } /** * 添加/修改体测预约记录 */ @ResponseBody @RequestMapping(value = "/getInfoById") public BodySideAppointment getInfoById(@RequestBody Integer id) { return bodySideAppointmentClient.getInfoById(id); } /** * 手动标记用户已经到店并完成体测 */ @ResponseBody @RequestMapping(value = "/changeState") public Object changeState(@RequestBody List ids) { return bodySideAppointmentClient.changeState(ids); } }