Commit 64a273d0 authored by shiyu's avatar shiyu

盲盒

parent 326120bb
...@@ -43,7 +43,17 @@ ...@@ -43,7 +43,17 @@
<artifactId>qcloudsms</artifactId> <artifactId>qcloudsms</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.qcloud</groupId> <groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId> <artifactId>cos_api</artifactId>
<exclusions> <exclusions>
......
...@@ -58,6 +58,7 @@ public class DistributionEnum { ...@@ -58,6 +58,7 @@ public class DistributionEnum {
AUCTION_PERFORMANCE(5, "竞拍专场"), AUCTION_PERFORMANCE(5, "竞拍专场"),
GROUP_PURCHASE(6, "团购"), GROUP_PURCHASE(6, "团购"),
EXCHANGE(7, "交换"), EXCHANGE(7, "交换"),
BLACK(8, "盲盒"),
; ;
private int code; private int code;
......
...@@ -64,6 +64,8 @@ public enum ResultCode { ...@@ -64,6 +64,8 @@ public enum ResultCode {
NOT_CONFIRM_PRICE_FOR_SEND(30005, "请先确认是否满意货品的初步估价"), NOT_CONFIRM_PRICE_FOR_SEND(30005, "请先确认是否满意货品的初步估价"),
PAY_FAILED(30010, "支付失败"), PAY_FAILED(30010, "支付失败"),
ITEM_UPLOADED(41000, "商品已经上架过"),
; ;
int code; int code;
......
package com.wwdz.ch.core.util;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.swing.filechooser.FileSystemView;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
public class QRCodeUtil {
private static final Logger logger = LoggerFactory.getLogger(QRCodeUtil.class);
//CODE_WIDTH:二维码宽度,单位像素
private static final int CODE_WIDTH = 400;
//CODE_HEIGHT:二维码高度,单位像素
private static final int CODE_HEIGHT = 400;
//FRONT_COLOR:二维码前景色,0x000000 表示黑色
private static final int FRONT_COLOR = 0x000000;
//BACKGROUND_COLOR:二维码背景色,0xFFFFFF 表示白色
//演示用 16 进制表示,和前端页面 CSS 的取色是一样的,注意前后景颜色应该对比明显,如常见的黑白
private static final int BACKGROUND_COLOR = 0xFFFFFF;
// 中间图片的路径
private static final String imagePath = "resources/images/**.png";
public static void createCodeToFile(String content, File codeImgFileSaveDir, String fileName) {
try {
if (StringUtils.isBlank(content) || StringUtils.isBlank(fileName)) {
return;
}
content = content.trim();
if (codeImgFileSaveDir==null || codeImgFileSaveDir.isFile()) {
//二维码图片存在目录为空,默认放在桌面...
codeImgFileSaveDir = FileSystemView.getFileSystemView().getHomeDirectory();
}
if (!codeImgFileSaveDir.exists()) {
//二维码图片存在目录不存在,开始创建...
codeImgFileSaveDir.mkdirs();
}
//核心代码-生成二维码
BufferedImage bufferedImage = getBufferedImage(content);
File codeImgFile = new File(codeImgFileSaveDir, fileName);
ImageIO.write(bufferedImage, "png", codeImgFile);
logger.info("二维码图片生成成功:" + codeImgFile.getPath());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 生成二维码并输出到输出流, 通常用于输出到网页上进行显示,输出到网页与输出到磁盘上的文件中,区别在于最后一句 ImageIO.write
* write(RenderedImage im,String formatName,File output):写到文件中
* write(RenderedImage im,String formatName,OutputStream output):输出到输出流中
* @param content :二维码内容
* @param outputStream :输出流,比如 HttpServletResponse 的 getOutputStream
*/
public static void createCodeToBase64(String content, OutputStream outputStream) {
try {
if (StringUtils.isBlank(content)) {
return;
}
content = content.trim();
//核心代码-生成二维码
BufferedImage bufferedImage = getBufferedImage(content);
//区别就是这一句,输出到输出流中,如果第三个参数是 File,则输出到文件中
ImageIO.write(bufferedImage, "png", outputStream);
logger.info("二维码图片生成到输出流成功...");
} catch (Exception e) {
e.printStackTrace();
}
}
//这里是发到前端一个base64的字符串,
//前端 this.base64Data = "data:img/jpg;base64," + get_to_url.data.fxORCode 这样接受即可
public static String createCodeToBase64(String content) {
String encode = null;
try {
if (StringUtils.isBlank(content)) {
return null;
}
content = content.trim();
//核心代码-生成二维码
BufferedImage bufferedImage = getBufferedImage(content);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//区别就是这一句,输出到输出流中,如果第三个参数是 File,则输出到文件中
ImageIO.write(bufferedImage, "png", byteArrayOutputStream);
BASE64Encoder base64Encoder = new BASE64Encoder();
encode = base64Encoder.encode(byteArrayOutputStream.toByteArray());
logger.info("二维码图片生成到输出流成功.");
} catch (Exception e) {
e.printStackTrace();
}
return encode;
}
//核心代码-生成二维码
public static BufferedImage getBufferedImage(String content) throws WriterException {
//com.google.zxing.EncodeHintType:编码提示类型,枚举类型
Map<EncodeHintType, Object> hints = new HashMap();
//EncodeHintType.CHARACTER_SET:设置字符编码类型
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//EncodeHintType.ERROR_CORRECTION:设置误差校正
//ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
//不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
//EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
hints.put(EncodeHintType.MARGIN, 1);
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints);
BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR);
for (int x = 0; x < CODE_WIDTH; x++) {
for (int y = 0; y < CODE_HEIGHT; y++) {
bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
}
}
//QRImgCenter(bufferedImage);//如果需要添加中间小图标,这里放开即可
return bufferedImage;
}
//创建中间图片
private static BufferedImage QRImgCenter(BufferedImage bufferedImage) throws IOException {
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attr.getRequest();
// 得到一个Graphics2D对象,并将其设置为输出图像
Graphics2D graphics2D = bufferedImage.createGraphics();
graphics2D.drawImage(bufferedImage, 0, 0, null);
// 设置中间图片
BufferedImage watermarkImage = ImageIO.read(new File(request.getServletContext().getRealPath("/") + imagePath));
int watermarkWidth = watermarkImage.getWidth();
int watermarkHeight = watermarkImage.getHeight();
int x = (bufferedImage.getWidth() - watermarkWidth) / 2;
int y = (bufferedImage.getHeight() - watermarkHeight) / 2;
graphics2D.drawImage(watermarkImage, x, y, null);
graphics2D.drawString("", x, y);
return bufferedImage;
}
}
package com.wwdz.ch.db.dao;
import com.wwdz.ch.db.domain.ItemTagOperateRecord;
import com.wwdz.ch.db.dto.request.ItemTagOperateRecordRequestDto;
import java.util.List;
public interface ItemTagOperateRecordDao {
/**
* 保存制作标签的记录
* @param itemTagOperateRecord
* @return
*/
int insert(ItemTagOperateRecord itemTagOperateRecord);
/**
* 查询制作记录
* @param dto
* @return
*/
List<ItemTagOperateRecord> findByPage(ItemTagOperateRecordRequestDto dto);
}
package com.wwdz.ch.db.dto.request;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
@Data
public class ItemTagOperateRecordRequestDto extends BaseRequestDto implements Entity {
private Long id;
/**
* 商品id
*/
private Long itemId;
/**
* 类目id
*/
private Integer categoryId;
/**
* 类目名称
*/
private String categoryName;
/**
* 创建时间
*/
private Date createTime;
/**
* 操作人id
*/
private Long operatorId;
/**
* 图片
*/
private String images;
}
package com.wwdz.ch.db.impl;
import com.github.pagehelper.PageHelper;
import com.wwdz.ch.db.dao.ItemTagOperateRecordDao;
import com.wwdz.ch.db.domain.ItemTagOperateRecord;
import com.wwdz.ch.db.domain.ItemTagOperateRecordExample;
import com.wwdz.ch.db.domain.distribution.DistributionOrderExample;
import com.wwdz.ch.db.dto.request.ItemTagOperateRecordRequestDto;
import com.wwdz.ch.db.mapper.ItemTagOperateRecordMapper;
import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class ItemTagOperateRecordDaoImpl implements ItemTagOperateRecordDao {
@Autowired
ItemTagOperateRecordMapper itemTagOperateRecordMapper;
@Override
public int insert(ItemTagOperateRecord itemTagOperateRecord) {
return itemTagOperateRecordMapper.insert(itemTagOperateRecord);
}
@Override
public List<ItemTagOperateRecord> findByPage(ItemTagOperateRecordRequestDto dto) {
ItemTagOperateRecordExample example = new ItemTagOperateRecordExample();
ItemTagOperateRecordExample.Criteria criteria = example.createCriteria();
criteria.andOperatorIdEqualTo(dto.getOperatorId());
example.setOrderByClause("create_time desc");
PageHelper.startPage(dto.getPage(), dto.getLimit());
return itemTagOperateRecordMapper.selectByExampleWithBLOBs(example);
}
}
package com.wwdz.ch.db.mapper;
import com.wwdz.ch.db.domain.ItemTagOperateRecord;
import com.wwdz.ch.db.domain.ItemTagOperateRecordExample;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface ItemTagOperateRecordMapper {
long countByExample(ItemTagOperateRecordExample example);
int deleteByExample(ItemTagOperateRecordExample example);
int deleteByPrimaryKey(Long id);
int insert(ItemTagOperateRecord record);
int insertSelective(ItemTagOperateRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item_tag_operate_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
ItemTagOperateRecord selectOneByExample(ItemTagOperateRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item_tag_operate_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
ItemTagOperateRecord selectOneByExampleSelective(@Param("example") ItemTagOperateRecordExample example, @Param("selective") ItemTagOperateRecord.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item_tag_operate_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
ItemTagOperateRecord selectOneByExampleWithBLOBs(ItemTagOperateRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item_tag_operate_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<ItemTagOperateRecord> selectByExampleSelective(@Param("example") ItemTagOperateRecordExample example, @Param("selective") ItemTagOperateRecord.Column ... selective);
List<ItemTagOperateRecord> selectByExampleWithBLOBs(ItemTagOperateRecordExample example);
List<ItemTagOperateRecord> selectByExample(ItemTagOperateRecordExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table item_tag_operate_record
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
ItemTagOperateRecord selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") ItemTagOperateRecord.Column ... selective);
ItemTagOperateRecord selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") ItemTagOperateRecord record, @Param("example") ItemTagOperateRecordExample example);
int updateByExampleWithBLOBs(@Param("record") ItemTagOperateRecord record, @Param("example") ItemTagOperateRecordExample example);
int updateByExample(@Param("record") ItemTagOperateRecord record, @Param("example") ItemTagOperateRecordExample example);
int updateByPrimaryKeySelective(ItemTagOperateRecord record);
int updateByPrimaryKeyWithBLOBs(ItemTagOperateRecord record);
int updateByPrimaryKey(ItemTagOperateRecord record);
}
\ No newline at end of file
...@@ -51,6 +51,7 @@ public class WebMvcConfiguration implements WebMvcConfigurer { ...@@ -51,6 +51,7 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
"/wx/exchange/findExchangeItem", "/wx/specialPerformance/findInfos", "/wx/specialPerformance/findItemList", "/wx/exchange/findExchangeItem", "/wx/specialPerformance/findInfos", "/wx/specialPerformance/findItemList",
"/wx/groupPurchase/findList", "/wx/groupPurchase/findItemDetail", "/wx/exchangeApplyOrder/handleApplyOrder", "/wx/supplierItem/findDiscountList" "/wx/groupPurchase/findList", "/wx/groupPurchase/findItemDetail", "/wx/exchangeApplyOrder/handleApplyOrder", "/wx/supplierItem/findDiscountList"
//下列路径上线注释 //下列路径上线注释
,"/wx/itemTagOperate/**"
/* ,"/wx/specialPerformance/**" /* ,"/wx/specialPerformance/**"
, "/wx/supplierItem/**", "/wx/shareRecord/**", "/wx/distributionOrder/**", "/wx/selfPage/**", "/wx/auctionRecord/**", , "/wx/supplierItem/**", "/wx/shareRecord/**", "/wx/distributionOrder/**", "/wx/selfPage/**", "/wx/auctionRecord/**",
"/wx/shareRecord/**","/wx/collectionBook/**", "/wx/collectedRecord/**", "/wx/collectionItemsRelation/**","/wx/collectionShareRecord/**" "/wx/shareRecord/**","/wx/collectionBook/**", "/wx/collectedRecord/**", "/wx/collectionItemsRelation/**","/wx/collectionShareRecord/**"
......
package com.wwdz.ch.wx.entity.request;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class ItemTagOperateRequestDto implements Entity {
/**
* 类目id
*/
private Integer categoryId;
/**
* 类目名称
*/
private String categoryName;
/**
* 创建时间
*/
private Date createTime;
/**
* 操作人id
*/
private Long operatorId;
/**
* 图片
*/
private List<String> images;
}
package com.wwdz.ch.wx.entity.vo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
@Data
public class ItemTagOperateRecordVo implements Entity {
}
package com.wwdz.ch.wx.entity.vo;
import com.xxdxxs.entity.Entity;
import lombok.Data;
@Data
public class ItemTagPrintInfo implements Entity {
private String qrCode;
private String itemName;
private String tip = "扫描微信二维码了解钱币详情";
private String logo = "https://cdn.wanwudezhi.com/static/web-static/image/32cd96a80a166444b3e472a5bf2a2274_425x176.png";
}
package com.wwdz.ch.wx.impl;
import com.github.pagehelper.PageInfo;
import com.wwdz.ch.core.api.WxAppletApi;
import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.SupplierItemEnum;
import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.QRCodeUtil;
import com.wwdz.ch.db.dao.CategoryDao;
import com.wwdz.ch.db.dao.ItemTagOperateRecordDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.Category;
import com.wwdz.ch.db.domain.ItemTagOperateRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.ItemTagOperateRecordRequestDto;
import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
import com.wwdz.ch.wx.entity.vo.ItemTagPrintInfo;
import com.wwdz.ch.wx.service.ItemTagOperateService;
import com.xxdxxs.utils.EntityMapper;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Service
public class ItemTagOperateServiceImpl implements ItemTagOperateService {
private static final Logger logger = LoggerFactory.getLogger(ItemTagOperateServiceImpl.class);
@Autowired
SupplierItemDao supplierItemDao;
@Autowired
ItemTagOperateRecordDao itemTagOperateRecordDao;
@Autowired
RedissonClient redissonClient;
@Autowired
CategoryDao categoryDao;
@Autowired
WxAppletApi wxAppletApi;
@Override
public Result printItemTag(ItemTagOperateRequestDto dto) {
try {
//先上传商品
SupplierItem supplierItem = new SupplierItem();
//查询类目信息
Category category = categoryDao.findById(dto.getCategoryId());
EntityMapper.copyAttribute(dto, supplierItem);
supplierItem.setName(category.getName());
supplierItem.setDescription(category.getIntroduction());
supplierItem.setSupplyPrice(0L);
supplierItem.setRebate(new BigDecimal("0"));
if (!CollectionUtils.isEmpty(dto.getImages())) {
supplierItem.setImages(String.join(";", dto.getImages()));
}
supplierItem.setSort(1);
supplierItem.setBuyLimitNum(-1);
supplierItem.setIsAbleSale(false);
supplierItem.setIsOnSale(false);
supplierItem.setStock(1);
supplierItem.setIsOnSale(false);
Date now = new Date();
supplierItem.setCreateTime(now);
supplierItem.setUpdateTime(now);
supplierItem.setIsDeleted(true);
supplierItem.setType(DistributionEnum.DistributionTypeEnum.BLACK.getCode());
supplierItem.setStatus(SupplierItemEnum.StatusEnum.COMMON.getCode());
long itemId = supplierItemDao.insert(supplierItem);
//记录制作标签的记录
ItemTagOperateRecord itemTagOperateRecord = new ItemTagOperateRecord();
itemTagOperateRecord.setItemId(itemId);
itemTagOperateRecord.setImages(String.join(";", dto.getImages()));
itemTagOperateRecord.setCategoryId(dto.getCategoryId());
itemTagOperateRecord.setCategoryName(category.getName());
itemTagOperateRecord.setOperatorId(dto.getOperatorId());
itemTagOperateRecord.setCreateTime(now);
itemTagOperateRecordDao.insert(itemTagOperateRecord);
//打印标签的信息
ItemTagPrintInfo itemTagPrintInfo = new ItemTagPrintInfo();
itemTagPrintInfo.setItemName(category.getName());
//获取页面短链
String url = wxAppletApi.getUrlLink("/pages/detail/index","itemId=" + itemId);
String qrCode = QRCodeUtil.createCodeToBase64(url);
itemTagPrintInfo.setQrCode(qrCode);
return Result.success(itemTagPrintInfo);
} catch (Exception e) {
logger.error("打印标签失败", e);
}
return Result.failed("打印标签失败");
}
@Override
public Result findList(ItemTagOperateRecordRequestDto dto) {
try {
List<ItemTagOperateRecord> list = itemTagOperateRecordDao.findByPage(dto);
PageInfo pageInfo = new PageInfo<>(list);
for (ItemTagOperateRecord itemTagOperateRecord : list) {
String images = itemTagOperateRecord.getImages();
itemTagOperateRecord.setImages(images.split(";")[0]);
}
return Result.success(PageSearchResult.of(pageInfo, list));
} catch (Exception e) {
logger.error("查询制作标签记录失败error: {}", e);
}
return Result.failed("查询制作标签记录失败");
}
}
...@@ -22,6 +22,7 @@ import com.wwdz.ch.core.entity.SupplierItemVo; ...@@ -22,6 +22,7 @@ import com.wwdz.ch.core.entity.SupplierItemVo;
import com.wwdz.ch.wx.aspect.AddBrowseLog; import com.wwdz.ch.wx.aspect.AddBrowseLog;
import com.wwdz.ch.wx.constant.CollectionBookConstants; import com.wwdz.ch.wx.constant.CollectionBookConstants;
import com.wwdz.ch.wx.entity.GroupPurchaseInfo; import com.wwdz.ch.wx.entity.GroupPurchaseInfo;
import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionDetailVo; import com.wwdz.ch.wx.entity.vo.distribution.AuctionDetailVo;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordRowVo; import com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordRowVo;
import com.wwdz.ch.wx.service.FollowFansRecordService; import com.wwdz.ch.wx.service.FollowFansRecordService;
...@@ -1345,9 +1346,52 @@ public class SupplierItemServiceImpl implements SupplierItemService { ...@@ -1345,9 +1346,52 @@ public class SupplierItemServiceImpl implements SupplierItemService {
} }
private String getVideosImage(String vedios) { @Override
public Result scanCodeToFindItemDetail(SupplierItemRequestDto dto) {
try {
//判断是否已经上架过
SupplierItem supplierItem = supplierItemDao.findById(dto.getItemId());
if (supplierItem.getCreatorId() != null && !supplierItem.getIsDeleted()) {
return Result.failed(ResultCode.ITEM_UPLOADED);
}
SupplierItemVo supplierItemVo = new SupplierItemVo();
EntityMapper.copyAttribute(supplierItem, supplierItemVo);
supplierItemVo.setItemId(supplierItem.getId());
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
return Result.success(supplierItemVo);
} catch (Exception e) {
logger.error("用户扫码跳转小程序页面查询商品详情 error : {}", dto.getType(), e);
}
return Result.failed();
}
@Override
public Result uploadItemToSelf(SupplierItemRequestDto dto) {
try {
SupplierItem sourceItem = supplierItemDao.findById(dto.getItemId());
if (sourceItem.getCreatorId() != null && !sourceItem.getIsDeleted()) {
return Result.failed(ResultCode.ITEM_UPLOADED);
}
long itemId = dto.getItemId();
SupplierItem supplierItem = new SupplierItem();
supplierItem.setSupplyPrice(0L);
supplierItem.setRebate(new BigDecimal("0"));
supplierItem.setIsDeleted(false);
supplierItem.setCreatorId(dto.getUserId());
supplierItem.setType(dto.getType() == null ? DistributionEnum.DistributionTypeEnum.COLLECT.getCode() : dto.getType());
supplierItem.setStatus(SupplierItemEnum.StatusEnum.COMMON.getCode());
supplierItemDao.update(supplierItem);
return Result.success(new HashMap(){{put("id", itemId);}});
} catch (Exception e) {
logger.error("上架商品到藏馆 error : {}", dto.getType(), e);
}
return Result.failed();
}
private String getVideosImage(String videos) {
String video = ""; String video = "";
String[] images = vedios.split(";"); String[] images = videos.split(";");
StringBuffer stringBuffer = new StringBuffer(); StringBuffer stringBuffer = new StringBuffer();
Arrays.stream(images).forEach(image -> { Arrays.stream(images).forEach(image -> {
if (stringBuffer.length() != 0) { if (stringBuffer.length() != 0) {
......
package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ItemTagOperateRecordRequestDto;
import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
public interface ItemTagOperateService {
/**
* 打印标签
* @param dto
* @return
*/
Result printItemTag(ItemTagOperateRequestDto dto);
/**
* 查询制作标签记录
* @param dto
* @return
*/
Result findList(ItemTagOperateRecordRequestDto dto);
}
...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service.distribution; ...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service.distribution;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto; import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
public interface SupplierItemService { public interface SupplierItemService {
...@@ -121,4 +122,19 @@ public interface SupplierItemService { ...@@ -121,4 +122,19 @@ public interface SupplierItemService {
*/ */
Result findHomePage(SupplierItemRequestDto dto); Result findHomePage(SupplierItemRequestDto dto);
/**
* 用户扫码跳转小程序页面查询商品详情
* @param dto
* @return
*/
Result scanCodeToFindItemDetail(SupplierItemRequestDto dto);
/**
* 上传商品到自己的藏馆
* @param dto
* @return
*/
Result uploadItemToSelf(SupplierItemRequestDto dto);
} }
package com.wwdz.ch.wx.web.distribution;
import com.alibaba.fastjson.JSON;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.ItemTagOperateRecordRequestDto;
import com.wwdz.ch.wx.entity.request.ItemTagOperateRequestDto;
import com.wwdz.ch.wx.service.ItemTagOperateService;
import com.xxdxxs.service.FormHandler;
import com.xxdxxs.validation.Validator;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/wx/itemTagOperate")
public class ItemTagOperateController {
private static final Logger logger = LoggerFactory.getLogger(LogisticsController.class);
@Autowired
ItemTagOperateService itemTagOperateService;
@ApiOperation(value = "打印标签")
@PostMapping("/printItemTag")
public Result printItemTag(@RequestBody ItemTagOperateRequestDto dto) {
logger.info("打印标签,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("categoryId", "分类id").must().number()
.set("operatorId", "操作人id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
}
return itemTagOperateService.printItemTag(dto);
}
@ApiOperation(value = "查询制作标签记录")
@PostMapping("/findList")
public Result findList(@RequestBody ItemTagOperateRecordRequestDto dto) {
logger.info("查询制作标签记录,请求参数:{}", JSON.toJSONString(dto));
Validator validator = new Validator(FormHandler.ofEntity(dto));
validator.set("operatorId", "操作人id").must().number()
.end();
if (!validator.isValid()) {
return Result.failed(validator.getErrorInfo());
}
return itemTagOperateService.findList(dto);
}
}
...@@ -195,4 +195,26 @@ public class SupplierItemController { ...@@ -195,4 +195,26 @@ public class SupplierItemController {
} }
return supplierItemService.findItemCommission(dto); return supplierItemService.findItemCommission(dto);
} }
@ApiOperation(value = "用户扫码跳转小程序页面查询商品详情")
@PostMapping("/scanCodeToFindItemDetail")
public Result scanCodeToFindItemDetail(@RequestBody SupplierItemRequestDto dto) {
logger.info("用户扫码跳转小程序页面查询商品详情,请求参数:{}", JSON.toJSONString(dto));
if (dto.getItemId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return supplierItemService.scanCodeToFindItemDetail(dto);
}
@ApiOperation(value = "上传商品到自己的藏馆")
@PostMapping("/uploadItemToSelf")
public Result uploadItemToSelf(@RequestBody SupplierItemRequestDto dto) {
logger.info("上传商品到自己的藏馆,请求参数:{}", JSON.toJSONString(dto));
if (dto.getItemId() == null || dto.getUserId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return supplierItemService.uploadItemToSelf(dto);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment