From dbcaaa33fdd45c704fd40926df0a542556e8e4f2 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期五, 18 九月 2026 17:15:09 +0800
Subject: [PATCH] feat:门店店长手机号列表展示问题
---
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 447 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 282 insertions(+), 165 deletions(-)
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index 231fef5..5121290 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -1,6 +1,7 @@
package com.dsh.activity.controller;
+import com.alipay.api.domain.ArrangementVORes;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.*;
@@ -30,6 +31,7 @@
import javax.annotation.Resource;
import javax.xml.crypto.Data;
+import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@@ -94,11 +96,13 @@
public void changeState(@RequestBody CoachChangeStateVO dto) {
pmdsService.changeState(dto);
}
+
@ResponseBody
@PostMapping("/base/pointMerchars/goodsList")
public List<PointsMerchandise> goodsList() {
return pmdsService.list();
}
+
/**
* 根据id查询
*/
@@ -121,13 +125,37 @@
@RequestMapping("/base/pointMerchars/writeOff")
public Object writeOff(@RequestBody WriteOffDTO dto) {
- UserPointsMerchandise byId = userPointsMerchandiseService.getById(dto.getId());
- byId.setStoreId(dto.getVerifiStoreId());
- byId.setStatus(2);
- byId.setVerificationTime(new Date());
- byId.setUserId(null);
- byId.setVerificationUserId(dto.getVerificationUserId());
- return userPointsMerchandiseService.updateById(byId);
+ if (dto == null || dto.getId() == null) {
+ throw new IllegalArgumentException("门票记录不能为空");
+ }
+ if (!Integer.valueOf(1).equals(dto.getGoType()) && !Integer.valueOf(2).equals(dto.getGoType())) {
+ throw new IllegalArgumentException("入园方式参数不正确");
+ }
+
+ UserPointsMerchandise ticket = userPointsMerchandiseService.getById(dto.getId());
+ if (ticket == null) {
+ throw new IllegalArgumentException("门票记录不存在");
+ }
+ if (!Integer.valueOf(1).equals(ticket.getStatus())) {
+ throw new IllegalStateException("该门票已核销");
+ }
+
+ // 以待核销状态作为更新条件,避免并发请求重复核销同一张门票。
+ UserPointsMerchandise updatedTicket = new UserPointsMerchandise();
+ updatedTicket.setId(ticket.getId());
+ updatedTicket.setVerifiStoreId(dto.getVerifiStoreId());
+ updatedTicket.setStatus(2);
+ updatedTicket.setVerificationTime(new Date());
+ updatedTicket.setVerificationUserId(dto.getVerificationUserId());
+ updatedTicket.setGoType(dto.getGoType());
+ boolean updated = userPointsMerchandiseService.update(updatedTicket,
+ new LambdaQueryWrapper<UserPointsMerchandise>()
+ .eq(UserPointsMerchandise::getId, ticket.getId())
+ .eq(UserPointsMerchandise::getStatus, 1));
+ if (!updated) {
+ throw new IllegalStateException("该门票已核销");
+ }
+ return true;
}
@Autowired
@@ -208,7 +236,7 @@
List<Integer> storeIds = ofSearch.getStoreIds();
// 优惠券指定的门店
List<Integer> collect5 = cstoreService.list(new QueryWrapper<CouponStore>().eq("couponId", id3)
- .in("storeId", storeIds)).stream().map(CouponStore::getStoreId)
+ .in("storeId", storeIds)).stream().map(CouponStore::getStoreId)
.collect(Collectors.toList());
// 判断两个集合是否相交
// 比较两个集合中是否有相同的元素;当两个集合中没有相同元素时返回true,
@@ -281,8 +309,8 @@
*/
@ResponseBody
@RequestMapping("/base/pointMerchars/getAmount")
- public List<PointMerchandiseIncomeVo> getAmount() {
- return userPointsMerchandiseService.getAmount();
+ public List<PointMerchandiseIncomeVo> getAmount(@RequestBody List<Integer> storeIds) {
+ return userPointsMerchandiseService.getAmount(storeIds);
}
@@ -302,7 +330,7 @@
List<IntegralCommodity> commodity = new ArrayList<>();
Map<String, String> geocode = gdMapGeocodingUtil.geocode(location.getLon(), location.getLat());
- if(null == geocode){
+ if (null == geocode) {
return new ArrayList<>();
}
String provinceCode = geocode.get("provinceCode");
@@ -330,7 +358,7 @@
.eq("shelves", 1)
.gt("endTime", new Date())
.eq("status", 1);
- if(cIds.size() > 0){
+ if (cIds.size() > 0) {
wrapper.in("id", cIds);
}
List<PointsMerchandise> merchandises = pmdsService.list(wrapper.last("ORDER BY sort desc,insertTime desc"));
@@ -340,14 +368,14 @@
integralCommodity.setCommodityId(merchandise.getId());
integralCommodity.setCommodityImg(merchandise.getCover());
integralCommodity.setCommodityName(merchandise.getName());
- if(merchandise.getRedemptionMethod() == 1){
+ if (merchandise.getRedemptionMethod() == 1) {
integralCommodity.setIntegral(merchandise.getIntegral());
}
- if(merchandise.getRedemptionMethod() == 2){
+ if (merchandise.getRedemptionMethod() == 2) {
integralCommodity.setCommodityPrice(merchandise.getPrice());
integralCommodity.setIntegral(merchandise.getIntegral());
}
- if(merchandise.getRedemptionMethod() == 3){
+ if (merchandise.getRedemptionMethod() == 3) {
integralCommodity.setCommodityPrice(merchandise.getPrice());
}
integralCommodity.setRedemptionMethod(merchandise.getRedemptionMethod());
@@ -365,20 +393,20 @@
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
QueryWrapper<Coupon> queryWrapper = new QueryWrapper<Coupon>()
.eq("state", 1).gt("endTime", sdf.format(new Date()));
- if(storeCoupons.size() > 0){
+ if (storeCoupons.size() > 0) {
queryWrapper.in("id", storeCoupons);
}
List<Coupon> list = couponService.list(queryWrapper.last(" ORDER BY insertTime desc"));
- if (!list.isEmpty()){
+ if (!list.isEmpty()) {
for (Coupon coupon : list) {
IntegralCommodity integralCommodity = new IntegralCommodity();
integralCommodity.setCommodityId(coupon.getId());
integralCommodity.setCommodityImg(coupon.getCover());
integralCommodity.setCommodityName(coupon.getName());
- if(coupon.getRedemptionMethod() == 1){
+ if (coupon.getRedemptionMethod() == 1) {
integralCommodity.setIntegral(coupon.getIntegral().intValue());
}
- if(coupon.getRedemptionMethod() == 2){
+ if (coupon.getRedemptionMethod() == 2) {
integralCommodity.setCommodityPrice(coupon.getCash());
integralCommodity.setIntegral(coupon.getIntegral().intValue());
}
@@ -395,20 +423,22 @@
@PostMapping("/base/pointMerchars/getCommoditys")
public PointMerchandiseVo getVicinityGoods(@RequestBody CommodityRequest request) {
+ System.err.println("积分商城请求参数"+request);
PointMerchandiseVo pointMerchandiseVo = new PointMerchandiseVo();
List<PointsMerchandise> list = new ArrayList<>();
String provinceCode = "";
String cityCode = "";
if (ToolUtil.isEmpty(request.getLon()) && ToolUtil.isEmpty(request.getLat())) {
- return pointMerchandiseVo;
+ }else{
+ try {
+ Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
+ provinceCode = geocode.get("provinceCode");
+ cityCode = geocode.get("cityCode");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
- try {
- Map<String, String> geocode = gdMapGeocodingUtil.geocode(request.getLon(), request.getLat());
- provinceCode = geocode.get("provinceCode");
- cityCode = geocode.get("cityCode");
- } catch (Exception e) {
- e.printStackTrace();
- }
+
list = pmdsService.list(new QueryWrapper<PointsMerchandise>()
.eq("state", 1)
@@ -417,6 +447,29 @@
.ge("endTime", new Date())
.eq("status", 1)
);
+ if (request.getShopId()!=null){
+ List<Integer> storeId = new ArrayList<>();
+ storeId.add(request.getShopId());
+ List<Store> stores = storeClient.queryStoreByIds(storeId);
+ Store store = stores.get(0);
+ provinceCode = store.getProvinceCode();
+ cityCode = store.getCityCode();
+ List<Integer> pointsMerchandiseIds = pmdstoService.lambdaQuery().eq(PointsMerchandiseStore::getStoreId, request.getShopId()).list()
+ .stream().map(PointsMerchandiseStore::getPointsMerchandiseId)
+ .collect(Collectors.toList());
+ if (pointsMerchandiseIds.isEmpty()){
+ pointMerchandiseVo.setMerchandises(list);
+ return pointMerchandiseVo;
+ }else{
+ List<PointsMerchandise> pointsMerchandiseList = pmdsService.lambdaQuery()
+ .eq(PointsMerchandise::getState, 1)
+ .eq(PointsMerchandise::getShelves,1)
+ .in(PointsMerchandise::getId, pointsMerchandiseIds).list();
+
+ list = pointsMerchandiseList;
+ }
+ }
+ list = list.stream().distinct().collect(Collectors.toList());
if (list.size() > 0) {
Iterator<PointsMerchandise> iterator = list.iterator();
while (iterator.hasNext()) {
@@ -835,13 +888,15 @@
@ResponseBody
@PostMapping("/base/pointMerchars/getDetailsOfExchange")
- public ExchangeDetailsVo getIntegralExchangeDetails(@RequestBody Integer appUserId) {
+ public ExchangeDetailsVo getIntegralExchangeDetails(@RequestBody Integer appUserId) throws ParseException {
ExchangeDetailsVo detailsVo = new ExchangeDetailsVo();
List<ExchangeDetailsResponse> responses = new ArrayList<>();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
List<UserPointsMerchandise> pointsMerchandises = upmseService.list(new QueryWrapper<UserPointsMerchandise>()
.eq("userId", appUserId).eq("payStatus", 2));
-
+ List<PointsMerchandiseStore> pointsMerchandiseStoreList = pointsMerchandiseStoreService.list();
+ Map<Integer, List<PointsMerchandiseStore>> pointsMerchandiseStoreMap = pointsMerchandiseStoreList.stream().collect(Collectors.groupingBy(PointsMerchandiseStore::getPointsMerchandiseId));
List<Coupon> list1 = couponService.list();
List<Integer> ids = new ArrayList<>();
@@ -852,7 +907,8 @@
}
List<UserCoupon> userCoupons = new ArrayList<>();
if (ids.size() > 0) {
- userCoupons = userCouponService.list(new QueryWrapper<UserCoupon>().eq("userId", appUserId).in("couponId", ids));
+ userCoupons = userCouponService.list(new QueryWrapper<UserCoupon>().eq("userId", appUserId).in("couponId", ids)
+ .ne("status", 3));
}
if (pointsMerchandises.size() > 0) {
for (UserPointsMerchandise pointsMerchandise : pointsMerchandises) {
@@ -860,6 +916,7 @@
if (merchandise == null) {
continue;
}
+
ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse();
detailsResponse.setDetailsId(pointsMerchandise.getId());
detailsResponse.setGoodName(merchandise.getName());
@@ -879,6 +936,8 @@
detailsResponse.setUseStatus(pointsMerchandise.getStatus() == 1 ? 2 : 1);
detailsResponse.setGoodType(merchandise.getType());
if (merchandise.getType() == 3) {
+ detailsResponse.setCodeType(3);
+ detailsResponse.setDataId(pointsMerchandise.getId()+"");
detailsResponse.setCardType(merchandise.getCardType());
List<Integer> sids = new ArrayList<>();
detailsResponse.setUserId(appUserId);
@@ -917,77 +976,94 @@
// 以下代码均为临时代码===============================
for (Integer integer : collect) {
ArrayList<Integer> list2 = new ArrayList<>();
- if (integer==2024){
+ if (integer == 2024) {
list2.add(32);
detailsResponse.setRid(list2);
}
// 临时 根据门票id 指定的区域
- if (integer==9919){
- if (pointsMerchandise.getPointsMerchandiseId()==196||pointsMerchandise.getPointsMerchandiseId()==198){
+ if (integer == 9919) {
+ if (pointsMerchandise.getPointsMerchandiseId() == 196 || pointsMerchandise.getPointsMerchandiseId() == 198) {
// 返回儿童区id
ArrayList<Integer> list3 = new ArrayList<>();
list3.add(44);
detailsResponse.setRid(list3);
- }else if(pointsMerchandise.getPointsMerchandiseId()==197) {
+ } else if (pointsMerchandise.getPointsMerchandiseId() == 197) {
ArrayList<Integer> list4 = new ArrayList<>();
list4.add(43);
detailsResponse.setRid(list4);
}
}
}
+ if (detailsResponse.getRid() == null) {
+ List<Integer> integers = stoClient.querySiteIdById(collect);
+ detailsResponse.setRid(integers);
+ }
//======================================================
}
- }else{
- // todo 返回门店id 和场地id
- // 查询指定场地
- List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>()
- .eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId()));
- // 门店
- ArrayList<Integer> list3 = new ArrayList<>();
- // 场地
- ArrayList<Integer> list4 = new ArrayList<>();
- for (PointsMerchandiseStore temp : list) {
- Integer storeId = temp.getStoreId();
- Integer siteId = temp.getSiteId();
- list3.add(storeId);
- list4.add(siteId);
- }
- detailsResponse.setRid(list4);
- detailsResponse.setSid(list3);
+ } else {
+ // todo 返回门店id 和场地id
+ // 查询指定场地
+ List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>()
+ .eq(PointsMerchandiseStore::getPointsMerchandiseId, merchandise.getId()));
+ // 门店
+ ArrayList<Integer> list3 = new ArrayList<>();
+ // 场地
+ ArrayList<Integer> list4 = new ArrayList<>();
+ for (PointsMerchandiseStore temp : list) {
+ Integer storeId = temp.getStoreId();
+ Integer siteId = temp.getSiteId();
+ list3.add(storeId);
+ list4.add(siteId);
+ }
+ detailsResponse.setRid(list4);
+ detailsResponse.setSid(list3);
+ System.err.println("门票rid" + list4);
+ System.err.println("门票sid" + list3);
}
if (merchandise.getCardType() == 1) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(pointsMerchandise.getInsertTime());
- calendar.add(Calendar.DAY_OF_MONTH, 1);
- Date end = calendar.getTime();
- String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
- String endDate = dateFormat.format(end);
- detailsResponse.setStartTime(startDate);
- detailsResponse.setEndTime(startDate);
- Date now = new Date();
- Calendar cal1 = Calendar.getInstance();
- cal1.setTime(pointsMerchandise.getInsertTime());
- Calendar cal2 = Calendar.getInstance();
- cal2.setTime(now);
- // Compare the year, month, and day of the two Calendar instances
- boolean isSameDate = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
- cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) &&
- cal1.get(Calendar.DAY_OF_MONTH) == cal2.get(Calendar.DAY_OF_MONTH);
+ // 日卡开始时间和结束时间根据门店营业时间来
+ // 查询门店
+ List<Integer> storeIds = pointsMerchandiseStoreMap.get(merchandise.getId()).stream().map(PointsMerchandiseStore::getStoreId)
+ .collect(Collectors.toList());
+ List<Store> stores = storeClient.queryStoreByIds(storeIds);
+ String startTime = "";
+ String endTime = "";
- // Print the result
- if (isSameDate) {
- } else {
- System.out.println("The two dates do not have the same date.");
- detailsResponse.setUseStatus(3);
+ if (stores != null && !stores.isEmpty()) {
+ // 初始化为第一个门店的时间
+ startTime = stores.get(0).getStartTime();
+ endTime = stores.get(0).getEndTime();
+ // 遍历所有门店,找出最早的开始时间和最晚的结束时间
+ for (Store store : stores) {
+ String storeStartTime = store.getStartTime();
+ String storeEndTime = store.getEndTime();
+ if (storeStartTime != null && startTime != null) {
+ // 比较开始时间,找出最早的
+ if (storeStartTime.compareTo(startTime) < 0) {
+ startTime = storeStartTime;
+ }
+ }
+
+ if (storeEndTime != null && endTime != null) {
+ // 比较结束时间,找出最晚的
+ if (storeEndTime.compareTo(endTime) > 0) {
+ endTime = storeEndTime;
+ }
+ }
+ }
}
-
-
+ String format = simpleDateFormat1.format(pointsMerchandise.getInsertTime());
+ detailsResponse.setStartTime(format + " " + startTime + ":00");
+ detailsResponse.setEndTime(format + " " + endTime + ":00");
+ if (simpleDateFormat.parse(format + " " + endTime + ":00").before(new Date()) &&detailsResponse.getUseStatus()==2) {
+ System.err.println("过期了,当前门店中最晚营业时间为" + format + " " + endTime + ":00");
+ detailsResponse.setUseStatus(3);
+ }
} else if (merchandise.getCardType() == 2) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(pointsMerchandise.getInsertTime());
calendar.add(Calendar.DAY_OF_MONTH, 31);
@@ -998,15 +1074,22 @@
detailsResponse.setEndTime(endDate);
Date now = new Date();
- if (now.after(end)) {
+ if (now.after(end)&&detailsResponse.getUseStatus()==2) {
detailsResponse.setUseStatus(3);
}
+// if (detailsResponse.getUseStatus()!=3){
+// if (detailsResponse.getUseStatus()==1 &&now.after(end)){
+// detailsResponse.setUseStatus(2);
+// }else{
+// detailsResponse.setUseStatus(2);
+// }
+// }
} else if (merchandise.getCardType() == 3) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(pointsMerchandise.getInsertTime());
- calendar.add(Calendar.DAY_OF_MONTH, 93);
+ calendar.add(Calendar.DAY_OF_MONTH, 90);
Date end = calendar.getTime();
String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
String endDate = dateFormat.format(end);
@@ -1014,15 +1097,22 @@
detailsResponse.setEndTime(endDate);
Date now = new Date();
- if (now.after(end)) {
+ if (now.after(end)&&detailsResponse.getUseStatus()==2) {
detailsResponse.setUseStatus(3);
}
+// if (detailsResponse.getUseStatus()!=3){
+// if (detailsResponse.getUseStatus()==1 &&now.after(end)){
+// detailsResponse.setUseStatus(2);
+// }else{
+// detailsResponse.setUseStatus(2);
+// }
+// }
} else if (merchandise.getCardType() == 4) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(pointsMerchandise.getInsertTime());
- calendar.add(Calendar.DAY_OF_MONTH, 372);
+ calendar.add(Calendar.DAY_OF_MONTH, 365);
Date end = calendar.getTime();
String startDate = dateFormat.format(pointsMerchandise.getInsertTime());
String endDate = dateFormat.format(end);
@@ -1030,9 +1120,16 @@
detailsResponse.setEndTime(endDate);
Date now = new Date();
- if (now.after(end)) {
+ if (now.after(end)&&detailsResponse.getUseStatus()==2) {
detailsResponse.setUseStatus(3);
}
+// if (detailsResponse.getUseStatus()!=3){
+// if (detailsResponse.getUseStatus()==1 &&now.after(end)){
+// detailsResponse.setUseStatus(2);
+// }else{
+// detailsResponse.setUseStatus(2);
+// }
+// }
}
@@ -1047,22 +1144,27 @@
List<VipDetail> list = vipDetailService.lambdaQuery()
.eq(VipDetail::getAppUserId, appUserId).eq(VipDetail::getType, 2).list();
for (VipDetail vipDetail : list) {
- ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse();
- // 添加-用于区分会员权益门票
- detailsResponse.setDetailsId(Long.valueOf("-"+vipDetail.getId()));
- detailsResponse.setGoodName(vipDetail.getTicketName());
- detailsResponse.setStartTime(simpleDateFormat.format(vipDetail.getStartTime()));
- detailsResponse.setEndTime(simpleDateFormat.format(vipDetail.getEndTime()));
- detailsResponse.setUseStatus(vipDetail.getStatus()==1?2:1);
- detailsResponse.setGoodType(3);
- // 表明是会员赠送的门票
- detailsResponse.setExchangeType(4);
- // 全国通用
+ ExchangeDetailsResponse detailsResponse = new ExchangeDetailsResponse();
+ // 添加-用于区分会员权益门票
+ detailsResponse.setDetailsId(Long.valueOf("-" + vipDetail.getId()));
+ detailsResponse.setGoodName(vipDetail.getTicketName());
+ detailsResponse.setStartTime(simpleDateFormat.format(vipDetail.getStartTime()));
+ detailsResponse.setEndTime(simpleDateFormat.format(vipDetail.getEndTime()));
+ detailsResponse.setUseStatus(vipDetail.getStatus() == 1 ? 2 : 1);
+ detailsResponse.setGoodType(3);
+ detailsResponse.setCardType(3);
+ detailsResponse.setDataId(vipDetail.getId()+"");
+ // 表明是会员赠送的门票
+ detailsResponse.setExchangeType(4);
+ // 全国通用
detailsResponse.setRid(Collections.singletonList(0));
detailsResponse.setSid(Collections.singletonList(0));
-
- responses.add(detailsResponse);
+ Date now = new Date();
+ if (now.after(vipDetail.getEndTime())&&detailsResponse.getUseStatus()==2) {
+ detailsResponse.setUseStatus(3);
}
+ responses.add(detailsResponse);
+ }
if (userCoupons.size() > 0) {
for (UserCoupon userCoupon : userCoupons) {
@@ -1082,13 +1184,17 @@
detailsResponse.setIntegral(c.getIntegral().intValue());
detailsResponse.setCash(c.getCash());
}
- if (userCoupon.getIsVipGrant()!=null && userCoupon.getIsVipGrant()==1){
+ if (userCoupon.getIsVipGrant() != null && userCoupon.getIsVipGrant() == 1) {
detailsResponse.setExchangeType(4);
}
detailsResponse.setStartTime(simpleDateFormat.format(c.getStartTime()));
detailsResponse.setEndTime(simpleDateFormat.format(c.getEndTime()));
detailsResponse.setUseStatus(userCoupon.getStatus() == 1 ? 2 : 1);
detailsResponse.setGoodType(4);
+ Date now = new Date();
+ if (now.after(c.getEndTime())&&detailsResponse.getUseStatus()==2) {
+ detailsResponse.setUseStatus(3);
+ }
responses.add(detailsResponse);
}
Comparator<ExchangeDetailsResponse> comparator = Comparator.comparing(ExchangeDetailsResponse::getStartTime).reversed();
@@ -1109,10 +1215,10 @@
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
PointDetailsVo detailsVo = new PointDetailsVo();
- if (speMercharsId.toString().contains("-1")){
- // 会员门票
+ if (speMercharsId.toString().contains("-1")) {
+ // 会员优惠券
VipDetail vipDetail = vipDetailService.getById(Math.abs(speMercharsId));
- if (vipDetail.getType()==1){
+ if (vipDetail.getType() == 1) {
Coupon coupon = iCouponService.getById(vipDetail.getCouponId());
detailsVo.setDetailsId(Long.valueOf(coupon.getId()));
List<String> list3 = new ArrayList<>();
@@ -1161,12 +1267,12 @@
detailsVo.setContents(coupon.getIllustrate());
detailsVo.setGoodType(4);
- }else{
+ } else {
// 门票
- detailsVo.setDetailsId(Long.valueOf("-"+vipDetail.getId()));
+ detailsVo.setDetailsId(Long.valueOf("-" + vipDetail.getId()));
detailsVo.setGoodName(vipDetail.getTicketName());
- switch (vipDetail.getStatus()){
+ switch (vipDetail.getStatus()) {
case 1:
detailsVo.setUseType(2);
break;
@@ -1180,10 +1286,10 @@
detailsVo.setStartTime(simpleDateFormat.format(vipDetail.getStartTime()));
detailsVo.setEndTime(simpleDateFormat.format(vipDetail.getEndTime()));
detailsVo.setOrderTime(simpleDateFormat.format(vipDetail.getInsertTime()));
- if (vipDetail.getUseTime()!=null){
+ if (vipDetail.getUseTime() != null) {
detailsVo.setWriteOffTime(simpleDateFormat.format(vipDetail.getUseTime()));
}
- if (vipDetail.getUseStoreId()!=null){
+ if (vipDetail.getUseStoreId() != null) {
StoreDetailOfCourse courseOfStore = stoClient.getCourseOfStore(vipDetail.getUseStoreId());
detailsVo.setWriteOffName(courseOfStore.getStoreName());
}
@@ -1193,7 +1299,7 @@
detailsVo.setCardType(1);
detailsVo.setExchangeAddrType(1);
}
- detailsVo.setDetailsId(Long.valueOf("-"+vipDetail.getId()));
+ detailsVo.setDetailsId(Long.valueOf("-" + vipDetail.getId()));
return detailsVo;
}
UserPointsMerchandise byId = upmseService.getById(speMercharsId);
@@ -1339,7 +1445,7 @@
list1.add(coursePackage.getCoverDrawing());
detailsVo.setPics(list1);
detailsVo.setClassHours(0);
- if(coursePackage.getType() != 3){
+ if (coursePackage.getType() != 3) {
CoursePackagePaymentConfig coursePackagePaymentConfig = cpClient.queryConfigCoursePackData(pmdsServiceById.getCoursePackageConfigId());
detailsVo.setClassHours(coursePackagePaymentConfig.getClassHours());
}
@@ -1486,6 +1592,15 @@
merchandise.setInsertTime(new Date());
upmseService.save(merchandise);
return merchandise.getId();
+ }
+
+ @PostMapping("/base/pointMerchars/saveDetailsUserPointMercaseList")
+ public Boolean saveDetailsUserPointMercaseList(@RequestBody List<UserPointsMerchandise> merchandises) {
+ for (UserPointsMerchandise merchandise : merchandises) {
+ merchandise.setInsertTime(new Date());
+ }
+
+ return upmseService.saveBatch(merchandises);
}
@@ -1689,7 +1804,9 @@
map.put("id", pointsMerchandise.getId());
map.put("userId", pointsMerchandise.getUserId());
map.put("status", pointsMerchandise.getStatus());
+ map.put("goType", pointsMerchandise.getGoType());
map.put("payTime", sdf.format(pointsMerchandise.getPaymentTime()));
+ map.put("orderNumber", pointsMerchandise.getOrderNumber());
mapList.add(map);
}
}
@@ -1817,7 +1934,7 @@
if (list.size() > 0) {
- if (byId.getUseScope()==3){
+ if (byId.getUseScope() == 3) {
// 如果是指定门店
List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList());
@@ -1827,9 +1944,9 @@
for (Store store : stores) {
StoreVos storeVos1 = new StoreVos();
storeVos1.setNum1(store.getProvince() + "省" + store.getCity() + "市");
- if (store.getOperatorId()==null){
+ if (store.getOperatorId() == null) {
storeVos1.setNum2("平台");
- }else if (store.getOperatorId() == 0) {
+ } else if (store.getOperatorId() == 0) {
storeVos1.setNum2("平台");
} else {
storeVos1.setNum2(store.getOName());
@@ -1839,10 +1956,10 @@
storeVos.add(storeVos1);
}
}
- }else if (byId.getUseScope()==4){
+ } else if (byId.getUseScope() == 4) {
// 如果是指定场地
List<Integer> collect1 = list.stream().map(PointsMerchandiseStore::getSiteId).distinct().collect(Collectors.toList());
- int temp =0;
+ int temp = 0;
List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList());
List<Store> stores1 = new ArrayList<>();
for (Integer integer : collect) {
@@ -1852,16 +1969,16 @@
stores1.addAll(stores);
}
List<Store> stores = stoClient.queryStoreByIds(collect);
- while (temp!=collect1.size()){
+ while (temp != collect1.size()) {
for (Store store : stores1) {
Integer integer = collect1.get(temp);
Site site = siteClient.querySiteById(integer);
StoreVos storeVos1 = new StoreVos();
storeVos1.setNum5(site.getName());
storeVos1.setNum1(store.getProvince() + "省" + store.getCity() + "市");
- if (store.getOperatorId()==null){
+ if (store.getOperatorId() == null) {
storeVos1.setNum2("平台");
- }else if (store.getOperatorId() == 0) {
+ } else if (store.getOperatorId() == 0) {
storeVos1.setNum2("平台");
} else {
storeVos1.setNum2(store.getOName());
@@ -1881,7 +1998,6 @@
}
-
@ResponseBody
@PostMapping("/base/pointMerchars/updateGoodsDetail")
public boolean updateGoodsDetail(@RequestBody Map<String, Object> map) {
@@ -1892,7 +2008,7 @@
if (Integer.valueOf(map.get("type").toString()) != 1) {
byId1.setStatus(2);
}
- if(StringUtils.hasLength(name)){
+ if (StringUtils.hasLength(name)) {
byId1.setName(name);
}
Integer quantityIssued = (Integer) map.get("quantityIssued");
@@ -1946,19 +2062,19 @@
public Boolean addOther(@RequestBody String pam) {
Boolean save = false;
String[] split = pam.split("_");
- if (split.length>2){
- if (StringUtils.hasLength(split[2])){
- for (String s : split[2].split(",")) {
- PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore();
- pointsMerchandiseStore.setPointsMerchandiseId(Integer.valueOf(split[0]));
- pointsMerchandiseStore.setSiteId(Integer.valueOf(s));
- Site site = siteClient.querySiteById(Integer.valueOf(s));
- pointsMerchandiseStore.setStoreId(site.getStoreId());
- save = pmdstoService.save(pointsMerchandiseStore);
+ if (split.length > 2) {
+ if (StringUtils.hasLength(split[2])) {
+ for (String s : split[2].split(",")) {
+ PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore();
+ pointsMerchandiseStore.setPointsMerchandiseId(Integer.valueOf(split[0]));
+ pointsMerchandiseStore.setSiteId(Integer.valueOf(s));
+ Site site = siteClient.querySiteById(Integer.valueOf(s));
+ pointsMerchandiseStore.setStoreId(site.getStoreId());
+ save = pmdstoService.save(pointsMerchandiseStore);
+ }
+ // 这个门票是选择的场地
+ return save;
}
- // 这个门票是选择的场地
- return save;
- }
}
for (String s : split[1].split(",")) {
PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore();
@@ -2059,13 +2175,16 @@
public HashMap<String, Object> queryFee(@RequestBody QueryDataFee queryDataFee) {
HashMap<String, Object> map = new HashMap<>();
String data = queryDataFee.getData();
- List<Integer> ids = queryDataFee.getIds();
+ List<Integer> ids = queryDataFee.getIds() == null
+ ? new ArrayList<>() : new ArrayList<>(queryDataFee.getIds());
if (ids.size() == 0) {
ids.add(-1);
- }else{
-
}
- List<PointsMerchandise> list1 = pmdsService.list(new LambdaQueryWrapper<PointsMerchandise>().eq(PointsMerchandise::getRedemptionMethod, 3));
+ // 只查询门票商品(type=3),并按购买记录关联的商品 ID 统计。
+ // 旧逻辑会对每一笔订单遍历全部门票商品,导致日/月/季/年卡被重复累加。
+ List<PointsMerchandise> tickets = pmdsService.list(new LambdaQueryWrapper<PointsMerchandise>()
+ .eq(PointsMerchandise::getRedemptionMethod, 3)
+ .eq(PointsMerchandise::getType, 3));
LambdaQueryWrapper<UserPointsMerchandise> vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>();
if (ToolUtil.isNotEmpty(data)) {
String stime = data.split(" - ")[0] + " 00:00:00";
@@ -2073,48 +2192,46 @@
vipPaymentLambdaQueryWrapper.between(UserPointsMerchandise::getInsertTime, stime, etime);
}
vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getUserId, ids);
- List<Integer> collect = list1.stream().map(PointsMerchandise::getId).collect(Collectors.toList());
+ List<Integer> collect = tickets.stream().map(PointsMerchandise::getId).collect(Collectors.toList());
if (collect.size() == 0) {
collect.add(-1);
}
vipPaymentLambdaQueryWrapper.in(UserPointsMerchandise::getPointsMerchandiseId, collect);
vipPaymentLambdaQueryWrapper.eq(UserPointsMerchandise::getPayStatus, 2);
- ArrayList<Integer> objects = new ArrayList<>();
+ vipPaymentLambdaQueryWrapper.and(wrapper -> wrapper.isNull(UserPointsMerchandise::getState)
+ .or().eq(UserPointsMerchandise::getState, 1));
List<UserPointsMerchandise> list = upmseService.list(vipPaymentLambdaQueryWrapper);
- double a = 0;
- double d = 0;
- double m = 0;
- double j = 0;
- double y = 0;
+ Map<Integer, PointsMerchandise> ticketMap = tickets.stream()
+ .collect(Collectors.toMap(PointsMerchandise::getId, ticket -> ticket, (first, ignored) -> first));
+ BigDecimal all = BigDecimal.ZERO;
+ BigDecimal day = BigDecimal.ZERO;
+ BigDecimal month = BigDecimal.ZERO;
+ BigDecimal quarter = BigDecimal.ZERO;
+ BigDecimal year = BigDecimal.ZERO;
for (UserPointsMerchandise userPointsMerchandise : list) {
- for (PointsMerchandise pointsMerchandise : list1) {
- if (pointsMerchandise.getId() == userPointsMerchandise.getPointsMerchandiseId()) {
- a += pointsMerchandise.getCash().doubleValue();
- }
- if (pointsMerchandise.getType() == 3) {
- if (pointsMerchandise.getCardType() == 1) {
- d += pointsMerchandise.getCash().doubleValue();
- }
- if (pointsMerchandise.getCardType() == 2) {
- m += pointsMerchandise.getCash().doubleValue();
- }
- if (pointsMerchandise.getCardType() == 3) {
- j += pointsMerchandise.getCash().doubleValue();
- }
- if (pointsMerchandise.getCardType() == 4) {
- y += pointsMerchandise.getCash().doubleValue();
- }
- }
+ PointsMerchandise ticket = ticketMap.get(userPointsMerchandise.getPointsMerchandiseId());
+ if (ticket == null || userPointsMerchandise.getCash() == null) {
+ continue;
}
-
+ BigDecimal paidCash = userPointsMerchandise.getCash();
+ all = all.add(paidCash);
+ if (Integer.valueOf(1).equals(ticket.getCardType())) {
+ day = day.add(paidCash);
+ } else if (Integer.valueOf(2).equals(ticket.getCardType())) {
+ month = month.add(paidCash);
+ } else if (Integer.valueOf(3).equals(ticket.getCardType())) {
+ quarter = quarter.add(paidCash);
+ } else if (Integer.valueOf(4).equals(ticket.getCardType())) {
+ year = year.add(paidCash);
+ }
}
- map.put("all", a);
- map.put("day", d);
- map.put("month", m);
- map.put("quarter", j);
- map.put("year", y);
+ map.put("all", all);
+ map.put("day", day);
+ map.put("month", month);
+ map.put("quarter", quarter);
+ map.put("year", year);
return map;
--
Gitblit v1.7.1