Commit 95c922df by 桂前礼

feat: [1003566] 书刊详情页面底部企业微信客服及配置

parent 5977c3c6
......@@ -21,6 +21,7 @@ import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.ParamChecker;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.wechat.material.dto.GroupNewsMaterialAddDTO;
import com.pcloud.facade.wechat.material.dto.NewsMaterialTemplateDto;
import com.pcloud.facade.wechat.material.service.MaterialService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -29,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
......@@ -48,7 +50,7 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz {
/**
* 客服老师素材代码模板
*/
public static final String WEWORK_TEACHER_MATERIAL_HTML = "<div style='margin:10px 0;box-sizing: border-box;'><div style='margin:55px auto 32px;width: 275px;height: 255px;'><div style='width: 275px;height: 255px;background-color: #ffffff;border-radius: 6px;border: solid 1px #66c84f'><div style='margin-top:-16px;margin-left:53px;width: 168px;height: 32px;line-height: 32px;text-align: center; font-size: 14px;color: #ffffff; background-color: #66c84f;border-radius: 6px;'>长按识别下面二维码</div><div style='height: 23px;display: block;text-align: center;margin: 10px auto;letter-spacing: 6px;'>\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47</div><div style='width: 172px;height:172px;display: block;margin: 0 auto;'><img class='qrcode'src='${qrcodeUrl}'alt=''></div></div></div></div>";
public static final String WEWORK_TEACHER_MATERIAL_HTML = "<div style='margin:10px 0;box-sizing: border-box;'><header style='display: flex;padding:0 20px;'><img style='width: 60px;height: 60px;' src='${avatar}' alt=''><div style='margin-left:10px;flex: 1;height: 60px;display:flex;flex-direction: column;justify-content: space-around;align-items: flex-start;'><div style='color:#000;font-size: 16px;font-weight: bold;'> ${title}</div><div style='color: #666666;font-size: 14px;font-weight: normal;'>${desc}</div></div></header><div style='margin:55px auto 32px;width: 275px;height: 255px;'><div style='width: 275px;height: 255px;background-color: #ffffff;border-radius: 6px;border: solid 1px #66c84f'><div style='margin-top:-16px;margin-left:53px;width: 168px;height: 32px;line-height: 32px;text-align: center; font-size: 14px;color: #ffffff; background-color: #66c84f;border-radius: 6px;'>长按识别下面二维码</div><div style='height: 23px;display: block;text-align: center;margin: 10px auto;letter-spacing: 6px;'> \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47</div><div style='width: 172px;height:172px;display: block;margin: 0 auto;'><img class='qrcode' src='${qrcodeUrl}' alt=''></div></div></div></div>";
@Autowired
......@@ -75,14 +77,17 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz {
String materialUrl;
try {
account = groupMaterialAccountBiz.getActiveAccount(UseTypeEnum.THIRD_GROUP.value);
GroupNewsMaterialAddDTO materialAddDTO = new GroupNewsMaterialAddDTO();
materialAddDTO.setAccountId(account.getAccountId());
materialAddDTO.setGroupName(weworkTeacher.getTitle());
materialAddDTO.setQrcodeUrl(weworkTeacher.getQrcode());
materialAddDTO.setGroupHeadImg(account.getHeadMediaId());
materialAddDTO.setCoverMediaId(account.getCoverMediaId());
materialAddDTO.setHtml(WEWORK_TEACHER_MATERIAL_HTML);
mediaId = ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterial(materialAddDTO), String.class);
NewsMaterialTemplateDto dto = new NewsMaterialTemplateDto();
Map<String, String> placeholderMap = new HashMap<>();
placeholderMap.put("${avatar}",weworkTeacherVO.getAvatar());
placeholderMap.put("${qrcodeUrl}",weworkTeacherVO.getQrcode());
dto.setHtmlTemplate(WEWORK_TEACHER_MATERIAL_HTML.replace("${title}",weworkTeacherVO.getNickname()).replace("${desc}",weworkTeacherVO.getDesc()));
dto.setAccountId(account.getAccountId());
dto.setTitle(weworkTeacherVO.getTitle());
dto.setCoverMediaId(account.getCoverMediaId());
dto.setPlaceholders(placeholderMap);
dto.setDigest(weworkTeacherVO.getTitle());
mediaId = ResponseHandleUtil.parseResponse(materialService.createNewsMaterial4Template(dto), String.class);
materialUrl = ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterialByMediaId(mediaId), String.class);
} catch (Exception e) {
log.info("[WeworkTeacherBizImpl.addWxworkTeacher] 新增客服老师,创建素材失败!", e);
......@@ -119,15 +124,18 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz {
GroupMaterialAccount account = null;
try {
account = groupMaterialAccountBiz.getByAccountId(weworkTeacher.getAccountId());
GroupNewsMaterialAddDTO materialAddDTO = new GroupNewsMaterialAddDTO();
materialAddDTO.setMediaId(weworkTeacher.getMediaId());
materialAddDTO.setAccountId(account.getAccountId());
materialAddDTO.setGroupName(weworkTeacher.getTitle());
materialAddDTO.setQrcodeUrl(weworkTeacher.getQrcode());
materialAddDTO.setGroupHeadImg(account.getHeadMediaId());
materialAddDTO.setCoverMediaId(account.getCoverMediaId());
materialAddDTO.setHtml(WEWORK_TEACHER_MATERIAL_HTML);
ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterial(materialAddDTO), String.class);
NewsMaterialTemplateDto dto = new NewsMaterialTemplateDto();
Map<String, String> placeholderMap = new HashMap<>();
placeholderMap.put("${avatar}",weworkTeacherVO.getAvatar());
placeholderMap.put("${qrcodeUrl}",weworkTeacherVO.getQrcode());
dto.setHtmlTemplate(WEWORK_TEACHER_MATERIAL_HTML.replace("${title}",weworkTeacherVO.getNickname()).replace("${desc}",weworkTeacherVO.getDesc()));
dto.setAccountId(account.getAccountId());
dto.setTitle(weworkTeacherVO.getTitle());
dto.setCoverMediaId(account.getCoverMediaId());
dto.setPlaceholders(placeholderMap);
dto.setDigest(weworkTeacherVO.getTitle());
dto.setMediaId(weworkTeacher.getMediaId());
materialService.createNewsMaterial4Template(dto);
} catch (Exception e) {
log.info("[WeworkTeacherBizImpl.updateWxworkTeacher] 更新客服老师,更新素材失败! weworkTeacherVO:{} account:{}", weworkTeacherVO, account);
throw new BookBizException(BookBizException.ID_NOT_EXIST, "更新客服老师,更新素材失败!");
......
......@@ -33,6 +33,24 @@ public class WeworkTeacher implements Serializable {
private String realName;
/**
* 昵称
*/
@ApiModelProperty("昵称")
private String nickname;
/**
* 头像地址
*/
@ApiModelProperty("头像地址")
private String avatar;
/**
* 描述
*/
@ApiModelProperty("描述")
private String desc;
/**
* 图文素材标题名称
*/
@ApiModelProperty("图文素材标题名称")
......
......@@ -48,10 +48,22 @@ public class WeworkTeacherVO implements Serializable {
private String title;
/**
* 客服类型:1:苏老师 2:张哥哥
* 昵称
*/
@ApiModelProperty("客服类型:1:苏老师 2:张哥哥")
private Integer teacherType;
@ApiModelProperty("昵称")
private String nickname;
/**
* 头像地址
*/
@ApiModelProperty("头像地址")
private String avatar;
/**
* 描述
*/
@ApiModelProperty("描述")
private String desc;
/**
* 开关状态
......@@ -86,7 +98,6 @@ public class WeworkTeacherVO implements Serializable {
ParamChecker.checkStringIsEmpty(this.qrcode, "企业微信二维码不能为空!");
ParamChecker.checkStringIsEmpty(this.realName, "真实姓名不能为空!");
ParamChecker.checkStringIsEmpty(this.title, "Title 不能为空!");
ParamChecker.checkNumberIsNull(this.teacherType, "客服老师类型不能为空!");
}
public void checkParam4Update() {
......@@ -111,6 +122,15 @@ public class WeworkTeacherVO implements Serializable {
if (this.title != null && !StrUtil.equals(this.title, weworkTeacher.getTitle())) {
return true;
}
if (this.avatar != null && !StrUtil.equals(this.avatar, weworkTeacher.getAvatar())) {
return true;
}
if (this.desc != null && !StrUtil.equals(this.desc, weworkTeacher.getDesc())) {
return true;
}
return false;
}
}
......@@ -5,6 +5,9 @@
<id column="id" jdbcType="BIGINT" property="id" />
<result column="qrcode" jdbcType="VARCHAR" property="qrcode" />
<result column="real_name" jdbcType="VARCHAR" property="realName" />
<result column="nickname" jdbcType="VARCHAR" property="nickname" />
<result column="avatar" jdbcType="VARCHAR" property="avatar" />
<result column="desc" jdbcType="VARCHAR" property="desc" />
<result column="title" jdbcType="VARCHAR" property="title" />
<result column="teacher_type" jdbcType="INTEGER" property="teacherType" />
<result column="is_open" jdbcType="INTEGER" property="isOpen" />
......@@ -15,7 +18,7 @@
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
id, qrcode, real_name, title, teacher_type, is_open, material_url, media_id, account_id, create_time,
id, qrcode, real_name, nickname, avatar, `desc`, title, teacher_type, is_open, material_url, media_id, account_id, create_time,
update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
......@@ -29,11 +32,11 @@
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.WeworkTeacher" useGeneratedKeys="true">
insert into wework_teacher (qrcode, real_name, title,
insert into wework_teacher (qrcode, real_name, nickname, avatar, `desc`, title,
teacher_type, is_open, material_url, media_id,
account_id, create_time, update_time
)
values (#{qrcode,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
values (#{qrcode,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR}, #{nickname,jdbcType=VARCHAR}, #{avatar,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
#{teacherType,jdbcType=INTEGER}, #{isOpen,jdbcType=INTEGER}, #{materialUrl,jdbcType=VARCHAR}, #{mediaId,jdbcType=VARCHAR},
#{accountId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}
)
......@@ -47,6 +50,15 @@
<if test="realName != null">
real_name,
</if>
<if test="nickname != null">
nickname,
</if>
<if test="avatar != null">
avatar,
</if>
<if test="desc != null">
`desc`,
</if>
<if test="title != null">
title,
</if>
......@@ -79,6 +91,15 @@
<if test="realName != null">
#{realName,jdbcType=VARCHAR},
</if>
<if test="nickname != null">
#{nickname,jdbcType=VARCHAR},
</if>
<if test="avatar != null">
#{avatar,jdbcType=VARCHAR},
</if>
<if test="desc != null">
#{desc,jdbcType=VARCHAR},
</if>
<if test="title != null">
#{title,jdbcType=VARCHAR},
</if>
......@@ -114,6 +135,15 @@
<if test="realName != null">
real_name = #{realName,jdbcType=VARCHAR},
</if>
<if test="nickname != null">
nickname = #{nickname,jdbcType=VARCHAR},
</if>
<if test="avatar != null">
avatar = #{avatar,jdbcType=VARCHAR},
</if>
<if test="desc != null">
`desc` = #{desc,jdbcType=VARCHAR},
</if>
<if test="title != null">
title = #{title,jdbcType=VARCHAR},
</if>
......@@ -145,6 +175,9 @@
update wework_teacher
set qrcode = #{qrcode,jdbcType=VARCHAR},
real_name = #{realName,jdbcType=VARCHAR},
nickname = #{nickname,jdbcType=VARCHAR},
avatar = #{avatar,jdbcType=VARCHAR},
`desc` = #{desc,jdbcType=VARCHAR},
title = #{title,jdbcType=VARCHAR},
teacher_type = #{teacherType,jdbcType=INTEGER},
is_open = #{isOpen,jdbcType=INTEGER},
......@@ -161,7 +194,7 @@
from wework_teacher
<where>
<if test="name != null">
real_name like concat('%', #{name}, '%')
( real_name like concat('%', #{name}, '%') OR nickname like concat('%', #{name}, '%') OR `desc` like concat('%', #{name}, '%') )
</if>
<if test="isOpen != null">
and is_open = #{isOpen}
......@@ -177,6 +210,9 @@
id AS id,
qrcode AS qrcode,
real_name AS realName,
nickname,
avatar,
`desc`,
title AS title,
teacher_type AS teacherType,
is_open AS isOpen,
......@@ -186,7 +222,7 @@
from wework_teacher
<where>
<if test="name != null">
real_name like concat('%', #{name}, '%')
( real_name like concat('%', #{name}, '%') OR nickname like concat('%', #{name}, '%') OR `desc` like concat('%', #{name}, '%') )
</if>
<if test="isOpen != null">
and is_open = #{isOpen}
......@@ -201,6 +237,9 @@
select
id AS id,
teacher_type AS teacherType,
nickname,
avatar,
`desc`,
material_url AS materialUrl
from wework_teacher
where is_open = 1
......@@ -219,6 +258,9 @@
select
id AS id,
teacher_type AS teacherType,
nickname,
avatar,
`desc`,
material_url AS materialUrl
from wework_teacher
where is_open = 1 and id in
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment