From a13ba2175c55d93ff2a3773a58d83c21ab20ee1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A3=E6=96=B0?= Date: Mon, 23 Mar 2026 11:51:20 +0000 Subject: [PATCH] Merge #71 into master from cc_20260318_wishlist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat:订单待确认 审批流去掉 * cc_20260318_wishlist: (22 commits squashed) - feat:心愿单接口 - feat:心愿单接口 - feat:心愿单接口 - feat:心愿单接口 查询当前门店铺位绑定的心愿单 - feat:心愿单接口 状态 - feat:心愿单接口 状态 - feat:心愿单接口 状态 - feat:心愿单接口 状态 - Merge branch 'master' into cc_20260318_wishlist - feat:代码merge 错误处理 - feat:新增storeType - feat:查询逻辑调整 - feat:新增use_ai 赛选 - feat:新增use_ai 赛选 - feat:新增use_ai 赛选 - feat:心愿单状态筛选 - feat:查询当前门店铺位绑定的心愿单 mini - feat:bug修复 - feat:类型调整 - feat:名称 - feat:订单待确认 审批流去掉 - feat:订单待确认 审批流去掉 Signed-off-by: 正新 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/71 --- .../com/cool/store/enums/ErrorCodeEnum.java | 1 + .../com/cool/store/enums/UserRoleEnum.java | 1 + .../store/enums/order/WishlistStatusEnum.java | 45 ++ .../enums/point/ShopSubStageStatusEnum.java | 2 +- .../store/dao/order/StoreWishlistDAO.java | 46 +- .../dao/order/StoreWishlistOptionDAO.java | 38 ++ .../mapper/order/StoreWishlistMapper.java | 18 +- .../order/StoreWishlistOptionMapper.java | 16 + .../main/resources/mapper/PointInfoMapper.xml | 22 +- .../mapper/order/StoreWishlistMapper.xml | 91 ++-- .../order/StoreWishlistOptionMapper.xml | 36 ++ .../com/cool/store/entity/PointInfoDO.java | 36 ++ .../store/entity/order/StoreWishlistDO.java | 14 +- .../entity/order/StoreWishlistOptionDO.java | 44 ++ .../store/request/AddPointDetailRequest.java | 25 + .../request/RecommendPointPageRequest.java | 5 + .../request/UpdatePointDetailRequest.java | 6 + .../order/MiniStoreWishlistDelRequest.java | 7 +- .../order/MiniStoreWishlistSaveRequest.java | 4 +- .../request/order/WishAllListRequest.java | 1 + .../request/order/WishlistAuditRequest.java | 21 + .../order/WishlistBindPointRequest.java | 23 + .../vo/order/MiniStoreOrderDetailVO.java | 2 + .../vo/order/MiniStoreWishlistDetailVO.java | 10 + .../vo/order/MiniStoreWishlistListVO.java | 9 + .../cool/store/vo/point/PointDetailVO.java | 24 + .../com/cool/store/service/PointService.java | 1 + .../com/cool/store/service/ShopService.java | 2 + .../store/service/impl/DeskServiceImpl.java | 6 +- .../impl/IntentAgreementServiceImpl.java | 3 + .../impl/JoinIntentionServiceImpl.java | 5 + .../store/service/impl/PointServiceImpl.java | 4 + .../store/service/impl/ShopServiceImpl.java | 50 +- .../service/order/MiniStoreOrderService.java | 7 +- .../order/impl/MiniStoreOrderServiceImpl.java | 464 +++++++++++------- .../controller/webb/StoreOrderController.java | 24 +- .../controller/webc/MiniShopController.java | 14 +- .../webc/MiniStoreOrderController.java | 23 +- 38 files changed, 908 insertions(+), 242 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/order/WishlistStatusEnum.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistOptionDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistOptionMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistOptionMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistOptionDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistAuditRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistBindPointRequest.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 256da59c5..58a7140c5 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -360,6 +360,7 @@ public enum ErrorCodeEnum { PAY_FAIL(1610107, "支付失败", null), DUPLICATE_PAYMENTS(1610108, "订单支付中,请勿重复支付!", null), CURRENT_ORDER_NOT_SUPPORT(1610109, "当前订单状态不支持审批!", null), + CURRENT_POINT_BIND_OTHER_WISHLIST(1610110, "当前铺位绑定了其他心愿单!", null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java index 10df4268e..9f12c642b 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java @@ -75,6 +75,7 @@ public enum UserRoleEnum { INVESTMENT_MANGER(1765266125369L, "招商经理"), OPERATION_GENERAL_CONSULTANT(1764642515446L,"运营片区总顾问"), ORDER_GROUP(1766387359609L,"订单组"), + AI_STORE_TYPE_APPROVE(1774252055402L,"AI店型订单审核"), ; private Long code; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/order/WishlistStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/order/WishlistStatusEnum.java new file mode 100644 index 000000000..9eca38245 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/order/WishlistStatusEnum.java @@ -0,0 +1,45 @@ +package com.cool.store.enums.order; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Auther zx_szh + * @Date 2026/3/18 14:24 + * @Version 1.0 + */ +public enum WishlistStatusEnum { + + AGREE(0, "待完善加盟资质"), + COMPLETE_POINT(5, "待绑定铺位"), + LI_GUI_APPROVE(10, "待立规审核"), + PASS(20, "通过"), + REJECT(15, "拒绝"), + ; + + private final Integer code; + private final String desc; + + WishlistStatusEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + private static final Map MAP = Arrays.stream(values()) + .collect(Collectors.toMap(WishlistStatusEnum::getCode, Function.identity(), (a, b) -> a)); + + public static WishlistStatusEnum of(Integer code) { + return MAP.get(code); + } + +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java index d3d5e10da..67bb62720 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java @@ -169,7 +169,7 @@ public enum ShopSubStageStatusEnum { SHOP_SUB_STAGE_STATUS_280(ShopSubStageEnum.SHOP_STAGE_28, 2800, "待选购", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_281(ShopSubStageEnum.SHOP_STAGE_28, 2810, "待立规审批", Boolean.FALSE), - SHOP_SUB_STAGE_STATUS_281_5(ShopSubStageEnum.SHOP_STAGE_28, 2815, "待招商经理审批", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_281_5(ShopSubStageEnum.SHOP_STAGE_28, 2815, "待加盟商确认", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_282(ShopSubStageEnum.SHOP_STAGE_28, 2820, "待财务确认", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_283(ShopSubStageEnum.SHOP_STAGE_28, 2830, "审批拒绝", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_284(ShopSubStageEnum.SHOP_STAGE_28, 2840, "待缴费", Boolean.FALSE), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistDAO.java index 15719133a..48db10e3b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistDAO.java @@ -6,6 +6,7 @@ import com.cool.store.mapper.order.StoreWishlistMapper; import com.cool.store.vo.order.MiniStoreWishlistListVO; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import tk.mybatis.mapper.entity.Example; @@ -25,6 +26,20 @@ public class StoreWishlistDAO { return mapper.insertBatch(list) > 0; } + public boolean insert(StoreWishlistDO item) { + if (item == null) { + return false; + } + return mapper.insertSelective(item) > 0; + } + + public int updateByExampleSelective(StoreWishlistDO item) { + if (item == null) { + return 0; + } + return mapper.updateByPrimaryKeySelective(item); + } + public boolean softDeleteByLineIdAndStoreTypeAndVersion(Long lineId, Long storeTypeId, String versionNo) { if (lineId == null || storeTypeId == null || versionNo == null) { return false; @@ -39,6 +54,27 @@ public class StoreWishlistDAO { return mapper.getById(id); } + public StoreWishlistDO getByPointId(Long lineId,Long pointId) { + if (lineId == null||pointId==null) { + return null; + } + return mapper.getByPointId(lineId,pointId); + } + + public Boolean updateByLineId(Long id) { + if (id == null) { + return null; + } + return mapper.updateByLineId(id); + } + + public Integer getPointBindWishlistCount( Long pointId, Integer wishlistStatus) { + if (pointId == null||wishlistStatus==null) { + return 0; + } + return mapper.getPointBindWishlistCount(pointId,wishlistStatus); + } + public List listByLineIdAndStoreTypeAndVersion(Long lineId, Long storeTypeId, String versionNo) { if (lineId == null || storeTypeId == null || versionNo == null) { return Collections.emptyList(); @@ -53,14 +89,8 @@ public class StoreWishlistDAO { return mapper.listByLineId(lineId, storeTypeId); } - public List listByVersionList(List versionNoList) { - if (CollectionUtils.isEmpty(versionNoList)) { - return Collections.emptyList(); - } - return mapper.listByVersionList(versionNoList); + public List listByVersionList(String keyword,Long storeTypeId,Integer wishlistStatus) { + return mapper.listByVersionList(keyword,storeTypeId,wishlistStatus); } - public List getDistinctVersion(String keyword,Long storeTypeId){ - return mapper.versionNoList(keyword,storeTypeId); - } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistOptionDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistOptionDAO.java new file mode 100644 index 000000000..22782ac04 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/order/StoreWishlistOptionDAO.java @@ -0,0 +1,38 @@ +package com.cool.store.dao.order; + +import com.cool.store.entity.order.StoreWishlistOptionDO; +import com.cool.store.mapper.order.StoreWishlistOptionMapper; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import java.util.Collections; +import java.util.List; + +@Repository +@RequiredArgsConstructor +public class StoreWishlistOptionDAO { + + private final StoreWishlistOptionMapper mapper; + + public boolean insertBatch(List list) { + if (CollectionUtils.isEmpty(list)) { + return false; + } + return mapper.insertBatch(list) > 0; + } + + public boolean softDeleteByWishlistIds(List wishlistIds) { + if (CollectionUtils.isEmpty(wishlistIds)) { + return false; + } + return mapper.softDeleteByWishlistIds(wishlistIds) > 0; + } + + public List listByWishlistIds(List wishlistIds) { + if (CollectionUtils.isEmpty(wishlistIds)) { + return Collections.emptyList(); + } + return mapper.listByWishlistIds(wishlistIds); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistMapper.java index cbbb0f4fe..5d6088e66 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistMapper.java @@ -17,6 +17,11 @@ public interface StoreWishlistMapper extends Mapper { StoreWishlistDO getById(@Param("id") Long id); + StoreWishlistDO getByPointId(@Param("lineId") Long lineId, @Param("pointId") Long pointId); + + + Integer getPointBindWishlistCount(@Param("pointId") Long pointId, @Param("wishlistStatus") Integer wishlistStatus); + List listByLineIdAndStoreTypeAndVersion(@Param("lineId") Long lineId, @Param("storeTypeId") Long storeTypeId, @Param("versionNo") String versionNo); @@ -25,7 +30,16 @@ public interface StoreWishlistMapper extends Mapper { @Param("storeTypeId") Long storeTypeId); - List listByVersionList(@Param("versionNoList") List versionNoList); + List listByVersionList(@Param("keyword") String keyword, + @Param("storeTypeId") Long storeTypeId, + @Param("wishlistStatus") Integer wishlistStatus); + + /** + * 更新心愿单状态 将当前加盟商所有的在待完善加盟资质的心愿单状态改为绑定铺位 + * @param lineId + * @return + */ + Boolean updateByLineId(Long lineId) ; + - List versionNoList(@Param("keyword") String keyword, @Param("storeTypeId") Long storeTypeId); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistOptionMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistOptionMapper.java new file mode 100644 index 000000000..4c712758b --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/order/StoreWishlistOptionMapper.java @@ -0,0 +1,16 @@ +package com.cool.store.mapper.order; + +import com.cool.store.entity.order.StoreWishlistOptionDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface StoreWishlistOptionMapper extends Mapper { + + int insertBatch(@Param("list") List list); + + int softDeleteByWishlistIds(@Param("wishlistIds") List wishlistIds); + + List listByWishlistIds(@Param("wishlistIds") List wishlistIds); +} diff --git a/coolstore-partner-dao/src/main/resources/mapper/PointInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PointInfoMapper.xml index 25eb24731..1e30874af 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/PointInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/PointInfoMapper.xml @@ -35,6 +35,12 @@ + + + + + + @@ -43,7 +49,8 @@ development_time, point_status, point_score, select_status, submit_audit_count, point_source, deleted, create_time, update_time, province, city, district, township, opportunity_point_code, opportunity_point_name, - province_code, city_code, district_code, point_location,protection_distance + province_code, city_code, district_code, point_location,protection_distance, + location_desc_code, use_ai, door_inner_depth, door_inner_width, door_inner_height, other_desc @@ -555,7 +565,13 @@ province_code = #{request.provinceCode}, city_code = #{request.cityCode}, district_code = #{request.districtCode}, - point_location = #{request.pointLocation} + point_location = #{request.pointLocation}, + location_desc_code = #{request.locationDescCode}, + use_ai = #{request.useAi}, + door_inner_depth = #{request.doorInnerDepth}, + door_inner_width = #{request.doorInnerWidth}, + door_inner_height = #{request.doorInnerHeight}, + other_desc = #{request.otherDesc} where id = #{request.id} diff --git a/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistMapper.xml index 3761b05d9..9e340b171 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistMapper.xml @@ -4,10 +4,10 @@ INSERT INTO zxjp_store_wishlist - (line_id, store_type_id, option_id, quantity, total_amount, version_no, deleted, create_time, update_time) + (line_id, store_type_id, total_amount, version_no, wishlist_status, point_id, deleted, create_time, update_time) VALUES - (#{item.lineId}, #{item.storeTypeId}, #{item.optionId}, #{item.quantity}, #{item.totalAmount}, #{item.versionNo}, 0, NOW(), NOW()) + (#{item.lineId}, #{item.storeTypeId}, #{item.totalAmount}, #{item.versionNo}, #{item.wishlistStatus}, #{item.pointId}, 0, NOW(), NOW()) @@ -22,15 +22,41 @@ + + + + SELECT + w.id as wishlistId, w.store_type_id AS storeTypeId, st.brand AS brand, st.store_type_name AS storeTypeName, st.store_type AS storeType, st.image_url AS imageUrl, - MIN(w.create_time) AS createTime, - MAX(w.total_amount) AS totalAmount, - w.version_no AS versionNo + w.create_time AS createTime, + w.total_amount AS totalAmount, + w.version_no AS versionNo, + w.point_id as pointId, + w.wishlist_status as wishlistStatus FROM zxjp_store_wishlist w LEFT JOIN zxjp_store_type st ON st.id = w.store_type_id WHERE w.line_id = #{lineId} @@ -56,48 +85,50 @@ AND w.store_type_id = #{storeTypeId} - GROUP BY w.version_no ORDER BY w.create_time DESC - - + + UPDATE zxjp_store_wishlist + SET wishlist_status = 5, + update_time = NOW() + WHERE wishlist_status = 0 + and line_id = #{lineId} + AND deleted = 0 + + + + diff --git a/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistOptionMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistOptionMapper.xml new file mode 100644 index 000000000..113a105c8 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/order/StoreWishlistOptionMapper.xml @@ -0,0 +1,36 @@ + + + + + + INSERT INTO zxjp_store_wishlist_option + (wishlist_id, option_id, quantity, deleted, create_time, update_time) + VALUES + + (#{item.wishlistId}, #{item.optionId}, #{item.quantity}, 0, NOW(), NOW()) + + + + + UPDATE zxjp_store_wishlist_option + SET deleted = 1, + update_time = NOW() + WHERE deleted = 0 + AND wishlist_id IN + + #{wishlistId} + + + + + + diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PointInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PointInfoDO.java index 7655f07b7..e8d44f804 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/PointInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PointInfoDO.java @@ -176,4 +176,40 @@ public class PointInfoDO { @Column(name = "protection_distance") private Integer protectionDistance; + + /** + * 位置描述 字典表 + */ + @Column(name = "location_desc_code") + private String locationDescCode; + + /** + * 是否用于正新AI店(1是0否) + */ + @Column(name = "use_ai") + private Integer useAi; + + /** + * 门内净深(m) + */ + @Column(name = "door_inner_depth") + private java.math.BigDecimal doorInnerDepth; + + /** + * 门内净宽(m) + */ + @Column(name = "door_inner_width") + private java.math.BigDecimal doorInnerWidth; + + /** + * 门内净高(m) + */ + @Column(name = "door_inner_height") + private java.math.BigDecimal doorInnerHeight; + + /** + * 其他说明 + */ + @Column(name = "other_desc") + private String otherDesc; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistDO.java index 79e86b4f9..a59d75b4d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistDO.java @@ -30,18 +30,18 @@ public class StoreWishlistDO { @Column(name = "store_type_id") private Long storeTypeId; - @Column(name = "option_id") - private Long optionId; - - @Column(name = "quantity") - private BigDecimal quantity; - @Column(name = "total_amount") private BigDecimal totalAmount; @Column(name = "version_no") private String versionNo; + @Column(name = "wishlist_status") + private Integer wishlistStatus; + + @Column(name = "point_id") + private Long pointId; + @Column(name = "deleted") private Integer deleted; @@ -50,4 +50,6 @@ public class StoreWishlistDO { @Column(name = "update_time") private Date updateTime; + + private String remark; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistOptionDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistOptionDO.java new file mode 100644 index 000000000..782186c40 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/order/StoreWishlistOptionDO.java @@ -0,0 +1,44 @@ +package com.cool.store.entity.order; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "zxjp_store_wishlist_option") +public class StoreWishlistOptionDO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "wishlist_id") + private Long wishlistId; + + @Column(name = "option_id") + private Long optionId; + + @Column(name = "quantity") + private BigDecimal quantity; + + @Column(name = "deleted") + private Integer deleted; + + @Column(name = "create_time") + private Date createTime; + + @Column(name = "update_time") + private Date updateTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AddPointDetailRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AddPointDetailRequest.java index 47104c07a..d55748a61 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AddPointDetailRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AddPointDetailRequest.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; import java.util.Objects; @Data @@ -255,6 +256,24 @@ public class AddPointDetailRequest { @ApiModelProperty("保护距离") private Integer protectionDistance; + @ApiModelProperty("位置描述 字典表") + private String locationDescCode; + + @ApiModelProperty("是否用于正新AI店(1是0否)") + private Integer useAi; + + @ApiModelProperty("门内净深(m)") + private BigDecimal doorInnerDepth; + + @ApiModelProperty("门内净宽(m)") + private BigDecimal doorInnerWidth; + + @ApiModelProperty("门内净高(m)") + private BigDecimal doorInnerHeight; + + @ApiModelProperty("其他说明") + private String otherDesc; + public static PointDetailInfoDO convertDO(AddPointDetailRequest request) { PointDetailInfoDO result = new PointDetailInfoDO(); result.setBusinessStatus(request.getBusinessStatus()); @@ -323,6 +342,12 @@ public class AddPointDetailRequest { result.setDistrict(request.getDistrict()); result.setTownship(request.getTownship()); result.setProtectionDistance(request.getProtectionDistance()); + result.setLocationDescCode(request.getLocationDescCode()); + result.setUseAi(request.getUseAi()); + result.setDoorInnerDepth(request.getDoorInnerDepth()); + result.setDoorInnerWidth(request.getDoorInnerWidth()); + result.setDoorInnerHeight(request.getDoorInnerHeight()); + result.setOtherDesc(request.getOtherDesc()); if(StringUtils.isAnyBlank(result.getProvince(),result.getCity(), result.getDistrict(), result.getTownship())){ GeoMapUtil.AddressInfo addressInfo = GeoMapUtil.reverseGeoCoding(result.getLatitude(), result.getLongitude()); if(Objects.nonNull(addressInfo)){ diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/RecommendPointPageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/RecommendPointPageRequest.java index d0fe604be..79bed36f2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/RecommendPointPageRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/RecommendPointPageRequest.java @@ -23,12 +23,17 @@ public class RecommendPointPageRequest extends PageBasicInfo { @ApiModelProperty(value = "拓展专员", hidden = true) private String developmentManager; + @ApiModelProperty(value = "线索ID", hidden = true) + private Long lineId; + @ApiModelProperty(value = "铺位状态列表", hidden = true) private List pointStatusList; @ApiModelProperty(value = "铺位名称 模糊搜索") private String pointName; + private Integer useAi; + public List getPointStatusList() { List pointStatusList = new ArrayList<>(); if (pointStatus != null) { diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/UpdatePointDetailRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/UpdatePointDetailRequest.java index 14586ef99..1bb2a1d41 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/UpdatePointDetailRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/UpdatePointDetailRequest.java @@ -89,6 +89,12 @@ public class UpdatePointDetailRequest extends AddPointDetailRequest { result.setDistrict(request.getDistrict()); result.setTownship(request.getTownship()); result.setProtectionDistance(request.getProtectionDistance()); + result.setLocationDescCode(request.getLocationDescCode()); + result.setUseAi(request.getUseAi()); + result.setDoorInnerDepth(request.getDoorInnerDepth()); + result.setDoorInnerWidth(request.getDoorInnerWidth()); + result.setDoorInnerHeight(request.getDoorInnerHeight()); + result.setOtherDesc(request.getOtherDesc()); if(StringUtils.isAnyBlank(result.getProvince(),result.getCity(), result.getDistrict(), result.getTownship())){ GeoMapUtil.AddressInfo addressInfo = GeoMapUtil.reverseGeoCoding(result.getLatitude(), result.getLongitude()); if(Objects.nonNull(addressInfo)){ diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistDelRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistDelRequest.java index 711c1c77c..5e2c91a3c 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistDelRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistDelRequest.java @@ -15,12 +15,9 @@ import javax.validation.constraints.NotNull; @Data public class MiniStoreWishlistDelRequest { - @ApiModelProperty("店型ID") + @ApiModelProperty("心愿单ID") @NotNull - private Long storeTypeId; + private Long wishlistId; - @ApiModelProperty("版本号") - @NotBlank - private String versionNo; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistSaveRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistSaveRequest.java index b0544da05..6a49887a6 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistSaveRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/order/MiniStoreWishlistSaveRequest.java @@ -10,8 +10,8 @@ import java.util.List; @Data public class MiniStoreWishlistSaveRequest { - @ApiModelProperty("版本号") - private String versionNo; + @ApiModelProperty("心愿单ID-修改") + private Long wishlistId; @ApiModelProperty(value = "店型ID", required = true) @NotNull(message = "店型ID不能为空") diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishAllListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishAllListRequest.java index 78fd632e8..30eff2340 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishAllListRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishAllListRequest.java @@ -15,5 +15,6 @@ public class WishAllListRequest extends PageBasicInfo { private Long storeTypeId; + private Integer wishlistStatus; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistAuditRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistAuditRequest.java new file mode 100644 index 000000000..f6a8990c6 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistAuditRequest.java @@ -0,0 +1,21 @@ +package com.cool.store.request.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Auther zx_szh + * @Date 2026/3/19 10:22 + * @Version 1.0 + */ +@Data +public class WishlistAuditRequest { + + @ApiModelProperty("心愿单ID") + private Long wishlistId; + @ApiModelProperty("1-通过 0-拒绝") + private Integer auditStatus; + @ApiModelProperty("备注") + private String remark; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistBindPointRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistBindPointRequest.java new file mode 100644 index 000000000..b0bbb52d9 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/order/WishlistBindPointRequest.java @@ -0,0 +1,23 @@ +package com.cool.store.request.order; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Auther zx_szh + * @Date 2026/3/18 16:08 + * @Version 1.0 + */ +@Data +public class WishlistBindPointRequest { + + @ApiModelProperty("点位ID") + @NotNull + private Long pointId; + @ApiModelProperty("心愿单ID") + @NotNull + private Long wishlistId; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreOrderDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreOrderDetailVO.java index 58f376e7a..498fe5109 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreOrderDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreOrderDetailVO.java @@ -43,6 +43,8 @@ public class MiniStoreOrderDetailVO { @ApiModelProperty("门店类型") private Integer storeType; + private String storeTypeName; + @ApiModelProperty("下单时间") private Date createTime; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistDetailVO.java index 5db346fdc..ef580352b 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistDetailVO.java @@ -21,6 +21,16 @@ public class MiniStoreWishlistDetailVO { @ApiModelProperty("总金额") private BigDecimal totalAmount; + private Long pointId; + + private Long shopId; + + private Integer storeType; + + private Long id; + + private Integer wishlistStatus; + private Date createTime; private String partnerName; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistListVO.java index a21dc8e81..f8175dcea 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/MiniStoreWishlistListVO.java @@ -12,9 +12,18 @@ import java.util.List; @Data public class MiniStoreWishlistListVO { + @ApiModelProperty("心愿单ID") + private Long wishlistId; + @ApiModelProperty("店型ID") private Long storeTypeId; + private Long pointId; + + private Long shopId; + + private Integer wishlistStatus; + private Long lineId; private String partnerName; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/point/PointDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/point/PointDetailVO.java index c82a02b42..1517d8d31 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/point/PointDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/point/PointDetailVO.java @@ -284,6 +284,24 @@ public class PointDetailVO { @ApiModelProperty("保护距离") private Integer protectionDistance; + @ApiModelProperty("位置描述 字典表") + private String locationDescCode; + + @ApiModelProperty("是否用于正新AI店(1是0否)") + private Integer useAi; + + @ApiModelProperty("门内净深(m)") + private java.math.BigDecimal doorInnerDepth; + + @ApiModelProperty("门内净宽(m)") + private java.math.BigDecimal doorInnerWidth; + + @ApiModelProperty("门内净高(m)") + private java.math.BigDecimal doorInnerHeight; + + @ApiModelProperty("其他说明") + private String otherDesc; + public static PointDetailVO convertVO(PointInfoDO pointInfo, PointDetailInfoDO pointDetailInfo) { PointDetailVO result = new PointDetailVO(); result.setPointId(pointInfo.getId()); @@ -371,6 +389,12 @@ public class PointDetailVO { result.setDistrictCode(pointInfo.getDistrictCode()); result.setLocation(pointInfo.getPointLocation()); result.setProtectionDistance(pointInfo.getProtectionDistance()); + result.setLocationDescCode(pointInfo.getLocationDescCode()); + result.setUseAi(pointInfo.getUseAi()); + result.setDoorInnerDepth(pointInfo.getDoorInnerDepth()); + result.setDoorInnerWidth(pointInfo.getDoorInnerWidth()); + result.setDoorInnerHeight(pointInfo.getDoorInnerHeight()); + result.setOtherDesc(pointInfo.getOtherDesc()); return result; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PointService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PointService.java index 18ed80ec6..be6f67766 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PointService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PointService.java @@ -6,6 +6,7 @@ import com.cool.store.request.*; import com.cool.store.request.point.AddPointFinancialDataRequest; import com.cool.store.request.point.UpdatePointFinancialDataRequest; import com.cool.store.vo.LinePointBaseInfoVO; +import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.point.*; import com.cool.store.vo.shop.RentInfoToDoVO; import com.cool.store.vo.shop.ShopPointBaseInfoVO; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ShopService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ShopService.java index 3f3eb7926..d3127c072 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ShopService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ShopService.java @@ -31,6 +31,8 @@ public interface ShopService { */ Integer initShop(LineInfoDO lineInfo); + Long initAiShop(LineInfoDO lineInfo); + /** * 获取首页数据 * @param lineId diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java index 4b6c866a1..9ff19936a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java @@ -326,12 +326,12 @@ public class DeskServiceImpl implements DeskService { List subStageStatusList = new ArrayList<>(); List userRoleIds = enterpriseUserRoleMapper.getUserRoleIds(user.getUserId()); //两个角色都包含 - if (userRoleIds.contains(UserRoleEnum.HEAD_OF_DESIGN.getCode())&&userRoleIds.contains(UserRoleEnum.FINANCE.getCode())){ + if (userRoleIds.contains(UserRoleEnum.AI_STORE_TYPE_APPROVE.getCode())&&userRoleIds.contains(UserRoleEnum.FINANCE.getCode())){ subStageStatusList.add(SHOP_SUB_STAGE_STATUS_281.getShopSubStageStatus()); subStageStatusList.add(SHOP_SUB_STAGE_STATUS_282.getShopSubStageStatus()); } - //加盟内勤 待确认 - if (userRoleIds.contains(UserRoleEnum.HEAD_OF_DESIGN.getCode())){ + //立规 待确认 + if (userRoleIds.contains(UserRoleEnum.AI_STORE_TYPE_APPROVE.getCode())){ subStageStatusList.add(SHOP_SUB_STAGE_STATUS_281.getShopSubStageStatus()); } //如果是财务 待财务确认 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/IntentAgreementServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/IntentAgreementServiceImpl.java index c3525d398..218586ddc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/IntentAgreementServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/IntentAgreementServiceImpl.java @@ -236,6 +236,9 @@ public class IntentAgreementServiceImpl extends LineFlowService implements Inten @Override @Transactional(rollbackFor = Exception.class) public Boolean skipIntentAgreement(Long lineId, LoginUserInfo user) { + if (user==null){ + user = new LoginUserInfo(); + } log.info("skipIntentAgreement lineId:{},操作人:{}", lineId, user.getName()); LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId); if (lineInfo == null) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/JoinIntentionServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/JoinIntentionServiceImpl.java index 82c4a1f4d..6ac2e26be 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/JoinIntentionServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/JoinIntentionServiceImpl.java @@ -3,6 +3,7 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; +import com.cool.store.dao.order.StoreWishlistDAO; import com.cool.store.entity.*; import com.cool.store.enums.*; import com.cool.store.exception.ServiceException; @@ -66,6 +67,8 @@ public class JoinIntentionServiceImpl extends LineFlowService implements JoinInt CommonService commonService; @Resource HyPartnerUserInfoDAO hyPartnerUserInfoDAO; + @Resource + StoreWishlistDAO wishlistDAO; @Override @@ -147,6 +150,8 @@ public class JoinIntentionServiceImpl extends LineFlowService implements JoinInt hyPartnerUserInfoDO.setDownstreamSystemSalting(salt); hyPartnerUserInfoDO.setUpdateTime(new Date()); hyPartnerUserInfoDAO.updatePasswordByPartnerId(hyPartnerUserInfoDO); + log.info("auditPass:大区老总审核通过"); + wishlistDAO.updateByLineId(lineInfo.getId()); } return Boolean.TRUE; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PointServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PointServiceImpl.java index 7eaf5ec3a..fe83b2b34 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PointServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PointServiceImpl.java @@ -840,6 +840,10 @@ public class PointServiceImpl implements PointService { @Override public PageInfo getRecommendPointList(RecommendPointPageRequest request) { + if (StringUtils.isEmpty(request.getDevelopmentManager())){ + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(request.getLineId()); + request.setDevelopmentManager(lineInfo.getInvestmentManager()); + } List resultList = new ArrayList(); Page pointPage = pointInfoDAO.getRecommendPointList(request); if (Objects.nonNull(pointPage) && CollectionUtils.isNotEmpty(pointPage.getResult())) { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java index c54f06dc7..105447357 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java @@ -3,12 +3,16 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; +import com.cool.store.dao.order.StoreOrderDAO; +import com.cool.store.dao.store.StoreTypeDAO; import com.cool.store.dto.OpenInfoDTO; import com.cool.store.dto.Preparation.PreparationDTO; import com.cool.store.dto.Preparation.ScheduleDTO; import com.cool.store.dto.ShopNameAndCodeDTO; import com.cool.store.dto.UserDTO; import com.cool.store.entity.*; +import com.cool.store.entity.order.StoreOrderDO; +import com.cool.store.entity.store.StoreTypeDO; import com.cool.store.enums.*; import com.cool.store.enums.point.*; import com.cool.store.enums.point.ShopStatusEnum; @@ -119,6 +123,9 @@ public class ShopServiceImpl implements ShopService { ShopAccountService shopAccountService; @Resource PushService pushService; + @Autowired + private StoreOrderDAO storeOrderDAO; + private StoreTypeDAO storeTypeDAO; @Override @@ -171,6 +178,46 @@ public class ShopServiceImpl implements ShopService { return result; } + @Override + public Long initAiShop(LineInfoDO lineInfo) { + if (Objects.isNull(lineInfo)) { + throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST); + } + List shopList = shopInfoDAO.getShopList(lineInfo.getId()); + int shopSize = shopList.size(); + List addShopList = new ArrayList<>(); + ShopInfoDO shopInfo = new ShopInfoDO(); + shopInfo.setRegionId(lineInfo.getRegionId()); + shopInfo.setLineId(lineInfo.getId()); + shopInfo.setPartnerId(lineInfo.getPartnerId()); + //初始化 + shopInfo.setWantShopAreaId(lineInfo.getWantShopAreaId()); + shopInfo.setDevelopmentManager(lineInfo.getDevelopmentManager()); + shopInfo.setFranchiseBrand(lineInfo.getFranchiseBrand()); + shopInfo.setJoinMode(lineInfo.getJoinMode()); + shopInfo.setStoreNum(RandomEightCharCodeUtils.getCode()); + shopInfo.setSupervisorUserId(lineInfo.getInvestmentManager()); + shopInfo.setShopName("AI店铺" + NumberConverter.convertArabicToChinese(shopSize + 1)); + shopInfo.setCreateTime(new Date()); + shopInfo.setUseStandardStore(lineInfo.getUseStandardStore()); + shopInfo.setInvestmentManager(lineInfo.getInvestmentManager()); + shopInfo.setInvestRegionId(lineInfo.getInvestRegionId()); + addShopList.add(shopInfo); + shopInfoDAO.batchAddShop(addShopList); + List shopIds = addShopList.stream().map(ShopInfoDO::getId).collect(Collectors.toList()); + Integer result = shopStageInfoDAO.initShopStageInfo(lineInfo, addShopList, true); + //初始化平台账号 + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByPartnerId(lineInfo.getPartnerId()); + shopAccountDAO.initShopAccount(hyPartnerUserInfoDO, shopIds); + HashMap map = new HashMap<>(); + map.put("partnerUsername", lineInfo.getUsername()); + map.put("partnerMobile", lineInfo.getMobile()); + commonService.sendQWMessage(Collections.singletonList(lineInfo.getInvestmentManager()), + MessageEnum.MESSAGE_21, + map); + return shopInfo.getId(); + } + /** * @Auther: wangshuo * @Date: 2025/1/13 @@ -883,6 +930,7 @@ public class ShopServiceImpl implements ShopService { case SHOP_SUB_STAGE_STATUS_280: case SHOP_SUB_STAGE_STATUS_283: case SHOP_SUB_STAGE_STATUS_284: + case SHOP_SUB_STAGE_STATUS_281_5: return Collections.singletonList(new UserDTO(lineInfo.getUsername(), lineInfo.getMobile())); case SHOP_SUB_STAGE_STATUS_11: @@ -988,7 +1036,7 @@ public class ShopServiceImpl implements ShopService { case SHOP_SUB_STAGE_STATUS_172: return getUsersByRoleAndRegion(ORDER_GROUP, shopInfo.getRegionId()); case SHOP_SUB_STAGE_STATUS_281: - return getUsersByRolesAndRegion(Arrays.asList(JOIN_OFFICE), shopInfo.getInvestRegionId()); + return getUsersByRole(AI_STORE_TYPE_APPROVE); default: return Collections.emptyList(); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java index 9ac28943c..91c21f798 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java @@ -50,10 +50,15 @@ public interface MiniStoreOrderService { Boolean deleted(MiniStoreWishlistDelRequest miniStoreWishlistDelRequest,PartnerUserInfoVO userInfoVO); - MiniStoreWishlistDetailVO wishlistDetail(Long storeTypeId,String versionNo, Long lineId); + MiniStoreWishlistDetailVO wishlistDetail(Long wishlistId); List wishlistList(PartnerUserInfoVO userInfoVO); PageInfo wishAllList(WishAllListRequest request); + Boolean wishlistBindPoint(WishlistBindPointRequest request); + + Boolean wishlistApprove(WishlistAuditRequest request,LoginUserInfo userInfo); + + MiniStoreWishlistDetailVO getCurrentShopBindWishlist(Long shopId); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java index ef3c7108a..d1ed01fba 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java @@ -15,9 +15,11 @@ import com.cool.store.dao.order.PreAllocationRecordDAO; import com.cool.store.dao.order.StoreOrderDAO; import com.cool.store.dao.order.StoreOrderOptionSnapshotDAO; import com.cool.store.dao.order.StoreWishlistDAO; +import com.cool.store.dao.order.StoreWishlistOptionDAO; import com.cool.store.dao.store.StoreTypeDAO; import com.cool.store.dao.store.StoreTypeOptionDAO; import com.cool.store.dao.wallet.WalletTradeDAO; +import com.cool.store.dto.PointInfoDTO; import com.cool.store.entity.*; import com.cool.store.entity.config.ConfigOptionDO; import com.cool.store.entity.dict.SysDictTableDO; @@ -26,6 +28,7 @@ import com.cool.store.entity.order.PreAllocationRecordDO; import com.cool.store.entity.order.StoreOrderDO; import com.cool.store.entity.order.StoreOrderOptionSnapshotDO; import com.cool.store.entity.order.StoreWishlistDO; +import com.cool.store.entity.order.StoreWishlistOptionDO; import com.cool.store.entity.store.StoreTypeDO; import com.cool.store.entity.store.StoreTypeOptionDO; import com.cool.store.entity.wallet.WalletTradeDO; @@ -33,15 +36,21 @@ import com.cool.store.enums.*; import com.cool.store.enums.fees.AllocationPayStatusEnum; import com.cool.store.enums.fees.WalletFeeItemEnum; import com.cool.store.enums.order.StoreOrderStatusEnum; +import com.cool.store.enums.order.WishlistStatusEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.enums.wallet.WalletTradeModuleEnum; import com.cool.store.exception.ServiceException; import com.cool.store.dto.wallet.BatchTransferDTO; import com.cool.store.mapper.ShopAuditInfoMapper; +import com.cool.store.request.PointRecommendLineRequest; +import com.cool.store.request.SelectPointRequest; +import com.cool.store.request.SysRoleRequest; import com.cool.store.request.order.*; import com.cool.store.request.dict.DictColumnQueryRequest; import com.cool.store.request.wallet.BatchTransferRequest; import com.cool.store.service.OperationLogService; +import com.cool.store.service.PointService; +import com.cool.store.service.ShopService; import com.cool.store.service.UserAuthMappingService; import com.cool.store.service.dict.DictColumnService; import com.cool.store.service.order.MiniStoreOrderService; @@ -68,9 +77,11 @@ import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.text.MessageFormat; import java.text.SimpleDateFormat; @@ -93,6 +104,7 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { private final StoreOrderDAO storeOrderDAO; private final StoreOrderOptionSnapshotDAO snapshotDAO; private final StoreWishlistDAO storeWishlistDAO; + private final StoreWishlistOptionDAO storeWishlistOptionDAO; private final ShopInfoDAO shopInfoDAO; private final LineInfoDAO lineInfoDAO; private final StoreTypeDAO storeTypeDAO; @@ -114,6 +126,10 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { private final OperationLogDAO operationLogDAO; private final ConfigItemCategoryDAO configItemCategoryDAO; private final ConfigItemDAO configItemDAO; + private final QualificationsInfoDAO qualificationsInfoDAO; + private final PointService pointService; + private final PointInfoDAO pointInfoDAO; + private final ShopService shopService; @Override @@ -329,10 +345,11 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_280, user.getPartnerId(), user.getUsername(), OperationTypeEnum.OPERATION_TYPE_0, "店型选购提交", OperationStatusEnum.PROCESSED); - List users = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Collections.singletonList(UserRoleEnum.JOIN_OFFICE), - shopInfo.getInvestRegionId()); + SysRoleRequest sysRoleRequest = new SysRoleRequest(); + sysRoleRequest.setRoleName(AI_STORE_TYPE_APPROVE.getDesc()); + List userListByRole = userAuthMappingService.findUserListByRole(sysRoleRequest, false); operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281, - user.getPartnerId(), users, + user.getPartnerId(), userListByRole, OperationTypeEnum.OPERATION_TYPE_1, "店型选购待立规审批", OperationStatusEnum.NOT_PROCESSED, 1); return order.getId(); @@ -349,11 +366,14 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(order.getShopId()); + StoreTypeDO storeType = storeTypeDAO.getById(order.getStoreTypeId()); + MiniStoreOrderDetailVO vo = new MiniStoreOrderDetailVO(); MiniStoreOrderDetailVO.OrderInfoVO orderInfo = new MiniStoreOrderDetailVO.OrderInfoVO(); orderInfo.setStoreType(order.getStoreType()); orderInfo.setStoreTypeId(order.getStoreTypeId()); + orderInfo.setStoreTypeName(storeType.getStoreTypeName()); orderInfo.setOrderNo(order.getOrderNo()); orderInfo.setOrderId(order.getId()); orderInfo.setShopId(order.getShopId()); @@ -557,15 +577,6 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { //处理审批记录 通过 handleAudit(order.getShopId(),user,0,request.getRemark(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281); - List users = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Arrays.asList(HEAD_OF_DESIGN), shopInfoDAO.getShopInfo(order.getShopId()).getRegionId()); - List userIds = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(users)) { - userIds = users.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList()); - } - operationLogService.addOperationLog(order.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_5, - user.getUserId(), users, - OperationTypeEnum.OPERATION_TYPE_1, "店型选配待招商经理审批", OperationStatusEnum.NOT_PROCESSED); - } if (INVEST_MANAGER_CONFIRM.getCode().equals(currentStatus)){ order.setStatus(FINANCIAL_CONFIRM.getCode()); @@ -574,9 +585,6 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { //修改阶段数据 shopStageInfoDAO.updateShopStageInfo(order.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_282); - //处理审批记录 通过 - handleAudit(order.getShopId(),user,0,request.getRemark(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_5); - } return Boolean.TRUE; } @@ -603,12 +611,10 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { ShopSubStageStatusEnum current = null; if (WAIT_CONFIRM.getCode().equals(currentStatus)){ current = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281; + //处理审批记录 + handleAudit(order.getShopId(),userInfo,1,request.getRemark(),current); } - if (INVEST_MANAGER_CONFIRM.getCode().equals(currentStatus)){ - current = ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_5; - } - //处理审批记录 - handleAudit(order.getShopId(),userInfo,1,request.getRemark(),current); + return Boolean.TRUE; } @@ -825,11 +831,11 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_280, user.getPartnerId(), user.getUsername(), OperationTypeEnum.OPERATION_TYPE_0, "店型选购提交", OperationStatusEnum.PROCESSED); - ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(order.getShopId()); - List users = userAuthMappingService.getUserIdByRoleEnumAndRegionId(Collections.singletonList(UserRoleEnum.JOIN_OFFICE), - shopInfo.getInvestRegionId()); + SysRoleRequest sysRoleRequest = new SysRoleRequest(); + sysRoleRequest.setRoleName(AI_STORE_TYPE_APPROVE.getDesc()); + List userListByRole = userAuthMappingService.findUserListByRole(sysRoleRequest, false); operationLogService.addOperationLog(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281, - user.getPartnerId(), users, + user.getPartnerId(), userListByRole, OperationTypeEnum.OPERATION_TYPE_1, "店型选购待立规审批", OperationStatusEnum.NOT_PROCESSED, 1); return order.getId(); @@ -1292,12 +1298,14 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); } - if (request.getVersionNo() != null) { - storeWishlistDAO.softDeleteByLineIdAndStoreTypeAndVersion(userInfoVO.getLineId(), request.getStoreTypeId(), request.getVersionNo()); + if (request.getWishlistId() != null) { + MiniStoreWishlistDelRequest miniStoreWishlistDelRequest = new MiniStoreWishlistDelRequest(); + miniStoreWishlistDelRequest.setWishlistId(request.getWishlistId()); + //删除逻辑 + deleted(miniStoreWishlistDelRequest,null); } String versionNo = generateOrderNo(); - List saveList = new ArrayList<>(); BigDecimal totalAmount = BigDecimal.ZERO; BigDecimal storeFixedAmount = safe(storeType.getFranchiseFee()) @@ -1326,67 +1334,279 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { BigDecimal quantity = selected.getQuantity(); BigDecimal defaultQty = binding.getDefaultQuantity(); BigDecimal amount = BigDecimal.ZERO; - //原价 BigDecimal originalPrice = cfg.getOriginalOptionPrice(); - if(quantity.compareTo(defaultQty)<=0){ + if (quantity.compareTo(defaultQty) <= 0) { amount = price.multiply(quantity); - }else { - // 店型优惠价*默认数量 + 原价 *(选择数量-默认数量) + } else { amount = price.multiply(defaultQty).add(originalPrice.multiply(quantity.subtract(defaultQty))); } totalAmount = totalAmount.add(amount); - - saveList.add(StoreWishlistDO.builder() - .lineId(userInfoVO.getLineId()) - .storeTypeId(request.getStoreTypeId()) - .optionId(selected.getOptionId()) - .quantity(selected.getQuantity()) - .totalAmount(BigDecimal.ZERO) - .versionNo(versionNo) - .deleted(0) - .build()); } totalAmount = storeFixedAmount.add(totalAmount); - for (StoreWishlistDO row : saveList) { - row.setTotalAmount(totalAmount); + StoreWishlistDO wishlist = StoreWishlistDO.builder() + .lineId(userInfoVO.getLineId()) + .storeTypeId(request.getStoreTypeId()) + .totalAmount(totalAmount) + .versionNo(versionNo) + .wishlistStatus(getWishlistStatus(userInfoVO.getLineId())) + .deleted(0) + .build(); + storeWishlistDAO.insert(wishlist); + + List optionSaveList = new ArrayList<>(); + for (MiniStoreWishlistSaveRequest.SelectedOption selected : request.getSelectedOptions()) { + optionSaveList.add(StoreWishlistOptionDO.builder() + .wishlistId(wishlist.getId()) + .optionId(selected.getOptionId()) + .quantity(selected.getQuantity()) + .deleted(0) + .build()); } - storeWishlistDAO.insertBatch(saveList); + storeWishlistOptionDAO.insertBatch(optionSaveList); return Boolean.TRUE; } + + /** + * 获取线索阶段 + * @param lineId + * @return + */ + private Integer getWishlistStatus(Long lineId){ + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId); + if (lineInfo.getWorkflowSubStageStatus()>=WorkflowSubStageStatusEnum.INTENT_5.getCode()){ + return WishlistStatusEnum.COMPLETE_POINT.getCode(); + } + return WishlistStatusEnum.AGREE.getCode(); + } + + + @Override public Boolean deleted(MiniStoreWishlistDelRequest request, PartnerUserInfoVO userInfoVO) { - storeWishlistDAO.softDeleteByLineIdAndStoreTypeAndVersion(userInfoVO.getLineId(),request.getStoreTypeId(),request.getVersionNo()); + StoreWishlistDO storewishlist = storeWishlistDAO.getById(request.getWishlistId()); + if (storewishlist==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + storewishlist.setDeleted(1); + storeWishlistDAO.updateByExampleSelective(storewishlist); + //更新配置项数据 + storeWishlistOptionDAO.softDeleteByWishlistIds(Arrays.asList(request.getWishlistId())); return Boolean.TRUE; } @Override - public MiniStoreWishlistDetailVO wishlistDetail(Long storeTypeId,String versionNo, Long lineId) { - if (lineId == null) { + public MiniStoreWishlistDetailVO wishlistDetail(Long wishlistId) { + StoreWishlistDO storeWishlistDO = storeWishlistDAO.getById(wishlistId); + if (storeWishlistDO==null){ throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); } + return convert(storeWishlistDO); + } - List rows = storeWishlistDAO.listByLineIdAndStoreTypeAndVersion(lineId, storeTypeId, versionNo); - if (CollectionUtils.isEmpty(rows)){ + @Override + public List wishlistList( PartnerUserInfoVO userInfoVO) { + if (userInfoVO == null || userInfoVO.getLineId() == null) { + return Collections.emptyList(); + } + List wishlistList = storeWishlistDAO.listByLineId(userInfoVO.getLineId(), null); + if (CollectionUtils.isEmpty(wishlistList)) { + return Collections.emptyList(); + } + + List wishlistIds = wishlistList.stream().map(MiniStoreWishlistListVO::getWishlistId).filter(Objects::nonNull).collect(Collectors.toList()); + List optionRows = storeWishlistOptionDAO.listByWishlistIds(wishlistIds); + + Map> map = optionRows.stream().collect(Collectors.groupingBy(StoreWishlistOptionDO::getWishlistId)); + + List optionIds = optionRows.stream().distinct().map(StoreWishlistOptionDO::getOptionId).collect(Collectors.toList()); + Map optionMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(optionIds)) { + List options = configOptionDAO.listActiveByIds(optionIds); + optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); + } + List pointList = wishlistList.stream().filter(x -> x.getPointId() != null).map(MiniStoreWishlistListVO::getPointId).collect(Collectors.toList()); + List pointDOList = pointInfoDAO.getPointListByIds(pointList); + Map pointMap = pointDOList.stream().filter(x -> x.getShopId() != null).collect(Collectors.toMap(PointInfoDO::getId, PointInfoDO::getShopId)); + + for (MiniStoreWishlistListVO item : wishlistList) { + List storeWishlistOptionDOS = map.get(item.getWishlistId()); + List optionList = new ArrayList<>(); + if (item.getPointId()!=null){ + item.setShopId(pointMap.get(item.getPointId())); + } + for (StoreWishlistOptionDO row : storeWishlistOptionDOS) { + MiniStoreWishlistListVO.OptionVO vo = new MiniStoreWishlistListVO.OptionVO(); + vo.setOptionId(row.getOptionId()); + vo.setQuantity(row.getQuantity()); + ConfigOptionDO cfg = optionMap.get(row.getOptionId()); + if (cfg != null) { + vo.setOptionName(cfg.getOptionName()); + vo.setOptionPrice(cfg.getOptionPrice()); + vo.setImageUrl(cfg.getImageUrl()); + } + optionList.add(vo); + } + item.setOptions(optionList); + } + + return wishlistList; + } + + @Override + public PageInfo wishAllList(WishAllListRequest request) { + PageHelper.startPage(request.getPageNum(),request.getPageSize()); + List wishlist = storeWishlistDAO.listByVersionList(request.getKeyword(), request.getStoreTypeId(),request.getWishlistStatus()); + if (CollectionUtils.isEmpty(wishlist)){ + return new PageInfo<>(); + } + PageInfo result = new PageInfo<>(wishlist); + List lineIdList = wishlist.stream().map(MiniStoreWishlistListVO::getLineId).collect(Collectors.toList()); + List lineList = lineInfoDAO.getByLineIds(lineIdList); + Map map = lineList.stream().collect(Collectors.toMap(LineInfoDO::getId, data -> data)); + + List wishlistIds = wishlist.stream().map(MiniStoreWishlistListVO::getWishlistId).filter(Objects::nonNull).collect(Collectors.toList()); + List optionRows = storeWishlistOptionDAO.listByWishlistIds(wishlistIds); + + Map> wishlistOptionMap = optionRows.stream().collect(Collectors.groupingBy(StoreWishlistOptionDO::getWishlistId)); + + List optionIds = optionRows.stream().distinct().map(StoreWishlistOptionDO::getOptionId).collect(Collectors.toList()); + Map optionMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(optionIds)) { + List options = configOptionDAO.listActiveByIds(optionIds); + optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); + } + + for (MiniStoreWishlistListVO item : wishlist) { + LineInfoDO lineInfoDO = map.get(item.getLineId()); + if (lineInfoDO != null) { + item.setPartnerMobile(lineInfoDO.getMobile()); + item.setPartnerName(lineInfoDO.getUsername()); + } + List storeWishlistOptionDOS = wishlistOptionMap.get(item.getWishlistId()); + + List optionList = new ArrayList<>(); + for (StoreWishlistOptionDO row : storeWishlistOptionDOS) { + MiniStoreWishlistListVO.OptionVO vo = new MiniStoreWishlistListVO.OptionVO(); + vo.setOptionId(row.getOptionId()); + vo.setQuantity(row.getQuantity()); + ConfigOptionDO cfg = optionMap.get(row.getOptionId()); + if (cfg != null) { + vo.setOptionName(cfg.getOptionName()); + vo.setOptionPrice(cfg.getOptionPrice()); + vo.setImageUrl(cfg.getImageUrl()); + } + optionList.add(vo); + } + item.setOptions(optionList); + } + return result; + } + + @Override + public Boolean wishlistBindPoint(WishlistBindPointRequest request) { + StoreWishlistDO storeWishlist = storeWishlistDAO.getById(request.getWishlistId()); + if (!WishlistStatusEnum.COMPLETE_POINT.getCode().equals(storeWishlist.getWishlistStatus())){ + throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE); + } + //校验铺位是否关联了其他心愿单 且心愿单不是拒绝状态 + Integer pointBindWishlistCount = storeWishlistDAO.getPointBindWishlistCount(request.getPointId(), WishlistStatusEnum.REJECT.getCode()); + if (pointBindWishlistCount>0){ + throw new ServiceException(ErrorCodeEnum.CURRENT_POINT_BIND_OTHER_WISHLIST); + } + storeWishlist.setPointId(request.getPointId()); + storeWishlist.setWishlistStatus(WishlistStatusEnum.LI_GUI_APPROVE.getCode()); + storeWishlistDAO.updateByExampleSelective(storeWishlist); + return Boolean.TRUE; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean wishlistApprove(WishlistAuditRequest request, LoginUserInfo userInfo) { + log.info("wishlistApprove:{},审批人:{}",JSONObject.toJSONString(request),userInfo.getName()); + //查看心愿单状态 + StoreWishlistDO wishlistDO = storeWishlistDAO.getById(request.getWishlistId()); + if (wishlistDO==null){ + throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE); + } + if (!WishlistStatusEnum.LI_GUI_APPROVE.getCode().equals(wishlistDO.getWishlistStatus())){ + throw new ServiceException(ErrorCodeEnum.TASK_STATUS_NOT_ALLOW_OPERATE); + } + Integer wishlistStatus = null; + //通过 + if (request.getAuditStatus()==1){ + //查看线索阶段是否完成 如果没有完成 直接跳过意向金和意向协议阶段 + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(wishlistDO.getLineId()); + if (Objects.isNull(lineInfo.getRegionId())||lineInfo.getRegionId() == 0){ + throw new ServiceException(ErrorCodeEnum.LINE_REGION_NOT_EXIST); + } + lineInfo.setWorkflowStage(WorkflowStageEnum.STORE.getCode()); + lineInfo.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.SIGN_INTENT_AGREEMENT_125.getCode()); + lineInfo.setDevelopmentManager(lineInfo.getInvestmentManager()); + lineInfoDAO.updateLineInfo(lineInfo); + //初始化店铺 AI店 + lineInfo.setUseStandardStore(1); + Long shopId = shopService.initAiShop(lineInfo); + //选址阶段直接完成 + PointRecommendLineRequest recommendLineRequest = new PointRecommendLineRequest(); + recommendLineRequest.setShopIds(Arrays.asList(Long.valueOf(shopId))); + recommendLineRequest.setPointId(wishlistDO.getPointId()); + recommendLineRequest.setDevelopmentManager(lineInfo.getDevelopmentManager()); + //推荐逻辑 + pointService.pointRecommendLine(recommendLineRequest); + SelectPointRequest selectPointRequest = new SelectPointRequest(); + selectPointRequest.setPointId(wishlistDO.getPointId()); + selectPointRequest.setLineId(wishlistDO.getLineId()); + selectPointRequest.setShopId(shopId); + //选址 + pointService.lineSelectPoint(selectPointRequest); + //修改心愿单状态 + wishlistStatus = WishlistStatusEnum.PASS.getCode(); + } + if (request.getAuditStatus()==0){ + wishlistStatus = WishlistStatusEnum.REJECT.getCode(); + } + wishlistDO.setWishlistStatus(wishlistStatus); + wishlistDO.setRemark(request.getRemark()); + wishlistDO.setUpdateTime(new Date()); + storeWishlistDAO.updateByExampleSelective(wishlistDO); + return Boolean.TRUE; + } + + @Override + public MiniStoreWishlistDetailVO getCurrentShopBindWishlist(Long shopId) { + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + if (shopInfo == null) { + throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE); + } + if (shopInfo.getPointId()==null){ + return null; + } + StoreWishlistDO storelistDO = storeWishlistDAO.getByPointId(shopInfo.getLineId(), shopInfo.getPointId()); + return convert(storelistDO); + } + + + private MiniStoreWishlistDetailVO convert(StoreWishlistDO storeWishlistDO){ + if (storeWishlistDO==null){ return null; } MiniStoreWishlistDetailVO vo = new MiniStoreWishlistDetailVO(); - vo.setStoreTypeId(storeTypeId); - vo.setVersionNo(versionNo); - StoreWishlistDO storeWishlistDO = rows.get(0); - if (storeWishlistDO!=null){ - vo.setTotalAmount(storeWishlistDO.getTotalAmount()); - vo.setCreateTime(storeWishlistDO.getCreateTime()); - LineInfoDO lineInfo = lineInfoDAO.getLineInfo(storeWishlistDO.getLineId()); - if (lineInfo!=null){ - vo.setPartnerMobile(lineInfo.getMobile()); - vo.setPartnerName(lineInfo.getUsername()); - } + vo.setStoreTypeId(storeWishlistDO.getStoreTypeId()); + vo.setId(storeWishlistDO.getId()); + vo.setVersionNo(storeWishlistDO.getVersionNo()); + vo.setTotalAmount(storeWishlistDO.getTotalAmount()); + vo.setPointId(storeWishlistDO.getPointId()); + vo.setWishlistStatus(storeWishlistDO.getWishlistStatus()); + vo.setCreateTime(storeWishlistDO.getCreateTime()); + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(storeWishlistDO.getLineId()); + if (lineInfo != null) { + vo.setPartnerMobile(lineInfo.getMobile()); + vo.setPartnerName(lineInfo.getUsername()); } - - StoreTypeDO storeTypeDO = storeTypeDAO.getById(storeTypeId); + StoreTypeDO storeTypeDO = storeTypeDAO.getById(storeWishlistDO.getStoreTypeId()); MiniStoreWishlistDetailVO.FeeInfoVO feeInfo = new MiniStoreWishlistDetailVO.FeeInfoVO(); feeInfo.setFranchiseFee(storeTypeDO.getFranchiseFee()); feeInfo.setBrandUsageFee(storeTypeDO.getBrandUsageFee()); @@ -1397,8 +1617,20 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { feeInfo.setFirstOrderFee(storeTypeDO.getFirstOrderFee()); vo.setFeeInfoVO(feeInfo); vo.setStoreTypeName(storeTypeDO.getStoreTypeName()); + vo.setStoreType(storeTypeDO.getStoreType()); - List optionIds = rows.stream().map(StoreWishlistDO::getOptionId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + if (storeWishlistDO.getPointId()!=null){ + PointInfoDO pointInfoDO = pointInfoDAO.getPointInfoById(storeWishlistDO.getPointId()); + vo.setShopId(pointInfoDO.getShopId()); + } + + List optionRows = storeWishlistOptionDAO.listByWishlistIds(Arrays.asList(storeWishlistDO.getId())); + if (CollectionUtils.isEmpty(optionRows)) { + vo.setOptions(Collections.emptyList()); + return vo; + } + + List optionIds = optionRows.stream().map(StoreWishlistOptionDO::getOptionId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); Map optionMap = new HashMap<>(); List options = new ArrayList<>(); if (CollectionUtils.isNotEmpty(optionIds)) { @@ -1406,7 +1638,7 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); } - List bindings = storeTypeOptionDAO.listByStoreTypeId(storeTypeId); + List bindings = storeTypeOptionDAO.listByStoreTypeId(storeWishlistDO.getStoreTypeId()); Map bindingMap = bindings.stream() .collect(Collectors.toMap(StoreTypeOptionDO::getOptionId, Function.identity(), (a, b) -> a)); @@ -1417,7 +1649,7 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { Map itemCodeMap = configItemDAO.nameMap(itemCodeList); List list = new ArrayList<>(); - for (StoreWishlistDO row : rows) { + for (StoreWishlistOptionDO row : optionRows) { MiniStoreWishlistDetailVO.OptionVO item = new MiniStoreWishlistDetailVO.OptionVO(); BigDecimal quantity = row.getQuantity(); item.setOptionId(row.getOptionId()); @@ -1431,16 +1663,14 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { item.setCategoryCode(cfg.getCategoryCode()); item.setItemCode(cfg.getItemCode()); } - if (storeTypeOptionDO!=null){ + if (storeTypeOptionDO != null && cfg != null) { BigDecimal price = storeTypeOptionDO.getOptionPrice(); BigDecimal amount = BigDecimal.ZERO; BigDecimal defaultQty = storeTypeOptionDO.getDefaultQuantity(); - //原价 BigDecimal originalPrice = cfg.getOriginalOptionPrice(); - if(quantity.compareTo(defaultQty)<=0){ + if (quantity.compareTo(defaultQty) <= 0) { amount = price.multiply(quantity); - }else { - // 店型优惠价*默认数量 + 原价 *(选择数量-默认数量) + } else { amount = price.multiply(defaultQty).add(originalPrice.multiply(quantity.subtract(defaultQty))); } item.setOptionPrice(price); @@ -1454,100 +1684,6 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { return vo; } - @Override - public List wishlistList( PartnerUserInfoVO userInfoVO) { - if (userInfoVO == null || userInfoVO.getLineId() == null) { - return Collections.emptyList(); - } - List wishlist = storeWishlistDAO.listByLineId(userInfoVO.getLineId(), null); - if (CollectionUtils.isEmpty(wishlist)) { - return Collections.emptyList(); - } - - for (MiniStoreWishlistListVO item : wishlist) { - List rows = storeWishlistDAO.listByLineIdAndStoreTypeAndVersion(userInfoVO.getLineId(), item.getStoreTypeId(), item.getVersionNo()); - if (CollectionUtils.isEmpty(rows)) { - item.setOptions(Collections.emptyList()); - continue; - } - - List optionIds = rows.stream().map(StoreWishlistDO::getOptionId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); - Map optionMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(optionIds)) { - List options = configOptionDAO.listActiveByIds(optionIds); - optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); - } - - List optionList = new ArrayList<>(); - for (StoreWishlistDO row : rows) { - MiniStoreWishlistListVO.OptionVO vo = new MiniStoreWishlistListVO.OptionVO(); - vo.setOptionId(row.getOptionId()); - vo.setQuantity(row.getQuantity()); - ConfigOptionDO cfg = optionMap.get(row.getOptionId()); - if (cfg != null) { - vo.setOptionName(cfg.getOptionName()); - vo.setOptionPrice(cfg.getOptionPrice()); - vo.setImageUrl(cfg.getImageUrl()); - } - optionList.add(vo); - } - item.setOptions(optionList); - } - - return wishlist; - } - - @Override - public PageInfo wishAllList(WishAllListRequest request) { - PageHelper.startPage(request.getPageNum(),request.getPageSize()); - List distinctVersion = storeWishlistDAO.getDistinctVersion(request.getKeyword(),request.getStoreTypeId()); - if (CollectionUtils.isEmpty(distinctVersion)){ - return new PageInfo<>(); - } - PageInfo result = new PageInfo<>(distinctVersion); - List wishlist = storeWishlistDAO.listByVersionList(distinctVersion); - - List lineIdList = wishlist.stream().map(MiniStoreWishlistListVO::getLineId).collect(Collectors.toList()); - List lineList = lineInfoDAO.getByLineIds(lineIdList); - Map map = lineList.stream().collect(Collectors.toMap(LineInfoDO::getId, data -> data)); - for (MiniStoreWishlistListVO item : wishlist) { - LineInfoDO lineInfoDO = map.get(item.getLineId()); - if (lineInfoDO!=null){ - item.setPartnerMobile(lineInfoDO.getMobile()); - item.setPartnerName(lineInfoDO.getUsername()); - } - List rows = storeWishlistDAO.listByLineIdAndStoreTypeAndVersion(item.getLineId(), item.getStoreTypeId(), item.getVersionNo()); - if (CollectionUtils.isEmpty(rows)) { - item.setOptions(Collections.emptyList()); - continue; - } - - List optionIds = rows.stream().map(StoreWishlistDO::getOptionId).filter(Objects::nonNull).distinct().collect(Collectors.toList()); - Map optionMap = new HashMap<>(); - if (CollectionUtils.isNotEmpty(optionIds)) { - List options = configOptionDAO.listActiveByIds(optionIds); - optionMap = options.stream().collect(Collectors.toMap(ConfigOptionDO::getId, Function.identity(), (a, b) -> a)); - } - - List optionList = new ArrayList<>(); - for (StoreWishlistDO row : rows) { - MiniStoreWishlistListVO.OptionVO vo = new MiniStoreWishlistListVO.OptionVO(); - vo.setOptionId(row.getOptionId()); - vo.setQuantity(row.getQuantity()); - ConfigOptionDO cfg = optionMap.get(row.getOptionId()); - if (cfg != null) { - vo.setOptionName(cfg.getOptionName()); - vo.setOptionPrice(cfg.getOptionPrice()); - vo.setImageUrl(cfg.getImageUrl()); - } - optionList.add(vo); - } - item.setOptions(optionList); - } - result.setList(wishlist); - return result; - } - private BigDecimal safe(BigDecimal v) { return v == null ? BigDecimal.ZERO : v; diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java index 3c47d8ef7..6cd93f4ef 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java @@ -2,10 +2,7 @@ package com.cool.store.controller.webb; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.PartnerUserHolder; -import com.cool.store.request.order.OrderAuditRecordRequest; -import com.cool.store.request.order.PCStoreOrderOptionQuantityUpdateRequest; -import com.cool.store.request.order.PCStoreOrderQueryRequest; -import com.cool.store.request.order.WishAllListRequest; +import com.cool.store.request.order.*; import com.cool.store.response.ResponseResult; import com.cool.store.service.order.MiniStoreOrderService; import com.cool.store.vo.order.*; @@ -78,11 +75,8 @@ public class StoreOrderController { @ApiOperation("心愿单详情") @GetMapping("/wishlist/detail") - public ResponseResult wishlistDetail(@RequestParam("storeTypeId") Long storeTypeId, - @RequestParam("lineId") Long lineId, - @RequestParam("versionNo") String versionNo) { - - return ResponseResult.success(miniStoreOrderService.wishlistDetail(storeTypeId,versionNo, lineId)); + public ResponseResult wishlistDetail(@RequestParam("wishlistId") Long wishlistId) { + return ResponseResult.success(miniStoreOrderService.wishlistDetail(wishlistId)); } @ApiOperation("PC心愿单列表") @@ -91,4 +85,16 @@ public class StoreOrderController { return ResponseResult.success(miniStoreOrderService.wishAllList( request)); } + @ApiOperation("心愿单待立规审批") + @PostMapping("/wishlist/wishlistApprove") + public ResponseResult wishlistApprove(@RequestBody @Valid WishlistAuditRequest request) { + return ResponseResult.success(miniStoreOrderService.wishlistApprove(request,CurrentUserHolder.getUser())); + } + + @ApiOperation("查询当前门店铺位绑定的心愿单") + @GetMapping("/wishlist/getCurrentShopBindWishlist") + public ResponseResult getCurrentShopBindWishlist(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(miniStoreOrderService.getCurrentShopBindWishlist(shopId)); + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopController.java index 619d62607..7415360ea 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopController.java @@ -1,5 +1,6 @@ package com.cool.store.controller.webc; +import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.OpenInfoDTO; import com.cool.store.request.*; @@ -10,10 +11,7 @@ import com.cool.store.response.ShopResponse; import com.cool.store.service.PointService; import com.cool.store.service.ShopService; import com.cool.store.vo.PartnerUserInfoVO; -import com.cool.store.vo.point.MiniPointPageVO; -import com.cool.store.vo.point.PointDetailVO; -import com.cool.store.vo.point.PointFinancialDataVO; -import com.cool.store.vo.point.ShopRentInfoVO; +import com.cool.store.vo.point.*; import com.cool.store.vo.shop.MiniShopPageVO; import com.cool.store.vo.shop.ShopStageInfoVO; import com.cool.store.vo.shop.ShopStageVO; @@ -170,4 +168,12 @@ public class MiniShopController { public ResponseResult getShopOpenInfo(@RequestParam("shopId")Long shopId) { return ResponseResult.success(shopService.getShopOpenInfo(shopId)); } + + @ApiOperation("选址人员获取可推荐铺位列表") + @PostMapping("/getRecommendPointList") + public ResponseResult> getRecommendPointList(@RequestBody @Validated RecommendPointPageRequest request) { + request.setLineId(PartnerUserHolder.getUser().getLineId()); + request.setUseAi(1); + return ResponseResult.success(pointService.getRecommendPointList(request)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java index 3fcd4f727..1e8b25b39 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java @@ -103,9 +103,8 @@ public class MiniStoreOrderController { @ApiOperation("心愿单详情") @GetMapping("/wishlist/detail") - public ResponseResult wishlistDetail(@RequestParam("storeTypeId") Long storeTypeId, - @RequestParam("versionNo") String versionNo) { - return ResponseResult.success(miniStoreOrderService.wishlistDetail(storeTypeId,versionNo, PartnerUserHolder.getUser().getLineId())); + public ResponseResult wishlistDetail(@RequestParam("wishlistId") Long wishlistId) { + return ResponseResult.success(miniStoreOrderService.wishlistDetail(wishlistId)); } @ApiOperation("心愿单列表") @@ -114,4 +113,22 @@ public class MiniStoreOrderController { return ResponseResult.success(miniStoreOrderService.wishlistList( PartnerUserHolder.getUser())); } + @ApiOperation("心愿单绑定铺位") + @PostMapping("/wishlist/wishlistBindPoint") + public ResponseResult wishlistBindPoint(@RequestBody @Valid WishlistBindPointRequest request) { + return ResponseResult.success(miniStoreOrderService.wishlistBindPoint(request)); + } + + @ApiOperation("查询当前门店铺位绑定的心愿单") + @GetMapping("/wishlist/getCurrentShopBindWishlist") + public ResponseResult getCurrentShopBindWishlist(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(miniStoreOrderService.getCurrentShopBindWishlist(shopId)); + } + + @ApiOperation("订单 加盟商确认") + @PostMapping("/passOrder") + public ResponseResult passOrder(@RequestBody OrderAuditRecordRequest request) { + return ResponseResult.success(miniStoreOrderService.passOrder(request, null)); + } + }