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 cardTempletLst =(List) 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 readClassCard() { SchClassCard classCard = getSchClassCard(ClientUtils.getClassId()); Map map = new HashMap(); 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 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 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> getHeadimgField(){ String hql = "from OrgClassUserCustom where deleteFlag is false and classId = ? and objectType = ?"; List customLst = find(hql, CollectionUtils.newList( ClientUtils.getClassId(),OrgClassUserCustom.OBJECT_TYPE_IMG), OrgClassUserCustom.class); List> mapLst = new ArrayList>(customLst.size() + 1); for (OrgClassUserCustom custom : customLst) { Map map = new HashMap(); map.put("fieldId", custom.getCustomId()); map.put("fieldName", custom.getObjectName()); mapLst.add(map); } Map map = new HashMap(); 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> 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> lstclassCardList = this.findListWithMapByHql(sbHql.toString(), CollectionUtils.newObjectMap("status", UserRegistration.STATUS_ACTIVE, "userId", userId)); for(Map 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 = ""; text = text.concat(name.substring(0,8)); text = text.concat(""); text = text.concat(name.substring(8,name.length())); text = text.concat(""); 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); } }