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, "用户注册"), USER_REGISTRATION(1, "用户注册"),
SUBMIT_MESSAGE(2, "提交留言"), SUBMIT_MESSAGE(2, "提交留言"),
BINDING_INSTRUMENTS(3, "绑定仪器"); BINDING_INSTRUMENTS(3, "绑定仪器"),
COMPLETE_USER_INFORMATION(4, "完善用户信息");
private final Integer code; private final Integer code;
private final String info; private final String info;

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

@ -117,5 +117,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.endTime != null and params.endTime != ''"> <if test="params.endTime != null and params.endTime != ''">
and create_time &lt;= #{params.endTime} and create_time &lt;= #{params.endTime}
</if> </if>
order by create_time desc
</select> </select>
</mapper> </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.CtLeaveMessage;
import com.flossom.common.core.domain.entity.WxScriptMessage; 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.domain.entity.WxUserScriptLog;
import com.flossom.common.core.enums.CtLeaveMessageEnum; import com.flossom.common.core.enums.CtLeaveMessageEnum;
import com.flossom.common.core.enums.MessageTypeEnum; import com.flossom.common.core.enums.MessageTypeEnum;
import com.flossom.common.core.enums.WxUserIntegralMessageTypeEnum; import com.flossom.common.core.enums.WxUserIntegralMessageTypeEnum;
import com.flossom.common.core.mapper.CtLeaveMessageMapper; import com.flossom.common.core.mapper.CtLeaveMessageMapper;
import com.flossom.common.core.mapper.WxScriptMessageMapper; 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.mapper.WxUserScriptLogMapper;
import com.flossom.common.core.utils.DateUtils; import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.security.utils.SecurityUtils; import com.flossom.common.security.utils.SecurityUtils;
@ -30,6 +32,9 @@ public class CtleaveMessageServiceImpl implements ICtleaveMeassageService {
@Autowired @Autowired
private WxUserScriptLogMapper wxUserScriptLogMapper; private WxUserScriptLogMapper wxUserScriptLogMapper;
@Autowired
private WxUserMemberMapper wxUserMemberMapper;
@Transactional @Transactional
@Override @Override
public int saveCtleaveMeassage(CtLeaveMessage ctLeaveMessage) { public int saveCtleaveMeassage(CtLeaveMessage ctLeaveMessage) {
@ -56,10 +61,14 @@ public class CtleaveMessageServiceImpl implements ICtleaveMeassageService {
CtLeaveMessageEnum ctLeaveMessageEnum = CtLeaveMessageEnum.fromString(ctLeaveMessage.getSource()); CtLeaveMessageEnum ctLeaveMessageEnum = CtLeaveMessageEnum.fromString(ctLeaveMessage.getSource());
ctLeaveMessage.setSourceName(ctLeaveMessageEnum.getRemark()); ctLeaveMessage.setSourceName(ctLeaveMessageEnum.getRemark());
ctLeaveMessage.setCreateTime(new Date()); ctLeaveMessage.setCreateTime(new Date());
ctLeaveMessage.setUserId(SecurityUtils.getLoginUser().getWxUserMember().getId()); WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(SecurityUtils.getLoginUser().getWxUserMember().getId());
ctLeaveMessage.setUserImg(SecurityUtils.getLoginUser().getWxUserMember().getHeadimg()); if (wxUserMember != null) {
ctLeaveMessage.setUserName(SecurityUtils.getLoginUser().getWxUserMember().getNickname()); ctLeaveMessage.setUserId(wxUserMember.getId());
ctLeaveMessage.setUserPhone(SecurityUtils.getLoginUser().getWxUserMember().getMobile()); ctLeaveMessage.setUserNumber(wxUserMember.getId().intValue());
ctLeaveMessage.setUserImg(wxUserMember.getHeadimg());
ctLeaveMessage.setUserName(wxUserMember.getNickname());
ctLeaveMessage.setUserPhone(wxUserMember.getMobile());
}
return ctLeaveMessageMapper.insertCtLeaveMessage(ctLeaveMessage); return ctLeaveMessageMapper.insertCtLeaveMessage(ctLeaveMessage);
} }
} }

