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 78fba1d71..37b5d3573 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 @@ -106,6 +106,10 @@ public enum ErrorCodeEnum { NOT_EXIST_UNSELECT_POINT(600017, "当前没有未选择的铺位", null), SELECT_POINT_ERROR(600018, "铺位选中失败", null), + OPEN_NEW_SHOP_RECORD_NOT_EXIST(700001, "开店申请记录不存在", null), + OPEN_NEW_SHOP_RECORD_AUDITED(700002, "开店申请已审核", null), + OPEN_NEW_SHOP_RECORD_WAIT_AUDIT(700003, "提交失败,您有开店申请正在审核中", null), + INTERVIEW_ENTER_FAIL(1021101, "进入面审间失败", null), DINGDING_USER_NOT_EXIST(1021102, "用户钉钉信息不存在,无法发起资质审核!", null), INTERVIEW_NOT_EXIST(1021103, "面审信息不存在!", null), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/OpenNewShopRecordDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/OpenNewShopRecordDAO.java new file mode 100644 index 000000000..8e47f50ce --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/OpenNewShopRecordDAO.java @@ -0,0 +1,96 @@ +package com.cool.store.dao; + +import com.cool.store.dto.partner.PartnerOpenNewShopPageDTO; +import com.cool.store.entity.OpenNewShopRecordDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.OpenNewShopRecordMapper; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + +/** + * @author zhangchenbiao + * @FileName: OpenNewShopRecordDAO + * @Description: + * @date 2024-05-09 15:09 + */ +@Repository +public class OpenNewShopRecordDAO { + + @Resource + private OpenNewShopRecordMapper openNewShopRecordMapper; + + /** + * 获取开新店数据 + * @param request + * @return + */ + public Page getPartnerOpenNewShopPage(PartnerOpenNewShopPageRequest request){ + PageHelper.startPage(request.getPageNum(),request.getPageSize()); + return openNewShopRecordMapper.getPartnerOpenNewShopPage(request); + } + + /** + * 获取详情 + * @param id + * @return + */ + public OpenNewShopRecordDO getOpenNewShopRecordById(Long id){ + return openNewShopRecordMapper.selectByPrimaryKey(id); + } + + public Integer updateOpenNewShopRecord(OpenNewShopRecordDO openNewShopRecordDO){ + return openNewShopRecordMapper.updateByPrimaryKeySelective(openNewShopRecordDO); + } + + /** + * 获取待审核的开新店记录 + * @param lineId + * @return + */ + public OpenNewShopRecordDO getWaitAuditOpenNewShopRecord(Long lineId){ + if(Objects.isNull(lineId)){ + return null; + } + return openNewShopRecordMapper.getWaitAuditOpenNewShopRecord(lineId); + } + + public Long insertOpenNewShopRecord(OpenNewShopRecordDO openNewShopRecordDO){ + if(Objects.isNull(openNewShopRecordDO.getLineId())){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + openNewShopRecordMapper.insertSelective(openNewShopRecordDO); + return openNewShopRecordDO.getId(); + } + + /** + * 根据lineId获取开新店记录 + * @param lineId + * @return + */ + public List getOpenNewShopRecordList(Long lineId){ + if(Objects.isNull(lineId)){ + return Lists.newArrayList(); + } + return openNewShopRecordMapper.getOpenNewShopRecordList(lineId); + } + + /** + * 删除开新店记录 + * @param deleteIds + */ + public void deleteOpenNewShopRecord(List deleteIds) { + if(CollectionUtils.isEmpty(deleteIds)){ + return; + } + openNewShopRecordMapper.deleteOpenNewShopRecord(deleteIds); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/OpenNewShopRecordMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/OpenNewShopRecordMapper.java new file mode 100644 index 000000000..c37e0673a --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/OpenNewShopRecordMapper.java @@ -0,0 +1,41 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.partner.PartnerOpenNewShopPageDTO; +import com.cool.store.entity.OpenNewShopRecordDO; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.github.pagehelper.Page; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface OpenNewShopRecordMapper extends Mapper { + + /** + * 获取老加盟商开新店列表 + * @param request + * @return + */ + Page getPartnerOpenNewShopPage(@Param("request") PartnerOpenNewShopPageRequest request); + + /** + * 获取待审核的记录 + * @param lineId + * @return + */ + OpenNewShopRecordDO getWaitAuditOpenNewShopRecord(@Param("lineId") Long lineId); + + /** + * 获取老加盟商开新店列表 + * @param lineId + * @return + */ + List getOpenNewShopRecordList(@Param("lineId") Long lineId); + + /** + * 删除老加盟商开新店 + * @param deleteIds + * @return + */ + Integer deleteOpenNewShopRecord(@Param("deleteIds") List deleteIds); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/OpenNewShopRecordMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/OpenNewShopRecordMapper.xml new file mode 100644 index 000000000..ba245ca80 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/OpenNewShopRecordMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + update xfsg_open_new_shop_record set deleted = 1, update_time = now() where id in + + #{id} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties index cfd19bf81..86f13ac92 100644 --- a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties +++ b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties @@ -3,6 +3,6 @@ jdbc.url = jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcoll jdbc.user= coolstore jdbc.password = CSCErYcXniNYm7bT -table.name = xfsg_shop_rent_info -table.object.class = ShopRentInfoDO -table.mapper = ShopRentInfoMapper \ No newline at end of file +table.name = xfsg_open_new_shop_record +table.object.class = OpenNewShopRecordDO +table.mapper = OpenNewShopRecordMapper \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerOpenNewShopPageDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerOpenNewShopPageDTO.java new file mode 100644 index 000000000..83fceba3b --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/PartnerOpenNewShopPageDTO.java @@ -0,0 +1,49 @@ +package com.cool.store.dto.partner; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2024/4/1 11:30 + * @Version 1.0 + */ +@Data +public class PartnerOpenNewShopPageDTO { + + @ApiModelProperty("记录id") + private Long recordId; + + @ApiModelProperty("线索ID") + private Long lineId; + + @ApiModelProperty("加盟商编号") + private String partnerNum; + + @ApiModelProperty("线索名称") + private String username; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("意向加盟区域") + private Long wantShopAreaId; + + @ApiModelProperty("线索标签") + private String userPortrait; + + @ApiModelProperty("意向开店数量") + private Integer wantShopNum; + + @ApiModelProperty("扩展经理名称") + private String developmentManager; + + @ApiModelProperty("线索来源名称") + private Integer lineSource; + + @ApiModelProperty("审核状态 0待审核 1通过 2不通过") + private Integer auditResult; + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/OpenNewShopRecordDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/OpenNewShopRecordDO.java new file mode 100644 index 000000000..29760398c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/OpenNewShopRecordDO.java @@ -0,0 +1,55 @@ +package com.cool.store.entity; + +import lombok.Data; + +import java.util.Date; +import javax.persistence.*; + +@Data +@Table(name = "xfsg_open_new_shop_record") +public class OpenNewShopRecordDO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 线索id + */ + @Column(name = "line_id") + private Long lineId; + + /** + * 新开意向店铺数量 + */ + @Column(name = "new_want_shop_num") + private Integer newWantShopNum; + + /** + * 现有资金 + */ + private Integer fund; + + /** + * 审核状态 0待审核 1通过 2不通过 + */ + @Column(name = "audit_result") + private Integer auditResult; + + /** + * 删除标识 + */ + private Boolean deleted; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Date createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Date updateTime; + +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AddShopRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AddShopRequest.java index b490fbb11..a6d78a6be 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/AddShopRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AddShopRequest.java @@ -24,4 +24,11 @@ public class AddShopRequest { @ApiModelProperty("店铺名称") private List shopNameList; + public AddShopRequest() { + } + + public AddShopRequest(Long lineId, List shopNameList) { + this.lineId = lineId; + this.shopNameList = shopNameList; + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/AuditOpenNewShopRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/AuditOpenNewShopRequest.java new file mode 100644 index 000000000..104fa1d85 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/AuditOpenNewShopRequest.java @@ -0,0 +1,41 @@ +package com.cool.store.request; + +import com.cool.store.constants.CommonConstants; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author zhangchenbiao + * @FileName: AuditOpenNewShopRequest + * @Description: + * @date 2024-05-09 17:28 + */ +@Data +public class AuditOpenNewShopRequest { + + @NotNull + @ApiModelProperty("记录id") + private Long recordId; + + @NotNull + @Min(1)@Max(2) + @ApiModelProperty("审核状态 0待审核 1通过 2不通过") + private Integer auditResult; + + @ApiModelProperty("店铺名称") + private List shopNameList; + + public boolean check(){ + if(CommonConstants.ONE == this.auditResult && CollectionUtils.isEmpty(this.shopNameList)){ + return false; + } + return true; + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerOpenNewShopPageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerOpenNewShopPageRequest.java new file mode 100644 index 000000000..0271f9f59 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/PartnerOpenNewShopPageRequest.java @@ -0,0 +1,30 @@ +package com.cool.store.request; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2024/4/1 11:21 + * @Version 1.0 + */ +@Data +public class PartnerOpenNewShopPageRequest extends PageBasicInfo { + + @ApiModelProperty("加盟上姓名或者手机号") + private String keyword; + + @ApiModelProperty("意向区域ID") + private Long wantShopAreaId; + + @ApiModelProperty("审核状态 0待审核 1通过 2不通过") + private Integer auditResult; + + @ApiModelProperty(value = "招商经理", hidden = true) + private String investmentManager; + + @ApiModelProperty(value = "区域路径", hidden = true) + private String areaPath; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/SubmitOpenNewShopRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/SubmitOpenNewShopRequest.java new file mode 100644 index 000000000..75957bd37 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/SubmitOpenNewShopRequest.java @@ -0,0 +1,41 @@ +package com.cool.store.request; + +import com.cool.store.entity.OpenNewShopRecordDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +/** + * @author zhangchenbiao + * @FileName: SubmitOpenNewShopRequest + * @Description: + * @date 2024-05-10 10:17 + */ +@Data +public class SubmitOpenNewShopRequest { + + @ApiModelProperty(value = "线索id", required = true) + private Long lineId; + + @NotNull + @Min(1)@Max(10) + @ApiModelProperty("新开意向店铺数量") + private Integer newWantShopNum; + + @Max(99999) + @ApiModelProperty("现有资金") + private Integer fund; + + public OpenNewShopRecordDO convertDO(){ + OpenNewShopRecordDO result = new OpenNewShopRecordDO(); + result.setLineId(this.lineId); + result.setNewWantShopNum(this.newWantShopNum); + result.setFund(this.fund); + return result; + } + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopDetailVO.java new file mode 100644 index 000000000..6ddd0e012 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopDetailVO.java @@ -0,0 +1,45 @@ +package com.cool.store.vo; + +import com.cool.store.entity.OpenNewShopRecordDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Objects; + +/** + * @author zhangchenbiao + * @FileName: PartnerOpenNewShopDetailVO + * @Description:加盟商开新店申请详情 + * @date 2024-05-10 10:04 + */ +@Data +public class PartnerOpenNewShopDetailVO { + + @ApiModelProperty("记录id") + private Long recordId; + + @ApiModelProperty("线索id") + private Long lineId; + + @ApiModelProperty("新开意向店铺数量") + private Integer newWantShopNum; + + @ApiModelProperty("现有资金") + private Integer fund; + + @ApiModelProperty("审核结果 0通过,1拒绝") + private Integer auditResult; + + public static PartnerOpenNewShopDetailVO convert(OpenNewShopRecordDO openNewShopRecord) { + if(Objects.isNull(openNewShopRecord)){ + return null; + } + PartnerOpenNewShopDetailVO result = new PartnerOpenNewShopDetailVO(); + result.setRecordId(openNewShopRecord.getId()); + result.setLineId(openNewShopRecord.getLineId()); + result.setNewWantShopNum(openNewShopRecord.getNewWantShopNum()); + result.setFund(openNewShopRecord.getFund()); + result.setAuditResult(openNewShopRecord.getAuditResult()); + return result; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopPageVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopPageVO.java new file mode 100644 index 000000000..caa4b22ee --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/PartnerOpenNewShopPageVO.java @@ -0,0 +1,99 @@ +package com.cool.store.vo; + +import com.cool.store.dto.partner.PartnerOpenNewShopPageDTO; +import com.google.common.collect.Lists; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Author suzhuhong + * @Date 2024/4/1 11:30 + * @Version 1.0 + */ +@Data +public class PartnerOpenNewShopPageVO { + + @ApiModelProperty("记录id") + private Long recordId; + + @ApiModelProperty("线索ID") + private Long lineId; + + @ApiModelProperty("加盟商编号") + private String partnerNum; + + @ApiModelProperty("线索名称") + private String username; + + @ApiModelProperty("手机号") + private String mobile; + + @ApiModelProperty("意向加盟区域") + private String wantShopAreaName; + + @ApiModelProperty("线索标签") + private List userPortraitList; + + @ApiModelProperty("意向开店数量") + private Integer wantShopNum; + + @ApiModelProperty("扩展经理名称") + private String developmentManagerUserName; + + @ApiModelProperty("线索来源名称") + private String lineSourceName; + + @ApiModelProperty("加盟时间") + private Date joinTime; + + @ApiModelProperty("审核状态 0待审核 1通过 2不通过") + private Integer auditResult; + + public static List convertList(List list, Map joinTimeMap, Map wantShopAreaMap, + Map userNameMap, Map channelMap, Map userPortraitMap){ + if(CollectionUtils.isEmpty(list)){ + return Lists.newArrayList(); + } + List resultList = new ArrayList<>(); + for (PartnerOpenNewShopPageDTO page : list) { + PartnerOpenNewShopPageVO result = new PartnerOpenNewShopPageVO(); + result.setRecordId(page.getRecordId()); + result.setLineId(page.getLineId()); + result.setPartnerNum(page.getPartnerNum()); + result.setUsername(page.getUsername()); + result.setMobile(page.getMobile()); + result.setWantShopAreaName(wantShopAreaMap.get(page.getWantShopAreaId())); + result.setWantShopNum(page.getWantShopNum()); + result.setDevelopmentManagerUserName(userNameMap.get(page.getDevelopmentManager())); + result.setLineSourceName(channelMap.get(page.getLineSource())); + result.setJoinTime(joinTimeMap.get(page.getLineId())); + result.setAuditResult(page.getAuditResult()); + List userPortraitList = new ArrayList<>(); + if(StringUtils.isNotBlank(page.getUserPortrait())){ + String[] parts = page.getUserPortrait().split(","); + for (String part : parts) { + String trimmedPart = part.trim(); + if (StringUtils.isNotBlank(trimmedPart)) { + String s = userPortraitMap.get(Long.valueOf(part)); + if(StringUtils.isNotBlank(s)){ + userPortraitList.add(s); + } + } + } + result.setUserPortraitList(userPortraitList); + } + resultList.add(result); + } + return resultList; + } + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/producer/impl/SimpleMessageServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/producer/impl/SimpleMessageServiceImpl.java index 4a5ba79ab..6e67c406a 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/mq/producer/impl/SimpleMessageServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/producer/impl/SimpleMessageServiceImpl.java @@ -51,7 +51,7 @@ public class SimpleMessageServiceImpl implements SimpleMessageService { properties.setProperty(CommonConstants.REQUEST_ID, requestId); msg.setUserProperties(properties); SendResult send = producer.send(msg); - log.info("消息发送send response:{}", JSONObject.toJSONString(send)); + log.info("消息发送send mqTag:{}, response:{}", tag.getTag(), JSONObject.toJSONString(send)); return send; } catch (Exception e) { log.error("send#######", e); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/OpenNewShopService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenNewShopService.java new file mode 100644 index 000000000..12ea5583e --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenNewShopService.java @@ -0,0 +1,48 @@ +package com.cool.store.service; + +import com.cool.store.request.AuditOpenNewShopRequest; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.cool.store.request.SubmitOpenNewShopRequest; +import com.cool.store.vo.PartnerOpenNewShopDetailVO; +import com.cool.store.vo.PartnerOpenNewShopPageVO; +import com.github.pagehelper.PageInfo; + +/** + * @author zhangchenbiao + * @FileName: OpenNewShopService + * @Description: + * @date 2024-05-09 15:12 + */ +public interface OpenNewShopService { + + /** + * 获取老加盟商开新店 + * @param request + * @return + */ + PageInfo getPartnerOpenNewShopPage(PartnerOpenNewShopPageRequest request); + + + PartnerOpenNewShopDetailVO getOpenNewShopRecordDetail(Long recordId); + + /** + * 审核开新店 + * @param request + * @return + */ + Integer auditOpenNewShop(AuditOpenNewShopRequest request); + + /** + * 提交开店申请 + * @param request + * @return + */ + Long submitOpenNewShop(SubmitOpenNewShopRequest request); + + /** + * 获取待审核记录 + * @param lineId + * @return + */ + PartnerOpenNewShopDetailVO getWaitAuditOpenNewShopRecord(Long lineId); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenNewShopServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenNewShopServiceImpl.java new file mode 100644 index 000000000..e1e2d3786 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenNewShopServiceImpl.java @@ -0,0 +1,143 @@ +package com.cool.store.service.impl; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.HyOpenAreaInfoDAO; +import com.cool.store.dao.HyPartnerUserChannelDAO; +import com.cool.store.dao.OpenNewShopRecordDAO; +import com.cool.store.dto.partner.PartnerOpenNewShopPageDTO; +import com.cool.store.entity.HyOpenAreaInfoDO; +import com.cool.store.entity.OpenNewShopRecordDO; +import com.cool.store.entity.SigningBaseInfoDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.IntentAgreementMapper; +import com.cool.store.request.AddShopRequest; +import com.cool.store.request.AuditOpenNewShopRequest; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.cool.store.request.SubmitOpenNewShopRequest; +import com.cool.store.service.LabelService; +import com.cool.store.service.OpenNewShopService; +import com.cool.store.service.ShopService; +import com.cool.store.vo.PartnerOpenNewShopDetailVO; +import com.cool.store.vo.PartnerOpenNewShopPageVO; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @author zhangchenbiao + * @FileName: OpenNewShopServiceImpl + * @Description: + * @date 2024-05-09 15:12 + */ +@Service +public class OpenNewShopServiceImpl implements OpenNewShopService { + + @Resource + private HyOpenAreaInfoDAO hyOpenAreaInfoDAO; + @Resource + private OpenNewShopRecordDAO openNewShopRecordDAO; + @Resource + private IntentAgreementMapper intentAgreementMapper; + @Resource + private EnterpriseUserDAO enterpriseUserDAO; + @Resource + private HyPartnerUserChannelDAO hyPartnerUserChannelDAO; + @Resource + private LabelService labelService; + @Resource + private ShopService shopService; + + + @Override + public PageInfo getPartnerOpenNewShopPage(PartnerOpenNewShopPageRequest request) { + if(Objects.nonNull(request.getWantShopAreaId())){ + HyOpenAreaInfoDO areaInfo = hyOpenAreaInfoDAO.selectById(request.getWantShopAreaId()); + if(Objects.nonNull(areaInfo)){ + request.setAreaPath(areaInfo.getAreaPath()); + } + } + Page page = openNewShopRecordDAO.getPartnerOpenNewShopPage(request); + List resultList = Lists.newArrayList(); + if(Objects.nonNull(page) && CollectionUtils.isNotEmpty(page.getResult())){ + List result = page.getResult(); + List lineIds = result.stream().filter(o -> Objects.nonNull(o.getLineId())).map(PartnerOpenNewShopPageDTO::getLineId).distinct().collect(Collectors.toList()); + List wantShopAreaIds = result.stream().filter(o -> Objects.nonNull(o.getWantShopAreaId())).map(PartnerOpenNewShopPageDTO::getWantShopAreaId).distinct().collect(Collectors.toList()); + List developmentManagerUserIds = result.stream().filter(o -> Objects.nonNull(o.getDevelopmentManager())).map(PartnerOpenNewShopPageDTO::getDevelopmentManager).distinct().collect(Collectors.toList()); + List lineSourceIds = result.stream().filter(o -> Objects.nonNull(o.getLineSource())).map(PartnerOpenNewShopPageDTO::getLineSource).distinct().collect(Collectors.toList()); + List userPortraitList = result.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PartnerOpenNewShopPageDTO::getUserPortrait).collect(Collectors.toList()); + List signingBaseInfoDOS = intentAgreementMapper.selectByLineIds(lineIds); + Map wantShopAreaMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds); + Map userNameMap = enterpriseUserDAO.getUserNameMap(developmentManagerUserIds); + Map channelMap = hyPartnerUserChannelDAO.getChannelMapByIds(lineSourceIds); + Map userPortraitMap = labelService.getUserPortraitMap(userPortraitList); + Map dateMap = signingBaseInfoDOS.stream().collect(Collectors.toMap(SigningBaseInfoDO::getLineId, SigningBaseInfoDO::getCreateTime)); + resultList = PartnerOpenNewShopPageVO.convertList(result, dateMap, wantShopAreaMap, userNameMap, channelMap, userPortraitMap); + } + PageInfo resultPage = new PageInfo(page); + resultPage.setList(resultList); + return resultPage; + } + + @Override + public PartnerOpenNewShopDetailVO getOpenNewShopRecordDetail(Long recordId) { + OpenNewShopRecordDO openNewShopRecord = openNewShopRecordDAO.getOpenNewShopRecordById(recordId); + if(Objects.isNull(openNewShopRecord)){ + throw new ServiceException(ErrorCodeEnum.OPEN_NEW_SHOP_RECORD_NOT_EXIST); + } + return PartnerOpenNewShopDetailVO.convert(openNewShopRecord); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Integer auditOpenNewShop(AuditOpenNewShopRequest request) { + OpenNewShopRecordDO openNewShopRecord = openNewShopRecordDAO.getOpenNewShopRecordById(request.getRecordId()); + if(Objects.isNull(openNewShopRecord) || openNewShopRecord.getDeleted()){ + throw new ServiceException(ErrorCodeEnum.OPEN_NEW_SHOP_RECORD_NOT_EXIST); + } + if(CommonConstants.ZERO != openNewShopRecord.getAuditResult()){ + throw new ServiceException(ErrorCodeEnum.OPEN_NEW_SHOP_RECORD_AUDITED); + } + if(request.getAuditResult() == CommonConstants.ONE){ + shopService.addShop(new AddShopRequest(openNewShopRecord.getLineId(), request.getShopNameList())); + } + OpenNewShopRecordDO update = new OpenNewShopRecordDO(); + update.setId(request.getRecordId()); + update.setAuditResult(request.getAuditResult()); + return openNewShopRecordDAO.updateOpenNewShopRecord(update); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Long submitOpenNewShop(SubmitOpenNewShopRequest request) { + List recordList = openNewShopRecordDAO.getOpenNewShopRecordList(request.getLineId()); + if(CollectionUtils.isNotEmpty(recordList)){ + List waitAuditRecordList = recordList.stream().filter(o -> CommonConstants.ZERO == o.getAuditResult()).collect(Collectors.toList()); + //过滤待审核的 + if(CollectionUtils.isNotEmpty(waitAuditRecordList)){ + throw new ServiceException(ErrorCodeEnum.OPEN_NEW_SHOP_RECORD_WAIT_AUDIT); + } + List deleteIds = recordList.stream().map(OpenNewShopRecordDO::getId).collect(Collectors.toList()); + openNewShopRecordDAO.deleteOpenNewShopRecord(deleteIds); + } + return openNewShopRecordDAO.insertOpenNewShopRecord(request.convertDO()); + } + + @Override + public PartnerOpenNewShopDetailVO getWaitAuditOpenNewShopRecord(Long lineId) { + OpenNewShopRecordDO openNewShopRecord = openNewShopRecordDAO.getWaitAuditOpenNewShopRecord(lineId); + return PartnerOpenNewShopDetailVO.convert(openNewShopRecord); + } +} 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 510de6299..f0c6cbabc 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 @@ -1,21 +1,17 @@ package com.cool.store.service.impl; -import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.point.*; import com.cool.store.exception.ServiceException; -import com.cool.store.mapper.ShopAuditInfoMapper; import com.cool.store.request.AddShopRequest; import com.cool.store.request.DeleteShopRequest; import com.cool.store.service.ShopService; import com.cool.store.utils.NumberConverter; import com.cool.store.vo.shop.MiniShopPageVO; -import com.cool.store.vo.shop.RentInfoToDoVO; import com.cool.store.vo.shop.ShopStageInfoVO; import com.cool.store.vo.shop.StageShopCountVO; -import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOpenNewShopController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOpenNewShopController.java new file mode 100644 index 000000000..144bdf4d7 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCOpenNewShopController.java @@ -0,0 +1,53 @@ +package com.cool.store.controller.webb; + +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.request.AuditOpenNewShopRequest; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.OpenNewShopService; +import com.cool.store.vo.PartnerOpenNewShopDetailVO; +import com.cool.store.vo.PartnerOpenNewShopPageVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author zhangchenbiao + * @FileName: PCOpenNewShopController + * @Description: + * @date 2024-05-09 15:08 + */ +@RestController +@RequestMapping("/pc/open/new/shop") +@Api(tags = "PC端-老加盟商开新店") +@Slf4j +public class PCOpenNewShopController { + + @Resource + private OpenNewShopService openNewShopService; + + @ApiOperation("获取老加盟商开新店列表") + @PostMapping("/getPartnerOpenNewShopPage") + public ResponseResult> getPartnerOpenNewShopPage(@RequestBody PartnerOpenNewShopPageRequest request) { + request.setInvestmentManager(CurrentUserHolder.getUserId()); + return ResponseResult.success(openNewShopService.getPartnerOpenNewShopPage(request)); + } + + @ApiOperation("获取详情") + @PostMapping("/getOpenNewShopRecordDetail") + public ResponseResult getOpenNewShopRecordDetail(@RequestParam("recordId") Long recordId) { + return ResponseResult.success(openNewShopService.getOpenNewShopRecordDetail(recordId)); + } + + @ApiOperation("审核") + @PostMapping("/auditOpenNewShop") + public ResponseResult auditOpenNewShop(@RequestBody @Validated AuditOpenNewShopRequest request) { + return ResponseResult.success(openNewShopService.auditOpenNewShop(request)); + } + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenNewShopController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenNewShopController.java new file mode 100644 index 000000000..395f91d3f --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenNewShopController.java @@ -0,0 +1,49 @@ +package com.cool.store.controller.webc; + +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.request.AuditOpenNewShopRequest; +import com.cool.store.request.PartnerOpenNewShopPageRequest; +import com.cool.store.request.SubmitOpenNewShopRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.OpenNewShopService; +import com.cool.store.vo.PartnerOpenNewShopDetailVO; +import com.cool.store.vo.PartnerOpenNewShopPageVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author zhangchenbiao + * @FileName: PCOpenNewShopController + * @Description: + * @date 2024-05-09 15:08 + */ +@RestController +@RequestMapping("/mini/open/new/shop") +@Api(tags = "小程序-老加盟商开新店") +@Slf4j +public class MiniOpenNewShopController { + + @Resource + private OpenNewShopService openNewShopService; + + @ApiOperation("开新店") + @PostMapping("/submitOpenNewShop") + public ResponseResult submitOpenNewShop(@RequestBody SubmitOpenNewShopRequest request) { + request.setLineId(PartnerUserHolder.getUser().getLineId()); + return ResponseResult.success(openNewShopService.submitOpenNewShop(request)); + } + + @ApiOperation("获取待审核的状态") + @GetMapping("/getWaitAuditOpenNewShopRecord") + public ResponseResult getWaitAuditOpenNewShopRecord() { + return ResponseResult.success(openNewShopService.getWaitAuditOpenNewShopRecord(PartnerUserHolder.getUser().getLineId())); + } + +}