Sfoglia il codice sorgente

套餐详情/分享图片

licailing 4 anni fa
parent
commit
2fd798c0ad

+ 11 - 3
src/main/java/com/izouma/jiashanxia/domain/Package.java

@@ -61,7 +61,7 @@ public class Package extends BaseEntity {
     @ApiModelProperty(value = "套餐分类")
     @ApiModelProperty(value = "套餐分类")
     private Long categoryId;
     private Long categoryId;
 
 
-    @ApiModelProperty(value = "图")
+    @ApiModelProperty(value = "产品主图")
     @Column(columnDefinition = "TEXT")
     @Column(columnDefinition = "TEXT")
     @Convert(converter = StringArrayConverter.class)
     @Convert(converter = StringArrayConverter.class)
     private List<String> img;
     private List<String> img;
@@ -91,13 +91,21 @@ public class Package extends BaseEntity {
     @Convert(converter = LongArrayConverter.class)
     @Convert(converter = LongArrayConverter.class)
     private List<Long> couponId;
     private List<Long> couponId;
 
 
-    @ApiModelProperty(value = "推广海报")
+    @ApiModelProperty(value = "产品海报")
     private String poster;
     private String poster;
 
 
+    // 详情页 分享素材
+    @Column(columnDefinition = "TEXT")
     @Convert(converter = StringArrayConverter.class)
     @Convert(converter = StringArrayConverter.class)
-    @ApiModelProperty(value = "多图海报")
+    @ApiModelProperty(value = "产品图片")
     private List<String> smallPoster;
     private List<String> smallPoster;
 
 
+    @ApiModelProperty(value = "小程序分享封面")
+    private String maCover;
+
+    @ApiModelProperty(value = "列表封面")
+    private String cover;
+
     @ApiModelProperty(value = "分享文案")
     @ApiModelProperty(value = "分享文案")
     private String share;
     private String share;
 
 

+ 12 - 4
src/main/java/com/izouma/jiashanxia/service/PackageService.java

@@ -16,16 +16,15 @@ import com.izouma.jiashanxia.repo.*;
 import com.izouma.jiashanxia.security.Authority;
 import com.izouma.jiashanxia.security.Authority;
 import com.izouma.jiashanxia.utils.JpaUtils;
 import com.izouma.jiashanxia.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 
 
 
 @Service
 @Service
@@ -40,6 +39,7 @@ public class PackageService {
     private final OrderInfoRepo      orderInfoRepo;
     private final OrderInfoRepo      orderInfoRepo;
     private final StockRepo          stockRepo;
     private final StockRepo          stockRepo;
     private final SysConfigService   sysConfigService;
     private final SysConfigService   sysConfigService;
+    private final UserService        userService;
 
 
     public Page<Package> all(PageQuery pageQuery) {
     public Page<Package> all(PageQuery pageQuery) {
         return packageRepo.findAll(JpaUtils.toSpecification(pageQuery, Package.class), JpaUtils.toPageRequest(pageQuery));
         return packageRepo.findAll(JpaUtils.toSpecification(pageQuery, Package.class), JpaUtils.toPageRequest(pageQuery));
@@ -152,4 +152,12 @@ public class PackageService {
         }
         }
         return vo;
         return vo;
     }
     }
+
+    public String shareImg(Long userId, Long id) throws IOException, WxErrorException {
+        Package aPackage = packageRepo.findById(id).orElseThrow(new BusinessException("无产品"));
+        Map<String, Object> map = new HashMap<>();
+        map.put("poster", aPackage.getPoster());
+        map.put("id", aPackage.getId());
+        return userService.createShareImg(userId, false, map);
+    }
 }
 }

+ 11 - 2
src/main/java/com/izouma/jiashanxia/service/UserService.java

