server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -1,5 +1,6 @@ package com.doumee.api.business; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.model.ApiResponse; @@ -25,7 +26,7 @@ @Api(tags = "订åä¿¡æ¯è¡¨") @RestController @RequestMapping("/business/goodsorder") public class GoodsorderController { public class GoodsorderController extends BaseController { @Autowired server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -18,33 +18,34 @@ public class Constants { public static final String DEFAULT_PWD = "DEFAULT_PWD"; public static final String TRUE = "t"; public static final String FALSE = "f"; public static final String TOKEN ="TOKEN" ; public static final String SYSTEM ="SYSTEM" ; public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ; public static final String IMG_DIR = "IMG_DIR"; public static final String FILE_DIR ="FILE_DIR" ; public static final String PRIVATE_KEY = "PRIVATE_KEY"; public static String REDIS_DEBUG_STR="test_"; public static final String DEFAULT_PWD = "DEFAULT_PWD"; public static final String TRUE = "t"; public static final String FALSE = "f"; public static final String TOKEN = "TOKEN"; public static final String SYSTEM = "SYSTEM"; public static final String MINI_PROGRAMME = "MINI_PROGRAMME"; public static final String IMG_DIR = "IMG_DIR"; public static final String FILE_DIR = "FILE_DIR"; public static final String PRIVATE_KEY = "PRIVATE_KEY"; public static String REDIS_DEBUG_STR = "test_"; /** * æ°æ®æéèå´ï¼0åªçèªå·±ï¼1åªçèªå·±æå¨æ ¡åºï¼2çå ¨é¨æ ¡åºï¼3çæå®æ ¡åºï¼å¤éï¼ */ public interface PermissionType{ int self =0; int self_campus =1; int all =2; int partful = 3; } public interface goodsorderStatus{ int waitPay =0; int pay =1; int cancel =2; int fail = 3; int over = 4; } /** * æ°æ®æéèå´ï¼0åªçèªå·±ï¼1åªçèªå·±æå¨æ ¡åºï¼2çå ¨é¨æ ¡åºï¼3çæå®æ ¡åºï¼å¤éï¼ */ public interface PermissionType { int self = 0; int self_campus = 1; int all = 2; int partful = 3; } public interface goodsorderStatus { int waitPay = 0; int pay = 1; int cancel = 2; int fail = 3; int over = 4; } public interface goodsorderPayStatus{ int waitPay =0; int pay =1; @@ -54,219 +55,316 @@ public static String getUUID(){ return UUID.randomUUID().toString().replace("-",""); } public interface RedisKeys { public static final String submission_period_key = "sp_"; } public static final String ACCESS_ID="ACCESS_ID"; public static final String BUCKETNAME = "BUCKETNAME"; public static final String OSS = "OSS"; public static final String ACCESS_KEY = "ACCESS_KEY"; public static final String SCRATCH_REDIRECT = "SCRATCH_REDIRECT"; public static final String ENDPOINT = "ENDPOINT"; public static final String TESTCASE_UPLOAD_PATH = "TESTCASE_UPLOAD_PATH"; public static final String RESOURCE_PATH = "RESOURCE_PATH"; public static final String UPLOAD_FILE = "UPLOAD_FILE"; public static final String AVATAR_FILE = "AVATAR_FILE"; //ç¨æ·åè®® public static final String AGREEMENT = "AGREEMENT"; //计价è§å public static final String PRICING_RULE = "PRICING_RULE"; //å°ç¨åºä¸»é¢åç§° public static final String PROJECT_NAME = "PROJECT_NAME"; //å°ç¨åºæå¡ç«¯çµè¯ public static final String SERVER_PHONE = "SERVER_PHONE"; //å°ç¨åºç§èµæµç¨è§é¢ public static final String RENT_TIPS_VIDEO = "RENT_TIPS_VIDEO"; //ç§èµé¡»ç¥ public static final String LEASE_NOTICE = "LEASE_NOTICE"; //ç§èµé¡»ç¥å¾ç public static final String LEASE_NOTICE_URL = "LEASE_NOTICE_URL"; //æ¼é public static final String RENT_DEPOSIT = "RENT_DEPOSIT"; //温馨æç¤º public static final String TIPS = "TIPS"; public static final String FILES_DIR = "FILES_DIR"; public static final String SCRATCH_REDIRECT_URL = "SCRATCH_REDIRECT_URL"; public static final Integer ZERO = 0 ; public static final Integer ONE = 1 ; public static final Integer TWO = 2 ; public static final Integer THREE = 3 ; public static int formatIntegerNum(Integer num){ if(num == null){ return 0; } return num; } public interface UserActionsType{ String cancelPrePay="CANCEL_PRE_PAY"; //订åç»ç®è®¢å String close="CLOSE"; String forceRefund="FORCE_REFUND"; String login="LOGIN"; String pay="PAY"; String preForceRefund="PRE_FORCE_REFUND"; String prePay="PRE_PAY"; String preRefund="PRE_REFUND"; String refund="REFUND"; String register="REGISTER"; String rent="RENT"; } public static BigDecimal formatDecimalNum(BigDecimal num){ if(num == null){ return new BigDecimal(0); } return num; } public static int compareBigdecimal(BigDecimal num,BigDecimal num2){ if(num == null){ num =new BigDecimal(0); } if(num2 == null){ num2 =new BigDecimal(0); } if (num.compareTo(num2) == 1) { return 1; } else if (num.compareTo(num2)== -1) { return -1; } return 0; } public static long formatLongNum(Long num){ if(num == null){ return 0; } return num; } public static String formatImgPath(String avatar, String imgPath) { if(StringUtils.isBlank(avatar)){ return null; } return imgPath+avatar; } public static String getIpAddr(HttpServletRequest request) { String ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); public interface RedisKeys { public static final String submission_period_key = "sp_"; } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); public static final String ACCESS_ID = "ACCESS_ID"; public static final String BUCKETNAME = "BUCKETNAME"; public static final String OSS = "OSS"; public static final String ACCESS_KEY = "ACCESS_KEY"; public static final String SCRATCH_REDIRECT = "SCRATCH_REDIRECT"; public static final String ENDPOINT = "ENDPOINT"; public static final String TESTCASE_UPLOAD_PATH = "TESTCASE_UPLOAD_PATH"; public static final String RESOURCE_PATH = "RESOURCE_PATH"; public static final String UPLOAD_FILE = "UPLOAD_FILE"; public static final String AVATAR_FILE = "AVATAR_FILE"; //ç¨æ·åè®® public static final String AGREEMENT = "AGREEMENT"; //计价è§å public static final String PRICING_RULE = "PRICING_RULE"; //å°ç¨åºä¸»é¢åç§° public static final String PROJECT_NAME = "PROJECT_NAME"; //å°ç¨åºæå¡ç«¯çµè¯ public static final String SERVER_PHONE = "SERVER_PHONE"; //å°ç¨åºç§èµæµç¨è§é¢ public static final String RENT_TIPS_VIDEO = "RENT_TIPS_VIDEO"; //ç§èµé¡»ç¥ public static final String LEASE_NOTICE = "LEASE_NOTICE"; //ç§èµé¡»ç¥å¾ç public static final String LEASE_NOTICE_URL = "LEASE_NOTICE_URL"; //æ¼é public static final String RENT_DEPOSIT = "RENT_DEPOSIT"; //温馨æç¤º public static final String TIPS = "TIPS"; public static final String FILES_DIR = "FILES_DIR"; public static final String SCRATCH_REDIRECT_URL = "SCRATCH_REDIRECT_URL"; public static final Integer ZERO = 0; public static final Integer ONE = 1; public static final Integer TWO = 2; public static final Integer THREE = 3; public static int formatIntegerNum(Integer num) { if (num == null) { return 0; } return num; } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); String localIp = "127.0.0.1"; String localIpv6 = "0:0:0:0:0:0:0:1"; if (ipAddress.equals(localIp) || ipAddress.equals(localIpv6)) { // æ ¹æ®ç½å¡åæ¬æºé ç½®çIP InetAddress inet = null; try { inet = InetAddress.getLocalHost(); ipAddress = inet.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); public interface UserActionsType { String cancelPrePay = "CANCEL_PRE_PAY"; //订åç»ç®è®¢å String close = "CLOSE"; String forceRefund = "FORCE_REFUND"; String login = "LOGIN"; String pay = "PAY"; String preForceRefund = "PRE_FORCE_REFUND"; String prePay = "PRE_PAY"; String preRefund = "PRE_REFUND"; String refund = "REFUND"; String register = "REGISTER"; String rent = "RENT"; } public enum GOODSORDER_STATUS{ // 0å¾ æ¯ä» 1å·²æ¯ä» 2已忶 3æ¯ä»å¤±è´¥ 4å·²ç»ç® UN_PAY("å¾ æ¯ä»", 0,"å¾ æ¯ä»"), HAVING_PAY("å·²æ¯ä»", 1,"å·²æ¯ä»"), CANCEL("已忶", 2,"已忶"), PAY_FAILURE("æ¯ä»å¤±è´¥", 3,"æ¯ä»å¤±è´¥"), CLOSE("å·²ç»ç®", 4,"å·²ç»ç®"), ; String name; Integer key; String info; GOODSORDER_STATUS(String name, Integer key, String info) { this.name = name; this.key = key; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getKey() { return key; } public void setKey(Integer key) { this.key = key; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } public enum MEMBER_RIDES_STATUS{ // 0请æ±å¼éä¸ 1éªè¡ä¸ 2å·²è¿è½¦ 3å¼é失败 LOCKING("请æ±å¼éä¸", 0,"请æ±å¼éä¸"), RIDES_RUNNING("éªè¡ä¸", 1,"éªè¡ä¸"), BACK_CYCLING("å·²è¿è½¦", 2,"å·²è¿è½¦"), LOCKING_DEFEAT("å¼é失败", 3,"å¼é失败") ; String name; Integer key; String info; MEMBER_RIDES_STATUS(String name, Integer key, String info) { this.name = name; this.key = key; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getKey() { return key; } public void setKey(Integer key) { this.key = key; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } public static BigDecimal formatDecimalNum(BigDecimal num) { if (num == null) { return new BigDecimal(0); } return num; } public static int compareBigdecimal(BigDecimal num, BigDecimal num2) { if (num == null) { num = new BigDecimal(0); } if (num2 == null) { num2 = new BigDecimal(0); } if (num.compareTo(num2) == 1) { return 1; } else if (num.compareTo(num2) == -1) { return -1; } return 0; } public static long formatLongNum(Long num) { if (num == null) { return 0; } return num; } public static String formatImgPath(String avatar, String imgPath) { if (StringUtils.isBlank(avatar)) { return null; } return imgPath + avatar; } public static String getIpAddr(HttpServletRequest request) { String ipAddress = request.getHeader("x-forwarded-for"); if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); String localIp = "127.0.0.1"; String localIpv6 = "0:0:0:0:0:0:0:1"; if (ipAddress.equals(localIp) || ipAddress.equals(localIpv6)) { // æ ¹æ®ç½å¡åæ¬æºé ç½®çIP InetAddress inet = null; try { inet = InetAddress.getLocalHost(); ipAddress = inet.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); } } } } // 对äºéè¿å¤ä¸ªä»£ççæ åµï¼ç¬¬ä¸ä¸ªIP为客æ·ç«¯çå®IP,å¤ä¸ªIPæç §','åå² String ipSeparate = ","; int ipLength = 15; if (ipAddress != null && ipAddress.length() > ipLength) { if (ipAddress.indexOf(ipSeparate) > 0) { ipAddress = ipAddress.substring(0, ipAddress.indexOf(ipSeparate)); // 对äºéè¿å¤ä¸ªä»£ççæ åµï¼ç¬¬ä¸ä¸ªIP为客æ·ç«¯çå®IP,å¤ä¸ªIPæç §','åå² String ipSeparate = ","; int ipLength = 15; if (ipAddress != null && ipAddress.length() > ipLength) { if (ipAddress.indexOf(ipSeparate) > 0) { ipAddress = ipAddress.substring(0, ipAddress.indexOf(ipSeparate)); } } return ipAddress; } return ipAddress; } public static String getSHA256Str(String str) { MessageDigest messageDigest; String encdeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); byte[] hash = messageDigest.digest(str.getBytes("UTF-8")); encdeStr = Hex.encodeHexString(hash); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encdeStr; } public static String trimEndSpaceStr(String outPut){ String newOutPut = ""; if(StringUtils.isNotBlank(outPut)){ String[] ostrs = outPut.split("\n"); for(String str : ostrs){ String text = str.replace("\n","").replaceAll("\\s+$", ""); newOutPut += text+"\n"; public static String getSHA256Str(String str) { MessageDigest messageDigest; String encdeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); byte[] hash = messageDigest.digest(str.getBytes("UTF-8")); encdeStr = Hex.encodeHexString(hash); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if(newOutPut.endsWith("\n")){ newOutPut = newOutPut.substring(0,newOutPut.length()-1); return encdeStr; } public static String trimEndSpaceStr(String outPut) { String newOutPut = ""; if (StringUtils.isNotBlank(outPut)) { String[] ostrs = outPut.split("\n"); for (String str : ostrs) { String text = str.replace("\n", "").replaceAll("\\s+$", ""); newOutPut += text + "\n"; } if (newOutPut.endsWith("\n")) { newOutPut = newOutPut.substring(0, newOutPut.length() - 1); } } return newOutPut; } return newOutPut; } public static String delHTMLTag(String htmlStr) { if (StringUtils.isBlank(htmlStr)) { return ""; public static String delHTMLTag(String htmlStr) { if (StringUtils.isBlank(htmlStr)) { return ""; } String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // å®ä¹scriptçæ£åè¡¨è¾¾å¼ String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // å®ä¹styleçæ£åè¡¨è¾¾å¼ String regEx_html = "<[^>]+>"; // å®ä¹HTMLæ ç¾çæ£åè¡¨è¾¾å¼ Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); Matcher m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // è¿æ»¤scriptæ ç¾ Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); Matcher m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // è¿æ»¤styleæ ç¾ Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); Matcher m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // è¿æ»¤htmlæ ç¾ htmlStr = htmlStr.replace(" ", " "); // è¿æ»¤ç©ºæ ¼æ ç¾ htmlStr = htmlStr.replace(" ", " "); // è¿æ»¤ç©ºæ ¼æ ç¾ return htmlStr.trim(); // è¿åææ¬å符串 } String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // å®ä¹scriptçæ£åè¡¨è¾¾å¼ String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // å®ä¹styleçæ£åè¡¨è¾¾å¼ String regEx_html = "<[^>]+>"; // å®ä¹HTMLæ ç¾çæ£åè¡¨è¾¾å¼ Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); Matcher m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // è¿æ»¤scriptæ ç¾ Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); Matcher m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // è¿æ»¤styleæ ç¾ Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); Matcher m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // è¿æ»¤htmlæ ç¾ htmlStr = htmlStr.replace(" "," "); // è¿æ»¤ç©ºæ ¼æ ç¾ htmlStr = htmlStr.replace(" "," "); // è¿æ»¤ç©ºæ ¼æ ç¾ return htmlStr.trim(); // è¿åææ¬å符串 } public static List<String> checkUUID(String checkValue){ String [] str = checkValue.split(","); public static List<String> checkUUID(String checkValue) { String[] str = checkValue.split(","); List<String> strList = new ArrayList<>(); for (String s:str) { try{ for (String s : str) { try { String uuid = UUID.fromString(s).toString(); strList.add(uuid); //do something } catch (IllegalArgumentException exception){ } catch (IllegalArgumentException exception) { continue; } } return strList; } } } server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -10,7 +10,6 @@ import java.text.DateFormatSymbols; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; import java.util.Date; import java.util.*; @@ -3011,11 +3010,11 @@ * @param end * @return */ public static long betweenMin(Date begin, Date end) { public static Integer betweenMin(Date begin, Date end) { long createTime =begin.getTime();//è·åå建æ¶é´çæ¶é´æ³ long currentTime =Objects.isNull(end)?System.currentTimeMillis():end.getTime();//è·åå½åæ¶é´çæ¶é´æ³ long diff=(currentTime-createTime)/1000/60;//è·å两个æ¶é´ç¸å·®çåé return diff; return (int)diff; } @@ -3038,4 +3037,4 @@ return consuming.toString(); } } } server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java
@@ -41,7 +41,7 @@ @ExcelColumn(name="ç¼è¾äºº") private String editor; @ApiModelProperty(value = "æ¯å¦å·²å é¤ 0æªå é¤ 1å·²å é¤", example = "1") @ApiModelProperty(value = "æ¯å¦å·²å é¤ 0æªå é¤ 1å·²å é¤") @ExcelColumn(name="æ¯å¦å·²å é¤ 0æªå é¤ 1å·²å é¤") @TableLogic private Integer isdeleted; @@ -64,7 +64,7 @@ @ExcelColumn(name="车è¾ç¼ç ") private String bikeCode; @ApiModelProperty(value = "å½åè´¦æ·ä½é¢", example = "1") @ApiModelProperty(value = "å½åè´¦æ·ä½é¢") @ExcelColumn(name="å½åè´¦æ·ä½é¢") private BigDecimal balance; @@ -111,31 +111,31 @@ @ExcelColumn(name="è¿è½¦æä»¤ç¼ç ") private String backCommondId; @ApiModelProperty(value = "èµ·æ¥ä»·", example = "1") @ApiModelProperty(value = "èµ·æ¥ä»·") @ExcelColumn(name="èµ·æ¥ä»·") private BigDecimal basePrice; @ApiModelProperty(value = "èµ·æ¥ä»·æ¶é´", example = "1") @ApiModelProperty(value = "èµ·æ¥ä»·æ¶é´") @ExcelColumn(name="èµ·æ¥ä»·æ¶é´") private Integer baseTime; @ApiModelProperty(value = "è¶ åºåä»·", example = "1") @ApiModelProperty(value = "è¶ åºåä»·") @ExcelColumn(name="è¶ åºåä»·") private Integer unitPrice; private BigDecimal unitPrice; @ApiModelProperty(value = "è¶ åºæ¶é´åä½", example = "1") @ApiModelProperty(value = "è¶ åºæ¶é´åä½") @ExcelColumn(name="è¶ åºæ¶é´åä½") private Integer unitTime; @ApiModelProperty(value = "éªè¡ä»·æ ¼", example = "1") @ApiModelProperty(value = "éªè¡ä»·æ ¼") @ExcelColumn(name="éªè¡ä»·æ ¼") private BigDecimal price; @ApiModelProperty(value = "éªè¡å®é ä»·æ ¼", example = "1") @ApiModelProperty(value = "éªè¡å®é ä»·æ ¼") @ExcelColumn(name="éªè¡å®é ä»·æ ¼") private BigDecimal actualPrice; @ApiModelProperty(value = "éªè¡è®¡è´¹æ¶é¿", example = "1") @ApiModelProperty(value = "éªè¡è®¡è´¹æ¶é¿") @ExcelColumn(name="éªè¡è®¡è´¹æ¶é¿") private Integer duration; @@ -144,7 +144,7 @@ //@JsonFormat(pattern = "yyyy-MM-dd") private Date closeDate; @ApiModelProperty(value = "ç»ç®ç¶æ 0æªç»ç® 1å·²ç»æ", example = "1") @ApiModelProperty(value = "ç»ç®ç¶æ 0æªç»ç® 1å·²ç»æ") @ExcelColumn(name="ç»ç®ç¶æ 0æªç»ç® 1å·²ç»æ") private Integer closeStatus; @@ -152,7 +152,7 @@ @ExcelColumn(name="å ³è订åç¼ç (å ³ègoodsorderï¼") private String ordreId; @ApiModelProperty(value = "æ¯å¦ç»ç®è®¡è´¹è½¦å 0å¦ 1æ¯", example = "1") @ApiModelProperty(value = "æ¯å¦ç»ç®è®¡è´¹è½¦å 0å¦ 1æ¯") @ExcelColumn(name="æ¯å¦ç»ç®è®¡è´¹è½¦å 0å¦ 1æ¯") private Integer isStandard; @@ -164,11 +164,11 @@ @ExcelColumn(name="æ¯å¦è忥 0䏿¯ 1æ¯") private String isHoliday; @ApiModelProperty(value = "ç¶æ 0请æ±å¼éä¸ 1éªè¡ä¸ 2å·²è¿è½¦ 3å¼é失败", example = "1") @ApiModelProperty(value = "ç¶æ 0请æ±å¼éä¸ 1éªè¡ä¸ 2å·²è¿è½¦ 3å¼é失败") @ExcelColumn(name="ç¶æ 0请æ±å¼éä¸ 1éªè¡ä¸ 2å·²è¿è½¦ 3å¼é失败") private Integer status; @ApiModelProperty(value = "è¿è½¦ç±»å 0æ£å¸¸è¿è½¦ 1强å¶è¿è½¦", example = "1") @ApiModelProperty(value = "è¿è½¦ç±»å 0æ£å¸¸è¿è½¦ 1强å¶è¿è½¦") @ExcelColumn(name="è¿è½¦ç±»å 0æ£å¸¸è¿è½¦ 1强å¶è¿è½¦") private Integer backType; server/services/src/main/java/com/doumee/dao/business/model/Refund.java
@@ -59,7 +59,7 @@ @ApiModelProperty(value = "ç¨æ·ç¼ç ï¼å ³èmember表ï¼", example = "1") @ExcelColumn(name="ç¨æ·ç¼ç ï¼å ³èmember表ï¼") private BigDecimal memberId; private String memberId; @ApiModelProperty(value = "交æéé¢", example = "1") @ExcelColumn(name="交æéé¢") server/services/src/main/java/com/doumee/dao/business/web/response/MemberRidesResponse.java
@@ -30,10 +30,10 @@ private Date rideEndTime; @ApiModelProperty(value = "éªè¡æ¶é¿") private long rideTime; private Integer rideTime; @ApiModelProperty(value = "计费æ¶é¿") private long duration; private Integer duration; @ApiModelProperty(value = "车å") private String bikeType; server/services/src/main/java/com/doumee/dao/business/web/response/PayOrderDTO.java
@@ -1,6 +1,8 @@ package com.doumee.dao.business.web.response; import com.doumee.core.annotation.excel.ExcelColumn; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -13,14 +15,19 @@ @ApiModel("交ææç»") public class PayOrderDTO { @ApiModelProperty(value = "订åç¼ç ") private String orderCode; private Integer payType; @ApiModelProperty(value = "æ¯ä»æ¹å¼ 0微信 1æ¯ä»å®") private Integer payWay; @ApiModelProperty(value = "鿬¾ç±»å 0ç»ç®é款 1强å¶ç»ç®é款 2ç»ç®å鿬¾") private Integer refundType; @ApiModelProperty(value = "交æéé¢") private BigDecimal money; @ApiModelProperty(value = "æ¯ä»æ¶é´") private Date payDate; } server/services/src/main/java/com/doumee/dao/business/web/response/PricingRuleDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package com.doumee.dao.business.web.response; import com.doumee.dao.business.model.MemberRides; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * * 计价è§å * @author T14 */ @Data @ApiModel("计价è§å") public class PricingRuleDTO { @ApiModelProperty(value = "èµ·æ¥åä»·") private BigDecimal startFare; @ApiModelProperty(value = "åä»·") private BigDecimal price; @ApiModelProperty(value = "计价æ¹å¼ 1:ä¸å£ä»· 2:é¶æ¢¯å®ä»·") private Integer type; @ApiModelProperty(value = "车è¾ç±»å") private String paramId; @ApiModelProperty(value = "车ååç§°") private String bikeType; @ApiModelProperty(value = "è®¡ä»·å¯æ¬") private MemberRides memberRides; } server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
@@ -1,5 +1,6 @@ package com.doumee.dao.business.web.response; import com.doumee.dao.business.model.BaseParam; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -20,13 +21,13 @@ public class RidesDetailResponse { @ApiModelProperty(value = "é¢è®¡æ¶è´¹éé¢") private long amount; private BigDecimal amount; @ApiModelProperty(value = "车å") private String bikeType; @ApiModelProperty(value = "计费æ¶é¿") private long duration; private Integer duration; @ApiModelProperty(value = "éªè¡è®°å½") private List<MemberRidesResponse> memberRidesResponseList; server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -7,6 +7,7 @@ import com.doumee.dao.business.model.Goodsorder; import com.doumee.dao.business.web.response.HomeResponse; import com.doumee.dao.business.web.response.GoodsorderDetailDTO; import com.doumee.dao.business.web.response.RidesDetailResponse; import java.util.List; @@ -116,6 +117,7 @@ */ Object createGoodsOrderPay(String memberId); /** * æ¼éæ¯ä»åè°ä¸å¡ * @param preOrderId @@ -137,5 +139,14 @@ * @param id * @return */ Goodsorder closerGoodsorder(String id); void closerGoodsorder(String id); /** * æ¼éæ¯ä»ä¸å¡ * @param id * @return */ RidesDetailResponse getRidesDetailResponse(String id); } server/services/src/main/java/com/doumee/service/business/PricingRuleService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.doumee.service.business; import com.doumee.dao.business.model.MemberRides; import com.doumee.dao.business.web.response.PricingRuleDTO; import java.util.List; /** * * è·å计价è§å * @author T14 */ public interface PricingRuleService { /** * è·åè·å计价è§å * @param goodaorderId * @return */ PricingRuleDTO getPricingRule(String goodaorderId); PricingRuleDTO getPricingRule(List<MemberRides> memberRidesList); } server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -9,6 +9,7 @@ import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.DateUtil; @@ -22,19 +23,18 @@ import com.doumee.dao.business.model.Goodsorder; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.MemberRides; import com.doumee.dao.business.web.response.HomeResponse; import com.doumee.dao.business.web.response.*; import com.doumee.dao.business.join.MemberRidesJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.web.response.GoodsorderDetailDTO; import com.doumee.dao.business.web.response.MemberRidesResponse; import com.doumee.dao.business.web.response.PayOrderDTO; import com.doumee.service.business.GoodsorderService; import com.doumee.service.business.PricingRuleService; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +51,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @Service public class GoodsorderServiceImpl implements GoodsorderService { @@ -74,14 +75,14 @@ @Autowired private BaseParamMapper baseParamMapper; @Autowired private RefundMapper refundMapper; @Autowired private MemberRidesJoinMapper memberRidesJoinMapper; @Autowired PricingRuleService pricingRuleService; @Override public String create(Goodsorder goodsorder) { @@ -237,7 +238,7 @@ PayOrderDTO payOrderDTO = new PayOrderDTO(); payOrderDTO.setOrderCode(goodsorder.getCode()); payOrderDTO.setPayType(goodsorder.getPayWay()); payOrderDTO.setPayWay(goodsorder.getPayWay()); payOrderDTO.setMoney(goodsorder.getMoney()); payOrderDTO.setPayDate(goodsorder.getPayDate()); payOrderDTOList.add(0,payOrderDTO); @@ -245,7 +246,8 @@ refunds.forEach(s->{ PayOrderDTO refundOrderDTO = new PayOrderDTO(); refundOrderDTO.setOrderCode(s.getCode()); refundOrderDTO.setPayType(s.getPayWay()); refundOrderDTO.setPayWay(s.getPayWay()); refundOrderDTO.setRefundType(s.getType()); refundOrderDTO.setMoney(s.getMoney()); refundOrderDTO.setPayDate(s.getDoneDate()); payOrderDTOList.add(refundOrderDTO); @@ -262,17 +264,132 @@ } @Override public Goodsorder closerGoodsorder(String id) { public void closerGoodsorder(String id) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Goodsorder goodsorder = goodsorderMapper.selectById(id); QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(MemberRides::getOrdreId,id); List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); if (!CollectionUtils.isEmpty(memberRides)){ boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus())); if (exitUnBack){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åè®¢åææªå®æçéªè¡ï¼æ æ³å¼ºå¶ç»ç®"); } PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides); RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); List<MemberRidesResponse> collect = memberRides.stream().map(s -> { MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); memberRidesResponse.setRideStartTime(s.getRentDate()); memberRidesResponse.setRideEndTime(s.getBackDate()); memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime())); memberRidesResponse.setDuration(s.getDuration()); memberRidesResponse.setBikeType(s.getParamName()); memberRidesResponse.setBikeCode(s.getBikeCode()); memberRidesResponse.setBasePrice(s.getBasePrice()); memberRidesResponse.setBaseTime(s.getBaseTime()); memberRidesResponse.setUnitPrice(s.getUnitTime()); memberRidesResponse.setUnitTime(s.getUnitTime()); return memberRidesResponse; }).collect(Collectors.toList()); Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum(); if (durationSum > pricingRule.getMemberRides().getBaseTime()){ BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice(); BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice().multiply(new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime()))); ridesDetailResponse.setAmount(basePrice.add(multiply)); }else { ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice()); } ridesDetailResponse.setBikeType(pricingRule.getBikeType()); ridesDetailResponse.setDuration(durationSum); ridesDetailResponse.setMemberRidesResponseList(collect); return null; Refund refund = new Refund(); refund.setCreateDate(new Date()); refund.setCreator(principal.getId()); refund.setEditDate(new Date()); refund.setEditor(principal.getId()); refund.setIsdeleted(Constants.ZERO); refund.setInfo("ç³»ç»ç»ç®å订åèªå¨å®ç»"); // refund.setCode(); refund.setMemberId(goodsorder.getMemberId()); refund.setMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount())); // refund.setStatus(); // refund.setPreOrderid(); // refund.setOnlineOrderid(); refund.setPayWay(goodsorder.getPayWay()); refund.setDoneDate(new Date()); refund.setType(Constants.ONE); refund.setObjId(goodsorder.getId()); refund.setReason("ç¡®å®å¼ºå¶ç»ç®åï¼ç»ç®å订åèªå¨å®ç»"); refundMapper.insert(refund); Goodsorder update = new Goodsorder(); update.setId(goodsorder.getId()); update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); update.setCloseMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount())); update.setCloseId(refund.getId()); update.setCloseDate(refund.getDoneDate()); update.setCloseInfo(refund.getInfo()); update.setCloseUserId(principal.getId()); update.setCloseType(Constants.ONE); goodsorderMapper.updateById(update); } } @Override public RidesDetailResponse getRidesDetailResponse(String id) { QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(MemberRides::getOrdreId,id); List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); if (!CollectionUtils.isEmpty(memberRides)){ boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus())); if (exitUnBack){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å½åè®¢åææªå®æçéªè¡ï¼æ æ³å¼ºå¶ç»ç®"); } PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides); RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); List<MemberRidesResponse> collect = memberRides.stream().map(s -> { MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); memberRidesResponse.setRideStartTime(s.getRentDate()); memberRidesResponse.setRideEndTime(s.getBackDate()); memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime())); memberRidesResponse.setDuration(s.getDuration()); memberRidesResponse.setBikeType(s.getParamName()); memberRidesResponse.setBikeCode(s.getBikeCode()); memberRidesResponse.setBasePrice(s.getBasePrice()); memberRidesResponse.setBaseTime(s.getBaseTime()); memberRidesResponse.setUnitPrice(s.getUnitTime()); memberRidesResponse.setUnitTime(s.getUnitTime()); return memberRidesResponse; }).collect(Collectors.toList()); Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum(); if (durationSum > pricingRule.getMemberRides().getBaseTime()){ BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice(); BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice().multiply(new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime()))); ridesDetailResponse.setAmount(basePrice.add(multiply)); }else { ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice()); } ridesDetailResponse.setBikeType(pricingRule.getBikeType()); ridesDetailResponse.setDuration(durationSum); ridesDetailResponse.setMemberRidesResponseList(collect); return ridesDetailResponse; } return new RidesDetailResponse(); } @Override public Object createGoodsOrderPay(String memberId){ Member member = memberMapper.selectById(memberId); if(Objects.isNull(member)){ server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,103 @@ package com.doumee.service.business.impl; import java.math.BigDecimal; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.dao.business.BaseParamMapper; import com.doumee.dao.business.MemberRidesMapper; import com.doumee.dao.business.PricingDetailMapper; import com.doumee.dao.business.PricingParamMapper; import com.doumee.dao.business.model.BaseParam; import com.doumee.dao.business.model.MemberRides; import com.doumee.dao.business.web.response.PricingRuleDTO; import com.doumee.service.business.PricingRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * * è·å计价è§å * @author T14 */ @Service public class PricingRuleServiceImpl implements PricingRuleService { @Autowired PricingParamMapper pricingParamMapper; @Autowired PricingDetailMapper pricingParamMapper; @Autowired MemberRidesMapper memberRidesMapper; @Autowired BaseParamMapper baseParamMapper; @Override public PricingRuleDTO getPricingRule(String goodaorderId) { QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(MemberRides::getOrdreId,goodaorderId); List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); if (CollectionUtils.isEmpty(memberRides)){ return null; } PricingRuleDTO pricingRule = getPricingRule(memberRides); return pricingRule; } @Override public PricingRuleDTO getPricingRule(List<MemberRides> memberRidesList) { if (!CollectionUtils.isEmpty(memberRidesList)){ List<String> collect = memberRidesList.stream() .filter(s -> Objects.nonNull(s.getActualPrice())) .map(s -> s.getParamId()) .collect(Collectors.toList()); QueryWrapper<BaseParam> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(BaseParam::getIsdeleted, Constants.ZERO) .eq(BaseParam::getType, Constants.THREE) .in(BaseParam::getId,collect) .orderByDesc(BaseParam::getSortnum) .last("limit 1"); BaseParam baseParam = baseParamMapper.selectOne(wrapper); MemberRides memberRides = memberRidesList.stream() .filter(s -> baseParam.getId().equals(s.getParamId())) .findFirst().orElseThrow(() -> new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "没æè½¦è¾ç±»åç¼ç ")); PricingRuleDTO pricingRuleDTO = new PricingRuleDTO(); if (memberRides.getBaseTime() < 0){ //ä¸å£ä»·å®ä»· pricingRuleDTO.setStartFare(memberRides.getBasePrice()); pricingRuleDTO.setPrice(new BigDecimal("0")); pricingRuleDTO.setType(Constants.ONE); pricingRuleDTO.setParamId(baseParam.getId()); pricingRuleDTO.setBikeType(baseParam.getName()); pricingRuleDTO.setMemberRides(memberRides); }else { pricingRuleDTO.setStartFare(memberRides.getBasePrice()); pricingRuleDTO.setPrice(memberRides.getUnitPrice()); pricingRuleDTO.setType(Constants.TWO); pricingRuleDTO.setParamId(baseParam.getId()); pricingRuleDTO.setBikeType(baseParam.getName()); pricingRuleDTO.setMemberRides(memberRides); } return pricingRuleDTO; } return null; } }