From 69c7aa6c7cf05197c0b1d1e9e19759943a5fb3a1 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 19 二月 2025 09:14:41 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java | 4 server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java | 48 ++++++- server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java | 32 +++++ server/web/src/main/java/com/doumee/api/web/BusinessApi.java | 36 ++++++ server/services/src/main/java/com/doumee/service/business/GoodsorderService.java | 9 + server/services/src/main/java/com/doumee/service/business/DiscountService.java | 1 server/services/src/main/java/com/doumee/core/utils/DateUtil.java | 13 +- server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java | 4 server/web/src/main/java/com/doumee/api/web/HomeApi.java | 3 server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java | 3 server/services/src/main/java/com/doumee/core/constants/Constants.java | 4 server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 160 +++++++++++++++++++++++++- server/services/src/main/java/com/doumee/dao/business/model/Discount.java | 6 + server/services/src/main/java/com/doumee/dao/business/model/Transactions.java | 6 14 files changed, 290 insertions(+), 39 deletions(-) diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java index 8589721..b4ae0e5 100644 --- a/server/services/src/main/java/com/doumee/core/constants/Constants.java +++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java @@ -115,7 +115,9 @@ REFUND(2,"缁撶畻閫�鎶奸噾", "缁撶畻閫�鎶奸噾"), - PLATFORMREFUND(3,"骞冲彴閫�鎶奸噾", "骞冲彴閫�鎶奸噾") + PLATFORM_REFUND(3,"骞冲彴閫�娆�", "骞冲彴閫�娆�"), + + DISCOUNT(4,"骞冲彴濂楅", "骞冲彴濂楅") ; String name; diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java index 8f8188e..575ab4e 100644 --- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java +++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java @@ -2163,19 +2163,19 @@ /** * 寰楀嚭涓や釜鏃ユ湡涔嬮棿鐨勯棿闅斿ぉ鏁� * - * @param strFromDate + * @param smallDate * 鏍煎紡涓簓yyy-MM-dd - * @param strToDate + * @param bigDate * 鏍煎紡涓簓yyy-MM-dd * @return int */ - public static long getBetweenDays(String strFromDate, String strToDate) { + public static long getBetweenDays(String smallDate, String bigDate) { long m_intervalday = 0;// 鍒濆鍖栨椂闂撮棿闅旂殑鍊间负0 // 浣跨敤鐨勬椂闂存牸寮忎负yyyy-MM-dd SimpleDateFormat m_simpledateformat = new SimpleDateFormat("yyyy-MM-dd"); try { - Date fromDate = m_simpledateformat.parse(strFromDate); - Date toDate = m_simpledateformat.parse(strToDate); + Date fromDate = m_simpledateformat.parse(smallDate); + Date toDate = m_simpledateformat.parse(bigDate); m_intervalday = toDate.getTime() - fromDate.getTime();// 璁$畻鎵�寰椾负寰鏁� m_intervalday = m_intervalday / 1000 / 60 / 60 / 24;// 璁$畻鎵�寰楃殑澶╂暟 @@ -2771,8 +2771,7 @@ public static void main(String[] args) { try { - System.out.println((int)(3.222)); - + System.out.println(DateUtil.getBetweenDays("2025-02-13","2025-02-15")); } catch (Exception ex) { ex.printStackTrace(); } diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java index 68b7641..722c77f 100644 --- a/server/services/src/main/java/com/doumee/dao/business/model/Discount.java +++ b/server/services/src/main/java/com/doumee/dao/business/model/Discount.java @@ -157,6 +157,12 @@ private Integer bikeOrElec; @TableField(exist = false) + @ApiModelProperty(value = "姣忔棩鍗曚环", example = "1") + private BigDecimal dayPrice; + + + + @TableField(exist = false) @ApiModelProperty(value = "鍥剧墖鍏ㄨ矾寰�", example = "1") private String fullImgUrl; } diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java index 893616e..7260dc1 100644 --- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java +++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java @@ -118,8 +118,8 @@ @ApiModelProperty(value = "閿�閲忔瘡澶╅檺棰�", example = "1") private Integer saleDayLimit; - @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2杩囨湡鎴栫敤瀹�", example = "1") - @ExcelColumn(name="濂楅鐘舵��",index = 7,width = 10,valueMapping = "0=姝e父锛�1=浣滃簾锛�2=杩囨湡鎴栫敤瀹�") + @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2寰呮敮浠�", example = "1") + @ExcelColumn(name="濂楅鐘舵��",index = 7,width = 10,valueMapping = "0=姝e父锛�1=浣滃簾锛�2=寰呮敮浠�") private Integer status; @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember)") diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java b/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java index 91c04df..99918c9 100644 --- a/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java +++ b/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java @@ -63,7 +63,7 @@ @ExcelColumn(name="浜ゆ槗閲戦") private BigDecimal money; - @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆�", example = "1") + @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆� 4璐拱濂楅 ", example = "1") @ExcelColumn(name="浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1缁撶畻瀹為檯娑堣垂 2缁撶畻閫�娆� 3骞冲彴閫�娆�") private Integer type; @@ -91,8 +91,8 @@ @ExcelColumn(name="鐢ㄦ埛褰撳墠浣欓(鍒嗭級") private BigDecimal balance; - @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟", example = "1") - @ExcelColumn(name="浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟") + @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟 2濂楅璐拱", example = "1") + @ExcelColumn(name="浜ゆ槗鍏宠仈瀵硅薄绫诲瀷 0璁㈠崟 1閫�娆惧崟 2濂楅璐拱") private Integer objType; @ApiModelProperty(value = "浜ゆ槗鍏宠仈瀵硅薄缂栫爜") diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java index 04205a2..02081f8 100644 --- a/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java +++ b/server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java @@ -1,6 +1,7 @@ package com.doumee.dao.business.web.response; import com.doumee.dao.business.model.Ad; +import com.doumee.dao.business.model.Discount; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,7 +38,6 @@ @ApiModelProperty(value = "绉熻祦椤荤煡") private String leaseNotice; - @ApiModelProperty(value = "鎶奸噾鐘舵�侊細0=鏈敮浠樻娂閲戯紱1=宸叉敮浠樻娂閲�; 2=閫�娆句腑") private Integer depositStatus = 0; @@ -65,5 +65,7 @@ @ApiModelProperty(value = "骞垮憡淇℃伅") private List<Ad> adList; + @ApiModelProperty(value = "鐑攢濂楅") + private List<Discount> discountList; } diff --git a/server/services/src/main/java/com/doumee/service/business/DiscountService.java b/server/services/src/main/java/com/doumee/service/business/DiscountService.java index 61b5690..1f4c9a8 100644 --- a/server/services/src/main/java/com/doumee/service/business/DiscountService.java +++ b/server/services/src/main/java/com/doumee/service/business/DiscountService.java @@ -87,6 +87,7 @@ */ PageData<Discount> findPage(PageWrap<Discount> pageWrap); + void dealPrice(Discount discount); /** * 鏉′欢缁熻 * diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java index 452593d..dc989d6 100644 --- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java +++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java @@ -128,9 +128,16 @@ */ Object createGoodsOrderPay(String memberId); + /** + * 濂楅璐拱 + * @param discountId + * @param memberId + * @return + */ + Object createDiscountOrderPay(String discountId,String memberId); /** - * 鎶奸噾鏀粯鍥炶皟涓氬姟 + * 鏀粯鍥炶皟涓氬姟 * @param preOrderId * @return */ diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java index f22b329..07658ac 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java @@ -183,6 +183,7 @@ discountLog.setGoodsorderId(discountMember.getGoodsorderId()); discountLogMapper.insert(discountLog); } + //閫�娆炬搷浣� } @@ -229,8 +230,8 @@ discountLog.setGoodsorderId(discountMember.getGoodsorderId()); discountLog.setEditInfo(model.getInfo()); discountLog.setEditDays(model.getAddDays()); - discountLog.setInfo("灏嗘湁鏁堟湡澧炲姞"+model.getAddDays()+"澶�, 璋冩暣鍚庢湁鏁堟湡鑷�"+useEndDate); discountLogMapper.insert(discountLog); + } } diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java index 1a049aa..7c88851 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountServiceImpl.java @@ -7,6 +7,7 @@ import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.DiscountMapper; import com.doumee.dao.business.join.BikeRepairJoinMapper; @@ -29,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Objects; @@ -58,6 +60,9 @@ discount.setIsdeleted(Constants.ZERO); discount.setCreateDate(new Date()); discount.setCreator(userInfo.getId()); + if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO)){ + discount.setUseDays((int) (DateUtil.getBetweenDays(DateUtil.dateToString(discount.getUseStartDate(),"yyyy-MM-dd"),DateUtil.dateToString(discount.getUseEndDate(),"yyyy-MM-dd")))); + } discountMapper.insert(discount); return discount.getId(); } @@ -68,15 +73,15 @@ || StringUtils.isBlank(discount.getName()) || Objects.isNull(discount.getType()) || Objects.isNull(discount.getLimitType()) - || (discount.getLimitTime()==Constants.ONE && Objects.isNull(discount.getLimitTime())) - || Objects.isNull(discount.getPrice()) + || (Constants.equalsInteger(discount.getLimitTime(),Constants.ONE) && Objects.isNull(discount.getLimitTime())) + || Objects.isNull(discount.getPrice()) || discount.getPrice().compareTo(BigDecimal.ZERO) <= Constants.ZERO || Objects.isNull(discount.getChannel()) || Objects.isNull(discount.getStartDate()) || Objects.isNull(discount.getEndDate()) || Objects.isNull(discount.getUseType()) - || (discount.getUseType()==Constants.ZERO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseEndDate()) )) - || (discount.getUseType()==Constants.ONE && Objects.isNull(discount.getUseDays())) - || (discount.getUseType()==Constants.TWO && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseDays()) )) + || (Constants.equalsInteger(discount.getUseType(),Constants.ZERO) && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseEndDate()) )) + || (Constants.equalsInteger(discount.getUseType(),Constants.ONE) && Objects.isNull(discount.getUseDays())) + || (Constants.equalsInteger(discount.getUseType(),Constants.TWO) && ( Objects.isNull(discount.getUseStartDate()) || Objects.isNull(discount.getUseDays()) )) || (Objects.isNull(discount.getUseHoliday()) || Objects.isNull(discount.getUseWorkday()) ) || (Objects.isNull(discount.getIsbike()) || Objects.isNull(discount.getIselecbike()) ) ){ @@ -86,15 +91,16 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閿�鍞椂娈典俊鎭敊璇�"); } //鍥哄畾鏃ユ湡鐢熸晥 - if(discount.getUseType()==Constants.ZERO && + if(Constants.equalsInteger(discount.getUseType(),Constants.ZERO) && ( discount.getUseStartDate().getTime()>discount.getUseEndDate().getTime() || discount.getUseStartDate().getTime() < discount.getStartDate().getTime() || discount.getUseEndDate().getTime() > discount.getEndDate().getTime() ) ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浣跨敤鏃舵淇℃伅閿欒"); } + //鎸囧畾鏃ユ湡鐢熸晥 - if(discount.getUseType()==Constants.TWO && + if(Constants.equalsInteger(discount.getUseType(),Constants.TWO) && ( discount.getUseStartDate().getTime()<discount.getStartDate().getTime() || discount.getUseStartDate().getTime() > discount.getEndDate().getTime() ) ){ @@ -125,8 +131,6 @@ } discountMapper.update(null,new UpdateWrapper<Discount>().lambda().set(Discount::getStatus,discount.getStatus()).eq(Discount::getId,discount.getId())); } - - @Override @@ -168,6 +172,7 @@ if(Objects.isNull(discount)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } + this.dealPrice(discount); if(StringUtils.isNotBlank(discount.getImgurl())){ String path =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode()+ systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.DISCOUNT).getCode(); @@ -203,10 +208,31 @@ .eq(Objects.nonNull(modele.getBikeOrElec()) && Constants.equalsInteger(modele.getBikeOrElec(),Constants.TWO),Discount::getIselecbike, Constants.ONE) .eq(Discount::getIsdeleted, Constants.ZERO) .eq( pageWrap.getModel().getStatus() !=null,BikeRepair::getStatus,pageWrap.getModel().getStatus()); - queryWrapper.orderByDesc(Discount::getCreateDate); - return PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper)); + queryWrapper.orderByDesc(Discount::getCreateDate); + PageData<Discount> pageData = PageData.from(discountJoinMapper.selectJoinPage(page, Discount.class,queryWrapper)); + for (Discount discount:pageData.getRecords()) { + dealPrice(discount); + } + return pageData; } + + + @Override + public void dealPrice(Discount discount){ + if(Objects.isNull(discount) + || Objects.isNull(discount.getUseEndDate()) + || Objects.isNull(discount.getUseStartDate()) + || Objects.isNull(discount.getPrice()) + || discount.getPrice().compareTo(BigDecimal.ZERO)==0 + ){ + discount.setDayPrice(BigDecimal.ZERO); + return; + } + discount.setDayPrice(discount.getPrice().divide(new BigDecimal(Long.toString(discount.getUseDays())),2)); + } + + @Override public long count(Discount discount) { QueryWrapper<Discount> wrapper = new QueryWrapper<>(discount); diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java index bc917a3..89814e8 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java @@ -49,6 +49,7 @@ import org.apache.shiro.SecurityUtils; import org.checkerframework.checker.units.qual.A; import org.checkerframework.checker.units.qual.C; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -82,6 +83,8 @@ @Autowired private DiscountLogMapper discountLogMapper; + @Autowired + private DiscountMapper discountMapper; @Autowired GoodsorderJoinMapper goodsorderJoinMapper; @@ -375,6 +378,19 @@ .eq("status",Constants.ZERO) .orderByAsc("sortnum") ));; + homeResponse.setDiscountList( + discountMapper.selectList(new QueryWrapper<Discount>().lambda() + .eq(Discount::getIsdeleted,Constants.ZERO) + .eq(Discount::getStatus,Constants.ZERO) + .orderByDesc(Discount::getId) + .last(" limit 3 ") + ) + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(homeResponse.getDiscountList())){ + for (Discount discount:homeResponse.getDiscountList()) { + discount.setDayPrice(discount.getPrice().divide(new BigDecimal(Integer.toString(discount.getUseDays())),2)); + } + } if(!Objects.isNull(homeResponse.getAdList())&&homeResponse.getAdList().size()>Constants.ZERO){ homeResponse.getAdList().forEach(i->{ i.setImgfullurl(fullPath + i.getImgurl()); @@ -1105,6 +1121,7 @@ goodsorder.setCreateDate(new Date()); goodsorder.setIsdeleted(Constants.ZERO); goodsorder.setCode(goodsorder.getId()); + goodsorder.setType(Constants.ZERO); goodsorder.setMemberId(memberId); goodsorder.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()).multiply(new BigDecimal(100))); goodsorder.setStatus(Constants.goodsorderStatus.waitPay); @@ -1119,16 +1136,101 @@ } catch (Exception e) { throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍙戣捣鏀粯澶辫触~"); } - return response; } - private Object getWxPayResponse(Goodsorder goodsorder,String openid) throws Exception { + + @Override + public Object createDiscountOrderPay(String memberId,String discountId){ + Member member = memberMapper.selectById(memberId); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄦ埛瀵硅薄淇℃伅"); + } + Discount discount = discountMapper.selectById(discountId); + this.checkDiscountSaleDate(discount); + String discountMemberId = Constants.getUUID(); + String goodsorderId = Constants.getUUID(); + DiscountMember discountMember = new DiscountMember(); + BeanUtils.copyProperties(discount,discountMember); + discountMember.setCreator(null); + discountMember.setId(discountMemberId); + discountMember.setCreateDate(new Date()); + discountMember.setEditDate(new Date()); + discountMember.setEditor(null); + discountMember.setMemberId(memberId); + discountMember.setStatus(Constants.TWO); + discountMember.setGoodsorderId(goodsorderId); + discountMemberMapper.insert(discountMember); + + Goodsorder goodsorder = new Goodsorder(); + goodsorder.setId(goodsorderId); + goodsorder.setCreateDate(new Date()); + goodsorder.setIsdeleted(Constants.ZERO); + goodsorder.setCode(goodsorder.getId()); + goodsorder.setMemberId(memberId); + goodsorder.setType(Constants.ONE); + goodsorder.setMoney(discount.getPrice().multiply(new BigDecimal(100))); + goodsorder.setStatus(Constants.goodsorderStatus.waitPay); + goodsorder.setPreOrderid(goodsorder.getId()); + goodsorder.setPayStatus(Constants.goodsorderPayStatus.waitPay); + goodsorder.setPayWay(Constants.ZERO); + goodsorder.setObjType(Constants.ZERO); + goodsorder.setObjId(discount.getId()); + this.goodsorderMapper.insert(goodsorder); //璋冭捣鏀粯 - Object response = null; + Object response = null; + try { + response = getWxPayResponse(goodsorder,member.getOpenid()); + } catch (Exception e) { + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍙戣捣鏀粯澶辫触~"); + } + return response; + + } + + public void checkDiscountSaleDate(Discount discount){ + if(Objects.isNull(discount)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌濂楅淇℃伅"); + } + if(!(Constants.equalsInteger(discount.getIsdeleted(),Constants.ZERO) + ||Constants.equalsInteger(discount.getStatus(),Constants.ZERO))){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅宸蹭笅鏋讹紝鏃犳硶杩涜璐拱锛岃鍒锋柊鏌ョ湅"); + } + if(!(discount.getStartDate().getTime() < System.currentTimeMillis() + && Utils.Date.getEnd(discount.getEndDate()).getTime() > System.currentTimeMillis() )){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"濂楅寮�鏀炬椂闂存湭鍒�,鏃犳硶杩涜璐拱"); + } + //楠岃瘉鏄惁瓒呰繃浠婃棩鍙敭鍗栨暟閲� + if(Objects.nonNull(discount.getSaleDayLimit())){ + if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda() + .eq(Goodsorder::getType,Constants.ONE) + .eq(Goodsorder::getObjId,discount.getId()) + .in(Goodsorder::getStatus,Constants.ZERO,Constants.ONE) + .apply(" EXTRACT(DAY FROM create_date) = EXTRACT(DAY FROM CURRENT_DATE) ") + )>=discount.getSaleDayLimit()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅浠婃棩鍙戣閲忓凡鍞絼锛岃鏄庢棩鏌ョ湅锛�"); + } + } + if(Objects.nonNull(discount.getSaleLimit())){ + if(goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda() + .eq(Goodsorder::getType,Constants.ONE) + .eq(Goodsorder::getObjId,discount.getId()) + .in(Goodsorder::getStatus,Constants.ZERO,Constants.ONE) + .apply(" EXTRACT(YEAR FROM create_date) = EXTRACT(YEAR FROM CURRENT_DATE) ") + )>=discount.getSaleDayLimit()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"濂楅鍙戣閲忓凡鍞絼锛�"); + } + } + } + + + + private Object getWxPayResponse(Goodsorder goodsorder,String openid){ + //璋冭捣鏀粯 + Object response = null; PrepayRequest request = new PrepayRequest(); request.setAttach("createGoodsOrder"); - request.setDescription("妫灄鍏洯鑷杞﹂獞琛屾娂閲戞敮浠�"); + request.setDescription(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)?"妫灄鍏洯鑷杞﹂獞琛屾娂閲戞敮浠�":"妫灄鍏洯鑷杞﹁喘涔伴獞琛屽椁愭敮浠�"); request.setSpMchid(WxMiniConfig.wxProperties.getMchId()); request.setSpAppid(WxMiniConfig.wxProperties.getAppId()); request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); @@ -1145,10 +1247,10 @@ // 璺熶箣鍓嶄笅鍗曠ず渚嬩竴鏍凤紝濉厖棰勪笅鍗曞弬鏁� PrepayWithRequestPaymentResponse resParam = WxMiniConfig.jsapiExtService.prepayWithRequestPayment(request,WxMiniConfig.wxProperties.getSubAppId()); response =resParam; - return response; - } + + /** @@ -1274,6 +1376,50 @@ return ("澶勭悊鎴愬姛!"); } goodsorder.setOnlineOrderid(paymentNo); + if(Constants.equalsInteger(goodsorder.getType(),Constants.ZERO)){ + this.dealGoodsOrderCallBack(goodsorder); + }else{ + this.dealDiscountOrderCallBack(goodsorder); + } + return ("澶勭悊鎴愬姛!"); + } + + public void dealDiscountOrderCallBack(Goodsorder goodsorder){ + goodsorder.setPayStatus(Constants.goodsorderPayStatus.pay); + goodsorder.setStatus(Constants.goodsorderStatus.pay); + goodsorder.setPayDate(new Date()); + goodsorder.setEditDate(new Date()); + goodsorderMapper.updateById(goodsorder); + + DiscountMember discountMember = discountMemberMapper.selectOne(new QueryWrapper<DiscountMember>().lambda() + .eq(DiscountMember::getGoodsorderId,goodsorder.getId()).last(" limit 1 ")); + discountMemberMapper.update(null,new UpdateWrapper<DiscountMember>().lambda() + .set(DiscountMember::getStatus,Constants.ZERO) + .eq(DiscountMember::getId,discountMember.getId()) + ); + Constants.TRANSACTIONS_TYPE discountConstants = Constants.TRANSACTIONS_TYPE.DISCOUNT; + //瀛樺偍浜ゆ槗娴佹按琛� + Transactions transactions = new Transactions(); + transactions.setMemberId(goodsorder.getMemberId()); + transactions.setCreateDate(new Date()); + transactions.setIsdeleted(Constants.ZERO); + transactions.setOrderId(goodsorder.getId()); + transactions.setMoney(goodsorder.getMoney()); + transactions.setType(discountConstants.getKey()); + transactions.setPreOrderid(goodsorder.getPreOrderid()); + transactions.setOnlineOrderid(goodsorder.getOnlineOrderid()); + transactions.setDoneDate(new Date()); + transactions.setTitle(discountConstants.getName()); + transactions.setContent(discountConstants.getInfo()); + //transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd")); + transactions.setBalance(goodsorder.getMoney()); + transactions.setObjId(discountMember.getId()); + transactions.setObjType(Constants.TWO); + transactionsMapper.insert(transactions); + } + + + public void dealGoodsOrderCallBack(Goodsorder goodsorder){ goodsorder.setPayStatus(Constants.goodsorderPayStatus.pay); goodsorder.setStatus(Constants.goodsorderStatus.pay); goodsorder.setPayDate(new Date()); @@ -1296,9 +1442,7 @@ transactions.setObjId(goodsorder.getId()); transactions.setObjType(Constants.ZERO); transactionsMapper.insert(transactions); - return ("澶勭悊鎴愬姛!"); } - /** diff --git a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java index 4de6300..f09b5a2 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java @@ -1,20 +1,27 @@ package com.doumee.service.business.impl; +import com.doumee.core.constants.Constants; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.DiscountMemberMapper; +import com.doumee.dao.business.RefundMapper; import com.doumee.dao.business.TransactionsMapper; +import com.doumee.dao.business.model.DiscountMember; import com.doumee.dao.business.model.Transactions; import com.doumee.service.business.TransactionsService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.checkerframework.checker.units.qual.A; 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; /** * 浜ゆ槗娴佹按琛⊿ervice瀹炵幇 @@ -26,6 +33,13 @@ @Autowired private TransactionsMapper transactionsMapper; + + @Autowired + private DiscountMemberMapper discountMemberMapper; + + @Autowired + private RefundMapper refundMapper; + @Override public String create(Transactions transactions) { @@ -172,7 +186,23 @@ Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.lambda().eq(Transactions::getMemberId, memberId); queryWrapper.orderByDesc("create_date"); - return PageData.from(transactionsMapper.selectPage(page, queryWrapper)); + PageData<Transactions> pageData = PageData.from(transactionsMapper.selectPage(page, queryWrapper)); + for (Transactions transactions:pageData.getRecords()) { + if(Constants.equalsInteger(transactions.getType(),Constants.TRANSACTIONS_TYPE.DISCOUNT.getKey())){ + //璐拱濂楅 澶勭悊鍐呭 + DiscountMember discountMember = discountMemberMapper.selectById(transactions.getObjId()); + if(Objects.nonNull(discountMember)){ + transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd")); + } + }else if(Constants.equalsInteger(transactions.getType(),Constants.TRANSACTIONS_TYPE.PLATFORM_REFUND.getKey())){ + DiscountMember discountMember = discountMemberMapper.selectOne( + new QueryWrapper<DiscountMember>().lambda().eq(DiscountMember::getGoodsorderId, transactions.getOrderId()).last("limit 1")); + if(Objects.nonNull(discountMember)){ + transactions.setContent(discountMember.getName() +" 鏈夋晥鏈�" + DateUtil.dateToString(discountMember.getUseStartDate(),"yyyy-MM-dd") +"-"+DateUtil.dateToString(discountMember.getUseEndDate(),"yyyy-MM-dd")); + } + } + } + return pageData; } diff --git a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java index b054b80..8c95549 100644 --- a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java +++ b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java @@ -12,6 +12,7 @@ import com.doumee.dao.business.model.*; import com.doumee.dao.business.web.request.BackElecBikeRequest; import com.doumee.dao.business.web.request.RepairRequest; +import com.doumee.dao.business.web.response.HomeResponse; import com.doumee.dao.business.web.response.MemberRidesDetailResponse; import com.doumee.dao.business.web.response.RidesDetailResponse; import com.doumee.dao.system.model.SystemDictData; @@ -67,6 +68,9 @@ @Autowired private SystemDictDataBiz systemDictDataBiz; + @Autowired + private DiscountService discountService; + @PreventRepeat @LoginRequired @ApiOperation(value = "鎶奸噾鏀粯", notes = "灏忕▼搴忕") @@ -77,6 +81,20 @@ public ApiResponse<Object> createGoodsOrderPay() { return ApiResponse.success("鎿嶄綔鎴愬姛",goodsorderService.createGoodsOrderPay(getMemberId())); } + + @PreventRepeat + @LoginRequired + @ApiOperation(value = "濂楅璐拱", notes = "灏忕▼搴忕") + @GetMapping("/createDiscountOrderPay") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true), + @ApiImplicitParam(paramType = "query", dataType = "String", name = "discountId", value = "濂楅涓婚敭", required = true) + }) + public ApiResponse<Object> createDiscountOrderPay(@RequestParam String discountId) { + return ApiResponse.success("鎿嶄綔鎴愬姛",goodsorderService.createDiscountOrderPay(discountId,getMemberId())); + } + + @LoginRequired @ApiOperation(value = "楠戣鏄庣粏", notes = "灏忕▼搴忕") @@ -112,6 +130,24 @@ return ApiResponse.success(transactionsService.findPageForMini(pageWrap,getMemberId())); } + + + @LoginRequired + @ApiOperation(value = "鐑攢濂楅", notes = "鐑攢濂楅") + @GetMapping("/discountPage") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true) + }) + public ApiResponse<PageData<Discount>> discountPage (@RequestBody PageWrap<Discount> pageWrap) { + Discount discount = new Discount(); + discount.setStatus(Constants.ZERO); + pageWrap.setModel(discount); + return ApiResponse.success(discountService.findPage(pageWrap)); + } + + + + @LoginRequired @ApiOperation("鍩虹閰嶇疆鏁版嵁") @GetMapping("/baseParamList") diff --git a/server/web/src/main/java/com/doumee/api/web/HomeApi.java b/server/web/src/main/java/com/doumee/api/web/HomeApi.java index 8392c58..dcc0139 100644 --- a/server/web/src/main/java/com/doumee/api/web/HomeApi.java +++ b/server/web/src/main/java/com/doumee/api/web/HomeApi.java @@ -50,9 +50,6 @@ return ApiResponse.success("鏌ヨ鎴愬姛",homeResponse); } - - - @ApiOperation(value = "娴嬭瘯鐢垫睜鎺у埗", notes = "娴嬭瘯鐢垫睜鎺у埗") @PostMapping("/testControl") public ApiResponse<APIResult<T0201_0500>> testControl(@RequestBody T8500 param) { -- Gitblit v1.9.3