无关风月
2025-05-08 9486766c806fe1d9e082b2fd02ea1cc558f1b443
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java
@@ -13,33 +13,35 @@
import com.dsh.course.feignClient.activity.CouponClient;
import com.dsh.course.feignClient.activity.PointMercharsClient;
import com.dsh.course.feignClient.activity.model.*;
import com.dsh.course.feignClient.course.CourseClient;
import com.dsh.course.feignClient.course.CoursePackageClient;
import com.dsh.course.feignClient.course.model.CoursePackagePaymentConfig;
import com.dsh.course.feignClient.course.model.TCoursePackage;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
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.model.*;
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.service.ITSiteService;
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.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@@ -54,11 +56,13 @@
    private String PREFIX = "/system/tGoods/";
    private String PREFIX1 = "/system/tGoodsAudit/";
    @Resource
    private IRegionService regiService;
    @Autowired
    private ITSiteService siteService;
    @Resource
    private IStoreService storeService;
@@ -73,6 +77,11 @@
    @Autowired
    private ICityService cityService;
    @Autowired
    private CourseClient courseClient;
    @Autowired
    private CoursePackageClient coursePackageClient;
    @Resource
    private PointMercharsClient pointMercharsClient;
@@ -86,6 +95,11 @@
        return PREFIX + "TGoods.html";
    }
    @RequestMapping("/audit")
    public String audit(Model model) {
        return PREFIX1 + "TGoodsAudit.html";
    }
    /**
     * 跳转到添加
@@ -97,20 +111,90 @@
        model.addAttribute("userType",objectType);
        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",list);
        List<Map<String,Object>> listOne =  courseClient.getPageageType();
        model.addAttribute("courseType",listOne);
        return PREFIX + "TGoods_add.html";
    }
    /**
     * 跳转到添加
     */
    @RequestMapping("/tGoods_info")
    public String tGoodsInfo(Model model) {
        Integer objectType = UserExt.getUser().getObjectType();
        System.out.println(objectType);
        model.addAttribute("userType",objectType);
        List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",list);
        return PREFIX + "TGoods_detail_one.html";
    }
    @RequestMapping("/goods_info/{id}")
    public String memberCouponInfo(@PathVariable Integer id, Model model) {
        PointsMerchandise pointMercharsVo = pointMercharsClient.queryPointMerchaseById(id);
        model.addAttribute("item",pointMercharsVo);
        if(pointMercharsVo.getType()==2){
            Date startTime = pointMercharsVo.getStartTime();
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            model.addAttribute("sTime",format.format(startTime));
            model.addAttribute("eTime",format.format(pointMercharsVo.getEndTime()));
            Integer shopId = pointMercharsClient.getshopName(id);
            TStore byId = storeService.getById(shopId);
            model.addAttribute("shopName",byId.getName());
            Integer coursePackageId = pointMercharsVo.getCoursePackageId();
            List<String> name = courseClient.queryPackageById(coursePackageId);
            if(null != name){
                model.addAttribute("typeName",name.get(0));
                model.addAttribute("pageName",name.get(1));
            }else{
                model.addAttribute("typeName", "");
                model.addAttribute("pageName", "");
            }
            Integer coursePackageId1 = pointMercharsVo.getCoursePackageId();
            List<CoursePackagePaymentConfig> hoursByPackageId = courseClient.getHoursByPackageId(coursePackageId1);
            model.addAttribute("classHours",hoursByPackageId);
            String productImages = pointMercharsVo.getProductImages();
            ArrayList<String> strings = new ArrayList<>();
            for (String s : productImages.split(",")) {
                strings.add(s);
            }
            model.addAttribute("pictures",strings);
            return PREFIX + "TGoods_detail_two.html";
        }else {
            GoodsInfoOneVo infoOneVo = pointMercharsClient.queryDetailsOfGoods(id);
            System.out.println("pointMercharsVo:"+infoOneVo);
            model.addAttribute("item",infoOneVo);
            String[] split = infoOneVo.getPics().split(",");
            List<String> list = Arrays.asList(split);
            if (infoOneVo.getUseScope() == 2){
                List<StoreVos> provinces = pointMercharsClient.getProvinces(id);
                model.addAttribute("city",provinces);
            }
            if (infoOneVo.getUseScope() == 3){
                List<StoreVos> storeVos = pointMercharsClient.getStoreList(id);
                model.addAttribute("store",storeVos);
            }
            // 门票选的指定场地
            if (infoOneVo.getUseScope() == 4){
                List<StoreVos> storeVos = pointMercharsClient.getStoreList(id);
                model.addAttribute("sites",storeVos);
            }
            model.addAttribute("pictures",list);
            model.addAttribute("exchangeMethod",infoOneVo.getExchangeMethod());
            return PREFIX + "TGoods_detail_one.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) {
@@ -175,7 +259,27 @@
     */
    @RequestMapping("/storeList")
    public String storePage(Model model) {
        List<TCity> provinceList = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",provinceList);
        return PREFIX + "TStoreList.html";
    }
    /**
     * 跳转到门店管理列表页
     */
    @RequestMapping("/storeList1")
    public String storePage1(Model model) {
        List<TCity> provinceList = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",provinceList);
        return PREFIX + "TStoreListOne.html";
    }
    // 场地列表
    @RequestMapping("/siteList1")
    public String storePage2(Model model) {
        List<TCity> provinceList = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
        model.addAttribute("list",provinceList);
        return PREFIX + "TSiteListOne.html";
    }
    @RequestMapping("/updateType")
    @ResponseBody
@@ -304,15 +408,199 @@
        client.insertIntoData(dataVo);
        return new SuccessTip<>();
    }
    /**
     *  编辑 商品详情
     * @param pointMerchandiseId 商品Id
     * @param quantityIssued 发放数量
     * @param pickUpQuantity 限领数量
     * @param redemptionInstructions 说明
     * @param cover 封面图
     * @param productImages 商品图片
     * @param sort 排序
     * @return
     */
    @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);
    public Object update(String name, Integer pointMerchandiseId,Integer quantityIssued,Integer pickUpQuantity,
                          String redemptionInstructions,String cover,String productImages,Integer sort){
        Map<String, Object> stringObjectHashMap = new HashMap<>();
        stringObjectHashMap.put("name",name);
        stringObjectHashMap.put("pointMerchandiseId",pointMerchandiseId);
        stringObjectHashMap.put("quantityIssued",quantityIssued);
        stringObjectHashMap.put("pickUpQuantity",pickUpQuantity);
        stringObjectHashMap.put("redemptionInstructions",redemptionInstructions);
        stringObjectHashMap.put("cover",cover);
        stringObjectHashMap.put("productImages",productImages);
        stringObjectHashMap.put("sort",sort);
        stringObjectHashMap.put("type",UserExt.getUser().getObjectType());
        System.out.println(stringObjectHashMap);
        pointMercharsClient.updateGoodsDetail(stringObjectHashMap);
        return new SuccessTip<>();
    }
    /*
    ajax.set("typeAll",typeAll);
        ajax.set("provinceCode",pCode);
        ajax.set("cityCode",cCode);
        ajax.set("storeId",storeId);
        ajax.set("coursePackageTypeId",coursePackageTypeId);
        ajax.set("coursePackageId",coursePackageId);
        ajax.set("coursePackageConfigId",coursePackageConfigId);
        ajax.set("price",price);
        ajax.set("type",type);
        ajax.set("integral",integral);
        ajax.set("cash",cash);
        ajax.set("cover",cover1);
        ajax.set("imgOne",imgOne);
        ajax.set("userPopulation",userPopulation);
        ajax.set("quantityIssued",quantityIssued);
        ajax.set("pickUpQuantity",pickUpQuantity);
        ajax.set("startTime",startTime);
        ajax.set("text",text);
        ajax.set("sort",sort);
        ajax.set("useScope",company);
        ajax.set("cityIds",cts);
        ajax.set("storeIds",stores);
     */
    @PostMapping(value = "/add")
    @ResponseBody
    public Object add( Integer typeAll,String provinceCode,String cityCode,Integer storeId,Integer coursePackageTypeId,Integer coursePackageId,Integer coursePackageConfigId,
                       Double price,Integer type,Integer integral,Double cash,String cover,String imgOne,Integer userPopulation,Integer quantityIssued,Integer pickUpQuantity,
                       String startTime,String text,Integer sort,String name,Integer useScope,String cityIds,String storeIds,String sites,Integer cardType
    ) throws ParseException {
        // 判断当前选择的课包 是不是假期课 然后判断选择的有效期是否在假期课有效期内
        if (coursePackageId!=null){
            TCoursePackage tCoursePackage = coursePackageClient.queryById(coursePackageId);
            if (tCoursePackage.getType()==2){
                // 如果是假期课 获取到当前课包的开始时间和结束时间
                Date endTime = tCoursePackage.getEndTime();
                Date startTime1 = tCoursePackage.getStartTime();
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                Date s = format.parse(startTime.split(" - ")[0]);
                Date e = format.parse(startTime.split(" - ")[1]);
                if (s.before(startTime1)){
                    // 有效期开始时间小于假期课开始时间
                    return 5009;
                }
                if (e.after(endTime)){
                    // 有效期结束时间大于假期课结束时间
                    return 5008;
                }
            }
        }
        PointsMerchandise pointsMerchandise = new PointsMerchandise();
        pointsMerchandise.setAddUserId(UserExt.getUser().getObjectId());
        pointsMerchandise.setAddType(UserExt.getUser().getObjectType());
        pointsMerchandise.setType(typeAll);
        pointsMerchandise.setName(name);
        pointsMerchandise.setCoursePackageId(coursePackageId);
        pointsMerchandise.setPrice(new BigDecimal(price));
        pointsMerchandise.setRedemptionMethod(type);
        if(type==2 || type==3){
            pointsMerchandise.setCash(new BigDecimal(cash));
        }
        if(type==1 || type==2){
            pointsMerchandise.setIntegral(integral);
        }
        pointsMerchandise.setCover(cover);
        pointsMerchandise.setProductImages(imgOne);
        pointsMerchandise.setUserPopulation(userPopulation);
        pointsMerchandise.setCardType(cardType);
        pointsMerchandise.setQuantityIssued(quantityIssued);
        pointsMerchandise.setPickUpQuantity(pickUpQuantity);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        pointsMerchandise.setStartTime(format.parse(startTime.split(" - ")[0]));
        pointsMerchandise.setEndTime(format.parse(startTime.split(" - ")[1]));
        if (UserExt.getUser().getObjectType()==3){
            if (StringUtils.hasLength(sites)){
                useScope = 4;
                storeIds="";
                pointsMerchandise.setUseScope(4);
            }else{
                useScope = 3;
                pointsMerchandise.setUseScope(3);
            }
        }else{
            pointsMerchandise.setUseScope(useScope);
        }
        if(ToolUtil.isNotEmpty(provinceCode)){
            TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, provinceCode));
            pointsMerchandise.setProvinceCode(provinceCode);
            pointsMerchandise.setProvince(one.getName());
        }
        if(ToolUtil.isNotEmpty(cityCode)){
            TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, cityCode));
            pointsMerchandise.setCityCode(cityCode);
            pointsMerchandise.setCity(one.getName());
        }
        pointsMerchandise.setRedemptionInstructions(text);
        pointsMerchandise.setSort(sort);
        pointsMerchandise.setState(1);
        pointsMerchandise.setInsertTime(new Date());
        pointsMerchandise.setCoursePackageConfigId(coursePackageConfigId);
        if(UserExt.getUser().getObjectType()!=1){
            pointsMerchandise.setStatus(2);
        }
        // 代替storeId
        pointsMerchandise.setShelves(1);
        if(typeAll!=2){
            if(useScope==2){
                ArrayList<Map<String,String>> objects = new ArrayList<>();
                for (String s : cityIds.split(",")) {
                    TCity tCity = cityService.getById(Integer.valueOf(s));
                    HashMap<String, String> map = new HashMap<>();
                    TCity pCity = cityService.getById(tCity.getParentId());
                    map.put("pName",pCity.getName());
                    map.put("pCode",pCity.getCode());
                    map.put("cName",tCity.getName());
                    map.put("cCode",tCity.getCode());
                    map.put("id","0");
                    objects.add(map);
                }
                pointMercharsClient.addCitys(objects);
            }else if(useScope==3||useScope==4){
                if(UserExt.getUser().getObjectType()==3){
                    storeIds=UserExt.getUser().getObjectId().toString();
                }
                if (useScope==4){
                    storeIds ="";
                }
                if (useScope==3){
                    sites ="";
                }
                if (StringUtils.hasLength(storeIds)){
                Integer oid=null;
                String[] split = storeIds.split(",");
                for (int i = 0; i < split.length; i++) {
                    if(i==0){
                        Integer operatorId = storeService.getById(split[0]).getOperatorId();
                        oid=operatorId;
                    }
                    Integer operatorId = storeService.getById(split[i]).getOperatorId();
                    if(oid!=operatorId){
                        return "5003";
                    }
                }
                }
                Integer id = pointMercharsClient.add(pointsMerchandise);
                String pam = id+"_"+storeIds+"_"+sites;
                // 添加多个城市 门店 场地
                try{
                    pointMercharsClient.addOther(pam);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }else if(useScope==1){
                Integer id = pointMercharsClient.add(pointsMerchandise);
            }
        }else {
            pointsMerchandise.setShelves(storeId);
            pointsMerchandise.setUseScope(3);
            Integer id = pointMercharsClient.add(pointsMerchandise);
        }
        return new SuccessTip<>();
    }
