Browse Source

Merge branch 'yc-payCenter' into feature/yc-payCenter-1031

hulh 8 years ago
parent
commit
a6656df0dd
64 changed files with 800 additions and 422 deletions
  1. 1 1
      pom.xml
  2. 16 0
      src/main/java/com/uas/platform/b2c/advertise/ad/service/FloorsService.java
  3. 34 0
      src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/FloorsServiceImpl.java
  4. 1 1
      src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java
  5. 4 1
      src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/UserServiceImpl.java
  6. 23 0
      src/main/java/com/uas/platform/b2c/fa/payment/controller/BankInfoController.java
  7. 48 4
      src/main/java/com/uas/platform/b2c/fa/payment/dao/BankInfoDao.java
  8. 9 0
      src/main/java/com/uas/platform/b2c/fa/payment/service/BankInfoService.java
  9. 25 0
      src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankInfoServiceImpl.java
  10. 1 0
      src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankTransferServiceImpl.java
  11. 1 1
      src/main/java/com/uas/platform/b2c/logistics/model/DistributionRule.java
  12. 13 0
      src/main/java/com/uas/platform/b2c/logistics/model/UsableRuleInfo.java
  13. 14 1
      src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributionRuleServiceImpl.java
  14. 0 28
      src/main/java/com/uas/platform/b2c/prod/commodity/controller/GoodsController.java
  15. 26 1
      src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java
  16. 11 0
      src/main/java/com/uas/platform/b2c/prod/product/brand/api/BrandController.java
  17. 10 0
      src/main/java/com/uas/platform/b2c/prod/product/brand/dao/BrandMostSimpleInfoDao.java
  18. 8 0
      src/main/java/com/uas/platform/b2c/prod/product/brand/service/BrandService.java
  19. 8 0
      src/main/java/com/uas/platform/b2c/prod/product/brand/service/impl/BrandServiceImpl.java
  20. 36 0
      src/main/java/com/uas/platform/b2c/prod/product/common/CommonTask.java
  21. 1 1
      src/main/java/com/uas/platform/b2c/prod/product/common/api/CommonCountController.java
  22. 9 2
      src/main/java/com/uas/platform/b2c/prod/product/common/dao/CommonCountDao.java
  23. 14 0
      src/main/java/com/uas/platform/b2c/prod/product/common/model/CommonCount.java
  24. 2 2
      src/main/java/com/uas/platform/b2c/prod/product/common/service/CommonCountService.java
  25. 2 6
      src/main/java/com/uas/platform/b2c/prod/product/common/service/impl/CommonCountServiceImpl.java
  26. 1 1
      src/main/java/com/uas/platform/b2c/prod/product/component/dao/ComponentGoodsDao.java
  27. 7 3
      src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentGoodsServiceImpl.java
  28. 3 22
      src/main/java/com/uas/platform/b2c/trade/order/model/Order.java
  29. 0 4
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java
  30. 13 0
      src/main/java/com/uas/platform/b2c/trade/presale/controller/CollectionController.java
  31. 12 0
      src/main/java/com/uas/platform/b2c/trade/presale/controller/StoreFocusController.java
  32. 7 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/CollectionService.java
  33. 8 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/StoreFocusService.java
  34. 17 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/impl/CollectionServiceImpl.java
  35. 17 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/impl/StoreFocusServiceImpl.java
  36. 1 3
      src/main/java/com/uas/platform/b2c/trade/rate/controller/RateController.java
  37. 1 4
      src/main/java/com/uas/platform/b2c/trade/rate/service/impl/RateServiceImpl.java
  38. 1 1
      src/main/resources/dev/jdbc.properties
  39. 1 1
      src/main/resources/prod/jdbc.properties
  40. 3 0
      src/main/resources/spring/task.xml
  41. 1 1
      src/main/resources/test/jdbc.properties
  42. 7 3
      src/main/webapp/WEB-INF/views/normal/proxyLogout.html
  43. 1 1
      src/main/webapp/resources/js/admin/controllers/customService/ReviewerEmailInfo.js
  44. 13 1
      src/main/webapp/resources/js/common/query/bankInfo.js
  45. 9 6
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js
  46. 21 2
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_pay_ctrl.js
  47. 77 60
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_transfer_ctrl.js
  48. 0 3
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js
  49. 24 17
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js
  50. 22 2
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_pay_ctrl.js
  51. 5 1
      src/main/webapp/resources/view/admin/trade/trade_invoicefromorder_detail.html
  52. 7 2
      src/main/webapp/resources/view/admin/trade/trade_invoicefrompurc_detail.html
  53. 5 1
      src/main/webapp/resources/view/admin/trade/trade_order_detail.html
  54. 7 2
      src/main/webapp/resources/view/admin/trade/trade_purchase_detail.html
  55. 2 1
      src/main/webapp/resources/view/common/bankInfoModal.html
  56. 1 1
      src/main/webapp/resources/view/common/site-nav.html
  57. 0 1
      src/main/webapp/resources/view/usercenter/forstore/buyer_order.html
  58. 167 222
      src/main/webapp/resources/view/usercenter/forstore/buyer_transfer.html
  59. 4 1
      src/main/webapp/resources/view/usercenter/forstore/order_detail.html
  60. 7 4
      src/main/webapp/resources/view/usercenter/forstore/order_pay.html
  61. 1 0
      src/main/webapp/resources/view/vendor/forstore/pay_center.html
  62. 4 1
      src/main/webapp/resources/view/vendor/forstore/purchase_detail.html
  63. 5 0
      src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html
  64. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_order.html

+ 1 - 1
pom.xml

@@ -39,7 +39,7 @@
 			<properties>
 				<profile>prod</profile>
 				<!-- static plugin -->
-				<static-path>http://static.usoftmall.com</static-path>
+				<static-path>https://static.usoftmall.com</static-path>
 			</properties>
 		</profile>
 	</profiles>

+ 16 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/service/FloorsService.java

@@ -19,4 +19,20 @@ public interface FloorsService {
 	 * @return the floors by module
 	 */
 	List<JSONObject> getFloorsByModule(String module);
+
+	/**
+	 * Gets floors by module.
+	 *
+	 * @param item the body
+	 * @return the floors by module
+	 */
+	Boolean setFloorsItem(JSONObject item);
+
+	/**
+	 * Gets floors by module.
+	 *
+	 * @param batchCode the body
+	 * @return the floors by module
+	 */
+	JSONObject isInHome(String batchCode);
 }

+ 34 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/FloorsServiceImpl.java

@@ -5,6 +5,7 @@ import com.uas.platform.b2c.advertise.ad.service.FloorsService;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.utils.JacksonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
@@ -35,4 +36,37 @@ public class FloorsServiceImpl implements FloorsService {
 		String result = restTemplate.getForEntity(url, String.class).getBody();
 		return JacksonUtils.fromJsonArray(result, JSONObject.class);
 	}
+
+	@Override
+	public Boolean setFloorsItem(JSONObject item){       //(String name, String brandEn ,String kind, String pictureUrl, String hrefUrl) {
+
+		String url = conf.getRequestUrlForFloor(20040, "/floors/"+item.get("floorId").toString()+"/item");
+		item.remove("floorId");
+		HttpStatus status = restTemplate.postForEntity(url,item,String.class).getStatusCode();
+		if (status.equals(HttpStatus.OK)){
+			return true;
+		}else{
+			return false;
+		}
+	}
+
+	@Override
+	public JSONObject isInHome(String batchCode) {
+		String url = conf.getRequestUrlForFloor(20040, "/floors?usedFor=home-v3");
+		String result = restTemplate.getForEntity(url, String.class).getBody();
+		List<JSONObject> floors = JacksonUtils.fromJsonArray(result,JSONObject.class);
+		List<JSONObject> items;
+		for (JSONObject floor : floors){
+			if (floor.get("name").equals("器件楼层")){
+				String floorId = floor.get("id").toString();
+				items = JacksonUtils.fromJsonArray(floor.get("items").toString(),JSONObject.class);
+				for (JSONObject item : items){
+					if (item.get("hrefUrl").toString().indexOf(batchCode) != -1){
+						return item.fluentPut("floorId",floorId);
+					}
+				}
+			}
+		}
+		return null;
+	}
 }

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java

@@ -72,7 +72,7 @@ public class SecurityController {
 		if (cross) {
 			request.getSession().setAttribute(SSOConfig.SSOReferer, returnUrl);
 			// 跨域情况,需要再次询问账户中心
-			returnUrl = request.getContextPath() + "/logout/proxy";
+			returnUrl = "/logout/proxy";
 		}
 		return new ModelMap("content", returnUrl);
 	}

+ 4 - 1
src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/UserServiceImpl.java

