zhijiezhao 3 years ago
parent
commit
c5755263ea

+ 4 - 0
src/main/java/com/caimei365/user/mapper/SuperVipMapper.java

@@ -158,4 +158,8 @@ public interface SuperVipMapper {
      * @return
      */
     List<Integer> findCouponUse(@Param("userId") Integer userId,@Param("useTime")String useTime);
+
+    Integer findBYShortLink(String shortLink);
+
+    void insertShortLink(int markId, String shortLink, String url);
 }

+ 26 - 5
src/main/java/com/caimei365/user/service/impl/RegisterServiceImpl.java

@@ -1110,15 +1110,18 @@ public class RegisterServiceImpl implements RegisterService {
         //1.user表扣豆子
         VipPackage pac = vipMapper.findUserPackage(packageId);
         Integer userBeans = vipMapper.findUserBeans(userId);
-        BigDecimal b1 = new BigDecimal(pac.getPrice());
-        BigDecimal b2 = new BigDecimal(pac.getProportion());
-        BigDecimal b3 = new BigDecimal(userBeans);
+        BigDecimal b1 = BigDecimal.valueOf(pac.getPrice());
+        BigDecimal b2 = BigDecimal.valueOf(pac.getProportion());
+        BigDecimal b3 = BigDecimal.valueOf(userBeans);
         BigDecimal multiply = b1.multiply(b2);
+        BigDecimal subtract = b3.subtract(multiply);
+        String strs = strs(subtract.toString());
+        String strs1 = strs(multiply.toString());
         //b3已有豆子-b1价格*b2比例
-        Integer integer = Integer.valueOf(String.valueOf(b3.subtract(multiply)));
+        Integer integer = Integer.valueOf(strs);
         vipMapper.updateUserBeans(userId, integer);
         //采美豆消费表记录消费
-        vipMapper.addUserBeansHistory(userId, Integer.valueOf(String.valueOf(multiply)));
+        vipMapper.addUserBeansHistory(userId, Integer.valueOf(strs1));
         Calendar cal = Calendar.getInstance();
         if (repayFlag == 0) {
             SuperVipPo superVip = new SuperVipPo();
@@ -1270,5 +1273,23 @@ public class RegisterServiceImpl implements RegisterService {
         }
         return returnValue.get();
     }
+
+    private static String strs(String str) {
+        if (str.indexOf(".") > 0) {
+            str = str.replaceAll("0+?$", "");//删掉尾数为0的字符
+            str = str.replaceAll("[.]$", "");//结尾如果是小数点,则去掉
+        }
+        return str;
+    }
+
+//    public String getShortLink(int length, int markId, String url) {
+//        String shortLink = RandomCodeGenerator.generateShortLink(length);
+//        Integer id = vipMapper.findBYShortLink(shortLink);
+//        if (id != null && id > 0) {
+//            getShortLink(length, markId, url);
+//        }
+//        vipMapper.insertShortLink(markId, shortLink, url);
+//        return shortLink;
+//    }
 }
 

+ 116 - 0
src/main/java/com/caimei365/user/utils/RandomCodeGenerator.java

@@ -0,0 +1,116 @@
+package com.caimei365.user.utils;
+import java.util.Random;
+
+public class RandomCodeGenerator {
+
+	// TODO 与WWW的RandomCodeGenerator是重复的,后续需要删除www的RandomCodeGenerator
+	private static char codeSequence[] = {
+			'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 
+			'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 
+			'W', 'X', 'Y', 'Z', '2', '3', '4', '5', '6', '7', 
+			'8', '9'
+		};
+	
+	private static char intSequence[] = {
+		'2', '3', '4', '5', '6', '7', 
+		'8', '9'
+	};
+	
+	private static char stringSequence[] = {
+		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 
+		'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 
+		'W', 'X', 'Y', 'Z'
+	};
+
+	private static char newStringSequence[] = {
+			'A','a', 'B','b', 'D','d', 'E' ,'e', 'F','f', 'G','g', 'H','h',
+			'L', 'N','n', 'Q','q', 'R','r', 'T','t', 'Y','y'
+	};
+//	C,i,j,k,M,O,P,S,U,V,W,X,Z,l
+
+	private static char[] shortLink = {
+		'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
+		'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'O',
+		'W', 'X', 'Y', 'Z',
+		'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
+		'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'o',
+		'w', 'x', 'y', 'z' ,
+		'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
+	};
+
+	public static String generateShortLink(int length) {
+		StringBuffer sb = new StringBuffer();
+		Random random = new Random();
+		for (int i = 0; i < shortLink.length && i < length; ++i) {
+			sb.append(shortLink[random.nextInt(shortLink.length)]);
+		}
+		return sb.toString();
+	}
+
+	public static String generateCode(int length) {
+		StringBuffer sb = new StringBuffer();
+		Random random = new Random();
+		for (int i = 0; i < codeSequence.length && i < length; ++i) {
+			sb.append(codeSequence[random.nextInt(codeSequence.length)]);
+		}
+		
+		return sb.toString();
+	}
+	
+	public static String generateCodeInt(int length) {
+		StringBuffer sb = new StringBuffer();
+		Random random = new Random();
+		for (int i = 0; i < intSequence.length && i < length; ++i) {
+			sb.append(intSequence[random.nextInt(intSequence.length)]);
+		}
+		
+		return sb.toString();
+	}
+	
+	public static String generateCodeString(int length) {
+		StringBuffer sb = new StringBuffer();
+		Random random = new Random();
+		for (int i = 0; i < stringSequence.length && i < length; ++i) {
+			sb.append(stringSequence[random.nextInt(stringSequence.length)]);
+		}
+		
+		return sb.toString();
+	}
+	
+	/**
+	 * 随机生成指定位数字母与数字组成的字符串
+	 * @param length 长度
+	 * @return
+	 */
+	/*public static String generateRandomCode(int length) {
+		// 允许字母与数字的字符串
+		return RandomStringUtils.random(length, true, true);
+	}*/
+
+	public static String getRandomCharAndNumr(int length) {
+		String val = "";
+		Random random = new Random();
+		for (int i = 0; i < length; i++) {
+			// 输出字母还是数字
+			String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
+			// 字符串
+			if ("char".equalsIgnoreCase(charOrNum)) {
+				// 取得大写字母还是小写字母
+				int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;
+				val += (char) (choice + random.nextInt(26));
+			} else if ("num".equalsIgnoreCase(charOrNum)) { // 数字
+				val += String.valueOf(random.nextInt(10));
+			}
+		}
+		return val;
+	}
+
+	public static String generateAccount(int length){
+		StringBuffer sb = new StringBuffer();
+		Random random = new Random();
+		for (int i = 0; i < newStringSequence.length && i < length; ++i) {
+			sb.append(newStringSequence[random.nextInt(newStringSequence.length)]);
+		}
+		return sb.toString();
+	}
+}

+ 14 - 0
src/main/resources/mapper/SuperVipMapper.xml

@@ -187,5 +187,19 @@
         LIMIT 1
     </select>
 
+    <select id="findBYShortLink" resultType="integer">
+        SELECT id FROM cm_short_link WHERE shortLink = #{shortLink}
+    </select>
 
+    <insert id="insertShortLink">
+        INSERT INTO `caimei`.`cm_short_link` (
+            `markId`, `shortLink`, `jumpLink`,
+            `createTime`
+        )
+        VALUES
+            (
+                #{markId}, #{shortLink}, #{url},
+                NOW()
+            )
+    </insert>
 </mapper>