浏览代码

Merge remote-tracking branch 'origin/master'

hgw 3 年之前
父节点
当前提交
96d059dcd6

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysMusicScoreCategoriesDao.java

@@ -6,6 +6,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface SysMusicScoreCategoriesDao extends BaseDAO<Integer, SysMusicScoreCategories> {
 
@@ -20,4 +22,6 @@ public interface SysMusicScoreCategoriesDao extends BaseDAO<Integer, SysMusicSco
     void batchUpdate(@Param("categories") List<SysMusicScoreCategories> updateCategories, @Param("organId") String organId, @Param("enable") Boolean enable);
 
     void enable(@Param("categoriesIds") String categoriesIds, @Param("enable") boolean enable);
+
+    List<Map<Integer, String>> queryOrganByIds(@Param("categoriesIds") Set<Integer> categoriesIds);
 }

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java

@@ -29,6 +29,10 @@ public class SysMusicScore {
 	
 	/** 声部列表 */
 	private String subjectIds;
+
+	private Integer subjectId;
+
+	private String subjectName;
 	
 	/** 速度 */
 	private Integer speed;
@@ -72,6 +76,32 @@ public class SysMusicScore {
 
 	private Boolean isOpenMetronome;
 
+	private String organName;
+
+	public Integer getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(Integer subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getOrganName() {
+		return organName;
+	}
+
+	public void setOrganName(String organName) {
+		this.organName = organName;
+	}
+
 	public Boolean getIsOpenMetronome() {
 		return isOpenMetronome;
 	}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service.impl;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreCategoriesDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
@@ -16,6 +17,8 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,6 +38,8 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private SysMusicScoreCategoriesDao sysMusicScoreCategoriesDao;
+	@Autowired
+	private SubjectDao subjectDao;
 
 	@Override
 	public BaseDAO<Integer, SysMusicScore> getDAO() {
@@ -155,12 +160,23 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
 		List<SysMusicScore> rows = sysMusicScorePageInfo.getRows();
 		if(rows != null && rows.size() > 0){
 			Set<Integer> categoriesIds = rows.stream().map(e -> e.getMusicScoreCategoriesId()).collect(Collectors.toSet());
+			//获取分部列表
+			Map<Integer,String> organMap = MapUtil.convertMybatisMap(sysMusicScoreCategoriesDao.queryOrganByIds(categoriesIds));
+			//获取声部列表
+			Set<Integer> subjectIds = rows.stream().map(e -> e.getSubjectId()).collect(Collectors.toSet());
+			subjectIds.removeAll(Collections.singleton(null));
+			Map<Long, String> subjectMap = new HashMap();
+			if(subjectIds.size() > 0){
+				subjectMap = MapUtil.convertMybatisMap(subjectDao.findBySubjecIds(StringUtils.join(subjectIds, ",")));
+			}
 			Map<Integer,String> map = new HashMap<>(categoriesIds.size());
 			for (Integer categoriesId : categoriesIds) {
 				map.put(categoriesId,getParentTreeName(categoriesId));
 			}
 			for (SysMusicScore row : rows) {
 				row.setCategoriesName(map.get(row.getMusicScoreCategoriesId()));
+				row.setOrganName(organMap.get(row.getMusicScoreCategoriesId()));
+				row.setSubjectName(subjectMap.get(row.getSubjectId()));
 			}
 		}
 		return sysMusicScorePageInfo;

+ 10 - 1
mec-biz/src/main/resources/config/mybatis/SysMusicScoreCategoriesMapper.xml

@@ -161,7 +161,16 @@
 		SELECT GROUP_CONCAT(id_) FROM sys_music_score_categories
 		WHERE FIND_IN_SET(id_,#{categoriesIds}) OR FIND_IN_SET(parent_id_,#{categoriesIds})
 	</select>
-	<sql id="queryTree">
+    <select id="queryOrganByIds" resultType="java.util.Map">
+		SELECT sms.id_ 'key',GROUP_CONCAT(DISTINCT o.name_) 'value' FROM sys_music_score_categories sms
+		LEFT JOIN organization o ON FIND_IN_SET(o.id_,sms.organ_id_)
+		WHERE sms.id_ IN
+		<foreach collection="categoriesIds" item="id" open="(" close=")" separator=",">
+			#{id}
+		</foreach>
+		GROUP BY sms.id_
+	</select>
+    <sql id="queryTree">
 		<where>
 			<if test="enable != null">
 				AND sm.enable_ = #{enable}

+ 9 - 3
mec-biz/src/main/resources/config/mybatis/SysMusicScoreMapper.xml

@@ -26,6 +26,7 @@
 		<result column="show_flag_" property="showFlag" />
 		<result column="order_" property="order" />
 		<result column="rank_ids_" property="rankIds" />
+		<result column="subject_id_" property="subjectId" />
 		<result column="client_type_" property="clientType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
 		<result column="update_time_" property="updateTime" />
 		<result column="create_time_" property="createTime" />
@@ -46,7 +47,8 @@
 		INSERT INTO sys_music_score (music_score_categories_id_,name_,type_,speed_,url_,metronome_url_,create_user_id_,order_,
 		                             update_time_,create_time_,client_type_,rank_ids_,show_flag_)
 		VALUES(#{musicScoreCategoriesId},#{name},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-		       #{speed},#{url},#{metronomeUrl},#{createUserId},#{order},NOW(),NOW(),#{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{rankIds},#{showFlag})
+		       #{speed},#{url},#{metronomeUrl},#{createUserId},#{order},NOW(),NOW(),#{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		       #{rankIds},#{showFlag})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -98,14 +100,14 @@
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="SysMusicScore" parameterType="map">
 		SELECT ses.*,su.real_name_ create_user_name_,smsc.name_ categories_name_,smsc.id_ categories_id_,
-		smsa.mp3_url_ accompaniment_url_,smsa.metronome_url_ accompaniment_metronome_url_,smsa.is_open_metronome_
+		smsa.mp3_url_ accompaniment_url_,smsa.metronome_url_ accompaniment_metronome_url_,smsa.is_open_metronome_,smsa.subject_id_
 		FROM sys_music_score ses
 		LEFT JOIN sys_music_score_accompaniment smsa ON smsa.exam_song_id_ = ses.id_
 		LEFT JOIN sys_user su ON ses.create_user_id_ = su.id_
 		LEFT JOIN sys_music_score_categories smsc ON smsc.id_ = ses.music_score_categories_id_
 		<include refid="queryPageSql"/>
 		GROUP BY ses.id_
-		ORDER BY ses.music_score_categories_id_ desc,ses.order_ asc,ses.create_time_ desc
+		ORDER BY ses.music_score_categories_id_ DESC,ses.order_ ASC,ses.create_time_ DESC
 		<include refid="global.limit"/>
 	</select>
 	
@@ -113,6 +115,7 @@
 	<select id="queryCount" resultType="int">
 		SELECT COUNT(DISTINCT ses.id_) FROM sys_music_score ses
 		LEFT JOIN sys_music_score_categories smsc ON smsc.id_ = ses.music_score_categories_id_
+		LEFT JOIN sys_music_score_accompaniment smsa ON smsa.exam_song_id_ = ses.id_
 		<include refid="queryPageSql"/>
 	</select>
     <select id="findByIds" resultMap="SysMusicScore">
@@ -136,6 +139,9 @@
 			<if test="showFlag != null">
 				AND ses.show_flag_ = #{showFlag}
 			</if>
+			<if test="subjectId != null">
+				AND smsa.subject_id_ = #{subjectId}
+			</if>
 			<if test="clientType != null">
 				AND ses.client_type_ = #{clientType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/config/ResourceServerConfig.java

@@ -24,7 +24,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
     @Override
     public void configure(HttpSecurity http) throws Exception {
         http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-                .authorizeRequests().antMatchers("/v2/api-docs", "/code/*", "/register/*", "/studentOrder/*", "/musicGroup/getSubjectGoodsAndInfo",
+                .authorizeRequests().antMatchers("/wechat/*","/v2/api-docs", "/code/*", "/register/*", "/studentOrder/*", "/musicGroup/getSubjectGoodsAndInfo",
                 "/musicGroup/getMusicGroupStatus", "/musicGroup/getOrderStatus","/sysCouponCode/queryPage",
                 "/musicGroup/pay",
                 "/musicGroup/rePay",

+ 104 - 0
mec-student/src/main/java/com/ym/mec/student/controller/WechatController.java

@@ -0,0 +1,104 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.io.IOException;
+import java.net.URLDecoder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.UUID;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSONPath;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.redis.service.RedisCache;
+import com.ym.mec.util.http.HttpUtil;
+import com.ym.mec.util.string.ValueUtil;
+
+@RequestMapping("wechat")
+@Api(tags = "微信")
+@RestController
+public class WechatController extends BaseController {
+
+	private String appId = "wx80f175c0eb6836e9";
+
+	private String secret = "a9d779747dba9f4e82f19882debe3e93";
+	
+	private final static String WX_ACCESS_TOKEN = "WX_ACCESS_TOKEN";
+
+    @Autowired
+    private RedisCache<String, Object> redisCache;
+
+	@ApiOperation("获取签名")
+	@GetMapping(value = "/getSignature")
+	public Object getSignature(String url) throws Exception {
+		
+		url = URLDecoder.decode(url);
+
+		String accessToken = getAccessToken(appId, secret);
+
+		String ticket = getTicket(accessToken);
+
+		String noncestr = UUID.randomUUID().toString();
+		String timestamp = System.currentTimeMillis() + "";
+
+		SortedMap<String, Object> parameterMap = new TreeMap<String, Object>();
+		parameterMap.put("noncestr", noncestr);
+		parameterMap.put("jsapi_ticket", ticket);
+		parameterMap.put("timestamp", timestamp);
+		parameterMap.put("url", url);
+
+		String str = ValueUtil.joinKeyValue(parameterMap, "", "", "&", false, "");
+
+		String signature = DigestUtils.sha1Hex(str);
+
+		Map<String, Object> result = new HashMap<String, Object>();
+		result.put("appId", appId);
+		result.put("timestamp", timestamp);
+		result.put("nonceStr", noncestr);
+		result.put("signature", signature);
+
+		return succeed(result);
+	}
+
+	private String getAccessToken(String appid, String secret) throws IOException {
+
+		if (redisCache.exists(WX_ACCESS_TOKEN)) {
+			if (redisCache.get(WX_ACCESS_TOKEN) != null) {
+				if (StringUtils.isNotEmpty(redisCache.get(WX_ACCESS_TOKEN).toString())) {
+					return redisCache.get(WX_ACCESS_TOKEN).toString();
+				}
+			}
+		}
+		Map<String, Object> parameterMap = new HashMap<String, Object>();
+		parameterMap.put("grant_type", "client_credential");
+		parameterMap.put("appid", appid);
+		parameterMap.put("secret", secret);
+
+		String result = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/token", parameterMap);
+		String accessToken = (String) JSONPath.extract(result, "$.access_token");
+		
+		redisCache.put(WX_ACCESS_TOKEN, accessToken, 7100);
+
+		return accessToken;
+	}
+
+	private String getTicket(String accessToken) throws IOException {
+		Map<String, Object> parameterMap = new HashMap<String, Object>();
+		parameterMap.put("access_token", accessToken);
+		parameterMap.put("type", "jsapi");
+		String result = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/ticket/getticket", parameterMap);
+
+		return (String) JSONPath.extract(result, "$.ticket");
+	}
+	
+}

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/SysMusicScoreController.java

@@ -92,7 +92,7 @@ public class SysMusicScoreController extends BaseController {
             }
         }
         if(queryInfo.getCategoriesId() != null){
-            String byCategoriesIds = sysMusicScoreCategoriesDao.findByCategoriesIds(queryInfo.getCategoriesId().toString());
+            String byCategoriesIds = sysMusicScoreCategoriesDao.findByCategoriesIds(queryInfo.getCategoriesId());
             byCategoriesIds = sysMusicScoreCategoriesDao.findByCategoriesIds(byCategoriesIds);
             queryInfo.setCategoriesId(byCategoriesIds);
         }