@@ -335,20 +623,58 @@
        System.out.println(ofSearch);
        return pointMercharsClient.getIntegralGoodsListOfSearch(ofSearch);
    }
    @RequestMapping(value = "/listAudit")
    @ResponseBody
    public Object listOfIntegralGoodsAudit(String name, Integer type, Integer redemptionMethod , Integer userPopulation, Integer activeStatus) {
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        IntegralGoodsOfSearch ofSearch = new IntegralGoodsOfSearch();
        ofSearch.setPage(page);
        ofSearch.setName(name);
        ofSearch.setType(type);
        ofSearch.setRedemptionMethod(redemptionMethod);
        ofSearch.setUserPopulation(userPopulation);
        ofSearch.setActiveStatus(activeStatus);
        return pointMercharsClient.getIntegralGoodsListOfSearchAudit(ofSearch);
    }
    @RequestMapping(value = "/updateTypeOne")
    @ResponseBody
    public Object updateTypeOne(Integer id, Integer type, String remark) {
        Object o = pointMercharsClient.updateType(id + "_" + type + "_" + remark);
        return SUCCESS_TIP;
    }
    /**
     * 跳转到修改车辆管理
     * 跳转到修改商品详情
     */
    @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(",");
        StringBuilder concatenatedString = new StringBuilder();
        for (String element : split) {
            concatenatedString.append(element).append(",");
        }
        // 去除末尾的逗号
        if (concatenatedString.length() > 0) {
            concatenatedString.setLength(concatenatedString.length() - 1);
        }
        String result = concatenatedString.toString();
        model.addAttribute("id",id);
        model.addAttribute("item",pointMercharsVo);
        model.addAttribute("pictures",split);
        model.addAttribute("pictures",result);
        return PREFIX + "TGoods_edit.html";
    }
