puzhibing
2024-01-30 c4addd15f7adca50420f7ced176c4a7192219273
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java
@@ -1,21 +1,41 @@
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.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -26,19 +46,35 @@
@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";
    }
@@ -46,8 +82,142 @@
     * 跳转到添加
     */
    @RequestMapping("/coupon_add")
    public String memberCouponAdd() {
    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;
    }
    /**
@@ -65,8 +235,190 @@
        ofSearch.setUserPopulation(userPopulation);
        ofSearch.setStatus(status);
        ofSearch.setState(state);
        return client.getCouponListOfSearch(ofSearch);
        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<>();
    }
}