@@ -602,16 +602,20 @@ public class UserService {
     public String shareImg(Long userId) throws IOException, WxErrorException {
     public String shareImg(Long userId) throws IOException, WxErrorException {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         if (!(StringUtils.isNotEmpty(user.getShareImg()) && user.getShareImg().contains("/v2/"))) {
         if (!(StringUtils.isNotEmpty(user.getShareImg()) && user.getShareImg().contains("/v2/"))) {
-            String url = createShareImg(userId);
+            String url = createShareImg(userId, true, null);
             user.setShareImg(url);
             user.setShareImg(url);
             userRepo.save(user);
             userRepo.save(user);
         }
         }
         return user.getShareImg();
         return user.getShareImg();
     }
     }
 
 
-    public String createShareImg(Long userId) throws IOException, WxErrorException {
+    public String createShareImg(Long userId, boolean home, Map<String, Object> map) throws IOException, WxErrorException {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         BufferedImage shareImg = ImageIO.read(this.getClass().getResourceAsStream("/static/shareImg.png"));
         BufferedImage shareImg = ImageIO.read(this.getClass().getResourceAsStream("/static/shareImg.png"));
+        if (!home) {
+            shareImg = ImageIO.read(new URL(String.valueOf(map.get("poster"))).openStream());
+        }
+
         BufferedImage result = new BufferedImage(shareImg.getWidth(), shareImg.getHeight(), BufferedImage.TYPE_INT_RGB);
         BufferedImage result = new BufferedImage(shareImg.getWidth(), shareImg.getHeight(), BufferedImage.TYPE_INT_RGB);
         Graphics2D g = result.createGraphics();
         Graphics2D g = result.createGraphics();
         g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
         g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
@@ -622,6 +626,11 @@ public class UserService {
 
 
         byte[] bytes = wxMaService.getQrcodeService()
         byte[] bytes = wxMaService.getQrcodeService()
                 .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId, "pages/home", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
                 .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId, "pages/home", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
+        if (!home) {
+            bytes = wxMaService.getQrcodeService()
+                    .createWxaCodeUnlimitBytes("expert=true&invitor=" + userId + "&id=" + map
+                            .get("id"), "pages/detail", 94 * 2, false, new WxMaCodeLineColor("0", "0", "0"), true);
+        }
         ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
         ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
         BufferedImage codeImg = ImageIO.read(byteArrayInputStream);
         BufferedImage codeImg = ImageIO.read(byteArrayInputStream);
 
 

+ 6 - 0
src/main/java/com/izouma/jiashanxia/web/PackageController.java

@@ -15,9 +15,11 @@ import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.PackageRepo;
 import com.izouma.jiashanxia.repo.PackageRepo;
 import com.izouma.jiashanxia.service.SysConfigService;
 import com.izouma.jiashanxia.service.SysConfigService;
 import com.izouma.jiashanxia.utils.ObjUtils;
 import com.izouma.jiashanxia.utils.ObjUtils;
+import com.izouma.jiashanxia.utils.SecurityUtils;
 import com.izouma.jiashanxia.utils.excel.ExcelUtils;
 import com.izouma.jiashanxia.utils.excel.ExcelUtils;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
@@ -136,5 +138,9 @@ public class PackageController extends BaseController {
         return packageRepo.findAll();
         return packageRepo.findAll();
     }
     }
 
 
+    @GetMapping("/shareImg")
+    public String shareImg(@RequestParam Long id) throws IOException, WxErrorException {
+        return packageService.shareImg(SecurityUtils.getAuthenticatedUser().getId(), id);
+    }
 }
 }
 
 

+ 4 - 1
src/main/vue/src/components/PackageEdit.vue

@@ -32,7 +32,10 @@
             <el-form-item prop="title" label="副标题">
             <el-form-item prop="title" label="副标题">
                 <el-input v-model="formData.title" class="input-title"></el-input>
                 <el-input v-model="formData.title" class="input-title"></el-input>
             </el-form-item>
             </el-form-item>
-            <el-form-item prop="img" label="图">
+            <el-form-item label="列表封面" prop="cover">
+                <single-upload v-model="formData.cover"></single-upload>
+            </el-form-item>
+            <el-form-item prop="img" label="产品主图">
                 <multi-upload v-model="formData.img"></multi-upload>
                 <multi-upload v-model="formData.img"></multi-upload>
             </el-form-item>
             </el-form-item>
             <!-- <el-form-item prop="tag" label="套餐标签">
             <!-- <el-form-item prop="tag" label="套餐标签">

+ 4 - 1
src/main/vue/src/components/PackageEdit3.vue

@@ -9,7 +9,7 @@
             size="small"
             size="small"
             style="max-width: 800px;"
             style="max-width: 800px;"
         >
         >
-            <el-form-item label="分享海报" prop="poster">
+            <el-form-item label="产品海报" prop="poster">
                 <!-- <poster-upload
                 <!-- <poster-upload
                     v-model="formData.poster"
                     v-model="formData.poster"
                     :width="80"
                     :width="80"
@@ -23,6 +23,9 @@
                 </poster-upload> -->
                 </poster-upload> -->
                 <single-upload v-model="formData.poster"></single-upload>
                 <single-upload v-model="formData.poster"></single-upload>
             </el-form-item>
             </el-form-item>
+            <el-form-item label="小程序分享封面" prop="maCover">
+                <single-upload v-model="formData.maCover"></single-upload>
+            </el-form-item>
             <el-form-item label="分享图" prop="smallPoster">
             <el-form-item label="分享图" prop="smallPoster">
                 <multi-upload v-model="formData.smallPoster"></multi-upload>
                 <multi-upload v-model="formData.smallPoster"></multi-upload>
             </el-form-item>
             </el-form-item>

+ 2 - 2
src/main/vue/src/views/PackageEdit.vue

@@ -4,10 +4,10 @@
             <el-tab-pane label="基本信息" name="first">
             <el-tab-pane label="基本信息" name="first">
                 <PackageEdit @next="goNext" />
                 <PackageEdit @next="goNext" />
             </el-tab-pane>
             </el-tab-pane>
-            <el-tab-pane label="详细信息" name="second">
+            <el-tab-pane label="详细" name="second">
                 <PackageEdit2 @next="goNext" />
                 <PackageEdit2 @next="goNext" />
             </el-tab-pane>
             </el-tab-pane>
-            <el-tab-pane label="分享信息" name="third">
+            <el-tab-pane label="分享素材" name="third">
                 <PackageEdit3 />
                 <PackageEdit3 />
             </el-tab-pane>
             </el-tab-pane>
             <!-- <el-tab-pane label="套餐内容" :disabled="!id" name="second">
             <!-- <el-tab-pane label="套餐内容" :disabled="!id" name="second">

+ 8 - 0
src/test/java/com/izouma/jiashanxia/service/PackageServiceTest.java

@@ -4,9 +4,12 @@ import com.izouma.jiashanxia.ApplicationTests;
 import com.izouma.jiashanxia.domain.Package;
 import com.izouma.jiashanxia.domain.Package;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.exception.BusinessException;
 import com.izouma.jiashanxia.repo.PackageRepo;
 import com.izouma.jiashanxia.repo.PackageRepo;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.junit.Test;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
+import java.io.IOException;
+
 import static org.junit.Assert.*;
 import static org.junit.Assert.*;
 
 
 public class PackageServiceTest extends ApplicationTests {
 public class PackageServiceTest extends ApplicationTests {
@@ -22,4 +25,9 @@ public class PackageServiceTest extends ApplicationTests {
         Package aPackage = packageRepo.findById(17L).orElseThrow(new BusinessException("无"));
         Package aPackage = packageRepo.findById(17L).orElseThrow(new BusinessException("无"));
         System.out.println(packageService.toVO(aPackage));
         System.out.println(packageService.toVO(aPackage));
     }
     }
+
+    @Test
+    public void shareImg()throws IOException, WxErrorException {
+        packageService.shareImg(908L, 1594L);
+    }
 }
 }

+ 2 - 2
src/test/java/com/izouma/jiashanxia/service/UserServiceTest.java

@@ -76,7 +76,7 @@ public class UserServiceTest {
 
 
     @Test
     @Test
     public void shareImg() throws IOException, WxErrorException {
     public void shareImg() throws IOException, WxErrorException {
-        System.out.println(userService.createShareImg(908L));
+        System.out.println(userService.createShareImg(908L, true, null));
 
 
     }
     }
 
 
@@ -87,7 +87,7 @@ public class UserServiceTest {
     }
     }
 
 
     @Test
     @Test
-    public void overview(){
+    public void overview() {
         System.out.println(userService.overview(916L));
         System.out.println(userService.overview(916L));
     }
     }
 }
 }