@ -80,6 +80,8 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
// 未注册用户,就注册游客账户 // 未注册用户,就注册游客账户
// 2.1、封装微信用户信息 // 2.1、封装微信用户信息
wxUserMember = new WxUserMember(); wxUserMember = new WxUserMember();
// 即将过期积分默认为0
wxUserMember.setExpireCredit(0);
wxUserMember.setOpenid(wxCode2SessionRet.getOpenid()); wxUserMember.setOpenid(wxCode2SessionRet.getOpenid());
wxUserMember.setUnionid(wxCode2SessionRet.getUnionid()); wxUserMember.setUnionid(wxCode2SessionRet.getUnionid());
wxUserMember.setLoginTime(DateUtils.getNowDate()); wxUserMember.setLoginTime(DateUtils.getNowDate());
@ -206,6 +208,24 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
wxUserIntegralLog.setRemarkContent("首次完善用户信息"); wxUserIntegralLog.setRemarkContent("首次完善用户信息");
wxUserIntegralLogMapper.insertWxUserIntegralLog(wxUserIntegralLog); 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 首次完善,增加加分 (对接数云未完成) // TODO 首次完善,增加加分 (对接数云未完成)
} }
BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember); BeanUtils.copyProperties(userMemberUpdateVo, wxUserMember);
@ -228,7 +248,10 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
@Override @Override
@Transactional(propagation = Propagation.SUPPORTS) @Transactional(propagation = Propagation.SUPPORTS)
public LoginUserVo refreshWxUserInfo() { public LoginUserVo refreshWxUserInfo() {
String openid = SecurityUtils.getLoginUser().getWxUserMember().getOpenid(); LoginUser loginUser = SecurityUtils.getLoginUser();
// 响应最新数据
String openid = loginUser.getWxUserMember().getOpenid();
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberByOpenId(openid); WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberByOpenId(openid);
if (wxUserMember == null) { if (wxUserMember == null) {
logger.error("刷新用户信息失败"); logger.error("刷新用户信息失败");
@ -238,6 +261,11 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
BeanUtils.copyProperties(wxUserMember, loginUserVo); BeanUtils.copyProperties(wxUserMember, loginUserVo);
loginUserVo.setToken(null); loginUserVo.setToken(null);
loginUserVo.setIntegralText(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; return loginUserVo;
} }

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

@ -84,21 +84,23 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" /> <el-table-column label="序号" align="center" prop="id" />
<el-table-column label="来源" align="center" prop="sourceName" /> <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"> <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 slot="placeholder" class="image-slot"><span class="dot"></span>
</div> </div>
</el-image> </el-image>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户昵称" align="center" prop="wxUserMember.nickname" /> <el-table-column label="用户昵称" align="center" prop="userName" />
<el-table-column label="用户编号" align="center" prop="wxUserMember.id" /> <el-table-column label="用户编号" align="center" prop="userNumber" />
<el-table-column label="用户手机号码" align="center" prop="wxUserMember.mobile" /> <el-table-column label="用户手机号码" align="center" prop="userPhone" />
<el-table-column label="用户留言" align="center" prop="messageInfo" /> <el-table-column label="用户留言" align="center" prop="messageInfo" />
<el-table-column label="提交时间" align="center" prop="createTime" width="160"> <el-table-column label="提交时间" align="center" prop="createTime" width="160">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -139,7 +141,7 @@
<el-input v-model="form.sourceName" disabled /> <el-input v-model="form.sourceName" disabled />
</el-form-item> </el-form-item>
<el-form-item label="用户头像" prop="userImg"> <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>
<el-form-item label="用户昵称" prop="userName"> <el-form-item label="用户昵称" prop="userName">

@ -606,6 +606,8 @@
<span v-show="scope.row.messageType == 5"></span> <span v-show="scope.row.messageType == 5"></span>
<span v-show="scope.row.messageType == 6"></span> <span v-show="scope.row.messageType == 6"></span>
<span v-show="scope.row.messageType == 7"></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> </template>
</el-table-column> </el-table-column>
<el-table-column prop="titile" label="标题" width="200"></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 == 1"></span>
<span v-show="scope.row.messageType == 2"></span> <span v-show="scope.row.messageType == 2"></span>
<span v-show="scope.row.messageType == 3"></span> <span v-show="scope.row.messageType == 3"></span>
<span v-show="scope.row.messageType == 4"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="消息标题" align="center" prop="messageTitle" /> <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="1" :key="1"></el-option>
<el-option label="提交留言" :value="2" :key="2"></el-option> <el-option label="提交留言" :value="2" :key="2"></el-option>
<el-option label="仪器绑定" :value="3" :key="3"></el-option> <el-option label="仪器绑定" :value="3" :key="3"></el-option>
<el-option label="完善用户信息" :value="4" :key="4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>

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

Loading…
Cancel
Save