Browse Source

添加自营转寄售协议同意记录后台逻辑

huxz 8 years ago
parent
commit
7659e9ae75

+ 75 - 0
src/main/java/com/uas/platform/b2c/prod/store/controller/ConsignmentAgreeRecordController.java

@@ -0,0 +1,75 @@
+package com.uas.platform.b2c.prod.store.controller;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.prod.store.service.ConsignmentAgreeRecordService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 自营转寄售协议,同意操作记录控制器
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@RestController
+@RequestMapping(value = "/auth/store/consignment/record")
+public class ConsignmentAgreeRecordController {
+
+	private final Logger logger = Logger.getLogger(getClass());
+
+	private final ConsignmentAgreeRecordService recordService;
+
+	@Autowired
+	public ConsignmentAgreeRecordController(ConsignmentAgreeRecordService recordService) {
+		this.recordService = recordService;
+	}
+
+	/**
+	 * 用户自营转寄售时,获取寄售协议
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/agreement")
+	public String obtainAConsignmentAgreement() {
+		logger.info("Obtain a consignment agreement when user switch self-support to consignment first");
+		return recordService.obtainAConsignmentAgreement();
+	}
+
+	/**
+	 * 用户自营转寄售时,查询用户同意寄售协议的记录
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/findByUser")
+	public ConsignmentAgreeRecord findRecordOfUser() {
+		logger.info("Find one consignment record when user switch self-support to consignment");
+		return recordService.findRecordOfUser();
+	}
+
+	/**
+	 * 用户第一次同意自营转寄售时,保存用户的操作记录信息
+	 *
+	 * @param record 操作记录信息
+	 */
+	@RequestMapping(method = RequestMethod.POST)
+	public ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record) {
+		logger.info("Save consignment record when user agrees the consignment agreement");
+		return recordService.saveRecordWhenUserAgree(record);
+	}
+
+	/**
+	 * 管理员在管理后台查看店铺信息时,按操作时间降序获取操作记录信息
+	 *
+	 * @param pageParams	分页参数
+	 * @param enUU			企业UU
+	 */
+	@RequestMapping(method = RequestMethod.GET, value = "/pageByAdmin")
+	public Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(PageParams pageParams, Long enUU) {
+		logger.info("Page consignment operation record when admin query info");
+		PageInfo pageInfo = new PageInfo(pageParams);
+		return recordService.pageRecordWhenAdminQueryInfo(pageInfo, enUU);
+	}
+}

+ 26 - 0
src/main/java/com/uas/platform/b2c/prod/store/dao/ConsignmentAgreeRecordDao.java

@@ -0,0 +1,26 @@
+package com.uas.platform.b2c.prod.store.dao;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 自营转寄售协议,同意操作记录DAO
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@Repository
+public interface ConsignmentAgreeRecordDao extends JpaSpecificationExecutor<ConsignmentAgreeRecord>, JpaRepository<ConsignmentAgreeRecord, Long> {
+
+	/**
+	 * 根据企业UU和用户UU获取操作记录
+	 *
+	 * @param enUU		企业UU
+	 * @param userUU	用户UU
+	 */
+	List<ConsignmentAgreeRecord> findByEnUUAndUserUU(Long enUU, Long userUU);
+}

+ 135 - 0
src/main/java/com/uas/platform/b2c/prod/store/model/ConsignmentAgreeRecord.java

@@ -0,0 +1,135 @@
+package com.uas.platform.b2c.prod.store.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.uas.platform.b2c.core.utils.JacksonUtils;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * 自营转寄售协议,同意操作记录
+ * 每个企业每个人仅记录一次
+ *
+ * @author huxz
+ * @version 2017-08-24 08:57:56 创建文件
+ */
+@Entity
+@Table(name = "store$consignment_agree")
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class ConsignmentAgreeRecord {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "store$consignment_agree_gen")
+	@SequenceGenerator(name = "store$consignment_agree_gen", sequenceName = "store$consignment_agree_seq", allocationSize = 1)
+	private Long id;
+
+	/**
+	 * 企业UU
+	 */
+	@Column(name = "con_en_uu")
+	private Long enUU;
+
+	/**
+	 * 企业名称
+	 *
+	 * 如若修改,需要同步到最新
+	 */
+	@Column(name = "con_en_name")
+	private String enterpriseName;
+
+	/**
+	 * 用户UU
+	 */
+	@Column(name = "con_user_uu")
+	private Long userUU;
+
+	/**
+	 * 用户姓名
+	 *
+	 * 如若修改,需要同步到最新
+	 */
+	@Column(name = "con_user_name")
+	private String userName;
+
+	/**
+	 * 是否同意寄售协议
+	 */
+	@Column(name = "con_agreement")
+	private Boolean agreement;
+
+	/**
+	 * 操作时间
+	 */
+	@Column(name = "con_op_time")
+	private Date operateTime;
+
+	public ConsignmentAgreeRecord() {
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public String getEnterpriseName() {
+		return enterpriseName;
+	}
+
+	public void setEnterpriseName(String enterpriseName) {
+		this.enterpriseName = enterpriseName;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public Boolean getAgreement() {
+		return agreement;
+	}
+
+	public void setAgreement(Boolean agreement) {
+		this.agreement = agreement;
+	}
+
+	public Date getOperateTime() {
+		return operateTime;
+	}
+
+	public void setOperateTime(Date operateTime) {
+		this.operateTime = operateTime;
+	}
+
+	@Override
+	public String toString() {
+		return JacksonUtils.toJson(this);
+	}
+}

+ 40 - 0
src/main/java/com/uas/platform/b2c/prod/store/service/ConsignmentAgreeRecordService.java

@@ -0,0 +1,40 @@
+package com.uas.platform.b2c.prod.store.service;
+
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * 自营转寄售协议,同意操作记录业务类
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+public interface ConsignmentAgreeRecordService {
+
+	/**
+	 * 用户自营转寄售时,获取寄售协议
+	 */
+	String obtainAConsignmentAgreement();
+
+	/**
+	 * 用户自营转寄售时,查询用户同意寄售协议的记录
+	 */
+	ConsignmentAgreeRecord findRecordOfUser();
+
+	/**
+	 * 用户第一次同意自营转寄售时,保存用户的操作记录信息
+	 *
+	 * @param record 操作记录信息
+	 */
+	ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record);
+
+	/**
+	 * 管理员在管理后台查看店铺信息时,按操作时间降序获取操作记录信息
+	 *
+	 * @param pageInfo	分页参数
+	 * @param enUU		企业UU
+	 */
+	Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(PageInfo pageInfo, Long enUU);
+}

