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.extension.plugins.pagination.Page; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.CityManagerClient; 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.TCityManager; 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.ErrorTip; 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.CouponDataVo; import com.dsh.guns.modular.system.model.Region; import com.dsh.guns.modular.system.model.TCity; import com.dsh.guns.modular.system.model.TStore; import com.dsh.guns.modular.system.service.ICityService; import com.dsh.guns.modular.system.service.IRegionService; import com.dsh.guns.modular.system.service.IStoreService; import com.dsh.guns.modular.system.util.OBSUploadUtil; 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.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 优惠券管理 控制器 */ @Controller @RequestMapping("/tGoods") public class TGoodsController { private String PREFIX = "/system/tGoods/"; @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; /** * 跳转到优惠券管理首页 */ @RequestMapping("") public String index(Model model) { return PREFIX + "TGoods.html"; } /** * 跳转到添加 */ @RequestMapping("/tGoods_add") public String memberCouponAdd(Model model) { Integer objectType = UserExt.getUser().getObjectType(); System.out.println(objectType); model.addAttribute("userType",objectType); List list = cityService.list(new LambdaQueryWrapper().eq(TCity::getParentId, 0)); model.addAttribute("list",list); return PREFIX + "TGoods_add.html"; } @RequestMapping("/coupon_record/{id}") public String memberCouponAdd(@PathVariable Integer id,Model model) { Coupon coupon = client.queryCouponById(id); model.addAttribute("id",id); model.addAttribute("type",coupon.getType()); return PREFIX + "TCouponRecord.html"; } @RequestMapping("/coupon_detail/{id}") public String memberCouponDetail(@PathVariable Integer id,Model model) { Coupon coupon = client.queryCouponById(id); String content = coupon.getContent(); JSONObject jsonObject = JSONObject.parseObject(content); String one =""; String two =""; String three =""; if(coupon.getType()==1){ one = jsonObject.get("conditionalAmount").toString(); two = jsonObject.get("deductionAmount").toString(); } if(coupon.getType()==2){ one = jsonObject.get("conditionalAmount").toString(); } if(coupon.getType()==3){ three = jsonObject.get("experienceName").toString(); } List list = new ArrayList<>(); List list1=null; List list2=new ArrayList<>(); if(coupon.getUseScope()==2){ list = client.queryCity(coupon.getId()); } if(coupon.getUseScope()==3){ list1 = client.queryStore(coupon.getId()); list2 = storeService.list(new LambdaQueryWrapper().in(TStore::getId, list1)); for (TStore tStore : list2) { CityManager cityManager = cmgrClient.queryCityManagerById(tStore.getCityManagerId()); if (ToolUtil.isNotEmpty(cityManager)){ tStore.setProvince(tStore.getProvince()+tStore.getCity()); tStore.setPhone(cityManager.getName()+"-"+cityManager.getPhone()); } } } model.addAttribute("city",list); model.addAttribute("store",list2); model.addAttribute("s",new SimpleDateFormat("yyyy-MM-dd").format(coupon.getStartTime())); model.addAttribute("e",new SimpleDateFormat("yyyy-MM-dd").format(coupon.getEndTime())); model.addAttribute("one",one); model.addAttribute("two",two); model.addAttribute("three",three); ArrayList strings = new ArrayList<>(); String productImages = coupon.getProductImages(); for (String s : productImages.split(",")) { strings.add(s); } model.addAttribute("img",strings); Integer objectType = UserExt.getUser().getObjectType(); System.out.println(objectType); model.addAttribute("item",coupon); return PREFIX + "TCouponInfo.html"; } /** * 跳转到门店管理列表页 */ @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<>(); } /** * 购买详情 * @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); // TODO: 2023/8/15 核销操作 return new SuccessTip<>(); } }