Forráskód Böngészése

合并代码到sit

qxy 2 hete
szülő
commit
eb709cad80
17 módosított fájl, 610 hozzáadás és 15 törlés
  1. 3 3
      alien-entity/src/main/java/shop/alien/entity/store/dto/StoreInfoDto.java
  2. 4 0
      alien-entity/src/main/java/shop/alien/entity/store/excelVo/StoreInfoExcelVo.java
  3. 4 0
      alien-entity/src/main/java/shop/alien/entity/store/vo/StoreCommentVo.java
  4. 6 0
      alien-entity/src/main/java/shop/alien/entity/store/vo/StoreInfoVo.java
  5. 177 0
      alien-entity/src/main/java/shop/alien/mapper/LifeCouponMapper.java
  6. 13 0
      alien-entity/src/main/java/shop/alien/mapper/StoreCommentMapper.java
  7. 23 0
      alien-entity/src/main/java/shop/alien/mapper/TagsMainMapper.java
  8. 1 0
      alien-lawyer/src/main/java/shop/alien/lawyer/controller/OrderReviewController.java
  9. 1 0
      alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerClientConsultationOrderServiceImpl.java
  10. 29 0
      alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java
  11. 17 0
      alien-store/src/main/java/shop/alien/store/controller/LifeCouponController.java
  12. 73 10
      alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java
  13. 7 0
      alien-store/src/main/java/shop/alien/store/service/LifeCouponService.java
  14. 18 0
      alien-store/src/main/java/shop/alien/store/service/StoreInfoService.java
  15. 5 0
      alien-store/src/main/java/shop/alien/store/service/impl/LifeCouponServiceImpl.java
  16. 4 2
      alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponServiceImpl.java
  17. 225 0
      alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

+ 3 - 3
alien-entity/src/main/java/shop/alien/entity/store/dto/StoreInfoDto.java

@@ -186,9 +186,9 @@ public class StoreInfoDto {
     @ApiModelProperty(value = "分类名称")
     private String businessClassifyName;
 
-    @ApiModelProperty(value = "分类id(词典表 键为 business_classify)")
-    @TableField("business_classify")
-    private String businessClassify;
+
+    @ApiModelProperty(value = "分类id(词典表 键为 business_classify)(多个ID用逗号拼接)")
+    private List<String> businessClassify;
 
     @ApiModelProperty(value = "是否提供餐食 0=不提供  1=提供")
     @TableField("meal_provided")

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/excelVo/StoreInfoExcelVo.java

@@ -44,6 +44,10 @@ public class StoreInfoExcelVo {
     @ApiModelProperty(value = "经营种类")
     private String businessTypesName;
 
+    @ExcelHeader("经营分类")
+    @ApiModelProperty(value = "经营分类")
+    private String businessClassifyName;
+
     @ExcelHeader(value = "详细地址")
     @ApiModelProperty(value = "详细地址")
     private String storeAddress;

+ 4 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreCommentVo.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import shop.alien.entity.store.StoreComment;
+import shop.alien.entity.store.StoreImg;
 
 import java.util.List;
 
@@ -65,4 +66,7 @@ public class StoreCommentVo extends StoreComment {
 
     @ApiModelProperty(value = "门店名称")
     private String  storeName;
+
+    @ApiModelProperty(value = "图片地址")
+    private List<StoreImg> imgList;
 }

+ 6 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/StoreInfoVo.java

@@ -230,4 +230,10 @@ public class StoreInfoVo extends StoreInfo {
 
     @ApiModelProperty(value = "分类名称")
     private String businessClassifyName;
+
+    @ApiModelProperty(value = "分类id(词典表 键为 business_classify)(多个ID用逗号拼接)")
+    private List<String> businessClassifyList;
+
+    @ApiModelProperty(value = "分类名称")
+    private List<String> businessClassifyNameList;
 }

+ 177 - 0
alien-entity/src/main/java/shop/alien/mapper/LifeCouponMapper.java

@@ -80,4 +80,181 @@ public interface LifeCouponMapper extends BaseMapper<LifeCoupon> {
             @Param("buyCount") int buyCount,
             @Param("soldOutStatus") int soldOutStatus
     );
+
+
+    /**
+     * 查询代金券详情(连表查询商铺信息)
+     *
+     * @param id 代金券ID
+     * @return LifeCouponVo
+     */
+    @Select("SELECT " +
+            "lc.id, " +
+            "lc.data_type, " +
+            "lc.buy_use_start_time, " +
+            "lc.buy_use_end_time, " +
+            "lc.use_festival, " +
+            "lc.coupon_code, " +
+            "lc.name, " +
+            "lc.store_id, " +
+            "lc.price, " +
+            "lc.offprice, " +
+            "lc.expiration_date, " +
+            "lc.start_date, " +
+            "lc.end_date, " +
+            "lc.unused_date, " +
+            "lc.single_qty, " +
+            "lc.buy_limit, " +
+            "lc.stock_qty, " +
+            "lc.use_rule, " +
+            "lc.min_use_peoples, " +
+            "lc.max_use_peoples, " +
+            "lc.dietary_preferences, " +
+            "lc.cooking_methods, " +
+            "lc.applicable_rule, " +
+            "lc.status, " +
+            "lc.image_path, " +
+            "lc.store_service, " +
+            "lc.fapiao_info, " +
+            "lc.type, " +
+            "lc.approval_comments, " +
+            "lc.open_price_protection, " +
+            "lc.price_below, " +
+            "lc.coupon_comp, " +
+            "lc.coupon_comp_date, " +
+            "lc.rate_score, " +
+            "lc.discount_tag, " +
+            "lc.discount_tag_name, " +
+            "lc.delete_flag, " +
+            "lc.status_delete_flag, " +
+            "lc.created_time, " +
+            "lc.created_user_id, " +
+            "lc.updated_time, " +
+            "lc.updated_user_id, " +
+            "lc.store_type, " +
+            "lc.sale_time_str_type, " +
+            "lc.sale_time_end_type, " +
+            "lc.purchase_limit_code, " +
+            "lc.original_price, " +
+            "lc.discounted_price, " +
+            "lc.business_types, " +
+            "lc.housing_type, " +
+            "lc.room_type, " +
+            "lc.room_type_code, " +
+            "lc.kitchen_xq, " +
+            "lc.bathroom_xq, " +
+            "lc.living_room, " +
+            "lc.location_of_the_property, " +
+            "lc.total_area, " +
+            "lc.entertainment_facilities_code, " +
+            "lc.entertainment_facilities, " +
+            "lc.convenience_facilities_code, " +
+            "lc.convenience_facilities, " +
+            "lc.bathroom_facilities_code, " +
+            "lc.bathroom_facilities, " +
+            "lc.bath_products_code, " +
+            "lc.bath_products, " +
+            "lc.service_code, " +
+            "lc.service, " +
+            "lc.safety_code, " +
+            "lc.safety, " +
+            "lc.reservation_instructions, " +
+            "lc.in_time, " +
+            "lc.out_time, " +
+            "lc.deposit_flag, " +
+            "lc.deposit_amount, " +
+            "lc.children_flag, " +
+            "lc.children_description, " +
+            "lc.pet_flag, " +
+            "lc.extra_bed_flag, " +
+            "lc.bed_price, " +
+            "lc.invoice_info, " +
+            "lc.invoice_instructions, " +
+            "lc.cancellation_policy_type, " +
+            "lc.cancellation_policy, " +
+            "lc.Cancellation_instructions, " +
+            "lc.insured_price, " +
+            "lc.validity_period_type, " +
+            "lc.box_type_code, " +
+            "lc.box_type, " +
+            "lc.snacks_code, " +
+            "lc.snacks, " +
+            "lc.available_duration, " +
+            "lc.write_off_type, " +
+            "lc.write_off, " +
+            "lc.refund_rules_type, " +
+            "lc.refund_rules, " +
+            "lc.refund_instructions, " +
+            "lc.edit_rules_code, " +
+            "lc.edit_rules, " +
+            "lc.edit_instructions, " +
+            "lc.tangchi_code, " +
+            "lc.tangchi, " +
+            "lc.sweat_sauna_code, " +
+            "lc.sweat_sauna, " +
+            "lc.pictures_and_text, " +
+            "lc.supplement, " +
+            "lc.unavailable_date_type, " +
+            "lc.reservation_rules, " +
+            "lc.applicable_num, " +
+            "lc.other_rules, " +
+            "lc.sales_type, " +
+            "lc.massage_technique_code, " +
+            "lc.massage_technique, " +
+            "lc.massage_area_code, " +
+            "lc.massage_area, " +
+            "lc.massage_tools_code, " +
+            "lc.massage_tools, " +
+            "lc.compress_tools_code, " +
+            "lc.compress_tools, " +
+            "lc.class_format_code, " +
+            "lc.class_format, " +
+            "lc.class_duration_code, " +
+            "lc.class_duration, " +
+            "lc.class_num_code, " +
+            "lc.class_num, " +
+            "lc.applicable_parts_code, " +
+            "lc.applicable_parts, " +
+            "lc.hygiene_code, " +
+            "lc.hygiene, " +
+            "lc.foundation_code, " +
+            "lc.foundation, " +
+            "lc.bathroom_code, " +
+            "lc.bathroom, " +
+            "lc.kitchen_code, " +
+            "lc.kitchen, " +
+            "lc.validity_period_yh_type, " +
+            "lc.validity_period_yh, " +
+            "lc.course_validity_period_code, " +
+            "lc.course_validity_period, " +
+            "lc.uploaded_picList, " +
+            "lc.validity_period, " +
+            "lc.stacking_type, " +
+            "lc.general_type, " +
+            "lc.single_can_use, " +
+            "lc.apply_type, " +
+            "lc.apply_desc, " +
+            "lc.expiration_type, " +
+            "lc.unused_type, " +
+            "lc.house_type, " +
+            "lc.house_type_b, " +
+            "lc.house_type_l, " +
+            "lc.house_type_k, " +
+            "lc.house_type_t, " +
+            "lc.sale_time_str, " +
+            "lc.sale_time_end, " +
+            "lc.unavai_lable_date, " +
+            "lc.room_type_str, " +
+            "lc.time_range, " +
+            "lc.cancellation_policy_str, " +
+            "lc.validity_periodyh_str, " +
+            "si.store_name, " +
+            "si.store_address, " +
+            "si.store_tel AS phone, " +
+            "si.business_status, " +
+            "si.store_status " +
+            "FROM life_coupon lc " +
+            "LEFT JOIN store_info si ON si.id = lc.store_id AND si.delete_flag = 0 " +
+            "WHERE lc.id = #{id} AND lc.delete_flag = 0")
+    LifeCouponVo getNewCouponDetail(@Param("id") String id);
 }

+ 13 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreCommentMapper.java

@@ -185,4 +185,17 @@ WHERE
             "AND luo.user_id = #{userId} " +
             "AND luo.id IN (SELECT business_id FROM store_comment WHERE business_type = 5 AND user_id = #{userId} AND delete_flag = 0)")
     IPage<LifeUserOrderCommentVo> getCommentOrderYPJPage(IPage<LifeUserOrderCommentVo> page, @Param("userId") String userId);
