yonge 5 gadi atpakaļ
vecāks
revīzija
678d189ad8

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -1,9 +1,21 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.common.dal.BaseDAO;
 
 public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrder> {
 
-	
+	/**
+	 * 查询商品列表
+	 * @param musicGroupId
+	 * @param type
+	 * @return
+	 */
+	List<Goods> queryApplyGoodsList(@Param("musicGroupId") Integer musicGroupId, @Param("type") OrderDetailTypeEnum type);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.common.dal.BaseDAO;
 
@@ -71,4 +72,11 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     Integer updateByUserIdAndMusicGroupId(@Param("studentRegistration") StudentRegistration studentRegistration);
+    
+    /**
+     * 查询学生信息
+     * @param userId
+     * @return
+     */
+    StudentInfo queryStudentInfo(Integer userId);
 }

+ 59 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentInfo.java

@@ -0,0 +1,59 @@
+package com.ym.mec.biz.dal.dto;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.Subject;
+
+public class StudentInfo extends SysUser {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 9052387644105786621L;
+
+	private String name;
+	
+	private String grade;
+	
+	private String clazz;
+	
+	private Subject subject = new Subject();
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getGrade() {
+		return grade;
+	}
+
+	public void setGrade(String grade) {
+		this.grade = grade;
+	}
+
+	public String getClazz() {
+		return clazz;
+	}
+
+	public void setClazz(String clazz) {
+		this.clazz = clazz;
+	}
+
+	public Subject getSubject() {
+		return subject;
+	}
+
+	public void setSubject(Subject subject) {
+		this.subject = subject;
+	}
+	
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+}

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderDetailTypeEnum.java

@@ -8,7 +8,7 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum OrderDetailTypeEnum implements BaseEnum<String, OrderDetailTypeEnum> {
 	MUSICAL("MUSICAL", "乐器"),
 	TEACHING("TEACHING", "教辅"),
-	ELSE("ELSE", "其他"),
+	OTHER("OTHER", "其他"),
 	COURSE("COURSE", "课程");
 
 	private String code;

+ 20 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/ContractService.java

@@ -1,6 +1,5 @@
 package com.ym.mec.biz.service;
 
-
 public interface ContractService {
 
 	/**
@@ -23,20 +22,36 @@ public interface ContractService {
 	 * @return
 	 */
 	String queryRegisterContract(Integer userId);
-	
+
 	/**
 	 * 传递课程协议
 	 * @param userId
 	 * @param musicGroupId
 	 * @return
 	 */
-	boolean transferCoursesContract(Integer userId,Integer musicGroupId);
-	
+	boolean transferMusicGroupCoursesContract(Integer userId, Integer musicGroupId);
+
 	/**
 	 * 查询课程协议
 	 * @param userId
 	 * @param musicGroupId
 	 * @return
 	 */
-	String queryCoursesContract(Integer userId,Integer musicGroupId);
+	String queryMusicGroupCoursesContract(Integer userId, Integer musicGroupId);
+
+	/**
+	 * 传递商品协议
+	 * @param userId
+	 * @param musicGroupId
+	 * @return
+	 */
+	boolean transferGoodsContract(Integer userId, Integer musicGroupId);
+
+	/**
+	 * 查询商品协议
+	 * @param userId
+	 * @param musicGroupId
+	 * @return
+	 */
+	String queryGoodsContract(Integer userId, Integer musicGroupId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -1,8 +1,19 @@
 package com.ym.mec.biz.service;
 
+import java.util.List;
+
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.common.service.BaseService;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
 
+	/**
+	 * 查询商品列表
+	 * @param musicGroupId
+	 * @param type
+	 * @return
+	 */
+	List<Goods> queryApplyGoodsList(Integer musicGroupId, OrderDetailTypeEnum type);
 }

+ 10 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java

@@ -1,18 +1,15 @@
 package com.ym.mec.biz.service;
 
+import java.util.List;
+
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
-import com.ym.mec.biz.dal.page.StudentApplyDetailQueryInfo;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
-import org.apache.ibatis.annotations.Param;
-
-import java.util.HashMap;
-import java.util.List;
-
 public interface StudentRegistrationService extends BaseService<Long, StudentRegistration> {
 
     /**
@@ -74,5 +71,12 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return
      */
     StudentRegistration addStudent(StudentRegistration studentRegistration);
+    
+    /**
+     * 查询学生信息
+     * @param userId
+     * @return
+     */
+    StudentInfo queryStudentInfo(Integer userId);
 
 }

+ 110 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -6,6 +6,7 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
@@ -16,10 +17,15 @@ import org.springframework.stereotype.Service;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.SysUserContracts;
 import com.ym.mec.biz.dal.entity.SysUserContracts.ContractType;
 import com.ym.mec.biz.dal.entity.SysUserTsign;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.SysUserContractsService;
 import com.ym.mec.biz.service.SysUserTsignService;
 import com.ym.mec.common.exception.BizException;
@@ -39,6 +45,12 @@ public class ContractServiceImpl implements ContractService {
 
 	@Autowired
 	private SysUserContractsService sysUserContractsService;
+	
+	@Autowired
+	private StudentRegistrationService studentRegistrationService;
+	
+	@Autowired
+	private StudentPaymentOrderService studentPaymentOrderService;
 
 	@Autowired
 	private ESealPlugin eSealPlugin;
@@ -162,7 +174,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public boolean transferCoursesContract(Integer userId, Integer musicGroupId) {
+	public boolean transferMusicGroupCoursesContract(Integer userId, Integer musicGroupId) {
 		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
 
 		if (sysUserTsign == null) {
@@ -182,7 +194,8 @@ public class ContractServiceImpl implements ContractService {
 		Map<String, Object> params = new HashMap<String, Object>();
 		
 		//查询参数信息
-		
+		StudentInfo studentInfo = studentRegistrationService.queryStudentInfo(userId);
+		params.put("studentInfo", studentInfo);
 
 		templateEngine.render(params, "courses.ftl", new File(srcPdfPath));
 
@@ -215,7 +228,7 @@ public class ContractServiceImpl implements ContractService {
 	}
 
 	@Override
-	public String queryCoursesContract(Integer userId, Integer musicGroupId) {
+	public String queryMusicGroupCoursesContract(Integer userId, Integer musicGroupId) {
 
 		// 合成freemarker
 		String srcPdfPath = contractBaseDir + "/courses/" + userId + ".pdf";
@@ -228,6 +241,9 @@ public class ContractServiceImpl implements ContractService {
 		templateEngine.setClassForTemplateLoading(ContractServiceImpl.class, "/config/contracts/");
 
 		Map<String, Object> params = new HashMap<String, Object>();
+		
+		StudentInfo studentInfo = studentRegistrationService.queryStudentInfo(userId);
+		params.put("studentInfo", studentInfo);
 
 		templateEngine.render(params, "courses.ftl", new File(srcPdfPath));
 
@@ -242,4 +258,95 @@ public class ContractServiceImpl implements ContractService {
 		return result;
 	}
 
+	@Override
+	public boolean transferGoodsContract(Integer userId, Integer musicGroupId) {
+		SysUserTsign sysUserTsign = sysUserTsignService.get(userId);
+
+		if (sysUserTsign == null) {
+			return false;
+		}
+
+		// 合成freemarker
+		String srcPdfPath = contractBaseDir + "/goods/" + userId + ".pdf";
+		File debtFile = new File(contractBaseDir);
+		if (!debtFile.exists()) {
+			debtFile.mkdirs();
+		}
+
+		FreemarkerTemplateEngine templateEngine = FreemarkerTemplateEngine.getInstance();
+		templateEngine.setClassForTemplateLoading(ContractServiceImpl.class, "/config/contracts/");
+
+		Map<String, Object> params = new HashMap<String, Object>();
+		
+		//查询参数信息
+		StudentInfo studentInfo = studentRegistrationService.queryStudentInfo(userId);
+		params.put("studentInfo", studentInfo);
+		
+		List<Goods> goodsList = studentPaymentOrderService.queryApplyGoodsList(musicGroupId, OrderDetailTypeEnum.MUSICAL);
+		params.put("goodsList", goodsList);
+
+		templateEngine.render(params, "goods.ftl", new File(srcPdfPath));
+
+		// 生成借款协议PDF
+		try {
+			PDFUtil.renderToPDFByData(ContractServiceImpl.class.getResource("/").getFile(), FileUtils.readFileToString(new File(srcPdfPath)), srcPdfPath,
+					"config/fonts/simsun.ttc");
+		} catch (IOException e) {
+			throw new BizException("生成pdf协议失败", e);
+		}
+
+		eSealPlugin.userSign(sysUserTsign.getAccountId(), sysUserTsign.getSealData(), srcPdfPath, srcPdfPath);
+
+		Date date = new Date();
+		// 上传到oss
+		String dateStrOss = dateFormatOss.format(date);
+		String pdfFilePath = storagePlugin.uploadFile(dateStrOss, new File(srcPdfPath));
+
+		SysUserContracts sysUserContracts = new SysUserContracts();
+		sysUserContracts.setCreateTime(date);
+		sysUserContracts.setType(ContractType.REGISTER);
+		sysUserContracts.setUrl(pdfFilePath);
+		sysUserContracts.setUserId(userId);
+
+		sysUserContractsService.insert(sysUserContracts);
+
+		FileUtils.deleteQuietly(new File(srcPdfPath));
+
+		return true;
+	}
+
+	@Override
+	public String queryGoodsContract(Integer userId, Integer musicGroupId) {
+
+		// 合成freemarker
+		String srcPdfPath = contractBaseDir + "/goods/" + userId + ".pdf";
+		File debtFile = new File(contractBaseDir);
+		if (!debtFile.exists()) {
+			debtFile.mkdirs();
+		}
+
+		FreemarkerTemplateEngine templateEngine = FreemarkerTemplateEngine.getInstance();
+		templateEngine.setClassForTemplateLoading(ContractServiceImpl.class, "/config/contracts/");
+
+		Map<String, Object> params = new HashMap<String, Object>();
+
+		StudentInfo studentInfo = studentRegistrationService.queryStudentInfo(userId);
+		params.put("studentInfo", studentInfo);
+		
+		List<Goods> goodsList = studentPaymentOrderService.queryApplyGoodsList(musicGroupId, OrderDetailTypeEnum.MUSICAL);
+		params.put("goodsList", goodsList);
+
+		templateEngine.render(params, "goods.ftl", new File(srcPdfPath));
+
+		String result = "";
+		try {
+			result = FileUtils.readFileToString(new File(srcPdfPath));
+		} catch (IOException e) {
+			throw new BizException("读取商品协议出错", e);
+		}
+		FileUtils.deleteQuietly(new File(srcPdfPath));
+
+		return result;
+	}
+
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
@@ -19,5 +23,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 	public BaseDAO<Long, StudentPaymentOrder> getDAO() {
 		return studentPaymentOrderDao;
 	}
+
+	@Override
+	public List<Goods> queryApplyGoodsList(Integer musicGroupId, OrderDetailTypeEnum type) {
+		return studentPaymentOrderDao.queryApplyGoodsList(musicGroupId, type);
+	}
 	
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -19,6 +19,7 @@ import com.ym.mec.auth.api.enums.UserLockFlag;
 import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
 import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
 import com.ym.mec.biz.dal.dto.StudentFeeDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
@@ -121,4 +122,9 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentRegistrationDao.insert(studentRegistration);
         return studentRegistration;
     }
+
+	@Override
+	public StudentInfo queryStudentInfo(Integer userId) {
+		return studentRegistrationDao.queryStudentInfo(userId);
+	}
 }

+ 0 - 0
mec-biz/src/main/resources/config/contracts/Instrument.html → mec-biz/src/main/resources/config/contracts/goods.ftl


+ 29 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -24,6 +24,31 @@
         <result column="music_group_id_" property="musicGroupId"/>
         <result column="class_group_id_" property="classGroupId"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.entity.Goods" id="Goods">
+        <result column="id_" property="id"/>
+        <result column="goods_category_id_" property="goodsCategoryId"/>
+        <result column="sn_" property="sn"/>
+        <result column="name_" property="name"/>
+        <result column="brand_" property="brand"/>
+        <result column="specification_" property="specification"/>
+        <result column="image_" property="image"/>
+        <result column="stock_count_" property="stockCount"/>
+        <result column="sell_count_" property="sellCount"/>
+        <result column="market_price_" property="marketPrice"/>
+        <result column="discount_price_" property="discountPrice"/>
+        <result column="group_purchase_price_" property="groupPurchasePrice"/>
+        <result column="brief_" property="brief"/>
+        <result column="desc_" property="desc"/>
+        <result column="is_new_" property="isNew" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_top_" property="isTop" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="memo_" property="memo"/>
+        <result column="publish_time_" property="publishTime"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="complement_goods_id_list_" property="complementGoodsIdList"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentPaymentOrder">
@@ -113,4 +138,8 @@
     <select id="queryCount" resultType="int">
 		SELECT COUNT(*) FROM student_payment_order
 	</select>
+	
+    <select id="queryApplyGoodsList" resultMap="Goods" parameterType="map">
+		select g.* from goods g where g.id_ in (SELECT spod.goods_id_list_ FROM student_payment_order spo left join student_payment_order_detail spod on spo.id_ = spod.payment_order_id_ where spo.music_group_id_ = #{musicGroupId} and spo.type_ = 'APPLY' and spod.type_ = #{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
+	</select>
 </mapper>

+ 32 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -31,6 +31,34 @@
         <result column="last_payment_date_" property="lastPaymentDate"/>
         <result column="next_payment_date_" property="nextPaymentDate"/>
     </resultMap>
+    
+    <resultMap type="com.ym.mec.biz.dal.dto.StudentInfo" id="StudentInfo">
+        <result column="id_" property="id"/>
+        <result column="username_" property="username"/>
+        <result column="password_" property="password"/>
+        <result column="salt_" property="salt"/>
+        <result column="phone_" property="phone"/>
+        <result column="avatar_" property="avatar"/>
+        <result column="organ_id_" property="organId"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+        <result column="lock_flag_" property="lockFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="wx_openid_" property="wxOpenid"/>
+        <result column="qq_openid_" property="qqOpenid"/>
+        <result column="user_type_" property="userType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="gender_" property="gender"/>
+        <result column="nation_" property="nation"/>
+        <result column="birthdate_" property="birthdate"/>
+        <result column="email_" property="email"/>
+        <result column="im_token_" property="imToken"/>
+        <result column="id_card_no_" property="idCardNo"/>
+        <result column="wechat_id_" property="wechatId"/>
+        <result column="name_" property="name"/>
+        <result column="current_grade_" property="grade"/>
+        <result column="current_class_" property="clazz"/>
+        <result column="actual_subject_id_" property="subject.id"/>
+    </resultMap>
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="StudentRegistration">
@@ -220,4 +248,8 @@
     <update id="updateByUserIdAndMusicGroupId" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
         UPDATE student_registration SET class_group_id_ = #{classGroupId} WHERE user_id_ = #{userId} AND music_group_id_ = #{musicGroupId}
     </update>
+    
+    <select id="queryStudentInfo" resultMap="StudentInfo">
+        SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_ FROM sys_user u left join student_registration  sr on u.id_ = sr.user_id_ where u.id_ = #{userId}
+    </select>
 </mapper>

+ 5 - 5
mec-student/src/main/java/com/ym/mec/student/controller/RegisterController.java → mec-student/src/main/java/com/ym/mec/student/controller/ContractsController.java

@@ -13,10 +13,10 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.service.ContractService;
 import com.ym.mec.common.controller.BaseController;
 
-@RequestMapping("register")
-@Api(tags = "注册服务")
+@RequestMapping("contracts")
+@Api(tags = "协议服务")
 @RestController
-public class RegisterController extends BaseController {
+public class ContractsController extends BaseController {
 
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
@@ -25,8 +25,8 @@ public class RegisterController extends BaseController {
 	private ContractService contractService;
 
 	@ApiOperation("查询注册协议")
-	@GetMapping(value = "queryContract")
-	public Object queryCoursePage() {
+	@GetMapping(value = "queryRegisterContract")
+	public Object queryRegisterContract() {
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		if (sysUser == null) {
 			return failed("获取用户信息失败");