liujie
8 小时以前 8f37a2de432a8d4d77f94dcf45d0b86ce3006ee2
Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/PlayPai into 2.0
7个文件已修改
2个文件已添加
311 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/userBenefitDetail/ExchangeDetailsResponse.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/ExchangeDetailsResponse.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
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;
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);
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;
cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java
@@ -19,7 +19,7 @@
    /**
     * 体验券名称
     */
    @ApiModelProperty("体验券名称 ")
    @ApiModelProperty("体验券名称/抵扣券商品名称 ")
    String experienceName;
}
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指定门店可用")
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;
                    }
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TVipDetailController.java
New file
@@ -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;
    }
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/dto/VipDetailDto.java
New file
@@ -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;
}