Jelajahi Sumber

Merge branch '1113' into adapay_new

yonge 4 tahun lalu
induk
melakukan
5e2ed2cc20

+ 14 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1510,6 +1510,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     }
                 }
             }
+            
+            MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
+            if(musicGroupSubjectPlan != null){
+            	musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+            	musicGroupSubjectPlan.setUpdateTime(date);
+            	musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
+            }
+            
             if (amount.doubleValue() > 0) {
                 // 增加交易流水
                 sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
@@ -1572,7 +1580,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         BigDecimal amount = new BigDecimal(0);
 
         // 判断乐器是否是租赁
-        // MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+        MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, studentRegistration.getActualSubjectId());
+        if(musicGroupSubjectPlan != null){
+        	musicGroupSubjectPlan.setPaidStudentNum(musicGroupSubjectPlan.getPaidStudentNum() - 1);
+        	musicGroupSubjectPlan.setUpdateTime(date);
+        	musicGroupSubjectPlanDao.update(musicGroupSubjectPlan);
+        }
 
         StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.SUCCESS);
 

+ 177 - 0
mec-thirdparty/src/main/java/com/ym/mec/thirdparty/eseal/provider/BytedancePlugin.java

@@ -0,0 +1,177 @@
+package com.ym.mec.thirdparty.eseal.provider;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.ym.mec.thirdparty.exception.ThirdpartyException;
+import com.ym.mec.util.http.HttpUtil;
+import com.ym.mec.util.sort.SortUtil;
+import com.ym.mec.util.string.ValueUtil;
+
+public class BytedancePlugin implements InitializingBean, DisposableBean {
+
+	@Value("${eseal.bytedance.projectid:E6894439939350463244}")
+	public String projectId = "E6894439939350463244";
+
+	@Value("${eseal.bytedance.projectSecret:F%#1*#3^z61GEvH0Nf2N1u68v!vvU5n9C^3RE!z3Q^H$UD3521625&&q!H43QnNf}")
+	public String projectSecret = "F%#1*#3^z61GEvH0Nf2N1u68v!vvU5n9C^3RE!z3Q^H$UD3521625&&q!H43QnNf";
+
+	@Value("${eseal.bytedance.apisUrl:http://sandbox.letsign.com}")
+	public String apisUrl = "http://sandbox.letsign.com";
+
+	public static String getName() {
+		return "ByteDance";
+	}
+
+	@Override
+	public void afterPropertiesSet() throws Exception {
+
+	}
+
+	@Override
+	public void destroy() throws Exception {
+
+	}
+
+	/**
+	 * 创建用户账户(个人)
+	 * @param userId 用户编号
+	 * @param realName 姓名
+	 * @param idcard 身份证号码
+	 * @param mobile 手机号码
+	 * @return 账户唯一标识
+	 * @throws IOException 
+	 */
+	public String createUserAccount(String userId, String realName, String idcard, String mobile) throws IOException {
+		String path = "/open-api/certification/noUser/person3/";
+		String url = apisUrl + path;
+		Map<String, Object> params = new HashMap<String, Object>();
+
+		// 基础参数
+		params.put("appCode", projectId);
+		params.put("timestamp", "" + System.currentTimeMillis());
+		params.put("version", "v1");
+
+		// 业务参数
+		params.put("personOpenCode", userId);
+		params.put("personMobile", mobile);
+		params.put("personName", realName);
+		params.put("personIdCard", idcard);
+
+		// token
+		String token = generateToken(params, projectSecret);
+		params.put("token", token);
+
+		params.put("personIdCardFrontFile", "");
+		params.put("personIdCardBackFile", "");
+
+		String result = HttpUtil.postForHttp(url, params);
+		System.out.println(result);
+
+		JSONObject jsonObject = JSONObject.parseObject(result);
+		if (jsonObject.getInteger("code") == 0) {
+			return userId;
+		}
+		throw new ThirdpartyException("创建个人账户失败:{}", jsonObject.getString("description"));
+	}
+
+	/**
+	 * 创建用户账户(企业)
+	 * @param orgName  机构名称
+	 * @param organCode 统一社会信用代码
+	 * @return e签宝账户唯一标识
+	 */
+	public String createOrganAccount(String orgName, String organCode) {
+
+		return null;
+	}
+
+	/**
+	 * 文件上传
+	 * @param contractFile 协议文件
+	 * @param userId 用户账号
+	 * @return
+	 * @throws IOException
+	 */
+	public String uploadFile(File contractFile, String userId) throws IOException {
+		String path = "/open-api/contract/opt/upload";
+		String url = apisUrl + path;
+		Map<String, Object> params = new HashMap<String, Object>();
+
+		// 基础参数
+		params.put("appCode", projectId);
+		params.put("timestamp", "" + System.currentTimeMillis());
+		params.put("version", "v1");
+
+		// 业务参数
+		params.put("companyOpenCode", "");
+		params.put("personOpenCode", userId);
+		params.put("signType", 1);
+		params.put("canRefuse", 0);
+
+		// token
+		String token = generateToken(params, projectSecret);
+		params.put("token", token);
+
+		params.put("contractFile", contractFile);
+
+		String result = HttpUtil.postForHttp(url, params);
+		System.out.println(result);
+
+		JSONObject jsonObject = JSONObject.parseObject(result);
+		if (jsonObject.getInteger("code") == 0) {
+			return (String) JSONPath.eval(jsonObject, "$.data.contractCode");
+		}
+		throw new ThirdpartyException("上传文件失败:{}", jsonObject.getString("description"));
+	}
+
+	/**
+	 * 企业PDF摘要签署(印章图片)
+	 * @param sealData 电子印章数据
+	 * @param srcPdfPath 源文件
+	 * @param destPdfPath 签名后的目标文件
+	 * @return
+	 */
+	public boolean organSign(String sealData, String srcPdfPath, String destPdfPath) {
+		return true;
+	}
+
+	/**
+	 * 用户签名
+	 * @param accountId e签宝账户唯一标识
+	 * @param sealData 电子印章数据
+	 * @param srcPdfPath 平台签名后的源文件
+	 * @param destPdfPath 平台、用户都签名后的文件地址
+	 * @return
+	 */
+	public boolean userSign(String accountId, String sealData, String srcPdfPath, String destPdfPath) {
+
+		return true;
+	}
+
+	private String generateToken(Map<String, Object> params, String secret) {
+
+		params = SortUtil.sortWithAscII(params);
+		String paramsStr = ValueUtil.joinKeyValue(params, "", "", "", true);
+		String md5Str = new String(DigestUtils.md5(paramsStr.getBytes()));
+
+		paramsStr = md5Str + secret;
+
+		return DigestUtils.sha1Hex(paramsStr);
+	}
+
+	public static void main(String[] args) throws IOException {
+		BytedancePlugin plugin = new BytedancePlugin();
+		plugin.createUserAccount("1", "高勇", "421125198708123313", "13720176797");
+	}
+
+}

+ 24 - 0
mec-util/src/main/java/com/ym/mec/util/sort/SortUtil.java

@@ -0,0 +1,24 @@
+package com.ym.mec.util.sort;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.TreeSet;
+
+public class SortUtil {
+
+	/**
+	 * 按照ASCII码表顺序排序
+	 * @param srcMap
+	 * @return
+	 */
+	public static Map<String, Object> sortWithAscII(Map<String, Object> srcMap) {
+
+		LinkedHashMap<String, Object> targetMap = new LinkedHashMap<String, Object>();
+
+		TreeSet<String> sortedKey = new TreeSet<String>(srcMap.keySet());
+		for (String key : sortedKey) {
+			targetMap.put(key, srcMap.get(key));
+		}
+		return targetMap;
+	}
+}