puzhibing
2023-08-01 276571374e8f0e2be2bdcfc5e8ea4a39af1599bc
Merge remote-tracking branch 'origin/master'
1 文件已重命名
13个文件已修改
17个文件已添加
1150 ■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java 230 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineList.html 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java
New file
@@ -0,0 +1,27 @@
package com.dsh.account.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.account.entity.TCityManager;
import com.dsh.account.entity.TStoreStaff;
import com.dsh.account.feignclient.model.CityListQuery;
import com.dsh.account.service.TStoreStaffService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("")
public class StoreStaffController {
    @Resource
    private TStoreStaffService tsstaService;
    @ResponseBody
    @PostMapping("/base/storeStaff/infoById")
    public TStoreStaff baseInfo(@RequestBody Integer id){
        return tsstaService.getById(id);
    }
}
cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java
New file
@@ -0,0 +1,63 @@
package com.dsh.account.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * <p>
 * 门店员工
 * </p>
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_store_staff")
public class TStoreStaff extends Model<TStoreStaff> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 名称
     */
    @TableField("name")
    private String name;
    /**
     * 手机号
     */
    @TableField("phone")
    private Integer phone;
    /**
     * 密码
     */
    @TableField("password")
    private Integer password;
    /**
     * 所属门店id
     */
    @TableField("storeId")
    private Integer storeId;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("state")
    private Integer state;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java
New file
@@ -0,0 +1,8 @@
package com.dsh.account.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.entity.TStoreStaff;
public interface TStoreStaffMapper extends BaseMapper<TStoreStaff> {
}
cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.account.entity.TStoreStaff;
/**
 * <p>
 * 教练 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-07-05
 */
