diff --git a/src/main/java/com/peanut/common/utils/CertificateUtil.java b/src/main/java/com/peanut/common/utils/CertificateUtil.java new file mode 100644 index 00000000..1f303f8a --- /dev/null +++ b/src/main/java/com/peanut/common/utils/CertificateUtil.java @@ -0,0 +1,164 @@ +package com.peanut.common.utils; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Date; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class CertificateUtil extends Thread{ + + String inputSrc; + String outputSrc; + String no; + String name; + String time; + String des; + String trans; + String trans2; + String trans3; + String endy; + String endm; + String endd; + + public CertificateUtil(String inputSrc,String outputSrc,String no,String name,String time, + String des,String trans,String trans2,String trans3,String endy,String endm,String endd){ + this.inputSrc=inputSrc; + this.outputSrc = outputSrc; + this.no = no; + this.name = name; + this.time = time; + this.des = des; + this.trans = trans; + this.trans2 = trans2; + this.trans3 = trans3; + this.endy = endy; + this.endm = endm; + this.endd = endd; + } + + @Override + public void run() { + Date startTime = new Date(); + System.out.println(name+"-开始!"); + try { + Image src = ImageIO.read(new File(inputSrc)); + // 获取图片的高和宽 + int wideth = src.getWidth(null); + int height = src.getHeight(null); + // 新增一个图片缓冲 + BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB); + Graphics2D g = image.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g.drawImage(src, 0, 0, wideth, height, null); + + // 设置字体颜色(颜色也可以直接new定义rgba,例如new Color(17, 16, 44)) + g.setColor(new Color(51,82,132)); + // size字体大小,Font.BOLD字体加粗 + g.setFont(new Font("Arial", Font.BOLD, 80)); + FontMetrics metrics = g.getFontMetrics(); + int nox = (wideth - metrics.stringWidth(no))/2; + int noy = 1405 - metrics.getHeight();//1305 + g.drawString(no, nox, noy); + + // 设置字体颜色(颜色也可以直接new定义rgba,例如new Color(17, 16, 44)) + g.setColor(Color.BLACK); + // size字体大小,Font.BOLD字体加粗 + g.setFont(new Font("宋体", Font.BOLD, 150)); + FontMetrics metricss = g.getFontMetrics(); + int namex = (wideth - metricss.stringWidth(name))/2; + int namey = 2055 - metricss.getHeight();//1935 + g.drawString(name, namex, namey); + + g.setFont(new Font("宋体", Font.BOLD, 115)); + FontMetrics times = g.getFontMetrics(); + int timex = (wideth - times.stringWidth(time))/2; + int timey = 2370 - times.getHeight();//2270 + g.drawString(time, timex, timey); + + FontMetrics dess = g.getFontMetrics(); + int desx = (wideth - dess.stringWidth(des))/2; + int desy = 2635 - dess.getHeight();//2535 + g.drawString(des, desx, desy); + + g.setFont(new Font("Arial", Font.BOLD, 75)); + FontMetrics transs = g.getFontMetrics(); + int transx = (wideth - transs.stringWidth(trans))/2; + int transy = 2735 - transs.getHeight();//2685 + g.drawString(trans, transx, transy); + + FontMetrics trans2s = g.getFontMetrics(); + int trans2x = (wideth - trans2s.stringWidth(trans2))/2; + g.drawString(trans2, trans2x, transy+120); + + FontMetrics trans3s = g.getFontMetrics(); + int trans3x = (wideth - trans3s.stringWidth(trans3))/2; + g.drawString(trans3, trans3x, transy+240); + + g.setFont(new Font("宋体", Font.BOLD, 80)); + g.drawString(endy,1800,3440); + g.drawString(endm,2090,3440); + g.drawString(endd,2250,3440); + + // 释放资源 + g.dispose(); + File outputfile = new File(outputSrc+name+".png"); + ImageIO.write(image, "png", outputfile); + + Date endTime = new Date(); + System.out.println(endTime.getTime()-startTime.getTime() + ""); + System.out.println(name+"-生成完成!"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + public static void main(String[] args) throws Exception{ + String nameflie = "F:\\aimg\\name.txt"; //人名,一列 + String inputSrc = "F:\\aimg\\c.png"; //图片模板 + String outputSrc = "F:\\aimg\\形质病\\"; //生成地址 + String no = "No.XZB202401"; + int nostart = 0; + String time = "于2024年1月4日至5日"; + String des = "圆满完成中医形质病学培训班"; + String trans = "Successful completion of the"; + String trans2 = "Chinese Medicine Morphology and Disease Training"; + String trans3 = "course on 2024 1.4-5"; + //Traditional Chinese Medicine Morphology and Disease Training Course + String endy = "2024"; + String endm = "1"; + String endd = "6"; + + // 1、创建服务,创建线程池 + ExecutorService service = Executors.newFixedThreadPool(30); + + try (BufferedReader br = new BufferedReader(new FileReader(nameflie))) { + String line; + while ((line = br.readLine()) != null) { + // 对每一行进行处理 + nostart++; + CertificateUtil c1 = new CertificateUtil(inputSrc,outputSrc,no+String.format("%03d",nostart),line, + time,des,trans,trans2,trans3,endy,endm,endd); + service.execute(c1); + + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + + + + + + + + +} diff --git a/src/main/java/com/peanut/config/ShiroConfig.java b/src/main/java/com/peanut/config/ShiroConfig.java index c5253700..6daec7d6 100644 --- a/src/main/java/com/peanut/config/ShiroConfig.java +++ b/src/main/java/com/peanut/config/ShiroConfig.java @@ -75,6 +75,7 @@ public class ShiroConfig { filterMap.put("/swagger-resources/**", "anon"); filterMap.put("/captcha.jpg", "anon"); filterMap.put("/aaa.txt", "anon"); + filterMap.put("/visitor/**","anon");//游客访问接口 filterMap.put("/**", "oauth2"); filterMap.put("/cent/**","anon"); diff --git a/src/main/java/com/peanut/modules/book/controller/MedicaldesController.java b/src/main/java/com/peanut/modules/book/controller/MedicaldesController.java index adcfccea..11409ae7 100644 --- a/src/main/java/com/peanut/modules/book/controller/MedicaldesController.java +++ b/src/main/java/com/peanut/modules/book/controller/MedicaldesController.java @@ -117,6 +117,7 @@ public class MedicaldesController { if (map.containsKey("name")&&StringUtils.isNotEmpty(map.get("name").toString())){ wrapper.like(MedicaldesInherit::getName,map.get("name")); } + wrapper.selectAs(MedicaldesInheritRelation::getTypeId,"type"); Page page = inheritService.page(new Page<>( Long.parseLong(map.get("current").toString()), Long.parseLong(map.get("limit").toString())),wrapper); return R.ok().put("result", page); diff --git a/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java index e61719df..895b5feb 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java @@ -34,7 +34,7 @@ public class ShopProductServiceImpl extends ServiceImpl params) { IPage page = this.page( new Query().getPage(params), - new QueryWrapper().orderByDesc("create_time") + new QueryWrapper().orderByAsc("sort") .like("product_name", params.get("key")) ); return new PageUtils(page); diff --git a/src/main/java/com/peanut/modules/sys/controller/VisitorController.java b/src/main/java/com/peanut/modules/sys/controller/VisitorController.java new file mode 100644 index 00000000..947763ae --- /dev/null +++ b/src/main/java/com/peanut/modules/sys/controller/VisitorController.java @@ -0,0 +1,169 @@ +package com.peanut.modules.sys.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.peanut.common.utils.PageUtils; +import com.peanut.common.utils.R; +import com.peanut.modules.book.dao.ShopProductToLabelDao; +import com.peanut.modules.book.entity.*; +import com.peanut.modules.book.service.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import java.util.*; + +@Slf4j +@RestController +@RequestMapping("/visitor") +public class VisitorController { + + @Autowired + private ShopProductService shopProductService; + @Autowired + private ShopProductToLabelDao shopProductToLabelDao; + @Autowired + private ShopProductLabelService shopProductLabelService; + @Autowired + private ShopCategoryService shopCategoryService; + @Autowired + private BookService bookService; + @Autowired + private ShopProductBookService shopProductBookService; + @Autowired + private ShopProductToLabelService shopProductToLabelService; + @Autowired + private UserRecordService userRecordService; + @Autowired + private MyUserService myUserService; + @Autowired + private UserFollowUpService userFollowUpService; + + //新书 + @RequestMapping("/getNewBook") + public R getNewBook(@RequestParam Map params) { + PageUtils page = shopProductService.getNewBook(params); + return R.ok().put("page", page); + } + + /** + * 获取商品列表通过标签 + * @return + */ + @RequestMapping("/getProductsByLabel") + public R getProductsByLabel(@RequestParam Integer splId,@RequestParam Integer limit,@RequestParam Integer page){ + MPJLambdaWrapper shopProductEntityMPJLambdaWrapper = new MPJLambdaWrapper(); + shopProductEntityMPJLambdaWrapper.selectAll(ShopProduct.class); + shopProductEntityMPJLambdaWrapper.leftJoin(ShopProduct.class, ShopProduct::getProductId,ShopProductToLabelEntity::getProductId); + shopProductEntityMPJLambdaWrapper.eq(ShopProductToLabelEntity::getSplId,splId); + shopProductEntityMPJLambdaWrapper.eq(ShopProductToLabelEntity::getDelFlag,0); + shopProductEntityMPJLambdaWrapper.eq(ShopProduct::getDelFlag,0); + shopProductEntityMPJLambdaWrapper.gt(ShopProduct::getProductStock,0); + Page shopProductEntityPage = shopProductToLabelDao.selectJoinPage(new Page(page, limit), ShopProduct.class, shopProductEntityMPJLambdaWrapper); + return R.ok().put("page",shopProductEntityPage); + } + + @RequestMapping("/getLabels") + public R getLabels(){ + List shopProductLabelEntities = shopProductLabelService.getBaseMapper().selectList(new QueryWrapper() + .eq("del_flag",0)); + Map re = new HashMap(); + re.put("labels",shopProductLabelEntities); + return R.ok().put("result",re); + } + + /** + * 信息 + * + * @param productId + * @return + */ + @RequestMapping("/info/{productId}") + public R info(@PathVariable("productId") Integer productId) { + ShopProduct shopProduct = shopProductService.getBaseMapper().selectOne(new QueryWrapper().eq("product_id", productId).eq("del_flag", 0)); + if (shopProduct == null) { + return R.error("该商品已下架,看看其他商品吧"); + } + ArrayList> imagesUrl = new ArrayList>(); + Integer poid = shopProduct.getProductPid(); + Integer productId1 = shopProduct.getProductId(); + List poids = shopCategoryService.findPoid(poid); + shopProduct.setPoids(poids); + List list = new ArrayList<>(); + List bookIdlist = new ArrayList<>(); + ArrayList booklist = new ArrayList<>(); + List product = shopProductBookService.getBaseMapper().selectList(new QueryWrapper() + .eq("product_id", productId1)); + for (ShopProductBookEntity shopProductBookEntity : product) { + Integer id = shopProductBookEntity.getId(); + Integer bookId = shopProductBookEntity.getBookId(); + + BookEntity byId = bookService.getById(bookId); + bookIdlist.add(id); + booklist.add(String.valueOf(bookId)); + list.add(byId); + } + //添加获取标签逻辑 + List shopProductToLabelEntities = shopProductToLabelService.getBaseMapper().selectList(new QueryWrapper() + .eq("product_id", productId).eq("del_flag", 0)); + List labelList = new ArrayList(); + for (ShopProductToLabelEntity sp : shopProductToLabelEntities) { + labelList.add(sp.getSplId()); + } + shopProduct.setBookidsimages(list); + shopProduct.setBookids(booklist); + shopProduct.setShoproudIds(bookIdlist); + return R.ok().put("shopProduct", shopProduct).put("labels", labelList); + } + + /** + * 查看全部评价 + */ + @RequestMapping("/All") + public R All(@RequestBody UserRecord userRecordEntity) { + List list = new ArrayList<>(); + //此处bookid实际传的是商品id + List bookid = userRecordService.getBaseMapper().selectList(new QueryWrapper().eq("bookid", userRecordEntity.getBookid()).orderByDesc("create_date")); + if (bookid != null) { + for (UserRecord userRecord : bookid) { + HashMap map = new HashMap<>(); + Integer bookid1 = userRecord.getBookid(); + Integer userid1 = userRecord.getUserid(); + Integer id1 = userRecord.getId(); + List id = myUserService.getBaseMapper().selectList(new QueryWrapper().eq("id", userid1)); + String usser = ""; + String name = ""; + for (MyUserEntity user : id) { + usser = user.getAvatar(); + name = user.getNickname(); + } + List followUpEntity = userFollowUpService.getBaseMapper().selectList(new QueryWrapper() + .eq("oid", id1) + .eq("userId", userid1) + .orderByDesc("create_date")); + String conTent = ""; + Date date = null; + for (UserFollowUpEntity followUp : followUpEntity) { + conTent = followUp.getConTent(); + date = followUp.getCreateDate(); + } + map.put("followUpdate", date); + map.put("followUpcontent", conTent); + map.put("avatar", usser); + map.put("name", name); + map.put("bookid", bookid1); + map.put("orderSn", userRecord.getOrderSn()); + map.put("userid", userid1); + map.put("content", userRecord.getContent()); + map.put("images", userRecord.getImages()); + map.put("starlevel", userRecord.getStarLevel()); + map.put("createdate", userRecord.getCreateDate()); + list.add(map); + } + return R.ok().put("list", list); + } + return R.error("该商品暂无评论"); + + } + +}