package com.qxueyou.scc.school.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.alibaba.fastjson.JSON;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.org.model.OrgClassUserCustom;
|
import com.qxueyou.scc.school.model.SchClassCard;
|
import com.qxueyou.scc.school.model.SchSign;
|
import com.qxueyou.scc.school.model.SignStatisResult;
|
import com.qxueyou.scc.school.service.IClassCardService;
|
import com.qxueyou.scc.school.service.ISignService;
|
import com.qxueyou.scc.user.model.User;
|
import com.qxueyou.scc.user.model.UserRegistration;
|
|
|
/**
|
* 听课证实现类
|
* @author Delin
|
*
|
*/
|
@Service
|
public class ClassCardService extends CommonAppService implements IClassCardService {
|
|
private static final String IMG_PATH = "IMG_PATH";
|
|
@Autowired
|
ISignService signService;
|
|
/**
|
* 保存听课证信息
|
*/
|
@Override
|
public Result doSaveClassCard(SchClassCard classCard,String templetData) {
|
|
if(StringUtils.isNotBlank(classCard.getClassCardId())){ // 编辑
|
SchClassCard card = read(SchClassCard.class, classCard.getClassCardId());
|
card.setTempletNo(classCard.getTempletNo());
|
card.setDoubleSidedFlag(classCard.getDoubleSidedFlag());
|
card.setSignCodeFlag(classCard.getSignCodeFlag());
|
card.setCodeFlag(classCard.getCodeFlag());
|
card.setCodeUrl(classCard.getCodeUrl());
|
card.setHeadImgFlag(classCard.getHeadImgFlag());
|
card.setHeadImgField(classCard.getHeadImgField());
|
card.setCardName(classCard.getCardName());
|
card.setSlogan(classCard.getSlogan());
|
TraceUtils.setUpdateTrace(card);
|
save(card);
|
}else{ // 新增
|
classCard.setClassId(ClientUtils.getClassId());
|
classCard.setClassCardId(null);
|
TraceUtils.setCreateTrace(classCard);
|
save(classCard);
|
}
|
|
// 添加模板后使用
|
// //将JSON字符串转换成JSONArray
|
// JSONArray array_news =new JSONArray();
|
// array_news = JSONArray.fromObject(templetData);
|
// //将JSONArray转换成List列表
|
// List<SchClassCardTemplet> cardTempletLst =(List<SchClassCardTemplet>) JSONArray.toCollection(array_news, SchClassCardTemplet.class);
|
// for (SchClassCardTemplet cardTemplet : cardTempletLst) {
|
// SchClassCardTemplet ct = null;
|
// if(StringUtils.isNotBlank(cardTemplet.getCardTempletId())){
|
// ct = read(SchClassCardTemplet.class, cardTemplet.getCardTempletId());
|
// ct.setFieldValue(cardTemplet.getFieldValue());
|
// TraceUtils.setUpdateTrace(ct);
|
// }else{
|
// ct = new SchClassCardTemplet();
|
// ct.setClassCardId(classCard.getClassCardId());
|
// ct.setTempletid(cardTemplet.getTempletid());
|
// ct.setFieldValue(cardTemplet.getFieldValue());
|
// TraceUtils.setCreateTrace(ct);
|
// }
|
// save(ct);
|
// }
|
|
return new Result(true,"",classCard.getClassCardId());
|
}
|
|
/**
|
* 读取听课证信息
|
*/
|
@Override
|
public Map<String,Object> readClassCard() {
|
|
SchClassCard classCard = getSchClassCard(ClientUtils.getClassId());
|
|
Map<String,Object> map = new HashMap<String,Object>();
|
map.put("classCard", classCard);
|
map.put("orgLogo", ClientUtils.getOrgLogoPath());
|
map.put("orgName", ClientUtils.getOrgShortName());
|
map.put("className", ClientUtils.getClassName());
|
return map;
|
|
// 添加模板后使用
|
// map.put("templetLst", "");
|
// map.put("cardTempletLst", "");
|
// List<ClassCardTemplet> templetLst = null;
|
// if(null == classCard){
|
// String hql_te = "select from ClassCardTemplet t1 where deleteFlag is false order by templetNo";
|
// templetLst = find(hql_te, CollectionUtils.newList(), ClassCardTemplet.class);
|
// map.put("templetLst", templetLst);
|
//
|
// return map;
|
// }
|
//
|
// // 查询模板
|
// String hql_te = "select from ClassCardTemplet t1 where deleteFlag is false templetNo = ? ";
|
// templetLst = find(hql_te, CollectionUtils.newList(classCard.getTempletNo()), ClassCardTemplet.class);
|
//
|
// // 查询模板值
|
// String hql_re = "select from SchClassCardTemplet t1 where deleteFlag is false classCardId = ? ";
|
// List<SchClassCardTemplet> cardTempletLst = find(hql_re, CollectionUtils.newList(classCard.getClassCardId()), SchClassCardTemplet.class);
|
//
|
// map.put("classCard", classCard);
|
// map.put("templetLst", templetLst);
|
// map.put("cardTempletLst", cardTempletLst);
|
//
|
// return map;
|
}
|
|
/**
|
* 获取显示头像的字段
|
*/
|
@Override
|
public List<Map<String,String>> getHeadimgField(){
|
|
String hql = "from OrgClassUserCustom where deleteFlag is false and classId = ? and objectType = ?";
|
List<OrgClassUserCustom> customLst = find(hql, CollectionUtils.newList(
|
ClientUtils.getClassId(),OrgClassUserCustom.OBJECT_TYPE_IMG), OrgClassUserCustom.class);
|
|
List<Map<String,String>> mapLst = new ArrayList<Map<String,String>>(customLst.size() + 1);
|
for (OrgClassUserCustom custom : customLst) {
|
Map<String,String> map = new HashMap<String,String>();
|
map.put("fieldId", custom.getCustomId());
|
map.put("fieldName", custom.getObjectName());
|
mapLst.add(map);
|
}
|
|
Map<String,String> map = new HashMap<String,String>();
|
map.put("fieldId", IMG_PATH);
|
map.put("fieldName", "个人头像");
|
mapLst.add(map);
|
|
return mapLst;
|
}
|
|
/**
|
* 获取用户头像
|
*
|
* @param userId
|
* @param classId
|
* @return
|
*/
|
@Override
|
public String getUserHeadimg(String userId, String classId){
|
|
SchClassCard classCard = getSchClassCard(classId);
|
if(classCard == null || !classCard.getHeadImgFlag()){ // 未设置
|
return "";
|
}
|
|
String headImgField = classCard.getHeadImgField();
|
if(IMG_PATH.equals(headImgField)){
|
User u = this.read(User.class, userId);
|
return u == null?"":u.getImgPath();
|
}
|
|
String userRegHql = "select customValue from UserRegistrationCustom where deleteFlag is false and classId = ? and customId = ? and userId = ?";
|
|
return this.findUnique(userRegHql, CollectionUtils.newList(classId, headImgField, userId), String.class);
|
}
|
|
/**
|
* 获取用户所有的听课证
|
*
|
* @param userId
|
* @return
|
*/
|
public List<Map<String,Object>> getAllUserCard(String userId){
|
|
StringBuffer sbHql = new StringBuffer(256);
|
sbHql.append(" SELECT ");
|
sbHql.append(" r.registrationId AS regId, ");
|
sbHql.append(" c.name AS className, ");
|
sbHql.append(" c.classId AS classId, ");
|
sbHql.append(" d.cardName AS cardName, ");
|
sbHql.append(" d.headImgFlag AS headImgFlag ");
|
sbHql.append(" FROM ");
|
sbHql.append(" UserRegistration r, ");
|
sbHql.append(" ClsClass c, ");
|
sbHql.append(" SchClassCard d ");
|
sbHql.append(" WHERE ");
|
sbHql.append(" d.deleteFlag IS FALSE ");
|
sbHql.append(" AND c.deleteFlag IS FALSE ");
|
sbHql.append(" AND r.deleteFlag IS FALSE ");
|
sbHql.append(" AND r.classId = c.classId ");
|
sbHql.append(" AND r.classId = d.classId ");
|
sbHql.append(" AND r.status =:status ");
|
sbHql.append(" AND r.userId =:userId ");
|
sbHql.append(" ORDER BY ");
|
sbHql.append(" r.activationTime DESC ");
|
|
List<Map<String,Object>> lstclassCardList = this.findListWithMapByHql(sbHql.toString(),
|
CollectionUtils.newObjectMap("status", UserRegistration.STATUS_ACTIVE, "userId", userId));
|
for(Map<String,Object> map : lstclassCardList){
|
map.put("userHeadimg", this.getUserHeadimg(userId, (String)map.get("classId")));
|
map.put("className", this.formatClassName((String)map.get("className")));
|
}
|
|
return lstclassCardList;
|
}
|
|
/**
|
* 格式化班级名称
|
* @param {} name
|
* @returns {}
|
*/
|
private String formatClassName(String name){
|
|
if(name.length() >= 11 && name.length() <= 12){
|
String text = "<span style='display: inline-block;'>";
|
text = text.concat(name.substring(0,8));
|
text = text.concat("</span><span style='display: inline-block;'>");
|
text = text.concat(name.substring(8,name.length()));
|
text = text.concat("</span>");
|
return text;
|
}
|
return name;
|
}
|
|
/**
|
* 签到
|
* @param sign
|
* @param userId
|
* @return
|
*/
|
@Override
|
public Result doSubmitSign(SchSign sign,String userId){
|
|
User user = read(User.class, userId);
|
|
// 签到成功 获取签到历史
|
SignStatisResult history = signService.doSignByClassCard(sign, user.getUserId());
|
if(!history.getResult()){
|
return new Result(false,history.getErrMsg());
|
}
|
//异步发送消息处理
|
String args = JSON.toJSONString(CollectionUtils.newObjectMap(
|
"userId", user.getUserId(),
|
"userName", user.getName(),
|
"mobilePhone", user.getMobilePhone(),
|
"userImg", user.getImgPath(),
|
"signType", history.getSignType(),
|
"signIndex", history.getSignIndex(),
|
"signId", sign.getSignId()
|
// "source", UserReWeixin.SOURCE_WEIXIN_SIGN
|
));
|
|
return signService.sendSignQueueMsg(args);
|
}
|
|
@Override
|
public SchSign getSchSign(String signId){
|
|
String hql = "from SchSign where deleteFlag is false and signId = ?";
|
return findUnique(hql, CollectionUtils.newList(signId), SchSign.class);
|
}
|
|
@Override
|
public SchClassCard getSchClassCard(String classId){
|
|
String hql = "from SchClassCard where deleteFlag is false and classId = ?";
|
return findUnique(hql, CollectionUtils.newList(classId), SchClassCard.class);
|
}
|
}
|