public interface TStoreStaffService extends IService<TStoreStaff> {
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.account.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.entity.TStoreStaff;
import com.dsh.account.mapper.TStoreStaffMapper;
import com.dsh.account.service.TStoreStaffService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 教练 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-07-05
 */
@Service
public class TStoreStaffServiceImpl extends ServiceImpl<TStoreStaffMapper, TStoreStaff> implements TStoreStaffService {
}
cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java
@@ -189,7 +189,7 @@
     * @param endLonLat   结束经纬度(目标经纬度)
     * @return java.lang.Long 两个定位点之间的距离
     */
    public String getDistanceTOKilometer(String startLonLat, String endLonLat) {
    public double getDistanceTOKilometer(String startLonLat, String endLonLat) {
        try {
            // 返回起始地startAddr与目的地endAddr之间的距离,单位:米
            Long result = new Long(0);
@@ -200,11 +200,12 @@
            String queryResult = getResponse(queryUrl);
            JSONObject job = JSONObject.parseObject(queryResult);
            JSONArray ja = job.getJSONArray("results");
            if (ja.size() == 0){
                return 0.00;
            }
            JSONObject jobO = JSONObject.parseObject(ja.getString(0));
            result = Long.parseLong(jobO.get("distance").toString());
            double kilDis = (double) result / 1000;
            DecimalFormat decimalFormat = new DecimalFormat("#.00");
            return decimalFormat.format(kilDis);
            return (double) result / 1000;
        } catch (Exception e) {
            throw new RuntimeException();
        }
cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.account.mapper.TStoreStaffMapper">
</mapper>
cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
@@ -1,15 +1,27 @@
package com.dsh.activity.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.feignclient.account.CityClient;
import com.dsh.activity.feignclient.account.StoreStaffClient;
import com.dsh.activity.feignclient.account.model.TCityManager;
import com.dsh.activity.feignclient.account.model.TStoreStaff;
import com.dsh.activity.feignclient.model.CouponExamineListSearch;
import com.dsh.activity.feignclient.model.CouponListOfSearch;
import com.dsh.activity.feignclient.other.StoreClient;
import com.dsh.activity.feignclient.other.model.Store;
import com.dsh.activity.model.CouponListVo;
import com.dsh.activity.model.request.CommodityRequest;
import com.dsh.activity.model.request.CouponPackageReq;
import com.dsh.activity.model.response.CouponPackageResp;
import com.dsh.activity.service.CouponCityService;
import com.dsh.activity.service.CouponStoreService;
import com.dsh.activity.service.ICouponService;
import com.dsh.activity.service.UserCouponService;
import com.dsh.activity.util.GDMapGeocodingUtil;
@@ -22,8 +34,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
@@ -45,6 +59,21 @@
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
    @Resource
    private CityClient citClient;
    @Resource
    private StoreStaffClient stoStaClient;
    @Resource
    private StoreClient stoClient;
    @Resource
    private CouponStoreService couStoreService;
    @Resource
    private CouponCityService cityService;
@@ -139,8 +168,17 @@
                Iterator<Coupon> iterator = couponList.iterator();
                while (iterator.hasNext()) {
                    Coupon merchandise = iterator.next();
                    if (merchandise.getUseScope() == 2 && (!Objects.equals(merchandise.getCityCode(), cityCode) && !Objects.equals(merchandise.getProvinceCode(), provinceCode))) {
                        iterator.remove(); // 移除符合条件的商品
                    if (merchandise.getUseScope() == 2){
                        List<CouponCity> couponCities = cityService.list(new LambdaQueryWrapper<CouponCity>()
                                .eq(CouponCity::getCouponId,merchandise.getId()));
                        if (couponCities.size() > 0){
                            for (CouponCity couponCity : couponCities) {
                                if (!Objects.equals(couponCity.getCityCode(), cityCode) && !Objects.equals(couponCity.getProvinceCode(), provinceCode)){
                                    iterator.remove(); // 移除符合条件的商品
                                    break;
                                }
                            }
                        }
                    }
                }
            }
@@ -192,6 +230,13 @@
                Object startTime = stringObjectMap.get("startTime");
                Object endTime = stringObjectMap.get("endTime");
                stringObjectMap.put("timeValue",startTime + "至"+endTime);
                Integer publisherType = (Integer) stringObjectMap.get("publisherType");
                if ( publisherType == 1) {
                    Integer cityManagerId = (Integer) stringObjectMap.get("cityManagerId");
                    TCityManager byId = citClient.getById(cityManagerId);
                    stringObjectMap.put("province", byId.getProvince());
                    stringObjectMap.put("city", byId.getCity());
                }
            }
        }
        return mapList;
@@ -204,25 +249,105 @@
        Coupon coupon = couponService.getById(id);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        if (ToolUtil.isNotEmpty(coupon)){
            couponInfo.put("",coupon.getId());
            couponInfo.put("",coupon.getName());
            couponInfo.put("",coupon.getAuditStatus());
            couponInfo.put("",coupon.getProvince());
            couponInfo.put("",coupon.getCity());
            couponInfo.put("",coupon.getType());
            couponInfo.put("",coupon.getContent());
            couponInfo.put("",coupon.getIllustrate());
            couponInfo.put("",coupon.getDistributionMethod());
            couponInfo.put("",coupon.getRedemptionMethod());
            couponInfo.put("id",coupon.getId());
            couponInfo.put("auditStatus",coupon.getAuditStatus());
            couponInfo.put("publisherType",coupon.getPublisherType());
            if (coupon.getPublisherType() == 1){
                TCityManager byId = citClient.getById(coupon.getCityManagerId());
                couponInfo.put("province",byId.getProvince());
                couponInfo.put("city",byId.getCity());
            }
            couponInfo.put("name",coupon.getName());
            couponInfo.put("type",coupon.getType());
            JSONObject jsonObject = JSON.parseObject(coupon.getContent());
            switch (coupon.getType()){
                case 1:
                    couponInfo.put("num1",jsonObject.getDouble("num1"));
                    couponInfo.put("num2",jsonObject.getDouble("num2"));
                    break;
                case 2:
                    couponInfo.put("num1",jsonObject.getDouble("num1"));
                    break;
                case 3:
                    couponInfo.put("num1",jsonObject.getString("num1"));
                    break;
                default:
                    break;
            }
            couponInfo.put("illustrate",coupon.getIllustrate());
            switch (coupon.getDistributionMethod()){
                case 1:
                    couponInfo.put("distributionMethod","积分注册");
                    break;
                case 2:
                    couponInfo.put("distributionMethod","注册赠送");
                    break;
                case 3:
                    couponInfo.put("distributionMethod","自动发券");
                    break;
                default:
                    break;
            }
            couponInfo.put("redemptionMethod",coupon.getRedemptionMethod());
            couponInfo.put("integral",coupon.getIntegral());
            couponInfo.put("cash",coupon.getCash());
            couponInfo.put("userPopulation",coupon.getUserPopulation());
            switch (coupon.getUserPopulation()){
                case 1:
                    couponInfo.put("userPopulation","全部用户");
                    break;
                case 2:
                    couponInfo.put("userPopulation","年度会员");
                    break;
                case 3:
                    couponInfo.put("userPopulation","已有学员用户");
                    break;
                default:
                    break;
            }
            couponInfo.put("quantityIssued",coupon.getQuantityIssued());
            couponInfo.put("pickUpQuantity",coupon.getPickUpQuantity());
            String startTime = simpleDateFormat.format(coupon.getStartTime());
            String endTime = simpleDateFormat.format(coupon.getEndTime());
            couponInfo.put("timeValue",startTime + "至"+endTime);
            couponInfo.put("useScope",coupon.getUseScope());
            ArrayList<Map<String, Object>> maps = new ArrayList<>();
            switch (coupon.getUseScope()){
                case 2:
                    List<CouponCity> couponCities = cityService.list(new LambdaQueryWrapper<CouponCity>()
                            .eq(CouponCity::getCouponId,coupon.getId()));
                    if (couponCities.size() > 0){
                        for (CouponCity couponCity : couponCities) {
                            HashMap<String, Object> stringObjectHashMap = new HashMap<>();
                            stringObjectHashMap.put("province",couponCity.getProvince());
                            stringObjectHashMap.put("city",couponCity.getCity());
                            maps.add(stringObjectHashMap);
                        }
                        couponInfo.put("rangeData",maps);
                    }
                    break;
                case 3:
                    List<CouponStore> list = couStoreService.list(new LambdaQueryWrapper<CouponStore>()
                            .eq(CouponStore::getCouponId,coupon.getId()));
                    if (list.size() > 0){
                        List<Integer> collect = list.stream().map(CouponStore::getStoreId).collect(Collectors.toList());
                        List<Store> storeList = stoClient.queryStoreByIds(collect);
                        if (storeList.size() > 0){
                            for (Store store : storeList) {
                                TStoreStaff list1 = stoStaClient.baseInfo(store.getStoreStaffId());
                                HashMap<String, Object> stringObjectHashMap = new HashMap<>();
                                stringObjectHashMap.put("procity",store.getProvince()+store.getCity());
                                stringObjectHashMap.put("storeAccount",list1.getName()+"+"+list1.getPhone());
                                stringObjectHashMap.put("storeName",store.getName());
                                maps.add(stringObjectHashMap);
                            }
                            couponInfo.put("rangeData",maps);
                        }
                    }
                    break;
                default:
                    break;
            }
        }
        return couponInfo;
    }
cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -1,6 +1,7 @@
package com.dsh.activity.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.*;
import com.dsh.activity.feignclient.course.CoursePackageClient;
@@ -22,6 +23,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -63,6 +65,9 @@
    @Autowired
    private TokenUtil tokenUtil;
    @Resource
    private CouponCityService ccityService;
    @PostMapping("/base/pointMerchars/convertGoods")
@@ -267,7 +272,11 @@
                if (coupon.getUseScope() == 1){
                    detailsVo.setBelongs("全国通用");
                }else if (coupon.getUseScope() == 2){
                    detailsVo.setBelongs(coupon.getProvince()+"|"+coupon.getCity() + "用户可用");
                    List<CouponCity> list = ccityService.list(new LambdaQueryWrapper<CouponCity>()
                            .eq(CouponCity::getCouponId, coupon.getId()));
                    if (list.size() > 0){
                        detailsVo.setBelongs(list.get(0).getProvince()+"|"+list.get(0).getCity() + "用户可用");
                    }
                }else {
                    List<CouponStore> list = cstoreService.list(new QueryWrapper<CouponStore>()
                            .eq("couponId",coupon.getId() ));
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
@@ -108,26 +108,6 @@
    @TableField("useScope")
    private Integer useScope;
    /**
     * 省
     */
    @TableField("province")
    private String province;
    /**
     * 省编号
     */
    @TableField("provinceCode")
    private String provinceCode;
    /**
     * 市
     */
    @TableField("city")
    private String city;
    /**
     * 市编号
     */
    @TableField("cityCode")
    private String cityCode;
    /**
     * 审核状态(1=待审核,2=已通过,3=已拒绝)
     */
    @TableField("auditStatus")
@@ -168,7 +148,16 @@
     */
    @TableField("productImages")
    private String productImages;
    /**
     * 发布人类型 1=城市管理者 2=平台管理者
     */
    @TableField("publisherType")
    private Integer publisherType;
    /**
     * 城市管理者id
     */
    @TableField("cityManagerId")
    private Integer cityManagerId;
    @Override
    protected Serializable pkVal() {
cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java
New file
@@ -0,0 +1,66 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * <p>
 * 优惠券使用门店关系数据
 * </p>
 *
 * @author jqs
 * @since 2023-07-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_coupon_city")
public class CouponCity extends Model<CouponCity> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 优惠券id
     */
    private Integer couponId;
    /**
     * 省
     */
    @TableField("province")
    private String province;
    /**
     * 省编号
     */
    @TableField("provinceCode")
    private String provinceCode;
    /**
     * 市
     */
    @TableField("city")
    private String city;
    /**
     * 市编号
     */
    @TableField("cityCode")
    private String cityCode;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java
New file
@@ -0,0 +1,15 @@
package com.dsh.activity.feignclient.account;
import com.dsh.activity.feignclient.account.model.TCityManager;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient("mb-cloud-account")
public interface CityClient {
    @PostMapping("/base/city/getById")
    TCityManager getById(Integer id);
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.feignclient.account;
import com.dsh.activity.feignclient.account.model.TStoreStaff;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient("mb-cloud-account")
public interface StoreStaffClient {
    @PostMapping("/base/storeStaff/infoById")
    TStoreStaff baseInfo(Integer id);
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java
New file
@@ -0,0 +1,19 @@
package com.dsh.activity.feignclient.account.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
public class TCityManager {
    private Integer id;
    private String name;
    private String phone;
    private String password;
    private String province;
    private String provinceCode;
    private String city;
    private String cityCode;
    private Integer state;
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java
New file
@@ -0,0 +1,48 @@
package com.dsh.activity.feignclient.account.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * <p>
 * 门店员工
 * </p>
 */
@Data
public class TStoreStaff {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 名称
     */
    private String name;
    /**
     * 手机号
     */
    private Integer phone;
    /**
     * 密码
     */
    private Integer password;
    /**
     * 所属门店id
     */
    private Integer storeId;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java
@@ -1,9 +1,12 @@
package com.dsh.activity.feignclient.other;
import com.dsh.activity.feignclient.other.model.Store;
import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(value = "mb-cloud-other")
public interface StoreClient {
@@ -11,4 +14,8 @@
    @PostMapping("/base/protocol/storeDetail/courseOfSto")
    StoreDetailOfCourse getCourseOfStore(@RequestParam("storeId") Integer storeId);
    @PostMapping("/store/queryStoreByIds")
    List<Store> queryStoreByIds(List<Integer> ids);
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java
New file
@@ -0,0 +1,109 @@
package com.dsh.activity.feignclient.other.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 * 门店信息
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Data
public class Store {
    /**
     * 主键
     */
    private Integer id;
    /**
     * 门店名称
     */
    private String name;
    /**
     * 门店店长id
     */
    private Integer storeStaffId;
    /**
     * 城市管理员id
     */
    private Integer cityManagerId;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    @TableField("cityCode")
    private String cityCode;
    /**
     * 联系电话
     */
    private String phone;
    /**
     * 详细地址
     */
    private String address;
    /**
     * 纬度
     */
    private String lat;
    /**
     * 经度
     */
    private String lon;
    /**
     * 营业开始时间
     */
    private String startTime;
    /**
     * 营业结束时间
     */
    private String endTime;
    /**
     * 封面图
     */
    private String coverDrawing;
    /**
     * 实景图
     */
    private String realPicture;
    /**
     * 门店介绍
     */
    private String introduce;
    /**
     * 福利图片
     */
    private String welfarePicture;
    /**
     * 评分
     */
    private BigDecimal score;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
}
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java
New file
@@ -0,0 +1,17 @@
package com.dsh.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.CouponCity;
import com.dsh.activity.entity.CouponStore;
/**
 * <p>
 * 优惠券使用门店关系数据 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-07-07
 */
public interface CouponCityMapper extends BaseMapper<CouponCity> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.CouponCity;
/**
 * <p>
 * 优惠券使用门店关系数据 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-07-07
 */
public interface CouponCityService extends IService<CouponCity> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.CouponCity;
import com.dsh.activity.mapper.CouponCityMapper;
import com.dsh.activity.service.CouponCityService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 优惠券使用门店关系数据 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-07-07
 */
@Service
public class CouponCityServiceImpl extends ServiceImpl<CouponCityMapper, CouponCity> implements CouponCityService {
}
cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.activity.mapper.CouponCityMapper">
</mapper>
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
@@ -34,5 +34,5 @@
    Store queryStoreById(Integer id);
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo);
    String calculateDistance(@RequestBody GetDistanceVo distanceVo);
}
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java
@@ -39,7 +39,7 @@
    private Integer status;
    @ApiModelProperty(value = "门店距离")
    private long storeDistance;
    private String storeDistance;
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -82,16 +82,6 @@
                    if (integer >= maxSubscribeNumber){
                        continue;
                    }
                    /**
                     * [{
                     *     "startDate": "2023-01-01 00:00:00",
                     *     "endDate": "2023-12-31 23:59:59",
                     *     "startTime": "02:00:00",
                     *     "endTime": "23:00:00",
                     *     "weeks": [1, 2, 7],
                     *     "cashPayment": 100
                     * }]
                     */
                    try {
                        JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
                        JSONObject jsonObject = jsonArray.getJSONObject(0);
@@ -139,7 +129,8 @@
                                distanceVo.setLatitude(lat);
                                distanceVo.setLongitude(lon);
                                distanceVo.setStoreId(coursePackage.getStoreId());
                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
                                String s = sreClient.calculateDistance(distanceVo);
                                resde.setStoreDistance(s);
                                list.add(resde);
                            }
                        }
@@ -183,123 +174,116 @@
                        e.printStackTrace();
                    }
                }
            } else {
                tCoursePackageDiscountQueryWrapper.eq("type", 4);
                tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
                if (tCoursePackageDiscounts.size() > 0) {
                    for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
                        TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
            }
        }else {
            tCoursePackageDiscountQueryWrapper.eq("type", 4);
            tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
            if (tCoursePackageDiscounts.size() > 0) {
                for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
                    TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
//                    判断预约人数是否已满
                        Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
                        Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
                                .eq("appUserId",appUserId )
                                .eq("status",1));
                        if (integer >= maxSubscribeNumber){
                            continue;
                        }
//                    [{
//                        "startDate": "2023-01-01 00:00:00",
//                        "endDate": "2023-12-31 23:59:59",
//                        "startTime": "02:00:00",
//                        "endTime": "23:00:00",
//                        "weeks": [1, 2, 7],
//                        "hour": 10
//                    }]
                    Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
                    Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
                            .eq("appUserId",appUserId )
                            .eq("status",1));
                    if (integer >= maxSubscribeNumber){
                        continue;
                    }
                    try {
                        JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
                        JSONObject jsonObject = jsonArray.getJSONObject(0);
                        Date parse1 = null;
                        Date parse2 = null;
                        String startDate = jsonObject.getString("startDate");
                        String endDate = jsonObject.getString("endDate");
                        try {
                            JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
                            JSONObject jsonObject = jsonArray.getJSONObject(0);
                            Date parse1 = null;
                            Date parse2 = null;
                            String startDate = jsonObject.getString("startDate");
                            String endDate = jsonObject.getString("endDate");
                            try {
                                parse1 = simpleDateFormat.parse(startDate);
                                parse2 = simpleDateFormat.parse(endDate);
                            } catch (ParseException e) {
                                throw new RuntimeException(e);
                            }
                            List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class);
                            Integer cashPayment = jsonObject.getInteger("hour");
                            Date tomorrowDate = null;
                            if (weekStr != 7) {
                                Calendar calendar = Calendar.getInstance();
                                calendar.setTime(localTime);
                                calendar.add(Calendar.DAY_OF_WEEK, 1);
                                tomorrowDate = calendar.getTime();
                            }
                            boolean isWithinRange = false;
                            if (weeks.contains(weekStr)) {
                                isWithinRange = true;
                            }
                            if (isWithinRange) {
                                // 判断当前日期是否在开始时间和结束时间范围内
                                if (isDateWithinRange(localTime, parse1, parse2)) {
                                    Details resde = new Details();
                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                    resde.setImage(coursePackage.getCoverDrawing());
                                    resde.setCoursePackageName(coursePackage.getName());
                                    CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
                                    resde.setCourseHours(paymentConfig.getClassHours());
                                    resde.setDonateHours(cashPayment);
                                    resde.setDataTime("今日");
                                    resde.setDate(localTime);
                                    resde.setOriginalPrice(paymentConfig.getCashPayment());
                                    resde.setStatus(1);
                                    GetDistanceVo distanceVo = new GetDistanceVo();
                                    distanceVo.setLatitude(lat);
                                    distanceVo.setLongitude(lon);
                                    distanceVo.setStoreId(coursePackage.getStoreId());
                                    resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
                                    list.add(resde);
                                }
                            }
                            Calendar tempCalendar = Calendar.getInstance();
                            tempCalendar.setTime(localTime);
                            tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
                            while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
                                Date tempDate = tempCalendar.getTime();
                                int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
                                if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
                                    Details resde = new Details();
                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                    resde.setImage(coursePackage.getCoverDrawing());
                                    resde.setCoursePackageName(coursePackage.getName());
                                    CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
                                    resde.setCourseHours(paymentConfig.getClassHours());
                                    resde.setDonateHours(cashPayment);
                                    String weekOfDate = "";
                                    if (weekStr != 7 && tempDate.equals(tomorrowDate)) {
                                        weekOfDate = "明日";
                                    } else {
                                        weekOfDate = DateTimeHelper.getWeekOfDate(tempDate);
                                    }
                                    resde.setDataTime(weekOfDate);
                                    resde.setDate(tempDate);
                                    resde.setOriginalPrice(paymentConfig.getCashPayment());
                                    resde.setStatus(2);
                                    GetDistanceVo distanceVo = new GetDistanceVo();
                                    distanceVo.setLatitude(lat);
                                    distanceVo.setLongitude(lon);
                                    distanceVo.setStoreId(coursePackage.getStoreId());
                                    resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
                                    list.add(resde);
                                }
                                tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                            parse1 = simpleDateFormat.parse(startDate);
                            parse2 = simpleDateFormat.parse(endDate);
                        } catch (ParseException e) {
                            throw new RuntimeException(e);
                        }
                        List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class);
                        Integer cashPayment = jsonObject.getInteger("hour");
                        Date tomorrowDate = null;
                        if (weekStr != 7) {
                            Calendar calendar = Calendar.getInstance();
                            calendar.setTime(localTime);
                            calendar.add(Calendar.DAY_OF_WEEK, 1);
                            tomorrowDate = calendar.getTime();
                        }
                        boolean isWithinRange = false;
                        if (weeks.contains(weekStr)) {
                            isWithinRange = true;
                        }
                        if (isWithinRange) {
                            // 判断当前日期是否在开始时间和结束时间范围内
                            if (isDateWithinRange(localTime, parse1, parse2)) {
                                Details resde = new Details();
                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                resde.setImage(coursePackage.getCoverDrawing());
                                resde.setCoursePackageName(coursePackage.getName());
                                CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
                                resde.setCourseHours(paymentConfig.getClassHours());
                                resde.setDonateHours(cashPayment);
                                resde.setDataTime("今日");
                                resde.setDate(localTime);
                                resde.setOriginalPrice(paymentConfig.getCashPayment());
                                resde.setStatus(1);
                                GetDistanceVo distanceVo = new GetDistanceVo();
                                distanceVo.setLatitude(lat);
                                distanceVo.setLongitude(lon);
                                distanceVo.setStoreId(coursePackage.getStoreId());
                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
                                list.add(resde);
                            }
                        }
                        Calendar tempCalendar = Calendar.getInstance();
                        tempCalendar.setTime(localTime);
                        tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
                        while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
                            Date tempDate = tempCalendar.getTime();
                            int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
                            if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
                                Details resde = new Details();
                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                resde.setImage(coursePackage.getCoverDrawing());
                                resde.setCoursePackageName(coursePackage.getName());
                                CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
                                resde.setCourseHours(paymentConfig.getClassHours());
                                resde.setDonateHours(cashPayment);
                                String weekOfDate = "";
                                if (weekStr != 7 && tempDate.equals(tomorrowDate)) {
                                    weekOfDate = "明日";
                                } else {
                                    weekOfDate = DateTimeHelper.getWeekOfDate(tempDate);
                                }
                                resde.setDataTime(weekOfDate);
                                resde.setDate(tempDate);
                                resde.setOriginalPrice(paymentConfig.getCashPayment());
                                resde.setStatus(2);
                                GetDistanceVo distanceVo = new GetDistanceVo();
                                distanceVo.setLatitude(lat);
                                distanceVo.setLongitude(lon);
                                distanceVo.setStoreId(coursePackage.getStoreId());
                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
                                list.add(resde);
                            }
                            tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        System.out.println("list"+list);
        return list;
    }
@@ -323,8 +307,8 @@
        distanceVo.setLatitude(lat);
        distanceVo.setLongitude(lon);
        distanceVo.setStoreId(coursePackage.getStoreId());
        long l = sreClient.calculateDistance(distanceVo);
        packageResponse.setDistance(l);
        String s = sreClient.calculateDistance(distanceVo);
        packageResponse.setDistance(Double.valueOf(s));
        JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent());
        JSONObject jsonObject = jsonArray.getJSONObject(0);
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
@@ -35,7 +35,7 @@
     */
    @RequestMapping("")
    public String index(Model model) {
        return PREFIX + "TCouponExamine.html";
        return PREFIX + "TCouponExamineList.html";
    }
@@ -54,15 +54,7 @@
        ofSearch.setDistributionMethod(distributionMethod);
        ofSearch.setUserPopulation(userPopulation);
        ofSearch.setAuditStatus(auditStatus);
        List<Map<String, Object>> couponExamineListOfSearch = client.getCouponExamineListOfSearch(ofSearch);
        if (couponExamineListOfSearch.size() > 0){
            for (Map<String, Object> examineListOfSearch : couponExamineListOfSearch) {
                examineListOfSearch.put("province","");
                examineListOfSearch.put("city","");
                examineListOfSearch.put("account","");
            }
        }
        return couponExamineListOfSearch;
        return client.getCouponExamineListOfSearch(ofSearch);
    }
    /**
@@ -70,9 +62,13 @@
     */
    @RequestMapping(value = "/couponOfDetail/{id}")
    @ResponseBody
    public Object detailOfCoupon(@PathVariable Integer id){
        Map<String,Object> couponMap = client.queryCouponExamineDetail(id);
        return null;// TODO: 2023/7/31
    public String detailOfCoupon(@PathVariable Integer id, Model model){
        Map<String, Object> stringObjectMap = client.queryCouponExamineDetail(id);
        model.addAllAttributes(stringObjectMap);
        return PREFIX + "TCouponExamineInfo.html";
    }
}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
@@ -12,6 +12,7 @@
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-5">
                    <div class="form-group">