@@ -32,7 +32,10 @@ public class UserServiceImpl implements UserService {
 
     @Override
     public void save(User user) {
-        com.uas.platform.b2c.common.account.model.User u =  new com.uas.platform.b2c.common.account.model.User();
+        com.uas.platform.b2c.common.account.model.User u = userDao.findOne(Long.parseLong(user.getDialectUID()));
+        if (null == u){
+            u =  new com.uas.platform.b2c.common.account.model.User();
+        }
         u.setUserPwd(user.getPassword());
         u.setUserName(user.getName());
         u.setEnable((short) 1);

+ 23 - 0
src/main/java/com/uas/platform/b2c/fa/payment/controller/BankInfoController.java

@@ -58,6 +58,18 @@ public class BankInfoController {
 		return bankInfoService.getPersonBankInfo(params, Type.BUYER.value());
 	}
 
+	/**
+	 * @author yujia  获取买家企业银行账户
+	 *
+	 * @return list
+	 */
+	@RequestMapping(value="/buy/enterprise", method=RequestMethod.GET, params = {"status=104","type=buyer"})
+	@ApiOperation(value = "获取买家企业银行账户", httpMethod = "GET")
+	public List<BankInfo> getBuyerEnterprise() {
+		logger.log("银行账户信息", "获取企业银行账户信息");
+		return bankInfoService.getEnterpriseBankInfoContainsStatus(Type.BUYER.value(), Status.ALLOW.value());
+	}
+
 	/**
 	 * 2016年9月8日 下午9:19:05
 	 * 删除指定的银行账户
@@ -247,4 +259,15 @@ public class BankInfoController {
 		logger.log("银行账户信息", "审核银行账户为id:" + id  + "通过");
 		return resultMap;
 	}
+
+	/**
+	 * 根据银行账号返回账户数
+	 * @param number 银行账号
+	 * @param type   类型,卖家、买家、平台
+	 * @return
+	 */
+	@RequestMapping(value = "/number/count", method = RequestMethod.GET)
+	public ResultMap getCountByNumber(Integer type, String number){
+		return bankInfoService.getCountByNumber(type, number);
+	}
 }

+ 48 - 4
src/main/java/com/uas/platform/b2c/fa/payment/dao/BankInfoDao.java

@@ -30,7 +30,25 @@ public interface BankInfoDao extends CrudRepository<BankInfo, Long>, JpaSpecific
 	List<BankInfo> findSupBankList(@Param("enuu") Long enuu, @Param("opraterUserType") Integer opraterUserType, @Param("status") List<Integer> status);
 
 	/**
-	 * 返回买家账户信息列表  --有enuu
+	 * 返回账户信息,兼容type版本
+	 * @param enuu
+	 * @param status
+	 * @param opraterUserType
+	 * @return
+	 */
+	List<BankInfo> findByEnuuAndStatusAndOpraterUserTypeOrderByNumAsc(Long enuu, Integer status, Integer opraterUserType);
+
+	/**
+	 * 根据下面参数获取企业账户信息
+	 * @param enuu 企业的enuu
+	 * @param opraterUserType 所属类型 买家 卖家,平台
+	 * @return list
+	 */
+	@Query(value = "select b from BankInfo b where b.enuu =:enuu and b.opraterUserType=:opraterUserType order by num")
+	List<BankInfo> findByEnuuAndTypeAndOpraterUserTypeOrderByNumAsc(@Param("enuu") Long enuu, @Param("opraterUserType") Integer opraterUserType);
+
+	/**
+	 * 根据下面参数获取企业账户信息
 	 *
 	 * @param useruu 个人uu
 	 * @param enuu 企业enuu
@@ -86,13 +104,39 @@ public interface BankInfoDao extends CrudRepository<BankInfo, Long>, JpaSpecific
 	int getCountByEnuuAndStatus(@Param("enuu") Long enuu, @Param("operateUserType") Integer operateUserType, @Param("status") List<Integer> status);
 
 	/**
-	 * 返回已启用的账户信息
-	 *
+	 * 根据银行账号查询个人账号下的账户个数
+	 * @param useruu
+	 * @param enuu
+	 * @param opraterUserType
+	 * @param status
+	 * @param number
+	 * @return
+	 */
+	@Query("select count(b) from BankInfo b where b.useruu=:useruu and b.enuu=:enuu and b.opraterUserType=:opraterUserType and b.status=:status and b.number=:number")
+	int getBuyerCountByNumberAndEnuu(@Param("useruu") Long useruu, @Param("enuu") Long enuu, @Param("opraterUserType") Integer opraterUserType, @Param("status") Integer status, @Param("number") String number);
+
+	/**
+	 * 根据银行账号查询个人账号下的账户个数
+	 * @param useruu
+	 * @param dissociative
+	 * @param status
+	 * @param number
+	 * @return
+	 */
+	@Query("select count(b) from BankInfo b where b.useruu=:useruu and b.dissociative=:dissociative and b.opraterUserType=:opraterUserType and b.status=:status and b.number=:number")
+	int getBuyerCountByNumberAndDissociative(@Param("useruu") Long useruu, @Param("dissociative") Integer dissociative, @Param("opraterUserType") Integer opraterUserType,
+											 @Param("status") Integer status, @Param("number") String number);
+
+	/**
+	 * 银行账户返回企业账户数
 	 * @param enuu
 	 * @param opraterUserType
 	 * @param status
+	 * @param number
 	 * @return
 	 */
-	List<BankInfo> findByEnuuAndStatusAndOpraterUserTypeOrderByNumAsc(Long enuu, Integer opraterUserType, Integer status);
+	@Query("select count(b) from BankInfo b where b.enuu=:enuu and b.opraterUserType=:opraterUserType and b.status in :status and b.number=:number")
+	int getEnterpriseCountByNumberAndEnuu(@Param("enuu") Long enuu, @Param("opraterUserType") Integer opraterUserType,
+									 @Param("status") List<Integer> status, @Param("number") String number);
 
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/fa/payment/service/BankInfoService.java

@@ -139,4 +139,13 @@ public interface BankInfoService {
 	 * @return ResultMap
 	 */
 	ResultMap auditBankInfo(Long id, Integer status, String... str);
+
+	/**
+	 * 根据银行账号返回账户数
+	 *
+	 * @param type
+	 * @param number
+	 * @return
+	 */
+	ResultMap getCountByNumber(Integer type, String number);
 }

+ 25 - 0
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.fa.payment.service.impl;
 
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.base.model.FileUpload;
 import com.uas.platform.b2c.common.base.service.FileService;
 import com.uas.platform.b2c.core.config.SysConf;
@@ -389,4 +390,28 @@ public class BankInfoServiceImpl implements BankInfoService {
 		}
 		return ResultMap.success(bankInfo);
 	}
+
+	@Override
+	public ResultMap getCountByNumber(Integer type, String number) {
+		if (type != Type.MALL.value() && type != Type.BUYER.value() && type != Type.MALL.value()){
+			return new ResultMap(CodeType.ERROR_STATE, "类型不存在,确认要查找账户的类型");
+		}
+		if (StringUtils.isEmpty(number)){
+			return new ResultMap(CodeType.NO_INFO, "银行账号丢失或为空,请确认银行账号");
+		}
+		Integer count = null;
+		if (type == Type.BUYER.value()){
+			Enterprise enterprise = SystemSession.getUser().getEnterprise();
+			if (enterprise != null){
+				count = bankInfoDao.getBuyerCountByNumberAndEnuu(SystemSession.getUser().getUserUU(), enterprise.getUu(),
+						Type.BUYER.value(), Status.ALLOW.value(), number);
+			}else {
+				count = bankInfoDao.getBuyerCountByNumberAndDissociative(SystemSession.getUser().getUserUU(), Type.PERSONAL.value(),
+						Type.BUYER.value(), Status.ALLOW.value(), number);
+			}
+		}else {
+			count = bankInfoDao.getEnterpriseCountByNumberAndEnuu(SystemSession.getUser().getEnterprise().getUu(), type, statusList, number);
+		}
+		return ResultMap.success(count);
+	}
 }

+ 1 - 0
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankTransferServiceImpl.java

