diff --git a/README.md b/README.md index fb0b7243..db6cb4e4 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,12 @@ ### 加技术交流群 * 企业微信 -![加技术交流群](https://stivepeim.gitee.io/my-image/allGroup-QRCode.jpg "开发技术群二维码.png") +![加技术交流群](https://stivepeim.gitee.io/my-image/gourp_QRCode_2020_11-17.png "开发技术群二维码.png") 如果群二维码过期请加开发者微信拉你进群 -![开发者微信](https://stivepeim.gitee.io/my-image/stivepeim_qywx_qrcode.png "屏幕截图.png") +![开发者微信](https://stivepeim.gitee.io/my-image/stivepeim_qywx_qrcode.png "开发者企业微信.png") ### 演示站 1. 移动端:[https://java.crmeb.net](https://java.crmeb.net) @@ -46,13 +46,11 @@ CRMEB知识付费项目:https://gitee.com/ZhongBangKeJi/crmeb_zzff_class CRMEB打通版:https://gitee.com/ZhongBangKeJi/CRMEB ### Swagger接口文档 -演示站接口: -1. 移动端:http://app.beta.java.crmeb.net/api_html/app_api.html -2. 后台:http://app.beta.java.crmeb.net/api_html/admin_api.html +演示站接口: http://api.java.crmeb.net/doc.html -自己部署站点接口地址:域名/swagger-ui.html# +自己部署站点接口地址:域名/doc.html# -本地启动Java Api项目接口地址:http://localhost:8080/swagger-ui.html# 8080为配置文件里配置的 server/port +本地启动Java Api项目接口地址:http://localhost:8080/doc.html# 8080为配置文件里配置的 server/port prod环境swagger默认账号密码在 prod.yml配置里 @@ -154,7 +152,7 @@ Excel数据导出,导出表格更加美观可视; # Java项目框架 1. SpringBoot 2.2.6.RELEASE 2. Maven 3.6.1 -3. Swagger 2.9.2 +3. swagger-bootstrap-ui-demo 1.0 4. Mybatis Plus 3.3.1 @@ -181,6 +179,12 @@ Excel数据导出,导出表格更加美观可视; 3. [如何导入第三方JAVA SDK包](https://blog.csdn.net/weixin_46028577/article/details/106342938?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase "如何导入第三方JAVA SDK包") # +# v1.2.1 更新内容 +## 更新列表 + 1. 短信后台升级,更新供应商 + 2. 替换官方swagger文档提升友好和易用[swagger-bootstrap-ui] https://doc.xiaominfo.com/knife4j + 3. 添加商品分类必要素材,可在配置好图片服务后自行维护 + # v1.2 功能更新列表 ### 更新Note ## 修复内容列表 diff --git a/admin/src/views/sms/smsConfig/index.vue b/admin/src/views/sms/smsConfig/index.vue index f39aa3ab..cf06a47d 100644 --- a/admin/src/views/sms/smsConfig/index.vue +++ b/admin/src/views/sms/smsConfig/index.vue @@ -88,9 +88,9 @@ export default { getNumber() { smsInfoApi().then(async res => { const data = res - this.numbers = data.number - this.sendTotal = data.send_total - this.amount = data.number + data.send_total + this.numbers = data.num + this.sendTotal = data.surp + this.amount = data.num + data.surp this.smsAccount = data.account }) }, diff --git a/crmeb/pom.xml b/crmeb/pom.xml index 9e02580a..21835493 100644 --- a/crmeb/pom.xml +++ b/crmeb/pom.xml @@ -16,6 +16,9 @@ 1.8 + 2.9.2 + 1.5.22 + 1.9.3 @@ -161,30 +164,28 @@ 1.5.21 - - - - io.springfox - springfox-swagger-ui - 2.9.2 - - - + io.springfox springfox-swagger2 - 2.9.2 + ${springfox.version} - - io.swagger - swagger-annotations - io.swagger swagger-models + + io.swagger + swagger-models + ${swagger-models.version} + + + com.github.xiaoymin + swagger-bootstrap-ui + ${swagger-bootstrap-ui.version} + diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java b/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java index a7a3caa4..7affb5d9 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java @@ -3,6 +3,7 @@ package com.zbkj.crmeb.config; import com.constants.Constants; import com.google.common.base.Predicate; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -34,6 +35,7 @@ import static com.google.common.collect.Lists.newArrayList; */ @Configuration @EnableSwagger2 +@ConfigurationProperties(prefix = "api.doc") public class SwaggerConfig{ //是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置 @@ -129,7 +131,7 @@ public class SwaggerConfig{ return new ApiInfoBuilder() .title("Crmeb Java") .description("Crmeb") - .termsOfServiceUrl("http://host:port/swagger-ui.html#/") + .termsOfServiceUrl("http://host:port") .version("1.0.0").build(); } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java b/crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java index 5fe13a60..f0edf5ec 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java @@ -115,13 +115,13 @@ public class WebConfig implements WebMvcConfigurer { excludePathPatterns("/api/front/seckill/list/*"). excludePathPatterns("/api/front/seckill/detail/*"). // excludePathPatterns("/api/front/cart/count"). - excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); + excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**"); } public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/"); - registry.addResourceHandler("swagger-ui.html") + registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); @@ -140,7 +140,8 @@ public class WebConfig implements WebMvcConfigurer { @Bean @ConditionalOnProperty(name = "swagger.basic.enable", havingValue = "true") public MappedInterceptor getMappedInterceptor() { - return new MappedInterceptor(new String[]{"/swagger-ui.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); + + return new MappedInterceptor(new String[]{"/doc.html", "/webjars/**"}, new SwaggerInterceptor(username, password, check)); } // 验证参数是否完全匹配 // @Override diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java index d78ea79d..64992834 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java @@ -35,7 +35,6 @@ public class SmsRecordController { @Autowired private SmsService smsService; - /** * 注册账户时发送短信api * @param phone 手机号码 @@ -55,7 +54,7 @@ public class SmsRecordController { @ApiOperation(value = " 发送短信") @RequestMapping(value = "/sendCode", method = RequestMethod.POST) @ApiImplicitParams({ - @ApiImplicitParam(name="phone", value="手机号码", required = true) + @ApiImplicitParam(name="phone", value="手机号码", required = true) }) public CommonResult sendCode(@RequestParam String phone){ ValidateFormUtil.isPhone(phone,"手机号码错误"); @@ -198,12 +197,14 @@ public class SmsRecordController { @ApiImplicitParams({ @ApiImplicitParam(name="payType", value="支付类型 weixin:微信支付/alipay:支付宝支付"), @ApiImplicitParam(name="mealId", value="套餐id"), - @ApiImplicitParam(name="price", value="价格") + @ApiImplicitParam(name="price", value="价格"), + @ApiImplicitParam(name="num", value="套餐条数"), }) public CommonResult payQrCode(@RequestParam(name = "payType", defaultValue = SmsConstants.PAY_DEFAULT_PAY_TYPE) String payType, - @RequestParam(name = "mealId", required = false, defaultValue = "0") Integer mealId, - @RequestParam(name = "price", required = false, defaultValue = "0") BigDecimal price){ - JSONObject result = smsService.getPayQrCode(payType, mealId, price); + @RequestParam(name = "mealId", required = true) Integer mealId, + @RequestParam(name = "price", required = true) BigDecimal price, + @RequestParam(name = "num", required = false, defaultValue = "0") Integer num){ + JSONObject result = smsService.getPayQrCode(payType, mealId, price, num); return CommonResult.success(getDataByResult(result)); } @@ -223,8 +224,8 @@ public class SmsRecordController { @ApiImplicitParam(name="type", value="type (1=验证码 2=通知 3=推广)"), }) public CommonResult applyTempMessage(@RequestParam(name = "title") String title, - @RequestParam(name = "content") String content, - @RequestParam(name = "type", required = false, defaultValue = "1") Integer type){ + @RequestParam(name = "content") String content, + @RequestParam(name = "type", required = false, defaultValue = "1") Integer type){ JSONObject result = smsService.applyTempMessage(title, content, type); return CommonResult.success(getMsgByResult(result)); } @@ -274,4 +275,3 @@ public class SmsRecordController { } - diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java index 36fced5d..5c94bdd0 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java @@ -57,4 +57,6 @@ public class RegisterRequest implements Serializable { private String code; private String verify_code; + + private String url; } diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java index 69301139..84fac7c4 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java @@ -11,10 +11,10 @@ import java.util.HashMap; import java.util.List; /** -* @author Mr.Zhang -* @Description SmsService 接口 -* @since 2020-04-16 -*/ + * @author Mr.Zhang + * @Description SmsService 接口 + * @since 2020-04-16 + */ public interface SmsService{ JSONObject register(RegisterRequest registerRequest); @@ -33,7 +33,7 @@ public interface SmsService{ JSONObject payTempList(PageParamRequest pageParamRequest); - JSONObject getPayQrCode(String payType, Integer mealId, BigDecimal price); + JSONObject getPayQrCode(String payType, Integer mealId, BigDecimal price, Integer num); JSONObject applyTempMessage(String title, String content, Integer type); diff --git a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java b/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java index e3a42191..e304d8ca 100644 --- a/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java +++ b/crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java @@ -179,15 +179,17 @@ public class SmsServiceImpl implements SmsService { public JSONObject register(RegisterRequest registerRequest) { registerRequest.setPassword(DigestUtils.md5Hex(registerRequest.getPassword())); registerRequest.setVerify_code(registerRequest.getCode()); + registerRequest.setUrl(registerRequest.getDomain()); Map map = CrmebUtil.objectToMap(registerRequest); MultiValueMap param = new LinkedMultiValueMap<>(); param.setAll(map); -// JSONObject post = post(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_REGISTER_URI, map); JSONObject post = postFrom(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_REGISTER_URI, param, null); + // token存入Redis String accessToken = SmsConstants.SMS_USER_TOKEN_PREFIX.concat(post.getJSONObject("data").getString("access_token")); Long expiresIn = post.getJSONObject("data").getLong("expires_in"); expiresIn = expiresIn - System.currentTimeMillis()/1000; redisUtil.set(StrUtil.format(SmsConstants.SMS_USER_TOKEN_REDIS_PREFIX, getMd5Token()), accessToken, expiresIn, TimeUnit.SECONDS); + // 开通短信服务 HashMap header = getCommonHeader(accessToken); MultiValueMap params = new LinkedMultiValueMap<>(); @@ -349,10 +351,11 @@ public class SmsServiceImpl implements SmsService { @Override public JSONObject payTempList(PageParamRequest pageParamRequest) { init(); - Map map = mergeToken(CrmebUtil.objectToMap(pageParamRequest)); - map.put("type", "sms"); +// Map map = mergeToken(CrmebUtil.objectToMap(pageParamRequest)); +// map.put("type", "sms"); MultiValueMap params = new LinkedMultiValueMap<>(); - params.setAll(map); + params.add("type", "sms"); +// params.setAll(map); String accessToken = getSmsUserTokenByRedis(); HashMap header = getCommonHeader(accessToken); // return get(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_PAY_TEMP_LIST_URI, map); @@ -369,19 +372,28 @@ public class SmsServiceImpl implements SmsService { * @return JSONObject */ @Override - public JSONObject getPayQrCode(String payType, Integer mealId, BigDecimal price) { + public JSONObject getPayQrCode(String payType, Integer mealId, BigDecimal price, Integer num) { init(); - Map map = getTokenMap(); -// map.put("payType", payType); - map.put("pay_type", payType); -// map.put("mealId", mealId); - map.put("meal_id", mealId); - map.put("price", price); -// map.put("uid", getAccount()); -// map.put("token", getMd5Token()); - map.put("type", "sms"); - map.put("notify", getPayNotifyUrl()); - return post(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_PAY_QR_CODE_URI, map); +// Map map = getTokenMap(); +//// map.put("payType", payType); +// map.put("pay_type", payType); +//// map.put("mealId", mealId); +// map.put("meal_id", mealId); +// map.put("price", price); +//// map.put("uid", getAccount()); +//// map.put("token", getMd5Token()); +// map.put("type", "sms"); +// map.put("notify", getPayNotifyUrl()); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("meal_id", mealId); + params.add("price", price); + params.add("num", num); + params.add("type", "sms"); + params.add("pay_type", payType); + String accessToken = getSmsUserTokenByRedis(); + HashMap header = getCommonHeader(accessToken); +// return post(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_PAY_QR_CODE_URI, map); + return postFrom(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_PAY_QR_CODE_URI, params, header); } /** @@ -646,7 +658,6 @@ public class SmsServiceImpl implements SmsService { public JSONObject sendCodeForRegister(String phone) { MultiValueMap map = new LinkedMultiValueMap<>(); map.add("phone", phone); -// return getData(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_CAPTCHA_URI+"?phone="+phone); return postFrom(SmsConstants.SMS_API_URL + SmsConstants.SMS_API_CAPTCHA_URI, map, null); } diff --git a/crmeb/src/main/resources/application-beta.yml b/crmeb/src/main/resources/application-beta.yml index 2bcebad6..e72dd3a9 100644 --- a/crmeb/src/main/resources/application-beta.yml +++ b/crmeb/src/main/resources/application-beta.yml @@ -14,14 +14,14 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/crmeb_java_test?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 - username: youMysqlAccount - password: youMysqlPwd + url: jdbc:mysql://121.196.17.222:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb_java_beta + password: Yx7Scb8zk7KZShM5 redis: - host: redisPath #地址 + host: 121.196.17.222 #地址 port: 6379 #端口 - password: #密码 - timeout: 30000 # 连接超时时间(毫秒) + password: 9c4d4a99a3fa3122d9 + timeout: 1000 # 连接超时时间(毫秒) database: 0 #默认数据库 jedis: pool: diff --git a/crmeb/src/main/resources/application.yml b/crmeb/src/main/resources/application.yml index f7a0385f..f90346e7 100644 --- a/crmeb/src/main/resources/application.yml +++ b/crmeb/src/main/resources/application.yml @@ -30,14 +30,14 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/crmeb_java_test?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 - username: youMysqlAccount - password: youMysqlPwd + url: jdbc:mysql://121.196.17.222:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8 + username: crmeb_java_beta + password: Yx7Scb8zk7KZShM5 redis: - host: redisPath #地址 + host: 121.196.17.222 #地址 port: 6379 #端口 - password: #密码 - timeout: 30000 # 连接超时时间(毫秒) + password: 9c4d4a99a3fa3122d9 + timeout: 1000 # 连接超时时间(毫秒) database: 0 #默认数据库 jedis: pool: