This commit is contained in:
xiezhijun 2021-07-28 17:54:37 +08:00
commit 3626c48d84
6 changed files with 163 additions and 148 deletions

View File

@ -26,7 +26,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 微信小程序统一Controller * 微信小程序统一Controller
@ -134,37 +137,37 @@ public class WechatAppletController extends BaseController {
* @param sysWxUserInfo * @param sysWxUserInfo
* @return * @return
*/ */
@PostMapping("/synchroCustomerInfo") // @PostMapping("/synchroCustomerInfo")
public AjaxResult synchroCustomerInfo(@RequestBody SysWxUserInfo sysWxUserInfo) { // 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("手机号为空"); // return AjaxResult.error("手机号为空");
} // }
//根据手机号查询返回用户加密ID // //根据手机号查询返回用户加密ID
SysCustomer customer = sysCustomerService.getCustomerByPhone(sysWxUserInfo.getPhone()); // SysCustomer customer = sysCustomerService.getCustomerByPhone(sysWxUserInfo.getPhone());
//加密ID // //加密ID
String customerEncId = null; // String customerEncId = null;
if (customer != null) { // if (customer != null) {
sysWxUserInfo.setCusId(customer.getId()); // sysWxUserInfo.setCusId(customer.getId());
customerEncId = AesUtils.encrypt(customer.getId() + "", null); // customerEncId = AesUtils.encrypt(customer.getId() + "", null);
} // }
// 查询微信用户 // // 查询微信用户
SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid()); // SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid());
if (userInfo != null) { // if (userInfo != null) {
//更新数据 // //更新数据
sysWxUserInfoService.updateSysWxUserInfo(sysWxUserInfo); // sysWxUserInfoService.updateSysWxUserInfo(sysWxUserInfo);
} else { // } else {
sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo); // sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo);
} // }
Map<String, Object> result = new HashMap<>(); // Map<String, Object> result = new HashMap<>();
result.put("customerId", customerEncId); // result.put("customerId", customerEncId);
//查询未读消息数量 // //查询未读消息数量
SysMessageNotice messageParam = new SysMessageNotice(); // SysMessageNotice messageParam = new SysMessageNotice();
messageParam.setReadType(0); // messageParam.setReadType(0);
messageParam.setMessageCustomer(customer != null ? customer.getId() : 0); // messageParam.setMessageCustomer(customer != null ? customer.getId() : 0);
int unReadNoticeTotal = sysMessageNoticeService.getCustomerMessageCount(messageParam); // int unReadNoticeTotal = sysMessageNoticeService.getCustomerMessageCount(messageParam);
result.put("unReadNoticeTotal", unReadNoticeTotal); // result.put("unReadNoticeTotal", unReadNoticeTotal);
return AjaxResult.success(result); // return AjaxResult.success(result);
} // }
/** /**
* 微信小程序获取客户打卡记录 * 微信小程序获取客户打卡记录
@ -174,28 +177,9 @@ public class WechatAppletController extends BaseController {
*/ */
@GetMapping(value = "/getPunchLogs") @GetMapping(value = "/getPunchLogs")
public TableDataInfo getPunchLogs(SysWxUserLog sysWxUserLog) { public TableDataInfo getPunchLogs(SysWxUserLog sysWxUserLog) {
// startPage();
startPage();
List<WxLogInfo> list = sysWxUserLogService.getWxLogInfoList(sysWxUserLog); List<WxLogInfo> list = sysWxUserLogService.getWxLogInfoList(sysWxUserLog);
return getDataTable(list); return getDataTable(list);
}
/**
* 今日是否打卡
*
* @param openid
* @return
*/
@GetMapping(value = "/checkNowPunchLog/{openid}")
public AjaxResult checkNowPunchLog(@PathVariable String openid) {
SysWxUserLog sysWxUserLog = new SysWxUserLog();
sysWxUserLog.setOpenid(openid);
sysWxUserLog.setLogTime(new Date());
int count = StringUtils.isEmpty(openid) ? 0 : sysWxUserLogService.checkWxLogInfoCount(sysWxUserLog);
return AjaxResult.success(count);
} }
/** /**
@ -206,51 +190,36 @@ public class WechatAppletController extends BaseController {
*/ */
@PostMapping(value = "/addPunchLog") @PostMapping(value = "/addPunchLog")
public AjaxResult addPunchLog(@RequestBody SysWxUserLog sysWxUserLog) { public AjaxResult addPunchLog(@RequestBody SysWxUserLog sysWxUserLog) {
// 查询微信用户
// SysWxUserInfo userInfo = StringUtils.isEmpty(sysWxUserLog.getOpenid()) ? null : sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserLog.getOpenid());
// if (userInfo == null || StringUtils.isEmpty(userInfo.getPhone())) {
// return AjaxResult.error("打卡失败");
// }
if (sysWxUserLog.getId() == null) { if (sysWxUserLog.getId() == null) {
// //查询今日是否已打卡
// if (sysWxUserLog.getLogTime() == null) {
// sysWxUserLog.setLogTime(new Date());
// }
// int count = sysWxUserLogService.checkWxLogInfoCount(sysWxUserLog);
// if (count > 0) {
// return AjaxResult.error("今日已打卡,不可重复打卡");
// }
return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog)); return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog));
} else {
return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog));
} }
return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog));
} }
/** /**
* 获取微信用户记录详细信息 * 获取微信用户记录详细信息
*/ */
@GetMapping(value = "/getPunchLogDetail/{id}") // @GetMapping(value = "/getPunchLogDetail/{id}")
public AjaxResult getPunchLogDetail(@PathVariable("id") String id) { // public AjaxResult getPunchLogDetail(@PathVariable("id") String id) {
WxLogInfo sysWxUserLog = null; // WxLogInfo sysWxUserLog = null;
//根据ID查询 // //根据ID查询
SysWxUserLog param = new SysWxUserLog(); // SysWxUserLog param = new SysWxUserLog();
param.setId(Long.parseLong(id)); // param.setId(Long.parseLong(id));
sysWxUserLog = sysWxUserLogService.getWxLogInfoDetailById(param); // sysWxUserLog = sysWxUserLogService.getWxLogInfoDetailById(param);
if (sysWxUserLog == null) { // if (sysWxUserLog == null) {
return AjaxResult.error("打卡记录不存在"); // return AjaxResult.error("打卡记录不存在");
} // }
//
List<String> allUrlList = new ArrayList<>(); // List<String> allUrlList = new ArrayList<>();
allUrlList.addAll(sysWxUserLog.getBreakfastImagesUrl()); // allUrlList.addAll(sysWxUserLog.getBreakfastImagesUrl());
allUrlList.addAll(sysWxUserLog.getLunchImagesUrl()); // allUrlList.addAll(sysWxUserLog.getLunchImagesUrl());
allUrlList.addAll(sysWxUserLog.getDinnerImagesUrl()); // allUrlList.addAll(sysWxUserLog.getDinnerImagesUrl());
allUrlList.addAll(sysWxUserLog.getExtraMealImagesUrl()); // allUrlList.addAll(sysWxUserLog.getExtraMealImagesUrl());
sysWxUserLog.setAllImagesUrl(allUrlList); // sysWxUserLog.setAllImagesUrl(allUrlList);
sysWxUserLog.setAllImages(StringUtils.join(allUrlList, "|")); // sysWxUserLog.setAllImages(StringUtils.join(allUrlList, "|"));
//
return AjaxResult.success(sysWxUserLog); // return AjaxResult.success(sysWxUserLog);
} // }
/** /**
* 处理返回值的ID加密 * 处理返回值的ID加密
@ -472,7 +441,7 @@ public class WechatAppletController extends BaseController {
curWxUserInfo = sysWxUserInfo; curWxUserInfo = sysWxUserInfo;
} }
// 更新时间超过7重新登录获取最新信息 // 更新时间超过21重新登录获取最新信息
if (StringUtils.isEmpty(curWxUserInfo.getAvatarUrl()) || ChronoUnit.DAYS.between(DateUtils.dateToLocalDate(curWxUserInfo.getUpdateTime()), LocalDate.now()) >= 21) { if (StringUtils.isEmpty(curWxUserInfo.getAvatarUrl()) || ChronoUnit.DAYS.between(DateUtils.dateToLocalDate(curWxUserInfo.getUpdateTime()), LocalDate.now()) >= 21) {
return AjaxResult.error(5001, "信息缺失或者过期需要重新登录"); return AjaxResult.error(5001, "信息缺失或者过期需要重新登录");
} }
@ -746,13 +715,13 @@ public class WechatAppletController extends BaseController {
public TableDataInfo getCommunityPunch() { public TableDataInfo getCommunityPunch() {
startPage(); startPage();
List<CommunityPunchReponse> list = sysWxUserLogService.getCommunityPunch(new SysWxUserLog()); List<CommunityPunchReponse> list = sysWxUserLogService.getCommunityPunch(new SysWxUserLog());
if (list != null && list.size() > 0) { // if (list != null && list.size() > 0) {
for (CommunityPunchReponse comm : list) { // for (CommunityPunchReponse comm : list) {
comm.setId(AesUtils.encrypt(comm.getId())); // comm.setId(AesUtils.encrypt(comm.getId()));
comm.setCusId(AesUtils.encrypt(comm.getCusId())); // comm.setCusId(AesUtils.encrypt(comm.getCusId()));
comm.setThumbsupNum(comm.getThumbsupOpenid() != null ? comm.getThumbsupOpenid().size() : 0); // comm.setThumbsupNum(comm.getThumbsupOpenid() != null ? comm.getThumbsupOpenid().size() : 0);
} // }
} // }
return getDataTable(list); return getDataTable(list);
} }
@ -763,25 +732,24 @@ public class WechatAppletController extends BaseController {
*/ */
@PostMapping("/thumbsupPunch") @PostMapping("/thumbsupPunch")
public AjaxResult getCommunityPunch(@RequestBody SysPunchThumbsup sysPunchThumbsup) { public AjaxResult getCommunityPunch(@RequestBody SysPunchThumbsup sysPunchThumbsup) {
if (StringUtils.isEmpty(sysPunchThumbsup.getCusOpenid(), sysPunchThumbsup.getEncPunchId()) || sysPunchThumbsup.getThumbsupFlag() == null) { int rows = 0;
return AjaxResult.error("缺少必要参数"); if (StringUtils.isEmpty(sysPunchThumbsup.getEncId())) {
} // 点赞
sysPunchThumbsup.setPunchId(Long.parseLong(AesUtils.decrypt(sysPunchThumbsup.getEncPunchId()))); sysPunchThumbsup.setPunchId(Long.parseLong(AesUtils.decrypt(sysPunchThumbsup.getEncPunchId())));
rows = sysPunchThumbsupService.insertSysPunchThumbsup(sysPunchThumbsup);
if (rows > 0) {
Map<String, Object> resultData = new HashMap<>();
resultData.put("id", AesUtils.encrypt(String.valueOf(sysPunchThumbsup.getId())));
resultData.put("openid", sysPunchThumbsup.getCusOpenid());
resultData.put("punchId", sysPunchThumbsup.getEncPunchId());
return AjaxResult.success(resultData);
}
} else {
// 取消点赞
rows = sysPunchThumbsupService.deleteSysPunchThumbsupById(Long.parseLong(AesUtils.decrypt(sysPunchThumbsup.getEncId())));
}
SysPunchThumbsup existPunchThumbsup = sysPunchThumbsupService.getThumbsupByPunchIdAndOpenid(sysPunchThumbsup); return toAjax(rows);
if (existPunchThumbsup != null && sysPunchThumbsup.getThumbsupFlag()) {
return AjaxResult.error("已点过暂,无法重复点赞");
}
if (existPunchThumbsup == null && !sysPunchThumbsup.getThumbsupFlag()) {
return AjaxResult.error("还未未点赞,无法取消点赞");
}
int row = 0;
try {
row = sysPunchThumbsup.getThumbsupFlag() ? sysPunchThumbsupService.insertSysPunchThumbsup(sysPunchThumbsup) : sysPunchThumbsupService.deleteThumbsupByPunchIdAndOpenid(sysPunchThumbsup);
} catch (Exception e) {
e.printStackTrace();
}
return toAjax(row);
} }