@@ -382,10 +708,21 @@
    public String payOfDetails(@PathVariable(value = "id") Integer id,Model model) {
        System.out.println(id);
        model.addAttribute("id",id);
        PointsMerchandise byId = pointMercharsClient.getById(id);
        model.addAttribute("type",byId.getType());
        return PREFIX + "TGoods_pay.html";
    }
    /**
     *  购买详情
     * @param id 商品id
     * @return
     */
    @RequestMapping("/tPay_detail1/{id}")
    public String payOfDetailsOne(@PathVariable(value = "id") Integer id,Model model) {
        System.out.println(id);
        model.addAttribute("id",id);
        return PREFIX + "TGoods_payOne.html";
    }
    /**
     * 获取 购买记录列表
     */
@@ -398,9 +735,18 @@
        payedVo.setPhone(phone);
        payedVo.setStatus(status);
        List<Map<String,Object>> points = pointMercharsClient.queryUserPayedGoodsList(payedVo);
        System.out.println(points);
            System.out.println(points);
        if (points.size() > 0 ){
            for (Map<String, Object> point : points) {
                Object id1 = point.get("id");
                String idAsString = String.valueOf(id1);
                // 移除原始的 "id" 键
                point.remove("id");
                // 将字符串类型的 "id" 放回 Map 对象中
                point.put("id", idAsString);
                Integer userId = (Integer) point.get("userId");
                TAppUser tAppUser = appUserClient.queryById(userId);
                if (ToolUtil.isNotEmpty(tAppUser)){
@@ -451,4 +797,7 @@
    }
}