+ 135 - 0
src/main/java/com/uas/platform/b2c/prod/store/service/impl/ConsignmentAgreeRecordServiceImpl.java

@@ -0,0 +1,135 @@
+package com.uas.platform.b2c.prod.store.service.impl;
+
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.prod.store.dao.ConsignmentAgreeRecordDao;
+import com.uas.platform.b2c.prod.store.model.ConsignmentAgreeRecord;
+import com.uas.platform.b2c.prod.store.service.ConsignmentAgreeRecordService;
+import com.uas.platform.b2c.trade.support.CodeType;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.exception.IllegalStatusException;
+import com.uas.platform.core.model.PageInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 自营转寄售协议,同意操作记录业务实现类
+ *
+ * @author huxz
+ * @version 2017-08-24 09:11:46 创建文件
+ */
+@Service
+public class ConsignmentAgreeRecordServiceImpl implements ConsignmentAgreeRecordService {
+
+	private final UserDao userDao;
+
+	private final EnterpriseDao enterpriseDao;
+
+	private final ConsignmentAgreeRecordDao recordDao;
+
+	@Autowired
+	public ConsignmentAgreeRecordServiceImpl(UserDao userDao, EnterpriseDao enterpriseDao, ConsignmentAgreeRecordDao recordDao) {
+		this.userDao = userDao;
+		this.enterpriseDao = enterpriseDao;
+		this.recordDao = recordDao;
+	}
+
+	@Override
+	public String obtainAConsignmentAgreement() {
+		RestTemplate restTemplate = new RestTemplate();
+		return restTemplate.getForObject("http://www.usoftmall.com/help#/issue/16", String.class);
+	}
+
+	@Override
+	public ConsignmentAgreeRecord findRecordOfUser() {
+		User user = SystemSession.getUser();
+		if (user == null || user.getUserUU() == null || user.getUserUU() == 0L) {
+			throw new IllegalStatusException("用户信息不能存在");
+		}
+		Enterprise enterprise = user.getEnterprise();
+		if (enterprise == null || enterprise.getUu() == null || enterprise.getUu() == 0L) {
+			throw new IllegalStatusException("用户企业信息不存在");
+		}
+
+		List<ConsignmentAgreeRecord> records = recordDao.findByEnUUAndUserUU(enterprise.getUu(), user.getUserUU());
+		if (CollectionUtils.isEmpty(records)) {
+			return null;
+		} else {
+			return records.get(0);
+		}
+	}
+
+	@Override
+	public ResultMap saveRecordWhenUserAgree(ConsignmentAgreeRecord record) {
+		User user = SystemSession.getUser();
+		if (user == null || user.getUserUU() == null || user.getUserUU() == 0L) {
+			return new ResultMap(CodeType.ERROR_STATE, "用户信息不存在");
+		}
+		Enterprise enterprise = user.getEnterprise();
+		if (enterprise == null || enterprise.getUu() == null || enterprise.getUu() == 0L) {
+			return new ResultMap(CodeType.ERROR_STATE, "用户企业信息不存在");
+		}
+
+		Date operateTime = new Date();
+
+		record.setEnUU(enterprise.getUu());
+		record.setEnterpriseName(enterprise.getEnName());
+		record.setUserUU(user.getUserUU());
+		record.setUserName(user.getUserName());
+		// TODO huxz 暂时设置为true
+		record.setAgreement(true);
+
+		record.setOperateTime(operateTime);
+
+		record = recordDao.save(record);
+		return ResultMap.success(record);
+	}
+
+	@Override
+	public Page<ConsignmentAgreeRecord> pageRecordWhenAdminQueryInfo(final PageInfo pageInfo, Long enUU) {
+		if (enUU == null || enUU == 0L) {
+			throw new IllegalStatusException("企业UU不存在");
+		}
+
+		pageInfo.filter("enUU", enUU);
+
+		Page<ConsignmentAgreeRecord> page = recordDao.findAll(new Specification<ConsignmentAgreeRecord>() {
+			@Override
+			public Predicate toPredicate(Root<ConsignmentAgreeRecord> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+
+		if (!CollectionUtils.isEmpty(page.getContent())) {
+			for (ConsignmentAgreeRecord record : page.getContent()) {
+				User user = userDao.findOne(record.getUserUU());
+				if (user != null) {
+					record.setUserName(user.getUserName());
+				}
+
+				Enterprise enterprise = enterpriseDao.findByUu(record.getEnUU());
+				if (enterprise != null) {
+					record.setEnterpriseName(enterprise.getEnName());
+				}
+
+			}
+		}
+
+		return page;
+	}
+}