View File

@ -18,6 +18,8 @@ public class SysPunchThumbsup extends BaseEntity
/** $column.columnComment */ /** $column.columnComment */
private Long id; private Long id;
private String encId;
/** 打卡记录ID */ /** 打卡记录ID */
@Excel(name = "打卡记录ID") @Excel(name = "打卡记录ID")
private Long punchId; private Long punchId;

View File

@ -22,11 +22,6 @@ public class CommunityPunchReponse {
*/ */
private String openid; private String openid;
/**
* 客户ID
*/
private String cusId;
/** /**
* 昵称 * 昵称
*/ */
@ -43,11 +38,6 @@ public class CommunityPunchReponse {
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private Date logTime; private Date logTime;
/**
* 当天打卡体重
*/
private BigDecimal weight;
/** /**
* 营养师评论 * 营养师评论
*/ */
@ -66,10 +56,10 @@ public class CommunityPunchReponse {
/** /**
* 近期打卡体重信息 logTime: 打卡日期 weight: 体重 * 近期打卡体重信息 logTime: 打卡日期 weight: 体重
*/ */
private List<Map<String,Object>> recentWeight; private List<Map<String,Object>> weightData;
/** /**
* 点赞的openid * 点赞的openid
*/ */
private List<Map<String,Object>> thumbsupOpenid; private List<Map<String,Object>> thumbsupUser;
} }

View File

@ -0,0 +1,41 @@
package com.stdiet.custom.typehandler;
import com.stdiet.common.utils.sign.AesUtils;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@MappedTypes({String.class})
@MappedJdbcTypes({JdbcType.BIGINT})
public class EncryptedIdHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String encrypedId, JdbcType jdbcType) throws SQLException {
preparedStatement.setLong(i, Long.parseLong(AesUtils.decrypt(encrypedId)));
}
@Override
public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
return this.encryptedString(resultSet.getLong(s));
}
@Override
public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
return this.encryptedString(resultSet.getLong(i));
}
@Override
public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
return this.encryptedString(callableStatement.getLong(i));
}
private String encryptedString(Long id) {
return AesUtils.encrypt(String.valueOf(id));
}
}

