From 8f37a2de432a8d4d77f94dcf45d0b86ce3006ee2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 18 八月 2025 14:47:35 +0800
Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0
---
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java | 6
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java | 18 +++
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 9 +
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 10 +
cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java | 4
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java | 20 ++-
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java | 6
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java | 236 +++++++++++++++++++++++++++++++++++++++
cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java | 2
9 files changed, 294 insertions(+), 17 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index 228d6a4..23c9176 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -474,7 +474,14 @@
VipPaymentVO res = new VipPaymentVO();
res.setHeadImg(appUser.getHeadImg());
res.setName(appUser.getName());
- res.setIsVip(appUser.getIsVip());
+ if (appUser.getVipEndTime()==null){
+ res.setIsVip(0);
+ }else if (appUser.getVipEndTime().before(new Date())){
+ res.setIsVip(0);
+ }else{
+ res.setIsVip(1);
+ }
+ appUserService.updateById(appUser);
List<Vip> vips = vipClient.listAll();
res.setVipList(vips);
} catch (Exception e) {
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java
index eba6005..4f49cfb 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java
@@ -22,7 +22,7 @@
@ApiModelProperty(value = "现金")
private BigDecimal cash;
- @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)")
+ @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金 3=会员赠送)")
private Integer exchangeType;
@ApiModelProperty(value = "有效期开始时间")
@@ -37,11 +37,15 @@
@ApiModelProperty(value = "商品类型 1实物 2课包 3门票 4优惠券")
private Integer goodType;
+
private Integer userId;
private List<Integer> rid;
private List<Integer> sid;
+ @ApiModelProperty(value = "当exchangeType=3会员赠送时存储1 门票二维码格式内容新增该字段 用于标明该门票为会员赠送" +
+ ",使用时存储门票记录")
+ private Integer isVipCode;
@ApiModelProperty(value = "1日卡 2月卡 3季卡 4年卡")
private Integer cardType;
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 de91dd1..96ea547 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
@@ -1038,6 +1038,7 @@
}
+ detailsResponse.setIsVipCode(0);
responses.add(detailsResponse);
}
detailsVo.setDetailsResponses(responses);
@@ -1053,8 +1054,7 @@
detailsResponse.setGoodName(vipDetail.getTicketName());
detailsResponse.setStartTime(simpleDateFormat.format(vipDetail.getStartTime()));
detailsResponse.setEndTime(simpleDateFormat.format(vipDetail.getEndTime()));
-
-
+ detailsResponse.setIsVipCode(1);
detailsResponse.setUseStatus(vipDetail.getStatus());
detailsResponse.setGoodType(3);
// 表明是会员赠送的门票
@@ -1084,13 +1084,15 @@
detailsResponse.setIntegral(c.getIntegral().intValue());
detailsResponse.setCash(c.getCash());
}
+ if (userCoupon.getIsVipGrant()!=null && userCoupon.getIsVipGrant()==1){
+ detailsResponse.setExchangeType(3);
+ }
detailsResponse.setStartTime(simpleDateFormat.format(c.getStartTime()));
detailsResponse.setEndTime(simpleDateFormat.format(c.getEndTime()));
detailsResponse.setUseStatus(userCoupon.getStatus() == 1 ? 2 : 1);
detailsResponse.setGoodType(4);
+ detailsResponse.setIsVipCode(0);
responses.add(detailsResponse);
-
-
}
Comparator<ExchangeDetailsResponse> comparator = Comparator.comparing(ExchangeDetailsResponse::getStartTime).reversed();
Collections.sort(responses, comparator);
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
index b1390ef..81d9384 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java
@@ -22,7 +22,7 @@
@ApiModelProperty(value = "现金")
private BigDecimal cash;
- @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金)")
+ @ApiModelProperty(value = "兑换方式(1=积分,2=积分+现金 3=会员赠送)")
private Integer exchangeType;
@ApiModelProperty(value = "有效期开始时间")
@@ -45,6 +45,10 @@
private List<Integer> sid;
+ @ApiModelProperty(value = "当exchangeType=3会员赠送时存储1 门票二维码格式内容新增该字段 用于标明该门票为会员赠送" +
+ ",使用时存储门票记录")
+ private Integer isVipCode;
+
@ApiModelProperty(value = "1日卡 2月卡 3季卡 4年卡")
private Integer cardType;
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
index 07d0245..21b24b2 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
@@ -19,7 +19,7 @@
/**
* 体验券名称
*/
- @ApiModelProperty("体验券名称 ")
+ @ApiModelProperty("体验券名称/抵扣券商品名称 ")
String experienceName;
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
index a33a3fc..ec7445b 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java
@@ -13,8 +13,10 @@
@ApiModelProperty("优惠券名称")
private String name;
+ @ApiModelProperty("商品名称")
+ private String goodsName;
- @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券)")
+ @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券,4=体验券)")
private Integer type;
@ApiModelProperty("适用范围1全国通用 2指定城市可用 3指定门店可用")
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
index 12804de..dd8e9f2 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -4,10 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.dsh.activity.entity.Coupon;
-import com.dsh.activity.entity.CouponCity;
-import com.dsh.activity.entity.CouponStore;
-import com.dsh.activity.entity.UserCoupon;
+import com.dsh.activity.entity.*;
import com.dsh.activity.feignclient.account.AppUserClient;
import com.dsh.activity.feignclient.account.StudentClient;
import com.dsh.activity.feignclient.account.model.AppUser;
@@ -17,10 +14,7 @@
import com.dsh.activity.feignclient.other.StoreClient;
import com.dsh.activity.feignclient.other.model.Site;
import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
-import com.dsh.activity.mapper.CouponCityMapper;
-import com.dsh.activity.mapper.CouponMapper;
-import com.dsh.activity.mapper.CouponStoreMapper;
-import com.dsh.activity.mapper.UserCouponMapper;
+import com.dsh.activity.mapper.*;
import com.dsh.activity.model.ConponJsonRuleModel;
import com.dsh.activity.model.CouponListVo;
import com.dsh.activity.model.request.CouponPackageReq;
@@ -54,6 +48,8 @@
@Autowired
private GDMapGeocodingUtil gdMapGeocodingUtil;
+ @Autowired
+ private PointsMerchandiseMapper pointsMerchandiseMapper;
@Resource
private AppUserClient appClient;
@@ -255,6 +251,14 @@
ruleModel.setDeductionAmount("");
ruleModel.setExperienceName(jsonObject.getString("experienceName"));
break;
+ case 4:
+// 抵扣券
+ Integer goodsId = coupon.getGoodsId();
+ PointsMerchandise pointsMerchandise = pointsMerchandiseMapper.selectById(goodsId);
+ ruleModel.setConditionalAmount("");
+ ruleModel.setDeductionAmount("");
+ ruleModel.setExperienceName(pointsMerchandise.getName());
+ break;
default:
break;
}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java
new file mode 100644
index 0000000..f6db7eb
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java
@@ -0,0 +1,236 @@
+package com.dsh.guns.modular.system.controller.code;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dsh.course.feignClient.account.AppUserClient;
+import com.dsh.course.feignClient.account.model.QueryByNamePhone;
+import com.dsh.course.feignClient.activity.CouponClient;
+import com.dsh.course.feignClient.activity.model.Coupon;
+import com.dsh.course.feignClient.activity.model.CouponCity;
+import com.dsh.course.feignClient.activity.model.TicketDetailVO;
+import com.dsh.guns.core.base.controller.BaseController;
+import com.dsh.guns.core.common.constant.factory.PageFactory;
+import com.dsh.guns.modular.system.model.*;
+import com.dsh.guns.modular.system.service.IProtocolService;
+import com.dsh.guns.modular.system.service.IStoreService;
+import com.dsh.guns.modular.system.service.IVipService;
+import com.dsh.guns.modular.system.util.ResultUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author zhibing.pu
+ * @Date 2023/8/1 14:02
+ */
+@Controller
+@RequestMapping("/vipDetail")
+public class TVipDetailController extends BaseController {
+
+ @Autowired
+ private IVipService vipService;
+ @Autowired
+ private CouponClient couponClient;
+ @Autowired
+ private IStoreService storeService;
+ @Autowired
+ private AppUserClient appUserClient;
+ private String PREFIX = "/system/vip/";
+
+
+ /**
+ * 跳转到优惠券管理首页
+ */
+ @RequestMapping("")
+ public String index(Model model) {
+
+ return PREFIX + "vipDetail.html";
+ }
+
+ /**
+ * 获取 会员权益使用明细列表
+ */
+ @RequestMapping(value = "/list")
+ @ResponseBody
+ public List<Map<String, Object>> list(String vipName, Integer type
+ , Integer phone, String storeName
+ , Integer operatorId, Integer status
+ , String startTime, String endTime
+ , Integer useStartTime, Integer useEndTim) {
+ // 根据会员名查询会员ids
+ if (StringUtils.hasLength(vipName)){
+ List<Integer> vipIds = vipService.lambdaQuery().like(Vip::getVipName, vipName)
+ .list().stream().map(Vip::getId).collect(Collectors.toList());
+ }
+// QueryByNamePhone
+// appUserClient.listAll()
+// Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
+// List<Map<String, Object>> maps = vipService.listOfPage(vipName, status, page);
+// for (Map<String, Object> map : maps) {
+// Object timeType = map.get("timeType");
+// Object time = map.get("time");
+// Integer timeTypeValue = Integer.valueOf(timeType.toString());
+// Integer timeValue = Integer.valueOf(time.toString());
+// switch (timeTypeValue) {
+// case 1:
+// map.put("time",timeValue+"天");
+// break;
+// case 2:
+// map.put("time",timeValue+"月");
+// break;
+// case 3:
+// map.put("time",timeValue+"年");
+// break;
+// }
+// }
+ return null;
+ }
+
+ // APP查询所有上架的会员卡
+ @ResponseBody
+ @PostMapping("/listAll")
+ public List<Vip> listAll() {
+ List<Vip> list = vipService.lambdaQuery().eq(Vip::getStatus, 1).list();
+ List<Coupon> coupons = couponClient.queryCouponAll();
+ List<CouponCity> couponCityList = couponClient.queryAllCity();
+ List<CouponStore> storeList = couponClient.queryAllStore();
+ List<TStore> shopList = storeService.list();
+ // 封装会员权益
+ for (Vip vip : list) {
+ List<CouponVipResp> couponVipRespList = new ArrayList<>();
+ List<TicketVipResp> ticketVipRespList = new ArrayList<>();
+ String couponJson = vip.getCouponJson();
+ JSONArray couponJsonArray = JSONArray.parseArray(couponJson);
+ for (Object o : couponJsonArray) {
+ JSONObject couponJsonObject = (JSONObject) o;
+ // 优惠券id
+ Integer id = Integer.valueOf(couponJsonObject.getString("id"));
+ // 优惠券数量
+ Integer value = Integer.valueOf(couponJsonObject.getString("value"));
+ Coupon coupon = coupons.stream().filter(e -> e.getId().equals(id)).findFirst().orElse(new Coupon());
+ CouponVipResp couponVipResp = new CouponVipResp();
+ couponVipResp.setId(coupon.getId());
+ couponVipResp.setName(coupon.getName());
+ couponVipResp.setType(coupon.getType());
+ couponVipResp.setUseCondition(coupon.getUseScope());
+ couponVipResp.setCount(value);
+ switch (coupon.getUseScope()) {
+ case 1:
+ couponVipResp.setAvailable("全国通用");
+ break;
+ case 2:
+ couponVipResp.setAvailable("指定城市可用");
+ List<CouponCity> couponId = couponCityList.stream().filter(e -> e.getCouponId().equals(id))
+ .collect(Collectors.toList());
+ StringBuilder stringBuilder = new StringBuilder();
+ for (CouponCity couponCity : couponId) {
+ stringBuilder.append(couponCity.getCity());
+ }
+ couponVipResp.setCityOrStore(String.valueOf(stringBuilder));
+ break;
+ case 3:
+ couponVipResp.setAvailable("指定门店可用");
+ // 门店ids
+ List<Integer> storeIds = storeList.stream().filter(e -> e.getCouponId().equals(id))
+ .map(CouponStore::getStoreId).collect(Collectors.toList());
+ StringBuilder storeNames = new StringBuilder("");
+
+ if (!storeIds.isEmpty()) {
+ List<TStore> stores = shopList.stream().filter(e -> storeIds.contains(e.getId())).collect(Collectors.toList());
+ for (TStore store : stores) {
+ storeNames.append(store.getName()).append(",");
+ }
+ // 去除最后一位
+ StringBuilder res = storeNames.deleteCharAt(storeNames.length() - 1);
+ couponVipResp.setCityOrStore(res.toString());
+ } else {
+ couponVipResp.setCityOrStore("无可用门店");
+ }
+ break;
+ default:
+ break;
+ }
+ couponVipResp.setInstructionsForUse(coupon.getIllustrate());
+ ConponJsonRuleModel ruleModel = new ConponJsonRuleModel();
+ JSONObject jsonObject = JSON.parseObject(coupon.getContent());
+ switch (coupon.getType()) {
+ case 1:
+// 满减券
+ Double num1 = jsonObject.getDouble("conditionalAmount");
+ Double num2 = jsonObject.getDouble("deductionAmount");
+ ruleModel.setConditionalAmount("满" + num1 + "可用");
+ ruleModel.setDeductionAmount("¥ " + num2);
+ ruleModel.setExperienceName("");
+ break;
+ case 2:
+// 代金券
+ Double jsonObjectDouble = jsonObject.getDouble("conditionalAmount");
+ ruleModel.setConditionalAmount("");
+ ruleModel.setDeductionAmount("¥ " + jsonObjectDouble);
+ ruleModel.setExperienceName("");
+ break;
+ case 3:
+// 体验券
+ ruleModel.setConditionalAmount("");
+ ruleModel.setDeductionAmount("");
+ ruleModel.setExperienceName(jsonObject.getString("experienceName"));
+ break;
+ default:
+ break;
+ }
+ couponVipResp.setRuleModel(ruleModel);
+
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ couponVipResp.setEffectiveTime(simpleDateFormat.format(coupon.getEndTime()));
+ couponVipRespList.add(couponVipResp);
+ }
+ vip.setCouponList(couponVipRespList);
+ String ticketJson = vip.getTicketJson();
+ JSONArray ticketJsonArray = JSONArray.parseArray(ticketJson);
+ for (Object o : ticketJsonArray) {
+ JSONObject ticketJsonObject = (JSONObject) o;
+ TicketVipResp ticketVipResp = new TicketVipResp();
+ ticketVipResp.setName(ticketJsonObject.getString("name"));
+ ticketVipResp.setTime(ticketJsonObject.getInteger("time"));
+ ticketVipResp.setCount(ticketJsonObject.getInteger("count"));
+ ticketVipRespList.add(ticketVipResp);
+ }
+ vip.setTicketList(ticketVipRespList);
+ }
+ return list;
+ }
+ @Autowired
+ private IProtocolService protocolService;
+ @ResponseBody
+ @PostMapping("/getAgreement")
+ public String getAgreement() {
+ Protocol one = protocolService.lambdaQuery().eq(Protocol::getType, 6).one();
+ if (one==null){
+ Protocol protocol = new Protocol();
+ protocol.setType(6);
+ protocol.setContent("");
+ protocol.setInsertTime(new Date());
+ protocolService.save( protocol);
+ return "";
+ }else{
+ return one.getContent();
+
+ }
+ }
+
+ @ResponseBody
+ @PostMapping("/getVipByIds")
+ public List<Vip> getVipByIds(@RequestBody String ids) {
+ List<Vip> list = vipService.lambdaQuery().in(Vip::getId, Arrays.asList(ids.split(","))).list();
+ return list;
+ }
+}
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java
new file mode 100644
index 0000000..28e7e41
--- /dev/null
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java
@@ -0,0 +1,18 @@
+package com.dsh.guns.modular.system.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 会员权益明细
+ */
+@Data
+public class VipDetailDto {
+ List<Integer> vipIds;
+ List<Integer> userIds;
+ String store;
+ String site;
+ Integer type;
+ Integer id;
+}
--
Gitblit v1.7.1