Commit 95c922df by 桂前礼

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

parent 5977c3c6
...@@ -21,6 +21,7 @@ import com.pcloud.common.page.PageBeanNew; ...@@ -21,6 +21,7 @@ import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.utils.ParamChecker; import com.pcloud.common.utils.ParamChecker;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.facade.wechat.material.dto.GroupNewsMaterialAddDTO; 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 com.pcloud.facade.wechat.material.service.MaterialService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -29,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -29,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
...@@ -48,7 +50,7 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz { ...@@ -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 @Autowired
...@@ -75,14 +77,17 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz { ...@@ -75,14 +77,17 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz {
String materialUrl; String materialUrl;
try { try {
account = groupMaterialAccountBiz.getActiveAccount(UseTypeEnum.THIRD_GROUP.value); account = groupMaterialAccountBiz.getActiveAccount(UseTypeEnum.THIRD_GROUP.value);
GroupNewsMaterialAddDTO materialAddDTO = new GroupNewsMaterialAddDTO(); NewsMaterialTemplateDto dto = new NewsMaterialTemplateDto();
materialAddDTO.setAccountId(account.getAccountId()); Map<String, String> placeholderMap = new HashMap<>();
materialAddDTO.setGroupName(weworkTeacher.getTitle()); placeholderMap.put("${avatar}",weworkTeacherVO.getAvatar());
materialAddDTO.setQrcodeUrl(weworkTeacher.getQrcode()); placeholderMap.put("${qrcodeUrl}",weworkTeacherVO.getQrcode());
materialAddDTO.setGroupHeadImg(account.getHeadMediaId()); dto.setHtmlTemplate(WEWORK_TEACHER_MATERIAL_HTML.replace("${title}",weworkTeacherVO.getNickname()).replace("${desc}",weworkTeacherVO.getDesc()));
materialAddDTO.setCoverMediaId(account.getCoverMediaId()); dto.setAccountId(account.getAccountId());
materialAddDTO.setHtml(WEWORK_TEACHER_MATERIAL_HTML); dto.setTitle(weworkTeacherVO.getTitle());
mediaId = ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterial(materialAddDTO), String.class); 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); materialUrl = ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterialByMediaId(mediaId), String.class);
} catch (Exception e) { } catch (Exception e) {
log.info("[WeworkTeacherBizImpl.addWxworkTeacher] 新增客服老师,创建素材失败!", e); log.info("[WeworkTeacherBizImpl.addWxworkTeacher] 新增客服老师,创建素材失败!", e);
...@@ -119,15 +124,18 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz { ...@@ -119,15 +124,18 @@ public class WeworkTeacherBizImpl implements WeworkTeacherBiz {
GroupMaterialAccount account = null; GroupMaterialAccount account = null;
try { try {
account = groupMaterialAccountBiz.getByAccountId(weworkTeacher.getAccountId()); account = groupMaterialAccountBiz.getByAccountId(weworkTeacher.getAccountId());
GroupNewsMaterialAddDTO materialAddDTO = new GroupNewsMaterialAddDTO(); NewsMaterialTemplateDto dto = new NewsMaterialTemplateDto();
materialAddDTO.setMediaId(weworkTeacher.getMediaId()); Map<String, String> placeholderMap = new HashMap<>();
materialAddDTO.setAccountId(account.getAccountId()); placeholderMap.put("${avatar}",weworkTeacherVO.getAvatar());
materialAddDTO.setGroupName(weworkTeacher.getTitle()); placeholderMap.put("${qrcodeUrl}",weworkTeacherVO.getQrcode());
materialAddDTO.setQrcodeUrl(weworkTeacher.getQrcode()); dto.setHtmlTemplate(WEWORK_TEACHER_MATERIAL_HTML.replace("${title}",weworkTeacherVO.getNickname()).replace("${desc}",weworkTeacherVO.getDesc()));
materialAddDTO.setGroupHeadImg(account.getHeadMediaId()); dto.setAccountId(account.getAccountId());
materialAddDTO.setCoverMediaId(account.getCoverMediaId()); dto.setTitle(weworkTeacherVO.getTitle());
materialAddDTO.setHtml(WEWORK_TEACHER_MATERIAL_HTML); dto.setCoverMediaId(account.getCoverMediaId());
ResponseHandleUtil.parseResponse(materialService.getGroupNewsMaterial(materialAddDTO), String.class); dto.setPlaceholders(placeholderMap);
dto.setDigest(weworkTeacherVO.getTitle());
dto.setMediaId(weworkTeacher.getMediaId());
materialService.createNewsMaterial4Template(dto);
} catch (Exception e) { } catch (Exception e) {
log.info("[WeworkTeacherBizImpl.updateWxworkTeacher] 更新客服老师,更新素材失败! weworkTeacherVO:{} account:{}", weworkTeacherVO, account); log.info("[WeworkTeacherBizImpl.updateWxworkTeacher] 更新客服老师,更新素材失败! weworkTeacherVO:{} account:{}", weworkTeacherVO, account);
throw new BookBizException(BookBizException.ID_NOT_EXIST, "更新客服老师,更新素材失败!"); throw new BookBizException(BookBizException.ID_NOT_EXIST, "更新客服老师,更新素材失败!");
......
...@@ -33,6 +33,24 @@ public class WeworkTeacher implements Serializable { ...@@ -33,6 +33,24 @@ public class WeworkTeacher implements Serializable {
private String realName; private String realName;
/** /**
* 昵称
*/
@ApiModelProperty("昵称")
private String nickname;
/**
* 头像地址
*/
@ApiModelProperty("头像地址")
private String avatar;
/**
* 描述
*/
@ApiModelProperty("描述")
private String desc;
/**
* 图文素材标题名称 * 图文素材标题名称
*/ */
@ApiModelProperty("图文素材标题名称") @ApiModelProperty("图文素材标题名称")
......
...@@ -48,10 +48,22 @@ public class WeworkTeacherVO implements Serializable { ...@@ -48,10 +48,22 @@ public class WeworkTeacherVO implements Serializable {
private String title; private String title;
/** /**
* 客服类型:1:苏老师 2:张哥哥 * 昵称
*/ */
@ApiModelProperty("客服类型:1:苏老师 2:张哥哥") @ApiModelProperty("昵称")
private Integer teacherType; private String nickname;
/**
* 头像地址
*/
@ApiModelProperty("头像地址")
private String avatar;
/**
* 描述
*/
@ApiModelProperty("描述")
private String desc;
/** /**
* 开关状态 * 开关状态
...@@ -86,7 +98,6 @@ public class WeworkTeacherVO implements Serializable { ...@@ -86,7 +98,6 @@ public class WeworkTeacherVO implements Serializable {
ParamChecker.checkStringIsEmpty(this.qrcode, "企业微信二维码不能为空!"); ParamChecker.checkStringIsEmpty(this.qrcode, "企业微信二维码不能为空!");
ParamChecker.checkStringIsEmpty(this.realName, "真实姓名不能为空!"); ParamChecker.checkStringIsEmpty(this.realName, "真实姓名不能为空!");
ParamChecker.checkStringIsEmpty(this.title, "Title 不能为空!"); ParamChecker.checkStringIsEmpty(this.title, "Title 不能为空!");
ParamChecker.checkNumberIsNull(this.teacherType, "客服老师类型不能为空!");
} }
public void checkParam4Update() { public void checkParam4Update() {
...@@ -111,6 +122,15 @@ public class WeworkTeacherVO implements Serializable { ...@@ -111,6 +122,15 @@ public class WeworkTeacherVO implements Serializable {
if (this.title != null && !StrUtil.equals(this.title, weworkTeacher.getTitle())) { if (this.title != null && !StrUtil.equals(this.title, weworkTeacher.getTitle())) {
return true; 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; return false;
} }
} }
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<id column="id" jdbcType="BIGINT" property="id" /> <id column="id" jdbcType="BIGINT" property="id" />
<result column="qrcode" jdbcType="VARCHAR" property="qrcode" /> <result column="qrcode" jdbcType="VARCHAR" property="qrcode" />
<result column="real_name" jdbcType="VARCHAR" property="realName" /> <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="title" jdbcType="VARCHAR" property="title" />
<result column="teacher_type" jdbcType="INTEGER" property="teacherType" /> <result column="teacher_type" jdbcType="INTEGER" property="teacherType" />
<result column="is_open" jdbcType="INTEGER" property="isOpen" /> <result column="is_open" jdbcType="INTEGER" property="isOpen" />
...@@ -15,7 +18,7 @@ ...@@ -15,7 +18,7 @@
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" /> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <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 update_time
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
...@@ -29,11 +32,11 @@ ...@@ -29,11 +32,11 @@
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</delete> </delete>
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.pcloud.book.group.entity.WeworkTeacher" useGeneratedKeys="true"> <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, teacher_type, is_open, material_url, media_id,
account_id, create_time, update_time 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}, #{teacherType,jdbcType=INTEGER}, #{isOpen,jdbcType=INTEGER}, #{materialUrl,jdbcType=VARCHAR}, #{mediaId,jdbcType=VARCHAR},
#{accountId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP} #{accountId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}
) )
...@@ -47,6 +50,15 @@ ...@@ -47,6 +50,15 @@
<if test="realName != null"> <if test="realName != null">
real_name, real_name,
</if> </if>
<if test="nickname != null">
nickname,
</if>
<if test="avatar != null">
avatar,
</if>
<if test="desc != null">
`desc`,
</if>
<if test="title != null"> <if test="title != null">
title, title,
</if> </if>
...@@ -79,6 +91,15 @@ ...@@ -79,6 +91,15 @@
<if test="realName != null"> <if test="realName != null">
#{realName,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR},
</if> </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"> <if test="title != null">
#{title,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
</if> </if>
...@@ -114,6 +135,15 @@ ...@@ -114,6 +135,15 @@
<if test="realName != null"> <if test="realName != null">
real_name = #{realName,jdbcType=VARCHAR}, real_name = #{realName,jdbcType=VARCHAR},
</if> </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"> <if test="title != null">
title = #{title,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR},
</if> </if>
...@@ -145,6 +175,9 @@ ...@@ -145,6 +175,9 @@
update wework_teacher update wework_teacher
set qrcode = #{qrcode,jdbcType=VARCHAR}, set qrcode = #{qrcode,jdbcType=VARCHAR},
real_name = #{realName,jdbcType=VARCHAR}, real_name = #{realName,jdbcType=VARCHAR},
nickname = #{nickname,jdbcType=VARCHAR},
avatar = #{avatar,jdbcType=VARCHAR},
`desc` = #{desc,jdbcType=VARCHAR},
title = #{title,jdbcType=VARCHAR}, title = #{title,jdbcType=VARCHAR},
teacher_type = #{teacherType,jdbcType=INTEGER}, teacher_type = #{teacherType,jdbcType=INTEGER},
is_open = #{isOpen,jdbcType=INTEGER}, is_open = #{isOpen,jdbcType=INTEGER},
...@@ -161,7 +194,7 @@ ...@@ -161,7 +194,7 @@
from wework_teacher from wework_teacher
<where> <where>
<if test="name != null"> <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>
<if test="isOpen != null"> <if test="isOpen != null">
and is_open = #{isOpen} and is_open = #{isOpen}
...@@ -177,6 +210,9 @@ ...@@ -177,6 +210,9 @@
id AS id, id AS id,
qrcode AS qrcode, qrcode AS qrcode,
real_name AS realName, real_name AS realName,
nickname,
avatar,
`desc`,
title AS title, title AS title,
teacher_type AS teacherType, teacher_type AS teacherType,
is_open AS isOpen, is_open AS isOpen,
...@@ -186,7 +222,7 @@ ...@@ -186,7 +222,7 @@
from wework_teacher from wework_teacher
<where> <where>
<if test="name != null"> <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>
<if test="isOpen != null"> <if test="isOpen != null">
and is_open = #{isOpen} and is_open = #{isOpen}
...@@ -201,6 +237,9 @@ ...@@ -201,6 +237,9 @@
select select
id AS id, id AS id,
teacher_type AS teacherType, teacher_type AS teacherType,
nickname,
avatar,
`desc`,
material_url AS materialUrl material_url AS materialUrl
from wework_teacher from wework_teacher
where is_open = 1 where is_open = 1
...@@ -219,6 +258,9 @@ ...@@ -219,6 +258,9 @@
select select
id AS id, id AS id,
teacher_type AS teacherType, teacher_type AS teacherType,
nickname,
avatar,
`desc`,
material_url AS materialUrl material_url AS materialUrl
from wework_teacher from wework_teacher
where is_open = 1 and id in 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