View File

@ -31,15 +31,15 @@
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="punchId != null">punch_id,</if> <if test="punchId != null">punch_id,</if>
<if test="cusOpenid != null">cus_openid,</if> <if test="cusOpenid != null">cus_openid,</if>
<if test="createTime != null">create_time,</if> <if test="true">create_time,</if>
<if test="updateTime != null">update_time,</if> <if test="true">update_time,</if>
<if test="delFlag != null">del_flag,</if> <if test="delFlag != null">del_flag,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="punchId != null">#{punchId},</if> <if test="punchId != null">#{punchId},</if>
<if test="cusOpenid != null">#{cusOpenid},</if> <if test="cusOpenid != null">#{cusOpenid},</if>
<if test="createTime != null">#{createTime},</if> <if test="true">now(),</if>
<if test="updateTime != null">#{updateTime},</if> <if test="true">now(),</if>
<if test="delFlag != null">#{delFlag},</if> <if test="delFlag != null">#{delFlag},</if>
</trim> </trim>
</insert> </insert>

View File

@ -334,42 +334,56 @@
<resultMap id="punchReponseMap" type="com.stdiet.custom.dto.response.CommunityPunchReponse"> <resultMap id="punchReponseMap" type="com.stdiet.custom.dto.response.CommunityPunchReponse">
<result property="id" column="id"/> <result property="id" column="id" typeHandler="com.stdiet.custom.typehandler.EncryptedIdHandler"/>
<result property="openid" column="openid"/> <result property="openid" column="openid"/>
<result property="cusId" column="cus_id"/>
<result property="nickName" column="nick_name"/> <result property="nickName" column="nick_name"/>
<result property="avatarUrl" column="avatar_url"/> <result property="avatarUrl" column="avatar_url"/>
<result property="logTime" column="log_time"/> <result property="logTime" column="log_time"/>
<result property="weight" column="weight"/> <result property="weight" column="weight"/>
<result property="comment" column="comment"/> <result property="comment" column="comment"/>
<result property="thumbsupNum" column="thumbsup_num"/>
<result property="healthManifesto" column="health_manifesto"/> <result property="healthManifesto" column="health_manifesto"/>
<association property="thumbsupNum" column="id" select="getPunchThumbsupCount"/>
<!-- 查询最近五天体重 --> <!-- 查询最近五天体重 -->
<association property="recentWeight" column="{cusId=cus_id,logTime=log_time}" select="getRecentWeight"/> <association property="weightData" column="{id=openid}" select="getRecentWeight"/>
<!-- 查询点赞的openid --> <!-- 查询点赞的openid -->
<association property="thumbsupOpenid" column="id" select="getPunchThumbsupList"/> <association property="thumbsupUser" column="id" select="getPunchThumbsupList"/>
</resultMap> </resultMap>
<!-- 查询打卡社区内容 --> <!-- 查询打卡社区内容 -->
<select id="getCommunityPunch" resultMap="punchReponseMap" parameterType="SysWxUserLog"> <select id="getCommunityPunch" resultMap="punchReponseMap" parameterType="SysWxUserLog">
select wxlog.id,wxinfo.openid,wxinfo.cus_id,wxinfo.nick_name,wxinfo.avatar_url,wxlog.log_time,wxlog.weight,wxlog.comment,wxlog.thumbsup_num,wxlog.health_manifesto from sys_wx_user_log wxlog SELECT * FROM
left join sys_wx_user_info wxinfo on wxinfo.openid = wxlog.openid (SELECT id, openid, `comment`, health_manifesto, log_time FROM sys_wx_user_log WHERE TO_DAYS(log_time) = TO_DAYS(NOW()) AND del_flag = 0) AS wxlog
where wxlog.del_flag = 0 LEFT JOIN (SELECT openid, nick_name, avatar_url FROM sys_wx_user_info) AS wxinfo
order by wxlog.log_time desc USING(openid)
ORDER BY log_time DESC
</select> </select>
<!-- 查询打卡社区中点赞的openid --> <!-- 查询打卡社区中点赞的openid -->
<select id="getPunchThumbsupList" parameterType="Long" resultType="Map"> <!-- <select id="getPunchThumbsupList" parameterType="Long" resultType="Map">-->
select cus_openid as openid from sys_punch_thumbsup <!-- select * from-->
where punch_id = #{id} and del_flag = 0 <!-- (select id, cus_openid as openid, DATE_FORMAT(create_time,'%Y-%m-%d %H:%i') as `time` from sys_punch_thumbsup where punch_id = #{id} and del_flag = 0 order by create_time asc) as tu-->
<!-- left join (SELECT openid, nick_name as nickName, avatar_url as avatarUrl FROM sys_wx_user_info) AS wxinfo-->
<!-- using(openid)-->
<!-- </select>-->
<resultMap id="thumbupUserResultMap" type="Map">
<result property="id" column="id" typeHandler="com.stdiet.custom.typehandler.EncryptedIdHandler"/>
<result property="openid" column="cus_openid"/>
</resultMap>
<select id="getPunchThumbsupList" parameterType="Long" resultMap="thumbupUserResultMap">
select id, cus_openid from sys_punch_thumbsup where punch_id = #{id} and del_flag = 0
</select> </select>
<!-- 查询最近一周的打卡体重 --> <select id="getPunchThumbsupCount" parameterType="Long" resultType="Integer">
select count(*) from sys_punch_thumbsup where punch_id = #{id} and del_flag = 0
</select>
<!-- 查询所有打卡体重 -->
<select id="getRecentWeight" resultType="Map"> <select id="getRecentWeight" resultType="Map">
select DATE_FORMAT(wxlog.log_time,'%Y-%m-%d') as logTime,wxlog.weight as weight from sys_wx_user_log wxlog select DATE_FORMAT(log_time,'%Y-%m-%d') as name, weight as `value` from sys_wx_user_log
left join sys_wx_user_info wxinfo on wxinfo.openid = wxlog.openid where del_flag = 0 and openid = #{id}
where wxlog.del_flag = 0 and wxinfo.cus_id = #{cusId} and #{logTime} >= wxlog.log_time order by log_time desc
order by wxlog.log_time desc limit 7
</select> </select>
<!-- 根据客户ID查询总共打卡次数 --> <!-- 根据客户ID查询总共打卡次数 -->