zhanghua
2022-10-10 e6e10141af7c033eeddb649c6d2d1ed93f55bf3f
案件商铺编码
3个文件已修改
3个文件已添加
628 ■■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/utils/common/RandomUtils.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java 505 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/TestController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/mapper/common/GeneratedCodeMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/common/GeneratedCodeMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/test/java/com/ycl/sccgplatform/SccgPlatformApplicationTests.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/utils/common/RandomUtils.java
@@ -21,13 +21,15 @@
     */
    private static final String FORMT_STRING = "888888";
    private static final String FORMT_STRING_0 = "000000";
    /**
     * 获取用户名
     *
     * @param userId
     * @return
     */
    public static   String getUserId(long userId) {
    public static String getUserId(long userId) {
        return NICK_NAME + formatSign(userId)
                + generateRandomInt(SIGN_LENGTH);
@@ -38,6 +40,24 @@
     *
     * @return4
     */
    public static String formatSign(Integer param, Integer lenght) {
        String str = Long.toString(param);
        int length = str.length() - lenght;
        if (length == 0) {
            return str;
        } else if (length < 0) {
            str = "0" + str;
            return FORMT_STRING_0.substring(0, Math.abs(length) - 1) + str;
        } else {
            return str.substring(length);
        }
    }
    /**
     * 格式化标记
     *
     * @return4
     */
    private static String formatSign(long param) {
        String str = Long.toString(param);
        int length = str.length() - SIGN_LENGTH;
ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java
@@ -1,259 +1,314 @@
package com.ycl.common.util;
import com.ycl.mapper.common.GeneratedCodeMapper;
import com.ycl.utils.common.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Component
public class UtilNumber {
    private GeneratedCodeMapper generatedCodeMapper;
    @Autowired
    public void setGeneratedCodeMapper(GeneratedCodeMapper generatedCodeMapper) {
        this.generatedCodeMapper = generatedCodeMapper;
    }
    public static String getCode(String type ,int n) {
        String  code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+RandomStringUtil.getRandomString(n,RandomStringUtil.ALL);
        return  code;
    }
    public static String getNumber(String type ,int n) {
        String  code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+RandomNumberGenerator.generateNumber(n);
        return  code;
    }
    public static String getApplicationCode(String type ,int n) {
        String  code = type+getApplicationSecret(n);
        return  code;
    }
    public static String getApplicationSecret(int n) {
        String  code = RandomStringUtil.getRandomString(n,RandomStringUtil.CAPITAL_NUM_LOWER);
        return  code;
    }
    public static String getRqUID(String channel) {
        // 6位随机数,用于生成订单号
    public static String getCode(String type, int n) {
        String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomStringUtil.getRandomString(n, RandomStringUtil.ALL);
        return code;
    }
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(6);
    public static String getNumber(String type, int n) {
        String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomNumberGenerator.generateNumber(n);
        return code;
    }
        String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
        return rqUID;
    }
    public static String getRqTradeNo(String channel) {
        // 6位随机数,用于生成交易号
        String rand2 = RandomNumberGenerator.generateNumber(6);
        String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand2;
        return rqUID;
    }
    public static String getSettleAccount(String memberId) {
        // md5
        String subStr = memberId.substring(memberId.length() - 12,
                memberId.length());
        String md5Str = Md5.md5(Md5.md5(subStr));
    public static String getApplicationCode(String type, int n) {
        String code = type + getApplicationSecret(n);
        return code;
    }
    public static String getApplicationSecret(int n) {
        String code = RandomStringUtil.getRandomString(n, RandomStringUtil.CAPITAL_NUM_LOWER);
        return code;
    }
    public static String getRqUID(String channel) {
        // 6位随机数,用于生成订单号
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(6);
        String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
        return rqUID;
    }
    public static String getRqTradeNo(String channel) {
        // 6位随机数,用于生成交易号
        String rand2 = RandomNumberGenerator.generateNumber(6);
        String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand2;
        return rqUID;
    }
    public static String getSettleAccount(String memberId) {
        // md5
        String subStr = memberId.substring(memberId.length() - 12,
                memberId.length());
        String md5Str = Md5.md5(Md5.md5(subStr));
//        String rand1 = RandomNumberGenerator.generateNumber(4);
//        String rand2 = RandomNumberGenerator.generateNumber(6);
        String merchantId = subStr + md5Str.substring(0, 3);
        return merchantId;
        String merchantId = subStr + md5Str.substring(0, 3);
        return merchantId;
    }
    }
    public static String getShopQRCode(String memberId) {
        // md5
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(6);
        String shopQRCode = Md5.md5(memberId.substring(0, 12) + rand1 + rand2);
        return shopQRCode;
    public static String getShopQRCode(String memberId) {
        // md5
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(6);
        String shopQRCode = Md5.md5(memberId.substring(0, 12) + rand1 + rand2);
        return shopQRCode;
    }
    }
    public static String getMsgId() {
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(4);
    public static String getMsgId() {
        String rand1 = RandomNumberGenerator.generateNumber(4);
        String rand2 = RandomNumberGenerator.generateNumber(4);
        String msgId = "merchant"
                + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
        return msgId;
        String msgId = "merchant"
                + DateUtils.getNowDate("yyyyMMdd")
                + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
        return msgId;
    }
    }
    public static String toSignStr(Object obj, Class<?> clazz) {
        if (obj == null) {
            return "";
        }
        List<String> listStr = new ArrayList<String>();
    public static String toSignStr(Object obj, Class<?> clazz) {
        if (obj == null) {
            return "";
        }
        List<String> listStr = new ArrayList<String>();
        Field[] fields = clazz.getDeclaredFields();// 根据Class对象获得属性 私有的也可以获得
        try {
            for (Field f : fields) {
                f.setAccessible(true); // 设置些属性是可以访问的
                Object val = f.get(obj); // 得到此属性的值
                String name = f.getName(); // 得到此属性的名称
                if (!name.equals("sign") && CommonUtils.isNotEmpty(val)) {
                    listStr.add(name + "=" + val);
                }
            }
        Field[] fields = clazz.getDeclaredFields();// 根据Class对象获得属性 私有的也可以获得
        try {
            for (Field f : fields) {
                f.setAccessible(true); // 设置些属性是可以访问的
                Object val = f.get(obj); // 得到此属性的值
                String name = f.getName(); // 得到此属性的名称
                if (!name.equals("sign") && CommonUtils.isNotEmpty(val)) {
                    listStr.add(name + "=" + val);
                }
            }
        } catch (IllegalAccessException e) {
        }
        // 节点间以&符连接,形成最终待签名字符串
        Collections.sort(listStr);
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < listStr.size(); i++) {
            String msg = listStr.get(i);
            if (i > 0) {
                sb.append("&");
            }
            sb.append(msg);
        }
        return sb.toString();
    }
        } catch (IllegalAccessException e) {
        }
        // 节点间以&符连接,形成最终待签名字符串
        Collections.sort(listStr);
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < listStr.size(); i++) {
            String msg = listStr.get(i);
            if (i > 0) {
                sb.append("&");
            }
            sb.append(msg);
        }
        return sb.toString();
    }
    /**
     *
     * 功能描述:去除字符串首部为"0"字符
     *
     * @param str
     *            传入需要转换的字符串
     * @return 转换后的字符串
     */
    public static String removeZero(String str) {
        char ch;
        String result = "";
        if (str != null && str.trim().length() > 0
                && !str.trim().equalsIgnoreCase("null")) {
            try {
                for (int i = 0; i < str.length(); i++) {
                    ch = str.charAt(i);
                    if (ch != '0') {
                        result = str.substring(i);
                        break;
                    }
                }
            } catch (Exception e) {
                result = "";
            }
        } else {
            result = "";
        }
        return result;
    /**
     * 功能描述:去除字符串首部为"0"字符
     *
     * @param str 传入需要转换的字符串
     * @return 转换后的字符串
     */
    public static String removeZero(String str) {
        char ch;
        String result = "";
        if (str != null && str.trim().length() > 0
                && !str.trim().equalsIgnoreCase("null")) {
            try {
                for (int i = 0; i < str.length(); i++) {
                    ch = str.charAt(i);
                    if (ch != '0') {
                        result = str.substring(i);
                        break;
                    }
                }
            } catch (Exception e) {
                result = "";
            }
        } else {
            result = "";
        }
        return result;
    }
    }
    /**
     *
     * 功能描述:金额字符串转换:单位分转成单元
     *
     * @param str
     *            传入需要转换的金额字符串
     * @return 转换后的金额字符串
     */
    public static String fenToYuan(Object o) {
        if (o == null)
            return "0.00";
        String s = o.toString();
        int len = -1;
        StringBuilder sb = new StringBuilder();
        if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
            s = removeZero(s);
            if (s != null && s.trim().length() > 0
                    && !s.equalsIgnoreCase("null")) {
                len = s.length();
                int tmp = s.indexOf("-");
                if (tmp >= 0) {
                    if (len == 2) {
                        sb.append("-0.0").append(s.substring(1));
                    } else if (len == 3) {
                        sb.append("-0.").append(s.substring(1));
                    } else {
                        sb.append(s.substring(0, len - 2)).append(".")
                                .append(s.substring(len - 2));
                    }
                } else {
                    if (len == 1) {
                        sb.append("0.0").append(s);
                    } else if (len == 2) {
                        sb.append("0.").append(s);
                    } else {
                        sb.append(s.substring(0, len - 2)).append(".")
                                .append(s.substring(len - 2));
                    }
                }
            } else {
                sb.append("0.00");
            }
        } else {
            sb.append("0.00");
        }
        return sb.toString();
    }
    /**
     * 功能描述:金额字符串转换:单位分转成单元
     *
     * @param str 传入需要转换的金额字符串
     * @return 转换后的金额字符串
     */
    public static String fenToYuan(Object o) {
        if (o == null)
            return "0.00";
        String s = o.toString();
        int len = -1;
        StringBuilder sb = new StringBuilder();
        if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
            s = removeZero(s);
            if (s != null && s.trim().length() > 0
                    && !s.equalsIgnoreCase("null")) {
                len = s.length();
                int tmp = s.indexOf("-");
                if (tmp >= 0) {
                    if (len == 2) {
                        sb.append("-0.0").append(s.substring(1));
                    } else if (len == 3) {
                        sb.append("-0.").append(s.substring(1));
                    } else {
                        sb.append(s.substring(0, len - 2)).append(".")
                                .append(s.substring(len - 2));
                    }
                } else {
                    if (len == 1) {
                        sb.append("0.0").append(s);
                    } else if (len == 2) {
                        sb.append("0.").append(s);
                    } else {
                        sb.append(s.substring(0, len - 2)).append(".")
                                .append(s.substring(len - 2));
                    }
                }
            } else {
                sb.append("0.00");
            }
        } else {
            sb.append("0.00");
        }
        return sb.toString();
    }
    /**
     *
     * 功能描述:金额字符串转换:单位元转成单分
     *
     * @param str
     *            传入需要转换的金额字符串
     * @return 转换后的金额字符串
     */
    public static String yuanToFen(Object o) {
        if (o == null)
            return "0";
        String s = o.toString();
        int posIndex = -1;
        String str = "";
        StringBuilder sb = new StringBuilder();
        if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
            posIndex = s.indexOf(".");
            if (posIndex > 0) {
                int len = s.length();
                if (len == posIndex + 1) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append("00");
                } else if (len == posIndex + 2) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str)
                            .append(s.substring(posIndex + 1, posIndex + 2))
                            .append("0");
                } else if (len == posIndex + 3) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append(
                            s.substring(posIndex + 1, posIndex + 3));
                } else {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append(
                            s.substring(posIndex + 1, posIndex + 3));
                }
            } else {
                sb.append(s).append("00");
            }
        } else {
            sb.append("0");
        }
        str = removeZero(sb.toString());
        if (str != null && str.trim().length() > 0
                && !str.trim().equalsIgnoreCase("null")) {
            return str;
        } else {
            return "0";
        }
    }
    /**
     * 功能描述:金额字符串转换:单位元转成单分
     *
     * @param str 传入需要转换的金额字符串
     * @return 转换后的金额字符串
     */
    public static String yuanToFen(Object o) {
        if (o == null)
            return "0";
        String s = o.toString();
        int posIndex = -1;
        String str = "";
        StringBuilder sb = new StringBuilder();
        if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
            posIndex = s.indexOf(".");
            if (posIndex > 0) {
                int len = s.length();
                if (len == posIndex + 1) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append("00");
                } else if (len == posIndex + 2) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str)
                            .append(s.substring(posIndex + 1, posIndex + 2))
                            .append("0");
                } else if (len == posIndex + 3) {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append(
                            s.substring(posIndex + 1, posIndex + 3));
                } else {
                    str = s.substring(0, posIndex);
                    if (str == "0") {
                        str = "";
                    }
                    sb.append(str).append(
                            s.substring(posIndex + 1, posIndex + 3));
                }
            } else {
                sb.append(s).append("00");
            }
        } else {
            sb.append("0");
        }
        str = removeZero(sb.toString());
        if (str != null && str.trim().length() > 0
                && !str.trim().equalsIgnoreCase("null")) {
            return str;
        } else {
            return "0";
        }
    }
    /**
     * 创建商铺编号
     * 店铺编号:年月日 + 序号  例:202210100001
     *
     * @param
     * @return java.lang.String
     * @author AI
     * @date 2022-10-10 15:43
     */
    public String createShopCode() {
        String ymd = getYMD();
        Integer number = generatedCodeMapper.createNumber(ymd, "shop");
        String numberStr = RandomUtils.formatSign(number, 4);
        return getYMD() + numberStr;
    }
    /**
     * 创建案件编号
     * 案件编号规则:年份 + 区县编号 + 月日 + 序号  例:202233112310100001
     *
     * @param
     * @return java.lang.String
     * @author AI
     * @date 2022-10-10 15:43
     */
    public String createCaseCode() {
        String ymd = getYMD();
        Integer number = generatedCodeMapper.createNumber(ymd, "case");
        String numberStr = RandomUtils.formatSign(number, 4);
        String year = String.valueOf(LocalDateTime.now().getYear());
        String areaCode = "331123";
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("MMdd");
        String md = dtf2.format(LocalDateTime.now());
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(year);
        stringBuilder.append(areaCode);
        stringBuilder.append(md);
        stringBuilder.append(numberStr);
        return stringBuilder.toString();
    }
    public static void main(String[] args) {
         System.out.println(getRqUID("1"));
    private static String getYMD() {
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMdd");
        return dtf2.format(LocalDateTime.now());
    }
    }
    public static void main(String[] args) {
    }
}
ycl-platform/src/main/java/com/ycl/controller/TestController.java
New file
@@ -0,0 +1,52 @@
package com.ycl.controller;
import com.alibaba.druid.util.StringUtils;
import com.ycl.api.CommonResult;
import com.ycl.remote.dto.EventAddParamDto;
import com.ycl.remote.dto.EventProcessParamDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Api(tags = "系统管理-测试")
@RestController
@RequestMapping("/api/unauthorized/external/event")
public class TestController {
    @ApiOperation("添加")
    @PostMapping("/add")
    public String add(@RequestBody EventAddParamDto book) {
        return "{\n" +
                "    \"code\": 0,\n" +
                "    \"msg\": \"OK\",\n" +
                "    \"result\": {\n" +
                "        \"taskcode\": \"202034150102280004\"\n" +
                "}\n" +
                "}\n";
    }
    @ApiOperation("详情")
    @PostMapping("/process")
    public String process(@RequestBody EventProcessParamDto book) {
        return "{\n" +
                "\t\"msg\": \"OK\",\n" +
                "\t\"code\": 0,\n" +
                "\t\"result\": {\n" +
                "\t\t\"taskcode\": \"202034150102280004\",\n" +
                "\t\t\"statusName\": \"已结案\",\n" +
                "\t\t\"dealTime\": \"2020-05-25 12:15:30\",\n" +
                "\t\t\"dealMsg\": \"已处理\",\n" +
                "\t\t\"hcczImages\": [\n" +
                "\t\t\t\" http:// 183.246.199.93:10000/upload/file/2020/05/20/20200520153430691576.jpg\",\n" +
                "\t\t\t\" http:// 183.246.199.93:10000//upload/file/2020/05/20/20200520153439170369.jpg\",\n" +
                "\t\t\t\" http:// 183.246.199.93:10000//upload/file/2020/05/20/20200520153454125143.jpg\"\n" +
                "\t\t]\n" +
                "\t}\n" +
                "}";
    }
}
ycl-platform/src/main/java/com/ycl/mapper/common/GeneratedCodeMapper.java
New file
@@ -0,0 +1,16 @@
package com.ycl.mapper.common;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
 * GeneratedCode 编码生成表
 *
 * @version V1.0
 * @author: AI
 * @date: 2022-10-10 15:38
 **/
