From e900ccb94046eabeff772f51c9492c3d8cfa2941 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 18 八月 2025 10:40:58 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipController.java | 469 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 469 insertions(+), 0 deletions(-) diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipController.java new file mode 100644 index 0000000..58c4f4e --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipController.java @@ -0,0 +1,469 @@ +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.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.apache.poi.ss.formula.functions.T; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +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("/vip") +public class TVipController extends BaseController { + + @Autowired + private IVipService vipService; + @Autowired + private CouponClient couponClient; + @Autowired + private IStoreService storeService; + private String PREFIX = "/system/vip/"; + + + /** + * 跳转到优惠券管理首页 + */ + @RequestMapping("") + public String index(Model model) { + + return PREFIX + "vip.html"; + } + @RequestMapping("/add") + public String add(Model model) { + + return PREFIX + "vip_add.html"; + } + @RequestMapping("/edit/{id}") + public String edit(@PathVariable("id")Integer id,Model model) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + Vip vip = vipService.getById(id); + model.addAttribute("vip",vip); + if (vip.getCouponJson() != null && !vip.getCouponJson().isEmpty()){ + String couponJson = vip.getCouponJson(); + // 转化为jsonArray + JSONArray couponJsonArray = JSONArray.parseArray(couponJson); + List<Integer> couponIds = new ArrayList<>(); + Map<Integer, Integer> integerIntegerHashMap = new HashMap<>(); + // 收集里面得id + for (Object o : couponJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + Integer couponId = couponJsonObject.getInteger("id"); + Integer count = couponJsonObject.getInteger("value"); + integerIntegerHashMap.put(couponId, count); + couponIds.add(couponId); + } + List<Coupon> coupons = couponClient.queryCouponList(); + + if (!couponIds.isEmpty()){ + coupons = coupons.stream().filter(coupon -> couponIds.contains(coupon.getId())).collect(Collectors.toList()); + for (Coupon coupon : coupons) { + Date startTime = coupon.getStartTime(); + Date endTime = coupon.getEndTime(); + coupon.setTimeValue(simpleDateFormat.format(startTime) + "至" + simpleDateFormat.format(endTime)); + Integer orDefault = integerIntegerHashMap.getOrDefault(coupon.getId(), 0); + coupon.setCount(orDefault); + switch (coupon.getUseScope()){ + case 1: + coupon.setUseScopeValue("全国"); + break; + case 2: + coupon.setUseScopeValue("指定城市"); + break; + case 3: + coupon.setUseScopeValue("指定门店"); + break; + } + switch (coupon.getType()){ + case 1: + coupon.setTypeValue("满减券"); + break; + case 2: + coupon.setTypeValue("代金券"); + break; + case 3: + coupon.setTypeValue("体验券"); + break; + } + switch (coupon.getUserPopulation()){ + case 1: + coupon.setUserPopulationValue("全部用户"); + break; + case 2: + coupon.setUserPopulationValue("会员"); + break; + case 3: + coupon.setUserPopulationValue("已有学员用户"); + break; + } + } + model.addAttribute("couponList", coupons); + }else{ + model.addAttribute("couponList", new ArrayList<Coupon>()); + } + } + if (vip.getTicketJson() != null && !vip.getTicketJson().isEmpty()){ + String ticketJson = vip.getTicketJson(); + // 转化为jsonArray + JSONArray ticketJsonArray = JSONArray.parseArray(ticketJson); + // 收集里面得id + List<TicketDetailVO> ticketDetailVOS = new ArrayList<>(); + + for (Object o : ticketJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + TicketDetailVO ticketDetailVO = new TicketDetailVO(); + ticketDetailVO.setName(couponJsonObject.getString("name")); + ticketDetailVO.setTime(couponJsonObject.getInteger("time")); + ticketDetailVO.setCount(couponJsonObject.getInteger("count")); + ticketDetailVOS.add(ticketDetailVO); + } + model.addAttribute("ticketList", ticketDetailVOS); + } + return PREFIX + "vip_edit.html"; + } + + public static void main(String[] args) { + String temp = "[{\"id\":\"36\",\"value\":\"1\"}]"; + JSONArray couponJsonArray = JSONArray.parseArray(temp); + for (Object o : couponJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + Integer couponId = couponJsonObject.getInteger("id"); + } + } + @RequestMapping("/detail/{id}") + public String detail(@PathVariable("id")Integer id, Model model) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + Vip vip = vipService.getById(id); + model.addAttribute("vip",vip); + if (vip.getCouponJson() != null && !vip.getCouponJson().isEmpty()){ + String couponJson = vip.getCouponJson(); + // 转化为jsonArray + JSONArray couponJsonArray = JSONArray.parseArray(couponJson); + List<Integer> couponIds = new ArrayList<>(); + Map<Integer, Integer> integerIntegerHashMap = new HashMap<>(); + // 收集里面得id + for (Object o : couponJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + Integer couponId = couponJsonObject.getInteger("id"); + Integer count = couponJsonObject.getInteger("value"); + integerIntegerHashMap.put(couponId, count); + couponIds.add(couponId); + } + List<Coupon> coupons = couponClient.queryCouponList(); + + if (!couponIds.isEmpty()){ + coupons = coupons.stream().filter(coupon -> couponIds.contains(coupon.getId())).collect(Collectors.toList()); + for (Coupon coupon : coupons) { + Date startTime = coupon.getStartTime(); + Date endTime = coupon.getEndTime(); + coupon.setTimeValue(simpleDateFormat.format(startTime) + "至" + simpleDateFormat.format(endTime)); + Integer orDefault = integerIntegerHashMap.getOrDefault(coupon.getId(), 0); + coupon.setCount(orDefault); + switch (coupon.getUseScope()){ + case 1: + coupon.setUseScopeValue("全国"); + break; + case 2: + coupon.setUseScopeValue("指定城市"); + break; + case 3: + coupon.setUseScopeValue("指定门店"); + break; + } + switch (coupon.getType()){ + case 1: + coupon.setTypeValue("满减券"); + break; + case 2: + coupon.setTypeValue("代金券"); + break; + case 3: + coupon.setTypeValue("体验券"); + break; + } + switch (coupon.getUserPopulation()){ + case 1: + coupon.setUserPopulationValue("全部用户"); + break; + case 2: + coupon.setUserPopulationValue("会员"); + break; + case 3: + coupon.setUserPopulationValue("已有学员用户"); + break; + } + } + model.addAttribute("couponList", coupons); + }else{ + model.addAttribute("couponList", new ArrayList<Coupon>()); + } + } + if (vip.getTicketJson() != null && !vip.getTicketJson().isEmpty()){ + String ticketJson = vip.getTicketJson(); + // 转化为jsonArray + JSONArray ticketJsonArray = JSONArray.parseArray(ticketJson); + // 收集里面得id + List<TicketDetailVO> ticketDetailVOS = new ArrayList<>(); + + for (Object o : ticketJsonArray) { + JSONObject couponJsonObject = (JSONObject) o; + TicketDetailVO ticketDetailVO = new TicketDetailVO(); + ticketDetailVO.setName(couponJsonObject.getString("name")); + ticketDetailVO.setTime(couponJsonObject.getInteger("time")); + ticketDetailVO.setCount(couponJsonObject.getInteger("count")); + ticketDetailVOS.add(ticketDetailVO); + } + model.addAttribute("ticketList", ticketDetailVOS); + } + + return PREFIX + "vip_detail.html"; + } + /** + * 跳转到门店管理列表页 + */ + @RequestMapping("/couponList") + public String couponList(Model model) { + return PREFIX + "TCoupon.html"; + } + @RequestMapping(value = "/addVipInfo") + @ResponseBody + public ResultUtil addVipInfo(String vipName, Integer time, Integer timeType, String price,String couponJson, String ticketJson) { + Vip vip = new Vip(); + vip.setVipName(vipName); + vip.setTimeType(timeType); + vip.setTime(time); + vip.setPrice(new BigDecimal(price)); + vip.setStatus(1); + vip.setInsertTime(new Date()); + vip.setCouponJson(couponJson); + vip.setTicketJson(ticketJson); + vipService.save(vip); + return ResultUtil.success(); + } + @RequestMapping(value = "/editVipInfo") + @ResponseBody + public ResultUtil addVipInfo(Integer id,String vipName, Integer time, Integer timeType, String price,String couponJson, String ticketJson) { + Vip vip = vipService.getById(id); + vip.setVipName(vipName); + vip.setTimeType(timeType); + vip.setTime(time); + vip.setPrice(new BigDecimal(price)); + vip.setInsertTime(new Date()); + if (couponJson==null){ + couponJson = ""; + } + vip.setCouponJson(couponJson); + if (ticketJson==null){ + ticketJson = ""; + } + vip.setTicketJson(ticketJson); + vipService.updateById(vip); + return ResultUtil.success(); + } + @RequestMapping(value = "/offShelf") + @ResponseBody + public ResultUtil offShelf(Integer id) { + Vip vip = vipService.getById(id); + vip.setStatus(2); + vipService.updateById(vip); + return ResultUtil.success(); + } + @RequestMapping(value = "/onShelf") + @ResponseBody + public ResultUtil onShelf(Integer id) { + Vip vip = vipService.getById(id); + vip.setStatus(1); + vipService.updateById(vip); + return ResultUtil.success(); + } + /** + * 获取 会员卡列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public List<Map<String, Object>> list(String vipName, Integer status) { + 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 maps; + } + + // 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; + } +} -- Gitblit v1.7.1