diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java index d04cb42e2..ca9a95318 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java @@ -2,7 +2,9 @@ package com.stdiet.web.controller.custom; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.redis.RedisCache; import com.stdiet.custom.service.ISysWxService; +import com.stdiet.custom.utils.WxTokenUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -15,6 +17,9 @@ public class CusWxController extends BaseController { @Autowired public ISysWxService sysWxService; + @Autowired + public RedisCache redisCache; + @GetMapping("/checkSign") public String wxCheckAuth(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, @RequestParam String echostr) { return sysWxService.wxCheckAuth(signature, timestamp, nonce, echostr); @@ -30,4 +35,9 @@ public class CusWxController extends BaseController { return sysWxService.getAccessToken(); } + @GetMapping("/clearAccessToken") + public AjaxResult clearAccessToken() { + redisCache.deleteObject(WxTokenUtils.KEY_ACCESS_TOKEN); + return AjaxResult.success(); + } } diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxSaleAccountController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxSaleAccountController.java index e0a93860b..1c4bcc8de 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxSaleAccountController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxSaleAccountController.java @@ -104,33 +104,44 @@ public class SysWxSaleAccountController extends BaseController { return toAjax(sysWxSaleAccountService.deleteSysWxSaleAccountByIds(ids)); } + @GetMapping("/redisTest") + public AjaxResult redisTest() { + String accessToken = redisCache.getCacheObject(WxTokenUtils.KEY_ACCESS_TOKEN); + if (StringUtils.isEmpty(accessToken)) { + WxAccessToken wxAccessToken = WxTokenUtils.fetchAccessToken(); + redisCache.setCacheObject(WxTokenUtils.KEY_ACCESS_TOKEN, wxAccessToken.getAccessToken(), wxAccessToken.getExpiresIn(), TimeUnit.SECONDS); + } + return AjaxResult.success(accessToken); + } + /** - * 通用上传请求(无需登录认证) + * 上传图片 */ @PostMapping("/upload") public AjaxResult wxAccountUpload(MultipartFile file) throws Exception { try { // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); + String oriFileName = file.getOriginalFilename(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); - String url = serverConfig.getUrl() + fileName; +// String url = serverConfig.getUrl() + fileName; + + String oriFilePath = filePath + fileName.substring(fileName.indexOf("upload") + 6); String accessToken = redisCache.getCacheObject(WxTokenUtils.KEY_ACCESS_TOKEN); if (StringUtils.isEmpty(accessToken)) { WxAccessToken wxAccessToken = WxTokenUtils.fetchAccessToken(); - redisCache.setCacheObject(WxTokenUtils.KEY_ACCESS_TOKEN, wxAccessToken.getAccessToken(), wxAccessToken.getExpiresIn(), TimeUnit.SECONDS); + accessToken = wxAccessToken.getAccessToken(); + redisCache.setCacheObject(WxTokenUtils.KEY_ACCESS_TOKEN, accessToken, wxAccessToken.getExpiresIn(), TimeUnit.SECONDS); } - WxFileUploadResult result = WxTokenUtils.uploadImage(filePath, accessToken); - if (result == null) { - return AjaxResult.error("上传微信失败"); - } + WxFileUploadResult result = WxTokenUtils.uploadImage(oriFilePath, oriFileName, accessToken); AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); ajax.put("mediaId", result.getMediaId()); - ajax.put("url", url); + ajax.put("mediaUrl", result.getUrl()); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java index a65eedd56..af03ca135 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; @@ -11,6 +12,7 @@ import java.math.BigDecimal; * @author wonder * @date 2020-12-28 */ +@Data public class SysDishesIngredient extends SysIngredient { private Long ingredientId; @@ -21,68 +23,10 @@ public class SysDishesIngredient extends SysIngredient { private BigDecimal cusWeight; + private Integer cusWei; + private BigDecimal weight; private String remark; - @Override - public void setRemark(String remark) { - this.remark = remark; - } - - @Override - public String getRemark() { - return remark; - } - - public Long getIngredientId() { - return ingredientId; - } - - public void setIngredientId(Long ingredientId) { - this.ingredientId = ingredientId; - } - - public Long getDishesId() { - return dishesId; - } - - public void setDishesId(Long dishesId) { - this.dishesId = dishesId; - } - - public BigDecimal getWeight() { - return weight; - } - - public void setWeight(BigDecimal weight) { - this.weight = weight; - } - - public BigDecimal getCusWeight() { - return cusWeight; - } - - public void setCusWeight(BigDecimal cusWeight) { - this.cusWeight = cusWeight; - } - - public Long getCusUnit() { - return cusUnit; - } - - public void setCusUnit(Long cusUnit) { - this.cusUnit = cusUnit; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("ingredientId", getIngredientId()) - .append("dishesId", getDishesId()) - .append("weight", getWeight()) - .append("cusWeight", getCusWeight()) - .append("cusUnit", getCusUnit()) - .toString(); - } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java index a75365921..5a42a8bab 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java @@ -1,7 +1,6 @@ package com.stdiet.custom.utils; import com.alibaba.fastjson.JSONObject; -import com.stdiet.common.core.redis.RedisCache; import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.http.HttpUtils; import com.stdiet.custom.domain.WxXmlData; @@ -9,28 +8,30 @@ import com.stdiet.custom.domain.wechat.WxAccessToken; import com.stdiet.custom.domain.wechat.WxFileUploadResult; import com.thoughtworks.xstream.XStream; import org.apache.commons.io.IOUtils; -import org.springframework.beans.factory.annotation.Autowired; -import java.io.File; +import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class WxTokenUtils { - public static final String KEY_ACCESS_TOKEN="wx:access_token"; - public static final String KEY_ACCESS_TOKEN_WATHER="wx:access_token_watcher"; + public static final String KEY_ACCESS_TOKEN = "wx:access_token"; + public static final String KEY_ACCESS_TOKEN_WATHER = "wx:access_token_watcher"; // 与接口配置信息中的Token要一致 private static String token = "shengtangdiet"; - // private static String appId = "wx4a9c1fc9dba53202"; -// private static String appSecret = "fff029ade5d3575df755f4cf9e52f8da"; - private static String appId = "wxaf10fe560ea043a0"; - private static String appSecret = "afb47e477337df23b7562c3c1f965826"; + // 胜唐体控 + private static String appId = "wx4a9c1fc9dba53202"; + private static String appSecret = "fff029ade5d3575df755f4cf9e52f8da"; + // 胜唐体控李晓 +// private static String appId = "wxaf10fe560ea043a0"; +// private static String appSecret = "afb47e477337df23b7562c3c1f965826"; private static String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token"; - private static String uploadMaterialUrl = "https://api.weixin.qq.com/cgi-bin/material/add_material"; - + private static String uploadMaterialUrl = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=image"; public static WxAccessToken fetchAccessToken() { @@ -48,18 +49,28 @@ public class WxTokenUtils { } } - public static WxFileUploadResult uploadImage(String filePath, String accessToken) { - try { - String url = uploadMaterialUrl + "?access_token" + accessToken + "&type=image"; - HttpPostUtil post = new HttpPostUtil(url); - post.addParameter("media", new File(filePath)); - String resultStr = post.send(); - JSONObject obj = JSONObject.parseObject(resultStr); - WxFileUploadResult result = JSONObject.toJavaObject(obj, WxFileUploadResult.class); - return result; - } catch (Exception e) { - return null; + /** + * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 + * + * @return String url的响应信息返回值 + * @throws IOException + */ + public static WxFileUploadResult uploadImage(String filePath, String fileName, String accessToken) throws Exception { + String[] cmds = {"curl", uploadMaterialUrl.replaceAll("ACCESS_TOKEN", accessToken), "-F" + , "media=@" + filePath + ";filename=" + fileName};//必须分开写,不能有空格 + + ProcessBuilder process = new ProcessBuilder(cmds); + Process p = process.start(); + BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); + StringBuilder builder = new StringBuilder(); + String line = null; + while ((line = reader.readLine()) != null) { + builder.append(line); + builder.append(System.getProperty("line.separator")); } + JSONObject obj = JSONObject.parseObject(builder.toString()); + return JSONObject.toJavaObject(obj, WxFileUploadResult.class); + } /** diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml index a79ab03a5..9fd7b6fa6 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml @@ -28,6 +28,7 @@ + @@ -48,7 +49,7 @@ SELECT * FROM( - SELECT ingredient_id AS id, ingredient_weight AS weight, cus_weight, cus_unit, remark + SELECT ingredient_id AS id, ingredient_weight AS weight, cus_weight, cus_wei, cus_unit, remark FROM sys_dishes_ingredient WHERE dishes_id = #{id} ) dishes @@ -148,9 +149,9 @@ - insert into sys_dishes_ingredient(dishes_id, ingredient_id, ingredient_weight, cus_unit, cus_weight, remark) values + insert into sys_dishes_ingredient(dishes_id, ingredient_id, ingredient_weight, cus_unit, cus_wei, remark) values - (#{item.dishesId}, #{item.ingredientId}, #{item.weight}, #{item.cusUnit}, #{item.cusWeight}, #{item.remark}) + (#{item.dishesId}, #{item.ingredientId}, #{item.weight}, #{item.cusUnit}, #{item.cusWei}, #{item.remark}) diff --git a/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java b/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java index 06ffe5fe0..32f8b94bd 100644 --- a/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java +++ b/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java @@ -103,8 +103,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/custom/wxUserLog/wx/**", "/wx/**", "/investigate/**", - "/common/customerUploadFile", - "/custom/WxAccount/upload" + "/common/customerUploadFile" ).anonymous() .antMatchers( HttpMethod.GET, diff --git a/stdiet-ui/src/views/custom/WxAccount/index.vue b/stdiet-ui/src/views/custom/WxAccount/index.vue index 53be25298..53f4107d1 100644 --- a/stdiet-ui/src/views/custom/WxAccount/index.vue +++ b/stdiet-ui/src/views/custom/WxAccount/index.vue @@ -1,6 +1,12 @@ - + - + - 搜索 - 重置 + 搜索 + 重置 @@ -43,7 +62,7 @@ size="mini" @click="handleAdd" v-hasPermi="['custom:WxAccount:add']" - >新增 + >新增 @@ -54,7 +73,7 @@ :disabled="single" @click="handleUpdate" v-hasPermi="['custom:WxAccount:edit']" - >修改 + >修改 @@ -65,7 +84,7 @@ :disabled="multiple" @click="handleDelete" v-hasPermi="['custom:WxAccount:remove']" - >删除 + >删除 @@ -75,24 +94,40 @@ size="mini" @click="handleExport" v-hasPermi="['custom:WxAccount:export']" - >导出 + >导出 - + - - - - - - - - - - - - + + + + + + + + + + + + 修改 + >修改 删除 + >删除 - + - + @@ -139,35 +180,45 @@ - + - + - - 将文件拖到此处,或点击上传 - 只能上传jpg/png文件,且不超过500kb + :auto-upload="true" + list-type="picture" + > + + + 将文件拖到此处,或点击上传 + + + 只能上传jpg/png文件,且不超过500kb + - +