+
+    @Select("SELECT\n" +
+            "\ts.*,\n" +
+            "\tlu.user_name, \n" +
+            "\tlu.user_image \n" +
+            "FROM\n" +
+            "\tstore_comment s\n" +
+            "\tLEFT JOIN life_user lu ON s.user_id = lu.id \n" +
+            "WHERE\n" +
+            "\ts.business_type = 5 \n" +
+            "\tAND s.store_id = #{storeId}\n" +
+            "\tLIMIT 1")
+    StoreCommentVo getCommentOneInfo(@Param("storeId") int storeId);
 }

+ 23 - 0
alien-entity/src/main/java/shop/alien/mapper/TagsMainMapper.java

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import shop.alien.entity.store.TagsMain;
+import shop.alien.entity.store.vo.StoreCommentVo;
 import shop.alien.entity.store.vo.TagsMainVo;
 
 import java.util.List;
@@ -57,4 +58,26 @@ public interface TagsMainMapper extends BaseMapper<TagsMain> {
             "GROUP BY\n" +
             "    main.id")
     List<TagsMainVo> getStoreEvaluateTags(int storeId);
+
+
+    @Select("SELECT\n" +
+            "  ts.comment_id,\n" +
+            "  MIN(ts.id) AS tag_id,  \n" +
+            "  ts.main_tag_id,\n" +
+            "  GROUP_CONCAT(DISTINCT ts.synonym_tag SEPARATOR ',') AS synonym_tags,  \n" +
+            "  MIN(ts.delete_flag) AS tag_delete_flag,\n" +
+            "  MAX(ts.created_time) AS tag_created_time,\n" +
+            "  sc.*\n" +
+            "FROM\n" +
+            "  tags_synonym ts\n" +
+            "LEFT JOIN store_comment sc \n" +
+            "  ON ts.comment_id = sc.id\n" +
+            "WHERE\n" +
+            "  ts.main_tag_id = #{mainId}  \n" +
+            "GROUP BY\n" +
+            "  ts.comment_id, ts.main_tag_id,  \n" +
+            "  sc.id  \n" +
+            "ORDER BY\n" +
+            "  sc.created_time DESC; ")
+    List<StoreCommentVo> getstoreCommentList(Integer mainId);
 }

+ 1 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/OrderReviewController.java

@@ -275,5 +275,6 @@ public class OrderReviewController {
         }
         return orderReviewService.getOrderEvaluation(orderId);
     }
+
 }
 

+ 1 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerClientConsultationOrderServiceImpl.java

@@ -3,6 +3,7 @@ package shop.alien.lawyer.service.impl;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;

+ 29 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/OrderReviewServiceImpl.java

@@ -661,5 +661,34 @@ public class OrderReviewServiceImpl extends ServiceImpl<OrderReviewMapper, Order
             return R.fail("获取统计数据失败");
         }
     }
