Merge remote-tracking branch 'xfsg/cc_partner_init' into cc_partner_init

# Conflicts:
#	coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java
#	coolstore-partner-service/src/main/java/com/cool/store/service/impl/JoinIntentionServiceImpl.java
This commit is contained in:
苏竹红
2024-03-27 15:55:29 +08:00
61 changed files with 2278 additions and 98 deletions

View File

@@ -0,0 +1,40 @@
package com.cool.store.enums;
/**
* @author zhangchenbiao
* @FileName: MessageEnum
* @Description:
* @date 2024-03-27 10:50
*/
public enum MessageEnum {
MESSAGE_1("您有一份加盟意向申请,请查收。", "##### 加盟商姓名:{0}\n##### 意向加盟区域:{1}\n", "https://oss.coolcollege.cn/53c11d2f4ec94d4fa7edd7a96e40e2d6.png"),
MESSAGE_2("您有一份邀约面谈预约,请查收。", "##### 加盟商姓名:{0}\n##### 意向加盟区域:{1}\n##### 预约面谈时间:{2}\n", "https://oss.coolcollege.cn/53c11d2f4ec94d4fa7edd7a96e40e2d6.png"),
;
private String title;
private String content;
private String imageUrl;
MessageEnum(String title, String content, String imageUrl) {
this.title = title;
this.content = content;
this.imageUrl = imageUrl;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public String getImageUrl() {
return imageUrl;
}
}

View File

@@ -14,6 +14,7 @@ public enum RocketMqTagEnum {
AUTH_SCOPE_CHANGE("auth_scope_change","授权范围变更"),
USER_EVENT("user_event","钉钉通讯录变更事件"),
DEPT_EVENT("dept_event","部门事件"),
STORE_DING_QUEUE("store_ding_queue", "微应用钉钉消息发送"),
;

View File

@@ -0,0 +1,37 @@
package com.cool.store.enums;
/**
* @author zhangchenbiao
* @FileName: SmsCodeTypeEnum
* @Description: 短信验证码类型
* @date 2021-07-20 9:47
*/
public enum SmsCodeTypeEnum {
LOGIN("SMS_220325070","验证码登录", 10 * 60),
;
private String templateCode;
private String message;
private int cacheSeconds;
SmsCodeTypeEnum(String templateCode, String message, int cacheSeconds) {
this.templateCode = templateCode;
this.message = message;
this.cacheSeconds = cacheSeconds;
}
public String getTemplateCode() {
return templateCode;
}
public String getMessage() {
return message;
}
public int getCacheSeconds() {
return cacheSeconds;
}
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: BussinessStateEnum
* @Description:目前经营情况
* @date 2024-03-26 16:08
*/
public enum BussinessStateEnum {
BUSSINESS_STATE_1(1, "营业中"),
BUSSINESS_STATE_2(2, "空铺"),
;
private Integer code;
private String desc;
BussinessStateEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: CompetitorBusinessCapacityEnum
* @Description:竞争对手经营能力
* @date 2024-03-26 16:08
*/
public enum CompetitorBusinessCapacityEnum {
COMPETITOR_BUSINESS_CAPACITY_1(1, "非常好", 0),
COMPETITOR_BUSINESS_CAPACITY_2(2, "", 1),
COMPETITOR_BUSINESS_CAPACITY_3(3, "一般", 3),
COMPETITOR_BUSINESS_CAPACITY_4(4, "", 4),
;
private Integer code;
private String desc;
private Integer score;
CompetitorBusinessCapacityEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: CompetitorTypeEnum
* @Description:竞争对手性质
* @date 2024-03-26 16:08
*/
public enum CompetitorTypeEnum {
WANT_SHOP_SIZE_1(1, "连锁店", 1),
WANT_SHOP_SIZE_2(2, "强势单店", 2),
WANT_SHOP_SIZE_3(3, "经营散户", 3),
WANT_SHOP_SIZE_4(4, "小型摊贩", 5),
;
private Integer code;
private String desc;
private Integer score;
CompetitorTypeEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: ConsumerAbilityEnum
* @Description:消费能力
* @date 2024-03-26 16:08
*/
public enum ConsumerAbilityEnum {
CONSUMER_ABILITY_1(1, "高端", 10),
CONSUMER_ABILITY_2(2, "中高端", 8),
CONSUMER_ABILITY_3(3, "中端", 6),
CONSUMER_ABILITY_4(4, "低端", 4),
;
private Integer code;
private String desc;
private Integer score;
ConsumerAbilityEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: CoverCommunityEnum
* @Description:覆盖社区(半径500米内
* @date 2024-03-26 16:08
*/
public enum CoverCommunityEnum {
COVER_COMMUNITY_1(1, "800户以下", 5),
COVER_COMMUNITY_2(2, "800户-1200户", 10),
COVER_COMMUNITY_3(3, "1200户-2000户", 12),
COVER_COMMUNITY_4(4, "2000户以上", 15),
;
private Integer code;
private String desc;
private Integer score;
CoverCommunityEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: FlowRateCalculateEnum
* @Description:人流测算(18点-20点)
* @date 2024-03-26 16:08
*/
public enum FlowRateCalculateEnum {
FLOW_RATE_CALCULATE_1(1, ">400人/时以上", 8),
FLOW_RATE_CALCULATE_2(2, "300400人/时", 6),
FLOW_RATE_CALCULATE_3(3, "200300人/时", 5),
FLOW_RATE_CALCULATE_4(4, "100200人/时", 3),
;
private Integer code;
private String desc;
private Integer score;
FlowRateCalculateEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: FlowRateEnum
* @Description:高峰期人流
* @date 2024-03-26 16:08
*/
public enum FlowRateEnum {
FLOW_RATE_1(1, "200以下"),
FLOW_RATE_2(2, "200300"),
FLOW_RATE_3(3, "300400"),
FLOW_RATE_4(4, "400以上"),
;
private Integer code;
private String desc;
FlowRateEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,39 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: FarmerMarketEnum
* @Description:聚客点农贸市场
* @date 2024-03-26 16:08
*/
public enum GatherGuestFarmerMarketEnum {
GATHER_GUEST_FARMER_MARKET_1(1, "", 5),
GATHER_GUEST_FARMER_MARKET_2(2, "", 3),
;
private Integer code;
private String desc;
private Integer score;
GatherGuestFarmerMarketEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: GatherGuestHospitalEnum
* @Description:聚客点医院
* @date 2024-03-26 16:08
*/
public enum GatherGuestHospitalEnum {
GATHER_GUEST_HOSPITAL_1(1, "甲等医院", 5),
GATHER_GUEST_HOSPITAL_2(2, "市级医院", 3),
GATHER_GUEST_HOSPITAL_3(3, "县区级医院", 2),
GATHER_GUEST_HOSPITAL_4(4, "无医院", 1)
;
private Integer code;
private String desc;
private Integer score;
GatherGuestHospitalEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: GatherGuestSchoolEnum
* @Description:聚客点学校
* @date 2024-03-26 16:08
*/
public enum GatherGuestSchoolEnum {
GATHER_GUEST_SCHOOL_1(1, "幼儿园/小学", 4),
GATHER_GUEST_SCHOOL_2(2, "大学/学院", 3),
GATHER_GUEST_SCHOOL_3(3, "初中/高中", 2),
GATHER_GUEST_SCHOOL_4(4, "无学校", 1)
;
private Integer code;
private String desc;
private Integer score;
GatherGuestSchoolEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,40 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: IntendPositionEnum
* @Description:绿化带
* @date 2024-03-26 16:08
*/
public enum GreenBeltEnum {
GREEN_BELT_1(1, "门口无绿化带阻挡", 3),
GREEN_BELT_2(2, "门口有绿化带阻挡", 1),
;
private Integer code;
private String desc;
private Integer score;
GreenBeltEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: StoreOutlookEnum
* @Description:门店观赡
* @date 2024-03-26 16:08
*/
public enum GuestConvenienceEnum {
GUEST_CONVENIENCE_1(1, "门口5米有人行横道", 3),
GUEST_CONVENIENCE_2(2, "门口15米有人行横道", 2),
GUEST_CONVENIENCE_3(3, "无人行横道", 1),
;
private Integer code;
private String desc;
private Integer score;
GuestConvenienceEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: IntendPositionEnum
* @Description:意向店所处位置
* @date 2024-03-26 16:08
*/
public enum IntendPositionEnum {
INTEND_POSITION_1(1, "十字路口", 6),
INTEND_POSITION_2(2, "居民生活中心", 5),
INTEND_POSITION_3(3, "社区出入口", 5),
;
private Integer code;
private String desc;
private Integer score;
IntendPositionEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: NearBusinessConditionEnum
* @Description:周边业态经营情况(100米内)
* @date 2024-03-26 16:08
*/
public enum NearBusinessConditionEnum {
NEAR_BUSINESS_CONDITION_1(1, "经营状况良好", 3),
NEAR_BUSINESS_CONDITION_2(2, "经营状况一般", 2),
NEAR_BUSINESS_CONDITION_3(3, "经营状况差", 1)
;
;
private Integer code;
private String desc;
private Integer score;
NearBusinessConditionEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: NearCompetitorEnum
* @Description:周边(100m内)餐饮店
* @date 2024-03-26 16:08
*/
public enum NearCompetitorEnum {
NEAR_COMPETITOR_1(1, "品牌水果店2家以上", 1),
NEAR_COMPETITOR_2(2, "品牌水果店1家及以上", 2),
NEAR_COMPETITOR_3(3, "夫妻水果店1家及以上", 2),
NEAR_COMPETITOR_4(4, "无水果店", 3)
;
private Integer code;
private String desc;
private Integer score;
NearCompetitorEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,42 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: NearRepastEnum
* @Description:周边(100m内)餐饮店
* @date 2024-03-26 16:08
*/
public enum NearNeighborEnum {
NEAR_NEIGHBOR_1(1, "小业态品牌店3家以上", 4),
NEAR_NEIGHBOR_2(2, "小业态普通店3家以上", 2),
NEAR_NEIGHBOR_3(3, "普通小业态店3家以下", 1),
NEAR_NEIGHBOR_4(4, "无小业态店", 1),
;
private Integer code;
private String desc;
private Integer score;
NearNeighborEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: NearRepastEnum
* @Description:周边(100m内)餐饮店
* @date 2024-03-26 16:08
*/
public enum NearRepastEnum {
NEAR_REPAST_1(1, "餐饮连锁店或6家以上餐饮店", 4),
NEAR_REPAST_2(2, "普通餐饮店", 3),
NEAR_REPAST_3(3, "无餐饮店", 1),
;
private Integer code;
private String desc;
private Integer score;
NearRepastEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: PaymentMethodEnum
* @Description:付款方式
* @date 2024-03-26 16:08
*/
public enum PaymentMethodEnum {
PAYMENT_METHOD_1(1, "月付"),
PAYMENT_METHOD_2(2, "季付"),
PAYMENT_METHOD_3(3, "半年付"),
PAYMENT_METHOD_4(4, "年付"),
;
private Integer code;
private String desc;
PaymentMethodEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: PointDirectionEnum
* @Description:店铺方位
* @date 2024-03-26 16:08
*/
public enum PointDirectionEnum {
POINT_DIRECTION_1(1, "主要动线"),
POINT_DIRECTION_2(2, "次要动线"),
;
private Integer code;
private String desc;
PointDirectionEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: PropertyStatusEnum
* @Description:物业状态
* @date 2024-03-26 16:08
*/
public enum PropertyStatusEnum {
PROPERTY_STATUS_1(1, "原始房东"),
PROPERTY_STATUS_2(2, "二房东"),
PROPERTY_STATUS_3(3, "三房东"),
PROPERTY_STATUS_4(4, "招投标性质"),
;
private Integer code;
private String desc;
PropertyStatusEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,38 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: ShopAreaTypeEnum
* @Description:商圈类型
* @date 2024-03-26 16:08
*/
public enum ShopAreaTypeEnum {
SHOP_AREA_TYPE_1(1, "社区商圈"),
SHOP_AREA_TYPE_2(2, "综合商圈"),
SHOP_AREA_TYPE_3(3, "商业商圈"),
SHOP_AREA_TYPE_4(4, "学校商圈"),
SHOP_AREA_TYPE_5(5, "医院商圈"),
SHOP_AREA_TYPE_6(6, "农贸商圈"),
SHOP_AREA_TYPE_7(7, "纯人流商圈"),
SHOP_AREA_TYPE_8(8, "办公商圈"),
;
private Integer code;
private String desc;
ShopAreaTypeEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,34 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: SiteConditionsEnum
* @Description:立地条件
* @date 2024-03-26 16:08
*/
public enum SiteConditionsEnum {
SITE_CONDITIONS_1(1, "单门面"),
SITE_CONDITIONS_2(2, "双门面"),
SITE_CONDITIONS_3(3, "多门面"),
SITE_CONDITIONS_4(4, "转角"),
;
private Integer code;
private String desc;
SiteConditionsEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}

View File

@@ -0,0 +1,40 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: StoreFlowTrendEnum
* @Description:门店人流动向
* @date 2024-03-26 16:08
*/
public enum StoreFlowTrendEnum {
STORE_FLOW_TREND_1(1, "主要流动路线", 7),
STORE_FLOW_TREND_2(2, "次要流动路线", 4),
;
private Integer code;
private String desc;
private Integer score;
StoreFlowTrendEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,41 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: StoreOutlookEnum
* @Description:门店观赡
* @date 2024-03-26 16:08
*/
public enum StoreOutlookEnum {
STORE_OUTLOOK_1(1, "观赡非常好", 4),
STORE_OUTLOOK_2(2, "观赡一般", 3),
STORE_OUTLOOK_3(2, "观赡差", 2),
;
private Integer code;
private String desc;
private Integer score;
StoreOutlookEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -0,0 +1,43 @@
package com.cool.store.enums.point;
/**
* @author zhangchenbiao
* @FileName: WantShopSizeEnum
* @Description:意向门店开间尺寸
* @date 2024-03-26 16:08
*/
public enum WantShopSizeEnum {
WANT_SHOP_SIZE_1(1, "转角", 6),
WANT_SHOP_SIZE_2(2, "12米以上", 2),
WANT_SHOP_SIZE_3(3, "8-12米", 3),
WANT_SHOP_SIZE_4(4, "4-8米", 5),
WANT_SHOP_SIZE_5(5, "4米以下", 3)
;
private Integer code;
private String desc;
private Integer score;
WantShopSizeEnum(Integer code, String desc, Integer score) {
this.code = code;
this.desc = desc;
this.score = score;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public Integer getScore() {
return score;
}
}

View File

@@ -103,6 +103,11 @@ public class HyOpenAreaInfoDAO {
return ListUtils.emptyIfNull(hyOpenAreaInfoDOS).stream().collect(Collectors.toMap(k->k.getId(), v->v.getAreaPath().replace("/"," ").trim()));
}
public String selectNameMapById(Long id){
HyOpenAreaInfoDO hyOpenAreaInfoDOS = hyOpenAreaInfoMapper.selectById(id);
return hyOpenAreaInfoDOS.getAreaPath().replace("/", " ").trim();
}
public HyOpenAreaInfoDO selectById(Long id){
if (id==null){

View File

@@ -0,0 +1,49 @@
package com.cool.store.dao;
import com.cool.store.entity.LineFollowLogDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.mapper.LineFollowLogMapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.Objects;
/**
* @author zhangchenbiao
* @FileName: LineFollowLogDAO
* @Description:跟进日志
* @date 2024-03-27 14:33
*/
@Slf4j
@Repository
public class LineFollowLogDAO {
@Resource
private LineFollowLogMapper lineFollowLogMapper;
public Page<LineFollowLogDO> getFollowLogPage(Long lineId, Integer pageNum, Integer pageSize){
PageHelper.startPage(pageNum, pageSize);
return lineFollowLogMapper.getFollowLogPage(lineId);
}
/**
* 新增跟进线索
* @param lineInfo
* @param operateUserId
* @param operateUsername
* @param message
* @return
*/
public Long addFollowLog(LineInfoDO lineInfo, String operateUserId, String operateUsername, String message){
if(Objects.isNull(lineInfo)){
return null;
}
LineFollowLogDO followLog = new LineFollowLogDO(lineInfo.getPartnerId(), lineInfo.getId(), operateUserId, operateUsername, lineInfo.getWorkflowStage(), lineInfo.getWorkflowSubStage(), lineInfo.getWorkflowSubStageStatus(), message);
lineFollowLogMapper.insertSelective(followLog);
return followLog.getId();
}
}

View File

@@ -1,11 +1,14 @@
package com.cool.store.mapper;
import com.cool.store.request.JoinIntentionRequest;
import com.cool.store.entity.MemberQuestionDO;
import com.cool.store.vo.PartnerBaseInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface JoinIntentionMapper {
boolean insert(@Param("request") JoinIntentionRequest request);
boolean insertOrUpdate(@Param("request") MemberQuestionDO request);
MemberQuestionDO getByLineId(@Param("lineId") Long lineId);
}

View File

@@ -0,0 +1,16 @@
package com.cool.store.mapper;
import com.cool.store.entity.LineFollowLogDO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
public interface LineFollowLogMapper extends Mapper<LineFollowLogDO> {
/**
*
* @param lineId
* @return
*/
Page<LineFollowLogDO> getFollowLogPage(@Param("lineId")Long lineId);
}

View File

@@ -18,4 +18,6 @@ public interface LineInfoMapper extends Mapper<LineInfoDO> {
* @return
*/
List<LineInfoDO> listByInvestmentManager(@Param("investmentManagerUserId") String investmentManagerUserId, @Param("code") Integer code);
void insertOrUpdate(@Param("param") LineInfoDO lineInfoParam);
}

View File

@@ -1,69 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.JoinIntentionMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.PartnerBaseInfoDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" />
<result column="line_id" jdbcType="BIGINT" property="lineId"/>
<result column="join_type" jdbcType="TINYINT" property="joinType"/>
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
<result column="sex" jdbcType="TINYINT" property="sex" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="want_shop_area" jdbcType="VARCHAR" property="wantShopArea" />
<result column="area_code" jdbcType="VARCHAR" property="areaCode" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="live_area" jdbcType="VARCHAR" property="liveArea"/>
<result column="live_address" jdbcType="VARCHAR" property="liveAddress"/>
<result column="joining_questionnaire" jdbcType="VARCHAR" property="joiningQuestionnaire"/>
<result column="deleted" jdbcType="TINYINT" property="deleted"/>
<resultMap id="BaseResultMap" type="com.cool.store.entity.MemberQuestionDO">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="audit_id" property="auditId" jdbcType="BIGINT"/>
<result column="partner_id" property="partnerId" jdbcType="VARCHAR"/>
<result column="line_id" property="lineId" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="career_status" property="careerStatus" jdbcType="TINYINT"/>
<result column="education_level" property="educationLevel" jdbcType="TINYINT"/>
<result column="annual_income" property="annualIncome" jdbcType="VARCHAR"/>
<result column="has_partner" property="hasPartner" jdbcType="TINYINT"/>
<result column="join_type" property="joinType" jdbcType="TINYINT"/>
<result column="capital_source" property="capitalSource" jdbcType="TINYINT"/>
<result column="business_mode" property="businessMode" jdbcType="TINYINT"/>
<result column="join_experience" property="joinExperience" jdbcType="TINYINT"/>
<result column="fruit_industry_experience" property="fruitIndustryExperience" jdbcType="TINYINT"/>
<result column="store_condition" property="storeCondition" jdbcType="VARCHAR"/>
<result column="payback_period" property="paybackPeriod" jdbcType="VARCHAR"/>
<result column="follows_management_standard" property="followsManagementStandard" jdbcType="TINYINT"/>
<result column="can_training" property="canTraining" jdbcType="TINYINT"/>
<result column="deleted" property="deleted" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
id,
audit_id,
partner_id,
line_id,
join_type,
mobile,
sex,
username,
want_shop_area,
area_code,
create_time,
update_time,
live_area,
live_address,
joining_questionnaire,
career_status,
education_level,
annual_income,
has_partner,
capital_source,
business_mode,
join_experience,
fruit_industry_experience,
store_condition,
payback_period,
follows_management_standard,
can_training,
deleted
</sql>
<insert id="insert" parameterType="com.cool.store.request.JoinIntentionRequest" useGeneratedKeys="true" keyProperty="id">
insert into xfsg_partner_base_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="request.lineId != null">line_id,</if>
<if test="request.partnerId != null">partner_id,</if>
<if test="request.joinType != null">join_type,</if>
<if test="request.userName != null">username,</if>
<if test="request.mobile != null">mobile,</if>
<if test="request.sex != null">sex,</if>
<if test="request.wantShopArea != null">want_shop_area,</if>
<if test="request.areaCode != null">area_code,</if>
<if test="request.liveArea != null">live_area,</if>
<if test="request.liveAddress != null">live_address,</if>
<if test="request.joiningQuestionnaire != null">joining_questionnaire,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="request.lineId != null">#{request.lineId},</if>
<if test="request.partnerId != null">#{request.partnerId},</if>
<if test="request.joinType != null">#{request.joinType},</if>
<if test="request.userName != null">#{request.userName},</if>
<if test="request.mobile != null">#{request.mobile},</if>
<if test="request.sex != null">#{request.sex},</if>
<if test="request.wantShopArea != null">#{request.wantShopArea},</if>
<if test="request.areaCode != null">#{request.areaCode},</if>
<if test="request.liveArea != null">#{request.liveArea},</if>
<if test="request.liveAddress != null">#{request.liveAddress},</if>
<if test="request.joiningQuestionnaire != null">#{request.joiningQuestionnaire},</if>
</trim>
</insert>
<insert id="insertOrUpdate" parameterType="com.cool.store.entity.MemberQuestionDO" useGeneratedKeys="true"
keyProperty="id">
INSERT INTO xfsg_member_question_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="request.auditId != null">audit_id,</if>
<if test="request.partnerId != null">partner_id,</if>
<if test="request.lineId != null">line_id,</if>
<if test="request.careerStatus != null">career_status,</if>
<if test="request.joinType != null">join_type,</if>
<if test="request.educationLevel != null">education_level,</if>
<if test="request.annualIncome != null">annual_income,</if>
<if test="request.hasPartner != null">has_partner,</if>
<if test="request.capitalSource != null">capital_source,</if>
<if test="request.businessMode != null">business_mode,</if>
<if test="request.joinExperience != null">join_experience,</if>
<if test="request.fruitIndustryExperience != null">fruit_industry_experience,</if>
<if test="request.storeCondition != null">store_condition,</if>
<if test="request.paybackPeriod != null">payback_period,</if>
<if test="request.followsManagementStandard != null">follows_management_standard,</if>
<if test="request.canTraining != null">can_training,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="request.auditId != null">#{request.auditId},</if>
<if test="request.partnerId != null">#{request.partnerId},</if>
<if test="request.lineId != null">#{request.lineId},</if>
<if test="request.careerStatus != null">#{request.careerStatus},</if>
<if test="request.joinType != null">#{request.joinType},</if>
<if test="request.educationLevel != null">#{request.educationLevel},</if>
<if test="request.annualIncome != null">#{request.annualIncome},</if>
<if test="request.hasPartner != null">#{request.hasPartner},</if>
<if test="request.capitalSource != null">#{request.capitalSource},</if>
<if test="request.businessMode != null">#{request.businessMode},</if>
<if test="request.joinExperience != null">#{request.joinExperience},</if>
<if test="request.fruitIndustryExperience != null">#{request.fruitIndustryExperience},</if>
<if test="request.storeCondition != null">#{request.storeCondition},</if>
<if test="request.paybackPeriod != null">#{request.paybackPeriod},</if>
<if test="request.followsManagementStandard != null">#{request.followsManagementStandard},</if>
<if test="request.canTraining != null">#{request.canTraining},</if>
</trim>
ON DUPLICATE KEY UPDATE
<trim suffixOverrides=",">
<if test="request.auditId != null">audit_id = #{request.auditId},</if>
<if test="request.partnerId != null">partner_id = #{request.partnerId},</if>
<if test="request.careerStatus != null">career_status = #{request.careerStatus},</if>
<if test="request.joinType != null">join_type = #{request.joinType},</if>
<if test="request.educationLevel != null">education_level = #{request.educationLevel},</if>
<if test="request.annualIncome != null">annual_income = #{request.annualIncome},</if>
<if test="request.hasPartner != null">has_partner = #{request.hasPartner},</if>
<if test="request.capitalSource != null">capital_source = #{request.capitalSource},</if>
<if test="request.businessMode != null">business_mode = #{request.businessMode},</if>
<if test="request.joinExperience != null">join_experience = #{request.joinExperience},</if>
<if test="request.fruitIndustryExperience != null">fruit_industry_experience = #{request.fruitIndustryExperience},</if>
<if test="request.storeCondition != null">store_condition = #{request.storeCondition},</if>
<if test="request.paybackPeriod != null">payback_period = #{request.paybackPeriod},</if>
<if test="request.followsManagementStandard != null">follows_management_standard = #{request.followsManagementStandard},</if>
<if test="request.canTraining != null">can_training = #{request.canTraining},</if>
</trim>
</insert>
<select id="getByLineId" resultType="com.cool.store.entity.MemberQuestionDO">
select
<include refid="Base_Column_List"/>
from xfsg_member_question_info
where line_id = #{lineId}
and deleted = 0
</select>
</mapper>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cool.store.mapper.LineFollowLogMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.LineFollowLogDO">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="partner_id" jdbcType="VARCHAR" property="partnerId" />
<result column="line_id" jdbcType="BIGINT" property="lineId" />
<result column="operate_user_id" jdbcType="VARCHAR" property="operateUserId" />
<result column="operate_username" jdbcType="VARCHAR" property="operateUsername" />
<result column="workflow_stage" jdbcType="TINYINT" property="workflowStage" />
<result column="workflow_sub_stage" jdbcType="TINYINT" property="workflowSubStage" />
<result column="workflow_sub_stage_status" jdbcType="TINYINT" property="workflowSubStageStatus" />
<result column="message" jdbcType="VARCHAR" property="message" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="deleted" jdbcType="BIT" property="deleted" />
</resultMap>
<select id="getFollowLogPage" resultMap="BaseResultMap">
select
id, partner_id, line_id, operate_user_id, operate_username, workflow_stage, workflow_sub_stage, workflow_sub_stage_status, message, create_time
from
xfsg_line_follow_log
where
line_id = #{lineId} and deleted = '0' order by create_time desc
</select>
</mapper>

View File

@@ -30,8 +30,207 @@
<result column="update_user_id" jdbcType="VARCHAR" property="updateUserId" />
<result column="deleted" jdbcType="BIT" property="deleted" />
</resultMap>
<insert id="insertOrUpdate" parameterType="com.cool.store.entity.LineInfoDO" useGeneratedKeys="true" keyProperty="id">
INSERT INTO xfsg_line_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="param.id != null and param.id != ''">
id,
</if>
<if test="param.partnerId != null and param.partnerId != ''">
partner_id,
</if>
<if test="param.regionId != null">
region_id,
</if>
<if test="param.mobile != null and param.mobile != ''">
mobile,
</if>
<if test="param.username != null and param.username != ''">
username,
</if>
<if test="param.sex != null and param.sex != ''">
sex,
</if>
<if test="param.wantShopAreaId != null">
want_shop_area_id,
</if>
<if test="param.liveAddress != null and param.liveAddress != ''">
live_address,
</if>
<if test="param.workflowStage != null">
workflow_stage,
</if>
<if test="param.workflowSubStage != null">
workflow_sub_stage,
</if>
<if test="param.workflowSubStageStatus != null">
workflow_sub_stage_status,
</if>
<if test="param.selectSiteNum != null">
select_site_num,
</if>
<if test="param.prepareShopNum != null">
prepare_shop_num,
</if>
<if test="param.openShopNum != null">
open_shop_num,
</if>
<if test="param.lineSource != null">
line_source,
</if>
<if test="param.investmentManager != null and param.investmentManager != ''">
investment_manager,
</if>
<if test="param.developmentManager != null and param.developmentManager != ''">
development_manager,
</if>
<if test="param.firstInterviewer != null and param.firstInterviewer != ''">
first_interviewer,
</if>
<if test="param.secondInterviewer != null and param.secondInterviewer != ''">
second_interviewer,
</if>
<if test="param.userPortrait != null and param.userPortrait != ''">
user_portrait,
</if>
<if test="param.isJoin != null">
is_join,
</if>
<if test="param.lineStatus != null">
line_status,
</if>
<if test="param.createTime != null">
create_time,
</if>
<if test="param.updateTime != null">
update_time,
</if>
<if test="param.createUserId != null and param.createUserId != ''">
create_user_id,
</if>
<if test="param.updateUserId != null and param.updateUserId != ''">
update_user_id,
</if>
<if test="param.deleted != null">
deleted
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="param.id != null and param.id != ''">
#{param.id},
</if>
<if test="param.partnerId != null and param.partnerId != ''">
#{param.partnerId},
</if>
<if test="param.regionId != null">
#{param.regionId},
</if>
<if test="param.mobile != null and param.mobile != ''">
#{param.mobile},
</if>
<if test="param.username != null and param.username != ''">
#{param.username},
</if>
<if test="param.sex != null and param.sex != ''">
#{param.sex},
</if>
<if test="param.wantShopAreaId != null">
#{param.wantShopAreaId},
</if>
<if test="param.liveAddress != null and param.liveAddress != ''">
#{param.liveAddress},
</if>
<if test="param.workflowStage != null">
#{param.workflowStage},
</if>
<if test="param.workflowSubStage != null">
#{param.workflowSubStage},
</if>
<if test="param.workflowSubStageStatus != null">
#{param.workflowSubStageStatus},
</if>
<if test="param.selectSiteNum != null">
#{param.selectSiteNum},
</if>
<if test="param.prepareShopNum != null">
#{param.prepareShopNum},
</if>
<if test="param.openShopNum != null">
#{param.openShopNum},
</if>
<if test="param.lineSource != null">
#{param.lineSource},
</if>
<if test="param.investmentManager != null and param.investmentManager != ''">
#{param.investmentManager},
</if>
<if test="param.developmentManager != null and param.developmentManager != ''">
#{param.developmentManager},
</if>
<if test="param.firstInterviewer != null and param.firstInterviewer != ''">
#{param.firstInterviewer},
</if>
<if test="param.secondInterviewer != null and param.secondInterviewer != ''">
#{param.secondInterviewer},
</if>
<if test="param.userPortrait != null and param.userPortrait != ''">
#{param.userPortrait},
</if>
<if test="param.isJoin != null">
#{param.isJoin},
</if>
<if test="param.lineStatus != null">
#{param.lineStatus},
</if>
<if test="param.createTime != null">
#{param.createTime},
</if>
<if test="param.updateTime != null">
#{param.updateTime},
</if>
<if test="param.createUserId != null and param.createUserId != ''">
#{param.createUserId},
</if>
<if test="param.updateUserId != null and param.updateUserId != ''">
#{param.updateUserId},
</if>
<if test="param.deleted != null">
#{param.deleted}
</if>
</trim>
ON DUPLICATE KEY UPDATE
<trim suffixOverrides=",">
<if test="param.partnerId != null and param.partnerId != ''">
partner_id = #{param.partnerId},
</if>
<if test="param.regionId != null">
region_id = #{param.regionId},
</if>
<if test="param.mobile != null and param.mobile != ''">
mobile = #{param.mobile},
</if>
<if test="param.username != null and param.username != ''">
username = #{param.username},
</if>
<if test="param.sex != null and param.sex != ''">
sex = #{param.sex},
</if>
<if test="param.wantShopAreaId != null">
want_shop_area_id = #{param.wantShopAreaId},
</if>
<if test="param.liveAddress != null and param.liveAddress != ''">
live_address = #{param.liveAddress},
</if>
<if test="param.workflowStage != null">
workflow_stage = #{param.workflowStage},
</if>
<if test="param.workflowSubStage != null">
workflow_sub_stage = #{param.workflowSubStage}
</if>
</trim>
</insert>
<select id="getByPartnerId" resultMap="BaseResultMap">
<select id="getByPartnerId" resultMap="BaseResultMap">
select * from xfsg_line_info where partner_id = #{partnerId} and deleted = 0
</select>
<select id="getByLineId" resultType="com.cool.store.entity.LineInfoDO">

View File

@@ -3,6 +3,6 @@ jdbc.url = jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcoll
jdbc.user= coolstore
jdbc.password = CSCErYcXniNYm7bT
table.name = xfsg_line_interview
table.object.class = LineInterviewDO
table.mapper = LineInterviewMapper
table.name = xfsg_line_follow_log
table.object.class = LineFollowLogDO
table.mapper = LineFollowLogMapper

View File

@@ -0,0 +1,97 @@
package com.cool.store.dto.message;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@Data
public class SendMessageDTO {
/**
* 钉钉的企业唯一ID
*/
private String corpId;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 发送的人员ID集合
*/
private String userIds;
/**
* PC链接的参数
*/
private String pcParam;
/**
* 移动链接的参数
*/
private String mobileParam;
/**
* oa消息的钉钉图片ID
*/
private String picUrl;
/**
* 是否侧边栏打开消息(钉钉PC端)
* 默认为false
*/
private Boolean isSideOpen = false;
/**
* 是否外跳浏览器打开消息
* 默认为false
*/
private Boolean isJumpOpen = false;
/**
* 是否包含PC端链接(如果不包含则PC端打开消息时弹出二维码用于移动端扫描)
* 默认为false
*/
private Boolean containPcUrl = false;
/**
* 是否是静态链接(直接发送此链接可以是H5的固定页面一般用于推送运营页面)
* 默认为false
*/
private Boolean isStaticUrl = false;
/**
* 静态链接地址
*/
private String staticUrl;
/**
* 发送消息业务id标识
*/
private String outBusinessId;
/**
* 微应用:micro_app; E应用-e_app; 钉钉:DINGDING; 企业微信:qw
*/
private String appType;
private JSONObject oaJson;
private String messageType;
public SendMessageDTO() {
}
@Override
public String toString() {
return "JmsSendMessageVo{" +
"corpId='" + corpId + '\'' +
", title='" + title + '\'' +
", content='" + content + '\'' +
", userIds=" + userIds +
", pcParam='" + pcParam + '\'' +
", mobileParam='" + mobileParam + '\'' +
", picUrl='" + picUrl + '\'' +
", isSideOpen=" + isSideOpen +
", isJumpOpen=" + isJumpOpen +
", containPcUrl=" + containPcUrl +
", isStaticUrl=" + isStaticUrl +
", staticUrl='" + staticUrl + '\'' +
'}';
}
}

View File

@@ -0,0 +1,93 @@
package com.cool.store.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.*;
@Data
@Table(name = "xfsg_line_follow_log")
public class LineFollowLogDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* hy_partner_user_info.partner_id
*/
@Column(name = "partner_id")
private String partnerId;
/**
* hy_partner_line_info.id
*/
@Column(name = "line_id")
private Long lineId;
/**
* 操作人id
*/
@Column(name = "operate_user_id")
private String operateUserId;
/**
* 操作人姓名
*/
@Column(name = "operate_username")
private String operateUsername;
/**
* 流程阶段:1意向加盟;2新店进展;
*/
@Column(name = "workflow_stage")
private Integer workflowStage;
/**
* 流程子阶段
*/
@Column(name = "workflow_sub_stage")
private Integer workflowSubStage;
/**
* 流程子阶段状态
*/
@Column(name = "workflow_sub_stage_status")
private Integer workflowSubStageStatus;
/**
* 备注
*/
private String message;
/**
* 创建时间
*/
@Column(name = "create_time")
private Date createTime;
/**
* 更新时间
*/
@Column(name = "update_time")
private Date updateTime;
/**
* 删除标识
*/
private Boolean deleted;
public LineFollowLogDO() {
}
public LineFollowLogDO(String partnerId, Long lineId, String operateUserId, String operateUsername, Integer workflowStage, Integer workflowSubStage, Integer workflowSubStageStatus, String message) {
this.partnerId = partnerId;
this.lineId = lineId;
this.operateUserId = operateUserId;
this.operateUsername = operateUsername;
this.workflowStage = workflowStage;
this.workflowSubStage = workflowSubStage;
this.workflowSubStageStatus = workflowSubStageStatus;
this.message = message;
this.createTime= new Date();
}
}

View File

@@ -0,0 +1,77 @@
package com.cool.store.entity;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
@Data
/**
* 加盟问卷信息
*/
@Table(name = "xfsg_member_question_info")
public class MemberQuestionDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "audit_id")
private Long auditId;
@Column(name = "partner_id", nullable = false)
private String partnerId;
@Column(name = "line_id", nullable = false)
private Long lineId;
@Column(name = "join_type")
private Integer joinType;
@Column(name = "create_time", nullable = false, columnDefinition = "datetime default current_timestamp")
private Date createTime;
@Column(name = "update_time", nullable = false, columnDefinition = "datetime default current_timestamp on update current_timestamp")
private Date updateTime;
@Column(name = "career_status")
private Integer careerStatus;
@Column(name = "education_level")
private Integer educationLevel;
@Column(name = "annual_income")
private String annualIncome;
@Column(name = "has_partner")
private Integer hasPartner;
@Column(name = "capital_source")
private Integer capitalSource;
@Column(name = "business_mode")
private Integer businessMode;
@Column(name = "join_experience")
private Integer joinExperience;
@Column(name = "fruit_industry_experience")
private Integer fruitIndustryExperience;
@Column(name = "store_condition")
private String storeCondition;
@Column(name = "payback_period")
private String paybackPeriod;
@Column(name = "follows_management_standard")
private Integer followsManagementStandard;
@Column(name = "can_training")
private Integer canTraining;
@Column(name = "deleted", nullable = false, columnDefinition = "tinyint default '0'")
private Boolean deleted;
}

View File

@@ -1,5 +1,7 @@
package com.cool.store.request;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.MemberQuestionDO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -9,16 +11,12 @@ import javax.validation.constraints.NotBlank;
@Data
@ApiModel("加盟意向Request")
public class JoinIntentionRequest {
private Long id;
@ApiModelProperty("线索信息表-线索id")
private Long lineId;
@ApiModelProperty("用户信息表partnerId")
@NotBlank(message = "partnerId不能为空")
private String partnerId;
@ApiModelProperty("加盟身份 1个人加盟 2企业加盟")
private Integer joinType;
@ApiModelProperty("姓名")
@@ -35,6 +33,65 @@ public class JoinIntentionRequest {
private String liveArea;
@ApiModelProperty("常驻区域详细地址")
private String liveAddress;
@ApiModelProperty("加盟问卷长json")
private String joiningQuestionnaire;
@ApiModelProperty("线索审核信息id")
private Long auditId;
@ApiModelProperty("职业状态 1在职 2个体 3自己开公司 0待业")
private Integer careerStatus;
@ApiModelProperty("教育程度 1小学 2初中 3高中 4大学及以上")
private Integer educationLevel;
@ApiModelProperty("家庭年收入 110-20万 220-30万 330-50万 450万以上")
private String annualIncome;
@ApiModelProperty("是否有合伙人 1是 0")
private Integer hasPartner;
@ApiModelProperty("资金来源 1自有资金 2合伙资金 3借贷")
private Integer capitalSource;
@ApiModelProperty("经营方式 1自己独立经营 2和家人一起经营 3和合伙人一起经营 4只投资让他人经营")
private Integer businessMode;
@ApiModelProperty("是否有加盟品牌经营的经验 1无 2单店经验 3多店经验 4多店连锁经验")
private Integer joinExperience;
@ApiModelProperty("是否有水果行业经营的经验 1无 2单店经验 3多店经验 4多店连锁经验")
private Integer fruitIndustryExperience;
@ApiModelProperty("店铺情况 1:自有店铺 2自有意向店铺 3无意向店铺" )
private String storeCondition;
@ApiModelProperty("预期回本的最长周期 11年半以上 21年半内 31年内 4半年内")
private String paybackPeriod;
@ApiModelProperty("是否严格遵守管理标准 1是 2")
private Integer followsManagementStandard;
@ApiModelProperty("是否能参加认证培训 1是 2")
private Integer canTraining;
public LineInfoDO toLineInfoDO() {
LineInfoDO lineInfoDO = new LineInfoDO();
lineInfoDO.setPartnerId(this.partnerId);
lineInfoDO.setMobile(this.mobile);
lineInfoDO.setLiveAddress(this.liveAddress);
lineInfoDO.setUsername(this.userName);
lineInfoDO.setSex(String.valueOf(this.sex));
lineInfoDO.setWantShopAreaId(Long.valueOf(this.areaCode));
lineInfoDO.setId(this.lineId);
return lineInfoDO;
}
public MemberQuestionDO toMemberQuestionDO() {
MemberQuestionDO memberQuestionDO = new MemberQuestionDO();
memberQuestionDO.setId(this.id);
memberQuestionDO.setAuditId(this.auditId);
memberQuestionDO.setPartnerId(this.partnerId);
memberQuestionDO.setLineId(this.lineId);
memberQuestionDO.setCareerStatus(this.careerStatus);
memberQuestionDO.setEducationLevel(this.educationLevel);
memberQuestionDO.setAnnualIncome(this.annualIncome);
memberQuestionDO.setHasPartner(this.hasPartner);
memberQuestionDO.setCapitalSource(this.capitalSource);
memberQuestionDO.setBusinessMode(this.businessMode);
memberQuestionDO.setJoinExperience(this.joinExperience);
memberQuestionDO.setFruitIndustryExperience(this.fruitIndustryExperience);
memberQuestionDO.setStoreCondition(this.storeCondition);
memberQuestionDO.setPaybackPeriod(this.paybackPeriod);
memberQuestionDO.setFollowsManagementStandard(this.followsManagementStandard);
memberQuestionDO.setCanTraining(this.canTraining);
memberQuestionDO.setJoinType(this.joinType);
return memberQuestionDO;
}
}

View File

@@ -0,0 +1,21 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: LineFollowLogRequest
* @Description:
* @date 2024-03-27 14:59
*/
@Data
public class LineFollowLogRequest {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("日志")
private String message;
}

View File

@@ -44,5 +44,6 @@ public class LineInterviewPageRequest extends PageBasicInfo {
@ApiModelProperty("面试类型:0面谈;1一审;2二审")
private Integer interviewType;
@ApiModelProperty("面试官")
private String interviewerUserId;
}

View File

@@ -0,0 +1,103 @@
package com.cool.store.vo;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.MemberQuestionDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.Objects;
@Data
public class PartnerBaseInfoVO {
private Long id;
private String partnerId;
private Long lineId;
@ApiModelProperty("加盟身份 1个人加盟 2企业加盟")
private Integer joinType;
@ApiModelProperty("姓名")
private String username;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("1男 2女")
private Integer sex;
@ApiModelProperty("意向区域编码")
private String areaCode;
@ApiModelProperty("常驻区域详细地址(居住地址)")
private String liveAddress;
@ApiModelProperty("线索审核信息id")
private Long auditId;
@ApiModelProperty("职业状态 1在职 2个体 3自己开公司 0待业")
private Integer careerStatus;
@ApiModelProperty("教育程度 1小学 2初中 3高中 4大学及以上")
private Integer educationLevel;
@ApiModelProperty("家庭年收入 110-20万 220-30万 330-50万 450万以上")
private String annualIncome;
@ApiModelProperty("是否有合伙人 1是 0")
private Integer hasPartner;
@ApiModelProperty("资金来源 1自有资金 2合伙资金 3借贷")
private Integer capitalSource;
@ApiModelProperty("经营方式 1自己独立经营 2和家人一起经营 3和合伙人一起经营 4只投资让他人经营")
private Integer businessMode;
@ApiModelProperty("是否有加盟品牌经营的经验 1无 2单店经验 3多店经验 4多店连锁经验")
private Integer joinExperience;
@ApiModelProperty("是否有水果行业经营的经验 1无 2单店经验 3多店经验 4多店连锁经验")
private Integer fruitIndustryExperience;
@ApiModelProperty("店铺情况 1:自有店铺 2自有意向店铺 3无意向店铺" )
private String storeCondition;
@ApiModelProperty("预期回本的最长周期 11年半以上 21年半内 31年内 4半年内")
private String paybackPeriod;
@ApiModelProperty("是否严格遵守管理标准 1是 2")
private Integer followsManagementStandard;
@ApiModelProperty("是否能参加认证培训 1是 2")
private Integer canTraining;
private Date createTime;
private Date updateTime;
private Integer deleted;
public static PartnerBaseInfoVO from(MemberQuestionDO memberQuestionDO, LineInfoDO lineInfoDO) {
if (Objects.isNull(memberQuestionDO) && Objects.isNull(lineInfoDO)) {
return null;
}
PartnerBaseInfoVO partnerBaseInfoVO = new PartnerBaseInfoVO();
// MemberQuestionDO
partnerBaseInfoVO.setPartnerId(memberQuestionDO.getPartnerId());
partnerBaseInfoVO.setAuditId(memberQuestionDO.getAuditId());
partnerBaseInfoVO.setCareerStatus(memberQuestionDO.getCareerStatus());
partnerBaseInfoVO.setEducationLevel(memberQuestionDO.getEducationLevel());
partnerBaseInfoVO.setAnnualIncome(memberQuestionDO.getAnnualIncome());
partnerBaseInfoVO.setHasPartner(memberQuestionDO.getHasPartner());
partnerBaseInfoVO.setCapitalSource(memberQuestionDO.getCapitalSource());
partnerBaseInfoVO.setBusinessMode(memberQuestionDO.getBusinessMode());
partnerBaseInfoVO.setJoinExperience(memberQuestionDO.getJoinExperience());
partnerBaseInfoVO.setFruitIndustryExperience(memberQuestionDO.getFruitIndustryExperience());
partnerBaseInfoVO.setStoreCondition(memberQuestionDO.getStoreCondition());
partnerBaseInfoVO.setPaybackPeriod(memberQuestionDO.getPaybackPeriod());
partnerBaseInfoVO.setFollowsManagementStandard(memberQuestionDO.getFollowsManagementStandard());
partnerBaseInfoVO.setCanTraining(memberQuestionDO.getCanTraining());
partnerBaseInfoVO.setJoinType(memberQuestionDO.getJoinType());
//LineInfoDO
partnerBaseInfoVO.setId(lineInfoDO.getId());
partnerBaseInfoVO.setPartnerId(lineInfoDO.getPartnerId());
partnerBaseInfoVO.setUsername(lineInfoDO.getUsername());
partnerBaseInfoVO.setMobile(lineInfoDO.getMobile());
partnerBaseInfoVO.setLiveAddress(lineInfoDO.getLiveAddress());
partnerBaseInfoVO.setLineId(lineInfoDO.getId());
partnerBaseInfoVO.setSex(Integer.valueOf(lineInfoDO.getSex()));
partnerBaseInfoVO.setAreaCode(String.valueOf(lineInfoDO.getWantShopAreaId()));
return partnerBaseInfoVO;
}
}

View File

@@ -45,7 +45,7 @@ public class LineInterviewPageVO {
@ApiModelProperty("计划结束时间")
private String endTime;
@ApiModelProperty("面试状态")
@ApiModelProperty("面试状态 1待面试 2待审核 3审批通过 4不通过")
private Integer interviewStatus;
@ApiModelProperty("招商经理")

View File

@@ -0,0 +1,42 @@
package com.cool.store.vo.log;
import com.cool.store.entity.LineFollowLogDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author zhangchenbiao
* @FileName: LineFollowLogVO
* @Description:跟进日志
* @date 2024-03-27 14:50
*/
@Data
public class LineFollowLogVO {
@ApiModelProperty("日志")
private String message;
@ApiModelProperty("创建时间")
private Date createTime;
public LineFollowLogVO(String message, Date createTime) {
this.message = message;
this.createTime = createTime;
}
public static List<LineFollowLogVO> convertList(List<LineFollowLogDO> list){
if (CollectionUtils.isEmpty(list)) {
return null;
}
List<LineFollowLogVO> resultList = new ArrayList<>();
for (LineFollowLogDO followLog : list) {
resultList.add(new LineFollowLogVO(followLog.getMessage(), followLog.getCreateTime()));
}
return resultList;
}
}

View File

@@ -1,6 +1,7 @@
package com.cool.store.service;
import com.cool.store.request.JoinIntentionRequest;
import com.cool.store.vo.PartnerBaseInfoVO;
public interface JoinIntentionService {
/**
@@ -9,4 +10,5 @@ public interface JoinIntentionService {
*/
boolean submit(JoinIntentionRequest request);
PartnerBaseInfoVO getByLineId(Long lineId);
}

View File

@@ -0,0 +1,32 @@
package com.cool.store.service;
import com.cool.store.request.LineFollowLogRequest;
import com.cool.store.vo.log.LineFollowLogVO;
import com.github.pagehelper.PageInfo;
/**
* @author zhangchenbiao
* @FileName: LineFollowService
* @Description:线索跟进
* @date 2024-03-27 14:49
*/
public interface LineFollowService {
/**
* 分页获取跟进日志
* @param lineId
* @param pageNum
* @param pageSize
* @return
*/
PageInfo<LineFollowLogVO> getFollowLogPage(Long lineId, Integer pageNum, Integer pageSize);
/**
* 新增跟进日志
* @param followLog
* @param operateUserId
* @param operateUsername
* @return
*/
Long addFollowLog(LineFollowLogRequest followLog, String operateUserId, String operateUsername);
}

View File

@@ -1,13 +1,37 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.cool.store.dao.EnterpriseUserDAO;
import com.cool.store.enums.UserRoleEnum;
import com.cool.store.enums.WorkflowSubStageEnum;
import com.cool.store.dto.message.SendMessageDTO;
import com.cool.store.enums.*;
import com.cool.store.exception.ServiceException;
import com.cool.store.mq.producer.SimpleMessageService;
import com.cool.store.response.ResponseResult;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.utils.poi.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.MessageFormat;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author zhangchenbiao
@@ -15,6 +39,7 @@ import javax.annotation.Resource;
* @Description:
* @date 2024-03-20 17:09
*/
@Slf4j
@Service
public class CommonService {
@@ -22,6 +47,14 @@ public class CommonService {
private ApplicationContext applicationContext;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private SimpleMessageService simpleMessageService;
@Value("${coolstore.page.domain}")
private String coolStoreDomainUrl;
@Value("${mybatis.configuration.variables.enterpriseId}")
private String enterpriseId;
@Value("${enterprise.dingCorpId}")
private String dingCorpId;
public LineFlowService getLineFlowService(Integer workflowSubStage){
WorkflowSubStageEnum workflowSubStageEnum = WorkflowSubStageEnum.getWorkflowSubStageEnum(workflowSubStage);
@@ -38,4 +71,38 @@ public class CommonService {
//随机一个
return enterpriseUserDAO.getUserInfoByUserIds(null).stream().findAny().get().getUserId();
}
public void sendMessage(List<String> userIds, Long lineId, MessageEnum message, String... param){
if(CollectionUtils.isEmpty(userIds)){
return;
}
userIds = userIds.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList());
if(CollectionUtils.isEmpty(userIds)){
return;
}
String mobileParam = MessageFormat.format("{0}&eid={1}&corpId={2}&appType=dingding2&lineId={3}", "", enterpriseId, dingCorpId, String.valueOf(lineId));
try {
String messageUrl = coolStoreDomainUrl + "dd-noticemsg?miniAppId={0}&appId={1}&corpId={2}&appUrl=" + URLEncoder.encode("pages/common-web-view/index?routerUrl=notice&target=" + mobileParam, StandardCharsets.UTF_8.name());
SendMessageDTO messageDTO = new SendMessageDTO();
messageDTO.setCorpId(dingCorpId);
messageDTO.setUserIds(String.join(Constants.COMMA, userIds));
messageDTO.setOutBusinessId(UUIDUtils.get32UUID());
messageDTO.setAppType("dingding2");
JSONObject map = new JSONObject();
map.put("message_url", messageUrl);
JSONObject headJson = new JSONObject();
headJson.put("bgcolor", "FFBBBBBB");
map.put("head", headJson);
JSONObject body = new JSONObject();
body.put("title", message.getTitle());
body.put("image", message.getImageUrl());
body.put("content", MessageFormat.format(message.getContent(), param));
map.put("body",body);
messageDTO.setOaJson(map);
simpleMessageService.send(JSONObject.toJSONString(messageDTO), RocketMqTagEnum.STORE_DING_QUEUE);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

View File

@@ -1,6 +1,8 @@
package com.cool.store.service.impl;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.MemberQuestionDO;
import com.cool.store.entity.PartnerBaseInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.WorkflowSubStageEnum;
import com.cool.store.enums.WorkflowSubStageStatusEnum;
@@ -9,6 +11,7 @@ import com.cool.store.mapper.JoinIntentionMapper;
import com.cool.store.mapper.LineInfoMapper;
import com.cool.store.request.JoinIntentionRequest;
import com.cool.store.service.JoinIntentionService;
import com.cool.store.vo.PartnerBaseInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -16,6 +19,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Objects;
import static com.cool.store.enums.ErrorCodeEnum.LINE_ID_IS_NOT_EXIST;
/**
* @author guohb
* @ClassName JoinIntentionServiceImpl
@@ -32,20 +37,21 @@ public class JoinIntentionServiceImpl extends LineFlowService implements JoinInt
LineInfoMapper lineInfoMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@Transactional(rollbackFor = Exception.class)
public boolean submit(JoinIntentionRequest request) {
if (Objects.isNull(request)){
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
}
boolean submitStatus = joinIntentionMapper.insert(request);
MemberQuestionDO memberQuestionDO = request.toMemberQuestionDO();
boolean submitStatus = joinIntentionMapper.insertOrUpdate(memberQuestionDO);
if (submitStatus){
//更改线索流程子状态为【待审核】
LineInfoDO lineInfoDO = lineInfoMapper.getByPartnerId(request.getPartnerId());
if (Objects.isNull(lineInfoDO)){
LineInfoDO lineInfoParam = request.toLineInfoDO();
lineInfoParam.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.INTENT_5.getCode());
if (Objects.isNull(lineInfoParam)){
throw new ServiceException(ErrorCodeEnum.INTERVIEW_PARTNER_NOT_EXIST);
}
lineInfoDO.setWorkflowSubStageStatus(WorkflowSubStageStatusEnum.INTENT_5.getCode());
lineInfoMapper.updateByPrimaryKeySelective(lineInfoDO);
lineInfoMapper.insertOrUpdate(lineInfoParam);
return Boolean.TRUE;
}
return Boolean.FALSE;
@@ -73,4 +79,15 @@ public class JoinIntentionServiceImpl extends LineFlowService implements JoinInt
protected Boolean auditClose(Long auditId, LineInfoDO lineInfo) {
return null;
}
@Override
public PartnerBaseInfoVO getByLineId(Long lineId) {
MemberQuestionDO result = joinIntentionMapper.getByLineId(lineId);
LineInfoDO byLineId = lineInfoMapper.getByLineId(lineId);
if (Objects.isNull(result)){
throw new ServiceException(LINE_ID_IS_NOT_EXIST);
}
PartnerBaseInfoVO response = PartnerBaseInfoVO.from(result,byLineId);
return response;
}
}

View File

@@ -0,0 +1,51 @@
package com.cool.store.service.impl;
import com.cool.store.dao.LineFollowLogDAO;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.entity.LineFollowLogDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.LineFollowLogRequest;
import com.cool.store.service.LineFollowService;
import com.cool.store.vo.log.LineFollowLogVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @author zhangchenbiao
* @FileName: LineFollowServiceImpl
* @Description:
* @date 2024-03-27 14:49
*/
@Service
public class LineFollowServiceImpl implements LineFollowService {
@Resource
private LineFollowLogDAO lineFollowLogDAO;
@Resource
private LineInfoDAO lineInfoDAO;
@Override
public PageInfo<LineFollowLogVO> getFollowLogPage(Long lineId, Integer pageNum, Integer pageSize) {
Page<LineFollowLogDO> followLogPage = lineFollowLogDAO.getFollowLogPage(lineId, pageNum, pageSize);
PageInfo resultPage = new PageInfo(followLogPage);
List<LineFollowLogVO> resultList = LineFollowLogVO.convertList(followLogPage);
resultPage.setList(resultList);
return resultPage;
}
@Override
public Long addFollowLog(LineFollowLogRequest followLog, String operateUserId, String operateUsername) {
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(followLog.getLineId());
if(Objects.isNull(lineInfo)){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
return lineFollowLogDAO.addFollowLog(lineInfo, operateUserId, operateUsername, followLog.getMessage());
}
}

View File

@@ -138,6 +138,7 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
}
LineInterviewDO addInterview = LineInterviewDO.convertDO(lineInfo, startTime, endTime, UUIDUtils.get8UUID(), interviewerUserId, interviewType.getCode(), eventId);
lineInterviewDAO.addInterviewInfo(addInterview);
commonService.sendMessage(Arrays.asList(interviewerUserId), lineInfo.getId(), MessageEnum.MESSAGE_2, lineInfo.getUsername(), hyOpenAreaInfoDAO.selectNameMapById(lineInfo.getWantShopAreaId()), DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM, startTime));
return Boolean.TRUE;
}

View File

@@ -0,0 +1,43 @@
package com.cool.store.controller.webb;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.LineFollowLogRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LineFollowService;
import com.cool.store.vo.log.LineFollowLogVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @author zhangchenbiao
* @FileName: LineFollowController
* @Description:
* @date 2024-03-27 15:02
*/
@Api(tags = "跟进日志")
@RestController
@RequestMapping({"pc/follow"})
public class LineFollowController {
@Resource
private LineFollowService lineFollowService;
@ApiOperation("跟进日志分页")
@GetMapping("/page")
public ResponseResult<PageInfo<LineFollowLogVO>> getFollowLogPage(Long lineId, Integer pageNum, Integer pageSize){
return ResponseResult.success(lineFollowService.getFollowLogPage(lineId, pageNum, pageSize));
}
@ApiOperation("新增跟进日志")
@PostMapping("/log/add")
public ResponseResult<Long> addFollowLog(@RequestBody LineFollowLogRequest request){
LoginUserInfo user = CurrentUserHolder.getUser();
return ResponseResult.success(lineFollowService.addFollowLog(request, user.getUserId(), user.getName()));
}
}

View File

@@ -0,0 +1,36 @@
package com.cool.store.controller.webb;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.dao.*;
import com.cool.store.dto.OpenCityDTO;
import com.cool.store.entity.*;
import com.cool.store.enums.MessageEnum;
import com.cool.store.mapper.HyOpenAreaInfoMapper;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.impl.CommonService;
import com.cool.store.utils.poi.ExcelUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/pc/test")
public class PCTestController {
@Resource
private CommonService commonService;
@GetMapping("/sendMessage")
public ResponseResult<Boolean> sendMessage(){
commonService.sendMessage(Arrays.asList("123836131931284423"), 1L, MessageEnum.MESSAGE_1, "张三", "浙江-杭州");
return ResponseResult.success(Boolean.FALSE);
}
}

View File

@@ -0,0 +1,31 @@
package com.cool.store.controller.webb;
import com.cool.store.enums.ExperienceStatusEnum;
import com.cool.store.request.TrainingExperienceDistributionRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.TrainingExperienceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.websocket.server.PathParam;
@RestController
@RequestMapping("/pc/training/experience/")
@Api(tags = "PC端-实训体验")
@Slf4j
public class PCTrainingExperienceController {
@Resource
TrainingExperienceService trainingExperienceService;
@ApiOperation("实训体验分配")
@PostMapping("/distribution")
public ResponseResult<Boolean> distribution(@RequestBody TrainingExperienceDistributionRequest request) {
return ResponseResult.success(trainingExperienceService.distribution(request));
}
}

View File

@@ -4,13 +4,11 @@ package com.cool.store.controller.webc;
import com.cool.store.request.JoinIntentionRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.JoinIntentionService;
import com.cool.store.vo.PartnerBaseInfoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
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 javax.validation.Valid;
@@ -24,9 +22,16 @@ public class MiniJoinIntentionController {
@Resource
private JoinIntentionService joinIntentionService;
@PostMapping(path = "/submit")
@ApiOperation("填写加盟意向申请书")
@PostMapping(path = "/submitOrUpdate")
@ApiOperation("填写或更新加盟意向申请书")
public ResponseResult<Boolean> submit(@RequestBody @Valid JoinIntentionRequest request) {
return ResponseResult.success(joinIntentionService.submit(request));
}
@GetMapping(path = "/getByLineId")
@ApiOperation("查找加盟意向申请书")
public ResponseResult<PartnerBaseInfoVO> getByLineId(@RequestParam("lineId") Long lineId) {
return ResponseResult.success(joinIntentionService.getByLineId(lineId));
}
}

View File

@@ -1,4 +1,4 @@
package com.cool.store.controller.webb;
package com.cool.store.controller.webc;
import com.cool.store.enums.ExperienceStatusEnum;
import com.cool.store.request.TrainingExperienceDistributionRequest;
@@ -11,24 +11,16 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.websocket.server.PathParam;
@RestController
@RequestMapping("/pc/training/experience/")
@Api(tags = "PC端-实训体验")
@RequestMapping("/mini/training/experience/")
@Api(tags = "移动端-实训体验")
@Slf4j
public class TrainingExperienceController {
public class MiniTrainingExperienceController {
@Resource
TrainingExperienceService trainingExperienceService;
@ApiOperation("实训体验分配")
@PostMapping("/distribution")
public ResponseResult<Boolean> distribution(@RequestBody TrainingExperienceDistributionRequest request) {
return ResponseResult.success(trainingExperienceService.distribution(request));
}
@ApiOperation("实训体验状态变更")
@GetMapping("/experience/{status}")
public ResponseResult experienceStatusChange(@ApiParam(value = "实训体验状态 DONE:完成 ABANDON:放弃") @PathVariable(value = "status") ExperienceStatusEnum statusEnum,

View File

@@ -20,7 +20,7 @@ import java.util.concurrent.Future;
@Slf4j
@RestController
@RequestMapping("/pc/test")
@RequestMapping("/test")
public class TestController {
@Resource

View File

@@ -72,4 +72,6 @@ recommended.channel.id=52400
wx.pay.privateKeyPath=D:\\weixin\\apiclient_key.pem
aliyun.accessKeyId=LTAI5tQ6QBnWaB5LaJYz6zcD
aliyun.accessKeySecret=spqsOgtfr54cwK861O3N3fInydTgjA
aliyun.accessKeySecret=spqsOgtfr54cwK861O3N3fInydTgjA
coolstore.page.domain=https://t2store.coolstore.cn/

View File

@@ -37,9 +37,9 @@ mybatis.configuration.map-underscore-to-camel-case=true
isv.domain=https://abstore-isv.coolstore.cn/isv
#rocketmq \u914D\u7F6E
rocketmq.accessKey=zK2oVEz4G1ts23d2
rocketmq.secretKey=0UstLCS0mh2ASgBh
rocketmq.nameSrvAdder=http://rmq-cn-9lb38l1rx04.cn-hangzhou.rmq.aliyuncs.com:8080
rocketmq.accessKey=LTAI5t5ouXZuFgxJMbQea3b2
rocketmq.secretKey=yuomDstRjSdihtN5zo8viDbWu8Z0ig
rocketmq.nameSrvAdder=http://MQ_INST_1947409023213164_BX3sLZnA.cn-hangzhou.mq-internal.aliyuncs.com:8080
rocketmq.topic=simple_message
#oss配置
@@ -77,4 +77,6 @@ xxl.job.executor.logretentiondays = 30
xxl.job.accessToken =
exhibition.channel.id=52399
recommended.channel.id=52400
recommended.channel.id=52400
coolstore.page.domain=https://t2store.coolstore.cn/

View File

@@ -51,6 +51,7 @@ server.tomcat.basedir=/tmp/tomcat/partner-b
log4j2.formatMsgNoLookups=true
mybatis.configuration.variables.enterpriseId=e17cd2dc350541df8a8b0af9bd27f77d
enterprise.dingCorpId=dingef2502a50df74ccc35c2f4657eb6378f
wx.pay.merchantId=1670560201
wx.pay.privateKeyPath=/opt/apps/coolcollege/apiclient/apiclient_key.pem