diff --git a/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusAgentInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusAgentInfoController.java index 45ea49b..1bbb023 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusAgentInfoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusAgentInfoController.java @@ -66,10 +66,9 @@ public class BusAgentInfoController extends BaseController { public TableDataInfo list(BusAgentInfo busAgentInfo) { startPage(); LoginUser user = SecurityUtils.getLoginUser(); -// if(!"admin".equals(user.getUsername())){ -// busAgentInfo.setSuperiorAgentCode(user.getUserId()); -// } - busAgentInfo.setSuperiorAgentCode(user.getUserId()); + if(!"admin".equals(user.getUsername())){ + busAgentInfo.setSuperiorAgentCode(user.getUserId()); + } List list = busAgentInfoService.selectBusAgentInfoList(busAgentInfo); List listData = list.stream().map(bean -> { BusStoreInfo busStoreInfo = new BusStoreInfo(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusStoreInfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusStoreInfoController.java index 517c2e5..2ed0fe2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusStoreInfoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/business/controller/BusStoreInfoController.java @@ -106,7 +106,7 @@ public class BusStoreInfoController extends BaseController { BusStoreInfo busStoreInfo = new BusStoreInfo(); BeanUtils.copyProperties(reqBusStoreInfo, busStoreInfo); LoginUser user = SecurityUtils.getLoginUser(); - if (!"OK777".equals(user.getUsername())||!"OK999".equals(user.getUsername())) { + if (!"OK777".equals(user.getUsername())) { busStoreInfo.setBindUser(user.getUsername()); } List list = busStoreInfoService.selectBusStoreInfoList(busStoreInfo); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/business/req/ReqBusStoreConfigInfo.java b/ruoyi-admin/src/main/java/com/ruoyi/business/req/ReqBusStoreConfigInfo.java index a9a7aa6..ba47224 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/business/req/ReqBusStoreConfigInfo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/business/req/ReqBusStoreConfigInfo.java @@ -62,6 +62,10 @@ public class ReqBusStoreConfigInfo { @JsonFormat(shape = JsonFormat.Shape.STRING) private int selfDeliveryDuration; + /** 营销限额 */ + @ApiModelProperty(name = "营销限额开关") + private String quotaStatus; + /** 营销限额 */ @ApiModelProperty(name = "营销限额") @JsonFormat(shape = JsonFormat.Shape.STRING) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java index da44d80..029a24a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java @@ -1,28 +1,62 @@ package com.ruoyi.web.controller.common; +import com.ruoyi.common.constant.CacheConstants; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.utils.sign.Base64; +import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.system.service.ISmsService; +import com.ruoyi.system.service.ISysConfigService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; +import java.util.concurrent.TimeUnit; + @Api("短信模块") @RestController -@RequestMapping("/sms") public class SmsController { + /** + * 短信验证码长度 + */ + private final Integer LENGTH = 6; + + @Autowired + private RedisCache redisCache; + + @Autowired + private ISysConfigService configService; + @Autowired private ISmsService iSmsService; @PostMapping("sendSms") @ApiOperation("短信发送接口") - public R sendSms(@RequestPart String phone) { - iSmsService.sendSmsOne(phone); - return R.ok(); + public AjaxResult sendSms(@RequestPart String phone) { + AjaxResult ajax = AjaxResult.success(); + boolean captchaEnabled = configService.selectCaptchaEnabled(); + ajax.put("captchaEnabled", captchaEnabled); + if (!captchaEnabled) + { + return ajax; + } + + // 保存验证码信息 + String uuid = IdUtils.simpleUUID(); + String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; + String smsCode = generateCode(); + redisCache.setCacheObject(verifyKey, smsCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); + iSmsService.sendSmsOne(phone, smsCode); + ajax.put("uuid", uuid); + return ajax; } @PostMapping("validationCode") @@ -32,4 +66,13 @@ public class SmsController { return R.ok(iSmsService.validationCode(phone, code)); } + /** + * 生成随机的验证码 + * + * @return + */ + public String generateCode() { + return RandomStringUtils.randomNumeric(LENGTH); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index d959a17..fd639e9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -51,6 +51,17 @@ public class SysLoginController return ajax; } + @PostMapping("/loginSms") + public AjaxResult loginSms(@RequestBody LoginBody loginBody) + { + AjaxResult ajax = AjaxResult.success(); + // 生成令牌 + String token = loginService.loginSms(loginBody.getUsername(), loginBody.getCode(), + loginBody.getUuid()); + ajax.put(Constants.TOKEN, token); + return ajax; + } + /** * 获取用户信息 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java index 46cd7c7..0e86113 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java @@ -42,7 +42,7 @@ public class TestController extends BaseController @ApiOperation("短信测试接口") public R sendSMS() { String phone = "17612400322"; - iSmsService.sendSmsOne(phone); + iSmsService.sendSmsOne(phone, "123456"); return R.ok(); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 8cefbed..08da342 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -132,7 +132,7 @@ tencent: cloud: secretId: AKID48T2eHtniosmm0vz59CPZyUgzIlNGKV2 secretKey: bJuNk3B7tW1QqEXjg5faULJBwwpgMo8y - signName: 优势管家 + signName: 优势管家网 templateId: 2200612 smsSdkAppId: 1400921153 region: ap-beijing diff --git a/ruoyi-admin/src/main/resources/i18n/messages.properties b/ruoyi-admin/src/main/resources/i18n/messages.properties index 93de005..02141f0 100644 --- a/ruoyi-admin/src/main/resources/i18n/messages.properties +++ b/ruoyi-admin/src/main/resources/i18n/messages.properties @@ -4,6 +4,7 @@ user.jcaptcha.error=验证码错误 user.jcaptcha.expire=验证码已失效 user.not.exists=用户不存在/密码错误 user.password.not.match=用户不存在/密码错误 +phone.code.not.match=手机短信验证码错误 user.password.retry.limit.count=密码输入错误{0}次 user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟 user.password.delete=对不起,您的账号已被删除 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index b5bc8c8..39f2176 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -21,6 +21,33 @@ public class LoginBody * 验证码 */ private String code; + private String phone; + private String smsCode; + private String loginType; + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getSmsCode() { + return smsCode; + } + + public void setSmsCode(String smsCode) { + this.smsCode = smsCode; + } + + public String getLoginType() { + return loginType; + } + + public void setLoginType(String loginType) { + this.loginType = loginType; + } /** * 唯一标识 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index cc76e57..46d3422 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -111,11 +111,12 @@ public class SecurityConfig .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 - requests.antMatchers("/login", "/register", "/captchaImage","/sms").permitAll() + requests.antMatchers("/login", "/register", "/captchaImage","/sendSms","/loginSms").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/mt/cookies").permitAll() + .antMatchers("/test/**").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated(); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/SmsCodeAuthenticationToken.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/SmsCodeAuthenticationToken.java new file mode 100644 index 0000000..b6fa1ec --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/security/context/SmsCodeAuthenticationToken.java @@ -0,0 +1,39 @@ +package com.ruoyi.framework.security.context; + +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.util.Assert; + +import java.util.Collection; + +public class SmsCodeAuthenticationToken extends AbstractAuthenticationToken { + + private final Object principal; + + public SmsCodeAuthenticationToken(Object principal) { + super((Collection)null); + this.principal = principal; + this.setAuthenticated(false); + } + + public SmsCodeAuthenticationToken(Object principal, Collection authorities) { + super(authorities); + this.principal = principal; + super.setAuthenticated(true); + } + + public Object getCredentials() { + return null; + } + + public Object getPrincipal() { + return this.principal; + } + + public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException { + Assert.isTrue(!isAuthenticated, "Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead"); + super.setAuthenticated(false); + } + +} \ No newline at end of file diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index fe16427..5a82199 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -1,6 +1,8 @@ package com.ruoyi.framework.web.service; import javax.annotation.Resource; + +import com.ruoyi.framework.security.context.SmsCodeAuthenticationToken; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -100,6 +102,50 @@ public class SysLoginService return tokenService.createToken(loginUser); } + /** + * 登录验证 + * + * @param phone 用户名 + * @param smsCode 短信验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public String loginSms(String phone, String smsCode, String uuid) + { + // 验证码校验 + validateCaptcha(phone, smsCode, uuid); + // 用户验证 + Authentication authentication = null; + try + { + SmsCodeAuthenticationToken authenticationToken = new SmsCodeAuthenticationToken(phone); + AuthenticationContextHolder.setContext(authenticationToken); + // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername + authentication = authenticationManager.authenticate(authenticationToken); + } + catch (Exception e) + { + if (e instanceof BadCredentialsException) + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(phone, Constants.LOGIN_FAIL, MessageUtils.message("phone.code.not.match"))); + throw new UserPasswordNotMatchException(); + } + else + { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(phone, Constants.LOGIN_FAIL, e.getMessage())); + throw new ServiceException(e.getMessage()); + } + } + finally + { + AuthenticationContextHolder.clearContext(); + } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(phone, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + recordLoginInfo(loginUser.getUserId()); + // 生成token + return tokenService.createToken(loginUser); + } /** * 校验验证码 * diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index 6c6f0f9..032a2eb 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -1,51 +1,51 @@ -package com.ruoyi.quartz.task; - -import com.ruoyi.business.service.IAiService; -import com.ruoyi.business.service.IMeituanService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * 定时任务调度测试 - * - * @author ruoyi - */ -@Component("ryTask") -public class RyTask { - @Autowired - private IAiService aiService; - @Autowired - private IMeituanService iMeituanService; - - /** - * 获取订单并解析号码 5分钟 - */ - public void getOrders() { - iMeituanService.orderInfoList(); - } - - /** - * 发送AI 1分钟 - * - * @throws Exception - */ - public void sendToAi() throws Exception { - aiService.sendToAi(); - } - - /** - * 获取AI结果 5分钟 - */ - public void getAiResult() { - aiService.queryAiTask(); - } - - /** - * 统计昨日营销数 每天8点执行一次 - */ - public void getReturnInfo() { - iMeituanService.getReturnInfo(); - - } - -} +//package com.ruoyi.quartz.task; +// +//import com.ruoyi.business.service.IAiService; +//import com.ruoyi.business.service.IMeituanService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +///** +// * 定时任务调度测试 +// * +// * @author ruoyi +// */ +//@Component("ryTask") +//public class RyTask { +// @Autowired +// private IAiService aiService; +// @Autowired +// private IMeituanService iMeituanService; +// +// /** +// * 获取订单并解析号码 5分钟 +// */ +// public void getOrders() { +// iMeituanService.orderInfoList(); +// } +// +// /** +// * 发送AI 1分钟 +// * +// * @throws Exception +// */ +// public void sendToAi() throws Exception { +// aiService.sendToAi(); +// } +// +// /** +// * 获取AI结果 5分钟 +// */ +// public void getAiResult() { +// aiService.queryAiTask(); +// } +// +// /** +// * 统计昨日营销数 每天8点执行一次 +// */ +// public void getReturnInfo() { +// iMeituanService.getReturnInfo(); +// +// } +// +//} diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/domain/BusStoreConfigInfo.java b/ruoyi-system/src/main/java/com/ruoyi/business/domain/BusStoreConfigInfo.java index 6fa7e2f..2525b88 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/domain/BusStoreConfigInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/domain/BusStoreConfigInfo.java @@ -70,6 +70,10 @@ public class BusStoreConfigInfo extends BaseEntity @Excel(name = "自配送营销时长") private int selfDeliveryDuration; + /** 营销限额 */ + @Excel(name = "营销限额开关") + private String quotaStatus; + /** 营销限额 */ @Excel(name = "营销限额") private int quota; @@ -80,7 +84,15 @@ public class BusStoreConfigInfo extends BaseEntity @Excel(name = "归属销售id") private Long saleBindId; - public void setId(Long id) + public String getQuotaStatus() { + return quotaStatus; + } + + public void setQuotaStatus(String quotaStatus) { + this.quotaStatus = quotaStatus; + } + + public void setId(Long id) { this.id = id; } @@ -248,6 +260,7 @@ public class BusStoreConfigInfo extends BaseEntity .append("endTime", getEndTime()) .append("isSpliceOrder", getIsSpliceOrder()) .append("selfDeliveryDuration", getSelfDeliveryDuration()) + .append("quotaStatus", getQuotaStatus()) .append("quota", getQuota()) .append("remark", getRemark()) .append("saleBindId", getSaleBindId()) diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java index dce35b3..de51a9b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java @@ -331,6 +331,13 @@ public class AiServiceImpl implements IAiService { content = busStoreConfigInfo.getContent4(); } + // 当日此店铺营销限额 + if ("1".equals(busStoreConfigInfo.getQuotaStatus()) && busStoreConfigInfo.getQuota() != 0){ + int quota = busReturnVisitInfoMapper.countByToday(storeInfo.getStoreCode()); + if (quota >= busStoreConfigInfo.getQuota()) { + break; + } + } //加入免运营订单-黑名单的 不营销跳出 BusBanOperateInfo busBanOperateInfo = new BusBanOperateInfo(); busBanOperateInfo.setBanOperateCode(busOrderInfo.getCustomId()); @@ -339,13 +346,6 @@ public class AiServiceImpl implements IAiService { if (list1.size() > 0) { continue; } - // 当日此店铺营销限额 - if (busStoreConfigInfo.getQuota() != 0){ - int quota = busReturnVisitInfoMapper.countByToday(storeInfo.getStoreCode()); - if (quota >= busStoreConfigInfo.getQuota()) { - break; - } - } // redisTemplate.opsForValue().set(busStoreConfigInfo.getStoreCode() + now.format(dateTimeFormatterNow), quota + ""); BusFifteenInfo fifteenInfo = new BusFifteenInfo(); fifteenInfo.setCustomId(busOrderInfo.getCustomId()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java index 892f3c2..fef5963 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISmsService.java @@ -4,11 +4,6 @@ import com.tencentcloudapi.common.exception.TencentCloudSDKException; public interface ISmsService { - /** - * 发送短信的验证码 - * @return - */ - public String generateCode(); /** * 发送短信的验证码 * @param phoneNumber @@ -30,5 +25,5 @@ public interface ISmsService { * @param phone * @return */ - void sendSmsOne(String phone); + void sendSmsOne(String phone, String smsCode); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java index b98ce25..8340742 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsServiceImpl.java @@ -16,11 +16,6 @@ import java.util.Random; @Service public class SmsServiceImpl implements ISmsService { - /** - * 短信验证码长度 - */ - private final Integer LENGTH = 6; - @Autowired private TencentCloudProperties tencentCloudProperties; /** @@ -45,15 +40,6 @@ public class SmsServiceImpl implements ISmsService { return resp.getSendStatusSet()[0].getCode(); } - /** - * 生成随机的验证码 - * - * @return - */ - public String generateCode() { - return RandomStringUtils.randomNumeric(LENGTH); - } - @Override public Boolean validationCode(String phone, String code) { final String data = (String) redisTemplate.opsForValue().get(phone); @@ -65,19 +51,18 @@ public class SmsServiceImpl implements ISmsService { } @Override - public void sendSmsOne(String phone) { + public void sendSmsOne(String phone, String smsCode) { try { /*验证手机号是否存在*/ if(false){ throw new ServiceException("手机号不存在,请联系管理员注册!"); } - String code = generateCode(); String[] phoneNumber = new String[]{phone}; - String[] params = new String[]{code}; + String[] params = new String[]{smsCode}; String status = sendSms(phoneNumber, params); - System.out.println(status + "sms code = "+code); + System.out.println(status + "sms code = "+smsCode); if("Ok".equals(status)){ - redisTemplate.opsForValue().set(phone, code); + redisTemplate.opsForValue().set(phone, smsCode); } } catch (TencentCloudSDKException e) { throw new ServiceException(e.getMessage()); diff --git a/ruoyi-system/src/main/resources/mapper/business/BusStoreConfigInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/business/BusStoreConfigInfoMapper.xml index 1760054..405ecc2 100644 --- a/ruoyi-system/src/main/resources/mapper/business/BusStoreConfigInfoMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/business/BusStoreConfigInfoMapper.xml @@ -19,12 +19,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, store_code, store_name, content1, content2, content3, content4, min_order_num, max_order_num, start_time, end_time, is_splice_order, self_delivery_duration, quota, remark,sale_bind_id from bus_store_config_info + select id, store_code, store_name, content1, content2, content3, content4, min_order_num, max_order_num, start_time, end_time, is_splice_order, self_delivery_duration, quota, quota_status, remark,sale_bind_id from bus_store_config_info