+
+    @Override
+    public R<OrderReviewVo> getOrderEvaluation(Integer orderId) {
+        log.info("OrderReviewServiceImpl.getOrderEvaluation?orderId={}", orderId);
+
+        if (orderId == null) {
+            return R.fail("订单ID不能为空");
+        }
+
+        OrderReviewVo reviewVo = orderReviewMapper.getOrderEvaluation(orderId);
+        if (reviewVo == null) {
+            return R.fail("该订单暂无评价");
+        }
+
+        // 处理评价图片:从JSON字符串解析为List
+        if (reviewVo.getReviewImagesJson() != null && !reviewVo.getReviewImagesJson().trim().isEmpty()) {
+            try {
+                List<String> images = JSON.parseArray(reviewVo.getReviewImagesJson(), String.class);
+                reviewVo.setReviewImages(images != null ? images : new ArrayList<>());
+            } catch (Exception e) {
+                log.warn("解析评价图片失败:{}", e.getMessage());
+                reviewVo.setReviewImages(new ArrayList<>());
+            }
+        } else {
+            reviewVo.setReviewImages(new ArrayList<>());
+        }
+
+        return R.data(reviewVo);
+    }
 }
 

+ 17 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeCouponController.java

@@ -10,6 +10,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.EssentialHolidayComparison;
 import shop.alien.entity.store.LifeCoupon;
 import shop.alien.entity.store.vo.LifeCouponStatusVo;
+import shop.alien.entity.store.vo.LifeCouponVo;
 import shop.alien.store.service.LifeCouponService;
 
 import java.util.Map;
@@ -78,6 +79,22 @@ public class LifeCouponController {
         return R.data(lifeCouponService.getOne(objectLambdaQueryWrapper));
     }
 
+    @ApiOperation("代金劵详情")
+    @GetMapping("/getNewCouponDetail")
+    private R<LifeCouponVo> getNewCouponDetail(@RequestParam("id") String id) {
+        log.info("LifeCouponController.getNewCouponDetail?id={}", id);
+        try {
+            LifeCouponVo lifeCouponVo = lifeCouponService.getNewCouponDetail(id);
+            if (lifeCouponVo == null) {
+                return R.fail("代金券不存在或已删除");
+            }
+            return R.data(lifeCouponVo);
+        } catch (Exception e) {
+            log.error("LifeCouponController.getNewCouponDetail ERROR Msg={}", e.getMessage(), e);
+            return R.fail("查询失败");
+        }
+    }
+
     @ApiOperation("旧 核销订单")
     @ApiImplicitParams({@ApiImplicitParam(name = "storeId", value = "门店id", dataType = "Integer", paramType = "query", required = true), @ApiImplicitParam(name = "quanCode", value = "券码", dataType = "Integer", paramType = "query", required = true)})
     @GetMapping("/verify")

+ 73 - 10
alien-store/src/main/java/shop/alien/store/controller/StoreInfoController.java

@@ -16,17 +16,13 @@ import shop.alien.entity.store.*;
 import shop.alien.entity.store.dto.StoreInfoDto;
 import shop.alien.entity.store.vo.*;
 import shop.alien.entity.storePlatform.StoreLicenseHistory;
-import shop.alien.mapper.StoreCommentSummaryInterestMapper;
-import shop.alien.mapper.TagsMainMapper;
-import shop.alien.mapper.WebAuditMapper;
+import shop.alien.mapper.*;
 import shop.alien.mapper.storePlantform.StoreLicenseHistoryMapper;
 import shop.alien.store.config.BaseRedisService;
 import shop.alien.store.service.StoreInfoService;
 
 import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 二期-门店信息Controller