@@ -51,6 +52,7 @@
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-5">
                    <div class="form-group">
@@ -62,6 +64,7 @@
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-5">
                    <div class="form-group">
@@ -109,6 +112,7 @@
                    </div>
                </div>
            </div>
            <div class="row" id="needIntegral">
                <div class="col-sm-5">
                    <div class="form-group">
@@ -136,6 +140,7 @@
                    </div>
                </div>
            </div>
            <div class="row" >
                <div class="col-sm-5">
                    <div class="form-group">
@@ -153,6 +158,7 @@
                    </div>
                </div>
            </div>
            <div class="row" >
                <div class="col-sm-5">
                    <div class="form-group">
@@ -161,6 +167,7 @@
                    </div>
                </div>
            </div>
            <div class="row" >
                <div class="col-sm-5">
                    <div class="form-group">
@@ -168,14 +175,15 @@
                    </div>
                </div>
            </div>
            <div class="row" >
                <div class="col-sm-5">
                    <div class="form-group">
                        <label class="col-sm-3 control-label"><font  style="color:red">*</font>商品图片(请上传不超过五张图片): </label>
                        <input id="file-1" type="file" multiple class="file" data-overwrite-initial="false">
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-sm-5">
@@ -213,7 +221,6 @@
                </div>
            </div>
            <div class="row" id="storeSelect">
                <div class="col-sm-5">
                    <div class="form-group">
