package com.dsh.guns.modular.system.controller.code; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.CityManager; import com.dsh.course.feignClient.account.model.QueryByNamePhone; import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.account.model.TStoreStaff; import com.dsh.course.feignClient.activity.CouponClient; import com.dsh.course.feignClient.activity.PointMercharsClient; import com.dsh.course.feignClient.activity.model.*; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.tips.SuccessTip; import com.dsh.guns.core.common.constant.factory.PageFactory; import com.dsh.guns.core.util.ToolUtil; import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.HttpRequestUtil; import com.dsh.guns.modular.system.util.OBSUploadUtil; import com.dsh.guns.modular.system.util.ResultUtil; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.sun.org.apache.bcel.internal.generic.NEW; import io.swagger.models.auth.In; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 闸机管理 控制器 */ @Controller @RequestMapping("/gate") public class TGateController { private String PREFIX = "/system/gate/"; @Resource private IRegionService regiService; @Resource private IStoreService storeService; @Resource private CouponClient client; @Resource private CityManagerClient cmgrClient; @Autowired private AppUserClient appUserClient; @Autowired private ICityService cityService; @Resource private PointMercharsClient pointMercharsClient; @Autowired private StoreStaffClient storeStaffClient; @Autowired private IGateService gateService; @Autowired private TOperatorService tOperatorService; @Autowired private ITSiteService siteService; @Autowired private IUserService userService; /** * 跳转到优惠券管理首页 */ @RequestMapping("") public String index(Model model) { return PREFIX + "gate.html"; } /** * 跳转到添加 */ @RequestMapping("/add") public String add(Model model) { Integer objectType = UserExt.getUser().getObjectType(); model.addAttribute("userType",objectType); System.out.println(objectType); List list1 = tOperatorService.list(); model.addAttribute("yysList",list1); if (UserExt.getUser().getObjectType()==1) { List list = storeService.list(new QueryWrapper() .eq("operatorId", 0) .ne("state", 3)); model.addAttribute("storeList",list); model.addAttribute("operatorId",0); } if (UserExt.getUser().getObjectType()==2){ List list2 = storeService.list(new QueryWrapper() .eq("operatorId", UserExt.getUser().getObjectId()) .ne("state", 3)); model.addAttribute("storeList",list2); model.addAttribute("operatorId",0); } if (UserExt.getUser().getObjectType()==3){ List list3 = new ArrayList<>(); TStore byId = storeService.getById(UserExt.getUser().getObjectId()); list3.add(byId); Integer operatorId = byId.getOperatorId(); if (operatorId==null){ model.addAttribute("operatorId",0); }else if (operatorId==0){ model.addAttribute("operatorId",0); }else{ model.addAttribute("operatorId",byId.getOperatorId()); } model.addAttribute("storeList",list3); model.addAttribute("storeId",UserExt.getUser().getObjectId()); // 查询场地列表 List siteList = siteService.list(new QueryWrapper() .eq("storeId", UserExt.getUser().getObjectId()) .ne("state",3)); model.addAttribute("siteList",siteList); } return PREFIX + "gate_add.html"; } /** * 添加门禁接口 */ @RequestMapping("/addDevice") @ResponseBody public Object addDevice(String name,Integer operatorId,Integer storeId,Integer siteId,String device) { Gate gate = new Gate(); gate.setName(name); gate.setDevice(device); gate.setStoreId(storeId); gate.setSiteId(siteId); gate.setOperatorId(operatorId); HashMap map = new HashMap<>(); map.put("sign","0DB011836143EEE2C2E072967C9F4E4B"); map.put("space_id",""+storeId); map.put("device_id",device); map.put("region_id",""+siteId); // 添加门禁 String s1 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addDevice", map); System.out.println(s1); Gson gson = new Gson(); // 解析请求结果,json: JsonObject jsonObject = gson.fromJson(s1, JsonObject.class); if (!jsonObject.get("code").toString().equals("200")){ return ResultUtil.error(""+jsonObject.get("message").getAsString()); } JsonObject data = jsonObject.getAsJsonObject("data"); int device_id = data.get("device_id").getAsInt(); gate.setId(device_id); gateService.save(gate); return new SuccessTip<>(); } /** * 编辑门禁接口 */ @RequestMapping("/updateDevice") @ResponseBody public Object updateDevice(Integer id,String name,Integer operatorId,Integer storeId,Integer siteId,String device) { Gate gate = gateService.getById(id); gate.setName(name); gate.setDevice(device); gate.setStoreId(storeId); gate.setSiteId(siteId); gate.setOperatorId(operatorId); HashMap map = new HashMap<>(); map.put("sign","0DB011836143EEE2C2E072967C9F4E4B"); map.put("space_id",""+storeId); map.put("device_id",device); map.put("region_id",""+siteId); // 添加门禁 String s1 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/editDevice/ids/"+id, map); System.out.println(s1); Gson gson = new Gson(); // 解析请求结果,json: JsonObject jsonObject = gson.fromJson(s1, JsonObject.class); if (!jsonObject.get("code").toString().equals("200")){ return ResultUtil.error(""+jsonObject.get("message").getAsString()); } gateService.updateById(gate); return new SuccessTip<>(); } /** * 删除门禁接口 */ @RequestMapping("/deleteDevice") @ResponseBody public Object add(Integer gateId) { Gate byId = gateService.getById(gateId); byId.setIsDelete(1); HashMap map = new HashMap<>(); map.put("sign","0DB011836143EEE2C2E072967C9F4E4B"); // 添加门禁 String s1 = HttpRequestUtil.postRequest ("https://port.daowepark.com/v7/user_api/general/deleteDevice/ids/"+gateId, map); System.out.println(s1); Gson gson = new Gson(); // 解析请求结果,json: JsonObject jsonObject = gson.fromJson(s1, JsonObject.class); if (!jsonObject.get("code").toString().equals("200")){ return ResultUtil.error(""+jsonObject.get("message").getAsString()); } gateService.updateById(byId); return new SuccessTip<>(); } /** * * @param id * @param model * @return */ @RequestMapping("/update/{id}") public String update(@PathVariable("id") Integer id,Model model) { model.addAttribute("id",id); Gate byId = gateService.getById(id); model.addAttribute("id",id); model.addAttribute("data",byId); TStore byId2 = storeService.getById(byId.getStoreId()); model.addAttribute("type",byId2.getType()); Integer objectType = UserExt.getUser().getObjectType(); model.addAttribute("userType",objectType); System.out.println(objectType); List list1 = tOperatorService.list(new QueryWrapper() .eq("state", 1)); model.addAttribute("yysList",list1); if (UserExt.getUser().getObjectType()==1) { List tStores = new ArrayList<>(); if (byId.getOperatorId()==0){ tStores = storeService.list(new QueryWrapper() .eq("operatorId", 0) .eq("type", 1) .ne("state", 3)); }else{ tStores = storeService.list(new QueryWrapper() .eq("operatorId", byId.getOperatorId()) .eq("type", 2) .ne("state", 3)); } model.addAttribute("storeList",tStores); List siteList = siteService.list(new QueryWrapper() .eq("storeId", byId.getStoreId()) .ne("state",3)); model.addAttribute("siteList",siteList); model.addAttribute("operatorId",byId.getOperatorId()); } if (UserExt.getUser().getObjectType()==2){ List list2 = storeService.list(new QueryWrapper() .eq("operatorId", UserExt.getUser().getObjectId()) .ne("state", 3)); model.addAttribute("storeList",list2); model.addAttribute("operatorId",UserExt.getUser().getObjectId()); List siteList = siteService.list(new QueryWrapper() .eq("storeId", byId.getStoreId()) .ne("state",3)); model.addAttribute("siteList",siteList); } if (UserExt.getUser().getObjectType()==3){ List list3 = new ArrayList<>(); TStore byId1 = storeService.getById(UserExt.getUser().getObjectId()); list3.add(byId1); Integer operatorId = byId1.getOperatorId(); if (operatorId==null){ model.addAttribute("operatorId",0); }else if (operatorId==0){ model.addAttribute("operatorId",0); }else{ model.addAttribute("operatorId",byId1.getOperatorId()); } model.addAttribute("storeList",list3); model.addAttribute("storeId",UserExt.getUser().getObjectId()); // 查询场地列表 List siteList = siteService.list(new QueryWrapper() .eq("storeId", UserExt.getUser().getObjectId()) .ne("state",3)); model.addAttribute("siteList",siteList); } return PREFIX + "gate_edit.html"; } /** * 获取运营商列表 */ @RequestMapping(value = "/getOperatorList") @ResponseBody public List getOperatorList() { List list = tOperatorService.list(new QueryWrapper() .eq("state", 1)); return list; } /** * 获取闸机列表 */ @RequestMapping(value = "/listAll") @ResponseBody public Object listAll(String name,String device,String operatorName, String storeName) { Page> page = new PageFactory>().defaultPage(); List storeIds = new ArrayList<>(); if (UserExt.getUser().getObjectType()==2){ // 查询这个运营商下的所有门店 List ids = storeService.list(new QueryWrapper() .eq("operatorId", UserExt.getUser().getObjectId())).stream().map(TStore::getId) .collect(Collectors.toList()); if (ids.size()==0){ storeIds.add(-1); }else{ storeIds.addAll(ids); } } if (UserExt.getUser().getObjectType()==3){ storeIds.add(UserExt.getUser().getObjectId()); } List> res = gateService.listAll(name,device,operatorName,storeName,storeIds,page); for (Map re : res) { Integer integer = Integer.valueOf(re.get("type").toString()); if (integer==1){ re.put("operatorName","平台闸机"); }else{ TStore storeId = storeService.getById(Integer.valueOf(re.get("storeId").toString())); if (storeId!=null){ Integer operatorId = storeId.getOperatorId(); TOperator byId = tOperatorService.getById(operatorId); if (byId!=null){ User byId1 = userService.getById(byId.getUserId()); if (byId1!=null){ re.put("operatorName",byId1.getName()+"-"+byId1.getPhone()); } } } } } return res; } /** * 根据运营商id获取门店列表 */ @RequestMapping(value = "/getStore") @ResponseBody public List getStore(Integer operatorId) { List tStores = new ArrayList<>(); if (operatorId==0){ tStores = storeService.list(new QueryWrapper() .eq("type", 1) .ne("state", 3)); }else{ tStores = storeService.list(new QueryWrapper() .eq("operatorId", operatorId) .eq("type", 2) .ne("state", 3)); } return tStores; } /** * 根据门店id获取场地列表 */ @RequestMapping(value = "/getSite") @ResponseBody public List getSite(Integer storeId) { List list = siteService.list(new QueryWrapper() .eq("storeId", storeId) .ne("state", 3)); return list; } /** * 跳转到门店管理列表页 */ @RequestMapping("/storeList") public String storePage(Model model) { return PREFIX + "TStoreList.html"; } @RequestMapping("/updateType") @ResponseBody public Object updateType(Long id) { client.updateType(id); return new SuccessTip<>(); } @RequestMapping("/storeDetailsOfSearch") @ResponseBody public Object listOfStore(Integer provinceId,Integer cityId,Integer cityManagerId,String storeName){ System.out.println("provinceId"+provinceId); System.out.println("cityId"+cityId); System.out.println("cityManagerId"+cityManagerId); System.out.println("storeName"+storeName); String provinceCode = null; String cityCode = null; if (ToolUtil.isNotEmpty(provinceId)){ Region provinceRegion = regiService.getById(provinceId); provinceCode = provinceRegion.getCode(); } if (ToolUtil.isNotEmpty(cityId)){ Region cityRegion = regiService.getById(cityId); cityCode = cityRegion.getCode(); } Page> page = new PageFactory>().defaultPage(); List> storeList = storeService.queryListOfpage(provinceCode,cityCode,cityManagerId,storeName,page); if (storeList.size() > 0 ){ for (Map stringObjectMap : storeList) { String provinceName = (String) stringObjectMap.get("province"); String cityName = (String) stringObjectMap.get("city"); stringObjectMap.put("provinceCity",provinceName+cityName); Integer managerId = (Integer) stringObjectMap.get("cityManagerId"); CityManager cityManager = cmgrClient.queryCityManagerById(managerId); if (ToolUtil.isNotEmpty(cityManager)){ stringObjectMap.put("accountName",cityManager.getName()+"+"+cityManager.getPhone()); } } } return storeList; } @RequestMapping(value = "/listRecord") @ResponseBody public Object listRecord(Integer id,String name, Integer type, String phone) { Page> page = new PageFactory>().defaultPage(); List tAppUsers = appUserClient.queryByNamePhone(new QueryByNamePhone(name, phone)); if(tAppUsers.size()==0){ return new ArrayList<>(); } CouponRecordQuery ofSearch = new CouponRecordQuery(); ofSearch.setId(id); ofSearch.setLimit(page.getSize()); ofSearch.setOffset(page.getCurrent()); ofSearch.setIds(tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList())); ofSearch.setType(type); List> maps = client.listRecord(ofSearch); for (Map map : maps) { map.put("id",map.get("id").toString()); for (TAppUser tAppUser : tAppUsers) { if(map.get("userId").equals(tAppUser.getId())){ map.put("name",tAppUser.getName()); map.put("phone",tAppUser.getPhone()); } } } return maps; } @RequestMapping(value = "/getProvince") @ResponseBody public Object getProvince(){ return regiService.list(new LambdaQueryWrapper() .eq(Region::getParentId,0)); } @RequestMapping(value = "/onShelf") @ResponseBody public Object onShelf(Integer id,Integer type){ Coupon coupon = client.queryCouponById(id); coupon.setState(type); client.updateCouponData(coupon); return new SuccessTip<>(); } @RequestMapping(value = "/getCity") @ResponseBody public Object getCity(Integer province){ return regiService.list(new LambdaQueryWrapper() .eq(Region::getParentId,province)); } @RequestMapping(value = "/uploadPic") @ResponseBody public Object add(@RequestParam("file") MultipartFile imgFile) throws IOException { String originalFilename = imgFile.getOriginalFilename(); String newName = originalFilename.substring(imgFile.getOriginalFilename().lastIndexOf(".")); String url = OBSUploadUtil.inputStreamUpload(imgFile); Map map = new HashMap(); //是否上传成功 map.put("state", "SUCCESS"); //现在文件名称 map.put("title", newName); //文件原名称 map.put("original", originalFilename); //文件类型 .+后缀名 map.put("type", originalFilename.substring(imgFile.getOriginalFilename().lastIndexOf("."))); //文件路径 map.put("url", url); //文件大小(字节数) map.put("size", imgFile.getSize() + ""); System.out.println(map); return url; } /** * 提交添加 */ @PostMapping(value = "/commitData") @ResponseBody public Object commitData( CouponDataVo dataVo){ System.out.println(dataVo); Integer objectType = UserExt.getUser().getObjectType(); dataVo.setUserType(objectType); client.insertIntoData(dataVo); return new SuccessTip<>(); } @PostMapping(value = "/update") @ResponseBody public Object update( Integer id,Integer num,Integer num1,String text){ Coupon coupon = client.queryCouponById(id); coupon.setQuantityIssued(num); coupon.setPickUpQuantity(num1); coupon.setIllustrate(text); client.updateCouponData(coupon); return new SuccessTip<>(); } /** * 获取 积分商品列表 */ @RequestMapping(value = "/list") @ResponseBody public Object listOfIntegralGoods(String name, Integer type, Integer redemptionMethod , Integer userPopulation, Integer activeStatus, Integer state) { Page> page = new PageFactory>().defaultPage(); IntegralGoodsOfSearch ofSearch = new IntegralGoodsOfSearch(); ofSearch.setPage(page); ofSearch.setName(name); ofSearch.setType(type); ofSearch.setRedemptionMethod(redemptionMethod); ofSearch.setUserPopulation(userPopulation); ofSearch.setActiveStatus(activeStatus); ofSearch.setState(state); System.out.println(ofSearch); return pointMercharsClient.getIntegralGoodsListOfSearch(ofSearch); } /** * 跳转到修改车辆管理 */ @RequestMapping("/tGoods_update/{id}") public String tCityUpdate(@PathVariable Integer id, Model model) { System.out.println("id:"+id); PointMercharsVo pointMercharsVo = pointMercharsClient.queryPointMerchaseDetailOfId(id); System.out.println("pointMercharsVo:"+pointMercharsVo); String[] split = pointMercharsVo.getPics().split(","); model.addAttribute("item",pointMercharsVo); model.addAttribute("pictures",split); return PREFIX + "TGoods_edit.html"; } /** * 上下架处理操作 * @param id 商品id * @param type 1=上架操作 2=下架操作 * @return */ @RequestMapping("/grounding") @ResponseBody public Object updateGrounding(Integer id,Integer type) { System.out.println(id); System.out.println(type); Map map = new HashMap<>(); map.put("id",id); map.put("type",type); boolean b = pointMercharsClient.updateGoodsGroudingStatus(map); System.out.println(b); return new SuccessTip<>(); } /** * 上下架处理操作 * @return */ @RequestMapping("/writeOff") @ResponseBody public Object writeOff(String id) { Long aLong = Long.valueOf(id); WriteOffDTO dto = new WriteOffDTO(); // 核销人员id Integer objectId = UserExt.getUser().getId(); if (UserExt.getUser().getObjectType() == 1){ dto.setVerifiStoreId(null); }else if (UserExt.getUser().getObjectType() == 2){ storeService.getOne(new QueryWrapper().eq("cityManagerId",objectId)); }else{ TStoreStaff storeByStoreStaffId = storeStaffClient.getStoreByStoreStaffId(objectId); dto.setVerifiStoreId(storeByStoreStaffId.getStoreId()); } dto.setId(aLong); dto.setVerificationUserId(objectId); pointMercharsClient.writeOff(dto); return new SuccessTip<>(); } /** * 购买详情 * @param id 商品id * @return */ @RequestMapping("/tPay_detail/{id}") public String payOfDetails(@PathVariable(value = "id") Integer id,Model model) { System.out.println(id); model.addAttribute("id",id); return PREFIX + "TGoods_pay.html"; } /** * 获取 购买记录列表 */ @ResponseBody @RequestMapping(value = "/payList/{id}") public Object payList(@PathVariable(value = "id") Integer id, String name, String phone, Integer status) { PointMercharsPayedVo payedVo = new PointMercharsPayedVo(); payedVo.setId(id); payedVo.setName(name); payedVo.setPhone(phone); payedVo.setStatus(status); List> points = pointMercharsClient.queryUserPayedGoodsList(payedVo); System.out.println(points); if (points.size() > 0 ){ for (Map point : points) { Integer userId = (Integer) point.get("userId"); TAppUser tAppUser = appUserClient.queryById(userId); if (ToolUtil.isNotEmpty(tAppUser)){ point.put("name",tAppUser.getName()); point.put("phone",tAppUser.getPhone()); } } if (ToolUtil.isNotEmpty(name)){ points = points.stream() .filter(data -> { String obtName = (String) data.get("name"); return obtName != null && obtName.contains(name); }) .collect(Collectors.toList()); } if (ToolUtil.isNotEmpty(phone)){ points = points.stream() .filter(data -> { String obtPhone = (String) data.get("phone"); return obtPhone != null && obtPhone.contains(phone); }) .collect(Collectors.toList()); } } return points; } /** * 核销操作 * @param id 商品id * @return */ @RequestMapping("/write_off") @ResponseBody public Object GoodsWriteOff(Integer id){ System.out.println(id); return new SuccessTip<>(); } }