@@ -56,6 +52,10 @@ public class StoreInfoController {
     /** 商户证照历史记录数据访问对象 */
     private final StoreLicenseHistoryMapper licenseHistoryMapper;
 
+    private final StoreImgMapper storeImgMapper;
+
+    private final StoreCommentMapper storeCommentMapper;
+
     @ApiOperation("获取所有门店")
     @ApiOperationSupport(order = 1)
     @GetMapping("/getAll")
@@ -393,6 +393,16 @@ public class StoreInfoController {
         return R.data(storeDetail);
     }
 
+    @ApiOperation(value = "获取门店代金券明细")
+    @ApiOperationSupport(order = 7)
+    @GetMapping("/getStoreCouponList")
+    @ResponseBody
+    public R getStoreCouponList(@RequestParam("storeId") String storeId) {
+        log.info("StoreInfoController.getStoreDetail?storeId={},userId={}", storeId);
+        List<LifeCouponVo> lifeCouponVos = storeInfoService.getStoreCouponList(storeId);
+        return R.data(lifeCouponVos);
+    }
+
     @ApiOperation(value = "web端审批店铺")
     @ApiOperationSupport(order = 6)
     @GetMapping("/approveStoreInfo")
@@ -403,6 +413,28 @@ public class StoreInfoController {
         return R.success("审批完成");
     }
 
+    @ApiOperation(value = "中台web端获取店铺明细详情")
+    @ApiOperationSupport(order = 21)
+    @GetMapping("/getNewStoreDetail")
+    @ResponseBody
+    public R getNewStoreDetail(@RequestParam("id") String id) {
+        log.info("StoreInfoController.getStoreDetail?id={}", id);
+        StoreInfoVo storeDetail = storeInfoService.getNewStoreDetail(id);
+        return R.data(storeDetail);
+    }
+
+    @ApiOperation("新中台web端修改门店")
+    @ApiOperationSupport(order = 22)
+    @PostMapping("/editNewStoreInfo")
+    public R editNewStoreInfo(@RequestBody StoreInfoDto storeInfoDto) {
+        log.info("StoreInfoController.editStoreInfo?storeInfoDto={}", storeInfoDto);
+        StoreInfoVo storeInfoVo = storeInfoService.editNewStoreInfo(storeInfoDto);
+        if (storeInfoVo != null) {
+            return R.data(storeInfoVo);
+        }
+        return R.fail("失败");
+    }
+
     @ApiOperation(value = "web端导出店铺信息")
     @ApiOperationSupport(order = 6)
     @GetMapping("/exportExcel")
@@ -729,13 +761,44 @@ public class StoreInfoController {
 
     @ApiOperation(value = "AI服务-门店评价标签")
     @GetMapping("/getStoreEvaluateTags")
-    @ApiImplicitParams({@ApiImplicitParam(name = "storeId", value = "门店id", dataType = "int", paramType = "query")})
-    public R<List<TagsMainVo>> getStoreEvaluateTags(int storeId) {
-        log.info("StoreInfoController.getStoreEvaluateTags?storeId={}", storeId);
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "storeId", value = "门店id", dataType = "int", paramType = "query", required = true)
+    })
+    public R<Map<String,Object>> getStoreEvaluateTags(@RequestParam("storeId") int storeId) {
+        log.info("StoreInfoController.getStoreEvaluateTags?storeId={}, tagType={}", storeId);
+        Map<String,Object> map = new HashMap<>();
         List<TagsMainVo> voList = tagsMainMapper.getStoreEvaluateTags(storeId);
-        return R.data(voList);
+        if(voList !=null && voList.size()>0){
+            StoreCommentVo storeComment = storeCommentMapper.getCommentOneInfo(storeId);
+            if(storeComment!=null){
+                if(storeComment.getImgId()!=null){
+                    List<String> imgIds = Arrays.asList(storeComment.getImgId().split(","));
+                    List<StoreImg> storeImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().in(StoreImg::getId, imgIds));
+                    storeComment.setImgList(storeImgs);
+                }
+                LambdaQueryWrapper<StoreComment> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper1.eq(StoreComment :: getStoreId, storeId);
+                lambdaQueryWrapper1.eq(StoreComment :: getBusinessType, 5);
+                lambdaQueryWrapper1.eq(StoreComment :: getDeleteFlag, 0);
+                Integer commitCount = storeCommentMapper.selectCount(lambdaQueryWrapper1);
+                map.put("commitCount",commitCount);
+            }
+            map.put("tag",voList);
+            map.put("evaluate",storeComment);
+        }
+        return R.data(map);
     }
 
+    @ApiOperation(value = "AI服务-门店评价标签下评价")
+    @GetMapping("/getStoreEvaluateTagsList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mainId", value = "标签id", dataType = "int", paramType = "query", required = true)
+    })
+    public R<List<StoreCommentVo>> getStoreEvaluateTagsList(@RequestParam("mainId") int mainId) {
+        log.info("StoreInfoController.getStoreEvaluateTagsList?mainId={}", mainId);
+        List<StoreCommentVo> list = tagsMainMapper.getstoreCommentList(mainId);
+        return R.data(list);
+    }
     @ApiOperation(value = "AI服务-门店趣味信息")
     @GetMapping("/getStoreInterestInfo")
     @ApiImplicitParams({

+ 7 - 0
alien-store/src/main/java/shop/alien/store/service/LifeCouponService.java

@@ -56,4 +56,11 @@ public interface LifeCouponService extends IService<LifeCoupon> {
      * @return
      */
     R<String> orderVerify(String orderCode);
+
+    /**
+     * 获取代金券详情(包含商铺信息)
+     * @param id 代金券ID
+     * @return LifeCouponVo
+     */
+    shop.alien.entity.store.vo.LifeCouponVo getNewCouponDetail(String id);
 }

+ 18 - 0
alien-store/src/main/java/shop/alien/store/service/StoreInfoService.java

@@ -395,4 +395,22 @@ public interface StoreInfoService extends IService<StoreInfo> {
      */
     StoreInfoVo getClientStoreDetail(String storeId, String userId, String jingdu, String weidu);
 
+    /**
+     * 获取门店代金券
+     */
+    List<LifeCouponVo> getStoreCouponList(String storeId);
+
+    /**
+     * 中台web端查询门店明细
+     */
+    StoreInfoVo getNewStoreDetail(String storeId);
+
+    /**
+     * 新中台web端修改门店及门店用户
+     *
+     * @return ResponseEntity
+     */
+    StoreInfoVo editNewStoreInfo(StoreInfoDto storeInfoDto);
+
+
 }

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeCouponServiceImpl.java

@@ -689,4 +689,9 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
         return R.success("效验通过");
     }
 
+    @Override
+    public shop.alien.entity.store.vo.LifeCouponVo getNewCouponDetail(String id) {
+        return lifeCouponMapper.getNewCouponDetail(id);
+    }
+
 }

