Bladeren bron

solve bug

release_toaliyun_real
xhxu 5 jaren geleden
bovenliggende
commit
08484a334f
6 gewijzigde bestanden met toevoegingen van 6 en 177 verwijderingen
  1. +0
    -175
      mallinkPublicApi/src/main/java/com/iformall/utils/ImgIdeaUtil.java
  2. BIN
      mallinkPublicApi/src/main/resources/imgTemp/gertificate.jpg
  3. BIN
      mallinkPublicApi/src/main/resources/opt/HWLS.TTF
  4. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java
  5. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  6. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxQuestionOneselfUserServiceImpl.java

+ 0
- 175
mallinkPublicApi/src/main/java/com/iformall/utils/ImgIdeaUtil.java Bestand weergeven

@@ -1,175 +0,0 @@
package com.iformall.utils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ResourceUtils;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class ImgIdeaUtil {

private static final Logger logger = LoggerFactory.getLogger(ImgIdeaUtil.class);

//模板图片
private static final String imgTempPath = "imgTemp/gertificate.jpg";
//字体路径
private static final String fontPath = "opt/HWLS.TTF";

/**
* 生成图片证书
* @return
*/
public static byte[] imgGertificate(String name, String englishName, LocalDateTime date){
if(StringUtils.isBlank(name)){
logger.error("名字为空,无法生成证书");
return null;
}
if(name.length() == 2){
name = name.replaceAll("(\\S)", "$0 ");
}
if(StringUtils.isBlank(englishName)){
englishName = getUpEname(name);
}
if(date == null){
date = LocalDateTime.now();
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dMMM yyyy", Locale.UK);
String dateFormat = date.format(formatter);

try {

InputStream backImgUrl = ClassLoader.getSystemResourceAsStream(imgTempPath);
//InputStream backImgUrl = ImgIdeaUtil.class.getClassLoader().getResourceAsStream(imgTempPath);

Font font = Font.createFont(Font.TRUETYPE_FONT, ResourceUtils.getFile("classpath:"+fontPath));
BufferedImage backImg = ImageIO.read(backImgUrl);
Graphics g = backImg.getGraphics();

//图片加中文名
Font fTxtBottomName = font.deriveFont(Font.PLAIN, 170);
//Font fTxtBottomName = new Font("华文隶书", Font.PLAIN, 170);
FontMetrics metricsName = g.getFontMetrics(fTxtBottomName);
int xName = (backImg.getWidth() - metricsName.stringWidth(name)) / 2;
Color myColorTxtBottomName = Color.BLACK; //颜色
g.setColor(myColorTxtBottomName);
g.setFont(fTxtBottomName);
g.drawString(name, xName , 1150);//g.drawString(文字, x 位置, y 位置);

//图片加英文名
Font fTxtBottomEname = font.deriveFont(Font.PLAIN, 120);
//Font fTxtBottomEname = new Font("华文隶书", Font.PLAIN, 120);
FontMetrics metricsEname = g.getFontMetrics(fTxtBottomEname);
int xEname = (backImg.getWidth() - metricsEname.stringWidth(englishName)) / 2;
Color myColorTxtBottomEname = Color.BLACK;
g.setColor(myColorTxtBottomEname);
g.setFont(fTxtBottomEname);
g.drawString(englishName, xEname, 1300);

//图片加日期
Font fTxtBottomDate = font.deriveFont(Font.PLAIN, 90);
//Font fTxtBottomDate = new Font("华文隶书", Font.PLAIN, 90);
Color myColorTxtBottomDate = Color.BLACK;
g.setColor(myColorTxtBottomDate);
g.setFont(fTxtBottomDate);
g.drawString(dateFormat, 440, 2100);

//调这个方法就是开始这个整合 (可以多张图片,多个文字整合成一张图片,只有把他们放在这方法里面就行)
g.dispose();

ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(backImg, "png", out);

return out.toByteArray();
} catch (Exception e) {
e.printStackTrace();
logger.error("生成证书异常", e.getMessage());
}
return null;
}

/**
* //姓、名的第一个字母需要为大写
* @param name
* @return
*/
public static String getUpEname(String name) {
char[] strs = name.toCharArray();
String newname = null;

if (strs.length == 2) {
newname = toUpCase(getEname("" + strs[0])) + " " + toUpCase(getEname("" + strs[1]));
} else if (strs.length == 3){
newname = toUpCase(getEname("" + strs[0])) + " "
+ toUpCase(getEname("" + strs[1] + strs[2]));
}else if (strs.length == 4){
newname = toUpCase(getEname("" + strs[0] + strs[1])) + " "
+ toUpCase(getEname("" + strs[2] + strs[3]));
} else{
newname = toUpCase(getEname(name));
}
return newname;
}


/**
* //将中文转换为英文
* @param name
* @return
*/
public static String getEname(String name){
HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat();
pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
String s = "";
try {
s = PinyinHelper.toHanyuPinyinString(name, pyFormat, "");
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
return s;
}
/**
* 首字母大写
* @param str
* @return
*/
private static String toUpCase(String str) {
StringBuffer newstr = new StringBuffer();
newstr.append((str.substring(0, 1)).toUpperCase()).append(
str.substring(1, str.length()));
return newstr.toString();
}


// public static void main(String[] args) {
// String serverUploadImgUrl = "C:/Users/xiaohu/Desktop/img"; // 图片保存路径
// try {
// byte[] bytes = imgGertificate("郑方元", null, null);
// ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
// BufferedImage bi1 =ImageIO.read(bais);
//
// ImageIO.write(bi1, "png", new File(serverUploadImgUrl+"/0.png"));
//
// } catch (Exception e) {
// e.printStackTrace();
// }
// System.out.println("结束");
// }
}

BIN
mallinkPublicApi/src/main/resources/imgTemp/gertificate.jpg Bestand weergeven

Voor Na
Breedte: 3301  |  Hoogte: 2551  |  Grootte: 7.0 MiB

BIN
mallinkPublicApi/src/main/resources/opt/HWLS.TTF Bestand weergeven


+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumScoreType.java Bestand weergeven

@@ -27,7 +27,7 @@ public enum EnumScoreType {
SIGN_IN_FTDAY(19, "连续签到14天"),
SIGN_IN_TEDAY(20, "连续签到28天"),

QUESTION_ADD_CREDIT(21, "游戏奖励积分"),
QUESTION_ADD_CREDIT(21, "问卷奖励积分"),

;



+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java Bestand weergeven

@@ -444,6 +444,10 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
return signinMonthCredit(record,EnumScoreType.SIGN_IN_TEDAY);
}

if (record.getCreditType() == EnumScoreType.QUESTION_ADD_CREDIT.getCode()) {
return record.getCreditNum();
}

return 0;
}



+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxQuestionOneselfUserServiceImpl.java Bestand weergeven

@@ -144,7 +144,7 @@ public class WxQuestionOneselfUserServiceImpl implements WxQuestionOneselfUserSe
wxQuestionOneselfMapper.updateCountUser(record.getQuestionId());

WxQuestionOneself wxQuestionOneself = wxQuestionOneselfMapper.selectById(record.getQuestionId());
if(wxQuestionOneself.getRewardCredit() != null && wxQuestionOneself.getRewardCredit() >= 0){
if(wxQuestionOneself.getRewardCredit() != null && wxQuestionOneself.getRewardCredit() > 0){
WxCreditHistory wxCreditHistory = new WxCreditHistory();
wxCreditHistory.setTenantId(record.getFinalTenantId());
wxCreditHistory.setCUserId(record.getUserId());


Laden…
Annuleren
Opslaan