Merge remote-tracking branch 'origin/feature-20240104' into feature-20240104

master
elliott 2 years ago
commit 8ef1d5daae

@ -9,7 +9,8 @@ public enum MessageTypeEnum {
USER_REGISTRATION(1, "用户注册"),
SUBMIT_MESSAGE(2, "提交留言"),
BINDING_INSTRUMENTS(3, "绑定仪器");
BINDING_INSTRUMENTS(3, "绑定仪器"),
COMPLETE_USER_INFORMATION(4, "完善用户信息");
private final Integer code;
private final String info;

@ -3,7 +3,7 @@ package com.flossom.common.core.enums;
/**
* wx_user_script_log
* <p>
* 01234567
* 0123456789
*/
public enum WxUserIntegralMessageTypeEnum {
@ -15,7 +15,8 @@ public enum WxUserIntegralMessageTypeEnum {
QUESTIONNAIRE_ACTIVITY(5, "问卷活动"),
MEMBER_MANAGEMENT(6, "会员管理"),
MESSAGE_TEMPLATE(7, "消息模板"),
LEAVE_MESSAGE(8, "留言");
LEAVE_MESSAGE(8, "留言"),
COMPLETE_USER_INFORMATION(9, "完善用户信息");
private final Integer code;
private final String info;

@ -117,5 +117,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.endTime != null and params.endTime != ''">
and create_time &lt;= #{params.endTime}
</if>
order by create_time desc
</select>
</mapper>

@ -2,12 +2,14 @@ package com.flossom.miniProgram.service.impl;
import com.flossom.common.core.domain.entity.CtLeaveMessage;
import com.flossom.common.core.domain.entity.WxScriptMessage;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.entity.WxUserScriptLog;
import com.flossom.common.core.enums.CtLeaveMessageEnum;
import com.flossom.common.core.enums.MessageTypeEnum;
import com.flossom.common.core.enums.WxUserIntegralMessageTypeEnum;
import com.flossom.common.core.mapper.CtLeaveMessageMapper;
import com.flossom.common.core.mapper.WxScriptMessageMapper;
import com.flossom.common.core.mapper.WxUserMemberMapper;
import com.flossom.common.core.mapper.WxUserScriptLogMapper;
import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.security.utils.SecurityUtils;
@ -30,6 +32,9 @@ public class CtleaveMessageServiceImpl implements ICtleaveMeassageService {
@Autowired
private WxUserScriptLogMapper wxUserScriptLogMapper;
@Autowired
private WxUserMemberMapper wxUserMemberMapper;
@Transactional
@Override
public int saveCtleaveMeassage(CtLeaveMessage ctLeaveMessage) {
@ -56,10 +61,14 @@ public class CtleaveMessageServiceImpl implements ICtleaveMeassageService {
CtLeaveMessageEnum ctLeaveMessageEnum = CtLeaveMessageEnum.fromString(ctLeaveMessage.getSource());
ctLeaveMessage.setSourceName(ctLeaveMessageEnum.getRemark());
ctLeaveMessage.setCreateTime(new Date());
ctLeaveMessage.setUserId(SecurityUtils.getLoginUser().getWxUserMember().getId());
ctLeaveMessage.setUserImg(SecurityUtils.getLoginUser().getWxUserMember().getHeadimg());
ctLeaveMessage.setUserName(SecurityUtils.getLoginUser().getWxUserMember().getNickname());
ctLeaveMessage.setUserPhone(SecurityUtils.getLoginUser().getWxUserMember().getMobile());
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(SecurityUtils.getLoginUser().getWxUserMember().getId());
if (wxUserMember != null) {
ctLeaveMessage.setUserId(wxUserMember.getId());
ctLeaveMessage.setUserNumber(wxUserMember.getId().intValue());
ctLeaveMessage.setUserImg(wxUserMember.getHeadimg());
ctLeaveMessage.setUserName(wxUserMember.getNickname());
ctLeaveMessage.setUserPhone(wxUserMember.getMobile());
}
return ctLeaveMessageMapper.insertCtLeaveMessage(ctLeaveMessage);
}
}

@ -80,6 +80,8 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
// 未注册用户,就注册游客账户
// 2.1、封装微信用户信息
wxUserMember = new WxUserMember();
// 即将过期积分默认为0
wxUserMember.setExpireCredit(0);
wxUserMember.setOpenid(wxCode2SessionRet.getOpenid());
wxUserMember.setUnionid(wxCode2SessionRet.getUnionid());
wxUserMember.setLoginTime(DateUtils.getNowDate());
@ -206,6 +208,24 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
wxUserIntegralLog.setRemarkContent("首次完善用户信息");
wxUserIntegralLogMapper.insertWxUserIntegralLog(wxUserIntegralLog);
// 2.4、用户注册成功发送消息
WxScriptMessage wxScriptMessage = wxScriptMessageMapper.selectOneByMessageType(MessageTypeEnum.COMPLETE_USER_INFORMATION.getCode());
if (wxScriptMessage != null) {
WxUserScriptLog wxUserScriptLog = new WxUserScriptLog();
BeanUtils.copyProperties(wxScriptMessage, wxUserScriptLog);
wxUserScriptLog.setId(null);
wxUserScriptLog.setWxUserId(SecurityUtils.getLoginUser().getWxUserMember().getId());
wxUserScriptLog.setMessageType(WxUserIntegralMessageTypeEnum.COMPLETE_USER_INFORMATION.getCode());
wxUserScriptLog.setIsCustom(0);
wxUserScriptLog.setTitile(wxScriptMessage.getMessageTitle());
wxUserScriptLog.setContent(wxScriptMessage.getMessageContent());
wxUserScriptLog.setCreateTime(DateUtils.getNowDate());
wxUserScriptLog.setCreateBy(null);
wxUserScriptLog.setUpdateTime(null);
wxUserScriptLog.setUpdateBy(null);
wxUserScriptLogMapper.insertWxUserScriptLog(wxUserScriptLog);
}
// TODO 首次完善,增加加分 (对接数云未完成)
}
BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember);
@ -228,7 +248,10 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public LoginUserVo refreshWxUserInfo() {
String openid = SecurityUtils.getLoginUser().getWxUserMember().getOpenid();
LoginUser loginUser = SecurityUtils.getLoginUser();
// 响应最新数据
String openid = loginUser.getWxUserMember().getOpenid();
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberByOpenId(openid);
if (wxUserMember == null) {
logger.error("刷新用户信息失败");
@ -238,6 +261,11 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
BeanUtils.copyProperties(wxUserMember, loginUserVo);
loginUserVo.setToken(null);
loginUserVo.setIntegralText(null);
// 刷新缓存信息
String userKey = CacheConstants.LOGIN_TOKEN_KEY + loginUser.getToken();
loginUser.setWxUserMember(wxUserMember);
redisService.setCacheObject(userKey, loginUser, CacheConstants.EXPIRATION, TimeUnit.MINUTES);
return loginUserVo;
}

@ -50,14 +50,14 @@ public class CtLeaveMessageController extends BaseController
startPage();
// List<CtLeaveMessage> list = ctLeaveMessageService.selectCtLeaveMessageList(ctLeaveMessage);
List<CtLeaveMessage> list = ctLeaveMessageService.selectCtLeaveMessageByCondition(ctLeaveMessage);
for (CtLeaveMessage leaveMessage: list) {
System.out.println("获取到用户id="+leaveMessage.getUserId());
if (Objects.nonNull(leaveMessage.getUserId())) {
WxUserMember userMember = wxUserMemberService.selectWxUserMemberByIdInit(leaveMessage.getUserId());
System.out.println("获取到用户="+userMember);
leaveMessage.setWxUserMember(userMember);
}
}
// for (CtLeaveMessage leaveMessage: list) {
// System.out.println("获取到用户id="+leaveMessage.getUserId());
// if (Objects.nonNull(leaveMessage.getUserId())) {
// WxUserMember userMember = wxUserMemberService.selectWxUserMemberByIdInit(leaveMessage.getUserId());
// System.out.println("获取到用户="+userMember);
// leaveMessage.setWxUserMember(userMember);
// }
// }
return getDataTable(list);
}

@ -84,21 +84,23 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="来源" align="center" prop="sourceName" />
<el-table-column label="用户头像" align="center" prop="wxUserMember.headimg" >
<el-table-column label="用户头像" align="center" prop="headimg" >
<template slot-scope="scope">
<el-image :src="scope.row.userImg" style="width: 60px;height: 80px" :preview-src-list="[scope.row.userImg]">
<el-image v-show="scope.row.userImg != null" :src="scope.row.userImg"
style="width: 60px;height: 80px" :preview-src-list="[scope.row.userImg]">
<div slot="placeholder" class="image-slot"><span class="dot"></span>
</div>
</el-image>
</template>
</el-table-column>
<el-table-column label="用户昵称" align="center" prop="wxUserMember.nickname" />
<el-table-column label="用户编号" align="center" prop="wxUserMember.id" />
<el-table-column label="用户手机号码" align="center" prop="wxUserMember.mobile" />
<el-table-column label="用户昵称" align="center" prop="userName" />
<el-table-column label="用户编号" align="center" prop="userNumber" />
<el-table-column label="用户手机号码" align="center" prop="userPhone" />
<el-table-column label="用户留言" align="center" prop="messageInfo" />
<el-table-column label="提交时间" align="center" prop="createTime" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime,'{y}-{m}-{d} {h}:{i}') }}</span>
<span>{{ parseTime(scope.row.createTime,'{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -139,7 +141,7 @@
<el-input v-model="form.sourceName" disabled />
</el-form-item>
<el-form-item label="用户头像" prop="userImg">
<el-image :src="form.userImg" style="width: 150px;height: 150px"></el-image>
<el-image v-show="form.userImg != null" :src="form.userImg" style="width: 150px;height: 150px"></el-image>
</el-form-item>
<el-form-item label="用户昵称" prop="userName">

@ -606,6 +606,8 @@
<span v-show="scope.row.messageType == 5"></span>
<span v-show="scope.row.messageType == 6"></span>
<span v-show="scope.row.messageType == 7"></span>
<span v-show="scope.row.messageType == 8"></span>
<span v-show="scope.row.messageType == 9"></span>
</template>
</el-table-column>
<el-table-column prop="titile" label="标题" width="200"></el-table-column>

@ -133,6 +133,7 @@
<span v-show="scope.row.messageType == 1"></span>
<span v-show="scope.row.messageType == 2"></span>
<span v-show="scope.row.messageType == 3"></span>
<span v-show="scope.row.messageType == 4"></span>
</template>
</el-table-column>
<el-table-column label="消息标题" align="center" prop="messageTitle" />
@ -207,6 +208,7 @@
<el-option label="用户注册" :value="1" :key="1"></el-option>
<el-option label="提交留言" :value="2" :key="2"></el-option>
<el-option label="仪器绑定" :value="3" :key="3"></el-option>
<el-option label="完善用户信息" :value="4" :key="4"></el-option>
</el-select>
</el-form-item>
</el-col>

@ -529,7 +529,7 @@ export default {
{ required: true, message: "跳转参数不能为空", trigger: "blur" }
],
redirectUrl: [
{ required: true, message: "页面链接不能为空", trigger: "blur" }
{ required: true, message: "小程序页面不能为空", trigger: "blur" }
],
videoNo: [
{ required: true, message: "视频号ID不能为空", trigger: "blur" }

Loading…
Cancel
Save