+ 4 - 2
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponServiceImpl.java

@@ -347,8 +347,10 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
         try {
             LocalDateTime now = LocalDateTime.now();
             //根据店铺id查询该店铺的优惠券,状态是开启领取的券
-            List<LifeDiscountCoupon> lifeDiscountCoupons = lifeDiscountCouponMapper.selectList(new LambdaQueryWrapper<LifeDiscountCoupon>().eq(LifeDiscountCoupon::getStoreId, storeId).eq(LifeDiscountCoupon::getGetStatus, "1") //还有库存
-                    .ge(LifeDiscountCoupon::getEndGetDate, LocalDate.now()).orderByDesc(LifeDiscountCoupon::getCreatedTime));
+            List<LifeDiscountCoupon> lifeDiscountCoupons = lifeDiscountCouponMapper.selectList(new LambdaQueryWrapper<LifeDiscountCoupon>()
+                    .eq(LifeDiscountCoupon::getStoreId, storeId).eq(LifeDiscountCoupon::getGetStatus, "1") //还有库存
+                    .ge(LifeDiscountCoupon::getEndGetDate, LocalDate.now())
+                    .orderByDesc(LifeDiscountCoupon::getAttentionCanReceived));
             //根据优惠券列表查询该优惠券是否领取过
             for (LifeDiscountCoupon lifeDiscountCoupon : lifeDiscountCoupons) {
                 LifeDiscountCouponVo lifeDiscountCouponVo = new LifeDiscountCouponVo();

+ 225 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreInfoServiceImpl.java

@@ -4417,5 +4417,230 @@ public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo
         return result;
     }
 
+    @Override
+    public List<LifeCouponVo> getStoreCouponList(String storeId) {
+        // 获取店铺代金券列表
+        LambdaUpdateWrapper<LifeCoupon> quanWrapper = new LambdaUpdateWrapper<>();
+        quanWrapper.eq(LifeCoupon::getStoreId, storeId).eq(LifeCoupon::getStatus, CouponStatusEnum.ONGOING.getCode()).eq(LifeCoupon::getType, 1);
+        List<LifeCoupon> quanList = lifeCouponMapper.selectList(quanWrapper);
+        List<LifeCouponVo> quanVoList = new ArrayList<>();
+        List<String> collect = quanList.stream().map(LifeCoupon::getId).collect(Collectors.toList());
+        // 设置已售数量
+        // 定义需要的订单状态集合
+        Set<Integer> excludeStatuses = new HashSet<>(Arrays.asList(
+                OrderStatusEnum.WAIT_PAY.getStatus(),
+                OrderStatusEnum.WAIT_USE.getStatus(),
+                OrderStatusEnum.USED.getStatus()
+        ));
+        if (!collect.isEmpty()) {
+            List<LifeUserOrderVo> quanCount = lifeUserOrderMapper.getQuanCount(new QueryWrapper<LifeUserOrderVo>()
+                    .eq("luo.store_id", storeId)
+                    .eq("luo.coupon_type", CouponTypeEnum.COUPON.getCode())
+                    .eq("luo.delete_flag", 0)
+                    .in("ocm.status", excludeStatuses)
+                    .groupBy("ocm.coupon_id"));
+            quanList.forEach(a -> {
+                LifeCouponVo lifeCouponVo = new LifeCouponVo();
+                BeanUtils.copyProperties(a, lifeCouponVo);
+                quanCount.forEach(item -> {
+                    if (a.getId().equals(item.getCouponId().toString())) {
+                        lifeCouponVo.setCount(item.getCount());
+                    }
+                });
+                quanVoList.add(lifeCouponVo);
+            });
+        }
+        return quanVoList;
+    }
+
+    @Override
+    public StoreInfoVo getNewStoreDetail(String storeId) {
+
+        StoreInfoVo result = new StoreInfoVo();
+        StoreInfo storeInfo = storeInfoMapper.selectById(storeId);
+        BeanUtils.copyProperties(storeInfo, result);
+        //将经营板块和种类拆分成集合
+        String businessTypes = storeInfo.getBusinessTypes();
+        if (StringUtils.isNotEmpty(businessTypes)) {
+            String[] split = businessTypes.split(",");
+            List<String> list = Arrays.asList(split);
+            result.setBusinessTypesList(list);
+        }
+        //存入用户账户
+        StoreUser storeUser = storeUserMapper.selectOne(new LambdaQueryWrapper<StoreUser>().eq(StoreUser::getStoreId, storeId));
+        if (storeUser != null) {
+            result.setUserAccount(storeUser.getId().toString());
+            result.setStorePhone(storeUser.getPhone());
+            result.setStoreUserName(storeUser.getName());
+            result.setIdCard(storeUser.getIdCard());
+        }
+        //存入执照图片地址
+        List<StoreImg> storeImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 14));
+        List<String> storeImgPaths = new ArrayList<>();
+        for (StoreImg storeImg : storeImgs) {
+            storeImgPaths.add(storeImg.getImgUrl());
+        }
+        result.setBusinessLicenseAddress(storeImgPaths);
+        //存入合同图片地址
+        List<StoreImg> storeContractImageImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 15));
+        List<String> storeContractImagePathImgs = new ArrayList<>();
+        for (StoreImg storeImg : storeContractImageImgs) {
+            storeContractImagePathImgs.add(storeImg.getImgUrl());
+        }
+        result.setContractImageList(storeContractImagePathImgs);
+        //存入续签合同地址
+        List<StoreImg> renewContractImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 22));
+        List<String> renewContractImagePathImgs = new ArrayList<>();
+        for (StoreImg storeImg : renewContractImgs) {
+            renewContractImagePathImgs.add(storeImg.getImgUrl());
+        }
+        result.setRenewContractImageList(renewContractImagePathImgs);
+        //存入经营许可证通过地址
+        List<StoreImg> foodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 25));
+        List<String> foodLicenceImgsPathImgs = new ArrayList<>();
+        for (StoreImg storeImg : foodLicenceImgs) {
+            foodLicenceImgsPathImgs.add(storeImg.getImgUrl());
+        }
+        result.setFoodLicenceImageList(foodLicenceImgsPathImgs);
+        //存入经营许可证未通过地址
+        List<StoreImg> notPassFoodLicenceImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 24));
+        List<String> notPassFoodLicenceList = new ArrayList<>();
+        for (StoreImg storeImg : notPassFoodLicenceImgs) {
+            notPassFoodLicenceList.add(storeImg.getImgUrl());
+        }
+        result.setNotPassFoodLicenceImageList(notPassFoodLicenceList);
+        // 存放商家入口图
+        List<StoreImg> storeEntranceImageImgs = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 1));
+        if (!storeEntranceImageImgs.isEmpty()) {
+            result.setEntranceImage(storeEntranceImageImgs.get(0).getImgUrl());
+        } else {
+            result.setEntranceImage("null");
+        }
+        // 存放商家头像
+        List<StoreImg> storeImgs1 = storeImgMapper.selectList(new LambdaQueryWrapper<StoreImg>().eq(StoreImg::getStoreId, storeId).eq(StoreImg::getImgType, 10));
+        if (!storeImgs1.isEmpty()) {
+            result.setImgUrl(storeImgs1.get(0).getImgUrl());
+        } else {
+            result.setImgUrl("null");
+        }
+
+
+        // 店铺平均分
+        /*Map<Object, List<Map<String, Object>>> avgScoreMap = storeEvaluationMapper.allStoreAvgScore().stream().collect(Collectors.groupingBy(o -> o.get("store_id")));
+        if (avgScoreMap.containsKey(String.valueOf(result.getId()))) {
+            result.setScore(Double.parseDouble(avgScoreMap.get(String.valueOf(result.getId())).get(0).get("avg_score").toString()));
+        }*/
+
+//        Map<String, Object> commitCountAndScore = storeCommentService.getCommitCountAndScore(null, 5, Integer.parseInt(storeId), null, null);
+//        result.setScore(Double.parseDouble(commitCountAndScore.get("score").toString()));
+//        result.setCommitCount(commitCountAndScore.get("commitCount").toString());
+//
+
+
+        //营业时间
+        List<StoreBusinessInfo> storeBusinessInfos = storeBusinessInfoMapper.selectList(new LambdaQueryWrapper<StoreBusinessInfo>().eq(StoreBusinessInfo::getStoreId, storeId).eq(StoreBusinessInfo::getDeleteFlag, 0));
+        if (ObjectUtils.isNotEmpty(storeBusinessInfos)) {
+            result.setStoreBusinessInfo(storeBusinessInfos.get(0));
+            result.setStoreBusinessInfos(storeBusinessInfos);
+            //StoreBusinessInfo storeBusinessInfo = result.getStoreBusinessInfo();
+            StoreBusinessInfo storeBusinessInfo = result.getStoreBusinessInfos().stream().filter(item -> item.getBusinessType() == 1).findFirst().orElse(null);
+            if (ObjectUtils.isNotEmpty(storeBusinessInfo)) {
+
+                Calendar calendar = Calendar.getInstance(); // 获取Calendar实例
+                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 获取星期几,注意Calendar中的DAY_OF_WEEK是从1(代表星期天)开始的
+                String[] days = {"7", "1", "2", "3", "4", "5", "6"};
+                String day = days[dayOfWeek - 1];
+                if (storeBusinessInfo.getBusinessDate().contains(day)) {
+                    if (StringUtils.isNotEmpty(storeBusinessInfo.getStartTime()) && StringUtils.isNotEmpty(storeBusinessInfo.getEndTime())) {
+                        LocalTime now = LocalTime.now();
+                        List<String> startList = Arrays.asList(storeBusinessInfo.getStartTime().split(":"));
+                        List<String> endList = Arrays.asList(storeBusinessInfo.getEndTime().split(":"));
+                        LocalTime start = LocalTime.of(Integer.parseInt(startList.get(0)), Integer.parseInt(startList.get(1)));
+                        LocalTime end = LocalTime.of(Integer.parseInt(endList.get(0)), Integer.parseInt(startList.get(1)));
+                        if (now.isAfter(start) && now.isBefore(end)) {
+                            result.setYyFlag(1);
+                        } else {
+                            result.setYyFlag(0);
+                        }
+                    }
+                } else {
+                    result.setYyFlag(0);
+                }
+            }
+        }
+        LambdaQueryWrapper<StoreDictionary> storeDictionaryLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        storeDictionaryLambdaQueryWrapper.eq(StoreDictionary::getTypeName, "businessStatus")
+                .eq(StringUtils.isNotEmpty(result.getBusinessStatus().toString()), StoreDictionary::getDictId, result.getBusinessStatus());
+        List<StoreDictionary> storeDictionaries = storeDictionaryMapper.selectList(storeDictionaryLambdaQueryWrapper);
+        if (!storeDictionaries.isEmpty()) {
+            result.setBusinessStatusStr(storeDictionaries.get(0).getDictDetail());
+        }
+        return result;
+    }
+
+    @Override
+    public StoreInfoVo editNewStoreInfo(StoreInfoDto storeInfoDto) {
+
+        //获取经营板块id
+        Integer businessSection = storeInfoDto.getBusinessSection();
+        //查询经营板块名称
+        StoreDictionary businessSectionName = storeDictionaryMapper.selectOne(new LambdaQueryWrapper<StoreDictionary>().eq(StoreDictionary::getDictId, businessSection).eq(StoreDictionary::getTypeName, "business_section"));
+        //查询经营种类
+        List<String> businessTypes = storeInfoDto.getBusinessTypes();
+        List<String> businessTypeNames = new ArrayList<>();
+        //获取经营种类名称
+        for (String businessType : businessTypes) {
+            StoreDictionary storeDictionary = storeDictionaryMapper.selectOne(new LambdaQueryWrapper<StoreDictionary>().eq(StoreDictionary::getDictId, businessType).eq(StoreDictionary::getParentId, businessSectionName.getId()));
+            businessTypeNames.add(storeDictionary.getDictDetail());
+        }
+
+        StoreInfoVo result = new StoreInfoVo();
+        StoreInfo storeInfo = new StoreInfo();
+        BeanUtils.copyProperties(storeInfoDto, storeInfo);
+//        List<String> storeTypeList = storeInfoDto.getStoreTypeList();
+//        String storeType = String.join(",", storeTypeList);
+        //存入营运类型
+//        storeInfo.setStoreType(storeType);
+
+        //板块及类型
+        storeInfo.setBusinessSection(businessSection);
+        storeInfo.setBusinessSectionName(businessSectionName.getDictDetail());
+        storeInfo.setBusinessTypes(String.join(",", businessTypes));
+        storeInfo.setBusinessTypesName(String.join(",", businessTypeNames));
+
+        //处理分类信息
+        List<String> businessClassify = storeInfoDto.getBusinessClassify();
+        if (!CollectionUtils.isEmpty(businessClassify)) {
+            List<String> businessClassifyNames = new ArrayList<>();
+            //批量查询分类名称
+            List<StoreDictionary> classifyDicts = storeDictionaryMapper.selectList(
+                    new LambdaQueryWrapper<StoreDictionary>()
+                            .in(StoreDictionary::getDictId, businessClassify)
+                            .eq(StoreDictionary::getTypeName, "business_classify")
+                            .eq(StoreDictionary::getDeleteFlag, 0)
+            );
+            //转为Map方便快速获取
+            Map<String, StoreDictionary> classifyDictMap = classifyDicts.stream()
+                    .collect(Collectors.toMap(
+                            dict -> dict.getDictId().toString(),
+                            Function.identity(),
+                            (existing, replacement) -> existing
+                    ));
+            //提取分类名称
+            for (String classifyId : businessClassify) {
+                StoreDictionary dict = classifyDictMap.get(classifyId);
+                if (Objects.nonNull(dict)) {
+                    businessClassifyNames.add(dict.getDictDetail());
+                } else {
+                    log.warn("无效的分类id:" + classifyId);
+                }
+            }
+            storeInfo.setBusinessClassify(String.join(",", businessClassify));
+            storeInfo.setBusinessClassifyName(String.join(",", businessClassifyNames));
+        }
+
+        storeInfoMapper.updateById(storeInfo);
+        return result;
+    }
 
 }