From 8213407057de7bc80e9884f102347a1d1a352546 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 03 三月 2026 15:55:23 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/MemberCouponService.java | 6
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java | 2
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Notice.java | 7
server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java | 20
server/dmmall_service/src/main/java/com/doumee/service/business/AftersaleService.java | 1
server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java | 62 +++
server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/PayResponse.java | 3
server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java | 9
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 14
server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java | 1
server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java | 1
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java | 123 +++----
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java | 4
server/dmmall_service/src/main/java/com/doumee/service/business/GoodsService.java | 4
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java | 53 +++
server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java | 16
server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java | 6
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java | 254 +++++++++++++---
server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java | 4
server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java | 3
server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java | 7
server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java | 3
server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java | 11
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 138 ++++++--
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java | 99 +++++
server/dmmall_service/src/main/java/com/doumee/core/utils/DateUtil.java | 2
server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java | 4
server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java | 14
server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java | 13
29 files changed, 668 insertions(+), 216 deletions(-)
diff --git a/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java b/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
index 8b05dec..ef3ba1a 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -62,6 +62,9 @@
@Autowired
private IntegralService integralService;
+ @Autowired
+ private MemberCouponService memberCouponService;
+
/**
* 鏄惁寮�鍙戣��
*/
@@ -122,9 +125,9 @@
/**
* 瀹氭椂鍙栨秷 鏈敮浠樿鍗曚俊鎭�
*/
-// @Scheduled(fixedDelay = 1000L * 10L )
+ @Scheduled(fixedDelay = 1000L * 10L )
public void cancelGoodsOrder(){
- goodsorderService.autoCancel();
+ goodsorderService.autoCancelOrder();
}
/**
@@ -152,9 +155,23 @@
activitySignService.autoCancelSign();
}
-
-
-
+ /**
+ * 瀹氭椂閫氱煡鐢ㄦ埛浼樻儬鍒稿嵆灏嗚繃鏈�
+ * 姣忓ぉ鏃╀笂 9 鐐规墽琛岋紝閫氱煡 7 澶╁唴鍗冲皢杩囨湡鐨勪紭鎯犲埜
+ */
+ @Scheduled(cron = "0 0 9 * * ?")
+ public void notifyCouponExpired() {
+ if (timing) {
+ System.out.println("寮�濮嬫墽琛屼紭鎯犲埜杩囨湡閫氱煡浠诲姟--------Begin------");
+ try {
+ // 鎻愬墠 3 澶╅�氱煡
+ memberCouponService.notifyExpiredCoupon(7);
+ System.out.println("浼樻儬鍒歌繃鏈熼�氱煡浠诲姟鎵ц鎴愬姛--------End------");
+ } catch (Exception e) {
+ System.out.println("浼樻儬鍒歌繃鏈熼�氱煡浠诲姟鎵ц澶辫触锛�" + e.getMessage());
+ }
+ }
+ }
/**
* 鍙戦�乬et璇锋眰
@@ -258,4 +275,39 @@
}
}
+ /**
+ * 瀹氭椂澶勭悊绉垎杩囨湡
+ * 姣忓ぉ鍑屾櫒 2 鐐规墽琛�
+ */
+ @Scheduled(cron = "0 0 2 1 * ?")
+ public void autoExpiredIntegral() {
+ if (timing) {
+ System.out.println("寮�濮嬫墽琛岀Н鍒嗚繃鏈熷鐞嗕换鍔�--------Begin------");
+ try {
+ integralService.expiredIntegral();
+ System.out.println("绉垎杩囨湡澶勭悊浠诲姟鎵ц鎴愬姛--------End------");
+ } catch (Exception e) {
+ System.out.println("绉垎杩囨湡澶勭悊浠诲姟鎵ц澶辫触锛�" + e.getMessage());
+ }
+ }
+ }
+
+
+ /**
+ * 瀹氭椂鍙戦�佺Н鍒嗗嵆灏嗚繃鏈熼�氱煡
+ * 姣忓ぉ鍑屾櫒 2 鐐规墽琛�
+ */
+ @Scheduled(cron = "0 0 2 25 * ?")
+ public void autoExpiredIntegralNotice() {
+ if (timing) {
+ System.out.println("寮�濮嬫墽琛岀Н鍒嗗嵆灏嗚繃鏈熼�氱煡澶勭悊浠诲姟--------Begin------");
+ try {
+ integralService.expiredIntegralNotice();
+ System.out.println("绉垎鍗冲皢杩囨湡閫氱煡澶勭悊浠诲姟鎵ц鎴愬姛--------End------");
+ } catch (Exception e) {
+ System.out.println("绉垎鍗冲皢杩囨湡閫氱煡澶勭悊浠诲姟鎵ц澶辫触锛�" + e.getMessage());
+ }
+ }
+ }
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index a884c7f..a236f1d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -2,6 +2,8 @@
import cn.binarywang.wx.miniapp.bean.WxMaCodeLineColor;
import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.MemberCoupon;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -869,10 +871,9 @@
EXPIRE_INTEGRAL(40,"绉垎杩囨湡鎻愰啋",3,0,"绉垎鍗冲皢杩囨湡","鎮ㄦ湁{param}绉垎鍗冲皢杩囨湡"),
- EXPIRE_COUPON(41,"浼樻儬鍒稿彂鏀�",3,0,"浼樻儬鍒稿彂鏀�","鎮ㄦ湁{param}寮犱紭鎯犲埜灏嗗湪{param2}杩囨湡"),
+ EXPIRE_COUPON(41,"浼樻儬鍒歌繃鏈熸彁閱�",3,0,"浼樻儬鍒歌繃鏈熸彁閱�","鎮ㄦ湁{param}寮犱紭鎯犲埜灏嗗湪{param1}杩囨湡"),
COMMENT(50,"绀惧尯娑堟伅",4,1,"鏀跺埌璇勮","{param}鍥炲浜嗘偍鐨勮瘎璁�"),
-
;
private Integer key;
@@ -960,7 +961,7 @@
MEMBER_ORDER_REFUND(28,"璁㈠崟閫�娆�","璁㈠崟閫�娆撅紝杩旇繕璁㈠崟娑堣��${param}绉垎",0,0),
MEMBER_ORDER(9,"涓嬪崟鎶垫墸","娑堣垂鎶垫墸锛屾秷鑰�${param}绉垎",1,0),
ORDER_DONATE(15,"娑堣垂杩旂Н鍒�","璐墿鎴愬姛锛岃幏寰�${param}绉垎",0,0),
- SHOP_YEAR_SETTLEMENT(18,"绉垎杩囨湡","绉垎杩囨湡锛屾秷鑰�${param}绉垎",0,0),
+ MEMBER_YEAR_SETTLEMENT(18,"绉垎杩囨湡","绉垎杩囨湡锛屾秷鑰�${param}绉垎",0,0),
MEMBER_ORDER_REFUND_RETURN(27,"璁㈠崟閫�娆�","璁㈠崟閫�娆撅紝鎵i櫎璁㈠崟杩旇繕${param}绉垎",0,0),
@@ -1435,6 +1436,15 @@
}
+ public static String getCouponInfo(MemberCoupon mc, Integer num){
+ String info = Constants.equalsInteger(mc.getCouponType(),Constants.ZERO)?
+ "婊�"+mc.getLimitPrice()+"鍏冨噺"+mc.getPrice()+"鍏冩姷鎵e埜*"+num:
+ "婊�"+mc.getLimitPrice()+"鍏冧韩"+mc.getPrice()+"鎶樺埜*"+num;
+ return info;
+ }
+
+
+
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 1b2b8ff..274f6b0 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -3005,7 +3005,7 @@
Date date = new Date();
Long l = date.getTime()+1000*60*60*24*days;
date.setTime(l);
- return DateToStr(date, "yyyyMMdd");
+ return DateToStr(date, "yyyy-MM-dd");
}
public static String beforeDateToStr(Integer days){
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
index e3c4a8d..b33078a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
@@ -19,7 +19,7 @@
- @Select(" select g.* , " +
+ /*@Select(" select g.* , " +
"(( select count(1) from goodsorder_detail gd inner join goods_sku gs on gd.GOODS_SKU_ID = gs.id where gs.GOODS_ID = g.`id` )+ g.SALENUM) as realSaleNum ," +
//"( select gs.id from goods_sku gs where gs.GOODS_ID = g.id limit 1 ) as realSaleNum ," +
" ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = g.id ),0) as minPrice " +
@@ -41,7 +41,7 @@
" ifnull(( select sum(gd.NAME) from goodsorder_detail gd inner join goodsorder go on gd.ORDER_ID = go.id where gd.GOODS_SKU_ID = gs.`id` and go.DISTRIBUTION_SHOP_ID = #{shopId} ),0) as realSaleNum " +
" from goods g left join goods_sku gs on g.id = gs.GOODS_ID " +
" ${ew.customSqlSegment} ")
- IPage<GoodsInfoResponse> goodsPageForShop(IPage<GoodsRequest> page, @Param(Constants.WRAPPER) Wrapper wrapper,@Param("shopId") Integer shopId);
+ IPage<GoodsInfoResponse> goodsPageForShop(IPage<GoodsRequest> page, @Param(Constants.WRAPPER) Wrapper wrapper,@Param("shopId") Integer shopId);*/
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
index 0724f12..ea81c9b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
@@ -25,7 +25,7 @@
@Select(" select g.CODE AS code , g.id as orderId , g.CREATE_DATE as createDate , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as payStatus ," +
" g.COUPON_PRICE as couponPrice , g.price , g.LINKNAME as linkName , g.LINKPHONE as linkPhone , g.LINKADDR as linkAddress , " +
- "g.KD_DATE as kdDate , g.KD_NAME as kdName , g.KD_CODE as kdCode , g.INTEGRAL as integral , SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
+ "g.KD_DATE as kdDate , g.KD_NAME as kdName , g.KD_CODE as kdCode , g.INTEGRAL as integral , g.CANCEL_DATE AS cancelDate ,SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelOptDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
" , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName,s.phone as shopPhone ,s.id as shopId ,g.exchange_code as exchangeCode " +
" from goodsorder g left join shop s on g.PICK_UP_SHOP_ID = s.id " +
" ${ew.customSqlSegment} ")
@@ -34,7 +34,7 @@
@Select(" select g.CODE AS code , g.pay_Method , g.MEMBER_INFO as memberInfo , g.PAY_ORDER_ID as payOrderId , g.REFUND_MONEY refundMoney , g.REFUND_TIME as refundTime, g.REFUND_INFO as refundInfo, g.id as orderId , g.MEMBER_ID as memberId , g.CREATE_DATE as createDate , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as payStatus ," +
" g.COUPON_PRICE as couponPrice , g.price , g.LINKNAME as linkName , g.LINKPHONE as linkPhone , g.LINKADDR as linkAddress , " +
- "g.KD_DATE as kdDate , g.KD_NAME as kdName , g.KD_CODE as kdCode , g.INTEGRAL as integral , SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
+ "g.KD_DATE as kdDate , g.KD_NAME as kdName , g.KD_CODE as kdCode , g.INTEGRAL as integral , g.CANCEL_DATE AS cancelDate ,SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelOptDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
" , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName,s.phone as shopPhone ,s.id as shopId,g.exchange_code as exchangeCode , g.mail_price as mailPrice , g.TOTAL_PRICE as totalPrice " +
" from goodsorder g left join shop s on g.PICK_UP_SHOP_ID = s.id " +
" where g.id = #{id} ")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
index c427c62..5b3e9e1 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goods.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.web.dto.MultiFileDTO;
+import com.doumee.dao.web.response.goods.GoodsSkuResponse;
+import com.doumee.dao.web.response.goods.SkuResponse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -215,8 +218,58 @@
@ApiModelProperty(value = "涓撳尯缂栫爜" )
@TableField(exist = false)
private Integer zhuanquId;
+
@ApiModelProperty(value = "鍟嗗渚涜揣浠�" )
@TableField(exist = false)
private BigDecimal shopPrice;
+ @ApiModelProperty(value = "閿�閲�" )
+ @TableField(exist = false)
+ private Integer realSaleNum;
+
+ @ApiModelProperty(value = "鏈�浣庝环" )
+ @TableField(exist = false)
+ private BigDecimal minPrice;
+
+ @ApiModelProperty(value = "鍒掔嚎浠�" )
+ @TableField(exist = false)
+ private BigDecimal linePrice;
+
+ @ApiModelProperty(value = "渚涜揣浠�")
+ @TableField(exist = false)
+ private BigDecimal exFactoryPrice;
+
+ @ApiModelProperty(value = "閫傜敤鍝佺墝鍚嶇О")
+ @TableField(exist = false)
+ private String brandNames ;
+
+ @ApiModelProperty(value = "鐪熷疄搴撳瓨")
+ @TableField(exist = false)
+ private Integer stock;
+
+ @ApiModelProperty(value = "鏀惰棌鐘舵�侊細0=鏈敹钘忥紱1=宸叉敹钘�")
+ @TableField(exist = false)
+ private Integer collectStatus;
+
+ @ApiModelProperty(value = "鍟嗗搧瑙勬牸鍒楄〃")
+ @TableField(exist = false)
+ private List<GoodsSkuResponse> goodsSkuResponseList;
+
+
+ @ApiModelProperty(value = "鍟嗗搧鍟嗗搧SKU淇℃伅鍒楄〃")
+ @TableField(exist = false)
+ private List<SkuResponse> skuResponsesList;
+
+ @ApiModelProperty(value = "鍟嗗搧鍒嗙被")
+ @TableField(exist = false)
+ private Labels categoryLabels;
+
+
+ @ApiModelProperty(value = "鍝佺墝")
+ @TableField(exist = false)
+ private Labels brandLabels;
+
+ @ApiModelProperty(value = "鍟嗗搧杞挱鍥�")
+ @TableField(exist = false)
+ private List<MultiFileDTO> goodBannerMultiFiles;
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
index 4d8fb43..0e22679 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
@@ -114,6 +114,12 @@
@ApiModelProperty(value = "鎶樻墸鍗锋弧鍑忎笂闄愰噾棰�")
private BigDecimal maxPrice;
+ @ApiModelProperty(value = "杩囨湡閫氱煡锛�0=鏈�氱煡锛�1=宸查�氱煡", example = "1")
+ private Integer noticeStatus;
+
+ @ApiModelProperty(value = "閫氱煡鏃堕棿", example = "1")
+ private Date noticeTime;
+
@ApiModelProperty(value = "鏄电О")
@TableField(exist = false)
@ExcelColumn(name="鐢ㄦ埛",width = 10,index = 1)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Notice.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Notice.java
index 0fee836..0fa8418 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Notice.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Notice.java
@@ -111,18 +111,17 @@
- public Notice notice(Constants.NoticeType noticeType,Integer memberId,Integer objId){
+ public static Notice getNotice(Constants.NoticeType noticeType,Integer memberId,Integer objId){
Notice notice = new Notice();
notice.setCreateDate(new Date());
notice.setIsdeleted(Constants.ZERO);
notice.setMemberId(memberId);
notice.setTitle(noticeType.getTitle());
notice.setContent(noticeType.getContent());
- notice.setType(noticeType.getNoticeType());
notice.setObjId(objId);
notice.setObjType(noticeType.getObjType());
-
-
+ notice.setType(noticeType.getNoticeType());
+ notice.setStatus(Constants.ZERO);
return notice;
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
index 6489992..930b012 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
@@ -33,9 +33,14 @@
@ApiModelProperty(value = "鍊掕鏃�", example = "1")
private Long countdown;
- @ApiModelProperty(value = "鍙栨秷鏃堕棿", example = "1")
+ @ApiModelProperty(value = "璁㈠崟鍙栨秷鏃堕棿", example = "1")
private Date cancelDate;
+
+ @ApiModelProperty(value = "鍙栨秷鏃堕棿(鑷姩鍙栨秷浣跨敤)", example = "1")
+ private Date cancelOptDate;
+
+
@ApiModelProperty(value = "鍒涘缓鏃堕棿", example = "1")
private Date createDate;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/PayResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/PayResponse.java
index 0e623ea..57fe9e4 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/PayResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/PayResponse.java
@@ -25,4 +25,7 @@
@ApiModelProperty(value = "寰俊璋冭捣涓氬姟")
private Object response;
+ @ApiModelProperty(value = "閿佸畾缂栧彿",hidden = true)
+ private String lockKey;
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/AftersaleService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/AftersaleService.java
index 3034707..36ed199 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/AftersaleService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/AftersaleService.java
@@ -117,4 +117,5 @@
void autoDone();
void afterSaleApply(AfterSaleApplyRequest afterSaleApplyRequest);
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsService.java
index fc41eaf..6c77644 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsService.java
@@ -122,7 +122,7 @@
* @param pageWrap
* @return
*/
- IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap);
+ IPage<Goods> getGoodsPage(PageWrap<GoodsRequest> pageWrap);
/**
@@ -130,7 +130,7 @@
* @param goodsId
* @return
*/
- GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId);
+ Goods getGoodsInfo(Integer goodsId,Integer memberId);
/**
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
index f47066a..1961abc 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -242,4 +242,7 @@
String createExchangeCode();
+
+ void autoCancelOrder();
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
index 81de709..78d3027 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/IntegralService.java
@@ -156,5 +156,16 @@
IntegralDataResponse getIntegralData(IntegralRecordDTO model);
void updateIntegral(Integral param);
+
+ /**
+ * 绉垎杩囨湡澶勭悊(瀹氭椂浠诲姟)
+ */
+ void expiredIntegral();
+
+
+ /**
+ * 绉垎鍗冲皢杩囨湡閫氱煡
+ */
+ void expiredIntegralNotice();
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberCouponService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberCouponService.java
index e8e3398..f800742 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberCouponService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberCouponService.java
@@ -147,4 +147,10 @@
List<MemberCoupon> getApplyCoupon(List<PayDetailRequest> requestList, Integer memberId);
String addBatch(MemberCouponAddDTO memberCoupon);
+
+ /**
+ * 瀹氭椂閫氱煡鐢ㄦ埛浼樻儬鍒稿嵆灏嗚繃鏈�
+ * @param days 鎻愬墠閫氱煡澶╂暟
+ */
+ void notifyExpiredCoupon(Integer days);
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
index 38747e8..e1c461d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
@@ -59,6 +59,8 @@
@Autowired
private GoodsorderMapper goodsorderMapper;
@Autowired
+ private NoticeMapper noticeMapper;
+ @Autowired
private ShopMapper shopMapper;
@Autowired
private MemberMapper memberMapper;
@@ -1177,6 +1179,18 @@
if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)&&StringUtils.isNotBlank(goodsorder.getExchangeCode())){
RedisUtil.deleteObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+goodsorder.getExchangeCode());
}
+
+
+ //鍙戦�佽鍗曢��娆剧珯鍐呬俊
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.NOTICE_ORDER_REFUND,
+ goodsorder.getMemberId(),
+ goodsorder.getId()
+ );
+ notice.setContent(notice.getContent().replace("{param}",goodsorder.getCode().toString()));
+ noticeMapper.insert(notice);
+
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
index bdff142..f59fe7f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/BannerServiceImpl.java
@@ -195,9 +195,6 @@
BannerDTO dto = new BannerDTO();
BeanUtils.copyProperties(s, dto);
dto.setImgurl(path + s.getImgurl());
- if (Constants.equalsInteger(dto.getType(),Constants.ZERO)){
- dto.setContent(null);
- }
return dto;
}).collect(Collectors.toList());
return collect;
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index 9801ba2..aa3cbef 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -968,45 +968,51 @@
* @return
*/
@Override
- public IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
+ public IPage<Goods> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
GoodsRequest model = pageWrap.getModel();
- QueryWrapper<GoodsRequest> wrapper = new QueryWrapper<GoodsRequest>()
- .eq("g.ISDELETED",Constants.ZERO)
+ MPJLambdaWrapper<Goods> wrapper = new MPJLambdaWrapper<Goods>()
+ .selectAll(Goods.class)
+ .select(" ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0) ",Goods::getMinPrice)
+ .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
+ .eq(Goods::getIsdeleted,Constants.ZERO)
.eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
- "g.CATEGORY_ID", model.getCategoryId())
+ Goods::getCategoryId, model.getCategoryId())
//閫傜敤鍝佺墝 閫傜敤绯诲垪
.apply(!Objects.isNull(model) && Objects.nonNull(model.getApplicableBrandId()),
- " find_in_set( '["+model.getApplicableBrandId()+"]' , g.BRAND_IDS ) ")
+ " find_in_set( '["+model.getApplicableBrandId()+"]' , t.BRAND_IDS ) ")
.apply(!Objects.isNull(model) && Objects.nonNull(model.getSeriesBrandId()),
- " find_in_set( '["+model.getSeriesBrandId()+"]' , g.SERIAL_IDS ) ")
- .eq("g.STATUS", Constants.ZERO)
- .like(StringUtils.isNotBlank(model.getGoodsName()),"g.NAME",model.getGoodsName());
+ " find_in_set( '["+model.getSeriesBrandId()+"]' , t.SERIAL_IDS ) ")
+ .apply(!Objects.isNull(model) && Objects.nonNull(model.getQualityId()),
+ " find_in_set( '["+model.getQualityId()+"]' , t.ZHUANQU_IDS ) ")
+ .eq(Goods::getStatus, Constants.ZERO)
+ .like(StringUtils.isNotBlank(model.getGoodsName()),Goods::getName,model.getGoodsName());
+ if(Objects.nonNull(model.getShopId())){
+ wrapper.select(" ifnull( ( select sgr.PRICE from shop_goods_relation sgr where sgr.GOODS_ID = t.ID and sgr.ISDELETED = 0 and sgr.`STATUS` = 0 and sgr.SHOP_ID = "+model.getShopId()+" ) ,0) ",Goods::getExFactoryPrice);
+ wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd inner join goodsorder go on gd.ORDER_ID = go.id where gd.GOODS_ID = t.`id` and go.DISTRIBUTION_SHOP_ID = "+model.getShopId()+" ),0) ",Goods::getRealSaleNum);
- if(Objects.nonNull(model.getSortInfo())){
- //鎺掑簭鏂瑰紡锛�0=缁煎悎鎺掑簭锛�1=閿�閲忕敱浣庡埌楂� 锛�2=浠锋牸鐢变綆鍒伴珮锛�3=閿�閲忕敱楂樺埌浣庯紱4=浠锋牸鐢遍珮鍒颁綆
- if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
- wrapper.orderByDesc("g.CREATE_DATE");
- }else if(Constants.equalsInteger(model.getSortInfo(),Constants.ONE)){
- wrapper.orderByAsc("realSaleNum");
- }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
- wrapper.orderByAsc("g.price");
- }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
- wrapper.orderByDesc("realSaleNum");
- }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
- wrapper.orderByDesc("g.price");
- }
- }
- IPage<GoodsInfoResponse> page =
- Objects.isNull(model.getShopId())?
- goodsMapper.goodsPage(pageWrap.toPage(),wrapper)
- :
- goodsMapper.goodsPageForShop(pageWrap.toPage(),wrapper,model.getShopId()) ;
+ }else{
+ wrapper.select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd where gd.GOODS_ID = t.id )) ",Goods::getRealSaleNum);
+ }
+
+ if(Objects.nonNull(model.getSortInfo())){
+ //鎺掑簭鏂瑰紡锛�0=缁煎悎鎺掑簭锛�1=閿�閲忕敱浣庡埌楂� 锛�2=浠锋牸鐢变綆鍒伴珮锛�3=閿�閲忕敱楂樺埌浣庯紱4=浠锋牸鐢遍珮鍒颁綆
+ if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
+ wrapper.orderByDesc("t.CREATE_DATE");
+ }else if(Constants.equalsInteger(model.getSortInfo(),Constants.ONE)){
+ wrapper.orderByAsc("realSaleNum");
+ }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
+ wrapper.orderByAsc("t.price");
+ }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
+ wrapper.orderByDesc("realSaleNum");
+ }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
+ wrapper.orderByDesc("t.price");
+ }
+ }
+ IPage<Goods> page =
+ goodsMapper.selectJoinPage(pageWrap.toPage(), Goods.class, wrapper);
if (!CollectionUtils.isEmpty(page.getRecords())){
String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
-
-
- for (GoodsInfoResponse goodsInfoResponse:page.getRecords()
- ) {
+ for (Goods goodsInfoResponse:page.getRecords()) {
goodsInfoResponse.setImgurl(StringUtils.isNotBlank(goodsInfoResponse.getImgurl())?(preFixPath+goodsInfoResponse.getImgurl()):null);
if(Objects.isNull(model.getShopId())){
//sku鍩虹淇℃伅
@@ -1045,51 +1051,18 @@
* @param goodsResponse
* @return
*/
- public void getSkuInfo(GoodsInfoResponse goodsResponse) {
+ public void getSkuInfo(Goods goodsResponse) {
List<GoodsSkuResponse> goodsSkuResponseList = goodsSkuMapper.getSkuResponseList(goodsResponse.getId());
-
-// String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-// systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
Integer sumStock = Constants.ZERO;
for (GoodsSkuResponse goodsSkuResponse:goodsSkuResponseList) {
goodsSkuResponse.setStock(Objects.isNull(goodsSkuResponse.getStock())?Constants.ZERO:goodsSkuResponse.getStock());
-// if(StringUtils.isBlank(goodsSkuResponse.getImgurl())){
-// goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getGoodsImgUrl());
-// }else{
-// goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getImgurl());
-// }
-// //澶勭悊鏁版嵁涓嬫爣
-// String goodsSkuName = goodsSkuResponse.getName();
-// List<String> strList = Arrays.asList(goodsSkuName.split(";"));
-// StringBuffer indexData = new StringBuffer();
-// for (int i = 0; i < strList.size(); i++) {
-// //鏌ヨsku淇℃伅
-// Sku sku = skuMapper.selectOne(new QueryWrapper<Sku>()
-// .eq("GOODS_ID",goodsResponse.getId())
-// .eq("SORTNUM",i)
-// .last(" limit 1 ")
-// );
-// if(Objects.isNull(sku)){
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-// }
-// //鏌ヨSKU_ATTR
-// SkuAttr skuAttr = skuAttrMapper.selectOne(new QueryWrapper<SkuAttr>()
-// .eq("SKU_ID",sku.getId())
-// .eq("NAME",strList.get(i))
-// .last(" limit 1 ")
-// );
-// if(Objects.isNull(skuAttr)){
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-// }
-// indexData.append("," + ( skuAttr.getSortnum()-1));
-// }
-// goodsSkuResponse.setIndexData(indexData.toString().substring(1));
sumStock = sumStock + goodsSkuResponse.getStock();
}
//鐪熷疄閿�閲� = realSaleNum - saleNum;
//鐪熷疄搴撳瓨= sumStock - (realSaleNum - saleNum)
- goodsResponse.setStock(sumStock - goodsResponse.getRealSaleNum() + goodsResponse.getSaleNum());
+ goodsResponse.setStock(sumStock);
+ goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock);
goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
//Sku鍩虹淇℃伅
List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
@@ -1104,10 +1077,22 @@
}
@Override
- public GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId) {
+ public Goods getGoodsInfo(Integer goodsId,Integer memberId) {
String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
- GoodsInfoResponse goodsResponse = goodsMapper.getGoodsInfo(goodsId);
+// GoodsInfoResponse goodsResponse = goodsMapper.getGoodsInfo(goodsId);
+ Goods goodsResponse = goodsMapper.selectOne(
+ new MPJLambdaWrapper<Goods>()
+ .selectAll(Goods.class)
+ .select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd where gd.GOODS_ID = t.id )) ",Goods::getRealSaleNum)
+ .select(" ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0) ",Goods::getMinPrice)
+ .select(" ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0) ",Goods::getLinePrice)
+ .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
+// .eq(Goods::getIsdeleted,Constants.ZERO)
+// .eq(Goods::getStatus, Constants.ZERO)
+ .eq(Goods::getId,goodsId)
+ .last("limit 1")
+ );
if(Objects.isNull(goodsResponse)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 057ce21..4ffb780 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -65,6 +66,7 @@
import java.net.UnknownHostException;
import java.util.*;
import java.util.Date;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -168,6 +170,9 @@
@Autowired
private IntegralMapper integralMapper;
+
+
+ private final static String GOODS_ORDER_CREATE_LOCK = "goods:order:create:lock:";
@Override
public Integer create(Goodsorder goodsorder) {
@@ -287,6 +292,16 @@
goodsorder.getKdName()+"(鍗曞彿锛�"+goodsorder.getKdCode()+")");
}
+
+ //鍙戦�佸彂璐х珯鍐呬俊
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.NOTICE_ORDER_SEND,
+ goodsorder.getMemberId(),
+ goodsorder.getId()
+ );
+ notice.setContent(notice.getContent().replace("{param}",goodsorder.getCode().toString()));
+ noticeMapper.insert(notice);
+
/* // TODO 鍙戦�佸井淇℃ā鏉挎秷鎭�
Member member=memberMapper.selectById(query.getMemberId());
@@ -720,6 +735,13 @@
@Override
@Transactional(rollbackFor = {Exception.class,BusinessException.class})
public PayResponse orderPay(ShopOrderPayRequest orderPayRequest,MemberCouponServiceImpl memberCouponService){
+ String lockKey = GOODS_ORDER_CREATE_LOCK + orderPayRequest.getMemberId();
+ //鍒ゆ柇鍓嶇鏄惁鍦ㄥ悓涓�椤甸潰鍒涘缓浜嗕袱娆¤鍗�
+ if (redisTemplate.hasKey(lockKey)) {
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"姝e湪鍒涘缓璁㈠崟锛岃鍕块噸澶嶈皟鐢紒");
+ } else {
+ redisTemplate.opsForValue().set(lockKey, "", 5, TimeUnit.SECONDS);
+ }
Member member = memberMapper.selectById(orderPayRequest.getMemberId());
Goodsorder goodsorder = new Goodsorder();
@@ -798,8 +820,8 @@
}
goodsorder.setPrice(orderPayConfirmResponse.getPayAmount());
goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount());
- goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral());
- goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount());
+ goodsorder.setUseIntegral(Constants.equalsInteger(orderPayRequest.getUseIntegral(),Constants.ONE)?orderPayConfirmResponse.getDeductIntegral():BigDecimal.ZERO);
+ goodsorder.setIntegral(Constants.equalsInteger(orderPayRequest.getUseIntegral(),Constants.ONE)?orderPayConfirmResponse.getIntegralAmount():BigDecimal.ZERO);
goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount());
goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE);
goodsorder.setGoodsNum(orderPayRequest.getPayDetailRequestList().stream().mapToInt(PayDetailRequest::getGoodsNum).sum());
@@ -825,14 +847,14 @@
for (OrderGoodsCalculateResponse payDetailRequest:goodsCalculateList) {
//鏌ヨ鍟嗗搧
GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getSkuId());
- if(Objects.isNull(goodsSku)){
+ if(Objects.isNull(goodsSku)||!Constants.equalsInteger(goodsSku.getIsdeleted(),Constants.ZERO)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗗搧SKU淇℃伅锛�");
}
Goods goods = goodsMapper.selectById(goodsSku.getGoodsId());
if(Objects.isNull(goods)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗗搧淇℃伅锛�");
}
- if(goods.getStatus().equals(Constants.ONE)){
+ if(!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧宸插垹闄ゆ垨宸蹭笅鏋讹紝鏃犳硶涓嬪崟");
}
if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
@@ -918,10 +940,11 @@
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧浠锋牸鍙戠敓鍙樺寲锛岃鍒锋柊鍚庨噸鏂版敮浠橈紒");
}
-
//瀛樺湪鐜伴噾鏀粯
if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
- return this.wxPay(goodsorder,member);
+ PayResponse payResponse = this.wxPay(goodsorder,member);
+ payResponse.setLockKey(lockKey);
+ return payResponse;
}
//鏃犵幇閲戞敮浠�
goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
@@ -934,12 +957,12 @@
PayResponse payResponse = new PayResponse();
payResponse.setOrderId(goodsorder.getId());
payResponse.setPayType(Constants.ONE);
- //鍙戦�侀�氱煡
- if(Objects.nonNull(goodsorder.getPickUpShopId())){
- //鍙戦�佺珯鍐呬俊 - 缁忛攢鍟�
- noticeService.orderPayNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getReceiveType());
- }
-
+ payResponse.setLockKey(lockKey);
+// //鍙戦�侀�氱煡
+// if(Objects.nonNull(goodsorder.getPickUpShopId())){
+// //鍙戦�佺珯鍐呬俊 - 缁忛攢鍟�
+// noticeService.orderPayNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getReceiveType());
+// }
return payResponse;
}
@@ -1087,7 +1110,7 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌璁㈠崟淇℃伅");
}
if(memberOrderResponse.getOrderStatus().equals(Constants.OrderStatus.WAIT_PAY.getKey())){
- memberOrderResponse.setCountdown(memberOrderResponse.getCancelDate().getTime()>System.currentTimeMillis()?memberOrderResponse.getCancelDate().getTime()-System.currentTimeMillis():Constants.ZERO);
+ memberOrderResponse.setCountdown(memberOrderResponse.getCancelOptDate().getTime()>System.currentTimeMillis()?memberOrderResponse.getCancelOptDate().getTime()-System.currentTimeMillis():Constants.ZERO);
}
String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
@@ -1236,20 +1259,8 @@
}
- @Override
@Transactional(rollbackFor = {Exception.class,BusinessException.class})
- public void cancelOrderNew(Integer orderId,Integer optUserId,String cancelInfo){
- if(Objects.isNull(orderId)){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
- if(Objects.isNull(goodsorder)){
- throw new BusinessException(ResponseStatus.DATA_EMPTY);
- }
- if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey())
- || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) )){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鍙栨秷澶辫触锛氳鍗曠姸鎬佸凡娴佽浆锛�");
- }
+ public void cancel(Goodsorder goodsorder,Integer optUserId,String cancelInfo){
if(Constants.formatBigdecimal(goodsorder.getPrice()).compareTo(BigDecimal.ZERO)>Constants.ZERO
&& Constants.equalsObject(goodsorder.getPayStatus(),Constants.ONE) ){
//寰俊鐜伴噾閫�娆�
@@ -1269,10 +1280,10 @@
fundMapper.insert(fund);
}
//璁㈠崟宸叉敮浠樼姸鎬� 锛� 浣跨敤浜嗙Н鍒� 涓旂Н鍒嗕娇鐢ㄥぇ浜�0
- if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ if(goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
//鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
- dealIntegralRequest.setIntegralNum(goodsorder.getIntegral());
+ dealIntegralRequest.setIntegralNum(goodsorder.getUseIntegral());
dealIntegralRequest.setDealType(Constants.ZERO);
dealIntegralRequest.setMemberId(goodsorder.getMemberId());
dealIntegralRequest.setObjId(goodsorder.getId());
@@ -1307,9 +1318,9 @@
}
// 鐢ㄦ埛涓诲姩鍙栨秷 鍙戦�佺粡閿�鍟嗙珯鍐呮秷鎭�
- if(Objects.nonNull(goodsorder.getPickUpShopId())&&StringUtils.isBlank(cancelInfo)){
- noticeService.orderCancelNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getCode().toString());
- }
+// if(Objects.nonNull(goodsorder.getPickUpShopId())&&StringUtils.isBlank(cancelInfo)){
+// noticeService.orderCancelNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getCode().toString());
+// }
//鏌ヨ浼樻儬鍒镐俊鎭褰�
if(!Objects.isNull(goodsorder.getCouponId())){
@@ -1319,6 +1330,26 @@
memberCouponMapper.updateById(memberCoupon);
}
}
+ }
+
+
+
+ @Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+ public void cancelOrderNew(Integer orderId,Integer optUserId,String cancelInfo){
+ if(Objects.isNull(orderId)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
+ if(Objects.isNull(goodsorder)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey())
+ || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) )){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鍙栨秷澶辫触锛氳鍗曠姸鎬佸凡娴佽浆锛�");
+ }
+ this.cancel(goodsorder,optUserId,cancelInfo);
+
}
public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
@@ -1669,6 +1700,7 @@
this.orderAddMemberIntegral(goodsorder);
//缁忛攢鍟� 缁撶畻閲戦
this.orderAddShopCash(goodsorder);
+
}
@@ -1731,14 +1763,19 @@
couponNoticeRequest.setMemberCoupon(memberCoupon);
couponNoticeRequest.setNum(num);
requestList.add(couponNoticeRequest);
+
+ Notice notice = Notice.getNotice(Constants.NoticeType.COUPON,
+ member.getId(),null);
+ notice.setContent(notice.getContent().replace("{param}",Constants.getCouponInfo(memberCoupon,num)));
+ noticeMapper.insert(notice);
}
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
memberCouponJoinMapper.insert(memberCouponList);
}
- if(CollectionUtils.isNotEmpty(requestList)){
- //鍙戦�佺珯鍐呬俊
- noticeService.couponNotice(inviteMember.getId(),requestList);
- }
+// if(CollectionUtils.isNotEmpty(requestList)){
+// //鍙戦�佺珯鍐呬俊
+// noticeService.couponNotice(inviteMember.getId(),requestList);
+// }
}
inviteRecordMapper.update(new UpdateWrapper<InviteRecord>().lambda()
.set(InviteRecord::getFirstOrderStatus,Constants.ONE)
@@ -1796,6 +1833,15 @@
//缁忛攢鍟� 缁撶畻閲戦
this.orderAddShopCash(goodsorder);
}
+ //鍙戦�佹牳閿�閫氱煡
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.NOTICE_ORDER_WRITE_OFF,
+ goodsorder.getMemberId(),
+ goodsorder.getId()
+ );
+ notice.setContent(notice.getContent().replace("{param}",goodsorder.getCode().toString()));
+ noticeMapper.insert(notice);
+
}
@@ -2263,4 +2309,26 @@
}
}
+
+ /**
+ * 璁㈠崟鏈敮浠樿秴鏃惰嚜鍔ㄥ彇娑�
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void autoCancelOrder(){
+ List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
+ .eq(Goodsorder::getIsdeleted, Constants.ZERO)
+ .eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey())
+ .ge(Goodsorder::getCreateDate, "DATE_SUB(NOW(), INTERVAL 15 MINUTE)")
+ );
+ if(CollectionUtils.isNotEmpty(goodsorderList)){
+ for (Goodsorder goodsorder:goodsorderList) {
+ this.cancel(goodsorder,null,"璁㈠崟鏈敮浠樿秴鏃惰嚜鍔ㄥ彇娑�");
+ }
+ }
+
+
+
+ }
+
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index c57306c..abb185f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -34,10 +34,7 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -72,6 +69,9 @@
@Autowired
private NoticeService noticeService;
+
+ @Autowired
+ private NoticeMapper noticeMapper;
@Transactional(rollbackFor = {Exception.class, BusinessException.class})
@Override
@@ -160,7 +160,7 @@
integral.setIsdeleted(Constants.ZERO);
integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
- info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toString());
+ info = info.replace("${param}",dealIntegralRequest.getIntegralNum().intValue()+"");
if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
info = info .replace("${param1}",dealIntegralRequest.getParam1());
}
@@ -170,7 +170,7 @@
integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
integral.setType(dealIntegralRequest.getDealType());
integral.setNum(dealIntegralRequest.getIntegralNum());
- integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? member.getIntegral().add(integral.getNum()):member.getIntegral().subtract(integral.getNum()));
+ integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? Objects.nonNull(member.getIntegral())?member.getIntegral():BigDecimal.ZERO.add(integral.getNum()):Objects.nonNull(member.getIntegral())?member.getIntegral():BigDecimal.ZERO.subtract(integral.getNum()));
integral.setOrderCode(dealIntegralRequest.getOrderCode());
integral.setUserType(Constants.ZERO);
integralMapper.insert(integral);
@@ -185,7 +185,7 @@
//绔欏唴淇�
noticeService.saveMemberIntegralNotice(
- dealIntegralRequest.getIntegralObjType(),Constants.ZERO,member.getId(),dealIntegralRequest.getIntegralNum(),
+ dealIntegralRequest.getIntegralObjType(),Constants.ONE,member.getId(),dealIntegralRequest.getIntegralNum(),
integral.getId(), info
);
return integral.getId();
@@ -193,7 +193,6 @@
@Override
public Integer dealShopIntegral(DealIntegralRequest dealIntegralRequest,Shop shop) {
- LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
if(shop ==null){
shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
}
@@ -225,23 +224,16 @@
shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
.eq(Shop::getId,shop.getId())
.set(Shop::getEditDate,new Date())
- .set(Shop::getEditor,user!=null ? user.getId():null)
.setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
.setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" + dealIntegralRequest.getIntegralNum())
.setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
- /* if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
- shopMapper.addIntegral(shop.getId(),dealIntegralRequest.getIntegralNum(),
- dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
- }else{
- shopMapper.subtractIntegral(shop.getId(),dealIntegralRequest.getIntegralNum());
- }*/
- //绔欏唴淇�
- noticeService.saveMemberIntegralNotice(
- dealIntegralRequest.getIntegralObjType(),Constants.ZERO,shop.getId(),dealIntegralRequest.getIntegralNum(),
- integral.getId(), info
- );
+// //绔欏唴淇�
+// noticeService.saveMemberIntegralNotice(
+// dealIntegralRequest.getIntegralObjType(),Constants.ZERO,shop.getId(),dealIntegralRequest.getIntegralNum(),
+// integral.getId(), info
+// );
return integral.getId();
}
@@ -273,22 +265,12 @@
integral.setUserType(Constants.TWO);
integralMapper.insert(integral);
- LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
.eq(Shop::getId,shop.getId())
.set(Shop::getEditDate,new Date())
- .set(Shop::getEditor,user!=null ? user.getId():null)
.setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
.setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" + dealIntegralRequest.getIntegralNum())
.setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
-
-
- /* if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
- shopMapper.addAmount(shop.getId(),dealIntegralRequest.getIntegralNum(),
- dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
- }else{
- shopMapper.subtractAmount(shop.getId(),dealIntegralRequest.getIntegralNum());
- }*/
return integral.getId();
}
@@ -598,10 +580,17 @@
IntegralDataResponse integralDataResponse = new IntegralDataResponse();
integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
- Shop shop = shopMapper.selectById(model.getMemberId());
- if (Objects.nonNull(shop)) {
- integralDataResponse.setSurplusIntegral(
- Constants.equalsInteger(model.getUserType(),Constants.TWO)?shop.getAmount():shop.getIntegral());
+ //鐢ㄦ埛绉垎
+ if(Constants.equalsInteger(model.getUserType(),Constants.ZERO)){
+ Member member = memberMapper.selectById(model.getMemberId());
+ integralDataResponse.setSurplusIntegral(member.getIntegral());
+ }else{
+ //鍟嗘埛绉垎/浣欓
+ Shop shop = shopMapper.selectById(model.getMemberId());
+ if (Objects.nonNull(shop)) {
+ integralDataResponse.setSurplusIntegral(
+ Constants.equalsInteger(model.getUserType(),Constants.TWO)?shop.getAmount():shop.getIntegral());
+ }
}
List<Integral> list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
.eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
@@ -635,26 +624,44 @@
.reduce(BigDecimal.ZERO, BigDecimal::add)
);
}
- //绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
- Integer type = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
- //娑堣垂鑰呯Н鍒� 闇�瑕佹煡璇㈠嵆灏嗚繃鏈熺Н鍒�
- if(Constants.equalsInteger(type,Constants.ONE)&& Constants.equalsInteger(model.getUserType(),Constants.ONE)){
- Integer validYear = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
- if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
- list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
- .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
- .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
- .eq(Integral::getMemberId,model.getMemberId())
- .apply(" CREATE_DATE >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL "+(validYear*12)+1+" MONTH) ")
- .orderByDesc(Integral::getCreateDate));
- BigDecimal newIntegral = list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
- ).reduce(BigDecimal.ZERO, BigDecimal::add);
- integralDataResponse.setExpiredIntegral(
- integralDataResponse.getSurplusIntegral().compareTo(newIntegral)>Constants.ZERO?integralDataResponse.getSurplusIntegral().subtract(newIntegral):BigDecimal.ZERO
- );
+ if(Constants.equalsInteger(model.getUserType(),Constants.ZERO)){
+ //绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
+ Integer type = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
+ //娑堣垂鑰呯Н鍒� 闇�瑕佹煡璇㈠嵆灏嗚繃鏈熺Н鍒�
+ if(Constants.equalsInteger(type,Constants.ONE)&& Constants.equalsInteger(model.getUserType(),Constants.ZERO)){
+ Integer validYear = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
+ if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
+ List<Integral> expiredIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ .eq(Integral::getMemberId,model.getMemberId())
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date < ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+
+
+ //鏌ヨ杩囨湡鏃ユ湡鍚庣殑娑堣�楃Н鍒�
+ List<Integral> useIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ .eq(Integral::getType, Constants.ONE) // 浣跨敤鐨勭Н鍒�
+ .eq(Integral::getMemberId,model.getMemberId())
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date >= ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+ BigDecimal totalExpiredNum = expiredIntegrals.stream().map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
+
+ BigDecimal afterUseIntegral = useIntegrals.stream().map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
+
+ if(afterUseIntegral.compareTo(totalExpiredNum)>=Constants.ZERO){
+ integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
+ }else{
+ integralDataResponse.setExpiredIntegral(totalExpiredNum.subtract(afterUseIntegral));
+ }
+
+ }
}
}
-
}
String info = systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALRULEINFO).getCode();
integralDataResponse.setInfo(info);
@@ -663,7 +670,150 @@
}
+ /**
+ * 绉垎杩囨湡澶勭悊(瀹氭椂浠诲姟)
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void expiredIntegral() {
+ // 绉垎澶辨晥鏂瑰紡 0 闀挎湡鏈夋晥 1 鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
+ Integer type = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
+ // 鍙湁閰嶇疆涓烘寜鏃堕棿澶辨晥鏃舵墠鎵ц
+ if (Constants.equalsInteger(type, Constants.ONE)) {
+ Integer validYear = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
+ if (validYear != null && validYear.compareTo(Constants.ZERO) > 0) {
+ // 鏌ヨ鎵�鏈夐渶瑕佸鐞嗙殑鐢ㄦ埛绉垎璁板綍
+ // 鏌ヨ鎵�鏈夊凡杩囨湡浣嗚繕鏈鐞嗙殑绉垎璁板綍
+ List<Integral> expiredIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date < ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+
+
+ //鏌ヨ杩囨湡鏃ユ湡鍚庣殑娑堣�楃Н鍒�
+ List<Integral> useIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ .eq(Integral::getType, Constants.ONE) // 浣跨敤鐨勭Н鍒�
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date >= ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+
+ if (CollectionUtils.isEmpty(expiredIntegrals)) {
+ return;
+ }
+ // 鎸変細鍛樺垎缁勭粺璁¤繃鏈熺Н鍒�
+ Map<Integer, List<Integral>> memberIntegralMap = expiredIntegrals.stream()
+ .collect(Collectors.groupingBy(Integral::getMemberId));
+ // 閬嶅巻姣忎釜鐢ㄦ埛鐨勮繃鏈熺Н鍒嗚繘琛屽鐞�
+ for (Map.Entry<Integer, List<Integral>> entry : memberIntegralMap.entrySet()) {
+ Integer memberId = entry.getKey();
+ List<Integral> integrals = entry.getValue();
+ // 缁熻璇ョ敤鎴风殑鎬昏繃鏈熺Н鍒�
+ BigDecimal totalExpiredNum = integrals.stream()
+ .map(Integral::getNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ if (totalExpiredNum.compareTo(BigDecimal.ZERO) <= 0) {
+ continue;
+ }
+ // 鏌ヨ鐢ㄦ埛褰撳墠绉垎
+ Member member = memberMapper.selectById(memberId);
+ if (member == null || member.getIsdeleted() == Constants.ONE) {
+ continue;
+ }
+
+ BigDecimal afterUseIntegral = useIntegrals.stream().filter(i->Constants.equalsInteger(memberId,i.getMemberId())).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ if(afterUseIntegral.compareTo(totalExpiredNum)>=Constants.ZERO){
+ continue;
+ }
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_YEAR_SETTLEMENT);
+ dealIntegralRequest.setIntegralNum(totalExpiredNum.subtract(afterUseIntegral));
+ dealIntegralRequest.setMemberId(memberId);
+ dealIntegralRequest.setDealType(Constants.ONE);
+ this.dealIntegral(dealIntegralRequest,member);
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * 绉垎鍗冲皢杩囨湡閫氱煡
+ */
+ @Override
+ public void expiredIntegralNotice() {
+ // 绉垎澶辨晥鏂瑰紡 0 闀挎湡鏈夋晥 1 鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
+ Integer type = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
+ // 鍙湁閰嶇疆涓烘寜鏃堕棿澶辨晥鏃舵墠鎵ц
+ if (Constants.equalsInteger(type, Constants.ONE)) {
+ Integer validYear = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
+
+ if (validYear != null && validYear.compareTo(Constants.ZERO) > 0) {
+ // 鏌ヨ鎵�鏈夐渶瑕佸鐞嗙殑鐢ㄦ埛绉垎璁板綍
+ // 鏌ヨ鎵�鏈夊凡杩囨湡浣嗚繕鏈鐞嗙殑绉垎璁板綍
+ List<Integral> expiredIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date < ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+
+ //鏌ヨ杩囨湡鏃ユ湡鍚庣殑娑堣�楃Н鍒�
+ List<Integral> useIntegrals = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+ .eq(Integral::getUserType, Constants.ZERO) // 娑堣垂鑰呯Н鍒�
+ .eq(Integral::getIsdeleted, Constants.ZERO) // 鏈垹闄�
+ .eq(Integral::getType, Constants.ONE) // 浣跨敤鐨勭Н鍒�
+ // 鏌ユ壘瓒呰繃鏈夋晥鏈熺殑绉垎锛堝垱寤烘棩鏈熸棭浜庡綋鍓嶆棩鏈熷噺鍘绘湁鏁堝勾闄愶級
+ .apply( " create_date >= ( DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-%m-01'),INTERVAL " + ((validYear * 12) + 1) + " MONTH) ) ") // 宸茶繃鏈�
+ .orderByAsc(Integral::getCreateDate));
+
+ if (CollectionUtils.isEmpty(expiredIntegrals)) {
+ return;
+ }
+ // 鎸変細鍛樺垎缁勭粺璁¤繃鏈熺Н鍒�
+ Map<Integer, List<Integral>> memberIntegralMap = expiredIntegrals.stream()
+ .collect(Collectors.groupingBy(Integral::getMemberId));
+ // 閬嶅巻姣忎釜鐢ㄦ埛鐨勮繃鏈熺Н鍒嗚繘琛屽鐞�
+ for (Map.Entry<Integer, List<Integral>> entry : memberIntegralMap.entrySet()) {
+ Integer memberId = entry.getKey();
+ List<Integral> integrals = entry.getValue();
+ // 缁熻璇ョ敤鎴风殑鎬昏繃鏈熺Н鍒�
+ BigDecimal totalExpiredNum = integrals.stream()
+ .map(Integral::getNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ BigDecimal afterUseIntegral = useIntegrals.stream().filter(i->Constants.equalsInteger(memberId,i.getMemberId())).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
+
+ if (totalExpiredNum.compareTo(BigDecimal.ZERO) <= 0) {
+ continue;
+ }
+ // 鏌ヨ鐢ㄦ埛褰撳墠绉垎
+ Member member = memberMapper.selectById(memberId);
+ if (member == null || member.getIsdeleted() == Constants.ONE) {
+ continue;
+ }
+ if(afterUseIntegral.compareTo(totalExpiredNum)>=Constants.ZERO){
+ continue;
+ }
+ //鍙戦�佸彂璐х珯鍐呬俊
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.EXPIRE_INTEGRAL,
+ memberId,
+ null
+ );
+ notice.setContent(notice.getContent().replace("{param}", totalExpiredNum.subtract(afterUseIntegral).intValue()+""));
+ noticeMapper.insert(notice);
+
+ }
+
+ }
+ }
+ }
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index 64c3ff8..e0d9e29 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -15,6 +15,7 @@
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.dto.CouponDTO;
import com.doumee.dao.web.dto.MemberCouponDTO;
+import com.doumee.dao.web.request.CouponNoticeRequest;
import com.doumee.dao.web.request.PayDetailRequest;
import com.doumee.dao.web.response.MemberCouponResponse;
import com.doumee.dao.web.response.goods.OrderGoodsCalculateResponse;
@@ -27,6 +28,7 @@
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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -68,6 +70,10 @@
@Autowired
private MemberMapper memberMapper;
+ @Autowired
+ private NoticeMapper noticeMapper;
+
+
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public String addBatch(MemberCouponAddDTO memberCouponAddDTO){
@@ -85,8 +91,8 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗��"+index+"銆戜釜浼樻儬鍒告煡璇㈡棤鏁堬紝璇峰埛鏂伴〉闈㈤噸鏂帮紒");
}
for(Member member : memberList){
+ MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,now,Constants.TWO,loginUserInfo);
for (int i = 0; i < Constants.formatLongNum(param.getNum()); i++) {
- MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,now,Constants.TWO,loginUserInfo);
//婊″噺鍗蜂笉浼氱敓鎴恗axPrice 闇�瑕佹牴鎹紭鎯犲埜鍑忓皯閲戦璁剧疆
if(Constants.equalsInteger(coupon.getCouponType(),Constants.ZERO)){
memberCoupon.setMaxPrice(coupon.getPrice());
@@ -94,6 +100,11 @@
//鎸ㄤ釜閫�
addList.add(memberCoupon);
}
+ //浼樻儬鍒稿彂鏀鹃�氱煡
+ Notice notice = Notice.getNotice(Constants.NoticeType.COUPON,
+ member.getId(),null);
+ notice.setContent(notice.getContent().replace("{param}",Constants.getCouponInfo(memberCoupon, (int) Constants.formatLongNum(param.getNum()))));
+ noticeMapper.insert(notice);
}
index++;
}
@@ -545,7 +556,7 @@
.in(GoodsSku::getId,requestList.stream().map(i->i.getGoodsSkuId()).collect(Collectors.toList()))
);
if(CollectionUtils.isEmpty(goodsSkuList)||!Constants.equalsInteger(goodsSkuList.size(),requestList.size())){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅閿欒,璇峰埛鏂伴噸璇�");
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅宸插け鏁�,璇峰埛鏂伴噸璇�");
}
//鏌ヨ鍟嗗搧鍒楄〃
List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
@@ -573,6 +584,7 @@
List<MemberCoupon> allCoupon = memberCouponMapper.selectList(new QueryWrapper<MemberCoupon>().lambda()
.eq(MemberCoupon::getIsdeleted,Constants.ZERO)
.eq(MemberCoupon::getStatus,Constants.ZERO)
+ .eq(MemberCoupon::getMemberId,memberId)
.apply(" LIMIT_PRICE <= " + totalAmount)
.apply(" now() between START_DATE and END_DATE "));
@@ -581,11 +593,11 @@
//閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
if(Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ZERO)){
memberCoupon.setValidAmount(memberCoupon.getPrice());
+ memberCouponList.add(memberCoupon);
}else{
List<String> applyIdList = Arrays.asList(memberCoupon.getApplyIds().split(","));
//鑾峰彇鏈夋晥鍙互浣跨敤浼樻儬鍒哥殑鏁版嵁
- isVaildUse(applyIdList,goodsCalculateList,
- Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
+ isVaildUse(applyIdList,goodsCalculateList,memberCoupon.getApplyType());
BigDecimal skuAmount = goodsCalculateList.stream().filter(i->i.getUseCoupon()).map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
if(skuAmount.compareTo(memberCoupon.getLimitPrice())>=Constants.ZERO){
//鏍规嵁閲戦璁$畻瀹為檯鎶樻墸閲戦
@@ -622,7 +634,7 @@
.in(GoodsSku::getId,requestList.stream().map(i->i.getGoodsSkuId()).collect(Collectors.toList()))
);
if(CollectionUtils.isEmpty(goodsSkuList)||!Constants.equalsInteger(goodsSkuList.size(),requestList.size())){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅閿欒,璇峰埛鏂伴噸璇�");
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍟嗗搧SKU淇℃伅宸插け鏁�,璇峰埛鏂伴噸璇�");
}
//鏌ヨ鍟嗗搧鍒楄〃
List<Goods> goodsList = goodsMapper.selectJoinList(Goods.class,
@@ -682,8 +694,10 @@
//鏍规嵁浼樻儬鍒哥被鍨� 璁$畻鍙互浣跨敤浼樻儬鍒哥殑鍟嗗搧淇℃伅 閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
if(!Constants.equalsInteger(coupon.getApplyType(),Constants.ZERO)){
List<String> applyIdList = Arrays.asList(coupon.getApplyIds().split(","));
- isVaildUse(applyIdList,goodsCalculateList,
- Constants.equalsInteger(coupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
+ isVaildUse(applyIdList,goodsCalculateList,coupon.getApplyType());
+ //Constants.equalsInteger(coupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
+ }else{
+ isVaildUse(null,goodsCalculateList,coupon.getApplyType());
}
//浣跨敤浜嗕紭鎯犲埜鐨勫晢鍝佹暟閲�
Integer countCouponNum = goodsCalculateList.stream().filter(i->i.getUseCoupon()).collect(Collectors.toList()).size();
@@ -714,13 +728,20 @@
* 鍒ゆ柇鏄惁鍙互鏈夋晥浣跨敤
* @param idList
* @param goodsList
- * @param vaildType 0=鍟嗗搧锛�1=鍝佺被
+ * @param vaildType 0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
* @return
*/
public void isVaildUse(List<String> idList,List<OrderGoodsCalculateResponse> goodsList,Integer vaildType){
- for (OrderGoodsCalculateResponse response:goodsList) {
- response.setUseCoupon(idList.contains(Constants.equalsInteger(vaildType,Constants.ZERO)?response.getId().toString():response.getCategoryId().toString())?true:false);
+ if(Constants.equalsInteger(vaildType,Constants.ZERO)){
+ for (OrderGoodsCalculateResponse response:goodsList) {
+ response.setUseCoupon(true);
+ }
+ }else{
+ for (OrderGoodsCalculateResponse response:goodsList) {
+ response.setUseCoupon(idList.contains(Constants.equalsInteger(vaildType,Constants.TWO)?response.getId().toString():response.getCategoryId().toString())?true:false);
+ }
}
+
}
@@ -739,10 +760,60 @@
// }
// return new HashSet<>();
// }
+
+ @Override
+ @Transactional(rollbackFor = {Exception.class})
+ public void notifyExpiredCoupon(Integer days) {
+ if (days == null || days <= 0) {
+ days = 3; // 榛樿鎻愬墠 3 澶╅�氱煡
+ }
+ String afterDate = DateUtil.afterDateToStr(days);
+ // 鏌ヨ鍗冲皢杩囨湡鐨勪紭鎯犲埜锛堟湭浣跨敤涓斿湪鐩爣鏃ユ湡鑼冨洿鍐呰繃鏈燂級
+ List<MemberCoupon> expiredCoupons = memberCouponMapper.selectList(
+ new QueryWrapper<MemberCoupon>().lambda()
+ .eq(MemberCoupon::getIsdeleted, Constants.ZERO)
+ .eq(MemberCoupon::getStatus, Constants.ZERO) // 鏈娇鐢�
+ .eq(MemberCoupon::getNoticeStatus,Constants.ZERO)// 鏈�氱煡鏁版嵁
+ .ge(MemberCoupon::getEndDate, DateUtil.getCurrDateTime()) // 澶т簬绛変簬寮�濮嬫椂闂�
+ .lt(MemberCoupon::getEndDate, (afterDate+" 23:59:59") ) // 灏忎簬缁撴潫鏃堕棿
+ );
+ if (CollectionUtils.isEmpty(expiredCoupons)) {
+ return;
+ }
+ // 鎸夌敤鎴峰垎缁勭粺璁�
+ Map<Integer, List<MemberCoupon>> memberCouponMap = expiredCoupons.stream()
+ .collect(Collectors.groupingBy(MemberCoupon::getMemberId));
+
+ // 閬嶅巻姣忎釜鐢ㄦ埛鐨勪紭鎯犲埜鍙戦�侀�氱煡
+ for (Map.Entry<Integer, List<MemberCoupon>> entry : memberCouponMap.entrySet()) {
+ Integer memberId = entry.getKey();
+ List<MemberCoupon> coupons = entry.getValue();
+ if (CollectionUtils.isEmpty(coupons)) {
+ continue;
+ }
+ // 鏌ヨ鐢ㄦ埛淇℃伅
+ Member member = memberMapper.selectById(memberId);
+ if (member == null || member.getIsdeleted() == Constants.ONE) {
+ continue;
+ }
+ // 缁熻浼樻儬鍒告暟閲忓拰绫诲瀷
+ long count = coupons.size();
-
-
-
-
+ List<Integer> couponIds = coupons.stream().map(MemberCoupon::getId).collect(Collectors.toList());
+ //鍙戦�佺珯鍐呬俊 浼樻儬鍒稿嵆灏嗚繃鏈�
+ Notice notice = Notice.getNotice(
+ Constants.NoticeType.EXPIRE_COUPON,
+ member.getId(),
+ null
+ );
+ notice.setContent(notice.getContent().replace("{param}",Long.toString(count)).replace("{param1}",afterDate));
+ noticeMapper.insert(notice);
+ memberCouponMapper.update(new UpdateWrapper<MemberCoupon>().lambda()
+ .set(MemberCoupon::getNoticeStatus,Constants.ONE)
+ .set(MemberCoupon::getNoticeTime,DateUtil.getCurrDateTime())
+ .in(MemberCoupon::getId,couponIds)
+ );
+ }
+ }
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index e7949b5..339d3aa 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -55,6 +55,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.shiro.SecurityUtils;
+import org.checkerframework.checker.units.qual.N;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -91,6 +92,8 @@
private ShopMapper shopMapper;
@Autowired
private UserActionMapper userActionMapper;
+ @Autowired
+ private NoticeMapper noticeMapper;
@Autowired
@@ -371,7 +374,6 @@
if(!this.checkIsCreateInvite(phone)){
member.setRecId(wxPhoneRequest.getRecId());
}
- member.setIntegral(BigDecimal.ZERO);
member.setPhone(phone);
member.setStatus(Constants.ZERO);
}
@@ -424,7 +426,7 @@
dealIntegralRequest.setDealType(Constants.ZERO);
dealIntegralRequest.setMemberId(member.getId());
dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.REGISTER);
- integralService.dealIntegral(dealIntegralRequest,null);
+ integralService.dealIntegral(dealIntegralRequest,member);
}
//寮�鍚敞鍐岄�佷紭鎯犲埜
if(Constants.equalsInteger(platformConfigDTO.getRegCouponRewardStatus(),Constants.ZERO)){
@@ -450,6 +452,10 @@
}
memberCouponList.add(memberCoupon);
}
+ Notice notice = Notice.getNotice(Constants.NoticeType.COUPON,
+ member.getId(),null);
+ notice.setContent(notice.getContent().replace("{param}",Constants.getCouponInfo(memberCoupon,num)));
+ noticeMapper.insert(notice);
}
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
memberCouponJoinMapper.insert(memberCouponList);
@@ -486,10 +492,8 @@
dealIntegralRequest.setMemberId(member.getRecId());
dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.INVITENEWUSER);
dealIntegralRequest.setParam1(member.getNickname());
- integralService.dealIntegral(dealIntegralRequest,null);
+ integralService.dealIntegral(dealIntegralRequest,member);
//娣诲姞娑堟伅璁板綍
-
-
}
}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
index b188c07..6216bb3 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
@@ -224,10 +224,8 @@
Notice notice = pageWrap.getModel();
- queryWrapper.ne(Objects.nonNull(notice.getQueryType())&&Constants.equalsInteger(notice.getQueryType(),Constants.ZERO),
- Notice::getObjType,Constants.TWO)
- .eq(Objects.nonNull(notice.getQueryType())&&Constants.equalsInteger(notice.getQueryType(),Constants.ONE),
- Notice::getObjType,Constants.TWO)
+ queryWrapper.ne(Objects.nonNull(notice.getQueryType()),
+ Notice::getType,notice.getQueryType())
.eq(Notice::getMemberId,notice.getMemberId())
.orderByAsc(Notice::getStatus)
.orderByDesc(Notice::getId)
@@ -252,11 +250,10 @@
/**
*
- * @param type 0娑堣垂鑰咃紱1=缁忛攢鍟嗭紱
- * @param objType 0鍟嗗煄璁㈠崟 1绉垎娴佹按 2浜掑姩璇勪环 3浼樻儬鍒�
+ * @param type 娑堟伅绫诲瀷 0=绯荤粺娑堟伅锛�1=绀惧尯娑堟伅
+ * @param objType 0鍟嗗煄璁㈠崟 1绉垎娴佹按 2杩囨湡鎻愰啋 3绀惧尯娑堟伅
*
*/
-
public void saveNoticeInfo(Integer type,Integer objType,Integer memberId
,String title,String content,Integer objId){
Notice notice = new Notice();
@@ -286,6 +283,7 @@
BigDecimal integral,
Integer objId,String info){
String title = integralObjType.getName();
+
this.saveNoticeInfo(
type,
Constants.ONE,
@@ -311,14 +309,14 @@
MemberCoupon mc = c.getMemberCoupon();
String info = Constants.equalsInteger(mc.getCouponType(),Constants.ZERO)?
"婊�"+mc.getLimitPrice()+"鍏冨噺"+mc.getPrice()+"鍏冩姷鎵e埜*"+c.getNum():
- "婊�"+mc.getLimitPrice()+"鍏冧韩"+mc.getPrice()+"鎶樺埜";
+ "婊�"+mc.getLimitPrice()+"鍏冧韩"+mc.getPrice()+"鎶樺埜*"+c.getNum();
replaceInfo = replaceInfo + (StringUtils.isBlank(replaceInfo)?
info:","+info);
}
noticeInfo.replace("${param}",replaceInfo);
this.saveNoticeInfo(
- Constants.ZERO,
+ Constants.ONE,
Constants.ONE,
memberId,
"鑾峰緱绯荤粺鍙戞斁鐨勪紭鎯犲埜",
@@ -365,8 +363,8 @@
String noticeInfo = "${param}鍥炲浜嗘偍鐨勮瘎璁�";
noticeInfo.replace("${param}",memberName);
this.saveNoticeInfo(
- Constants.ZERO,
- Constants.TWO,
+ Constants.ONE,
+ Constants.THREE,
memberId,
noticeInfo,
noticeInfo,
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index 61c08ad..8642b11 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -146,6 +146,8 @@
shop.setIsrec(Constants.ONE);
shop.setOrigin(Constants.ONE);
shop.setSaleType(Constants.formatIntegerNum(shop.getSaleType()));
+ shop.setAmount(BigDecimal.ZERO);
+ shop.setTotalAmount(BigDecimal.ZERO);
String salt = RandomStringUtils.randomAlphabetic(6);
shop.setPassword(shop.getCode()+"@123456");
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
index e8b89d8..18e9dac 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
@@ -238,6 +238,10 @@
if(Objects.isNull(goodsSku)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗗搧SKU淇℃伅");
}
+ Goods goods = goodsMapper.selectById(goodsSku.getGoodsId());
+ if(Objects.isNull(goods)||!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鍟嗗搧宸蹭笅鏋讹紝鏃犳硶鍔犲叆璐墿杞︼紒");
+ }
if(!Objects.isNull(shopcart)){
shopcart.setNum(shopcart.getNum() + addCartGoodsRequest.getNum());
shopcart.setEditDate(new Date());
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
index 8269a4a..4180450 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -167,5 +167,4 @@
return ApiResponse.success("鎿嶄綔鎴愬姛");
}
-
}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
index 5160009..4ac39ef 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.Goods;
import com.doumee.dao.business.model.SearchHistory;
import com.doumee.dao.web.request.goods.GoodsRequest;
import com.doumee.dao.web.response.goods.GoodsInfoResponse;
@@ -35,8 +36,8 @@
@ApiOperation("鍟嗗搧鍒楄〃")
@PostMapping("/goodsPage")
- public ApiResponse<IPage<GoodsInfoResponse>> goodsPage(@RequestBody PageWrap<GoodsRequest> pageWrap) {
- IPage<GoodsInfoResponse> page = goodsService.getGoodsPage(pageWrap);
+ public ApiResponse<IPage<Goods>> goodsPage(@RequestBody PageWrap<GoodsRequest> pageWrap) {
+ IPage<Goods> page = goodsService.getGoodsPage(pageWrap);
return ApiResponse.success("鏌ヨ鎴愬姛",page);
}
@@ -46,8 +47,8 @@
@ApiImplicitParam(paramType = "query", dataType = "Integer", name = "goodsId", value = "鍟嗗搧涓婚敭", required = true),
@ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛涓婚敭", required = true),
})
- public ApiResponse<GoodsInfoResponse> goodsInfo(@RequestParam Integer goodsId,Integer memberId) {
- GoodsInfoResponse goodsInfoResponse = goodsService.getGoodsInfo(goodsId,memberId);
+ public ApiResponse<Goods> goodsInfo(@RequestParam Integer goodsId,Integer memberId) {
+ Goods goodsInfoResponse = goodsService.getGoodsInfo(goodsId,memberId);
return ApiResponse.success("鏌ヨ鎴愬姛",goodsInfoResponse);
}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
index 03451f5..781a08c 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
@@ -95,5 +95,4 @@
-
}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
index eceb395..4d7180f 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
@@ -36,13 +36,16 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* Created by IntelliJ IDEA.
@@ -56,6 +59,10 @@
@RequestMapping("/web/orders")
@Slf4j
public class OrderApi extends ApiController {
+
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+
@LoginRequired
@ApiOperation("鍜栧暋璁″垝宸茶闃呭垪琛�")
@PostMapping("/planOrdersPage")
@@ -156,7 +163,11 @@
})
public ApiResponse<PayResponse> orderPay(@Valid @RequestBody ShopOrderPayRequest request) {
request.setMemberId(getMemberId());
- return ApiResponse.success("鎿嶄綔鎴愬姛", goodsorderService.orderPay(request, memberCouponServiceImpl));
+ PayResponse payResponse = goodsorderService.orderPay(request, memberCouponServiceImpl);
+ if(Objects.nonNull(payResponse)&&StringUtils.isNotBlank(payResponse.getLockKey())){
+ redisTemplate.delete(payResponse.getLockKey());
+ }
+ return ApiResponse.success("鎿嶄綔鎴愬姛", payResponse);
}
@LoginRequired
--
Gitblit v1.9.3