diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ConstructionPhaseEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ConstructionPhaseEnum.java new file mode 100644 index 000000000..a134f573d --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ConstructionPhaseEnum.java @@ -0,0 +1,30 @@ +package com.cool.store.enums; + +/** + * @Auther: WangShuo + * @Date: 2024/04/28/下午7:25 + * @Version 1.0 + * @注释: + */ +public enum ConstructionPhaseEnum { + NOT_SHOWN(-1,"不显示"), + NOT_START(0,"未开工"), + construction_ING(1,"施工中"), + construction_FINSH(2,"已完工"); + private Integer code; + + private String message; + + ConstructionPhaseEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/DesignPhaseEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/DesignPhaseEnum.java new file mode 100644 index 000000000..8fc5a2412 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/DesignPhaseEnum.java @@ -0,0 +1,41 @@ +package com.cool.store.enums; + +/** + * @Auther: WangShuo + * @Date: 2024/04/28/下午6:46 + * @Version 1.0 + * @注释: + */ + +public enum DesignPhaseEnum { + //设计阶段 + ACCEPTANCE_FAILED(0,"验收未通过"), + ACCEPTANCE_NOT_START(1, "未开始"), + ACCEPTANCE_DESIGNING(2, "设计中"), + ACCEPTED_NOT(3, "未验收"), + + AUDIT_WAIT(5,"待审批"), + AUDIT_FAIL(6,"审批驳回"), + AUDIT_ING(7,"审批中"), + AUDIT_DISCARD (8,"审批作废"), + AUDIT_PASS(9,"审批通过"), + ACCEPTANCE_FAIL(10,"审批验收未通过"), + ACCEPTANCE_PASS (11,"验收通过"); + + private Integer code; + + private String message; + + DesignPhaseEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} 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 507ad77e2..4e4e617f6 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 @@ -183,6 +183,8 @@ public enum ErrorCodeEnum { GET_FIRST_ORDER(103021,"获取鲜丰首批订货金失败",null), YLF_ERROR(110001, "云立方接口异常!", null), + + ; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java index 9308fe962..6b36b3ed9 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopInfoDAO.java @@ -158,5 +158,7 @@ public class ShopInfoDAO { public List ListByCondition(PreparationRequest request){ return shopInfoMapper.ListByCondition(request); } - + public Long getRegionIdByShopCode(String shopCode){ + return shopInfoMapper.getRegionIdByShopCode(shopCode); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java index 89dcff08e..f656d9fe3 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopInfoMapper.java @@ -85,4 +85,5 @@ public interface ShopInfoMapper extends Mapper { List ListByCondition(@Param("request") PreparationRequest request); + Long getRegionIdByShopCode(@Param("shopCode") String shopCode); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml index 0d3a1b84d..21c0c72ab 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopInfoMapper.xml @@ -149,6 +149,12 @@ + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DecorationModelDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DecorationModelDTO.java new file mode 100644 index 000000000..523e58d90 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DecorationModelDTO.java @@ -0,0 +1,15 @@ +package com.cool.store.dto.decoration; + +import lombok.Data; + +/** + * @Auther: WangShuo + * @Date: 2024/04/28/下午9:33 + * @Version 1.0 + * @注释: + */ +@Data +public class DecorationModelDTO { + private String totalAmount; + private String payUrl; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DesignRowsDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DesignRowsDTO.java new file mode 100644 index 000000000..e0dc8bc67 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/decoration/DesignRowsDTO.java @@ -0,0 +1,16 @@ +package com.cool.store.dto.decoration; + +import lombok.Data; + +import java.util.List; + +/** + * @Auther: WangShuo + * @Date: 2024/04/28/下午8:41 + * @Version 1.0 + * @注释: + */ +@Data +public class DesignRowsDTO { + private List rows; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationPayRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationPayRequest.java new file mode 100644 index 000000000..6afe557ef --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/DecorationPayRequest.java @@ -0,0 +1,32 @@ +package com.cool.store.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Auther: WangShuo + * @Date: 2024/04/28/下午9:58 + * @Version 1.0 + * @注释: + */ +@Data +public class DecorationPayRequest { + @ApiModelProperty("line_info.id") + private Long lineId; + @ApiModelProperty("店铺编码") + private String shopCode; + @ApiModelProperty("加盟商姓名") + private String name; + @ApiModelProperty("支付账户") + private String payAccount; + @ApiModelProperty("开户行code") + private String bankCode; + @ApiModelProperty("支行code") + private String branchBankCode; + @ApiModelProperty("缴纳时间") + private Date payTime; + @ApiModelProperty("付款截图") + private String payPic; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/DesignInfoVo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/DesignInfoVo.java index 5ae14ea19..912791193 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/DesignInfoVo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/DesignInfoVo.java @@ -1,5 +1,9 @@ package com.cool.store.vo; +import com.cool.store.dto.decoration.AttachmentsDTO; +import com.cool.store.dto.decoration.BudgetDTO; +import com.cool.store.dto.decoration.ConstructionScheduleDTO; +import com.cool.store.dto.decoration.DesignSchemeDTO; import com.cool.store.vo.log.DesignLogVo; import lombok.Data; @@ -14,9 +18,8 @@ import java.util.List; @Data public class DesignInfoVo { - private String name; - private Integer resultType; - private String planTime; - private List logs; - + private List designScheme; + private ConstructionScheduleDTO measuringRoom; + private ConstructionScheduleDTO ConstructionDrawings; + private BudgetDTO proposedBookBudget; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/log/DesignLogVo.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/log/DesignLogVo.java index 1c6d147bc..8f50a7d5f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/log/DesignLogVo.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/log/DesignLogVo.java @@ -16,7 +16,5 @@ public class DesignLogVo { private String logTime; private String name; private String description; - private String planTime; - private String finishTime; private List attachmentUrl; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java index 4b1c471a6..91c27f5fc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DecorationService.java @@ -1,6 +1,10 @@ package com.cool.store.service; +import com.cool.store.dto.decoration.ConstructionScheduleDTO; +import com.cool.store.dto.decoration.DecorationModelDTO; +import com.cool.store.request.DecorationPayRequest; import com.cool.store.vo.DesignInfoVo; +import com.cool.store.vo.PartnerUserInfoVO; import java.util.List; @@ -22,5 +26,23 @@ public interface DecorationService { * @Date: 2024/4/28 * @description:设计阶段信息 */ - List DesignInfo(String shopCode); + DesignInfoVo DesignInfo(String shopCode); + /** + * @Auther: wangshuo + * @Date: 2024/4/28 + * @description:获取装修款和支付二维码 + */ + DecorationModelDTO DecorationModel(String shopCode); + /** + * @Auther: wangshuo + * @Date: 2024/4/28 + * @description:提交装修款付款凭证 + */ + String submitDecorationModel(DecorationPayRequest decorationPayRequest, PartnerUserInfoVO partnerUserInfoVO); + /** + * @Auther: wangshuo + * @Date: 2024/4/28 + * @description:施工阶段 + */ + List getConstruction(String shopCode); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/YlfService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/YlfService.java index 40709ee53..680fd1de1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/YlfService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/YlfService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.decoration.DecorationDTO; +import com.cool.store.dto.decoration.ProjectDTO; /** * @Author suzhuhong @@ -18,6 +19,6 @@ public interface YlfService { * @Date: 2024/4/25 * @description:项目列表 */ - String getProjectList(String shopCode); + ProjectDTO getProjectList(String shopCode); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java index bf02accce..b3b7b9704 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DecorationServiceImpl.java @@ -1,16 +1,30 @@ package com.cool.store.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSONObject; -import com.cool.store.dto.decoration.DecorationDTO; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dao.LinePayDAO; +import com.cool.store.dao.RegionQrcodeConfigDao; +import com.cool.store.dao.ShopInfoDAO; +import com.cool.store.dto.decoration.*; +import com.cool.store.entity.LinePayDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.request.DecorationPayRequest; import com.cool.store.service.DecorationService; import com.cool.store.service.YlfService; +import com.cool.store.utils.poi.StringUtils; import com.cool.store.vo.DesignInfoVo; +import com.cool.store.vo.PartnerUserInfoVO; +import com.cool.store.vo.log.DesignLogVo; import org.apache.poi.ss.formula.functions.T; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** @@ -22,17 +36,96 @@ import java.util.List; @Service public class DecorationServiceImpl implements DecorationService { + private static final Logger log = LoggerFactory.getLogger(DecorationServiceImpl.class); @Resource private YlfService ylfService; + @Resource + private RegionQrcodeConfigDao regionQrcodeConfigDao; + @Resource + private ShopInfoDAO shopInfoDAO; + @Resource + private LinePayDAO linePayDAO; + private static String MEASURING_THE_ROOM = "量房"; + private static String CONSTRUCTION_DRAWING = "施工图+预算"; @Override public List decorations() { return Collections.emptyList(); } @Override - public List DesignInfo(String shopCode) { - String projectId = ylfService.getProjectList(shopCode); + public DesignInfoVo DesignInfo(String shopCode) { + ProjectDTO projectList = ylfService.getProjectList(shopCode); + String projectId = projectList.getProjectId(); + DecorationDTO decoration = ylfService.getDecoration(Long.parseLong(projectId)); + List designScheme = decoration.getDesignScheme(); - return Collections.emptyList(); + List constructionSchedule = decoration.getConstructionSchedule(); + Map constructionScheduleMap = constructionSchedule.stream().collect(Collectors.toMap(ConstructionScheduleDTO::getName, + dto -> dto)); + //量房 + ConstructionScheduleDTO measuringRoom = constructionScheduleMap.get(MEASURING_THE_ROOM); + //施工图 + ConstructionScheduleDTO ConstructionDrawings = constructionScheduleMap.get(CONSTRUCTION_DRAWING); + //预算 + List proposedBookBudget = decoration.getProposedBookBudget(); + Collections.sort(decoration.getProposedBookBudget(),(x1,x2)->x2.getId().compareTo(x1.getId())); + + DesignInfoVo designInfoVo = new DesignInfoVo(); + designInfoVo.setMeasuringRoom(measuringRoom); + designInfoVo.setConstructionDrawings(ConstructionDrawings); + designInfoVo.setDesignScheme(designScheme); + designInfoVo.setProposedBookBudget(proposedBookBudget.get(0)); + return designInfoVo; + } + + @Override + public DecorationModelDTO DecorationModel(String shopCode) { + if (StringUtils.isEmpty(shopCode)){ + log.error("DecorationModel shopCode is null"); + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + ProjectDTO projectList = ylfService.getProjectList(shopCode); + String projectId = projectList.getProjectId(); + DecorationDTO decoration = ylfService.getDecoration(Long.parseLong(projectId)); + //TODO 验证 + //预算 + List proposedBookBudget = decoration.getProposedBookBudget(); + Collections.sort(decoration.getProposedBookBudget(),(x1,x2)->x2.getId().compareTo(x1.getId())); + String totalAmount = proposedBookBudget.get(0).getTotalAmount(); + //支付二维码url + Long regionId = shopInfoDAO.getRegionIdByShopCode(shopCode); + String payPic = regionQrcodeConfigDao.getPayPicByRegionId(regionId); + DecorationModelDTO decorationModelDTO = new DecorationModelDTO(); + decorationModelDTO.setPayUrl(payPic); + decorationModelDTO.setTotalAmount(totalAmount); + return decorationModelDTO; + } + + @Override + public String submitDecorationModel(DecorationPayRequest decorationPayRequest, PartnerUserInfoVO partnerUserInfoVO) { + LinePayDO linePayDO =new LinePayDO(); + BeanUtil.copyProperties(decorationPayRequest, linePayDO); + linePayDO.setCreateTime(new Date()); + linePayDO.setUpdateTime(new Date()); + linePayDO.setLineId(partnerUserInfoVO.getLineId()); + linePayDO.setCreateUserId(partnerUserInfoVO.getUsername()); + linePayDO.setUpdateUserId(partnerUserInfoVO.getUsername()); + linePayDO.setPayBusinessType(2); + linePayDO.setPayType(2); + return ""; + } + + @Override + public List getConstruction(String shopCode) { + ProjectDTO projectList = ylfService.getProjectList(shopCode); + String projectId = projectList.getProjectId(); + DecorationDTO decoration = ylfService.getDecoration(Long.parseLong(projectId)); + List constructionSchedule = decoration.getConstructionSchedule(); + Map constructionScheduleMap = constructionSchedule.stream().collect(Collectors.toMap(ConstructionScheduleDTO::getName, + dto -> dto)); + constructionScheduleMap.remove(MEASURING_THE_ROOM); + constructionScheduleMap.remove(CONSTRUCTION_DRAWING); + List collect = constructionScheduleMap.values().stream().collect(Collectors.toList()); + return collect; } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/YlfServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/YlfServiceImpl.java index b1fa41581..0134f50d0 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/YlfServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/YlfServiceImpl.java @@ -2,6 +2,7 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; import com.cool.store.dto.decoration.DecorationDTO; +import com.cool.store.dto.decoration.DesignRowsDTO; import com.cool.store.dto.decoration.ProjectDTO; import com.cool.store.dto.decoration.RowsDTO; import com.cool.store.enums.ErrorCodeEnum; @@ -59,7 +60,7 @@ public class YlfServiceImpl implements YlfService { } @Override - public String getProjectList(String shopCode) { + public ProjectDTO getProjectList(String shopCode) { log.info("getProjectList param:{}", shopCode); if (Objects.isNull(shopCode)) { throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); @@ -69,14 +70,17 @@ public class YlfServiceImpl implements YlfService { try { String jsonString = httpRestTemplateService.getForObject(url, String.class, new HashMap<>()); JSONObject jsonObject = JSONObject.parseObject(jsonString); + Object data = JSONObject.parseObject(jsonString, JSONObject.class).get("data"); log.info("CoolStoreStartFlowServiceImpl#getOrder,jsonObject:{}", jsonObject); if (jsonObject.get("status").equals(Constants.SUCCESS)) { - if (jsonObject.get("data").toString() == null) { + if (Objects.isNull(data)) { return null; } - List projectDTOS = (List) ((JSONObject) JSONObject.parseObject(jsonString, JSONObject.class).get("data")).get("rows"); - - return ((ProjectDTO)projectDTOS.get(0)).getProjectId(); + DesignRowsDTO designRowsDTO = JSONObject.parseObject(JSONObject.toJSONString(data), DesignRowsDTO.class); + List rows = designRowsDTO.getRows(); + if (CollectionUtils.isNotEmpty(rows)) { + return rows.get(0); + } } else { log.info("获取云立方装修公司信息失败,shopCode:{}", shopCode); throw new ServiceException(ErrorCodeEnum.YLF_ERROR); @@ -87,7 +91,7 @@ public class YlfServiceImpl implements YlfService { throw new ServiceException(ErrorCodeEnum.XFSG_SERVICE_ERROR); } - } + return null;} } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java index a362ddbd0..1e5a98ac5 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCDecorationController.java @@ -1,15 +1,23 @@ package com.cool.store.controller.webb; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dto.decoration.ConstructionScheduleDTO; +import com.cool.store.dto.decoration.DecorationDTO; +import com.cool.store.dto.decoration.DecorationModelDTO; +import com.cool.store.request.DecorationPayRequest; import com.cool.store.response.ResponseResult; import com.cool.store.service.CoolStoreStartFlowService; +import com.cool.store.service.DecorationService; import com.cool.store.service.YlfService; +import com.cool.store.vo.DesignInfoVo; +import com.cool.store.vo.PartnerUserInfoVO; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * @Auther: WangShuo @@ -23,11 +31,23 @@ import javax.annotation.Resource; @Slf4j public class PCDecorationController { @Resource - private YlfService ylfService; - @GetMapping("/get") - private ResponseResult get(){ - String shopCode = "31310383"; - return new ResponseResult<>(200,ylfService.getProjectList(shopCode)) ; - + private DecorationService decorationService; + @GetMapping("/design") + public ResponseResult get(@RequestParam String shopCode){ + return ResponseResult.success( decorationService.DesignInfo(shopCode)) ; + } + @GetMapping("/getDecorationModel") + public ResponseResult getDecorationModel(@RequestParam String shopCode){ + return ResponseResult.success(decorationService.DecorationModel(shopCode)) ; + } + @PostMapping("/submitDecorationModel") + public ResponseResult submitDecorationModel(@RequestBody DecorationPayRequest DecorationPayRequest){ + PartnerUserInfoVO user = PartnerUserHolder.getUser(); + decorationService.submitDecorationModel(DecorationPayRequest, user); + return ResponseResult.success(); + } + @GetMapping("/getConstruction") + public ResponseResult> getConstruction(@RequestParam String shopCode){ + return ResponseResult.success(decorationService.getConstruction(shopCode)) ; } }