framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsExportDTO.java
New file @@ -0,0 +1,36 @@ package cn.lili.modules.goods.entity.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * lmk-shop-java * * @author : zxl * @date : 2025-08-08 10:23 **/ @Data public class GoodsExportDTO { @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "商品编号") private String id; @ApiModelProperty(value = "价格") private Double price; @ApiModelProperty(value = "销售模式") private String salesModel; @ApiModelProperty(value = "商品类型") private String goodsType; @ApiModelProperty(value = "上架状态") private String marketEnable; @ApiModelProperty(value = "审核状态") private String authFlag; @ApiModelProperty(value = "卖家名字") private String storeName; } framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java
@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.web.bind.annotation.RequestBody; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.List; @@ -199,4 +200,6 @@ void addGoodsCommentNum(Integer commentNum, String goodsId); void queryExportGoods(HttpServletResponse response, GoodsSearchParams searchParams); } framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java
@@ -15,10 +15,7 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.goods.entity.dos.*; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.dto.GoodsSortDTO; import cn.lili.modules.goods.entity.dto.*; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.vos.GoodsSkuVO; @@ -50,6 +47,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -57,6 +58,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -314,9 +318,91 @@ return this.page(PageUtil.initPage(goodsSearchParams), goodsSearchParams.queryWrapper()); } @Override public void queryExportGoods(HttpServletResponse response, GoodsSearchParams searchParams) { List<Goods> list = this.list(searchParams.queryWrapper()); XSSFWorkbook workbook = initGoodsExportData(list); try { // 设置响应头 String fileName = URLEncoder.encode("商品清单", "UTF-8"); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); ServletOutputStream out = response.getOutputStream(); workbook.write(out); } catch (Exception e) { e.printStackTrace(); } finally { try { workbook.close(); } catch (Exception e) { e.printStackTrace(); } } } private XSSFWorkbook initGoodsExportData(List<Goods> list) { List<GoodsExportDTO> goodsExportDTOs = new ArrayList<>(); for (Goods goods : list) { GoodsExportDTO goodsExportDTO = new GoodsExportDTO(); BeanUtils.copyProperties(goods, goodsExportDTO); goodsExportDTOs.add(goodsExportDTO); } XSSFWorkbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("商品清单"); Row header = sheet.createRow(0); String[] headers = {"商品名称", "商品编号", "价格", "销售模式", "商品类型", "状态", "审核状态", "店铺名称"}; for (int i = 0; i < headers.length; i++) { Cell cell = header.createCell(i); cell.setCellValue(headers[i]); } for (int i = 0; i < goodsExportDTOs.size(); i++) { GoodsExportDTO goodsExportDTO = goodsExportDTOs.get(i); Row row = sheet.createRow(i + 1); row.createCell(0).setCellValue(goodsExportDTO.getGoodsName()); row.createCell(1).setCellValue(goodsExportDTO.getId()); row.createCell(2).setCellValue(goodsExportDTO.getPrice()); if ("RETAIL".equals(goodsExportDTO.getSalesModel())) { row.createCell(3).setCellValue("零售"); } else if ("WHOLESALE".equals(goodsExportDTO.getSalesModel())) { row.createCell(3).setCellValue("批发"); } else if ("PRESALE".equals(goodsExportDTO.getSalesModel())) { row.createCell(3).setCellValue("预售"); } else { row.createCell(3).setCellValue("其他类型"); } if ("PHYSICAL_GOODS".equals(goodsExportDTO.getGoodsType())) { row.createCell(4).setCellValue("实物商品"); } else if ("VIRTUAL_GOODS".equals(goodsExportDTO.getGoodsType())) { row.createCell(4).setCellValue("虚拟商品"); } else { row.createCell(4).setCellValue("电子卡券"); } if ("DOWN".equals(goodsExportDTO.getMarketEnable())) { row.createCell(5).setCellValue("下架"); } else if ("UPPER".equals(goodsExportDTO.getMarketEnable())) { row.createCell(5).setCellValue("上架"); } if ("TOBEAUDITED".equals(goodsExportDTO.getAuthFlag())) { row.createCell(6).setCellValue("待审核"); } else if ("PASS".equals(goodsExportDTO.getAuthFlag())) { row.createCell(6).setCellValue("通过"); } else if ("REFUSE".equals(goodsExportDTO.getAuthFlag())) { row.createCell(6).setCellValue("拒绝"); } row.createCell(7).setCellValue(goodsExportDTO.getStoreName()); } return workbook; } /** * 商品查询 * *g * @param goodsSearchParams 查询参数 * @return 商品信息 */ @@ -604,6 +690,7 @@ this.baseMapper.addGoodsCommentNum(commentNum, goodsId); } /** * 更新商品状态 * framework/src/main/java/cn/lili/modules/lmk/service/GoodsTagService.java
@@ -48,4 +48,6 @@ * @return */ Result getByGoodsId(String goodsId); Result addOrUpdateTag(GoodsTagForm form); } framework/src/main/java/cn/lili/modules/lmk/service/impl/GoodsTagServiceImpl.java
@@ -12,11 +12,13 @@ import cn.lili.utils.PageUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.stream.Collectors; @@ -62,9 +64,21 @@ public Result getByGoodsId(String goodsId) { LambdaQueryWrapper<GoodsTag> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(GoodsTag::getGoodsId, goodsId); queryWrapper.eq(GoodsTag::getDeleteFlag,Boolean.FALSE); return Result.ok().data(baseMapper.selectList(queryWrapper)); } @Override public Result addOrUpdateTag(GoodsTagForm form) { //已有标签 //删除已有的标签插入最新的标签 baseMapper.delete(new LambdaQueryWrapper<GoodsTag>().eq(GoodsTag::getGoodsId, form.getGoodsId())); if (!CollectionUtils.isEmpty(form.getTagIds())){ this.addGoodsTag(form); } return Result.ok("编辑成功"); } @Override public Result addGoodsTag(GoodsTagForm form) { framework/src/main/java/cn/lili/modules/order/order/entity/dto/CouponExportDetailDTO.java
New file @@ -0,0 +1,77 @@ package cn.lili.modules.order.order.entity.dto; import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum; import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.data.elasticsearch.annotations.DateFormat; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.Date; /** * lmk-shop-java * * @author : zxl * @date : 2025-08-07 17:42 **/ @Data public class CouponExportDetailDTO { @ApiModelProperty(value = "会员名称") private String memberName; @ApiModelProperty(value = "优惠券名称") private String couponName; @ApiModelProperty(value = "商家名称,如果是平台,这个值为 platform") private String storeName; @ApiModelProperty(value = "面额") private Double price; @ApiModelProperty(value = "折扣") private Double discount; @ApiModelProperty(value = "消费门槛") private Double consumeThreshold; /** * @see cn.lili.modules.promotion.entity.enums.CouponGetEnum */ @ApiModelProperty(value = "优惠券类型,分为免费领取和活动赠送") private String getType; /** * @see MemberCouponStatusEnum */ @ApiModelProperty(value = "会员优惠券状态") private String memberCouponStatus; /** * POINT("打折"), PRICE("减免现金"); * * @see cn.lili.modules.promotion.entity.enums.CouponTypeEnum */ @ApiModelProperty(value = "优惠卷类型") private String couponType; /** * @see PromotionsScopeTypeEnum */ @ApiModelProperty(value = "关联范围类型") private String scopeType; @ApiModelProperty(value = "使用起始时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date startTime; @ApiModelProperty(value = "使用截止时间") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis") private Date endTime; } framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
@@ -183,8 +183,6 @@ private COSUtil cosUtil; @Autowired private AdminUserService adminUserService; @Autowired private RoleService roleService; @Override framework/src/main/java/cn/lili/modules/promotion/mapper/MemberCouponMapper.java
@@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; /** * 会员优惠券数据处理层 * @@ -20,4 +22,7 @@ @Select("SELECT mc.*,c.coupon_name FROM li_member_coupon mc LEFT JOIN li_coupon c ON mc.coupon_id = c.id ${ew.customSqlSegment}") Page<MemberCouponVO> getMemberCoupons(Page<MemberCoupon> page, @Param(Constants.WRAPPER) Wrapper<MemberCouponVO> queryWrapper); @Select("SELECT mc.*,c.coupon_name FROM li_member_coupon mc LEFT JOIN li_coupon c ON mc.coupon_id = c.id ${ew.customSqlSegment}") List<MemberCouponVO> getMemberCouponsExport( @Param(Constants.WRAPPER) Wrapper<MemberCouponVO> queryWrapper); } framework/src/main/java/cn/lili/modules/promotion/service/MemberCouponService.java
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -165,6 +166,8 @@ */ Page<MemberCouponVO> getMemberCouponsPage(Page<MemberCoupon> page, MemberCouponSearchParams param); void queryExportCoupon(HttpServletResponse response, MemberCouponSearchParams searchParams); /** * 获取会员领取过的优惠券数量 */ framework/src/main/java/cn/lili/modules/promotion/serviceimpl/MemberCouponServiceImpl.java
@@ -1,5 +1,7 @@ package cn.lili.modules.promotion.serviceimpl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.lili.cache.Cache; import cn.lili.common.enums.ResultCode; @@ -7,6 +9,11 @@ import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.PageVO; import cn.lili.modules.lmk.enums.general.AdminRoleEnum; import cn.lili.modules.order.order.entity.dto.CouponExportDetailDTO; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderExportDetailDTO; import cn.lili.modules.permission.service.AdminUserService; import cn.lili.modules.promotion.entity.dos.Coupon; import cn.lili.modules.promotion.entity.dos.MemberCoupon; import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; @@ -20,6 +27,7 @@ import cn.lili.modules.promotion.service.MemberCouponService; import cn.lili.modules.promotion.tools.PromotionTools; import cn.lili.mybatis.util.PageUtil; import cn.lili.utils.CommonUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -27,6 +35,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; @@ -34,6 +46,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.*; /** @@ -52,6 +67,8 @@ @Autowired private CouponService couponService; @Autowired private AdminUserService adminUserService; /** * 缓存 */ @@ -306,6 +323,26 @@ this.update(updateWrapper); } public List<MemberCouponVO> getMemberCouponsPageExport(MemberCouponSearchParams param){ QueryWrapper<MemberCouponVO> queryWrapper = new QueryWrapper<>(); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberId()), "mc.member_id", param.getMemberId()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getStoreId()), "c.store_id", param.getStoreId()); queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getMemberName()), "mc.member_name", param.getMemberName()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponId()), "mc.coupon_id", param.getCouponId()); queryWrapper.like(CharSequenceUtil.isNotEmpty(param.getCouponName()), "c.coupon_name", param.getCouponName()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getGetType()), "mc.get_type", param.getGetType()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getScopeType()), "mc.scope_type", param.getPromotionStatus()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getCouponType()), "mc.coupon_type", param.getCouponType()); queryWrapper.eq(CharSequenceUtil.isNotEmpty(param.getMemberCouponStatus()), "mc.member_coupon_status", param.getMemberCouponStatus()); if (param.getStartTime() != null) { queryWrapper.ge("mc.start_time", new Date(param.getStartTime())); } if (param.getEndTime() != null) { queryWrapper.le("mc.end_time", new Date(param.getEndTime())); } return this.baseMapper.getMemberCouponsExport(queryWrapper); } @Override public Page<MemberCouponVO> getMemberCouponsPage(Page<MemberCoupon> page, MemberCouponSearchParams param) { QueryWrapper<MemberCouponVO> queryWrapper = new QueryWrapper<>(); @@ -326,7 +363,107 @@ } return this.baseMapper.getMemberCoupons(page, queryWrapper); } @Override public void queryExportCoupon(HttpServletResponse response, MemberCouponSearchParams searchParams) { List<MemberCouponVO> records = this.getMemberCouponsPageExport(searchParams); XSSFWorkbook workbook = initCouponExportData(records); try { // 设置响应头 String fileName = URLEncoder.encode("优惠券领取记录", "UTF-8"); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); ServletOutputStream out = response.getOutputStream(); workbook.write(out); } catch (Exception e) { e.printStackTrace(); } finally { try { workbook.close(); } catch (Exception e) { e.printStackTrace(); } } } private XSSFWorkbook initCouponExportData(List<MemberCouponVO> list){ List<CouponExportDetailDTO> couponExportDetailDTOS = new ArrayList<>(); for (MemberCoupon memberCoupon : list){ CouponExportDetailDTO dto = new CouponExportDetailDTO(); BeanUtil.copyProperties(memberCoupon, dto); couponExportDetailDTOS.add(dto); } System.out.println("-----------------------"); System.out.println(couponExportDetailDTOS); XSSFWorkbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("优惠券领取记录"); Row header = sheet.createRow(0); String[] headers = {"会员名称","优惠券名称","发布店铺","面额/折扣","使用门槛","获取方式" ,"会员优惠券状态","优惠券类型","品类描述","使用起始时间","截止时间"}; for(int i= 0 ;i< headers.length;i++){ Cell cell = header.createCell(i); cell.setCellValue(headers[i]); } //填充数据 for (int i =0 ;i< couponExportDetailDTOS.size();i++){ CouponExportDetailDTO dto = couponExportDetailDTOS.get(i); Row row = sheet.createRow(i+1); row.createCell(0).setCellValue(dto.getMemberName()); row.createCell(1).setCellValue(dto.getCouponName()); if ("platform".equals(dto.getStoreName())){ row.createCell(2).setCellValue("平台"); }else { row.createCell(2).setCellValue(dto.getStoreName()); } if (dto.getDiscount() != null){ row.createCell(3).setCellValue(dto.getDiscount()+"折"); } if (dto.getPrice()!=null){ row.createCell(3).setCellValue(dto.getPrice()+"¥"); } row.createCell(4).setCellValue(dto.getConsumeThreshold()); if("FREE".equals(dto.getGetType())){ row.createCell(5).setCellValue("免费获取"); }else if("ACTIVITY".equals(dto.getGetType())){ row.createCell(5).setCellValue("活动获取"); }else if("lime".equals(dto.getGetType())){ row.createCell(5).setCellValue("内购"); }else if("purple".equals(dto.getGetType())){ row.createCell(5).setCellValue("未知"); } if("NEW".equals(dto.getMemberCouponStatus())){ row.createCell(6).setCellValue("已领取"); }else if("USED".equals(dto.getMemberCouponStatus())){ row.createCell(6).setCellValue("已使用"); }else if("EXPIRE".equals(dto.getMemberCouponStatus())){ row.createCell(6).setCellValue("已过期"); }else if("CLOSED".equals(dto.getMemberCouponStatus())){ row.createCell(6).setCellValue("已作废"); } if("DISCOUNT".equals(dto.getCouponType())){ row.createCell(7).setCellValue("打折"); }else if("PRICE".equals(dto.getCouponType())){ row.createCell(7).setCellValue("减免现金"); }else{ row.createCell(7).setCellValue("未知"); } if ("ALL".equals(dto.getScopeType())) { row.createCell(8).setCellValue("全品类"); }else if ("PORTION_GOODS_CATEGORY".equals(dto.getScopeType())) { row.createCell(8).setCellValue("商品分类"); } else if ("PORTION_SHOP_CATEGORY".equals(dto.getScopeType())) { row.createCell(8).setCellValue("店铺分类"); } else if ("PORTION_GOODS".equals(dto.getScopeType())) { row.createCell(8).setCellValue("指定商品"); } row.createCell(9).setCellValue(DateUtil.formatDateTime(dto.getStartTime())); row.createCell(10).setCellValue(DateUtil.formatDateTime(dto.getEndTime())); } return workbook; } @Override public long getMemberCouponNum(String memberId, String couponId) { LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>(); @@ -335,6 +472,8 @@ return this.count(queryWrapper); } /** * 清除无效的会员优惠券 * manager-api/src/main/java/cn/lili/controller/goods/GoodsManagerController.java
@@ -2,6 +2,7 @@ import cn.lili.common.aop.annotation.DemoSite; import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -17,6 +18,7 @@ import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams; import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; @@ -26,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; import java.util.Arrays; @@ -69,6 +72,12 @@ return ResultUtil.data(goodsService.queryByParams(goodsSearchParams)); } @ApiOperation(value = "查询商品清单导出导出列表") @GetMapping("/queryExportGoods") public void queryExportGoods(GoodsSearchParams searchParams) { HttpServletResponse response = ThreadContextHolder.getHttpResponse(); goodsService.queryExportGoods(response,searchParams);} @ApiOperation(value = "分页获取商品列表") @GetMapping(value = "/sku/list") public ResultMessage<IPage<GoodsSku>> getSkuByPage(GoodsSearchParams goodsSearchParams) { manager-api/src/main/java/cn/lili/controller/lmk/GoodsTagController.java
New file @@ -0,0 +1,35 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.GoodsTagForm; import cn.lili.modules.lmk.service.GoodsTagService; import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** * lmk-shop-java * * @author : zxl * @date : 2025-08-08 15:04 **/ @Validated @RequiredArgsConstructor @Api(value = "商品标签", tags = "商品标签") @RestController @RequestMapping("/manager/lmk/goodsTag") public class GoodsTagController { private final GoodsTagService goodsTagService; @PostMapping("addOrUpdate") public Result addOrUpDateTag(@RequestBody GoodsTagForm form){ return goodsTagService.addOrUpdateTag(form); } @GetMapping("/getGoods/{id}") public Result getGoodSTagById(@PathVariable("id") String goodsId){ return goodsTagService.getByGoodsId(goodsId); } } manager-api/src/main/java/cn/lili/controller/promotion/CouponManagerController.java
@@ -1,5 +1,6 @@ package cn.lili.controller.promotion; import cn.lili.common.context.ThreadContextHolder; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; @@ -24,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -121,6 +123,12 @@ return ResultUtil.data(result); } @ApiOperation(value = "查询优惠卷导出列表") @GetMapping("/queryExportCoupon") public void queryExportCoupon(MemberCouponSearchParams searchParams) { HttpServletResponse response = ThreadContextHolder.getHttpResponse(); memberCouponService.queryExportCoupon(response,searchParams);} private void setStoreInfo(CouponVO couponVO) { AuthUser currentUser = UserContext.getCurrentUser(); if (currentUser == null) {