@Repository
public interface GeneratedCodeMapper {
    Integer createNumber(@Param("ymd") String ymd, @Param("type") String type);
}
ycl-platform/src/main/resources/mapper/common/GeneratedCodeMapper.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycl.mapper.common.GeneratedCodeMapper">
    <select id="createNumber" resultType="java.lang.Integer">
        {call p_create_code(#{ymd,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR})}
    </select>
</mapper>
ycl-platform/src/test/java/com/ycl/sccgplatform/SccgPlatformApplicationTests.java
@@ -1,13 +1,37 @@
package com.ycl.sccgplatform;
import com.ycl.common.util.UtilNumber;
import com.ycl.service.caseHandler.IBaseCaseService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SccgPlatformApplicationTests {
    private IBaseCaseService baseCaseService;
    private UtilNumber utilNumber;
    @Autowired
    public void setBaseCaseService(IBaseCaseService baseCaseService) {
        this.baseCaseService = baseCaseService;
    }
    @Autowired
    public void setUtilNumber(UtilNumber utilNumber) {
        this.utilNumber = utilNumber;
    }
    @Test
    void contextLoads() {
        String msg = baseCaseService.processEvent(3);
    }
    @Test
    void createCode() {
        System.out.println(utilNumber.createShopCode());
        System.out.println(utilNumber.createCaseCode());
    }
}