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