| 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.model.CityManager; | 
| import com.dsh.course.feignClient.account.model.QueryByNamePhone; | 
| import com.dsh.course.feignClient.account.model.TAppUser; | 
| import com.dsh.course.feignClient.activity.CouponClient; | 
| import com.dsh.course.feignClient.activity.model.Coupon; | 
| import com.dsh.course.feignClient.activity.model.CouponCity; | 
| import com.dsh.course.feignClient.activity.model.CouponListOfSearch; | 
| import com.dsh.course.feignClient.activity.model.CouponRecordQuery; | 
| 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.OBSUploadUtil; | 
| import com.dsh.guns.modular.system.util.OssUploadUtil; | 
| import com.dsh.guns.modular.system.util.ResultUtil; | 
| import org.apache.commons.beanutils.ConvertUtils; | 
| 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.*; | 
| import java.util.stream.Collectors; | 
|   | 
|   | 
| /** | 
|  * 优惠券管理 控制器 | 
|  */ | 
|   | 
| @Controller | 
| @RequestMapping("/tCouponManage") | 
| public class TCouponController { | 
|   | 
|     private String PREFIX = "/system/tCoupon/"; | 
|   | 
|     @Resource | 
|     private IRegionService regiService; | 
|   | 
|     @Resource | 
|     private IStoreService storeService; | 
|   | 
|     @Resource | 
|     private CouponClient client; | 
|   | 
|     @Resource | 
|     private CityManagerClient cmgrClient; | 
|   | 
|     @Autowired | 
|     private AppUserClient appUserClient; | 
|     @Autowired | 
|     private IUserService userService; | 
|     @Autowired | 
|     private TOperatorService operatorService; | 
|     @Autowired | 
|     private TOperatorCityService operatorCityService; | 
|   | 
|     /** | 
|      * 跳转到优惠券管理首页 | 
|      */ | 
|     @RequestMapping("") | 
|     public String index(Model model) { | 
|         model.addAttribute("objectType",UserExt.getUser().getObjectType()); | 
|         return PREFIX + "TCoupon.html"; | 
|     } | 
|   | 
|     /** | 
|      * 跳转到添加 | 
|      */ | 
|     @RequestMapping("/coupon_add") | 
|     public String memberCouponAdd(Model model) { | 
|         Integer objectType = UserExt.getUser().getObjectType(); | 
|         System.out.println(objectType); | 
|         model.addAttribute("userType",objectType); | 
|         return PREFIX + "TCouponAdd.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<CouponCity> list = new ArrayList<>(); | 
|         List<Integer> list1=null; | 
|         List<TStore> list2=new ArrayList<>(); | 
|         if(coupon.getUseScope()==2){ | 
|             list = client.queryCity(coupon.getId()); | 
|         } | 
|         if(coupon.getUseScope()==3){ | 
|             // 门店ids | 
|             list1 = client.queryStore(coupon.getId()); | 
|             // 门店集合 | 
|             list2 = storeService.list(new LambdaQueryWrapper<TStore>().in(TStore::getId, list1)); | 
|             for (TStore tStore : list2) { | 
|                 if (coupon.getPublisherType() == 1){ | 
|                     // 获取运营商id | 
|                     Integer operatorId = tStore.getOperatorId(); | 
|                     TOperator operator = operatorService.getById(operatorId); | 
|                     User user = userService.getById(operator.getUserId()); | 
|                     if (ToolUtil.isNotEmpty(user)){ | 
|                         tStore.setProvince(tStore.getProvince()+tStore.getCity()); | 
|                         tStore.setPhone(user.getName()+"-"+user.getPhone()); | 
|                     } | 
|                 } | 
|                 if (coupon.getPublisherType() == 2) { | 
|                     User byId = userService.getById(tStore.getStoreStaffId()); | 
|   | 
|                     tStore.setProvince(tStore.getProvince() + tStore.getCity()); | 
|                         tStore.setPhone(byId.getName() + "-" + byId.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<String> 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); | 
|         model.addAttribute("objectType",objectType); | 
|         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(String provinceId,String cityId,Integer operatorId,String storeName){ | 
|         if (UserExt.getUser().getObjectType()== 2){ | 
|             // 筛选这个运营商下的门店 | 
|             operatorId = UserExt.getUser().getObjectId(); | 
|         } | 
|         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); | 
|         List<Map<String,Object>> storeList = storeService.queryListOfpage(provinceId,cityId,operatorId,storeName,page); | 
|         if (storeList.size() > 0 ){ | 
|             for (Map<String, Object> stringObjectMap : storeList) { | 
|                 String provinceName = (String) stringObjectMap.get("province"); | 
|                 String cityName = (String) stringObjectMap.get("city"); | 
|                 stringObjectMap.put("provinceCity",provinceName+cityName); | 
|                 Integer managerId = (Integer) stringObjectMap.get("operatorId"); | 
|                 if (managerId == null){ | 
|                     stringObjectMap.put("accountName","平台"); | 
|                 }else{ | 
|                     if (managerId==0){ | 
|                         stringObjectMap.put("accountName","平台"); | 
|                     }else{ | 
|                         TOperator operator = operatorService.getOne(new QueryWrapper<TOperator>().eq("id", managerId)); | 
|                         if (ToolUtil.isNotEmpty(operator)){ | 
|                             stringObjectMap.put("accountName",operator.getName()); | 
|                         }else{ | 
|                             stringObjectMap.put("accountName","平台"); | 
|                         } | 
|                     } | 
|                 } | 
|   | 
|   | 
|             } | 
|         } | 
|         return storeList; | 
|     } | 
|   | 
|     /** | 
|      * 获取 优惠券管理 | 
|      */ | 
|     @RequestMapping(value = "/list") | 
|     @ResponseBody | 
|     public Object listOfDatas(String name, Integer type, Integer distributionMethod , Integer userPopulation, Integer status, Integer state) { | 
|         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); | 
|         CouponListOfSearch ofSearch = new CouponListOfSearch(); | 
|         ofSearch.setPage(page); | 
|         ofSearch.setName(name); | 
|         ofSearch.setType(type); | 
|         ofSearch.setDistributionMethod(distributionMethod); | 
|         ofSearch.setUserPopulation(userPopulation); | 
|         ofSearch.setStatus(status); | 
|         ofSearch.setState(state); | 
|         if (UserExt.getUser().getObjectType()==2) { | 
|             // 门店ids | 
|             List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId())) | 
|                     .stream().map(TStore::getId).collect(Collectors.toList()); | 
|             ofSearch.setStoreIds(storeIds); | 
|             ofSearch.setObjType(UserExt.getUser().getObjectType()); | 
|             ofSearch.setOperatorId(UserExt.getUser().getObjectId()); | 
|             // 查询当前门店属于哪个运营商 | 
|             List<TOperatorCity> operatorId = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId", UserExt.getUser().getObjectId())); | 
|             ofSearch.setOperatorCities(operatorId); | 
|         } | 
|         if (UserExt.getUser().getObjectType()==3) { | 
|             ofSearch.setStoreId(UserExt.getUser().getObjectId()); | 
|             ofSearch.setObjType(UserExt.getUser().getObjectType()); | 
|         } | 
|         // 运营商可以查看平台添加的优惠券应只展示使用范围为全国通用、 | 
|         // 指定城市有运营商管辖的、指定门店有运营商旗下门店 | 
|         List<Map<String, Object>> couponListOfSearch = client.getCouponListOfSearch(ofSearch); | 
|   | 
|         return couponListOfSearch; | 
|     } | 
|     /** | 
|      * 根据运营商ID 获取运营商管理的省市 | 
|      */ | 
|   | 
|     /** | 
|      * 获取 优惠券管理 | 
|      */ | 
|     @RequestMapping(value = "/list1") | 
|     @ResponseBody | 
|     public Object listOfDatas1(String name, Integer type, Integer distributionMethod , Integer userPopulation, Integer status, Integer state,String cityCode,Integer storeId) { | 
|         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); | 
|         CouponListOfSearch ofSearch = new CouponListOfSearch(); | 
|         ofSearch.setPage(page); | 
|         ofSearch.setName(name); | 
|         ofSearch.setType(type); | 
|         ofSearch.setDistributionMethod(distributionMethod); | 
|         ofSearch.setUserPopulation(userPopulation); | 
|         ofSearch.setStatus(status); | 
|         ofSearch.setState(state); | 
|         ofSearch.setCityCode(cityCode); | 
|         ofSearch.setStoreId(storeId); | 
|         ofSearch.setObjType(UserExt.getUser().getObjectType()); | 
|         ofSearch.setOperatorId(UserExt.getUser().getObjectId()); | 
|         return client.getCouponListOfSearch1(ofSearch); | 
|     } | 
|   | 
|   | 
|   | 
|     @RequestMapping(value = "/listRecord") | 
|     @ResponseBody | 
|     public Object listRecord(Integer id,String name, Integer type, String phone) { | 
|         Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); | 
|         List<TAppUser> 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<Map<String, Object>> maps = client.listRecord(ofSearch); | 
|         for (Map<String, Object> 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<Region>() | 
|                 .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<Region>() | 
|                 .eq(Region::getParentId,province)); | 
|     } | 
|     @RequestMapping(value = "/getCity1") | 
|     @ResponseBody | 
|     public Object getCity1(String province){ | 
|         // 获取省的id | 
|         Integer code = regiService.getOne(new QueryWrapper<Region>().eq("code", province)).getId(); | 
|         return regiService.list(new LambdaQueryWrapper<Region>() | 
|                 .eq(Region::getParentId,code)); | 
|     } | 
|     // 通过市 获取运营商 | 
|     @RequestMapping(value = "/getOperator") | 
|     @ResponseBody | 
|     public Object getOperator(String city){ | 
|         List<TOperatorCity> name = operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("name", city)); | 
|         List<Integer> collect = name.stream().map(TOperatorCity::getOperatorId) | 
|                 .collect(Collectors.toList()); | 
|         if (collect.size()==0){ | 
|             return new ArrayList<>(); | 
|         } | 
|         return operatorService.list(new QueryWrapper<TOperator>().in("id",collect)); | 
|     } | 
|   | 
|     @RequestMapping(value = "/uploadPic") | 
|     @ResponseBody | 
|     public Object add(@RequestParam("file") MultipartFile imgFile) throws IOException { | 
|         if (imgFile != null){ | 
|         String originalFilename = imgFile.getOriginalFilename(); | 
|         String newName = originalFilename.substring(imgFile.getOriginalFilename().lastIndexOf(".")); | 
|         String url = OssUploadUtil.ossUpload("img/",imgFile); | 
|         Map<String, String> map = new HashMap<String, String>(); | 
|         //是否上传成功 | 
|         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; | 
|         } | 
|         return ResultUtil.success(); | 
|     } | 
|   | 
|     /** | 
|      * 提交添加 | 
|      */ | 
|     @PostMapping(value = "/commitData") | 
|     @ResponseBody | 
|     public Object commitData( CouponDataVo dataVo){ | 
|         System.out.println(dataVo); | 
|         Integer objectType = UserExt.getUser().getObjectType(); | 
|         dataVo.setUserType(objectType); | 
|         dataVo.setCityManagerId(UserExt.getUser().getObjectId()); | 
|         if(UserExt.getUser().getObjectType()==2){ | 
|             dataVo.setCompany(3); | 
|             dataVo.setUserType(2); | 
|             dataVo.setCityManagerId(UserExt.getUser().getObjectId()); | 
|         }else if(UserExt.getUser().getObjectType()==3){ | 
|             dataVo.setStoreIds(UserExt.getUser().getObjectId().toString()); | 
|             dataVo.setCompany(3); | 
|             dataVo.setUserType(3); | 
|         }else{ | 
|             dataVo.setUserType(1); | 
|         } | 
|         dataVo.setObjType(UserExt.getUser().getObjectType()); | 
|         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); | 
|         if (UserExt.getUser().getObjectType()==3) { | 
|             coupon.setAuditStatus(1); | 
|         } | 
|         client.updateCouponData(coupon); | 
|         return new SuccessTip<>(); | 
|     } | 
| } |