diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java index 763b31618..abae182db 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/CommonConstants.java @@ -26,6 +26,11 @@ public class CommonConstants { public static final int NORMAL_LOCK_TIMES = 60 * 1000; + /** + * 短期token过期时间,单位秒 + */ + public static final int SHORT_TERM_TOKEN_EXPIRE = 60 * 5; + public static final int AN_HOUR_SECONDS = 3600; //十秒 public static final int TEN_SECONDS = 10000; @@ -55,6 +60,11 @@ public class CommonConstants { public static final String ZXJP_MINI_PROGRAM_LOGIN_FLAG = "zxjp_mini_program_login_flag:{0}"; + /** + * 小程序短期token key + */ + public static final String ZXJP_MIN_PROGRAM_SHORT_TERM_LOGIN_FLAG = "zxjp_mini_program_short_term_login_flag:{0}"; + public static final String ROOT_DEPT_ID_STR = "1"; public static final Integer DEAL_RECORD_MAX_SIZE = 1000; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqGroupEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqGroupEnum.java index ca1849ed2..76e751674 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqGroupEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqGroupEnum.java @@ -32,6 +32,9 @@ public enum RocketMqGroupEnum { */ FEI_SHU_EVENT_LISTENER("fei_shu_event_listener", new ArrayList<>(Arrays.asList(RocketMqTagEnum.USER_EVENT, RocketMqTagEnum.AUTH_SCOPE_CHANGE, RocketMqTagEnum.DEPT_EVENT))), + + STORE_USER_UPDATE("store_user_update", new ArrayList<>(Arrays.asList(RocketMqTagEnum.STORE_USER_UPDATE))) + ; private final String group; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqTagEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqTagEnum.java index 6d01d8557..4635dd69d 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqTagEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/RocketMqTagEnum.java @@ -18,6 +18,7 @@ public enum RocketMqTagEnum { ZXJP_CREATE_STORE("zxjp_create_store", "正新鸡排招商创建门店"), PARTNER_LICENSE_SYNC_QUEUE("partner_license_sync_queue", "招商证照信息同步"), BUSINESS_SYNC("business_sync", "工商食安信息同步"), + STORE_USER_UPDATE("store_user_update", "门店信息人员变更同步菜品"); ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java index 6180a4163..0507da90c 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java @@ -35,6 +35,7 @@ public class CoolDateUtils { public static final String DATE_FORMAT_SEC_6 = "yyyy.MM.dd"; public static final String DATE_FORMAT_SEC_7 = "yyyy/MM/dd HH:mm"; public static final String DATE_FORMAT_SEC_8 = "yyyyMMdd"; + public static final String DATE_FORMAT_SEC_9 = "yyyyMMddHHmmssSSS"; private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @@ -70,7 +71,7 @@ public class CoolDateUtils { } public static void main(String[] args) { - // 创建一个Date对象 + //创建一个Date对象 Date date = new Date(); // 将Date对象转换为LocalDate对象 @@ -146,6 +147,13 @@ public class CoolDateUtils { return LocalDate.now().format(DATE_FORMATTER); } + public static final String getTodayMillis(){ + DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(DATE_FORMAT_SEC_9); + return LocalDateTime.now().format(DATE_FORMATTER); + } + + + /** * 获取当前日期字符串 (yyyy-MM-dd) */ diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/SignatureUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/SignatureUtils.java index 0c542aa9d..17708e109 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/SignatureUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/SignatureUtils.java @@ -62,6 +62,8 @@ public class SignatureUtils { .add(timeStamp) .add(random) .toString(); + + log.info("plainText:{}",plainText); // 签名算法 Signature signature = Signature.getInstance("SHA256WithRSA"); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java index 086cd178b..2111657f4 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java @@ -72,8 +72,8 @@ public class StoreDao { } - public List list() { - return storeMapper.list(); + public List list(Integer isIot) { + return storeMapper.list(isIot); } public List getStoreNumByStoreCodes(List storeCodeIds) { diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java new file mode 100644 index 000000000..75a361452 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/store/StoreMasterSignerInfoDAO.java @@ -0,0 +1,37 @@ +package com.cool.store.dao.store; + +import cn.hutool.core.collection.CollStreamUtil; +import com.cool.store.entity.store.StoreMasterSignerInfoDO; +import com.cool.store.mapper.store.StoreMasterSignerInfoMapper; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + *

+ * 门店签约信息DAO + *

+ * + * @author wangff + * @since 2025/9/23 + */ +@Repository +@RequiredArgsConstructor +public class StoreMasterSignerInfoDAO { + private final StoreMasterSignerInfoMapper storeMasterSignerInfoMapper; + + /** + * 获取门店签约信息Map + */ + public Map getSignerMapByStoreIds(List storeIds) { + if (CollectionUtils.isEmpty(storeIds)) { + return Collections.emptyMap(); + } + List list = storeMasterSignerInfoMapper.selectByStoreIds(storeIds); + return CollStreamUtil.toMap(list, StoreMasterSignerInfoDO::getStoreId, v -> v); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java index 16b33d5ab..b4401bdf4 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java @@ -39,7 +39,7 @@ public interface StoreMapper { * 分页查询门店数据 * @return */ - List list(); + List list(@Param("isIot") Integer isIot); List getStoreAreaList( @Param("storeIds") List storeIds); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/store/StoreMasterSignerInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/store/StoreMasterSignerInfoMapper.java new file mode 100644 index 000000000..67e2231e3 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/store/StoreMasterSignerInfoMapper.java @@ -0,0 +1,19 @@ +package com.cool.store.mapper.store; + + +import com.cool.store.entity.store.StoreMasterSignerInfoDO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author zhangchenbiao + * @date 2025-09-23 11:32 + */ +public interface StoreMasterSignerInfoMapper { + + /** + * 根据门店id查询签约信息 + */ + List selectByStoreIds(@Param("storeIds") List storeIds); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml index 506a50d72..da640615e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml @@ -44,6 +44,12 @@ + + + + + + + diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml index ded24a4de..fb58d5e5a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/UserAuthMappingMapper.xml @@ -55,7 +55,7 @@ - and b.position_type =#{positionType} + and (b.position_type =#{positionType} or b.id in (180000000,120000000,40000000) ) and b.role_auth !=#{notRoleAuth} diff --git a/coolstore-partner-dao/src/main/resources/mapper/store/storeMasterSignerInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/store/storeMasterSignerInfoMapper.xml new file mode 100644 index 000000000..7ed5ca403 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/store/storeMasterSignerInfoMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + id, store_id, signer1_name, signer1_mobile, signer1_id_card_no, signer1_id_card_front, + signer1_id_card_back, signer2_name, signer2_mobile, signer2_id_card_no, signer2_id_card_front, + signer2_id_card_back, create_time, update_time + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreDTO.java index 0c88ae388..3937ea797 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreDTO.java @@ -43,4 +43,17 @@ public class StoreDTO { private String longitude; private String latitude; + + @ApiModelProperty("订货人") + private String addresseeName; + @ApiModelProperty("手机号") + private String addresseeMobile; + @ApiModelProperty("收件省市区") + private String addresseeArea; + @ApiModelProperty("订货地址") + private String addresseeAddress; + @ApiModelProperty("管理督导-crm系统的regionId") + private String managerSupervisionName; + @ApiModelProperty("所属大区/分部") + private String branchName; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreNameDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreNameDTO.java new file mode 100644 index 000000000..daf196280 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/StoreNameDTO.java @@ -0,0 +1,25 @@ +package com.cool.store.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

+ * 门店名称DTO + *

+ * + * @author wangff + * @since 2025/9/16 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StoreNameDTO { + @ApiModelProperty("门店名称") + private String storeName; + + @ApiModelProperty("门店编码") + private String storeNum; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserDTO.java index 9ea6811b7..33104e47a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserDTO.java @@ -1,6 +1,7 @@ package com.cool.store.dto.store; import lombok.Data; +import lombok.NoArgsConstructor; /** * @Author suzhuhong @@ -8,6 +9,7 @@ import lombok.Data; * @Version 1.0 */ @Data +@NoArgsConstructor public class StoreUserDTO { private String userId; @@ -18,4 +20,8 @@ public class StoreUserDTO { private String positionName; + public StoreUserDTO(String userName, String mobile) { + this.userName = userName; + this.mobile = mobile; + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserPositionDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserPositionDTO.java index 69ed9ed5d..bcbd776bb 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserPositionDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserPositionDTO.java @@ -18,6 +18,8 @@ public class StoreUserPositionDTO { private String shopCode; + private String storeCode; + List userList; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserUpdateDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserUpdateDTO.java new file mode 100644 index 000000000..f9cdf6e0c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreUserUpdateDTO.java @@ -0,0 +1,31 @@ +package com.cool.store.dto.store; + +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/9/25 15:37 + * @Version 1.0 + */ +@Data +public class StoreUserUpdateDTO { + + private String storeCode; + + List userList; + + @Data + class UserDTO { + + private String userName; + + private String mobile; + + private String positionName; + + } + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramFreeLoginDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramFreeLoginDTO.java new file mode 100644 index 000000000..14041c0ca --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/wx/MiniProgramFreeLoginDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto.wx; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + *

+ * 小程序免登DTO + *

+ * + * @author wangff + * @since 2025/9/18 + */ +@Data +public class MiniProgramFreeLoginDTO { + @ApiModelProperty("手机号") + @NotBlank(message = "手机号不能为空") + private String mobile; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreDO.java index 83572294e..35c9d2a9e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreDO.java @@ -238,5 +238,31 @@ public class StoreDO { private String miniProgramOrderStoreName; + /** + * 是否接入物联网 + */ + private Integer isIot; + + /** + * 收件人 + */ + private String addresseeName; + + /** + * 手机号 + */ + private String addresseeMobile; + + /** + * 收件省市区 + */ + private String addresseeArea; + + /** + * 收件详细地址 + */ + private String addresseeAddress; + + private Long branch; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/store/StoreMasterSignerInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/store/StoreMasterSignerInfoDO.java new file mode 100644 index 000000000..f3518fc6f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/store/StoreMasterSignerInfoDO.java @@ -0,0 +1,63 @@ +package com.cool.store.entity.store; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * + * @author wangff + * @date 2025-09-23 11:32 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreMasterSignerInfoDO implements Serializable { + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("门店ID") + private String storeId; + + @ApiModelProperty("签约人1姓名") + private String signer1Name; + + @ApiModelProperty("签约人1手机号") + private String signer1Mobile; + + @ApiModelProperty("签约人1身份证号()") + private String signer1IdCardNo; + + @ApiModelProperty("签约人1身份证正面图片路径") + private String signer1IdCardFront; + + @ApiModelProperty("签约人1身份证反面图片路径") + private String signer1IdCardBack; + + @ApiModelProperty("签约人2姓名") + private String signer2Name; + + @ApiModelProperty("签约人2手机号") + private String signer2Mobile; + + @ApiModelProperty("签约人2身份证号()") + private String signer2IdCardNo; + + @ApiModelProperty("签约人2身份证正面图片路径") + private String signer2IdCardFront; + + @ApiModelProperty("签约人2身份证反面图片路径") + private String signer2IdCardBack; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/ZxjpApiRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/ZxjpApiRequest.java index acb8dda8a..b48500de2 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/ZxjpApiRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/ZxjpApiRequest.java @@ -219,6 +219,8 @@ public class ZxjpApiRequest { private Long shopId; + @ApiModelProperty("合同编号") + private String contractCode; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/response/caipin/StoreUserResponse.java b/coolstore-partner-model/src/main/java/com/cool/store/response/caipin/StoreUserResponse.java new file mode 100644 index 000000000..4233acea8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/response/caipin/StoreUserResponse.java @@ -0,0 +1,17 @@ +package com.cool.store.response.caipin; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/9/25 15:05 + * @Version 1.0 + */ +@Data +public class StoreUserResponse { + + private String msgDetail; + + private String msgFront; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java index 78fa5049a..c16e4d401 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java @@ -39,5 +39,7 @@ public class MessageDetailVO { private Integer processStatus; private Integer processType; + @ApiModelProperty("第三方id") + private String handleKeyword; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java index 793fda56d..348edb15d 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java @@ -51,6 +51,8 @@ public class MessageTemplateDetailVO { private Integer totalNum; @ApiModelProperty("系统来源") private String systemSource; + @ApiModelProperty("第三方id") + private String handleKeyword; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java index e420dac8a..e720e5c03 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/ConsumerClient.java @@ -8,6 +8,7 @@ import com.aliyun.openservices.ons.api.bean.Subscription; import com.cool.store.constants.CommonConstants; import com.cool.store.enums.RocketMqGroupEnum; import com.cool.store.mq.RocketMqConfig; +import com.cool.store.mq.consumer.listener.StoreUserUpdateListener; import com.cool.store.mq.consumer.listener.XfsgTrainingPersonSyncListener; import com.google.common.collect.Maps; import org.springframework.context.annotation.Bean; @@ -32,6 +33,8 @@ public class ConsumerClient { // private FeiShuEventListener feiShuEventListener; @Resource private XfsgTrainingPersonSyncListener xfsgTrainingPersonSyncListener; + @Resource + private StoreUserUpdateListener storeUserUpdateListener; /** * 获取通用配置 @@ -85,4 +88,17 @@ public class ConsumerClient { // } + @Bean(initMethod = "start", destroyMethod = "shutdown") + public ConsumerBean storeUserUpdate() { + RocketMqGroupEnum groupEnum = RocketMqGroupEnum.STORE_USER_UPDATE; + ConsumerBean consumerBean = new ConsumerBean(); + //配置文件 + Properties properties = getCommonProperties(groupEnum); + consumerBean.setProperties(properties); + Map commonSubscriptionTable = getCommonSubscriptionTable(groupEnum, storeUserUpdateListener); + //订阅多个topic如上面设置 + consumerBean.setSubscriptionTable(commonSubscriptionTable); + return consumerBean; + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/StoreUserUpdateListener.java b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/StoreUserUpdateListener.java new file mode 100644 index 000000000..7509fbe66 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/mq/consumer/listener/StoreUserUpdateListener.java @@ -0,0 +1,68 @@ +package com.cool.store.mq.consumer.listener; + +import com.alibaba.fastjson.JSONObject; +import com.aliyun.openservices.ons.api.Action; +import com.aliyun.openservices.ons.api.ConsumeContext; +import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.MessageListener; +import com.cool.store.constants.CommonConstants; +import com.cool.store.dto.store.StoreUserPositionDTO; +import com.cool.store.dto.store.StoreUserUpdateDTO; +import com.cool.store.service.PushService; +import com.cool.store.service.StoreService; +import com.cool.store.service.ThirdFoodService; +import com.cool.store.utils.RedisUtilPool; +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.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/9/25 14:49 + * @Version 1.0 + */ +@Slf4j +@Service +public class StoreUserUpdateListener implements MessageListener { + + @Autowired + public RedisUtilPool redisUtilPool; + @Autowired + StoreService storeService; + @Autowired + ThirdFoodService thirdFoodService; + + @Override + public Action consume(Message message, ConsumeContext context) { + String text = new String(message.getBody()); + if(StringUtils.isBlank(text)){ + log.info("消息体为空,tag:{},messageId:{}",message.getTag(),message.getMsgID()); + return Action.CommitMessage; + } + String lockKey = "StoreUserUpdateListener:" + message.getMsgID(); + boolean lock = redisUtilPool.setNxExpire(lockKey, message.getMsgID(), CommonConstants.NORMAL_LOCK_TIMES); + if(lock){ + try { + List storeUser = storeService.getStoreUser(Arrays.asList(text)); + if (CollectionUtils.isNotEmpty(storeUser)){ + //转换 否则验签不通过 + List storeUserUpdateDTOS = JSONObject.parseArray(JSONObject.toJSONString(storeUser), StoreUserUpdateDTO.class); + thirdFoodService.pushStoreUser(storeUserUpdateDTOS); + } + }catch (Exception e){ + log.error("StoreUserUpdateListener consume error",e); + return Action.ReconsumeLater; + }finally { + redisUtilPool.delKey(lockKey); + } + log.info("消费成功,tag:{},messageId:{},reqBody={}",message.getTag(),message.getMsgID(),text); + return Action.CommitMessage; + } + return Action.ReconsumeLater; + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java index d916b61a7..3397041b1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.StoreDTO; +import com.cool.store.dto.StoreNameDTO; import com.cool.store.dto.store.AuthStoreUserDTO; import com.cool.store.dto.store.StoreUserPositionDTO; import com.cool.store.response.MiniShopsResponse; @@ -24,6 +25,11 @@ public interface StoreService { */ PageInfo getStoreExtendFieldInfo(Integer pageSize,Integer pageNum); + /** + * 分页查询接入物联网的门店 + */ + PageInfo getIotStoreList(Integer pageNum, Integer pageSize); + PageInfo getStoreListByMobile(String mobile,Integer pageNum,Integer pageSize,String storeName,String storeNum); List getStoreUser(List storeCodeList); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ThirdFoodService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ThirdFoodService.java index c16a436e1..919cd6d69 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ThirdFoodService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ThirdFoodService.java @@ -2,6 +2,11 @@ package com.cool.store.service; import com.cool.store.dto.FoodTokenDTO; import com.cool.store.dto.GetAccessTokenDTO; +import com.cool.store.dto.store.StoreUserPositionDTO; +import com.cool.store.dto.store.StoreUserUpdateDTO; +import com.cool.store.response.caipin.StoreUserResponse; + +import java.util.List; /** * 正新菜品市场api对接-埃林哲-对接人徐哲 @@ -19,4 +24,11 @@ public interface ThirdFoodService { */ String getFoodToken(FoodTokenDTO dto); + /** + * 推送门店人员信息 + * @param storeUserUpdateDTOList + * @return + */ + StoreUserResponse pushStoreUser(List storeUserUpdateDTOList); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java index fa329957e..d77703d46 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/WechatMiniAppService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.wx.MiniAppUrlLinkReqDTO; +import com.cool.store.dto.wx.MiniProgramFreeLoginDTO; import com.cool.store.dto.wx.MiniProgramLoginDTO; import com.cool.store.request.MobileUpdateRequest; import com.cool.store.vo.PartnerUserInfoVO; @@ -28,4 +29,18 @@ public interface WechatMiniAppService { String getMiniAppUrl(); String getMiniAppUrlLink(MiniAppUrlLinkReqDTO miniAppUrlLinkReqDTO); + + /** + * 通过手机号获取短期token + * @param param 小程序免登DTO + * @return Token + */ + String getShortTermTokenByMobile(MiniProgramFreeLoginDTO param); + + /** + * 通过短期token获取用户信息 + * @param token 短期token + * @return 用户信息VO + */ + PartnerUserInfoVO getUserInfoByShortTermToken(String token); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java index fb36918f4..1daeb4fb5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/BuildInformationServiceImpl.java @@ -1,6 +1,7 @@ package com.cool.store.service.impl; +import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.entity.*; @@ -20,7 +21,7 @@ import com.cool.store.service.UserAuthMappingService; import com.cool.store.utils.RedisConstantUtil; import com.cool.store.utils.RedisUtilPool; import com.cool.store.utils.poi.StringUtils; -import io.lettuce.core.ZAddArgs; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; @@ -38,6 +39,7 @@ import java.util.stream.Stream; * @createDate 2024-10-09 14:05:52 */ @Service +@Slf4j public class BuildInformationServiceImpl implements BuildInformationService { @Resource private PlatformBuildDAO platformBuildDAO; @@ -73,6 +75,102 @@ public class BuildInformationServiceImpl implements BuildInformationService { private BigRegionDAO bigRegionDAO; + @Override + @Transactional(rollbackFor = Exception.class) + public Integer submitOrUpdate(BuildInformationRequest request) { + log.info("提交/修改建店资料开始,shopId:{}", JSONObject.toJSONString(request)); + String lockKey = redisConstantUtil.submitBuildKey(request.getShopId()); + String lockValue = UUID.randomUUID().toString(); + boolean acquired = false; + try { + acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.TEN_SECONDS); + if (Boolean.TRUE.equals(acquired)) { + ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId()); +// if (JoinModeEnum.FLAGSHIP_STORE.getCode()!=shopInfoDO.getJoinMode()){ +// log.info("FLAGSHIP_STORE:{},{},{},{},{},{},{}",request.getSettlerName(),request.getSettlerIdCardFront(), +// request.getSettlerInHandFrontPicture(),request.getSettlerBankBackPhotoUrl(), +// request.getSettlerBankNumber(),request.getSettlerBankMobile(),request.getSettlerBankName()); +// //校验结算人非空 +// if (StringUtils.isAnyBlank(request.getSettlerName(),request.getSettlerIdCardFront(), +// request.getSettlerInHandFrontPicture(),request.getSettlerBankBackPhotoUrl(), +// request.getSettlerBankNumber(),request.getSettlerBankMobile(),request.getSettlerBankName())) { +// throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); +// } +// } + + BuildInformationDO informationDO = buildInformationDAO.selectOneByShopId(request.getShopId()); + BuildInformationDO buildInformationDO = request.toDO(); + OrderSysInfoDO orderSysInfoDO = getOrderSysInfoDO(request); + OrderSysInfoDO orderSysInfoDO1 = orderSysInfoDAO.selectByShopId(request.getShopId()); + if (Objects.nonNull(orderSysInfoDO1)) { + orderSysInfoDAO.updateByShopId(orderSysInfoDO); + } else { + orderSysInfoDAO.insertSelective(orderSysInfoDO); + } + LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId()); + QualificationsInfoDO qualificationsInfoDO = qualificationsInfoDAO.getByLineId(lineInfoDO.getId()); + if (request.getJuridicalIsSamePartner()) { + buildInformationDO.setJuridicalName(lineInfoDO.getUsername()); + buildInformationDO.setJuridicalIdCardNo(qualificationsInfoDO.getIdCardNo()); + buildInformationDO.setJuridicalIdCardFront(qualificationsInfoDO.getFrontOfIdCard()); + buildInformationDO.setJuridicalIdCardReverse(qualificationsInfoDO.getBackOfIdCard()); + } + if (request.getSettlerIsSamePartner()!=null&&request.getSettlerIsSamePartner()) { + buildInformationDO.setSettlerIdCardNo(qualificationsInfoDO.getIdCardNo()); + buildInformationDO.setSettlerName(lineInfoDO.getUsername()); + buildInformationDO.setSettlerIdCardFront(qualificationsInfoDO.getFrontOfIdCard()); + buildInformationDO.setSettlerIdCardReverse(qualificationsInfoDO.getBackOfIdCard()); + } + if (Objects.isNull(informationDO)) { + buildInformationDO.setCreateTime(new Date()); + buildInformationDO.setUpdateTime(new Date()); + shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_151); + HashMap map = new HashMap<>(); + map.put("partnerUsername", lineInfoDO.getUsername()); + map.put("partnerMobile", lineInfoDO.getMobile()); + map.put("storeName", shopInfoDO.getShopName()); + List logisticsList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.LOGISTICS, shopInfoDO.getRegionId()); + List logistics = new ArrayList<>(); + if (Objects.nonNull(logisticsList)) { + logistics.addAll(logisticsList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList())); + } + commonService.sendQWMessage(logistics, + MessageEnum.MESSAGE_52, + map); + return buildInformationDAO.insertSelective(buildInformationDO); + } else { + buildInformationDO.setUpdateTime(new Date()); + List platformBuildDOS = platformBuildDAO.selectByShopId(request.getShopId()); + if (CollectionUtils.isNotEmpty(platformBuildDOS)){ + for (PlatformBuildDO platformBuildDO : platformBuildDOS){ + platformBuildDO.setSettlerName(buildInformationDO.getSettlerName()); + platformBuildDO.setSettlerIdCardFront(buildInformationDO.getSettlerIdCardFront()); + platformBuildDO.setSettlerIdCardReverse(buildInformationDO.getSettlerIdCardReverse()); + platformBuildDO.setSettlerInHandBackPicture(buildInformationDO.getSettlerInHandBackPicture()); + platformBuildDO.setSettlerInHandFrontPicture(buildInformationDO.getSettlerInHandFrontPicture()); + platformBuildDO.setSettlerIdCardNo(buildInformationDO.getSettlerIdCardNo()); + platformBuildDO.setSettlerBankPhotoUrl(buildInformationDO.getSettlerBankPhotoUrl()); + platformBuildDO.setSettlerBankNumber(buildInformationDO.getSettlerBankNumber()); + platformBuildDO.setSettlerBankMobile(buildInformationDO.getSettlerBankMobile()); + platformBuildDO.setSettlerBankName(buildInformationDO.getSettlerBankName()); + } + } + platformBuildDAO.batchUpdate(platformBuildDOS); + return buildInformationDAO.updateByShopIdSelective(buildInformationDO); + } + }else{ + throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); + } + } finally { + if (Boolean.TRUE.equals(acquired)) { + String currentValue = redisUtilPool.getString(lockKey); + if (lockValue.equals(currentValue)) { + redisUtilPool.delKey(lockKey); + } + } + } + } + @Override public BuildInformationResponse getBuildInformation(Long shopId) { BuildInformationResponse response = new BuildInformationResponse(); @@ -192,98 +290,6 @@ public class BuildInformationServiceImpl implements BuildInformationService { response.setJuridicalIsSamePartner(informationDO.getJuridicalIsSamePartner()); } - @Override - @Transactional(rollbackFor = Exception.class) - public Integer submitOrUpdate(BuildInformationRequest request) { - String lockKey = redisConstantUtil.submitBuildKey(request.getShopId()); - String lockValue = UUID.randomUUID().toString(); - boolean acquired = false; - try { - acquired = redisUtilPool.setNxExpire(lockKey, lockValue, CommonConstants.TEN_SECONDS); - if (Boolean.TRUE.equals(acquired)) { - ShopInfoDO shopInfoDO = shopInfoDAO.getShopInfo(request.getShopId()); -// if (JoinModeEnum.FLAGSHIP_STORE.getCode()!=shopInfoDO.getJoinMode()){ -// //校验结算人非空 -// if (StringUtils.isAnyBlank(request.getSettlerName(),request.getSettlerIdCardFront(), -// request.getSettlerInHandFrontPicture(),request.getSettlerBankBackPhotoUrl(), -// request.getSettlerBankNumber(),request.getSettlerBankMobile(),request.getSettlerBankName())) { -// throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); -// } -// } - - BuildInformationDO informationDO = buildInformationDAO.selectOneByShopId(request.getShopId()); - BuildInformationDO buildInformationDO = request.toDO(); - OrderSysInfoDO orderSysInfoDO = getOrderSysInfoDO(request); - OrderSysInfoDO orderSysInfoDO1 = orderSysInfoDAO.selectByShopId(request.getShopId()); - if (Objects.nonNull(orderSysInfoDO1)) { - orderSysInfoDAO.updateByShopId(orderSysInfoDO); - } else { - orderSysInfoDAO.insertSelective(orderSysInfoDO); - } - LineInfoDO lineInfoDO = lineInfoDAO.getLineInfo(shopInfoDO.getLineId()); - QualificationsInfoDO qualificationsInfoDO = qualificationsInfoDAO.getByLineId(lineInfoDO.getId()); - if (request.getJuridicalIsSamePartner()) { - buildInformationDO.setJuridicalName(lineInfoDO.getUsername()); - buildInformationDO.setJuridicalIdCardNo(qualificationsInfoDO.getIdCardNo()); - buildInformationDO.setJuridicalIdCardFront(qualificationsInfoDO.getFrontOfIdCard()); - buildInformationDO.setJuridicalIdCardReverse(qualificationsInfoDO.getBackOfIdCard()); - } - if (request.getSettlerIsSamePartner()!=null&&request.getSettlerIsSamePartner()) { - buildInformationDO.setSettlerIdCardNo(qualificationsInfoDO.getIdCardNo()); - buildInformationDO.setSettlerName(lineInfoDO.getUsername()); - buildInformationDO.setSettlerIdCardFront(qualificationsInfoDO.getFrontOfIdCard()); - buildInformationDO.setSettlerIdCardReverse(qualificationsInfoDO.getBackOfIdCard()); - } - if (Objects.isNull(informationDO)) { - buildInformationDO.setCreateTime(new Date()); - buildInformationDO.setUpdateTime(new Date()); - shopStageInfoDAO.updateShopStageInfo(request.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_151); - HashMap map = new HashMap<>(); - map.put("partnerUsername", lineInfoDO.getUsername()); - map.put("partnerMobile", lineInfoDO.getMobile()); - map.put("storeName", shopInfoDO.getShopName()); - List logisticsList = userAuthMappingService.getAllUserByRoleEnumAndRegionId(UserRoleEnum.LOGISTICS, shopInfoDO.getRegionId()); - List logistics = new ArrayList<>(); - if (Objects.nonNull(logisticsList)) { - logistics.addAll(logisticsList.stream().map(EnterpriseUserDO::getUserId).collect(Collectors.toList())); - } - commonService.sendQWMessage(logistics, - MessageEnum.MESSAGE_52, - map); - return buildInformationDAO.insertSelective(buildInformationDO); - } else { - buildInformationDO.setUpdateTime(new Date()); - List platformBuildDOS = platformBuildDAO.selectByShopId(request.getShopId()); - if (CollectionUtils.isNotEmpty(platformBuildDOS)){ - for (PlatformBuildDO platformBuildDO : platformBuildDOS){ - platformBuildDO.setSettlerName(buildInformationDO.getSettlerName()); - platformBuildDO.setSettlerIdCardFront(buildInformationDO.getSettlerIdCardFront()); - platformBuildDO.setSettlerIdCardReverse(buildInformationDO.getSettlerIdCardReverse()); - platformBuildDO.setSettlerInHandBackPicture(buildInformationDO.getSettlerInHandBackPicture()); - platformBuildDO.setSettlerInHandFrontPicture(buildInformationDO.getSettlerInHandFrontPicture()); - platformBuildDO.setSettlerIdCardNo(buildInformationDO.getSettlerIdCardNo()); - platformBuildDO.setSettlerBankPhotoUrl(buildInformationDO.getSettlerBankPhotoUrl()); - platformBuildDO.setSettlerBankNumber(buildInformationDO.getSettlerBankNumber()); - platformBuildDO.setSettlerBankMobile(buildInformationDO.getSettlerBankMobile()); - platformBuildDO.setSettlerBankName(buildInformationDO.getSettlerBankName()); - } - } - platformBuildDAO.batchUpdate(platformBuildDOS); - return buildInformationDAO.updateByShopIdSelective(buildInformationDO); - } - }else{ - throw new ServiceException(ErrorCodeEnum.DUPLICATE_SUBMISSION); - } - } finally { - if (Boolean.TRUE.equals(acquired)) { - String currentValue = redisUtilPool.getString(lockKey); - if (lockValue.equals(currentValue)) { - redisUtilPool.delKey(lockKey); - } - } - } - } - private static @NotNull OrderSysInfoDO getOrderSysInfoDO(BuildInformationRequest request) { OrderSysInfoDO orderSysInfoDO = new OrderSysInfoDO(); orderSysInfoDO.setShopId(request.getShopId()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java index 1dbc6b7d6..ad78098c1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java @@ -56,8 +56,12 @@ public class MatterConfigServiceImpl implements MatterConfigService { BeanUtils.copyProperties(request, matterConfigDO); matterConfigDO.setUpdateUserId(currentUser.getUserId()); matterConfigDO.setUpdateTime(new Date()); - matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList())); - matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList())); + if (CollectionUtils.isNotEmpty(request.getStoreInfoList())){ + matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList())); + } + if (CollectionUtils.isNotEmpty(request.getUserInfoList())){ + matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList())); + } return matterConfigDAO.updateForce(matterConfigDO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java index 2ef067c5c..8904afa7f 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java @@ -81,8 +81,8 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { public String getMessageTemplateCode() { //当前日期 - String today = CoolDateUtils.getToday(); - return "16" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(10000)); + String today = CoolDateUtils.getTodayMillis(); + return "16" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(100)); } @Override diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java index 38801696a..2cf554459 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java @@ -1,11 +1,17 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dao.EnterpriseUserDAO; +import com.cool.store.dao.EnterpriseUserRoleDao; +import com.cool.store.dao.StoreDao; import com.cool.store.dto.GetAccessTokenDTO; import com.cool.store.dto.HqtTokenDTO; import com.cool.store.dto.ModifyPasswordDTO; import com.cool.store.dto.XgjOrganizationDTO; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.StoreDO; import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.UserRoleEnum; import com.cool.store.exception.ServiceException; import com.cool.store.request.ZxjpApiRequest; import com.cool.store.request.xgj.PushFranchiseFeeRequest; @@ -167,6 +173,10 @@ public class PushServiceImpl implements PushService { @Override public String getYlsToken(GetAccessTokenDTO dto) { + String yls = redisUtilPool.getString("yls"); + if (StringUtils.isNotBlank(yls)) { + throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR,"云流水系统修复中"); + } String apiUrl = ylsUrl + "/Store.axd?action=getToken"; return executeApiCall(apiUrl, dto, String.class, ylsUsername, ylsSecret); } @@ -178,8 +188,28 @@ public class PushServiceImpl implements PushService { return executeApiCall(apiUrl, dto, String.class, "", ""); } + @Resource + EnterpriseUserDAO enterpriseUserDAO; + @Resource + EnterpriseUserRoleDao enterpriseUserRoleDao; + @Resource + StoreDao storeDao; + @Override public String getPosToken(GetAccessTokenDTO dto) { + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(dto.getMobile()); + if (enterpriseUserDO != null){ + List userRoleIds = enterpriseUserRoleDao.getUserRoleIds(enterpriseUserDO.getUserId()); + //如果userRoleIds包含督导。大区总。分部负责人任何一个 使用当前门店的手机号 + if (userRoleIds.contains(UserRoleEnum.SUPERVISION.getCode()) || + userRoleIds.contains(UserRoleEnum.HEAD_OF_DIVISION.getCode()) || + userRoleIds.contains(UserRoleEnum.REGION_MANAGER.getCode())) { + StoreDO store = storeDao.getByStoreNum(dto.getShopCode()); + if (store != null&&store.getTelephone()!=null){ + dto.setMobile(store.getTelephone()); + } + } + } String apiUrl = url + "/dzgV1/zxcrm/business_user/generateToken"; return executeApiCall(apiUrl, dto, String.class, username, secret); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopAccountServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopAccountServiceImpl.java index b7603e4ee..1c71d6202 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopAccountServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopAccountServiceImpl.java @@ -244,30 +244,16 @@ public class ShopAccountServiceImpl implements ShopAccountService { } List accountDOS = shopAccountDAO.selectByShopId(shopId); if (CollectionUtils.isEmpty(accountDOS)) { - throw new ServiceException(ErrorCodeEnum.SYSTEM_DATA_ERROR); + return "ZXA8_"+shopInfo.getShopCode(); } Map map = accountDOS.stream().collect(Collectors.toMap(ShopAccountDO::getSystemName, data -> data)); ShopAccountDO shopAccountDO = map.get(ShopAccountEnum.YLS.getSystemName()); if (Objects.isNull(shopAccountDO)) { - throw new ServiceException(ErrorCodeEnum.SYSTEM_DATA_ERROR); + return "ZXA8_"+shopInfo.getShopCode(); } return StringUtil.isEmpty(shopAccountDO.getAccount()) ? shopInfo.getShopCode() : shopAccountDO.getAccount(); } - @Override - public String shopCodeToYlsCode(String shopCode) { - ShopInfoDO shopInfoDO = shopInfoDAO.selectByStoreCode(shopCode); - if (!Objects.isNull(shopInfoDO)) { - return this.shopIdToYlsCode(shopInfoDO.getId()); - } - //查询老店关联表数据 - OldShopDO oldShopDO = oldShopDAO.getByCode(shopCode); - if (Objects.isNull(oldShopDO)) { - throw new ServiceException(ErrorCodeEnum.GET_YLS_CODE_FAIL); - } - return oldShopDO.getYlsShopCode(); - } - @Override @Transactional(rollbackFor = Exception.class) public Boolean handleOldData() { @@ -316,6 +302,20 @@ public class ShopAccountServiceImpl implements ShopAccountService { return true; } + @Override + public String shopCodeToYlsCode(String shopCode) { + ShopInfoDO shopInfoDO = shopInfoDAO.selectByStoreCode(shopCode); + if (!Objects.isNull(shopInfoDO)) { + return this.shopIdToYlsCode(shopInfoDO.getId()); + } + //查询老店关联表数据 + OldShopDO oldShopDO = oldShopDAO.getByCode(shopCode); + if (Objects.isNull(oldShopDO)) { + throw new ServiceException(ErrorCodeEnum.GET_YLS_CODE_FAIL); + } + return oldShopDO.getYlsShopCode(); + } + @Override @Transactional(rollbackFor = Exception.class) public Boolean handleAccountPassword() { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java index c2b36d9c6..ce45189ae 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java @@ -1,8 +1,12 @@ package com.cool.store.service.impl; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.StoreNameDTO; +import com.cool.store.dao.store.StoreMasterSignerInfoDAO; import com.cool.store.dto.store.AuthStoreUserDTO; import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.EnterpriseUserRoleDao; @@ -12,10 +16,8 @@ import com.cool.store.dto.StoreDTO; import com.cool.store.dto.store.StoreAreaDTO; import com.cool.store.dto.store.StoreUserDTO; import com.cool.store.dto.store.StoreUserPositionDTO; -import com.cool.store.entity.EnterpriseUserDO; -import com.cool.store.entity.StoreDO; -import com.cool.store.entity.SysRoleDO; -import com.cool.store.entity.UserAuthMappingDO; +import com.cool.store.entity.*; +import com.cool.store.entity.store.StoreMasterSignerInfoDO; import com.cool.store.enums.*; import com.cool.store.exception.ServiceException; import com.cool.store.mapper.*; @@ -38,6 +40,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Author suzhuhong @@ -70,6 +73,8 @@ public class StoreServiceImpl implements StoreService { EnterpriseUserMapper enterpriseUserMapper; @Resource EnterpriseUserGroupMappingMapper enterpriseUserGroupMappingMapper; + @Resource + StoreMasterSignerInfoDAO storeMasterSignerInfoDAO; @Override public PageInfo getStoreExtendFieldInfo(Integer pageSize, Integer pageNum) { @@ -77,16 +82,42 @@ public class StoreServiceImpl implements StoreService { throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE,"单次最多获取200条门店数据"); } PageHelper.startPage(pageNum,pageSize); - List list = storeDao.list(); + List list = storeDao.list(null); PageInfo info = new PageInfo<>(list); if (CollectionUtils.isEmpty(list)){ return info; } - List storeDTOS = processStores(list); + //使用regionId与branch 合并的集合 + Set regionIds = list.stream() + .filter(Objects::nonNull) + .flatMap(store -> Stream.of(store.getBranch(), store.getRegionId())) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + List regionList = regionMapper.getByIds(new ArrayList<>(regionIds)); + Map regionNameMap = regionList.stream().collect(Collectors.toMap(RegionDO::getId, RegionDO::getName)); + + List storeDTOS = processStores(list, regionNameMap); info.setList(storeDTOS); return info; } + @Override + public PageInfo getIotStoreList(Integer pageNum, Integer pageSize) { + if (pageSize > 200) { + throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE, "单次最多获取200条门店数据"); + } + PageHelper.startPage(pageNum, pageSize); + List list = storeDao.list(1); + PageInfo info = new PageInfo<>(list); + if (CollectionUtils.isEmpty(list)){ + return info; + } + List result = list.stream().map(v -> new StoreNameDTO(v.getStoreName(), v.getStoreNum())).collect(Collectors.toList()); + info.setList(result); + return info; + } + @Override public PageInfo getStoreListByMobile(String mobile,Integer pageNum,Integer pageSize,String storeName,String storeNum) { //根据手机号查询 标品userId @@ -97,7 +128,10 @@ public class StoreServiceImpl implements StoreService { List userRoleIds = enterpriseUserRoleDao.getUserRoleIds(enterpriseUserDO.getUserId()); //查询职位详情,筛选掉店外职位 List roleIds = sysRoleDao.selectRoleByRoleIds(userRoleIds); - List sysRoleDOS = roleIds.stream().filter(role -> "store_inside".equals(role.getPositionType())).collect(Collectors.toList()); + List sysRoleDOS = roleIds.stream().filter(role -> "store_inside".equals(role.getPositionType()) + ||UserRoleEnum.SUPERVISION.getCode().equals(role.getId()) + ||UserRoleEnum.HEAD_OF_DIVISION.getCode().equals(role.getId()) + ||UserRoleEnum.REGION_MANAGER.getCode().equals(role.getId())).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(sysRoleDOS)){ //获取用户管辖区域 List userAuthMapping = userAuthMappingService.listUserAuthMappingByUserId(enterpriseUserDO.getUserId()); @@ -120,6 +154,8 @@ public class StoreServiceImpl implements StoreService { if (CollectionUtils.isEmpty(list)){ return new ArrayList<>(); } + List storeIds = CollStreamUtil.toList(list, StoreDO::getStoreId); + Map signerMap = storeMasterSignerInfoDAO.getSignerMapByStoreIds(storeIds); List result = new ArrayList<>(); list.forEach(x->{ StoreUserPositionDTO storeUserPositionDTO = new StoreUserPositionDTO(); @@ -128,6 +164,7 @@ public class StoreServiceImpl implements StoreService { storeUserPositionDTO.setStoreId(x.getStoreId()); storeUserPositionDTO.setStoreName(x.getStoreName()); storeUserPositionDTO.setShopCode(x.getStoreNum()); + storeUserPositionDTO.setStoreCode(x.getStoreNum()); List userList = Lists.newArrayList(); for (String userId : storeUserDTOMap.keySet()) { List singleUserDTOList = storeUserDTOMap.get(userId); @@ -140,6 +177,16 @@ public class StoreServiceImpl implements StoreService { storeUserDTO.setPositionName(String.join(Constants.COMMA, positionNameList)); userList.add(storeUserDTO); } + StoreMasterSignerInfoDO signerInfoDO = signerMap.get(x.getStoreId()); + if (Objects.nonNull(signerInfoDO)) { + Set mobiles = CollStreamUtil.toSet(userList, StoreUserDTO::getMobile); + if (StringUtils.isNotBlank(signerInfoDO.getSigner1Mobile()) && mobiles.add(signerInfoDO.getSigner1Mobile())) { + userList.add(new StoreUserDTO(signerInfoDO.getSigner1Name(), signerInfoDO.getSigner1Mobile())); + } + if (StringUtils.isNotBlank(signerInfoDO.getSigner2Mobile()) && mobiles.add(signerInfoDO.getSigner2Mobile())) { + userList.add(new StoreUserDTO(signerInfoDO.getSigner2Name(), signerInfoDO.getSigner2Mobile())); + } + } storeUserPositionDTO.setUserList(userList); result.add(storeUserPositionDTO); }); @@ -342,25 +389,22 @@ public class StoreServiceImpl implements StoreService { } - public static List processStores(List stores) { + public static List processStores(List stores,Map regionMap) { // 处理每个门店 return stores.stream().map(store -> { - StoreDTO dto = new StoreDTO(); - dto.setStoreName(store.getStoreName()); + StoreDTO dto = BeanUtil.toBean(store, StoreDTO.class); dto.setStoreCode(store.getStoreNum()); - dto.setStoreAddress(store.getStoreAddress()); dto.setStoreAvatar(store.getAvatar()); - dto.setTelephone(store.getTelephone()); - dto.setMonthlyRent(store.getMonthlyRent()); - dto.setMonthlyPersonnelSalary(store.getMonthlyPersonnelSalary()); - dto.setMonthlyOtherExpenses(store.getMonthlyOtherExpenses()); - dto.setUnifiedManagement(store.getUnifiedManagement()); dto.setStoreType(StoreTypeEnum.getMessage(store.getStoreType())); dto.setJoinMode(JoinModeEnum.getByCode(store.getJoinModel())); dto.setBrand(FranchiseBrandEnum.getDescByCode(store.getJoinBrand())); dto.setOrderMiniProgramName(store.getMiniProgramOrderStoreName()); - dto.setLongitude(store.getLongitude()); - dto.setLatitude(store.getLatitude()); + if (store.getRegionId() != null){ + dto.setManagerSupervisionName(regionMap.get(store.getRegionId())); + } + if (store.getBranch()!=null){ + dto.setBranchName(regionMap.get(store.getBranch())); + } return dto; }).collect(Collectors.toList()); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncDataServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncDataServiceImpl.java index d870d8eb1..e6c61a1a1 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncDataServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SyncDataServiceImpl.java @@ -119,6 +119,7 @@ public class SyncDataServiceImpl implements SyncDataService { } request.setPartnershipSignatory(partnershipSignatory); request.setBusinessModel(signFranchiseDO.getBusinessModel()); + request.setContractCode(signFranchiseDO.getContractCode()); } request.setPartnerMobile(lineInfoDO.getMobile()); request.setShopCode(shopInfo.getShopCode()); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ThirdFoodServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ThirdFoodServiceImpl.java index e812a1ea6..c19bcf2c5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ThirdFoodServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ThirdFoodServiceImpl.java @@ -4,11 +4,15 @@ import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.dto.FoodTokenDTO; import com.cool.store.dto.GetAccessTokenDTO; +import com.cool.store.dto.store.StoreUserPositionDTO; +import com.cool.store.dto.store.StoreUserUpdateDTO; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.exception.ServiceException; +import com.cool.store.response.caipin.StoreUserResponse; import com.cool.store.response.oppty.OpportunityApiResponse; import com.cool.store.service.ThirdFoodService; import com.cool.store.utils.SignatureUtils; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -21,6 +25,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.net.URI; +import java.util.List; import java.util.Map; /** @@ -45,10 +50,16 @@ public class ThirdFoodServiceImpl implements ThirdFoodService { @Override public String getFoodToken(FoodTokenDTO dto) { // 1. 发送POST请求 - String url = apiUrl + "/interface/v1/user/getToken"; + String url = "/v1/user/getToken"; return executeApiCall(url, dto, String.class); } + @Override + public StoreUserResponse pushStoreUser(List dto) { + String url = "/v1/store/updateStoreUser"; + return executeApiCall(url, dto, StoreUserResponse.class); + } + private T executeApiCall(String url, Object requestBody, Class responseType) { // 1. 打印请求前日志 @@ -62,7 +73,7 @@ public class ThirdFoodServiceImpl implements ThirdFoodService { String responseBody = response.body().string(); // 3. 打印响应日志 - logResponse(url, response.code(), responseBody); + logResponse(apiUrl+ url, response.code(), responseBody); if (!response.isSuccessful()) { throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, @@ -94,20 +105,24 @@ public class ThirdFoodServiceImpl implements ThirdFoodService { String random = RandomUtil.randomString(20); String signString = null; + String reqBody = null; try { - signString = SignatureUtils.sign("POST","/v1/user/getToken", objectMapper.writeValueAsString(requestBody),timestamp,random); + reqBody = objectMapper.writeValueAsString(requestBody); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + try { + signString = SignatureUtils.sign("POST",url, reqBody,timestamp,random); } catch (Exception e) { throw new ServiceException(ErrorCodeEnum.THIRD_API_SIGN_ERROR,"加密失败"); } log.info("签名生成 - 签名结果: {}", signString); - RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json"), - JSONObject.toJSONString(requestBody) - ); + RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json"), reqBody); return new Request.Builder() - .url(url) + .url(apiUrl + url) .post(body) .addHeader("X-ZhengXin-Sign", signString) .addHeader("X-ZhengXin-SignTime", timestamp) diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java index dcdec32f3..169b77771 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/WechatMiniAppServiceImpl.java @@ -17,6 +17,7 @@ import com.cool.store.utils.UUIDUtils; import com.cool.store.vo.PartnerUserInfoVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -252,4 +253,30 @@ public class WechatMiniAppServiceImpl implements WechatMiniAppService { return null; } + @Override + public String getShortTermTokenByMobile(MiniProgramFreeLoginDTO param) { + HyPartnerUserInfoDO hyPartnerUserInfoDO = hyPartnerUserInfoDAO.selectByMobile(param.getMobile()); + if (Objects.isNull(hyPartnerUserInfoDO)) { + return ""; + } + PartnerUserInfoVO userInfoVO = BeanUtil.toBean(hyPartnerUserInfoDO, PartnerUserInfoVO.class); + fillLineInfo(userInfoVO, hyPartnerUserInfoDO.getPartnerId()); + String token = new SecureRandomNumberGenerator().nextBytes().toHex(); + String key = MessageFormat.format(CommonConstants.ZXJP_MIN_PROGRAM_SHORT_TERM_LOGIN_FLAG, token); + redisUtilPool.setString(key, JSONObject.toJSONString(userInfoVO), CommonConstants.SHORT_TERM_TOKEN_EXPIRE); + return token; + } + + @Override + public PartnerUserInfoVO getUserInfoByShortTermToken(String token) { + String key = MessageFormat.format(CommonConstants.ZXJP_MIN_PROGRAM_SHORT_TERM_LOGIN_FLAG, token); + String userStr = redisUtilPool.getString(key); + if (StringUtils.isNotBlank(userStr)) { + PartnerUserInfoVO userInfoVO = JSONObject.parseObject(userStr, PartnerUserInfoVO.class); + redisUtilPool.delKey(key); + return userInfoVO; + } + return null; + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java b/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java index 3442d8cfe..7f0e14992 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/config/SignValidateFilter.java @@ -60,6 +60,7 @@ public class SignValidateFilter implements Filter { "/zxjp/**/api/audit/result", "/zxjp/**/api/license", "/zxjp/mini/line/getRegionPayPic", + "/zxjp/mini/miniProgram/getUserInfoByToken", "/zxjp/ws/**" ); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java index b5ce88f6b..583927355 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.*; import com.cool.store.dto.store.StoreUserPositionDTO; +import com.cool.store.dto.wx.MiniProgramFreeLoginDTO; import com.cool.store.request.OpenApiStoreRequest; import com.cool.store.request.StoreCodeDTO; import com.cool.store.request.*; @@ -49,6 +50,8 @@ public class OpenApiController { StoreService storeService; @Resource MessageTemplateService messageTemplateService; + @Resource + WechatMiniAppService wechatMiniAppService; @PostMapping("/statusRefresh") public ApiResponse statusRefresh(@RequestBody StatusRefreshDTO statusRefreshDTO){ @@ -68,6 +71,13 @@ public class OpenApiController { public ApiResponse> getStoreList(@RequestBody @Validated OpenApiStoreRequest dto) { return ApiResponse.success(storeService.getStoreExtendFieldInfo(dto.getPageSize(),dto.getPageNum())); } + + @ApiOperation("获取接入物联网门店信息") + @PostMapping("/getIoTStoreList") + public ApiResponse> getIotStoreList(@RequestBody @Validated OpenApiStoreRequest dto) { + return ApiResponse.success(storeService.getIotStoreList(dto.getPageNum(), dto.getPageSize())); + } + @ApiOperation("新管家回调 刷新收款单状态") @PostMapping("/changeReceiptStatus") public ApiResponse changeReceiptStatus(@RequestBody @Validated ReceiptCallBackRequest request){ @@ -169,4 +179,10 @@ public class OpenApiController { public ApiResponse handleMessage(@RequestBody @Validated ThirdHandleMessageRequest request) { return messageTemplateService.thirdHandleMessage(request); } + + @ApiOperation("根据手机号获取短期token") + @PostMapping("/getShortTermToken") + public ApiResponse getTokenByMobile(@RequestBody @Validated MiniProgramFreeLoginDTO param) { + return ApiResponse.success(wechatMiniAppService.getShortTermTokenByMobile(param)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java index fa6c0f6f4..6cd6686d4 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniProgramAppController.java @@ -7,6 +7,7 @@ import com.cool.store.response.ResponseResult; import com.cool.store.service.WechatMiniAppService; import com.cool.store.vo.PartnerUserInfoVO; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -65,4 +66,11 @@ public class MiniProgramAppController { PartnerUserInfoVO userInfoVO = PartnerUserHolder.getUser(); return ResponseResult.success(userInfoVO); } + + @ApiOperation("根据短期token获取用户信息") + @ApiImplicitParam(name = "token", value = "短期token", required = true, dataType = "String", paramType = "query") + @GetMapping("/getUserInfoByToken") + public ResponseResult getUserInfoByToken(String token) { + return ResponseResult.success(wechatMiniAppService.getUserInfoByShortTermToken(token)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 76a71ac39..3234f4f7e 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -5,6 +5,8 @@ import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; import com.cool.store.dto.OpenCityDTO; import com.cool.store.dto.ocr.InvoiceDTO; +import com.cool.store.dto.store.StoreUserPositionDTO; +import com.cool.store.dto.store.StoreUserUpdateDTO; import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; import com.cool.store.enums.IDCardSideEnum; @@ -20,6 +22,7 @@ import com.cool.store.request.ShopListSuccessOpenRequest; import com.cool.store.request.xfsgFirstOrderListRequest; import com.cool.store.response.MiniShopsResponse; import com.cool.store.response.ResponseResult; +import com.cool.store.response.caipin.StoreUserResponse; import com.cool.store.response.xfsgFirstOderListResponse; import com.cool.store.service.*; import com.cool.store.utils.poi.ExcelUtil; @@ -29,6 +32,7 @@ import com.github.pagehelper.PageInfo; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -77,6 +81,10 @@ public class TestController { @Resource ShopStageInfoDAO shopStageInfoDAO; + @Resource + ThirdFoodService thirdFoodService; + @Autowired + StoreService storeService; @PostMapping("/getFirstOrders") public ResponseResult getFirstOrders(@RequestBody xfsgFirstOrderListRequest storeCodeList) { @@ -354,4 +362,11 @@ public class TestController { public void initTallyBook() { xxlJobHandler.initTallyBook(); } + + @GetMapping("/pushStoreUser") + public void pushStoreUser(String storeCode){ + List storeUser = storeService.getStoreUser(Arrays.asList(storeCode)); + List storeUserUpdateDTOS = JSONObject.parseArray(JSONObject.toJSONString(storeUser), StoreUserUpdateDTO.class); + StoreUserResponse storeUserResponse = thirdFoodService.pushStoreUser(storeUserUpdateDTOS); + } } diff --git a/coolstore-partner-web/src/main/resources/application-ab.properties b/coolstore-partner-web/src/main/resources/application-ab.properties index 92ad31c56..242f7308a 100644 --- a/coolstore-partner-web/src/main/resources/application-ab.properties +++ b/coolstore-partner-web/src/main/resources/application-ab.properties @@ -120,7 +120,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6 #新掌柜账号 xzg.api.auth.url=http://webapi.zhengxinfood.com -zx.food.url=https://datacenter.zhengxinfood.com +zx.food.url=https://datacenter.zhengxinfood.com/interface cool.api.appKey=k8J7fG2qR5tY9vX3 cool.api.secret=wP4sN6dL8zK2xM9c diff --git a/coolstore-partner-web/src/main/resources/application-local.properties b/coolstore-partner-web/src/main/resources/application-local.properties index 5f2552622..087420e81 100644 --- a/coolstore-partner-web/src/main/resources/application-local.properties +++ b/coolstore-partner-web/src/main/resources/application-local.properties @@ -127,7 +127,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6 #新掌柜账号 xzg.api.auth.url=http://webapi.zhengxinfood.com -zx.food.url=https://datacenter.zhengxinfood.com +zx.food.url=https://datacenter.zhengxinfood.com/interface cool.api.appKey=k8J7fG2qR5tY9vX3 cool.api.secret=wP4sN6dL8zK2xM9c diff --git a/coolstore-partner-web/src/main/resources/application-online.properties b/coolstore-partner-web/src/main/resources/application-online.properties index 396eb8b13..b9c73dda2 100644 --- a/coolstore-partner-web/src/main/resources/application-online.properties +++ b/coolstore-partner-web/src/main/resources/application-online.properties @@ -125,7 +125,7 @@ zx.big.data.appSecret=35b8b9a400b4430fa022190be0913cd6 xzg.api.auth.url=http://webapi.zhengxinfood.com -zx.food.url=https://datacenter.zhengxinshipin.com +zx.food.url=https://datacenter.zhengxinshipin.com/interface cool.api.appKey=k8J7fG2qR5tY9vX3 cool.api.secret=wP4sN6dL8zK2xM9c diff --git a/coolstore-partner-web/src/main/resources/application-test.properties b/coolstore-partner-web/src/main/resources/application-test.properties index df3fcb476..eea16e79c 100644 --- a/coolstore-partner-web/src/main/resources/application-test.properties +++ b/coolstore-partner-web/src/main/resources/application-test.properties @@ -128,7 +128,7 @@ yls.api.auth.secret=3b56198f096d4009072c927c96fbc8b6 #新掌柜账号 xzg.api.auth.url=http://webapi.zhengxinfood.com -zx.food.url=https://datacenter.zhengxinfood.com +zx.food.url=https://datacenter.zhengxinfood.com/interface cool.api.appKey=k8J7fG2qR5tY9vX3 cool.api.secret=wP4sN6dL8zK2xM9c