From 7aea0f67d57fe8fd768e22df06187d55953793b7 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Thu, 29 Apr 2021 16:58:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=95=B4=E7=90=86=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/WechatAppletController.java | 105 +++++++----- .../stdiet/custom/domain/SysWxUserInfo.java | 150 +++++------------- .../mapper/custom/SysWxUserInfoMapper.xml | 6 +- 3 files changed, 107 insertions(+), 154 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java index 5e63840b8..ada26efdf 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java @@ -1,10 +1,8 @@ package com.stdiet.web.controller.custom; -import com.itextpdf.io.util.DateTimeUtil; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.common.core.page.TableDataInfo; -import com.stdiet.common.enums.BusinessType; import com.stdiet.common.exception.file.FileNameLengthLimitExceededException; import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.StringUtils; @@ -17,7 +15,6 @@ import com.stdiet.custom.dto.response.CustomerCaseResponse; import com.stdiet.custom.page.WxLogInfo; import com.stdiet.custom.service.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -33,30 +30,27 @@ import java.util.*; public class WechatAppletController extends BaseController { + public static final String[] imageName = {"breakfastImages", "lunchImages", "dinnerImages", "extraMealImages", "bodyImages"}; @Autowired private ISysCustomerCaseService sysCustomerCaseService; - @Autowired private ISysWxUserLogService sysWxUserLogService; - @Autowired private ISysWxUserInfoService sysWxUserInfoService; - @Autowired private ISysOrderService sysOrderService; - @Autowired private ISysNutritionQuestionService sysNutritionQuestionService; - @Autowired private ISysAskNutritionQuestionService sysAskNutritionQuestionService; + @Autowired + private ISysCustomerService iSysCustomerService; /** * 查询微信小程序中展示的客户案例 */ @GetMapping("/caseList") - public TableDataInfo caseList(SysCustomerCase sysCustomerCase) - { + public TableDataInfo caseList(SysCustomerCase sysCustomerCase) { startPage(); sysCustomerCase.setKeywordArray(StringUtils.isNotEmpty(sysCustomerCase.getKeyword()) ? sysCustomerCase.getKeyword().split(",") : null); List list = sysCustomerCaseService.getWxCustomerCaseList(sysCustomerCase); @@ -69,12 +63,11 @@ public class WechatAppletController extends BaseController { * 查询客户案例文件列表 */ @GetMapping("/getFileByCaseId") - public AjaxResult getFileByCaseId(@RequestParam("caseId")String caseId) - { + public AjaxResult getFileByCaseId(@RequestParam("caseId") String caseId) { Long id = StringUtils.isNotEmpty(caseId) ? Long.parseLong(AesUtils.decrypt(caseId, null)) : null; CustomerCaseResponse customerCaseResponse = new CustomerCaseResponse(); customerCaseResponse.setId(caseId); - if(id != null){ + if (id != null) { List list = sysCustomerCaseService.getFileListByCaseId(id); List fileUrl = new ArrayList<>(); for (SysCustomerCaseFile caseFile : list) { @@ -82,7 +75,7 @@ public class WechatAppletController extends BaseController { } List downUrlList = AliyunOSSUtils.generatePresignedUrl(fileUrl); customerCaseResponse.setFileList(downUrlList); - }else{ + } else { customerCaseResponse.setFileList(new ArrayList<>()); } return AjaxResult.success(customerCaseResponse); @@ -90,20 +83,21 @@ public class WechatAppletController extends BaseController { /** * 同步客户信息,返回订单数量 + * * @param sysWxUserInfo * @return */ @PostMapping("/synchroCustomerInfo") public AjaxResult synchroCustomerInfo(@RequestBody SysWxUserInfo sysWxUserInfo) { - if(StringUtils.isEmpty(sysWxUserInfo.getOpenid()) || StringUtils.isEmpty(sysWxUserInfo.getPhone())){ + if (StringUtils.isEmpty(sysWxUserInfo.getOpenid()) || StringUtils.isEmpty(sysWxUserInfo.getPhone())) { return AjaxResult.error("手机号为空"); } // 查询微信用户 SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid()); - if(userInfo != null){ + if (userInfo != null) { //更新数据 sysWxUserInfoService.updateSysWxUserInfo(sysWxUserInfo); - }else{ + } else { sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo); } return AjaxResult.success(); @@ -111,27 +105,28 @@ public class WechatAppletController extends BaseController { /** * 微信小程序获取客户打卡记录 + * * @param sysWxUserLog * @return */ @GetMapping(value = "/getPunchLogs") public AjaxResult getPunchLogs(SysWxUserLog sysWxUserLog) { - if(StringUtils.isEmpty(sysWxUserLog.getPhone()) && StringUtils.isEmpty(sysWxUserLog.getOpenid())){ - return AjaxResult.error(5001, "缺少参数"); + if (StringUtils.isEmpty(sysWxUserLog.getPhone()) && StringUtils.isEmpty(sysWxUserLog.getOpenid())) { + return AjaxResult.error(5001, "缺少参数"); } //查询是否下单 SysCustomer param = new SysCustomer(); param.setPhone(sysWxUserLog.getPhone()); int orderCount = sysOrderService.getOrderCountByCustomer(param); - if(orderCount > 0){ + if (orderCount > 0) { Map result = new HashMap<>(); //今日是否已打卡 boolean isPunch = false; startPage(); List list = sysWxUserLogService.getWxLogInfoList(sysWxUserLog); - if(list.size() > 0){ + if (list.size() > 0) { WxLogInfo lastLog = list.get(0); - if(lastLog.getDate() != null && ChronoUnit.DAYS.between(DateUtils.stringToLocalDate(lastLog.getDate(), "yyyy-MM-dd"), LocalDate.now()) == 0) { + if (lastLog.getDate() != null && ChronoUnit.DAYS.between(DateUtils.stringToLocalDate(lastLog.getDate(), "yyyy-MM-dd"), LocalDate.now()) == 0) { isPunch = true; } } @@ -145,13 +140,14 @@ public class WechatAppletController extends BaseController { result.put("isPunch", isPunch); result.put("tableDataInfo", tableDataInfo); return AjaxResult.success(result); - }else{ + } else { return AjaxResult.error(5002, "未查询到相关订单信息"); } } /** * 今日是否打卡 + * * @param openid * @return */ @@ -166,6 +162,7 @@ public class WechatAppletController extends BaseController { /** * 微信小程序打卡 + * * @param sysWxUserLog * @return */ @@ -176,24 +173,22 @@ public class WechatAppletController extends BaseController { if (userInfo == null || StringUtils.isEmpty(userInfo.getPhone())) { return AjaxResult.error("打卡失败"); } - if(sysWxUserLog.getId() == null){ + if (sysWxUserLog.getId() == null) { //查询今日是否已打卡 - if(sysWxUserLog.getLogTime() == null){ + if (sysWxUserLog.getLogTime() == null) { sysWxUserLog.setLogTime(new Date()); } int count = sysWxUserLogService.checkWxLogInfoCount(sysWxUserLog); - if(count > 0){ + if (count > 0) { return AjaxResult.error("今日已打卡,不可重复打卡"); } return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog)); - }else{ + } else { return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog)); } } - public static final String[] imageName = {"breakfastImages", "lunchImages", "dinnerImages", "extraMealImages", "bodyImages"}; - /** * 获取微信用户记录详细信息 */ @@ -204,7 +199,7 @@ public class WechatAppletController extends BaseController { SysWxUserLog param = new SysWxUserLog(); param.setId(Long.parseLong(id)); sysWxUserLog = sysWxUserLogService.getWxLogInfoDetailById(param); - if(sysWxUserLog == null){ + if (sysWxUserLog == null) { return AjaxResult.error("打卡记录不存在"); } Map> imageUrlMap = new HashMap<>(); @@ -221,10 +216,10 @@ public class WechatAppletController extends BaseController { imageUrlMap.put(imageName[3], extraMealImagesUrlList); List bodyImagesUrlList = StringUtils.isNotEmpty(sysWxUserLog.getBodyImages()) ? Arrays.asList(sysWxUserLog.getBodyImages().split("\\|")) : new ArrayList<>(); - imageUrlMap.put(imageName[4], bodyImagesUrlList ); + imageUrlMap.put(imageName[4], bodyImagesUrlList); //生成预览链接 - Map> downUrlList = AliyunOSSUtils.generatePresignedUrl(imageUrlMap); + Map> downUrlList = AliyunOSSUtils.generatePresignedUrl(imageUrlMap); sysWxUserLog.setBreakfastImagesUrl(downUrlList.get(imageName[0])); sysWxUserLog.setLunchImagesUrl(downUrlList.get(imageName[1])); @@ -236,7 +231,7 @@ public class WechatAppletController extends BaseController { List allUrlList = new ArrayList<>(); for (String key : imageName) { - if(!"bodyImages".equals(key)){ + if (!"bodyImages".equals(key)) { allUrlList.addAll(downUrlList.get(key)); allImagesList.addAll(imageUrlMap.get(key)); } @@ -249,12 +244,13 @@ public class WechatAppletController extends BaseController { /** * 处理返回值的ID加密 + * * @param list * @return */ - private void dealIdEnc(List list){ + private void dealIdEnc(List list) { for (CustomerCaseResponse cus : list) { - cus.setId(AesUtils.encrypt(cus.getId()+"", null)); + cus.setId(AesUtils.encrypt(cus.getId() + "", null)); } } @@ -292,9 +288,9 @@ public class WechatAppletController extends BaseController { * 获取小程序展示的营养小知识列表 */ @GetMapping(value = "/getNutritionQuestionList") - public AjaxResult getNutritionQuestionList(SysNutritionQuestion sysNutritionQuestion, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10")int pageSize) { + public AjaxResult getNutritionQuestionList(SysNutritionQuestion sysNutritionQuestion, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) { sysNutritionQuestion.setShowFlag(1); - Map result = sysNutritionQuestionService.getNutritionQuestionListByKey(sysNutritionQuestion, pageNum, pageSize); + Map result = sysNutritionQuestionService.getNutritionQuestionListByKey(sysNutritionQuestion, pageNum, pageSize); return AjaxResult.success(result); } @@ -302,11 +298,40 @@ public class WechatAppletController extends BaseController { * 新增营养小知识提问 */ @PostMapping("/addAskNutritionQuestion") - public AjaxResult addAskNutritionQuestion(@RequestBody SysAskNutritionQuestion sysAskNutritionQuestion) - { - if(StringUtils.isEmpty(sysAskNutritionQuestion.getOpenid()) || StringUtils.isEmpty(sysAskNutritionQuestion.getQuestion())){ + public AjaxResult addAskNutritionQuestion(@RequestBody SysAskNutritionQuestion sysAskNutritionQuestion) { + if (StringUtils.isEmpty(sysAskNutritionQuestion.getOpenid()) || StringUtils.isEmpty(sysAskNutritionQuestion.getQuestion())) { return AjaxResult.error("添加失败"); } return toAjax(sysAskNutritionQuestionService.insertSysAskNutritionQuestion(sysAskNutritionQuestion)); } + + @PostMapping("/login") + public AjaxResult login(@RequestBody SysWxUserInfo sysWxUserInfo) { + if (StringUtils.isEmpty(sysWxUserInfo.getOpenid())) { + return AjaxResult.error("缺少参数:openid"); + } + SysWxUserInfo curWxUserInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid()); + + // 第一次尝试匹配,搜索sys_wx_user_info表,尝试查找cus_id,此时不需要手机号 + if (StringUtils.isEmpty(sysWxUserInfo.getPhone()) && StringUtils.isNull(curWxUserInfo) || StringUtils.isNull(curWxUserInfo.getCusId())) { + // 如果没找到任何信息,此时为未登录过的新用户 || 没有cusId,没有创建用户信息 + return AjaxResult.error(5000, "需要手机号进一步匹配"); + } else { + // 第二次尝试匹配,带上手机号,先去sys_customer查找,找到就更新sys_wx_user_info表,并返回一系列登录后的数据 + SysCustomer sysCustomer = iSysCustomerService.getCustomerByPhone(sysWxUserInfo.getPhone()); + if (StringUtils.isNull(sysCustomer)) { + return AjaxResult.error(5003, "未查到用户信息,请联系销售顾问"); + } + + if (StringUtils.isNull(curWxUserInfo)) { + // 新增sys_wx_user_info + sysWxUserInfo.setCusId(sysCustomer.getId()); + sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo); + } + } + // 更新sys_wx_user_info数据,并返回一系列登录后的数据 + sysWxUserInfoService.updateSysWxUserInfo(curWxUserInfo); + + return AjaxResult.success(curWxUserInfo); + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserInfo.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserInfo.java index dfcaaaaae..671301b87 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserInfo.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxUserInfo.java @@ -1,9 +1,9 @@ package com.stdiet.custom.domain; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.stdiet.common.annotation.Excel; -import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; /** * 微信用户对象 sys_wx_user_info @@ -11,144 +11,68 @@ import com.stdiet.common.core.domain.BaseEntity; * @author wonder * @date 2020-11-28 */ -public class SysWxUserInfo extends BaseEntity -{ - private static final long serialVersionUID = 1L; +@Data +public class SysWxUserInfo { - /** 微信openid */ + /** + * 微信openid + */ private String openid; - /** 昵称 */ + private Long cusId; + + /** + * 昵称 + */ @Excel(name = "昵称") private String nickName; - /** 微信appid */ + /** + * 微信appid + */ @Excel(name = "微信appid") private String appid; - /** 电话 */ + /** + * 电话 + */ @Excel(name = "电话") private String phone; - /** 用户头像 */ + /** + * 用户头像 + */ @Excel(name = "用户头像") private String avatarUrl; - /** 用户性别(0男 1女 2未知) */ + /** + * 用户性别(0男 1女 2未知) + */ @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知") private String sex; - /** 城市 */ + /** + * 城市 + */ @Excel(name = "城市") private String city; - /** 省份 */ + /** + * 省份 + */ @Excel(name = "省份") private String province; - /** 国家 */ + /** + * 国家 + */ @Excel(name = "国家") private String country; - public void setOpenid(String openid) - { - this.openid = openid; - } + private Date createTime; - public String getOpenid() - { - return openid; - } - public void setNickName(String nickName) - { - this.nickName = nickName; - } + private Date updateTime; - public String getNickName() - { - return nickName; - } - public void setAppid(String appid) - { - this.appid = appid; - } + private String remark; - public String getAppid() - { - return appid; - } - public void setPhone(String phone) - { - this.phone = phone; - } - - public String getPhone() - { - return phone; - } - public void setAvatarUrl(String avatarUrl) - { - this.avatarUrl = avatarUrl; - } - - public String getAvatarUrl() - { - return avatarUrl; - } - public void setSex(String sex) - { - this.sex = sex; - } - - public String getSex() - { - return sex; - } - public void setCity(String city) - { - this.city = city; - } - - public String getCity() - { - return city; - } - public void setProvince(String province) - { - this.province = province; - } - - public String getProvince() - { - return province; - } - public void setCountry(String country) - { - this.country = country; - } - - public String getCountry() - { - return country; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("openid", getOpenid()) - .append("nickName", getNickName()) - .append("appid", getAppid()) - .append("phone", getPhone()) - .append("avatarUrl", getAvatarUrl()) - .append("sex", getSex()) - .append("city", getCity()) - .append("province", getProvince()) - .append("country", getCountry()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml index 5ccfddf05..031b88df4 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml @@ -6,6 +6,7 @@ + @@ -22,7 +23,7 @@ - select openid, nick_name, appid, phone, avatar_url, sex, city, province, country, create_by, create_time, update_by, update_time, remark from sys_wx_user_info + select * from sys_wx_user_info