From abf57596e405226c6701f3ce3b1e902490af713a Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期一, 31 七月 2023 20:24:09 +0800
Subject: [PATCH] 优惠券去掉省、省编号、市、是编号字段,新增优惠券城市列表数据表

---
 cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java                                         |   31 -
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java                |   19 
 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java |   22 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java                         |  109 +++++
 cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java                             |   16 
 cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java                                  |   22 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java                     |   20 +
 cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml                                            |    6 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java                         |    7 
 cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java                                      |   63 +++
 cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java                                     |   66 +++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html              |  145 +++++++
 cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml                                            |    6 
 cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java                                 |    9 
 cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java                         |   27 +
 cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java                           |  151 ++++++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java                             |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java                  |   16 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java                    |   11 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java                               |   17 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java                 |   48 ++
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineList.html              |    0 
 cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java                                |    8 
 cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java                              |   16 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java                        |   15 
 cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java                                     |    2 
 cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html                             |   37 +
 cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java                                     |    7 
 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java                                 |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java                    |   20 +
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java            |  230 +++++------
 31 files changed, 964 insertions(+), 186 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java
new file mode 100644
index 0000000..f5a401a
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/StoreStaffController.java
@@ -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);
+    }
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java
new file mode 100644
index 0000000..3e0eb15
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TStoreStaff.java
@@ -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;
+    }
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java
new file mode 100644
index 0000000..b022e0f
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStoreStaffMapper.java
@@ -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> {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java
new file mode 100644
index 0000000..6a13581
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStoreStaffService.java
@@ -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> {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java
new file mode 100644
index 0000000..8870e98
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStoreStaffServiceImpl.java
@@ -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 {
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java
index a260b46..45794d3 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java
+++ b/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();
         }
diff --git a/cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml b/cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml
new file mode 100644
index 0000000..8b389dc
--- /dev/null
+++ b/cloud-server-account/src/main/resources/mapper/TStoreStaffMapper.xml
@@ -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>
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
index 3156857..8b7b952 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java
+++ b/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;
     }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
index caaf629..8c2e9aa 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java
@@ -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() ));
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
index 02e3e18..6d9629e 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
+++ b/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() {
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java
new file mode 100644
index 0000000..92edd0c
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponCity.java
@@ -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;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java
new file mode 100644
index 0000000..3a55895
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/CityClient.java
@@ -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);
+
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java
new file mode 100644
index 0000000..137fdc0
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/StoreStaffClient.java
@@ -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);
+
+
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java
new file mode 100644
index 0000000..f441fa1
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TCityManager.java
@@ -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;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java
new file mode 100644
index 0000000..d7306fd
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/TStoreStaff.java
@@ -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;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java
index b23ad64..21005db 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java
+++ b/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);
 }
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java
new file mode 100644
index 0000000..1400569
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java
@@ -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;
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java
new file mode 100644
index 0000000..02372f1
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponCityMapper.java
@@ -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> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java
new file mode 100644
index 0000000..f60da6b
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponCityService.java
@@ -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> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java
new file mode 100644
index 0000000..9a51379
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponCityServiceImpl.java
@@ -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 {
+
+}
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml
new file mode 100644
index 0000000..9f0be1e
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/CouponCityMapper.xml
@@ -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>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
index 447b5ae..1157a4c 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
+++ b/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);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java
index a6c52bc..566bbe4 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/Details.java
+++ b/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;
 
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
index e0f8400..0838569 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
+++ b/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);
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
index 059366b..a7a7e02 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponExamineController.java
+++ b/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";
     }
 
+
+
+
 }
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
index 16120ea..236f938 100644
--- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html
+++ b/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>
 @}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html
new file mode 100644
index 0000000..090b1f0
--- /dev/null
+++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineInfo.html
@@ -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>
+@}
diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamine.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineList.html
similarity index 100%
rename from cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamine.html
rename to cloud-server-management/src/main/webapp/WEB-INF/view/system/tCouponExamine/TCouponExamineList.html
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
index 0ee10ba..73540c5 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
+++ b/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<>();
+        }
+    }
+
 
 
 
diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java
index 04c4472..ec672e4 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java
+++ b/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);
diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java
index 92ac86d..82f2394 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java
+++ b/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();
         }

--
Gitblit v1.7.1