@@ -239,7 +246,6 @@
                </div>
            </div>
            <div class="row">
                <div class="row btn-group-m-t">
                    <div class="col-sm-10" style="margin-left: 20%;">
@@ -257,6 +263,11 @@
    </div>
</div>
<script src="${ctxPath}/modular/system/tCoupon/TCouponInfo.js"></script>
<!--引入fileinput样式-->
<link href="https://cdn.bootcss.com/bootstrap-fileinput/4.5.1/css/fileinput.min.css" rel="stylesheet">
<!--引入fileinput插件-->
<script src="https://cdn.bootcss.com/bootstrap-fileinput/4.5.1/js/fileinput.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap-fileinput/4.5.1/js/locales/zh.min.js"></script>
<script type="text/javascript">
    laydate.render({
        elem: '#periodOfValidity',
@@ -264,4 +275,24 @@
        range: true
    });
</script>
<script>
    $("#file-1").fileinput({
        overwriteInitial: false,
        previewFileType: "image",
        allowedFileExtensions: ["jpg", "png", "gif"],
        maxFileSize: 1024 * 10,
        maxFilesNum: 10,
        showUploadedThumbs: false,
        resizeImage: true,
        language: "zh",
        initialPreview: [
            "<img src='http://placehold.it/200x150' class='file-preview-image' alt='不支持预览'/>",
            "<img src='http://placehold.it/200x150' class='file-preview-image' alt='不支持预览'/>"
        ],
        initialPreviewConfig: [
            {caption: "image-1.jpg", size: 327360, width: "120px", url: "/images/delete", key: 1},
            {caption: "image-2.png", size: 436389, width: "120px", url: "/images/delete", key: 2}
        ]
    });
</script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html
New file
@@ -0,0 +1,145 @@
@layout("/common/_container.html"){
<div class="ibox float-e-margins">
  <div class="ibox-content">
    <div class="form-horizontal">
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>当前状态: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布省: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布城市: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>优惠券名称: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>优惠券类型: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">满减券:满</label>
              <input value="${num1}">
              <label style="color: red">元,减</label>
              <input value="${num2}">
              <label style="color: red">元</label>
            </div>
            <div class="col-sm-9">
              <label style="color: #c0a16b">代金券:可抵</label>
              <input value="${num1}">
              <label style="color: red">元</label>
            </div>
            <div class="col-sm-9">
              <label style="color: #c0a16b">优惠券:满</label>
              <input value="${num1}">
              <label style="color: red">元,减</label>
              <input>
              <label style="color: red">元</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布城市: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布城市: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布城市: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-5">
          <div class="form-group">
            <label class="col-sm-3 control-label"><font  style="color:red">*</font>发布城市: </label>
            <div class="col-sm-9">
              <label style="color: #c0a16b">待审核</label>
              <label style="color: red">未通过</label>
            </div>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="row btn-group-m-t">
          <div class="col-sm-10" style="margin-left: 20%;">
            <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser"
            clickFun="couponInfoDlg.close()"/>
          </div>
          <div class="col-sm-10" style="margin-left: 35%;margin-top: -2.5%">
            <#button btnCss="info" name="保存" id="ensure" icon="fa-check"
            clickFun="couponInfoDlg.addSubmit()"/>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<script src="${ctxPath}/modular/system/tCouponExamine/TCouponExamine.js"></script>
@}
cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineList.html
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
@@ -1,6 +1,7 @@
package com.dsh.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.Store;
import com.dsh.other.feignclient.model.*;
@@ -89,12 +90,11 @@
     * @return
     */
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo){
    public String calculateDistance(@RequestBody GetDistanceVo distanceVo){
        String current = distanceVo.getLongitude()+","+distanceVo.getLatitude();
        Store store = storeService.getById(distanceVo.getStoreId());
        String result = store.getLon()+","+store.getLat();
        String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
        return Long.parseLong(distanceTOKilometer);
        return gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
    }
@@ -149,6 +149,22 @@
    }
    /**
     * 获取门店列表
     * @return
     */
    @ResponseBody
    @PostMapping("/store/queryStoreByIds")
    public List<Store> queryStoreByIds(List<Integer> ids){
        try {
            return storeService.list(new LambdaQueryWrapper<Store>()
                    .in(Store::getId,ids));
        }catch (Exception e){
            e.printStackTrace();
            return new ArrayList<>();
        }
    }
cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java
@@ -23,7 +23,7 @@
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo);
    double calculateDistance(@RequestBody GetDistanceVo distanceVo);
    @PostMapping("/base/protocol/storeDetail/citycodeLoLa")
    List<StoreDetailList> getQueryStoreList(@RequestBody StoreOfCitycodeResp citycodeResp);
cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java
@@ -199,11 +199,14 @@
            String queryResult = getResponse(queryUrl);
            JSONObject job = JSONObject.parseObject(queryResult);
            JSONArray ja = job.getJSONArray("results");
            if (ja.size() == 0){
                return 0.00 + "";
            }
            JSONObject jobO = JSONObject.parseObject(ja.getString(0));
            result = Long.parseLong(jobO.get("distance").toString());
            double kilDis = (double) result / 1000;
            DecimalFormat decimalFormat = new DecimalFormat("#.00");
            return decimalFormat.format(kilDis);
            double demo = result / 1000;
            return decimalFormat.format(demo);
        } catch (Exception e) {
            throw new RuntimeException();
        }