@@ -270,6 +270,7 @@ public class BankTransferServiceImpl implements BankTransferService {
 		bankTransfer.setCollectenuu(sysConf.getEnUU()); // 收款方设置为B2C的uu
 		bankTransfer.setBanktranssn(EncodingRulesConstant.BANKTRANSFER.replace("_TIMESTAP_NUMBER", createNumberService.getTimeNumber("trade$bank_transfer", 8)));
 		bankTransfer.setTranferCreateTime(new Date());
+		bankTransfer.setTransferTime(new Date());
 		bankTransfer.setOperateType(Type.MALL.value());
 
 		BankTransfer saveBankTransfer = bankTransferDao.save(bankTransfer);

+ 1 - 1
src/main/java/com/uas/platform/b2c/logistics/model/DistributionRule.java

@@ -89,7 +89,7 @@ public class DistributionRule {
 
 	/**
 	 * 计费方式
-	 * 1-统一规定运费,2-按总金额计算
+	 * 1-统一规定运费,2-按总金额计算, 3-到付,到付设置为统一运费0
 	 */
 	@Column(name = "rule_fare_type")
 	private Short fareType;

+ 13 - 0
src/main/java/com/uas/platform/b2c/logistics/model/UsableRuleInfo.java

@@ -33,6 +33,10 @@ public class UsableRuleInfo {
 	 * 配送规则币别
 	 */
 	private String currencyName;
+	/**
+	 * 支付类型
+	 */
+	private Short fareType;
 
 	public UsableRuleInfo(){
 
@@ -44,6 +48,7 @@ public class UsableRuleInfo {
 		this.method = rule.getShippingMethod();
 		this.currencyName = rule.getCurrencyName();
 		this.enuu = rule.getEnuu();
+		this.fareType = rule.getFareType();
 	}
 
 	public Long getId() {
@@ -101,4 +106,12 @@ public class UsableRuleInfo {
 	public void setUuid(String uuid) {
 		this.uuid = uuid;
 	}
+
+	public Short getFareType() {
+		return fareType;
+	}
+
+	public void setFareType(Short fareType) {
+		this.fareType = fareType;
+	}
 }

+ 14 - 1
src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributionRuleServiceImpl.java

@@ -84,6 +84,13 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		if (rule.getFareType() == 2 && CollectionUtils.isEmpty(rule.getFares())){
 			return new ResultMap(CodeType.NO_INFO, "请完善计费方式");
 		}
+		if (rule.getFareType() == 2){
+			rule.setUniformPrice(null);
+		}else {
+			if (CollectionUtils.isEmpty(rule.getFares())){
+				rule.setQtyFare(null);
+			}
+		}
 		if (rule.getId() == null){ //新增配送规则,初始化数据
 			Long uu = SystemSession.getUser().getUserUU();
 			Long enuu = SystemSession.getUser().getEnterprise().getUu();
@@ -101,6 +108,9 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		}else {
 			rule.setActive(ShortConstant.NO_SHORT);
 		}
+		if (rule.getFareType() == 3){ //到付类型
+			rule.setUniformPrice(0d);
+		}
 		if (!isAdd){ //若为另存为,则将主键id设为空
 			if (rule.getId() != null){
 				rule.setId(null);
@@ -397,9 +407,12 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 	 */
 	public Double getFareOfRule(DistributionRule rule, Double price){
 		Double needFare = null;
-		if (rule.getFareType() == 1){
+		if (rule.getFareType() == 1 || rule.getFareType() == 3){
 			needFare = rule.getUniformPrice();
 		}else {
+			if (CollectionUtils.isEmpty(rule.getFares())){
+				throw new  IllegalOperatorException("配送规则信息丢失,刷新后重试");
+			}
 			for (RuleQtyFare fare : rule.getFares()){
 				if (fare.getStart() <= price){
 					if (fare.getEnd() != null){

+ 0 - 28
src/main/java/com/uas/platform/b2c/prod/commodity/controller/GoodsController.java

@@ -22,7 +22,6 @@ import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
-import org.apache.commons.collections.map.HashedMap;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -649,31 +648,4 @@ public class GoodsController {
 		logger.log("商品管理", "下架该公司所有商品");
 		return goodsService.downAllGoodsByEnterprise(eName);
 	}
-
-	@RequestMapping(value = "/test/str", method = RequestMethod.GET)
-	public void getTest() {
-		searchService.getKindIds("电阻", 1, 10);
-
-		searchService.getKinds("电阻", 1, 10);
-
-		searchService.getBrandIds("Panasonic", 1, 10);
-
-		searchService.getBrands("Panasonic", 1, 10);
-
-		com.uas.search.model.PageParams page = new com.uas.search.model.PageParams();
-		page.setPage(1);
-		page.setSize(10);
-		searchService.getComponentIds("ac", page);
-
-		Map<com.uas.search.model.PageParams.FilterField, Object> filters = new HashedMap();
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_KINDID, "401,23");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_BRANDID, "45");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_STORE_TYPE, "DISTRIBUTION");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_CRNAME, "RMB-USD");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_MINPRICERMB, "0");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_MAXPRICERMB, "10");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_MINPRICEUSD, "0");
-		filters.put(com.uas.search.model.PageParams.FilterField.GOODS_MAXPRICEUSD, "10");
-		page.setFilters(filters);
-	}
 }

+ 26 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java

@@ -30,8 +30,11 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.StatementCallback;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
@@ -41,6 +44,9 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -76,6 +82,9 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	@Autowired
 	private EnterpriseService enterpriseService;
 
+	@Autowired
+	private JdbcTemplate jdbcTemplate;
+
 	@Override
 	public ReleaseProductByBatch save(ReleaseProductByBatch releaseProductByBatch) {
 		return releaseProductByBatch;
@@ -802,7 +811,23 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
 	@Override
 	public String publishByBatch(String batch) {
 		Enterprise enterprise = SystemSession.getUser().getEnterprise();
-		String num = releaseProductByBatchDao.callPublishByBatch(enterprise.getUu(), enterprise.getEnName(), batch);
+		final Object [] obj = new Object[]{enterprise.getUu(), enterprise.getEnName(), batch};
+		String sql = "/*#mycat:db_type=master*/ set @enuu = %s; set @enName = '%s'; set @batch = '%s'; call product_release_batch_publish(@enuu, @enName, @batch, @out)";
+		final String updateSql = String.format(sql, obj);
+		String num = jdbcTemplate.execute(new StatementCallback<String>() {
+
+			@Override
+			public String doInStatement(Statement stmt) throws SQLException, DataAccessException {
+				stmt.executeUpdate(updateSql);
+				stmt.execute("select @out");
+				ResultSet rs = stmt.getResultSet();
+				if (null != rs) {
+					rs.next();
+					return rs.getString(1);
+				}
+				return null;
+			}
+		});
 		if(!"0".equals(num)) {
 			List<Goods> goodsList = goodsDao.findByBatchid(batch);
 			Set<String> uuids = new HashSet<String>();

+ 11 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/api/BrandController.java

@@ -65,6 +65,17 @@ public class BrandController {
 		return brandService.getInitialSimpleInfo(keyword);
 	}
 
+	/**
+	 * 分页获取按字符串获取以此字符为首字母的品牌信息
+	 * @return map(首字母,超简易品牌信息)
+	 */
+	@RequestMapping(value = "/initial/first/{keyword}", method = RequestMethod.GET)
+	public Page<BrandMostSimpleInfo> getInitialSimpleInfoByFirst(@PathVariable String keyword ,PageParams page) {
+		if (StringUtils.isEmpty(keyword))
+			keyword = "A";
+		return brandService.getInitialSimpleInfoByFirst(keyword,page);
+	}
+
 	/**
 	 * 查找所有简单有效品牌信息
 	 * @param keyword 关键词

+ 10 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/dao/BrandMostSimpleInfoDao.java

@@ -1,6 +1,8 @@
 package com.uas.platform.b2c.prod.product.brand.dao;
 
 import com.uas.platform.b2c.prod.product.brand.modal.BrandMostSimpleInfo;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -25,6 +27,14 @@ public interface BrandMostSimpleInfoDao extends JpaSpecificationExecutor<BrandMo
     @Query(nativeQuery = true, value = "select * from product$brand where br_inital in :initals")
     public List<BrandMostSimpleInfo> findInInitals(@Param("initals") String[] initals);
 
+    /**
+     * 分页根据首字母获取品牌信息
+     * @param initals
+     * @return
+     */
+    @Query(value = "select b from BrandMostSimpleInfo b  where b.inital in :initals")
+    public Page<BrandMostSimpleInfo> findInInitalsPage(@Param("initals") String[] initals , Pageable pageable);
+
     /**
      * 根据批次号获取品牌信息
      * @param batchIds id批次号

+ 8 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/BrandService.java

@@ -5,6 +5,7 @@ import com.uas.platform.b2c.prod.product.brand.modal.BrandInfo;
 import com.uas.platform.b2c.prod.product.brand.modal.BrandMostSimpleInfo;
 import com.uas.platform.b2c.prod.product.brand.modal.BrandVersion;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
 import org.springframework.data.domain.Page;
 
 import java.util.List;
@@ -54,6 +55,13 @@ public interface BrandService {
 	 */
 	public Map<String, List<BrandMostSimpleInfo>> getInitialSimpleInfo(String keyword);
 
+	/**
+	 * 获取按字符串获取以此字符串为首字母的品牌信息
+	 * @param keyword 关键词
+	 * @return 品牌简易信息
+	 */
+	public Page<BrandMostSimpleInfo> getInitialSimpleInfoByFirst(String keyword , PageParams params);
+
 	/**
 	 * 获取BrandInfo分页数据
 	 * @param keyword 关键词

+ 8 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/impl/BrandServiceImpl.java

@@ -12,6 +12,7 @@ import com.uas.platform.b2c.prod.product.brand.service.BrandService;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
@@ -20,6 +21,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
@@ -117,6 +119,12 @@ public class BrandServiceImpl implements BrandService {
 		return map;
 	}
 
+	@Override
+	public Page<BrandMostSimpleInfo> getInitialSimpleInfoByFirst(String keyword , PageParams params) {
+		Pageable pageable = new PageInfo(params);
+		return brandMostSimpleInfoDao.findInInitalsPage(new String[]{keyword},pageable);
+	}
+
 	// 判断一个字符串是否含有中文
 	public static boolean isChinese(String str) {
 		if (str == null) return false;

+ 36 - 0
src/main/java/com/uas/platform/b2c/prod/product/common/CommonTask.java

@@ -0,0 +1,36 @@
+package com.uas.platform.b2c.prod.product.common;
+
+import com.uas.platform.b2c.prod.product.common.dao.CommonCountDao;
+import com.uas.platform.b2c.prod.product.common.model.CommonCount;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 通用模块任务
+ *
+ * @version 2017/10/21 18:03 wangyc
+ */
+@Component("CommonTask")
+public class CommonTask {
+
+    private final CommonCountDao commonCountDao;
+
+    private final JdbcTemplate jdbcTemplate;
+
+    @Autowired
+    public CommonTask(CommonCountDao commonCountDao, JdbcTemplate jdbcTemplate) {
+        this.commonCountDao = commonCountDao;
+        this.jdbcTemplate = jdbcTemplate;
+    }
+
+    public void updateCount() {
+        List<CommonCount> commonCounts = commonCountDao.findByStatus((short) 1);
+        for (CommonCount commonCount : commonCounts) {
+            commonCount.setCount(jdbcTemplate.queryForLong(commonCount.getSql()));
+        }
+        commonCountDao.save(commonCounts);
+    }
+}

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/product/common/api/CommonCountController.java

@@ -27,6 +27,6 @@ public class CommonCountController {
      */
     @RequestMapping(method = RequestMethod.GET, params = "_status=actived")
     public List<CommonCount> findActived() {
-        return commonCountService.findByStatus((short) 1);
+        return commonCountService.findByStatus((short) 1, "b2c_index");
     }
 }

+ 9 - 2
src/main/java/com/uas/platform/b2c/prod/product/common/dao/CommonCountDao.java

@@ -14,9 +14,16 @@ import java.util.List;
 public interface CommonCountDao extends JpaSpecificationExecutor<CommonCount>,JpaRepository<CommonCount, Long>{
 
     /**
-     * 通过状态获取计数器
+     * 通过状态和应用获取计数器
      * @param status 状态
      * @return 计数器
      */
-    public List<CommonCount> findByStatusOrderByDetno(Short status);
+    public List<CommonCount> findByStatusAndUsedForOrderByDetno(Short status, String usedFor);
+
+    /**
+     * 通过状态获取计数器
+     * @param status
+     * @return
+     */
+    public List<CommonCount> findByStatus(Short status);
 }

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/product/common/model/CommonCount.java

@@ -48,6 +48,12 @@ public class CommonCount implements Serializable{
     @Column(name = "cc_count")
     private Long count;
 
+    /**
+     * 应用
+     */
+    @Column(name = "cc_usedfor")
+    private String usedFor;
+
     /**
      * 状态,是否激活(1:是;0:否)
      */
@@ -94,6 +100,14 @@ public class CommonCount implements Serializable{
         this.count = count;
     }
 
+    public String getUsedFor() {
+        return usedFor;
+    }
+
+    public void setUsedFor(String usedFor) {
+        this.usedFor = usedFor;
+    }
+
     public Short getStatus() {
         return status;
     }

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/common/service/CommonCountService.java

@@ -10,9 +10,9 @@ import java.util.List;
 public interface CommonCountService {
 
     /**
-     * 根据状态获取计数器
+     * 根据状态和用途获取计数器
      * @param status 状态
      * @return
      */
-    List<CommonCount> findByStatus(Short status);
+    List<CommonCount> findByStatus(Short status, String usedFor);
 }

+ 2 - 6
src/main/java/com/uas/platform/b2c/prod/product/common/service/impl/CommonCountServiceImpl.java

@@ -4,7 +4,6 @@ import com.uas.platform.b2c.prod.product.common.dao.CommonCountDao;
 import com.uas.platform.b2c.prod.product.common.model.CommonCount;
 import com.uas.platform.b2c.prod.product.common.service.CommonCountService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -18,12 +17,9 @@ public class CommonCountServiceImpl implements CommonCountService{
     @Autowired
     private CommonCountDao commonCountDao;
 
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
     @Override
-    public List<CommonCount> findByStatus(Short status) {
-        List<CommonCount> commonCounts = commonCountDao.findByStatusOrderByDetno(status);
+    public List<CommonCount> findByStatus(Short status, String usedFor) {
+        List<CommonCount> commonCounts = commonCountDao.findByStatusAndUsedForOrderByDetno(status, usedFor);
         for (CommonCount commonCount : commonCounts) {
             commonCount.setSql(null);
         }

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/product/component/dao/ComponentGoodsDao.java

@@ -21,7 +21,7 @@ public interface ComponentGoodsDao extends JpaSpecificationExecutor<ComponentGoo
 	 * @param ids
 	 * @return 产品列表信息
 	 */
-	@Query("select cg from ComponentGoods cg where cg.cmpId in (:ids) order by instr(':ids', cg.id) , cg.reserve")
+	@Query("select cg from ComponentGoods cg where cg.cmpId in (:ids) order by instr(':ids', cg.cmpId) , cg.reserve")
 	public List<ComponentGoods> findByIdsInOrder(@Param("ids") Long[] ids);
 
 	/**

+ 7 - 3
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentGoodsServiceImpl.java

@@ -66,11 +66,15 @@ public class ComponentGoodsServiceImpl implements ComponentGoodsService {
 				}
 				searchResult = searchService.getComponentIds(code, pageParams);
 				@SuppressWarnings("unchecked")
-				List<Long> componentIds = (List<Long>) searchResult.get("componentIds");
+				List<Integer> componentIds = (List<Integer>) searchResult.get("componentIds");
+				List<Long> componentIdsLong = new ArrayList<>();
+				for (Integer cid:componentIds) {
+					componentIdsLong.add(cid.longValue());
+				}
 				List<ComponentGoods> componentGoods = new ArrayList<>();
 				if (componentIds.size() > 0) {
-					Long[] idArr = new Long[componentIds.size()];
-					componentGoods = componentGoodsDao.findByIdsInOrder(componentIds.toArray(idArr));
+					Long[] idArr = new Long[componentIdsLong.size()];
+					componentGoods = componentGoodsDao.findByIdsInOrder(componentIdsLong.toArray(idArr));
 				}
 				int length = (int)searchResult.get("total");
 				if(length < componentGoods.size()) {

+ 3 - 22
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.uas.api.b2c_erp.buyer.model.B2cOrder;
 import com.uas.api.b2c_erp.buyer.model.B2cOrderDetail;
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.logistics.model.InvoiceFOrder;
@@ -13,33 +14,13 @@ import com.uas.platform.b2c.trade.aftersale.model.AfterSaleStatus;
 import com.uas.platform.b2c.trade.aftersale.util.ExceptionUtil;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.EncodingRulesConstant;
-import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.StatusColumn;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.OrderBy;
-import javax.persistence.Table;
-import javax.persistence.Transient;
+import javax.persistence.*;
 import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 /**
  * 订单

+ 0 - 4
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -1,10 +1,7 @@
 package com.uas.platform.b2c.trade.order.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.sun.org.apache.xpath.internal.operations.Bool;
-import com.sun.org.apache.xpath.internal.operations.Or;
 import com.uas.api.b2c_erp.buyer.model.B2cOrder;
 import com.uas.api.exception.B2CException;
 import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
@@ -649,7 +646,6 @@ public class OrderServiceImpl implements OrderService {
         JSONObject orderInfo  = ordersInfos[0];
 
         JSONObject splitObject = orderInfo.getJSONObject("splitInfo");
-        System.out.println(splitObject);
 
         if(resultMap1.getCode() != ResultMapType.OK.getCode()) {
             return resultMap1;

+ 13 - 0
src/main/java/com/uas/platform/b2c/trade/presale/controller/CollectionController.java

@@ -109,6 +109,19 @@ public class CollectionController {
 		return "success";
 	}
 
+	/**
+	 * 批量删除指定的收藏信息 通过器件id
+	 *
+	 * @param ids 删除的ids
+	 * @return String
+	 */
+	@RequestMapping(value = "/delete/cmpId", method = RequestMethod.POST)
+	@ApiOperation(value = "批量删除指定的收藏信息", httpMethod = "POST")
+	public String deleteByCmpIds(@ApiParam(required = true, value = "id集合") @RequestBody List<Long> ids) {
+		collectionService.deleteByCmpIds(ids);
+		return "success";
+	}
+
 	/**
 	 * 清空收藏的信息
 	 *

+ 12 - 0
src/main/java/com/uas/platform/b2c/trade/presale/controller/StoreFocusController.java

@@ -62,6 +62,18 @@ public class StoreFocusController {
 		return storeFocusService.deleteByIds(ids);
 	}
 
+	/**
+	 * 单个/批量删除店铺关注记录 通过店铺id
+	 *
+	 * @param ids
+	 * @return String
+	 */
+	@RequestMapping(value = "/delete/storeId", method = RequestMethod.POST)
+	@ApiOperation(value = "单个/批量删除店铺关注记录", httpMethod = "POST")
+	public String deleteByStoreIds(@ApiParam(required = true, value = "id集合") @RequestBody List<Long> ids) {
+		return storeFocusService.deleteByStoreIds(ids);
+	}
+
 	/**
 	 * 分页获取指定uu号下的店铺关注信息
 	 *

+ 7 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/CollectionService.java

@@ -29,6 +29,13 @@ public interface CollectionService {
 	 */
 	String deleteByIds(List<Long> ids);
 
+	/**
+	 * 批量删除收藏信息 通过器件id
+	 * @param ids 删除的收藏ids
+	 * @return String 返回success
+	 */
+	String deleteByCmpIds(List<Long> ids);
+
 	/**
 	 * 2016年3月23日 下午3:29:14
 	 * 清空类型 清空收藏夹

+ 8 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/StoreFocusService.java

@@ -35,6 +35,14 @@ public interface StoreFocusService {
 	 */
 	String deleteByIds(List<Long> ids);
 
+	/**
+	 * 单个/批量删除店铺关注记录
+	 *
+	 * @param ids 要删除的ids
+	 * @return String 返回success
+	 */
+	String deleteByStoreIds(List<Long> ids);
+
 	/**
 	 * 分页获取指定uu号下的店铺关注信息
 	 * 

+ 17 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/impl/CollectionServiceImpl.java

@@ -54,6 +54,23 @@ public class CollectionServiceImpl implements CollectionService {
 		return "success";
 	}
 
+	@Override
+	public String deleteByCmpIds(List<Long> ids) {
+		Iterator<Long> it = ids.iterator();
+		int count = 0;
+		while (it.hasNext()) {
+			Long id = (Long) it.next();
+			List<Collection> c = collectionDao.findStoreByUseruuAndEnuuAndKindAndComponentid(SystemSession.getUser().getUserUU(),
+					SystemSession.getUser().getEnterprise().getUu(),2,id);
+			if (c.size()>0){
+				collectionDao.delete(c.get(0).getId());
+				count++;
+			}
+		}
+		System.out.println("删除的条数" + count);
+		return "success";
+	}
+
 	@Override
 	public String clear(int kind) {
 		int count = collectionDao.deleteByuseruuAndKindAndEnuu(SystemSession.getUser().getUserUU(), kind,

+ 17 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/impl/StoreFocusServiceImpl.java

@@ -65,6 +65,23 @@ public class StoreFocusServiceImpl implements StoreFocusService {
 		return "success";
 	}
 
+	@Override
+	public String deleteByStoreIds(List<Long> ids) {
+		Iterator<Long> it = ids.iterator();
+		int count = 0;
+		while (it.hasNext()) {
+			Long id = (Long) it.next();
+			List<StoreFocus> list = storeFocusDao.findStoreFocusByUseruuAndEnuuAndStoreid(
+					SystemSession.getUser().getUserUU(), SystemSession.getUser().getEnterprise().getUu(), id);
+			if (list.size()>0){
+				storeFocusDao.delete(list.get(0).getId());
+				count++;
+			}
+		}
+		System.out.println("删除的条数" + count);
+		return "success";
+	}
+
 	@Override
 	public Page<StoreFocus> getPageStoreFocus(final PageInfo info) {
 		if (SystemSession.getUser().getEnterprise() != null) {

+ 1 - 3
src/main/java/com/uas/platform/b2c/trade/rate/controller/RateController.java

@@ -1,13 +1,13 @@
 package com.uas.platform.b2c.trade.rate.controller;
 
 
+import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.fa.payment.utils.StringUtils;
 import com.uas.platform.b2c.trade.order.dao.OrderDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
 import com.uas.platform.b2c.trade.order.model.Order;
-import com.uas.platform.b2c.trade.order.model.OrderDetail;
 import com.uas.platform.b2c.trade.order.model.Purchase;
 import com.uas.platform.b2c.trade.rate.model.RateBuyer;
 import com.uas.platform.b2c.trade.rate.model.RateGoods;
@@ -19,8 +19,6 @@ import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
-import com.uas.platform.core.model.Status;
-import com.uas.platform.core.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;

+ 1 - 4
src/main/java/com/uas/platform/b2c/trade/rate/service/impl/RateServiceImpl.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.trade.rate.service.impl;
 
 import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.trade.order.dao.OrderDao;
 import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
@@ -18,10 +19,7 @@ import com.uas.platform.b2c.trade.rate.model.RateVendor;
 import com.uas.platform.b2c.trade.rate.service.RateService;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
-import com.uas.platform.core.model.Status;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
-import org.apache.kafka.common.metrics.stats.Rate;
-import org.hibernate.criterion.LogicalExpression;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -32,7 +30,6 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 

+ 1 - 1
src/main/resources/dev/jdbc.properties

@@ -1,6 +1,6 @@
 jdbc.driverClassName=com.mysql.jdbc.Driver
 #jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
-jdbc.url=jdbc:mysql://192.168.253.12:3306/mall_test_dev?characterEncoding=UTF-8
+jdbc.url=jdbc:mysql://192.168.253.12:3306/mall_test_dev?characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true
 jdbc.username=root
 jdbc.password=select111***
 jdbc.initialSize=1

+ 1 - 1
src/main/resources/prod/jdbc.properties

@@ -3,7 +3,7 @@
 #jdbc.username=platform$b2b
 #jdbc.password=select*fromuu
 jdbc.driverClassName=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://10.10.0.208:8066/mall_prod?characterEncoding=UTF-8
+jdbc.url=jdbc:mysql://10.10.0.208:8066/mall_prod?characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true
 jdbc.username=sa
 jdbc.password=Select123!#%*(
 jdbc.initialSize=1

+ 3 - 0
src/main/resources/spring/task.xml

@@ -19,5 +19,8 @@
         <task:scheduled ref="RateTask" method="autoAfterRate" cron="0 0 1 * * ?"/>
        <!-- <task:scheduled ref="RateTask" method="autoAfterRate" cron="* */10 * * * ?"/>-->
     </task:scheduled-tasks>
+    <task:scheduled-tasks>
+        <task:scheduled ref="CommonTask" method="updateCount" cron="0 0 1 * * ?"/>
+    </task:scheduled-tasks>
     <context:annotation-config />
 </beans>

+ 1 - 1
src/main/resources/test/jdbc.properties

@@ -1,6 +1,6 @@
 jdbc.driverClassName=com.mysql.jdbc.Driver
 #jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
-jdbc.url=jdbc:mysql://192.168.253.12:3306/mall_test_dev?characterEncoding=UTF-8
+jdbc.url=jdbc:mysql://192.168.253.12:3306/mall_test_dev?characterEncoding=UTF-8&allowMultiQueries=true&rewriteBatchedStatements=true
 jdbc.username=root
 jdbc.password=select111***
 jdbc.initialSize=1

+ 7 - 3
src/main/webapp/WEB-INF/views/normal/proxyLogout.html

@@ -11,13 +11,17 @@
 </head>
 <body>
 <script type="text/javascript">
-	function proxyLogout(askUrl, retUrl) {
+	function proxyLogout(askUrl, retUrl, logoutUrl) {
 	    $.getJSON(askUrl + "?callback=?", function(d){
-	    	window.location.href = retUrl;
+            if (d.error) {
+                window.location.href = logoutUrl
+            } else {
+                window.location.href = retUrl && retUrl !== 'null' ? retUrl : '/'
+            }
 	    });
 	}
 	$.getJSON('logout/crossBefore', function(data){
-		proxyLogout(data.askUrl, data.returnUrl);
+		proxyLogout(data.askUrl, data.returnUrl ,data.logoutUrl);
 	});
 </script>
 <div align="center" style="margin-top: 180px;">

+ 1 - 1
src/main/webapp/resources/js/admin/controllers/customService/ReviewerEmailInfo.js

@@ -20,7 +20,7 @@ define(['app/app'], function(app) {
 				templateUrl : 'static/view/admin/customService/modal/addMailInfo.html',
 				controller : 'addMailInfoCtrl',
 				resolve : {
-					
+
 				}
 			});
 			

+ 13 - 1
src/main/webapp/resources/js/common/query/bankInfo.js

@@ -6,6 +6,15 @@ define(['ngResource'], function(ngResource) {
 				method : 'GET',
 				params : {type : 'buyer'}
 			},
+			getBuyEnterpriseBank : {
+				url : 'trade/bankInfo/buy/enterprise',
+				method : 'GET',
+				isArray : true,
+				params : {
+					type : 'buyer',
+					status : 104
+				}
+			},
 			getSaleEeterpriseBank : {
 				url : 'trade/bankInfo/sale/enterprise',
 				method: 'GET',
@@ -35,7 +44,10 @@ define(['ngResource'], function(ngResource) {
 					status : 104
 				}
 			},
-			
+			getCountByNumber : {
+				url : 'trade/bankInfo/number/count',
+				method: 'GET'
+			},
 			deleteBank : {
 				url : 'trade/bankInfo/delete/:id',
 				method : 'DELETE'

+ 9 - 6
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js

@@ -158,10 +158,13 @@ define(['app/app'], function (app) {
 
 		var loadData = function() {
 			Order.getIndividualOrder($scope.param, function(data) {
-				$scope.AllOrderInfo = data;
-                if($scope.childStatus ==''){
-                    $scope.AllOrderInfo[$scope.status] = data.totalElements;
-                }
+                if (!$scope.startDate && !$scope.endDate && !$scope.keyword){
+                    $scope.AllOrderInfo = data;
+                    if($scope.childStatus ==''){
+                        $scope.AllOrderInfo[$scope.status] = data.totalElements;
+                    }
+				}
+                $scope.isSearch = false;
 				$scope.currenctOrders = data.content;
 				angular.forEach($scope.currenctOrders, function(data){
                     data.ensurePrice = Number(NumberService.toCeil(data.ensurePrice, 2));
@@ -414,9 +417,9 @@ define(['app/app'], function (app) {
 			$scope.param.page = 1;
 			$scope.param.status = getState();
 			$scope.param.keyword = $scope.keyword;
-
+            $scope.setChildStatus('','订单状态')
 			loadData();
-			getCounts();
+			//getCounts();
 		};
 
 		$scope.noticeShipConfirm = function () {

+ 21 - 2
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_pay_ctrl.js

@@ -3,17 +3,21 @@
  */
 define(['app/app'], function(app) {
 	'use strict';
-	app.register.controller('BuyerPayCtrl', ['$scope', '$rootScope', 'ngTableParams', 'BaseService', 'bankInfoService', '$filter', '$modal', 'toaster', 'OrderSimpleInfo', 'Loading', function($scope, $rootScope, ngTableParams, BaseService, bankInfoService, $filter, $modal, toaster, OrderSimpleInfo, Loading) {
+	app.register.controller('BuyerPayCtrl', ['$scope', '$rootScope', 'ngTableParams', 'BaseService', 'bankInfoService', '$filter', 'SessionService', '$modal', 'toaster', 'OrderSimpleInfo', 'Loading', function($scope, $rootScope, ngTableParams, BaseService, bankInfoService, $filter, SessionService, $modal, toaster, OrderSimpleInfo, Loading) {
 		$rootScope.active = 'pay_center';
 
 		var hideBankFilter = $filter("hideBankFilter");
 
-		$scope.status = 'pay-history';
+		//历史记录的状态
+		var hiStatus= SessionService.get('buyCenter');
+
+		$scope.status = hiStatus == null ? 'pay-info' : hiStatus;
 
 		//切换银行账户信息,历史记录的的的状态
 		$scope.toggleStatus = function(status) {
 			if($scope.status != status) {
 				$scope.status = status;
+				SessionService.set('paycenter', status);
 				loadData();
 			}
 		};
@@ -589,6 +593,7 @@ define(['app/app'], function(app) {
 					}else {
 						$scope.numberPattError = true;
 					}
+					validateRepeat($scope.account.number);
 				}
 			}else if(num == 4){
 				//验证开户名称
@@ -603,6 +608,20 @@ define(['app/app'], function(app) {
 			}
 		};
 
+		var validateRepeat = function (number) {
+			bankInfoService.getCountByNumber({type:1062,number:number}, {}, function (data) {
+				if (data.success){
+					if (data.data != 0){
+						$scope.repeatError = true;
+					}else {
+						$scope.repeatError = false;
+					}
+				}else {
+					toaster.pop("info", data.message);
+				}
+			});
+		};
+
 		$scope.confirm = function() {
 			var account = $scope.account;
 

+ 77 - 60
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_transfer_ctrl.js

@@ -22,8 +22,6 @@ define([ 'app/app' ], function(app) {
 			$state.go('buyer_order');
 		}
 
-		$scope.purKind = $rootScope.userInfo.enterprises ? false : true;//应付账户的类别, 默认是企业
-		$scope.saleKind = false;//应收账户的类别,默认是企业
 		var ids=SessionService.get("ids");
 		
 		var page = Number(SessionService.get("page")) || 1;
@@ -169,27 +167,28 @@ define([ 'app/app' ], function(app) {
 		
 		//根据单选框的状态,提取不同的数据
 		var getBuyAccount = function() {
-			if(!$scope.purKind) {
-				bankInfoService.getBuyEnterpriseBank('', function(data) {
-					$scope.buyAccountInfos = resolveData(data);
-					angular.forEach($scope.buyAccountInfos, function(buyAccountInfo) {
-						buyAccountInfo.filterAccount = hideBankFilter(buyAccountInfo.number);
-					});
-					$scope.buyAccount = getOriginalData($scope.buyAccountInfos);
-				}, function(error) {
-					toaster.pop('error', '错误', '提取企业账户信息失败');
-				});
-			}else {
-				bankInfoService.getBuyPersonalBank('', function(data) {
-					$scope.buyAccountInfos = resolveData(data);
-					angular.forEach($scope.buyAccountInfos, function(buyAccountInfo) {
-						buyAccountInfo.filterAccount = hideBankFilter(buyAccountInfo.number);
-					});
-					$scope.buyAccount = getOriginalData($scope.buyAccountInfos);
-				}, function(error) {
-					toaster.pop('error', '错误', '提取个人账户信息失败');
+			bankInfoService.getBuyEnterpriseBank('', function(data) {
+				$scope.buyAccountInfos = resolveData(data);
+				angular.forEach($scope.buyAccountInfos, function(buyAccountInfo) {
+					buyAccountInfo.filterAccount = hideBankFilter(buyAccountInfo.number);
 				});
-			}
+				$scope.buyAccount = getOriginalData($scope.buyAccountInfos);
+			}, function(error) {
+				toaster.pop('error', '错误', '提取企业账户信息失败');
+			});
+			// if(!$scope.purKind) {
+
+			// }else {
+			// 	bankInfoService.getBuyPersonalBank('', function(data) {
+			// 		$scope.buyAccountInfos = resolveData(data);
+			// 		angular.forEach($scope.buyAccountInfos, function(buyAccountInfo) {
+			// 			buyAccountInfo.filterAccount = hideBankFilter(buyAccountInfo.number);
+			// 		});
+			// 		$scope.buyAccount = getOriginalData($scope.buyAccountInfos);
+			// 	}, function(error) {
+			// 		toaster.pop('error', '错误', '提取个人账户信息失败');
+			// 	});
+			// }
 		};
 		
 		//开始时,就获取账户信息
@@ -197,45 +196,46 @@ define([ 'app/app' ], function(app) {
 		
 		//获取管理平台账户信息
 		var getSellerAccount = function() {
-			if(!$scope.saleKind) {
-				bankInfoService.getAdminEnterAccount('', function(data) {
-					$scope.saleAccountInfos = resolveData(data);
-					angular.forEach($scope.saleAccountInfos, function(saleAccountInfo) {
-						saleAccountInfo.filterAccount = hideBankFilter(saleAccountInfo.number);
-					});
-					$scope.saleAccount = getOriginalData($scope.saleAccountInfos);
-				}, function(res) {
-					toaster.pop('error', '错误', '获取卖家企业账户信息失败');
+			bankInfoService.getAdminEnterAccount('', function(data) {
+				$scope.saleAccountInfos = resolveData(data);
+				angular.forEach($scope.saleAccountInfos, function(saleAccountInfo) {
+					saleAccountInfo.filterAccount = hideBankFilter(saleAccountInfo.number);
 				});
-			}else {
-				bankInfoService.getAdminPersAccount('', function(data) {
-					$scope.saleAccountInfos = resolveData(data);
-					angular.forEach($scope.saleAccountInfos, function(saleAccountInfo) {
-						saleAccountInfo.filterAccount = hideBankFilter(saleAccountInfo.number);
-					});
-					$scope.saleAccount = getOriginalData($scope.saleAccountInfos);
-				}, function(res) {
-					toaster.pop('error', '错误', '获取卖家个人账户信息失败');
-				});
-			}
+				$scope.saleAccount = getOriginalData($scope.saleAccountInfos);
+			}, function(res) {
+				toaster.pop('error', '错误', '获取卖家企业账户信息失败');
+			});
+			// if(!$scope.saleKind) {
+
+			// }else {
+			// 	bankInfoService.getAdminPersAccount('', function(data) {
+			// 		$scope.saleAccountInfos = resolveData(data);
+			// 		angular.forEach($scope.saleAccountInfos, function(saleAccountInfo) {
+			// 			saleAccountInfo.filterAccount = hideBankFilter(saleAccountInfo.number);
+			// 		});
+			// 		$scope.saleAccount = getOriginalData($scope.saleAccountInfos);
+			// 	}, function(res) {
+			// 		toaster.pop('error', '错误', '获取卖家个人账户信息失败');
+			// 	});
+			// }
 		}
 		
 		getSellerAccount();
 
-		$scope.set = function(data, isBuy) {
-			if(isBuy) {
-				if(!angular.equals($scope.purKind, data)) {
-					$scope.purKind = data;
-					getBuyAccount();
-				}
-			}else {
-				if(!angular.equals($scope.saleKind, data)) {
-					$scope.saleKind = data;
-					getSellerAccount();
-				}
-			}
-
-		};
+		// $scope.set = function(data, isBuy) {
+		// 	if(isBuy) {
+		// 		if(!angular.equals($scope.purKind, data)) {
+		// 			$scope.purKind = data;
+		// 			getBuyAccount();
+		// 		}
+		// 	}else {
+		// 		if(!angular.equals($scope.saleKind, data)) {
+		// 			$scope.saleKind = data;
+		// 			getSellerAccount();
+		// 		}
+		// 	}
+        //
+		// };
 		
 		// 搜索框内容转换成大写
 		var t;
@@ -393,10 +393,10 @@ define([ 'app/app' ], function(app) {
 				toaster.pop('info', '提示', '请选择卖家账户');
 				return ;
 			}
-			if(!$scope.transferTime) {
-				toaster.pop('info', '提示', '请选择付款日期');
-				return ;
-			}
+			// if(!$scope.transferTime) {
+			// 	toaster.pop('info', '提示', '请选择付款日期');
+			// 	return ;
+			// }
 			if(!$scope.imageUrl){
                 toaster.pop('info', '提示', '请选择付款截图');
                 return ;
@@ -443,6 +443,23 @@ define([ 'app/app' ], function(app) {
             $scope.imageUrl = $data.path;
         };
 
+		$scope.deleteImg =function () {
+			$scope.imageUrl = null;
+		};
+
+		// 查看水单
+		$scope.showImg = function(imgUrl) {
+			var src = imgUrl, box = $('#image-box'), modal = $('.modal-content');
+			box.show();
+			box.find('img').attr('src', src);
+			box.find('a').click(function(){
+				box.hide();
+			});
+			box.dblclick(function(){
+				box.hide();
+			});
+		};
+
 		$scope.select = function(account, isBuy) {
 			if(isBuy) {
 				$scope.buyAccount = account;

+ 0 - 3
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js

@@ -174,9 +174,6 @@ define([ 'app/app' ], function(app) {
                 console.log(res);
             });
 
-            DistributionRule.findAllRuleName({},{},function (data) {
-                $scope.nameArray = data;
-            })
         };
         $scope.loadCityData();
 

+ 24 - 17
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js

@@ -401,10 +401,12 @@ define(['app/app'], function (app) {
 
         // 获取各种状态订单的数量信息
         var getCounts = function () {
-            Purchase.getAllStatusCounts({storeType: $scope.storeType}, function (data) {
-                $scope.counts = angular.copy(data);
-                $scope.counts[$scope.status] = $scope.pageParams.totalElements;
-            });
+            if (!$scope.startDate && !$scope.endDate && !$scope.keyword){
+                Purchase.getAllStatusCounts({storeType: $scope.storeType}, function (data) {
+                    $scope.counts = angular.copy(data);
+                    $scope.counts[$scope.status] = $scope.pageParams.totalElements;
+                });
+            }
         };
         getCounts();
 
@@ -494,6 +496,7 @@ define(['app/app'], function (app) {
             $scope.orderTableParams.reload();
         };
 
+
         $scope.orderTableParams = new ngTableParams($scope.tableParams, {
             total: 0,
             getData: function ($defer, params) {
@@ -523,22 +526,25 @@ define(['app/app'], function (app) {
 
                 Purchase.getByStatusAndInternal(param, function (page) {
                     if (page) {
-                        if ($scope.childStatus ==''){
-                            if (page.content) {
-                                angular.forEach(page, function (value, key) {
-                                    if (key == 'all' || key == 'tobeconfirmed' || key == 'comfirmed' || key == 'inbound'
-                                        || key == 'tobepaid' || key == 'completed' || key == 'unavailable' || key == 'toBeReviewed') {
-                                        if(!$scope.counts) {
-                                            $scope.counts = {};
+                        if (!$scope.startDate && !$scope.endDate && !$scope.keyword) {
+                            if ($scope.childStatus == '') {
+                                if (page.content) {
+                                    angular.forEach(page, function (value, key) {
+                                        if (key == 'all' || key == 'tobeconfirmed' || key == 'comfirmed' || key == 'inbound'
+                                            || key == 'tobepaid' || key == 'completed' || key == 'unavailable' || key == 'toBeReviewed') {
+                                            if (!$scope.counts) {
+                                                $scope.counts = {};
+                                            }
+                                            $scope.counts[key] = value;
                                         }
-                                        $scope.counts[key] = value;
-                                    }
-                                    $scope.counts[$scope.status] = page.totalElements;
-                                });
-                            } else {
-                                $scope.counts = {};
+                                        $scope.counts[$scope.status] = page.totalElements;
+                                    });
+                                } else {
+                                    $scope.counts = {};
+                                }
                             }
                         }
+
                         $scope.purchases = page.content;
                         $scope.requestOver = 0;
                         angular.forEach($scope.purchases, function (order) {
@@ -801,6 +807,7 @@ define(['app/app'], function (app) {
                 $scope.endDate = null;
                 return;
             }
+            $scope.setChildStatus('','订单状态');
             $scope.orderTableParams.page(1);
             $scope.orderTableParams.reload();
         };

+ 22 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_pay_ctrl.js

@@ -6,15 +6,19 @@
  */
 define(['app/app'], function(app) {
     'use strict';
-    app.register.controller('VendorPayCtrl', ['$scope', '$rootScope', 'bankInfoService', 'Loading', 'toaster', '$upload', 'ngTableParams', 'BaseService', 'bankTransferService', 'Purchase', '$filter', function($scope, $rootScope, bankInfoService, Loading, toaster, $upload, ngTableParams, BaseService, bankTransferService, Purchase, $filter) {
+    app.register.controller('VendorPayCtrl', ['$scope', '$rootScope', 'bankInfoService', 'Loading', 'toaster', '$upload', 'ngTableParams', 'BaseService', 'SessionService', 'bankTransferService', 'Purchase', '$filter', function($scope, $rootScope, bankInfoService, Loading, toaster, $upload, ngTableParams, BaseService, SessionService, bankTransferService, Purchase, $filter) {
         $rootScope.active = 'pay_center';
 
         // 加密订单的ID过滤器
         var enIdFilter = $filter('EncryptionFilter');
 
+        //历史记录的状态
+        var hiStatus= SessionService.get('vendorCenter');
+
         $scope.$payCenter = {};
         $scope.param = {};
-        $scope.tab = "paymentRecord";
+
+        $scope.tab = hiStatus == null ? 'paymentRecord' : hiStatus;
         $scope.$$bankInfo = {};
 
         $scope.paytype = 'ALL';
@@ -131,6 +135,7 @@ define(['app/app'], function(app) {
         $scope.setTab = function (tab) {
             if($scope.tab !== tab) {
                 $scope.tab = tab;
+                SessionService.set('vendorCenter', tab);
                 loadData();
             }
         };
@@ -291,6 +296,7 @@ define(['app/app'], function(app) {
                     }else {
                         $scope.numberPattError = true;
                     }
+                    validateRepeat($scope.account.number);
                 }
             }else if(num == 4){
                 //验证开户名称
@@ -305,6 +311,20 @@ define(['app/app'], function(app) {
             }
         };
 
+        var validateRepeat = function (number) {
+            bankInfoService.getCountByNumber({type:1062,number:number}, {}, function (data) {
+                if (data.success){
+                    if (data.data != 0){
+                        $scope.repeatError = true;
+                    }else {
+                        $scope.repeatError = false;
+                    }
+                }else {
+                    toaster.pop("info", data.message);
+                }
+            });
+        };
+
         $scope.reuseAccount = function (item) {
             $scope.showReuseFrame = true;
             $scope.reuseObject = item;

+ 5 - 1
src/main/webapp/resources/view/admin/trade/trade_invoicefromorder_detail.html

@@ -165,7 +165,11 @@
 		</div>
 		<div class="row-fluid">
 			<div class="span3">
-				<span>金额:</span>
+				<span>运费:</span>
+				<span class="text-inverse" ng-bind="invoiceFOrder.currencyName"></span>
+				<span class="text-inverse" ng-bind="invoiceFOrder.fare | formateNumber : 2 | currencySysmbol : invoiceFOrder.currency"></span>
+
+				<span style="margin-left: 20px;">合计:</span>
 				<span class="text-inverse" ng-bind="invoiceFOrder.currencyName"></span>
 				<span class="text-inverse" ng-bind="invoiceFOrder.ensurePrice | formateNumber : 2 | currencySysmbol : invoiceFOrder.currency"></span>
 			</div>

+ 7 - 2
src/main/webapp/resources/view/admin/trade/trade_invoicefrompurc_detail.html

@@ -174,9 +174,14 @@
 		</div>
 		<div class="row">
 			<div class="col-xs-3">
-				<span>金额:</span>
+				<span>运费:</span>
 				<span class="text-inverse" ng-bind="invoiceFPur.currencyName"></span>
-				<span class="text-inverse" ng-bind="invoiceFPur.price | formateNumber : 2"></span>
+				<span class="text-inverse" ng-bind="invoiceFPur.fare || 0 | formateNumber : 2"></span>
+			</div>
+			<div class="col-xs-3">
+				<span>合计:</span>
+				<span class="text-inverse" ng-bind="invoiceFPur.currencyName"></span>
+				<span class="text-inverse" ng-bind="invoiceFPur.ensurePrice | formateNumber : 2"></span>
 			</div>
 		</div>
 	</div>

+ 5 - 1
src/main/webapp/resources/view/admin/trade/trade_order_detail.html

@@ -351,7 +351,11 @@
 		</div>
 		<div class="row-fluid">
 			<div class="col-md-3">
-				<span>金额:</span> <a class="text-inverse"><span ng-bind="orderDetailInfo.currency"></span>&nbsp;<span ng-bind="orderDetailInfo.price | number:2"></span>
+				<span>运费:</span> <a class="text-inverse"><span ng-bind="orderDetailInfo.currency"></span>&nbsp;<span ng-bind="orderDetailInfo.fare || 0 | number:2"></span>
+			</a>
+			</div>
+			<div class="col-md-3">
+				<span>总计:</span> <a class="text-inverse"><span ng-bind="orderDetailInfo.currency"></span>&nbsp;<span ng-bind="orderDetailInfo.ensurePrice | number:2"></span>
 				</a>
 			</div>
 		</div>

+ 7 - 2
src/main/webapp/resources/view/admin/trade/trade_purchase_detail.html

@@ -211,9 +211,14 @@
 		</div>
 		<div class="row-fluid col-md-9">
 			<div class="col-md-4">
-				<span>金额:</span>
+				<span>运费:</span>
 				<span ng-bind="purchaseDetailInfo.currency" class="text-inverse"></span>
-				<span ng-bind="purchaseDetailInfo.price | number:2" class="text-inverse"></span>
+				<span ng-bind="purchaseDetailInfo.fare || 0 | number:2" class="text-inverse"></span>
+			</div>
+			<div class="col-md-4">
+				<span>总计:</span>
+				<span ng-bind="purchaseDetailInfo.currency" class="text-inverse"></span>
+				<span ng-bind="purchaseDetailInfo.ensurePrice | number:2" class="text-inverse"></span>
 			</div>
 		</div>
 	</div>		

+ 2 - 1
src/main/webapp/resources/view/common/bankInfoModal.html

@@ -102,10 +102,11 @@
 		  		<label class="margin15"><b class="text-inverse">*&nbsp;</b>银行账号</label>
 		  		<div class="divinline">
 		  			<input name="number" ng-model="account.number" type="text" class="form-control" 
-		  			placeholder="请填写银行账号" ng-required="true" ng-change="checkAccount(3)">
+		  			placeholder="请填写银行账号" ng-required="true" ng-change="checkAccount(3)" autocomplete="off">
 		  		</div>
 				<span class="warn-message" ng-if="account.number && numberPattError">请填写正确的银行账号</span>
 				<span class="warn-message" ng-if="account.number && !numberPattError && numberError">请勿超过30个字符</span>
+				<span class="warn-message" ng-if="account.number && !numberPattError && !numberError" && repeatError>该银行账号已存在</span>
 				<span class="warn-message" ng-if="myForm.number.$touched && myForm.number.$invalid">银行账号不能为空</span>
 		  	</div>
 			<div class="form-group">

+ 1 - 1
src/main/webapp/resources/view/common/site-nav.html

@@ -170,7 +170,7 @@
         </li>
         <li><a href=".">商城首页</a></li>
         <li ng-if="userInfo"><a href="user#/home">买家中心</a></li>
-        <li ng-if="userInfo.enterprises"><a href="vendor#/index">卖家中心</a></li>
+        <li ng-if="userInfo.enterprise.uu"><a href="vendor#/index">卖家中心</a></li>
         <li><a href="help/home" target="_blank">帮助中心</a></li>
         <!-- <li><a href="http://wpa.qq.com/msgrd?v=3&uin=3432892085&site=www.ubtoc.com&menu=yes" target="_blank">在线客服</a></li> -->
        <!-- <li><a href="javascript:void(0)">服务电话:400-830-1818</a></li>-->

+ 0 - 1
src/main/webapp/resources/view/usercenter/forstore/buyer_order.html

@@ -740,7 +740,6 @@
 								<a href="user#/order/detail/{{order.orderid | EncryptionFilter}}" class="oder_d action-link" style="display: block;" target="_blank">订单详情</a>
 								<a class="action-link" href="user#/buyerQueryLogistics/{{order.orderid | EncryptionFilter}}" ng-if="order.status == 404 || order.status == 520 || order.status == 405 || order.status == 521" style="display: block;" target="_blank">查看物流</a>
 
-								<a class="action-link" href="user#/buyerQueryLogistics/{{order.orderid | EncryptionFilter}}" ng-if="order.status == 404" style="display: block;" target="_blank">查看物流</a>
 								<a ng-if="order.isEachRate && (order.rateStatus == 523 || order.rateStatus == 522)" class="oder_d action-link" target="_blank" href="user#/rate/showRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
                                   双方已评
                               	</a>

+ 167 - 222
src/main/webapp/resources/view/usercenter/forstore/buyer_transfer.html

@@ -277,173 +277,92 @@ table>tbody>tr>td .btn-primary {
 	font-weight: bold;
 	border-radius: inherit;
 }
+.hover-show{
+    position: absolute;
+    width: 100px;
+    height: 100px;
+    top: 0;
+    left: 0;
+    background: rgba(0,0,0,.4);
+    display: none;
+}
+ .uploadImages:hover .hover-show{
+    display: block;
+}
+ .uploadImages {
+     position:relative;
+	 width:100px;
+	 height:100px;
+ }
+ .delete{
+    position: absolute;
+    right: 7px;
+    top: 0;
+    display: inline-block;
+    padding: 0;
+    margin-top: 6px;
+    font-size: 18px;
+    color: #fff;
+}
+.hover-show a{
+    color: #fff;
+    text-decoration: none;
+    position: absolute;
+    top: 40%;
+    left: 25%;
+}
+.hover-show span{
+    color: #fff;
+    cursor:pointer;
+}
+.hover-show a:hover, .hover-show a:active, .hover-show a:focus{
+    color: #fff;
+    text-decoration: none;
+}
+
+/*查看大图*/
+#image-box .x-floating-wrap,.image-box .x-floating-wrap {
+    position: fixed;
+    z-index: 99998;
+    background: #000;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    opacity: 0.5;
+}
+#image-box,.image-box{
+    display:table; overflow:hidden; margin-left:50px; _position:relative;  width: 1200px;height: 700px;
+    position: fixed;
+    top: 50%;
+    margin-top: -350px;
+    left: 50%;
+    margin-left: -600px;
+    z-index: 2000;
+}
+#image-box .x-floating,.image-box .x-floating {
+    vertical-align:middle !important;
+    display:table-cell;
+    text-align:center;
+    _position:absolute;
+    _top:50%; _left:50%;
+    top: inherit !important;
+    left: inherit !important;
+}
+#image-box .x-floating img ,.image-box .x-floating img {
+    margin: auto auto;
+    max-width: 970px !important;
+    max-height: 600px !important;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+#image-box .x-floating-wrap,.image-box .x-floating-wrap{
+    z-index: 1000000 !important;
+}
 </style>
-<!--<div class="location ng-scope">-->
-	<!--<ul class="list-unstyled list-inline">-->
-		<!--<li class="text-bold">您当前的位置:</li>-->
-		<!--<li>买家中心 <i class="fa fa-angle-double-right"></i></li>-->
-		<!--<li>交易信息<i class="fa fa-angle-double-right"></i></li>-->
-		<!--<li>填写银行转账信息</li>-->
-	<!--</ul>-->
-<!--</div>-->
 <div>
-<!--	<div>
-		<div class="row searchGroup">
-			<div class="col-xs-3">
-				<h4>未付款,填写转账信息</h4>
-			</div>
-			<div class="col-xs-6">
-				<div class="input-group">
-					<input type="search"
-						class="form-control ng-pristine ng-untouched ng-valid"
-						ng-search="searchFor()" ng-change="upper()" ng-model="keyword"
-						placeholder="请输入订单号查询"> <span class="input-group-btn">
-						<button ng-click="searchFor()" class="btn btn-primary"
-							type="button">搜索</button>
-					</span>
-				</div>
-			</div>
-		</div>
-		<div>
-			<div class="col-xs-1">
-				<p style="margin-top: 8px; font-weight: bold;">
-					共<span class="totalNum">{{tobePaidTableParams.total()}}</span>条
-				</p>
-			</div>
-		</div>
-		</br>
-		<table ng-table="tobePaidTableParams"
-			class="table table-bordered table-striped">
-			<thead>
-				<tr class="tr-default">
-					<th width="70" class="text-center">
-						<div>序号</div> <input type="checkBox" ng-checked="isSelectAll"
-						ng-click="selectAll()" ng-disabled="showMe">
-					</th>
-					<th width="auto" class="text-center">订单详情</th>
-					<th width="114" class="text-center">单价</th>
-					<th width="114" class="text-center">金额</th>
-					<th width="100" class="text-center">税金</th>
-					<th width="100" class="text-center">价税合计</th>
-					<th width="80" class="text-center">订单状态</th>
-					<th width="60" class="text-center">操作</th>
-				</tr>
-			</thead>
-			<tbody ng-repeat="order in $data">
-				<tr>
-					<td rowspan="2" class="tdcenter">
-						<div>{{$index+1}}</div>
-						<div>
-							<input type="checkBox" ng-checked="order.isSelect"
-								ng-model="order.isSelect" ng-disabled="showMe"
-								ng-click="doSelect(order)">
-						</div>
-					</td>
-					<td colspan="8">
-						<div class="row">
-							<div class="col-sm-8 text-muted">
-								<span> <i class="fa fa-clock-o"></i> <span
-									ng-bind="order.creattime | date: 'yyyy-MM-dd HH:mm'"
-									class="text-num"></span>
-								</span> <span>订单号: <a
-									ng-href="user/home/order/{{order.orderid | EncryptionFilter}}"
-									ng-bind="order.orderid"></a>
-								</span> <span class="text-inverse">过期时间: <span
-									ng-bind="order.availabletime | date: 'yyyy-MM-dd HH:mm'"></span>
-								</span>
-							</div>
-							<div class="col-sm-4 text-muted text-num text-right">
-								<span class="price">币别:<span ng-bind="order.currency"></span></span>
-								&nbsp;产品总数:<span ng-bind="order.qty"></span>
-							</div>
-						</div>
-					</td>
-				</tr>
-				<tr>
-					<td colspan="3">
-						<div class="row cmp-item"
-							ng-repeat="orderDetail in order.orderDetails">
-							<div class="col-sm-6">
-								<div class="p-img">
-									<a href="product/component/{{orderDetail.uuid}}/"> <img
-										src="" lazy-load="{{orderDetail.img}}" height="78px"
-										width="78px">
-									</a>
-								</div>
-								<div>
-									<div>
-										<a class="f16 text-bold" style="display: block;"
-											href="product/component/{{orderDetail.uuid}}/"
-											ng-bind="orderDetail.cmpCode"></a> <span
-											ng-bind="orderDetail.brName"></span>
-									</div>
-									<div>
-										<i class="iconfont icon-kind f14"></i><span
-											ng-bind="orderDetail.kiName"></span>
-									</div>
-									<div ng-if="orderDetail.returnInWeek">
-	        							<img class="detail-icon" alt="支持7天无理由退货" src="static/img/product/seven-day-back.jpg" title="支持7天无理由退货">&nbsp;
-	        						</div>
-								</div>
-							</div>
-							<div class="col-sm-3 text-num text-center">
-								<div class="text-num text-bold f16">
-									<span ng-bind="orderDetail.taxUnitprice | number:6"></span>
-								</div>
-								<div class="text-num text-muted">
-									×<span ng-bind="orderDetail.number"></span>
-								</div>
-								<div>
-									<span ng-if="orderDetail.tax">单价含税<span ng-bind="orderDetail.tax"></span>%</span>
-								</div>
-							</div>
-							<div>
-							</div>
-							<div class="col-sm-3 text-num price text-center">
-								<div>
-									<span ng-bind="orderDetail.price | number"></span>
-								</div>
-							</div>
-						</div>
-					</td>
-					<td class="text-center tdcenter">
-						<div class="text-theme f14 text-num">
-							<span ng-bind="order.taxes | number"></span>
-						</div>
-					</td>
-					<td class="text-center tdcenter">
-						<div class="text-inverse text-bold f16 text-num">
-							<span ng-bind="order.price | number"></span>
-						</div>
-					</td>
-					<td class="text-center tdcenter">
-						<div>
-							<span ng-bind="order.status | statusAndTypeFilter"
-								class="text-muted"></span>
-						</div>
-					</td>
-					<td class="tdcenter"
-						ng-hide="active=='paid'|| active=='unavailable'">
-						<button ng-show="!(order.availabletime < nowTime)"
-							class="btn btn-primary btn-sm" ng-click="pay(order)"
-							ng-disabled="showMe">付款</button>
-					</td>
-				</tr>
-				<tr ng-if="!order" class="text-center">
-					<td colspan="5" class="text-center"
-						style="line-height: 40px; font-size: 20px;"><i
-						class="fa fa-smile-o fa-lg"></i> 当前没有对应的订单信息</td>
-				</tr>
-			</tbody>
-		</table>
-		<div  id="O">
-			<button class="btn btn-primary" ng-click="batchPay()"
-				ng-disabled="!orderNum" ng-show="!showMe">批量付款</button>
-			<button class="btn btn-primary" ng-show="showMe"
-				ng-click="alterPay()">重新勾选</button>
-		</div>
-		<a id="anchorScroll" style="color: white;"></a>
-	</div>-->
 	<div class="user_right fr block">
 		<div class="fill-info">
 			<div class="orderDiv" id="O">
@@ -451,18 +370,11 @@ table>tbody>tr>td .btn-primary {
 					<div class="minTitle">订单号</div>
 					<div class="margin-left-37" ng-bind="orderNum"></div>
 				</div>
-				<div class="marginbot30">
-					<div class="minTitle">买家应付账户</div>
-					<div class="margin-left-37">
-						<label class="radio-inline" ng-click="set(true, true)"> <input
-							type="radio" name="inlineRadioOptions" id="inlineRadio1"
-							value="option1" ng-checked="purKind"> 个人账户
-						</label> <label ng-if="userInfo.enterprises" class="radio-inline" ng-click="set(false, true)"
-							style="margin-left: 30px;"> <input type="radio"
-							name="inlineRadioOptions" id="inlineRadio2" value="option2"
-							ng-checked="!purKind"> 企业账户
-						</label> <span role="button" class="pull-right action-tag"
-							ng-click="newAccount()" style="padding-top: 0px;"><i
+				<div class="marginbot30" style="position:relative;">
+					<div class="minTitle">买家付款账户</div>
+					<div class="margin-left-37" style="position: absolute;right:0;top:-5px;">
+						<span role="button" class="pull-right action-tag"
+							ng-click="newAccount()"><i
 							class="fa fa-plus-square"></i>&nbsp;新增账户</span>
 					</div>
 					<div class="border-account">
@@ -478,10 +390,16 @@ table>tbody>tr>td .btn-primary {
 										for="{{accountInfo.id}}"></label> &nbsp;<span
 										ng-bind="accountInfo.accountname"></span>
 								</div>
-								<div class="col-md-5">
-									<span ng-bind="accountInfo.filterAccount"></span>&nbsp; &nbsp;
-									<span ng-bind="accountInfo.bankname"></span>&nbsp;&nbsp;<i
-										class="fa fa-credit-card"></i>
+								<div class="col-md-5 text-center">
+									<div class="row">
+										<div class="col-md-6 text-right">
+											<span ng-bind="accountInfo.filterAccount"></span>
+										</div>
+										<div class="col-md-6 text-left">
+											<span ng-bind="accountInfo.bankname"></span>&nbsp;&nbsp;<i
+												class="fa fa-credit-card"></i>
+										</div>
+									</div>
 								</div>
 								<div class="text-right col-md-3">
 									<span role="button" class="modify-account"
@@ -500,10 +418,16 @@ table>tbody>tr>td .btn-primary {
 										id="{{buyAccount.id}}"><label for="{{buyAccount.id}}"></label>
 									&nbsp;<span ng-bind="buyAccount.accountname"></span>
 								</div>
-								<div class="col-md-5">
-									<span ng-bind="buyAccount.filterAccount"></span>&nbsp; &nbsp; <span
-										ng-bind="buyAccount.bankname"></span>&nbsp;&nbsp;<i
-										class="fa fa-credit-card"></i>
+								<div class="col-md-5 text-center">
+									<div class="row">
+										<div class="col-md-6 text-right">
+											<span ng-bind="buyAccount.filterAccount"></span>
+										</div>
+										<div class="col-md-6 text-left">
+											<span ng-bind="buyAccount.bankname"></span>&nbsp;&nbsp;<i
+												class="fa fa-credit-card"></i>
+										</div>
+									</div>
 								</div>
 								<div class="text-right col-md-3">
 									<span role="button" class="modify-account"
@@ -518,27 +442,20 @@ table>tbody>tr>td .btn-primary {
 							<div ng-if="!buyAccount"
 								class="row paddingzero marginleftrightzero text-center account-line account-info-line notice">没有对应的账户信息,请新增相应的账户信息
 							</div>
-						</div>
-						<div ng-if="buyAccountInfos.length>1"
-							class="pull-right action-tag">
+                            <div ng-if="buyAccountInfos.length>1"
+                                 class="pull-right action-tag">
 							<span role="button" ng-if="!buyExpose"
-								ng-click="doExpose(true, true)"><i
-								class="fa fa-angle-double-down"></i>&nbsp;展开列表</span> <span
-								role="button" ng-if="buyExpose" ng-click="doExpose(false, true)"><i
-								class="fa fa-angle-double-up"></i>&nbsp;收起列表</span>
+                                  ng-click="doExpose(true, true)"><i
+                                    class="fa fa-angle-double-down"></i>&nbsp;展开列表</span> <span
+                                    role="button" ng-if="buyExpose" ng-click="doExpose(false, true)"><i
+                                    class="fa fa-angle-double-up"></i>&nbsp;收起列表</span>
+                            </div>
 						</div>
+
 					</div>
 				</div>
 				<div class="marginbot30">
-					<div class="minTitle">商城应收帐户</div>
-					<div class="margin-left-37 margintop15">
-						<label class="radio-inline"> 
-							<input type="radio" name="saleAccounts" ng-checked="saleKind" ng-click="set(true, false)"> 对私账户
-						</label> 
-						<label class="radio-inline" style="margin-left: 30px;"> 
-							<input type="radio" name="saleAccounts" ng-checked="!saleKind" ng-click="set(false, false)"> 对公账户
-						</label>
-					</div>
+					<div class="minTitle">商城收款帐户</div>
 					<div class="border-account">
 						<div class="containerrow">
 							<div ng-if="salexpose"
@@ -552,10 +469,16 @@ table>tbody>tr>td .btn-primary {
 										for="{{saleAccountInfo.id}}"></label> &nbsp;<span
 										ng-bind="saleAccountInfo.accountname"></span>
 								</div>
-								<div class="col-md-8">
-									<span ng-bind="saleAccountInfo.filterAccount"></span> &nbsp;
-									&nbsp; <span ng-bind="saleAccountInfo.bankname"></span>&nbsp;
-									&nbsp;<i class="fa fa-credit-card"></i>
+								<div class="col-md-5 text-center">
+									<div class="row">
+										<div class="col-md-6 text-right">
+											<span ng-bind="saleAccountInfo.filterAccount"></span>
+										</div>
+										<div class="col-md-6 text-left">
+											<span ng-bind="saleAccountInfo.bankname"></span>&nbsp;
+											&nbsp;<i class="fa fa-credit-card"></i>
+										</div>
+									</div>
 								</div>
 							</div>
 							<div ng-if="!salexpose"
@@ -567,39 +490,61 @@ table>tbody>tr>td .btn-primary {
 										for="{{saleAccount.id}}"></label> &nbsp;<span
 										ng-bind="saleAccount.accountname"></span>
 								</div>
-								<div class="col-md-8">
-									<span ng-bind="saleAccount.number"></span> &nbsp; &nbsp;
-									<span ng-bind="saleAccount.bankname"></span>&nbsp; &nbsp;<i
-										class="fa fa-credit-card"></i>
+								<div class="col-md-5 text-center">
+									<div class="row">
+										<div class="col-md-6 text-right">
+											<span ng-bind="saleAccount.number"></span>
+										</div>
+										<div class="col-md-6 text-left">
+											<span ng-bind="saleAccount.bankname"></span>&nbsp; &nbsp;<i
+												class="fa fa-credit-card"></i>
+										</div>
+									</div>
 								</div>
 							</div>
+                            <div ng-if="buyAccountInfos.length>1"
+                                 class="pull-right action-tag">
+							<span role="button" ng-if="!salexpose"
+                                  ng-click="doExpose(true, false)"><i
+                                    class="fa fa-angle-double-down"></i>&nbsp;展开列表</span> <span
+                                    role="button" ng-if="salexpose" ng-click="doExpose(false, false)"><i
+                                    class="fa fa-angle-double-up"></i>&nbsp;收起列表</span>
+                            </div>
 						</div>
 					</div>
 				</div>
-				<div class="row marginbot30">
-					<div class="minTitle col-md-2 margin-top-5">转账日期</div>
-					<div class="col-md-10">
-						<datetrigger name="transferTime" model="transferTime"
-							format="yyyy年MM月dd日" class="col-md-5" max-date="maxDate"
-							style="line-height: 28px; border-radius: 5px; width: 70%; font-size: 15px;"></datetrigger>
-					</div>
-				</div>
 				<div class="marginbot30">
 					<div class="minTitle marginbot15">交易图片</div>
 					<div class="marginltb">
 						<label>付款截图:</label>
-						<div>
-							<div  image-upload data-src="static/img/vendor/images/upload.png" on-success="onUploadPayment($data)"></div>
-							<span class="help-block font-size-12 text-inverse">建议图片大小在3M以内,支持图片格式jpg、png、gif</span>
+						<div class="uploadImages">
+							<input type="file"  image-upload data-src="static/img/vendor/images/upload.png" on-success="onUploadPayment($data)" non-preview="true" ng-if="!imageUrl"/>
+							<div ng-if="imageUrl">
+								<img ng-src="{{imageUrl}}" alt="" style="width: 100px;height: 100px;">
+							</div>
+							<div class="hover-show" ng-if="imageUrl">
+								<span class="delete" ng-click="deleteImg()" title="删除"><i class="fa fa-trash"></i></span>
+								<a ng-click="showImg(imageUrl)"><i class="fa fa-search"></i>查看</a>
+                            </div>
 						</div>
+						<span class="help-block font-size-12 text-inverse">建议图片大小在3M以内,支持图片格式jpg、png、gif</span>
 					</div>
 				</div>
 			</div>
 		</div>
 		<div class="text-right marginbot15 margintop15">
 			<span class="total">总价:&nbsp;<span style="color: #e64040">{{$$bankTransfer.total | number : 2 | currencySysmbol : $$bankTransfer.currency}}</span></span>
-			<button class="ok-btn btn btn-primary btn-lg" ng-click="confirm()"
-				ng-disabled="!$$bankTransfer.total||!buyAccount||!saleAccount||!transferTime||!imageUrl">确认</button>
+			<button class="ok-btn btn btn-lg" ng-click="confirm()"
+				ng-disabled="!$$bankTransfer.total||!buyAccount||!saleAccount||!imageUrl" style="background: #5078cb;">确认</button>
 		</div>
 	</div>
+</div>
+<div id="image-box" style="display: none">
+    <div class="x-floating-wrap"></div>
+    <div class="x-floating">
+        <div id="item-content">
+            <div class="x-close-wrap"><a href="javascript:void(0);">&times;</a></div>
+            <div class="img"><img/></div>
+        </div>
+    </div>
 </div>

+ 4 - 1
src/main/webapp/resources/view/usercenter/forstore/order_detail.html

@@ -487,7 +487,10 @@
 							<i style="color: #999;" ng-if="rule" ng-bind="'(' + rule.ruleName + ')'">(满1000元包邮,未满足的订单收取运费20元)</i>
 						</span>
 						<span class="total-price">
-								<p><strong>运费:</strong><em ng-bind="order.fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em></p>
+								<p><strong>运费:</strong>
+									<em ng-if="rule && rule.fareType != 3" ng-bind="order.fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
+									<em ng-if="rule && rule.fareType == 3"  style="font-weight: bold;color:#e64040">到付</em>
+								</p>
 								<p><strong>店铺合计:</strong>
 									<em ng-bind="order.ensurePrice | formateNumber : 2 | currencySysmbol : order.currency" style="font-weight: bold"></em>
 								</p>

+ 7 - 4
src/main/webapp/resources/view/usercenter/forstore/order_pay.html

@@ -796,10 +796,13 @@
 							</span>
 							<span class="total-price">
 								<p><strong>运费:</strong>
-									<em ng-if="order.status==501" ng-bind="fareList[details[0].storeid] | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
-									<em ng-if="order.status!=501" style="font-weight: bold">
-										<em ng-if="!deliveryList" ng-bind="order.fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)"></em>
-										<em ng-if="deliveryList" ng-bind="deliveryList[details[0].storeid].fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)"></em>
+									<em ng-if="order.status==501 && deliveryList[details[0].storeid].fareType == 3" style="font-weight: bold;color:#e64040">到付</em>
+									<em ng-if="order.status==501 && deliveryList[details[0].storeid].fareType != 3" ng-bind="fareList[details[0].storeid] | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
+									<em ng-if="order.status!=501">
+										<em ng-if="!deliveryList && rule.fareType != 3" ng-bind="order.fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
+										<em ng-if="!deliveryList && rule.fareType == 3" style="font-weight: bold;color:#e64040">到付</em>
+										<em ng-if="deliveryList && deliveryList[details[0].storeid].fareType != 3" ng-bind="deliveryList[details[0].storeid].fare | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
+										<em ng-if="deliveryList && deliveryList[details[0].storeid].fareType == 3" style="font-weight: bold;color:#e64040">到付</em>
 									</em>
 								</p>
 								<p><strong>店铺合计:</strong>

+ 1 - 0
src/main/webapp/resources/view/vendor/forstore/pay_center.html

@@ -833,6 +833,7 @@
                 <div class="col-md-4">
                     <p ng-if="account.number && numberPattError">请填写正确的银行账号</p>
                     <p ng-if="account.number && !numberPattError && numberError">请勿超过30个字符</p>
+                    <p ng-if="account.number && !numberPattError && !numberError" && repeatError>该银行账号已存在</p>
                     <p ng-if="myForm.number.$touched && myForm.number.$invalid">银行账号不能为空</p>
                 </div>
             </div>

+ 4 - 1
src/main/webapp/resources/view/vendor/forstore/purchase_detail.html

@@ -540,7 +540,10 @@
 							<i style="color: #999;" ng-if="rule" ng-bind="'(' + rule.ruleName + ')'">(满1000元包邮,未满足的订单收取运费20元)</i>
 						</span>
 						<span class="total-price">
-								<p><strong>运费:</strong><em ng-bind="purchase.fare | formateNumber : 2 | currencySysmbol : purchase.currency.substring(0,3)" style="font-weight: bold"></em></p>
+								<p><strong>运费:</strong>
+									<em ng-if="!rule || rule.fareType != 3" ng-bind="purchase.fare | formateNumber : 2 | currencySysmbol : purchase.currency.substring(0,3)" style="font-weight: bold"></em>
+									<em ng-if="rule && rule.fareType == 3" style="font-weight: bold;color:#e64040">到付</em>
+								</p>
 								<p><strong>店铺合计:</strong>
 									<em ng-if="!isChange" ng-bind="purchase.ensurePrice | formateNumber : 2 | currencySysmbol : purchase.currency" style="font-weight: bold"></em>
 									<em ng-if="isChange" ng-bind="purchase.currentTotal | formateNumber : 2 | currencySysmbol : purchase.currency" style="font-weight: bold"></em>

+ 5 - 0
src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html

@@ -438,6 +438,11 @@
 						<label for="style02"></label>
 						按总金额计算
 					</label>
+					<label class="check-act" ng-click="checkTab(3)">
+						<input type="radio" id="style03" name="radio2" ng-checked="modifyRule.fareType==3"/>
+						<label for="style03"></label>
+						到付
+					</label>
 				</div>
 				<!--统一规定运费-->
 				<div class="style-regulations common-style" ng-if="modifyRule.fareType==1">

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_order.html

@@ -1169,7 +1169,7 @@
                                 <a class="order-operation" href="javascript:void(0)" ng-if="(purchase.status == 502 || purchase.status == 406)&&(purchase.uasPurcid == null)" ng-click="toBeShiped(purchase)">点击发货</a>
 								<a ng-if="purchase.uasPurcid" style="text-decoration: none;color: #323232;">来源UAS</a>
                                 <!--<a class="order-operation" href="javascript:void(0)" ng-if="purchase.status == 404 && purchase.lgtId&&!purchase.uasPurcid" ng-click="toBeShiped(purchase)" style="position: relative;">修改物流</a>-->
-                                <a class="order-operation" href="javascript:void(0)" ng-if="purchase.status == 404 && purchase.lgtId&&!purchase.uasPurcid" ng-click="toBeShiped(purchase)" style="position: relative;">修改物流</a>
+                                <a class="order-operation" href="javascript:void(0)" ng-if="purchase.status == 404 &&!purchase.uasPurcid" ng-click="modifyLogistic(purchase)" style="position: relative;">修改物流</a>
 								<a class="order-operation" href="javascript:void(0)" ng-click="getModal(purchase,'addRate')" style="position: relative;" ng-if="[405,503,514,506,511,520].indexOf(purchase.status) != -1 && !purchase.isAfterRate && purchase.isFirstRate && requestOver==purchases.length">追加评价</a>
 								<a class="order-operation" href="javascript:void(0)" style="position: relative;" ng-click="getModal(purchase,'firstRate')" ng-if="[405,503,514,506,511,520].indexOf(purchase.status) != -1 && !purchase.isFirstRate && requestOver==purchases.length">评价</a>
 								<!--<div ng-if="purchase.status == 520" class="clock-mind">